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);
        }