Editor/Decompiler/Lumps/BrushLump.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace BspImport.Decompiler.Lumps;
public class BrushLump : BaseLump
{
public BrushLump( ImportContext context, byte[] data, int version = 0 ) : base( context, data, version )
{
}
protected override void Parse( BinaryReader _reader )
{
int brushLength = sizeof( int ) * 3;
int brushCount = _reader.GetLength() / brushLength;
Context.Brushes = new Brush[brushCount];
for ( int i = 0; i < brushCount; i++ )
{
var reader = _reader.Split( brushLength );
int firstSide = reader.ReadInt32();
int numSides = reader.ReadInt32();
uint contents = reader.ReadUInt32();
var contentsFlags = (ContentsFlags)contents;
Context.Brushes[i] = new Brush( firstSide, numSides, contentsFlags );
}
}
}
public struct Brush( int firstSide, int numSides, ContentsFlags contents )
{
public int FirstSide = firstSide;
public int NumSides = numSides;
public ContentsFlags Contents = contents;
public bool IsClipBrush => (Contents & ContentsFlags.PlayerClip) != 0 || (Contents & ContentsFlags.MonsterClip) != 0;
}