public long ParseBSP2DReferences(BSP bsp, BinaryReader reader, int count) { bsp.Bsp2dReferences = new List <BSP.Bsp2dReference>(); var originalPos = reader.BaseStream.Position; for (uint i = 0; i < count; ++i) { reader.BaseStream.Position = originalPos + (i * BSP2DREFERENCE_SIZE); var plane_idx = BitConverter.ToInt32(reader.ReadBytes(4).Reverse().ToArray(), 0); var bsp2dnode_idx = BitConverter.ToInt32(reader.ReadBytes(4).Reverse().ToArray(), 0); var bsp2dRef = new BSP.Bsp2dReference(); //truncate and preserve sign var uplane_idx = (plane_idx & 0x7fff); if (plane_idx < 0) { uplane_idx |= 0x8000; } bsp2dRef.Plane = (short)uplane_idx; var ubsp2dnode_idx = (bsp2dnode_idx & 0x7fff); if (bsp2dnode_idx < 0) { ubsp2dnode_idx |= 0x8000; } bsp2dRef.Bsp2dNode = (short)ubsp2dnode_idx; bsp.Bsp2dReferences.Add(bsp2dRef); } return(originalPos + (count * BSP2DREFERENCE_SIZE)); }
public long ParseBSP2DReferences(BSP bsp, BinaryReader reader, int count) { bsp.Bsp2dReferences = new List<BSP.Bsp2dReference>(); var originalPos = reader.BaseStream.Position; for (uint i = 0; i < count; ++i) { reader.BaseStream.Position = originalPos + (i * BSP2DREFERENCE_SIZE); var plane_idx = BitConverter.ToInt32(reader.ReadBytes(4).Reverse().ToArray(), 0); var bsp2dnode_idx = BitConverter.ToInt32(reader.ReadBytes(4).Reverse().ToArray(), 0); var bsp2dRef = new BSP.Bsp2dReference(); //truncate and preserve sign var uplane_idx = (plane_idx & 0x7fff); if (plane_idx < 0) uplane_idx |= 0x8000; bsp2dRef.Plane = (short)uplane_idx; var ubsp2dnode_idx = (bsp2dnode_idx & 0x7fff); if (bsp2dnode_idx < 0) ubsp2dnode_idx |= 0x8000; bsp2dRef.Bsp2dNode = (short)ubsp2dnode_idx; bsp.Bsp2dReferences.Add(bsp2dRef); } return originalPos + (count * BSP2DREFERENCE_SIZE); }