Exemple #1
0
        private void GeneratePlanet(int index, long distance, int totalObjects, ref int planetIndex)
        {
            MyPlanetItem planet = new MyPlanetItem();

            double mod = distance == 0 && m_settings.FirstPlanetCenter ? 1 : Math.Sin(index * Math.PI / totalObjects);

            var  def        = GetPlanetDefinition((int)(m_settings.PlanetSettings.PlanetSizeCap * mod));
            bool isGasGiant = m_gasGiants.Contains(def);
            var  size       = SizeByGravity(def.SurfaceGravity, isGasGiant);

            var      angle  = MyRandom.Instance.GetRandomFloat(0, (float)(2 * Math.PI));
            var      height = MyRandom.Instance.GetRandomFloat((float)Math.PI / 180 * -5, (float)Math.PI / 180 * 5);
            Vector3D pos    = new Vector3D(distance * Math.Sin(angle), distance * Math.Cos(angle), distance * Math.Sin(height));

            string name = SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.PlanetNameFormat
                          .SetProperty("ObjectNumber", planetIndex + 1)
                          .SetProperty("ObjectNumberGreek", greek_letters[planetIndex])
                          .SetProperty("ObjectLetterLower", (char)('a' + (planetIndex % 26)))
                          .SetProperty("ObjectLetterUpper", (char)('A' + (planetIndex % 26)))
                          .SetProperty("ObjectId", def.Id.SubtypeId.String);

            ++planetIndex;

            planet.DisplayName    = name;
            planet.Type           = SystemObjectType.PLANET;
            planet.DefName        = def.Id.SubtypeId.String;
            planet.Size           = size;
            planet.PlanetRing     = GenerateRing(def.SurfaceGravity, planet.Size);
            planet.OffsetPosition = pos;
            planet.CenterPosition = pos;
            planet.PlanetMoons    = GenerateMoons(planet.Size, def.SurfaceGravity, planet.DisplayName, distance);
            planet.Generated      = false;

            m_objects.Add(planet);
        }
Exemple #2
0
        private void GeneratePlanet(int index, long distance, int totalObjects, ref int planetIndex)
        {
            MyPlanetItem planet = new MyPlanetItem();

            double mod = distance == 0 && m_settings.FirstPlanetCenter ? 1 : Math.Sin(index * Math.PI / totalObjects);

            var def = GetPlanetDefinition((int)(m_settings.PlanetSettings.PlanetSizeCap * mod));

            var size = SizeByGravity(def.SurfaceGravity);

            var      angle  = MyRandom.Instance.GetRandomFloat(0, (float)(2 * Math.PI));
            var      height = MyRandom.Instance.GetRandomFloat((float)Math.PI / 180 * -5, (float)Math.PI / 180 * 5);
            Vector3D pos    = new Vector3D(distance * Math.Sin(angle), distance * Math.Cos(angle), distance * Math.Sin(height));

            planet.DisplayName    = "Planet " + (++planetIndex);
            planet.Type           = SystemObjectType.PLANET;
            planet.DefName        = def.Id.SubtypeId.String;
            planet.Size           = size;
            planet.PlanetRing     = GenerateRing(def.SurfaceGravity, planet.Size);
            planet.OffsetPosition = pos;
            planet.CenterPosition = pos;
            planet.PlanetMoons    = GenerateMoons(planet.Size, def.SurfaceGravity, planet.DisplayName, distance);
            planet.Generated      = false;

            m_objects.Add(planet);
        }
Exemple #3
0
        static void SendAddPlanet(MyPlanetItem planet, ulong callback, ulong client)
        {
            if (planet != null)
            {
                if (Static.TryGetObject(planet.DisplayName, out MySystemItem obj))
                {
                    if (obj.Type == SystemObjectType.PLANET)
                    {
                        if (((MyPlanetItem)obj).Generated)
                        {
                            return;
                        }
                    }
                    else
                    {
                        return;
                    }
                    Static.Objects.Remove(obj);
                }
                Static.Objects.Add(planet);

                PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, true, callback, client);
                return;
            }
            PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, false, callback, client);
        }
        private MySystemItem IsInsideRing(Vector3D position)
        {
            foreach (MySystemItem p in SystemGenerator.Static.m_objects)
            {
                if (p.Type == SystemObjectType.PLANET)
                {
                    MyPlanetItem planet = (MyPlanetItem)p;

                    if (planet.PlanetRing == null)
                    {
                        continue;
                    }
                    AsteroidRingShape shape = AsteroidRingShape.CreateFromRingItem(planet.PlanetRing);
                    if (shape.Contains(position) == ContainmentType.Contains)
                    {
                        return(planet.PlanetRing);
                    }
                }
                else if (p.Type == SystemObjectType.BELT)
                {
                    MySystemBeltItem  belt  = (MySystemBeltItem)p;
                    AsteroidBeltShape shape = AsteroidBeltShape.CreateFromRingItem(belt);
                    if (shape.Contains(position) == ContainmentType.Contains)
                    {
                        return(belt);
                    }
                }
            }
            return(null);
        }
Exemple #5
0
        static void SendGetServer(ulong client, string name, ulong callback)
        {
            bool success = Static.TryGetObject(name, out MySystemItem item);

            if (item == null)
            {
                item = new MyPlanetItem();
            }
            switch (item.Type)
            {
            case SystemObjectType.PLANET:
                PluginEventHandler.Static.RaiseStaticEvent(SendGetPlanetClient, success, (MyPlanetItem)item, callback, client);
                break;

            case SystemObjectType.BELT:
                PluginEventHandler.Static.RaiseStaticEvent(SendGetBeltClient, success, (MySystemBeltItem)item, callback, client);
                break;

            case SystemObjectType.RING:
                PluginEventHandler.Static.RaiseStaticEvent(SendGetRingClient, success, (MyPlanetRingItem)item, callback, client);
                break;

            case SystemObjectType.MOON:
                PluginEventHandler.Static.RaiseStaticEvent(SendGetMoonClient, success, (MyPlanetMoonItem)item, callback, client);
                break;

            default:
                break;
            }
        }
Exemple #6
0
        private void SpawnPlanet(MySystemItem planet, Vector3D position)
        {
            if (planet.Type == SystemObjectType.PLANET)
            {
                MyPlanetItem p = (MyPlanetItem)planet;
                p.CenterPosition = position;

                SystemGenerator.Static.AddPlanet(p);
            }
        }
Exemple #7
0
        /// <summary>
        /// Rebuilds the UI of the menu, by replacing the combo box at the top, with
        /// a new one with new selectable options, and checks, if a plugin menu should be shown and when yes,
        /// which one, otherwise shows the corresponding vanilla menu
        /// </summary>
        /// <param name="constructor">Whether this is run from constructor</param>
        public override void RecreateControls(bool constructor)
        {
            base.RecreateControls(constructor);

            MyGuiControlCombobox modeCombo = GetCombo();

            int oldCount = modeCombo.GetItemsCount();

            if (MySession.Static.IsUserSpaceMaster(Sync.MyId) && MySession.Static.IsUserAdmin(Sync.MyId))
            {
                modeCombo.AddItem(oldCount, "SEWorldGenPlugin - Rings");
                modeCombo.AddItem(oldCount + 1, "SEWorldGenPlugin - Planets");
            }

            MyGuiControlCombobox newCombo = AddCombo();

            int count = modeCombo.GetItemsCount();

            for (int i = 0; i < count; i++)
            {
                var item = modeCombo.GetItemByIndex(i);
                newCombo.AddItem(item.Key, item.Value);
            }

            newCombo.Position = modeCombo.Position;
            newCombo.SelectItemByKey(m_currentKey);
            Controls[Controls.IndexOf(modeCombo)] = newCombo;
            Controls.Remove(modeCombo);

            newCombo.ItemSelected += delegate
            {
                m_currentKey = newCombo.GetSelectedKey();
                if (newCombo.GetSelectedKey() >= oldCount)
                {
                    RecreateControls(false);
                }
                else
                {
                    m_attachedEntity = 0L;
                    m_selectedPlanet = null;
                    modeCombo.SelectItemByKey(newCombo.GetSelectedKey());
                    RecreateControls(false);
                }
            };
            if (newCombo.GetSelectedKey() == oldCount)
            {
                ClearControls();
                CheckBuildPluginControls(BuildRingMenu);
            }
            else if (newCombo.GetSelectedKey() == oldCount + 1)
            {
                ClearControls();
                CheckBuildPluginControls(BuildPlanetMenu);
            }
        }
Exemple #8
0
        private void OnTeleportToRingButton(MyGuiControlButton button)
        {
            if (MySession.Static.CameraController != MySession.Static.LocalCharacter)
            {
                CloseScreen();
                AsteroidRingShape shape = AsteroidRingShape.CreateFromRingItem(m_selectedPlanet.PlanetRing);

                MyMultiplayer.TeleportControlledEntity(shape.LocationInRing(0));
                m_attachedEntity = 0L;
                m_selectedPlanet = null;
                MyGuiScreenGamePlay.SetCameraController();
            }
        }
Exemple #9
0
 static void SendRemoveRingFromPlanet(string planetName)
 {
     if (Static.TryGetObject(planetName, out MySystemItem obj))
     {
         if (obj.Type == SystemObjectType.PLANET)
         {
             MyPlanetItem planet = (MyPlanetItem)obj;
             if (planet.PlanetRing != null)
             {
                 planet.PlanetRing = null;
             }
         }
     }
 }
Exemple #10
0
 static void SendAddRingToPlanet(string planetName, MyPlanetRingItem ringBase)
 {
     if (Static.TryGetObject(planetName, out MySystemItem obj))
     {
         if (obj.Type == SystemObjectType.PLANET)
         {
             MyPlanetItem planet = (MyPlanetItem)obj;
             if (planet.PlanetRing == null)
             {
                 ringBase.Center   = planet.CenterPosition;
                 planet.PlanetRing = ringBase;
             }
         }
     }
 }
Exemple #11
0
 public void AddPlanet(MyPlanetItem planet)
 {
     if (!m_handshakeDone)
     {
         NetUtil.PingServer(delegate //Handshake needed to know, that server runs plugin
         {
             m_handshakeDone = true;
             PluginEventHandler.Static.RaiseStaticEvent(SendAddPlanet, planet, null);
         });
     }
     else
     {
         PluginEventHandler.Static.RaiseStaticEvent(SendAddPlanet, planet, null);
     }
 }
Exemple #12
0
 static void SendRemoveRingFromPlanet(string planetName, ulong callback, ulong client)
 {
     if (Static.TryGetObject(planetName, out MySystemItem obj))
     {
         if (obj.Type == SystemObjectType.PLANET)
         {
             MyPlanetItem planet = (MyPlanetItem)obj;
             if (planet.PlanetRing != null)
             {
                 planet.PlanetRing = null;
                 PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, true, callback, client);
                 return;
             }
         }
     }
     PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, false, callback, client);
 }
Exemple #13
0
        static void SendAddRingToPlanet(string planetName, MyPlanetRingItem ringBase, ulong callback, ulong client)
        {
            if (Static.TryGetObject(planetName, out MySystemItem obj))
            {
                if (obj.Type == SystemObjectType.PLANET)
                {
                    MyPlanetItem planet = (MyPlanetItem)obj;
                    if (planet.PlanetRing == null)
                    {
                        ringBase.Center   = planet.CenterPosition;
                        planet.PlanetRing = ringBase;

                        PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, true, callback, client);
                        return;
                    }
                }
            }
            PluginEventHandler.Static.RaiseStaticEvent(SendAddCallbackClient, false, callback, client);
        }
Exemple #14
0
 static void SendAddPlanet(MyPlanetItem planet)
 {
     if (planet != null)
     {
         if (Static.TryGetObject(planet.DisplayName, out MySystemItem obj))
         {
             if (obj.Type == SystemObjectType.PLANET)
             {
                 if (((MyPlanetItem)obj).Generated)
                 {
                     return;
                 }
             }
             else
             {
                 return;
             }
             Static.m_objects.Remove(obj);
         }
         Static.m_objects.Add(planet);
     }
 }
Exemple #15
0
        private void OnSpawnPlanetButton(MyGuiControlButton button)
        {
            if (m_planetDefListBox.SelectedItems.Count > 0)
            {
                float        size   = m_planetSizeSlider.Value * 1000;
                MyPlanetItem planet = new MyPlanetItem()
                {
                    OffsetPosition = Vector3D.Zero,
                    DefName        = m_selectedDefinition.Id.SubtypeId.ToString(),
                    DisplayName    = m_selectedDefinition.Id.SubtypeId.ToString() + "_" + size + "_" + MyRandom.Instance.Next(),
                    Generated      = false,
                    PlanetMoons    = new MyPlanetMoonItem[0],
                    PlanetRing     = null,
                    Size           = size,
                    Type           = SystemObjectType.PLANET,
                    CenterPosition = Vector3D.Zero
                };

                PluginItemsClipboard.Static.Activate(planet, SpawnPlanet, size);

                CloseScreenNow();
            }
        }
Exemple #16
0
        private void PlanetListItemClicked(MyGuiControlListbox box)
        {
            if (box.SelectedItems.Count > 0)
            {
                MyEntityList.MyEntityListInfoItem myEntityListInfoItem = (MyEntityList.MyEntityListInfoItem)box.SelectedItems[box.SelectedItems.Count - 1].UserData;
                m_attachedEntity = myEntityListInfoItem.EntityId;
                if (!TryAttachCamera(myEntityListInfoItem.EntityId))
                {
                    MySession.Static.SetCameraController(MyCameraControllerEnum.Spectator, null, myEntityListInfoItem.Position + Vector3.One * 50f);
                }

                MyPlanet planetEntity = (MyPlanet)MyEntities.GetEntityById(myEntityListInfoItem.EntityId);

                string name = "";
                if (myEntityListInfoItem.DisplayName.StartsWith("Planet"))
                {
                    name = myEntityListInfoItem.DisplayName.Replace("_", " ").Split('-')[0].Trim();
                }
                else
                {
                    name = myEntityListInfoItem.DisplayName.Replace("_", " ");
                }

                if (m_selectedPlanet != null)
                {
                    PluginDrawSession.Static.RemoveRenderObject(m_selectedPlanet.GetHashCode());
                }

                SystemGenerator.Static.GetObject(name, delegate(bool success, MySystemItem obj)
                {
                    if (success)
                    {
                        m_selectedPlanet = (MyPlanetItem)obj;
                        m_newPlanet      = false;
                    }
                    else
                    {
                        m_selectedPlanet = new MyPlanetItem()
                        {
                            DisplayName    = myEntityListInfoItem.DisplayName.Replace("_", " "),
                            CenterPosition = planetEntity.PositionComp.GetPosition(),
                            DefName        = ((MyObjectBuilder_Planet)planetEntity.GetObjectBuilder()).Name,
                            Generated      = true,
                            OffsetPosition = planetEntity.PositionLeftBottomCorner,
                            PlanetMoons    = new MyPlanetMoonItem[0],
                            PlanetRing     = null,
                            Size           = planetEntity.AverageRadius * 2,
                            Type           = SystemObjectType.PLANET
                        };
                        m_newPlanet = true;
                    }

                    m_ringDistanceSlider.MinValue  = planetEntity.AverageRadius * 2 * 0.75f - planetEntity.AverageRadius;
                    m_ringDistanceSlider.MinValue -= m_ringDistanceSlider.MinValue % 1000;
                    m_ringDistanceSlider.MaxValue  = planetEntity.AverageRadius * 2 * 2 - planetEntity.AverageRadius;
                    m_ringDistanceSlider.MaxValue -= m_ringDistanceSlider.MaxValue % 1000;
                    m_ringDistanceSlider.Value     = planetEntity.AverageRadius * 2 * 1.25f - planetEntity.AverageRadius;
                    m_ringDistanceSlider.Value    -= m_ringDistanceSlider.Value % 1000;

                    bool hasRing = m_selectedPlanet.PlanetRing != null;

                    m_ringAngleXSlider.Enabled      = !hasRing;
                    m_ringAngleYSlider.Enabled      = !hasRing;
                    m_ringAngleZSlider.Enabled      = !hasRing;
                    m_ringDistanceSlider.Enabled    = !hasRing;
                    m_ringWidthSlider.Enabled       = !hasRing;
                    m_ringRoidSizeSlider.Enabled    = !hasRing;
                    m_ringRoidSizeMaxSlider.Enabled = !hasRing;
                    m_addRingButton.Enabled         = !hasRing;
                    m_removeRingButton.Enabled      = hasRing;
                    m_teleportToRingButton.Enabled  = hasRing;

                    if (hasRing)
                    {
                        m_ringDistanceSlider.Value    = (float)m_selectedPlanet.PlanetRing.Radius - m_selectedPlanet.Size / 2;
                        m_ringWidthSlider.Value       = m_selectedPlanet.PlanetRing.Width;
                        m_ringAngleZSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegrees;
                        m_ringAngleYSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegreesY;
                        m_ringAngleXSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegreesX;
                        m_ringRoidSizeSlider.Value    = m_selectedPlanet.PlanetRing.RoidSize;
                        m_ringRoidSizeMaxSlider.Value = m_selectedPlanet.PlanetRing.RoidSizeMax;
                    }
                    else
                    {
                        m_ringWidthSlider.Value       = m_ringWidthSlider.DefaultValue.Value;
                        m_ringAngleXSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                        m_ringAngleYSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                        m_ringAngleZSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                        m_ringRoidSizeSlider.Value    = m_ringRoidSizeSlider.MinValue;
                        m_ringRoidSizeMaxSlider.Value = m_ringRoidSizeMaxSlider.MaxValue;
                        m_ringRoidSizeSlider.Value    = m_ringRoidSizeSlider.DefaultValue.Value;
                        m_ringRoidSizeMaxSlider.Value = m_ringRoidSizeMaxSlider.DefaultValue.Value;
                    }

                    m_ringRoidSizeValue.Text = m_ringRoidSizeSlider.Value.ToString();
                    m_ringAngleXValue.Text   = String.Format("{0:0.00}", m_ringAngleXSlider.Value);
                    m_ringAngleYValue.Text   = String.Format("{0:0.00}", m_ringAngleYSlider.Value);
                    m_ringAngleZValue.Text   = String.Format("{0:0.00}", m_ringAngleZSlider.Value);
                    m_ringWidthValue.Text    = m_ringWidthSlider.Value.ToString();
                    m_ringDistanceValue.Text = m_ringDistanceSlider.Value.ToString();

                    UpdateRingVisual();
                });
            }
        }
Exemple #17
0
        public void GeneratePlanets()
        {
            foreach (var obj in SystemGenerator.Static.m_objects)
            {
                if (obj == null)
                {
                    continue;
                }
                if (obj.Type != SystemObjectType.PLANET)
                {
                    continue;
                }

                MyPlanetItem planet = (MyPlanetItem)obj;

                if (planet.Generated)
                {
                    continue;
                }
                MyPlanetGeneratorDefinition definition = GetDefinition(planet.DefName);
                if (definition == null)
                {
                    continue;
                }
                long   id   = MyRandom.Instance.NextLong();
                string name = (planet.DisplayName + " - " + definition.Id.SubtypeId).Replace(" ", "_");
                if (planet.CenterPosition.Equals(Vector3D.Zero))
                {
                    planet.CenterPosition = planet.OffsetPosition;
                }
                MyPlanet generatedPlanet = MyWorldGenerator.AddPlanet(name, planet.DisplayName, planet.DefName, planet.CenterPosition - GetPlanetOffset(definition, planet.Size), m_seed, planet.Size, true, id, false, true);

                if (generatedPlanet == null)
                {
                    continue;
                }

                planet.CenterPosition           = generatedPlanet.PositionComp.GetPosition();
                generatedPlanet.DisplayNameText = planet.DisplayName;
                generatedPlanet.AsteroidName    = planet.DisplayName;

                if (planet.PlanetRing != null)
                {
                    planet.PlanetRing.Center = planet.CenterPosition;
                }
                List <Vector3D> spawnedMoons = new List <Vector3D>();

                for (int i = 0; i < planet.PlanetMoons.Length; i++)
                {
                    MyPlanetMoonItem moon = planet.PlanetMoons[i];
                    if (moon == null)
                    {
                        continue;
                    }
                    MyPlanetGeneratorDefinition moonDef = GetDefinition(moon.DefName);
                    if (moonDef == null)
                    {
                        continue;
                    }
                    var    position        = new Vector3D(0, 0, 0);
                    long   mId             = MyRandom.Instance.NextLong();
                    string storageNameMoon = ("Moon " + moon.DisplayName + " - " + moonDef.Id.SubtypeId).Replace(" ", "_");
                    var    threshold       = 0;
                    do
                    {
                        double angle = MyRandom.Instance.GetRandomFloat(0, (float)Math.PI * 2f);
                        position = new Vector3D(moon.Distance * Math.Sin(angle), moon.Distance * Math.Cos(angle), moon.Distance * Math.Sin(MyRandom.Instance.GetRandomFloat((float)-Math.PI / 2, (float)Math.PI / 2)));
                        position = Vector3D.Add(planet.CenterPosition, position);
                        threshold++;
                    } while (ObstructedPlace(position, spawnedMoons, planet.Size, planet.PlanetRing) && threshold < 10000);
                    MyPlanet spawnedMoon = MyWorldGenerator.AddPlanet(storageNameMoon, moon.DisplayName, moon.DefName, position, m_seed, moon.Size, true, mId, false, true);
                    spawnedMoons.Add(spawnedMoon.PositionComp.GetPosition());

                    if (SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.ShowMoonGPS)
                    {
                        GlobalGpsManager.Static.AddGps(moon.DisplayName, Color.Aqua, spawnedMoon.PositionComp.GetPosition());
                    }
                }

                planet.Generated = true;
                if (SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.ShowPlanetGPS)
                {
                    GlobalGpsManager.Static.AddGps(planet.DisplayName, Color.Aqua, generatedPlanet.PositionComp.GetPosition());
                }
            }
        }
Exemple #18
0
        /// <summary>
        /// Callback, for when a planet in the planet list is clicked
        /// Loads all slider values, if a ring is present, if not it initializes them
        /// with respective limits to the planet
        /// </summary>
        /// <param name="box">Listbox that got clicked</param>
        private void PlanetListItemClicked(MyGuiControlListbox box)
        {
            if (box.SelectedItems.Count > 0)
            {
                var data = (Tuple <MySystemItem, MyEntityList.MyEntityListInfoItem>)box.SelectedItems[box.SelectedItems.Count - 1].UserData;
                MyEntityList.MyEntityListInfoItem myEntityListInfoItem = data.Item2;
                MyPlanetItem planet       = (MyPlanetItem)data.Item1;
                MyPlanet     entityPlanet = (MyPlanet)MyEntities.GetEntityById(myEntityListInfoItem.EntityId);

                m_attachedEntity = myEntityListInfoItem.EntityId;
                if (SNAP_CAMERA_TO_PLANET && !TryAttachCamera(myEntityListInfoItem.EntityId))
                {
                    MySession.Static.SetCameraController(MyCameraControllerEnum.Spectator, null, myEntityListInfoItem.Position + Vector3.One * 50f);
                }

                if (m_selectedPlanet != null)
                {
                    PluginDrawSession.Static.RemoveRenderObject(m_selectedPlanet.GetHashCode());
                }

                m_selectedPlanet = planet;
                m_newPlanet      = false;

                m_ringDistanceSlider.MinValue  = entityPlanet.AverageRadius * 2 * 0.75f - entityPlanet.AverageRadius;
                m_ringDistanceSlider.MinValue -= m_ringDistanceSlider.MinValue % 1000;
                m_ringDistanceSlider.MaxValue  = entityPlanet.AverageRadius * 2 * 2 - entityPlanet.AverageRadius;
                m_ringDistanceSlider.MaxValue -= m_ringDistanceSlider.MaxValue % 1000;
                m_ringDistanceSlider.Value     = entityPlanet.AverageRadius * 2 * 1.25f - entityPlanet.AverageRadius;
                m_ringDistanceSlider.Value    -= m_ringDistanceSlider.Value % 1000;

                bool hasRing = m_selectedPlanet.PlanetRing != null;

                m_ringAngleXSlider.Enabled      = !hasRing;
                m_ringAngleYSlider.Enabled      = !hasRing;
                m_ringAngleZSlider.Enabled      = !hasRing;
                m_ringDistanceSlider.Enabled    = !hasRing;
                m_ringWidthSlider.Enabled       = !hasRing;
                m_ringRoidSizeSlider.Enabled    = !hasRing;
                m_ringRoidSizeMaxSlider.Enabled = !hasRing;
                m_addRingButton.Enabled         = !hasRing;
                m_removeRingButton.Enabled      = hasRing;
                m_teleportToRingButton.Enabled  = hasRing;

                if (hasRing)
                {
                    m_ringDistanceSlider.Value    = (float)m_selectedPlanet.PlanetRing.Radius - m_selectedPlanet.Size / 2;
                    m_ringWidthSlider.Value       = m_selectedPlanet.PlanetRing.Width;
                    m_ringAngleZSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegrees;
                    m_ringAngleYSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegreesY;
                    m_ringAngleXSlider.Value      = m_selectedPlanet.PlanetRing.AngleDegreesX;
                    m_ringRoidSizeSlider.Value    = m_selectedPlanet.PlanetRing.RoidSize;
                    m_ringRoidSizeMaxSlider.Value = m_selectedPlanet.PlanetRing.RoidSizeMax;
                }
                else
                {
                    m_ringWidthSlider.Value       = m_ringWidthSlider.DefaultValue.Value;
                    m_ringAngleXSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                    m_ringAngleYSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                    m_ringAngleZSlider.Value      = m_ringAngleXSlider.DefaultValue.Value;
                    m_ringRoidSizeSlider.Value    = m_ringRoidSizeSlider.MinValue;
                    m_ringRoidSizeMaxSlider.Value = m_ringRoidSizeMaxSlider.MaxValue;
                    m_ringRoidSizeSlider.Value    = m_ringRoidSizeSlider.DefaultValue.Value;
                    m_ringRoidSizeMaxSlider.Value = m_ringRoidSizeMaxSlider.DefaultValue.Value;
                }

                m_ringRoidSizeValue.Text = m_ringRoidSizeSlider.Value.ToString();
                m_ringAngleXValue.Text   = String.Format("{0:0.00}", m_ringAngleXSlider.Value);
                m_ringAngleYValue.Text   = String.Format("{0:0.00}", m_ringAngleYSlider.Value);
                m_ringAngleZValue.Text   = String.Format("{0:0.00}", m_ringAngleZSlider.Value);
                m_ringWidthValue.Text    = m_ringWidthSlider.Value.ToString();
                m_ringDistanceValue.Text = m_ringDistanceSlider.Value.ToString();

                UpdateRingVisual();
            }
        }
Exemple #19
0
 /// <summary>
 /// Adds a planet to the system on the server.
 /// </summary>
 /// <param name="planet">Planet to add</param>
 public void AddPlanet(MyPlanetItem planet, Action <bool> callback = null)
 {
     m_addActionsCallbacks.Add(++m_currentAddIndex, callback);
     PluginEventHandler.Static.RaiseStaticEvent(SendAddPlanet, planet, m_currentAddIndex, Sync.MyId, null);
 }
Exemple #20
0
 static void SendGetPlanetClient(bool success, MyPlanetItem item, ulong callback)
 {
     Static.m_getActionCallbacks[callback](success, item);
     Static.m_getActionCallbacks.Remove(callback);
 }