void CreateCustomWorldIce() { //MyEntities.CloseAll(false); var generator = new MySectorGenerator((int)DateTime.Now.Ticks); var sectorObjects = generator.GenerateObjectBuilders(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, m_sectorObjectCounts, false); MyGuiScreenGamePlay.CreateFromSectorObjectBuilder(sectorObjects); MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure(); }
public MySolarSystemMapSectorData GenerateSector(MyMwcVector3Int sectorToGenerate, List<MyMwcObjectBuilder_Base> objectBuilders, List<BoundingSphere> safeAreas, bool onlyStaticAsteroids) { MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("Solar generator"); MySolarSystemGenerator solarSystemGenerator = new MySolarSystemGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED); solarSystemGenerator.Generate(1024); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); BoundingSphere playerSafeArea = new BoundingSphere(MySession.PlayerShip.GetPosition(), 150); //smallship + mothership safeAreas.Add(playerSafeArea); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("Sector generator"); MySectorGenerator sectorGenerator = new MySectorGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED ^ sectorToGenerate.GetHashCode(), safeAreas); MySolarSystemMapSectorData sectorData = sectorGenerator.GenerateSectorObjectBuilders(sectorToGenerate, solarSystemGenerator.SolarSystemData, objectBuilders, onlyStaticAsteroids); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); MySector.UseGenerator = true; MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("Sector data"); MySolarSectorData defaultSectorData = MySolarSystemConstants.GetDefaultArea().SectorData; MySolarSectorData currentSectorData = defaultSectorData; MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); if (sectorData.Area.HasValue) { MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("Sector data interpolation"); var sectorData2 = MySolarSystemConstants.Areas[sectorData.Area.Value].SectorData; currentSectorData = sectorData2.InterpolateWith(defaultSectorData, 1 - sectorData.AreaInfluenceMultiplier); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); } MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyMwcObjectBuilder_Sector"); SetSectorProperties(currentSectorData); MyBackgroundCube.ReloadContent(); MyDistantImpostors.ReloadContent(); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); return sectorData; }
void CreateCustomWorldStone() { List<BoundingSphere> safeAreas = new List<BoundingSphere>(); foreach (MyEntity entity in MyEntities.GetEntities()) { MyDummyPoint dummyPoint = entity as MyDummyPoint; if (dummyPoint != null && dummyPoint.DummyFlags.HasFlag(MinerWars.CommonLIB.AppCode.ObjectBuilders.SubObjects.MyDummyPointFlags.SAFE_AREA)) { safeAreas.Add(dummyPoint.WorldVolume); } } BoundingSphere playerSafeArea = new BoundingSphere(MySession.PlayerShip.GetPosition(), 150); //smallship + mothership safeAreas.Add(playerSafeArea); //MyEntities.CloseAll(false); var generator = new MySectorGenerator((int)DateTime.Now.Ticks, safeAreas); var sectorObjects = generator.GenerateObjectBuilders(MyGuiScreenGamePlay.Static.GetSectorIdentifier().Position, m_sectorObjectCounts, false); MyGuiScreenGamePlay.CreateFromSectorObjectBuilder(sectorObjects); MyEntities.UpdateAfterSimulation(); //Updates AABBs of objects MinerWars.AppCode.Game.Render.MyRender.RebuildCullingStructure(); }
/// <summary> /// Generates area data, sun color, dust color, etc. /// </summary> /// <returns></returns> private MySolarSystemMapSectorData GenerateSectorData() { MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("GenerateSectorData"); MySolarSystemGenerator solarSystemGenerator = new MySolarSystemGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED); solarSystemGenerator.Generate(1); MySectorGenerator sectorGenerator = new MySectorGenerator(MyGuiScreenSolarSystemMap.UNIVERSE_SEED); MyMwcVector3Int sectorToGenerate = m_sectorIdentifier.Position; MySolarSystemMapSectorData sectorData = sectorGenerator.GenerateSectorEntities(solarSystemGenerator.SolarSystemData, sectorToGenerate, 0, int.MaxValue, true); MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(); return sectorData; }