public override void FixSessionObjectBuilders(MyObjectBuilder_Checkpoint checkpoint, MyObjectBuilder_Sector sector)
		{
			if (sector.AppVersion == 0)
			{
				HashSet<String> previouslyColored = new HashSet<String>();
				previouslyColored.Add("LargeBlockArmorBlock");
				previouslyColored.Add("LargeBlockArmorSlope");
				previouslyColored.Add("LargeBlockArmorCorner");
				previouslyColored.Add("LargeBlockArmorCornerInv");
				previouslyColored.Add("LargeRoundArmor_Slope");
				previouslyColored.Add("LargeRoundArmor_Corner");
				previouslyColored.Add("LargeRoundArmor_CornerInv");
				previouslyColored.Add("LargeHeavyBlockArmorBlock");
				previouslyColored.Add("LargeHeavyBlockArmorSlope");
				previouslyColored.Add("LargeHeavyBlockArmorCorner");
				previouslyColored.Add("LargeHeavyBlockArmorCornerInv");
				previouslyColored.Add("SmallBlockArmorBlock");
				previouslyColored.Add("SmallBlockArmorSlope");
				previouslyColored.Add("SmallBlockArmorCorner");
				previouslyColored.Add("SmallBlockArmorCornerInv");
				previouslyColored.Add("SmallHeavyBlockArmorBlock");
				previouslyColored.Add("SmallHeavyBlockArmorSlope");
				previouslyColored.Add("SmallHeavyBlockArmorCorner");
				previouslyColored.Add("SmallHeavyBlockArmorCornerInv");
				previouslyColored.Add("LargeBlockInteriorWall");

				foreach (var obj in sector.SectorObjects)
				{
					var grid = obj as MyObjectBuilder_CubeGrid;
					if (grid == null)
						continue;

					foreach (var block in grid.CubeBlocks)
					{
						if (block.TypeId != typeof(MyObjectBuilder_CubeBlock) || !previouslyColored.Contains(block.SubtypeName))
						{
							block.ColorMaskHSV = MyRenderComponentBase.OldGrayToHSV;
						}
					}
				}
			}

			if (sector.AppVersion <= 01100001)
			{
				CheckOxygenContainers(sector);
			}
		}
        public SectorEntity(MyObjectBuilder_Sector definition)
            : base(definition)
        {
            m_eventManager = new BaseObjectManager();
            m_cubeGridManager = new BaseObjectManager();
            m_voxelMapManager = new BaseObjectManager();
            m_floatingObjectManager = new BaseObjectManager();
            m_meteorManager = new BaseObjectManager();

            List<Event> events = new List<Event>();
            foreach (var sectorEvent in definition.SectorEvents.Events)
            {
                events.Add(new Event(sectorEvent));
            }

            List<CubeGridEntity> cubeGrids = new List<CubeGridEntity>();
            List<VoxelMap> voxelMaps = new List<VoxelMap>();
            List<FloatingObject> floatingObjects = new List<FloatingObject>();
            List<Meteor> meteors = new List<Meteor>();
            foreach (var sectorObject in definition.SectorObjects)
            {
                if (sectorObject.TypeId == typeof(MyObjectBuilder_CubeGrid))
                {
                    cubeGrids.Add(new CubeGridEntity((MyObjectBuilder_CubeGrid)sectorObject));
                }
                else if (sectorObject.TypeId == typeof(MyObjectBuilder_VoxelMap))
                {
                    voxelMaps.Add(new VoxelMap((MyObjectBuilder_VoxelMap)sectorObject));
                }
                else if (sectorObject.TypeId == typeof(MyObjectBuilder_FloatingObject))
                {
                    floatingObjects.Add(new FloatingObject((MyObjectBuilder_FloatingObject)sectorObject));
                }
                else if (sectorObject.TypeId == typeof(MyObjectBuilder_Meteor))
                {
                    meteors.Add(new Meteor((MyObjectBuilder_Meteor)sectorObject));
                }
            }

            //Build the managers from the lists
            m_eventManager.Load(events);
            m_cubeGridManager.Load(cubeGrids);
            m_voxelMapManager.Load(voxelMaps);
            m_floatingObjectManager.Load(floatingObjects);
            m_meteorManager.Load(meteors);
        }
		private void CheckOxygenContainers(MyObjectBuilder_Sector sector)
		{
			foreach (var objectBuilder in sector.SectorObjects)
			{
				var gridBuilder = objectBuilder as MyObjectBuilder_CubeGrid;
				if (gridBuilder != null)
				{
					foreach (var cubeBuilder in gridBuilder.CubeBlocks)
					{
						var oxygenTankBuilder = cubeBuilder as MyObjectBuilder_OxygenTank;
						if (oxygenTankBuilder != null)
						{
							CheckOxygenInventory(oxygenTankBuilder.Inventory);
							continue;
						}

						var oxygenGeneratorBuilder = cubeBuilder as MyObjectBuilder_OxygenGenerator;
						if (oxygenGeneratorBuilder != null)
						{
							CheckOxygenInventory(oxygenGeneratorBuilder.Inventory);
							continue;
						}
					}
				}

				var floatingObjectBuilder = objectBuilder as MyObjectBuilder_FloatingObject;
				if (floatingObjectBuilder != null)
				{
					var oxygenContainer = floatingObjectBuilder.Item.PhysicalContent as MyObjectBuilder_OxygenContainerObject;
					if (oxygenContainer == null)
						continue;
					
					FixOxygenContainer(oxygenContainer);
				}
			}
		}
 public virtual void FixSessionObjectBuilders(MyObjectBuilder_Checkpoint checkpoint, MyObjectBuilder_Sector sector)
 { }
Beispiel #5
0
 public static bool SaveSector(MyObjectBuilder_Sector sector, string sessionPath, Vector3I sectorPosition, out ulong sizeInBytes)
 {
     var relativePath = GetSectorPath(sessionPath, sectorPosition);
     return MyObjectBuilderSerializer.SerializeXML(relativePath, MySandboxGame.Config.CompressSaveGames, sector, out sizeInBytes);
 }
Beispiel #6
0
 private void create_tree(TreeNode savegame, MyObjectBuilder_Sector mySector)
 {
     savegame.Nodes.Clear();
         TreeNode ships = new TreeNode("Ships / Stations");
         TreeNode VoxelMaps = new TreeNode("Asteroids / Moons");
         TreeNode node = null;
         foreach (Sandbox.Common.ObjectBuilders.MyObjectBuilder_EntityBase eb in mySector.SectorObjects)
         {
             switch(eb.TypeId){
                 case MyObjectBuilderTypeEnum.VoxelMap:
                     MyObjectBuilder_VoxelMap myMap = (MyObjectBuilder_VoxelMap)eb;
                     node = new TreeNode("Asteroid");
                     node.Tag = myMap;
                     node.Nodes.Add(new TreeNode(myMap.EntityId.ToString()));
                     node.Nodes.Add(new TreeNode(myMap.PositionAndOrientation.ToString()));
                     node.Nodes.Add(new TreeNode(myMap.Filename.ToString()));
                     VoxelMaps.Nodes.Add(node);
                 break;
                 case MyObjectBuilderTypeEnum.CubeGrid:
                     ships.Nodes.Add(this.newCubeGridNode((MyObjectBuilder_CubeGrid)eb));
                 break;
             }
         }
         savegame.Nodes.Add(ships);
         savegame.Nodes.Add(VoxelMaps);
         savegame.Tag = mySector;
 }