Editor/Decompiler/Lumps/BrushSideLump.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace BspImport.Decompiler.Lumps;

internal class BrushSideLump : BaseLump
{
	public BrushSideLump( ImportContext context, byte[] data, int version = 0 ) : base( context, data, version )
	{
	}

	protected override void Parse( BinaryReader reader )
	{
		var structReaders = Context.FormatDescriptor.GetStructReaders( Context.BspVersion );
		var brushSideCount = reader.GetLength() / structReaders.BrushSideStructSize;
		Context.BrushSides = new Formats.BrushSide[brushSideCount];

		for ( int i = 0; i < brushSideCount; i++ )
		{
			ushort planeNum = reader.ReadUInt16();
			short texInfo = reader.ReadInt16();
			short dispInfo = reader.ReadInt16();

			bool bevel;
			bool thin = false;

			if ( Context.BspVersion >= 21 )
			{
				bevel = reader.ReadByte() != 0;
				thin = reader.ReadByte() != 0;
			}
			else
			{
				bevel = reader.ReadInt16() != 0;
			}

			var brushSide = new Formats.BrushSide( planeNum, texInfo, dispInfo, bevel, thin );
			Context.BrushSides[i] = brushSide;
		}
	}
}