public void Serialize(EB.BitStream bs) { bs.Serialize(ref _posX); bs.Serialize(ref _posZ); bs.Serialize(ref _selectedZone); bs.Serialize(ref _interactionSetIndex); bs.Serialize(ref _layoutName); if (bs.isWriting) { int numTags = Tags.Count; bs.Serialize(ref numTags); foreach (string tag in Tags) { string t = tag; bs.Serialize(ref t); } int numSpawners = Spawners.Count; bs.Serialize(ref numSpawners); foreach (SpawnerData spawner in Spawners) { spawner.Serialize(bs); } int numLootables = Lootables.Count; bs.Serialize(ref numLootables); foreach (LootableData lootable in Lootables) { lootable.Serialize(bs); } } else { int numTags = 0; bs.Serialize(ref numTags); Tags = new List <string>(); for (int i = 0; i < numTags; i++) { string tag = string.Empty; bs.Serialize(ref tag); Tags.Add(tag); } int numSpawners = 0; bs.Serialize(ref numSpawners); Spawners = new List <SpawnerData>(); for (int i = 0; i < numSpawners; i++) { SpawnerData spawner = new SpawnerData(); spawner.Serialize(bs); Spawners.Add(spawner); } int numLootables = 0; bs.Serialize(ref numLootables); Lootables = new List <LootableData>(); for (int i = 0; i < numLootables; i++) { LootableData lootable = new LootableData(); lootable.Serialize(bs); Lootables.Add(lootable); } } }