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