コード例 #1
0
ファイル: DoomMapReader.cs プロジェクト: WChrisK/HelionUnity
        private static void ReadSidesOrThrow(MapData map, MapComponents components)
        {
            ByteReader reader = ByteReader.From(ByteOrder.Little, components.Sidedefs.Value.Data);

            int count = reader.Length / BytesPerSide;

            for (int index = 0; index < count; index++)
            {
                MapSidedef sidedef = new MapSidedef(index)
                {
                    Offset        = new Vec2I(reader.Short(), reader.Short()),
                    UpperTexture  = reader.StringWithoutNulls(8),
                    LowerTexture  = reader.StringWithoutNulls(8),
                    MiddleTexture = reader.StringWithoutNulls(8),
                    SectorID      = reader.UShort()
                };

                if (!sidedef.SectorID.InRangeExclusive(0, map.Sectors.Count))
                {
                    throw new Exception($"Sidedef {index} has out of range sector: {sidedef.SectorID}");
                }

                map.Sidedefs.Add(sidedef);
            }
        }
コード例 #2
0
        public Side(int index, MapSidedef sidedef, Sector sector)
        {
            Index             = index;
            Sector            = sector;
            Offset            = sidedef.Offset;
            LowerTextureName  = sidedef.LowerTexture;
            MiddleTextureName = sidedef.MiddleTexture;
            UpperTextureName  = sidedef.UpperTexture;

            sector.Sides.Add(this);
        }