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