示例#1
0
        /// <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);
        }
示例#2
0
 public QuakeMap(QuakeMap map) : base(map)
 {
 }