示例#1
0
        protected override void Init(MyObjectBuilder_DefinitionBase builder)
        {
            base.Init(builder);
            var ob = builder as MyObjectBuilder_PlanetPrefabDefinition;

            this.PlanetBuilder = ob.PlanetBuilder;
        }
示例#2
0
        public override MyObjectBuilder_EntityBase GetObjectBuilder(bool copy = false)
        {
            MyObjectBuilder_Planet planetBuilder = (MyObjectBuilder_Planet)base.GetObjectBuilder(copy);

            planetBuilder.Radius                 = m_planetInitValues.AveragePlanetRadius;
            planetBuilder.HasAtmosphere          = m_planetInitValues.HasAtmosphere;
            planetBuilder.AtmosphereRadius       = m_planetInitValues.AtmosphereRadius;
            planetBuilder.MinimumSurfaceRadius   = m_planetInitValues.MinimumSurfaceRadius;
            planetBuilder.MaximumHillRadius      = m_planetInitValues.MaximumHillRadius;
            planetBuilder.AtmosphereWavelengths  = m_planetInitValues.AtmosphereWavelengths;
            planetBuilder.MaximumOxygen          = m_planetInitValues.MaxOxygen;
            planetBuilder.SavedEnviromentSectors = m_savedEnviromentSectors;
            planetBuilder.GravityFalloff         = m_planetInitValues.GravityFalloff;
            planetBuilder.MarkAreaEmpty          = m_planetInitValues.MarkAreaEmpty;
            return(planetBuilder);
        }
示例#3
0
        private bool TestPlacement()
        {
            if (MySession.Static.ControlledEntity != null &&
                (MySession.Static.GetCameraControllerEnum() == MyCameraControllerEnum.Entity || MySession.Static.GetCameraControllerEnum() == MyCameraControllerEnum.ThirdPersonSpectator || MySession.Static.GetCameraControllerEnum() == MyCameraControllerEnum.Spectator))
            {
                for (int i = 0; i < m_previewVoxelMaps.Count; ++i)
                {
                    var aabb = m_previewVoxelMaps[i].PositionComp.WorldAABB;

                    using (m_tmpResultList.GetClearToken())
                    {
                        MyGamePruningStructure.GetTopMostEntitiesInBox(ref aabb, m_tmpResultList);
                        if (TestPlacement(m_tmpResultList) == false)
                        {
                            return(false);
                        }
                    }
                }

                if (m_planetMode)
                {
                    for (int i = 0; i < m_copiedVoxelMaps.Count; ++i)
                    {
                        MyObjectBuilder_Planet builder = m_copiedVoxelMaps[i] as MyObjectBuilder_Planet;
                        if (builder != null)
                        {
                            using (m_tmpResultList.GetClearToken())
                            {
                                BoundingSphereD sphere = new BoundingSphereD(m_pastePosition, builder.Radius * 1.1f);
                                MyGamePruningStructure.GetAllTopMostEntitiesInSphere(ref sphere, m_tmpResultList);

                                if (TestPlacement(m_tmpResultList) == false)
                                {
                                    return(false);
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }
示例#4
0
        public override MyObjectBuilder_EntityBase GetObjectBuilder(bool copy = false)
        {
            MyObjectBuilder_Planet planetBuilder = (MyObjectBuilder_Planet)base.GetObjectBuilder(copy);

            planetBuilder.Radius                = m_planetInitValues.Radius;
            planetBuilder.HasAtmosphere         = m_planetInitValues.HasAtmosphere;
            planetBuilder.AtmosphereRadius      = m_planetInitValues.AtmosphereRadius;
            planetBuilder.MinimumSurfaceRadius  = m_planetInitValues.MinRadius;
            planetBuilder.MaximumHillRadius     = m_planetInitValues.MaxRadius;
            planetBuilder.AtmosphereWavelengths = m_planetInitValues.AtmosphereWavelengths;
            planetBuilder.GravityFalloff        = m_planetInitValues.GravityFalloff;
            planetBuilder.MarkAreaEmpty         = m_planetInitValues.MarkAreaEmpty;
            planetBuilder.AtmosphereSettings    = m_planetInitValues.AtmosphereSettings;
            planetBuilder.SurfaceGravity        = m_planetInitValues.SurfaceGravity;
            planetBuilder.ShowGPS               = m_planetInitValues.AddGps;
            planetBuilder.SpherizeWithDistance  = m_planetInitValues.SpherizeWithDistance;
            planetBuilder.PlanetGenerator       = Generator != null?Generator.Id.SubtypeId.ToString() : null;

            return(planetBuilder);
        }
示例#5
0
 private void UpdateVoxelMapTransformations()
 {
     if (m_planetMode)
     {
         for (int i = 0; i < m_copiedVoxelMaps.Count; ++i)
         {
             MyObjectBuilder_Planet builder = m_copiedVoxelMaps[i] as MyObjectBuilder_Planet;
             if (builder != null)
             {
                 VRageRender.MyRenderProxy.DebugDrawSphere(m_pastePosition, builder.Radius * 1.1f, Color.Green, 1.0f, true, true);
             }
         }
     }
     else
     {
         for (int i = 0; i < m_previewVoxelMaps.Count; ++i)
         {
             m_previewVoxelMaps[i].PositionLeftBottomCorner = m_pastePosition + m_copiedVoxelMapOffsets[i] - m_previewVoxelMaps[i].Storage.Size * 0.5f;
             m_previewVoxelMaps[i].PositionComp.SetPosition(m_pastePosition + m_copiedVoxelMapOffsets[i]);
         }
     }
 }
示例#6
0
        public override MyObjectBuilder_EntityBase GetObjectBuilder(bool copy = false)
        {
            MyObjectBuilder_Planet planetBuilder = (MyObjectBuilder_Planet)base.GetObjectBuilder(copy);

            var len = SavedSectors.Count;

            var sectors = new MyObjectBuilder_Planet.SavedSector[len];

            int i = 0;

            foreach (var sect in SavedSectors)
            {
                sectors[i++] = new MyObjectBuilder_Planet.SavedSector()
                {
                    IdPos        = sect.Key.Position,
                    IdDir        = sect.Key.Direction,
                    RemovedItems = new HashSet <int>(sect.Value)
                };
            }

            planetBuilder.Radius                 = m_planetInitValues.Radius;
            planetBuilder.HasAtmosphere          = m_planetInitValues.HasAtmosphere;
            planetBuilder.AtmosphereRadius       = m_planetInitValues.AtmosphereRadius;
            planetBuilder.MinimumSurfaceRadius   = m_planetInitValues.MinRadius;
            planetBuilder.MaximumHillRadius      = m_planetInitValues.MaxRadius;
            planetBuilder.AtmosphereWavelengths  = m_planetInitValues.AtmosphereWavelengths;
            planetBuilder.SavedEnviromentSectors = sectors;
            planetBuilder.GravityFalloff         = m_planetInitValues.GravityFalloff;
            planetBuilder.MarkAreaEmpty          = m_planetInitValues.MarkAreaEmpty;
            planetBuilder.AtmosphereSettings     = m_planetInitValues.AtmosphereSettings;
            planetBuilder.SurfaceGravity         = m_planetInitValues.SurfaceGravity;
            planetBuilder.ShowGPS                = m_planetInitValues.AddGps;
            planetBuilder.SpherizeWithDistance   = m_planetInitValues.SpherizeWithDistance;
            planetBuilder.PlanetGenerator        = Generator != null?Generator.Id.SubtypeId.ToString() : null;

            return(planetBuilder);
        }