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