using System; using System.Collections.Generic; using System.IO; using System.Text; using ACE.Entity.Enum; namespace ACE.DatLoader.Entity { public class BSPLeaf : BSPNode { public int LeafIndex { get; private set; } public int Solid { get; private set; } /// /// You must use the Unpack(BinaryReader reader, BSPType treeType) method. /// /// You must use the Unpack(BinaryReader reader, BSPType treeType) method. public override void Unpack(BinaryReader reader) { throw new NotSupportedException(); } public override void Unpack(BinaryReader reader, BSPType treeType) { Type = Encoding.ASCII.GetString(reader.ReadBytes(4)).Reverse(); LeafIndex = reader.ReadInt32(); if (treeType == BSPType.Physics) { Solid = reader.ReadInt32(); // Note that if Solid is equal to 0, these values will basically be null. Still read them, but they don't mean anything. Sphere = new Sphere(); Sphere.Unpack(reader); InPolys = new List(); uint numPolys = reader.ReadUInt32(); for (uint i = 0; i < numPolys; i++) InPolys.Add(reader.ReadUInt16()); } } } }