public void Unpack(BinaryReader reader) { var numPolygons = reader.ReadUInt32(); var numPhysicsPolygons = reader.ReadUInt32(); var numPortals = reader.ReadUInt32(); VertexArray.Unpack(reader); Polygons.Unpack(reader, numPolygons); for (uint i = 0; i < numPortals; i++) { Portals.Add(reader.ReadUInt16()); } reader.AlignBoundary(); CellBSP.Unpack(reader, BSPType.Cell); PhysicsPolygons.Unpack(reader, numPhysicsPolygons); PhysicsBSP.Unpack(reader, BSPType.Physics); uint hasDrawingBSP = reader.ReadUInt32(); if (hasDrawingBSP != 0) { DrawingBSP = new BSPTree(); DrawingBSP.Unpack(reader, BSPType.Drawing); } reader.AlignBoundary(); }
public static BSPTree Read(DatReader datReader, BSPType treeType) { BSPTree obj = new BSPTree(); obj.RootNode = BSPNode.Read(datReader, treeType); return(obj); }
public static CellStruct Read(DatReader datReader) { CellStruct obj = new CellStruct(); uint numPolygons = datReader.ReadUInt32(); uint numPhysicsPolygons = datReader.ReadUInt32(); uint numPortals = datReader.ReadUInt32(); obj.VertexArray = CVertexArray.Read(datReader); for (uint i = 0; i < numPolygons; i++) { ushort poly_id = datReader.ReadUInt16(); obj.Polygons.Add(poly_id, Polygon.Read(datReader)); } for (uint i = 0; i < numPortals; i++) { obj.Portals.Add(datReader.ReadUInt16()); } datReader.AlignBoundary(); obj.CellBSP = BSPTree.Read(datReader, BSPType.Cell); for (uint i = 0; i < numPhysicsPolygons; i++) { ushort poly_id = datReader.ReadUInt16(); obj.PhysicsPolygons.Add(poly_id, Polygon.Read(datReader)); } obj.PhysicsBSP = BSPTree.Read(datReader, BSPType.Physics); uint hasDrawingBSP = datReader.ReadUInt32(); if (hasDrawingBSP != 0) { obj.DrawingBSP = BSPTree.Read(datReader, BSPType.Drawing); } datReader.AlignBoundary(); return(obj); }