/// <summary> /// Update the Saveability of every MapObject in this map, setting /// instance entities to be Saveability.Children. /// </summary> /// <param name="map"></param> /// <returns>A copy of the input Map with its MapObjects' Saveability /// updated, in preparation for writing to disk as a string.</returns> public override Map Collapse() { var collapsed = new QuakeMap(this); collapsed.MapObjects.Clear(); int worldspawnIndex = MapObjects.FindIndex(o => o.Definition.ClassName == "worldspawn"); MapObject worldspawn = MapObjects[worldspawnIndex]; collapsed.MapObjects.Add(worldspawn); for (int i = 0; i < MapObjects.Count; i++) { if (i != worldspawnIndex) { List <MapObject> collapsedObject = MapObjects[i].Collapse(); foreach (MapObject co in collapsedObject) { if (co.Definition.ClassName == "worldspawn") { worldspawn.Renderables.AddRange(co.Renderables); } else { collapsed.MapObjects.Add(co); } } } } return(collapsed); }
public QuakeMap(QuakeMap map) : base(map) { }