Esempio n. 1
0
        private void BuildPlanetMenu()
        {
            ClearControls();
            Vector2 controlPadding = new Vector2(0.02f, 0.02f);
            float   num            = SCREEN_SIZE.X - HIDDEN_PART_RIGHT - controlPadding.X * 2f;
            float   num2           = (SCREEN_SIZE.Y - 1f) / 2f;

            BuildPluginMenuHeader();

            MyGuiControlLabel listBoxLabel = new MyGuiControlLabel
            {
                Position    = new Vector2(-0.153f, -0.334f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "List of Planet definitions"
            };

            MyGuiControlPanel listBoxLabelBg = new MyGuiControlPanel(new Vector2(listBoxLabel.PositionX - 0.0085f, listBoxLabel.Position.Y - 0.005f), new Vector2(0.2865f, 0.035f), null, null, null, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP)
            {
                BackgroundTexture = MyGuiConstants.TEXTURE_RECTANGLE_DARK_BORDER
            };

            Controls.Add(listBoxLabelBg);
            Controls.Add(listBoxLabel);

            m_currentPosition.Y += 0.020f;

            m_planetDefListBox                  = new MyGuiControlListbox(Vector2.Zero, VRage.Game.MyGuiControlListboxStyleEnum.Blueprints);
            m_planetDefListBox.Size             = new Vector2(num, 0f);
            m_planetDefListBox.Enabled          = true;
            m_planetDefListBox.VisibleRowsCount = 8;
            m_planetDefListBox.Position         = m_planetDefListBox.Size / 2f + m_currentPosition;
            m_planetDefListBox.ItemClicked     += PlanetDefListItemClicked;
            m_planetDefListBox.MultiSelect      = false;

            MyGuiControlSeparatorList separator = new MyGuiControlSeparatorList();

            separator.AddHorizontal(new Vector2(0f, 0f) - new Vector2(m_size.Value.X * 0.83f / 2f, -0.00f), m_size.Value.X * 0.73f);
            Controls.Add(separator);

            m_currentPosition    = m_planetDefListBox.GetPositionAbsoluteBottomLeft();
            m_currentPosition.Y += 0.045f;

            MyGuiControlLabel planetSizeLabel = new MyGuiControlLabel
            {
                Position    = m_currentPosition + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "PlanetSize"
            };

            Controls.Add(planetSizeLabel);

            m_planetSizeValue = new MyGuiControlLabel
            {
                Position    = m_currentPosition + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0"
            };
            Controls.Add(m_planetSizeValue);

            m_currentPosition.Y += 0.025f;

            m_planetSizeSlider              = new MyGuiControlClickableSlider(m_currentPosition + new Vector2(0.001f, 0f), 120f, 2400f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_PLANET_SIZE);
            m_planetSizeSlider.Size         = new Vector2(0.285f, 1f);
            m_planetSizeSlider.DefaultValue = 1200f;
            m_planetSizeSlider.Value        = m_planetSizeSlider.DefaultValue.Value;
            m_planetSizeSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_planetSizeSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_planetSizeSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_planetSizeValue.Text = s.Value.ToString();
            });

            m_planetSizeValue.Text = m_planetSizeSlider.Value.ToString();

            Controls.Add(m_planetSizeSlider);

            m_currentPosition.Y += 0.055f + 0.035f;

            m_spawnPlanetButton         = CreateDebugButton(0.284f, "Spawn planet", OnSpawnPlanetButton, true, MyPluginTexts.TOOLTIPS.ADMIN_ADD_RING_BUTTON);
            m_spawnPlanetButton.Enabled = false;

            Controls.Add(m_planetDefListBox);

            LoadPlanetDefinitions();
        }
Esempio n. 2
0
        private void BuildRingMenu()
        {
            ClearControls();

            Vector2 controlPadding = new Vector2(0.02f, 0.02f);
            float   num            = SCREEN_SIZE.X - HIDDEN_PART_RIGHT - controlPadding.X * 2f;

            BuildPluginMenuHeader();

            MyGuiControlLabel listBoxLabel = new MyGuiControlLabel
            {
                Position    = new Vector2(-0.153f, -0.334f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "List of Planets"
            };

            MyGuiControlPanel listBoxLabelBg = new MyGuiControlPanel(new Vector2(listBoxLabel.PositionX - 0.0085f, listBoxLabel.Position.Y - 0.005f), new Vector2(0.2865f, 0.035f), null, null, null, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP)
            {
                BackgroundTexture = MyGuiConstants.TEXTURE_RECTANGLE_DARK_BORDER
            };

            Controls.Add(listBoxLabelBg);
            Controls.Add(listBoxLabel);

            m_currentPosition.Y += 0.020f;

            m_planetListBox                  = new MyGuiControlListbox(Vector2.Zero, VRage.Game.MyGuiControlListboxStyleEnum.Blueprints);
            m_planetListBox.Size             = new Vector2(num, 0f);
            m_planetListBox.Enabled          = true;
            m_planetListBox.VisibleRowsCount = 8;
            m_planetListBox.Position         = m_planetListBox.Size / 2f + m_currentPosition;
            m_planetListBox.ItemClicked     += PlanetListItemClicked;
            m_planetListBox.MultiSelect      = false;

            MyGuiControlSeparatorList separator = new MyGuiControlSeparatorList();

            separator.AddHorizontal(new Vector2(0f, 0f) - new Vector2(m_size.Value.X * 0.83f / 2f, -0.00f), m_size.Value.X * 0.73f);
            Controls.Add(separator);

            m_currentPosition    = m_planetListBox.GetPositionAbsoluteBottomLeft();
            m_currentPosition.Y += 0.045f;

            MyGuiControlParent myGuiControlParent = new MyGuiControlParent
            {
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Position    = Vector2.Zero,
                Size        = new Vector2(0.32f, 0.56f)
            };

            MyGuiControlScrollablePanel m_optionsGroup = new MyGuiControlScrollablePanel(myGuiControlParent)
            {
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Position    = m_currentPosition,
                Size        = new Vector2(0.32f, 0.32f)
            };

            m_optionsGroup.ScrollbarVEnabled = true;
            m_optionsGroup.ScrollBarOffset   = new Vector2(-0.01f, 0f);
            Controls.Add(m_optionsGroup);

            Vector2 vector = -myGuiControlParent.Size * 0.5f;

            MyGuiControlLabel ringDistLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Ring distance"
            };

            myGuiControlParent.Controls.Add(ringDistLabel);

            m_ringDistanceValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0"
            };
            myGuiControlParent.Controls.Add(m_ringDistanceValue);

            vector.Y += 0.025f;

            m_ringDistanceSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), 5000f, 1000000f, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_DISTANCE, showLabel: false);//Make dynamic
            m_ringDistanceSlider.Size         = new Vector2(0.285f, 1f);
            m_ringDistanceSlider.DefaultValue = 100000;
            m_ringDistanceSlider.Value        = m_ringDistanceSlider.DefaultValue.Value;
            m_ringDistanceSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringDistanceSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringDistanceSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                UpdateRingVisual();
                m_ringDistanceValue.Text = s.Value.ToString();
            });

            m_ringDistanceValue.Text = m_ringDistanceSlider.Value.ToString();

            myGuiControlParent.Controls.Add(m_ringDistanceSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringWidthLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Ring width"
            };

            myGuiControlParent.Controls.Add(ringWidthLabel);

            m_ringWidthValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0"
            };
            myGuiControlParent.Controls.Add(m_ringWidthValue);

            vector.Y += 0.025f;

            m_ringWidthSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth, SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_WIDTH, showLabel: false);
            m_ringWidthSlider.Size         = new Vector2(0.285f, 1f);
            m_ringWidthSlider.DefaultValue = (SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MinPlanetRingWidth + SettingsSession.Static.Settings.GeneratorSettings.PlanetSettings.RingSettings.MaxPlanetRingWidth) / 2;
            m_ringWidthSlider.Value        = m_ringWidthSlider.DefaultValue.Value;
            m_ringWidthSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringWidthSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringWidthSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                UpdateRingVisual();
                m_ringWidthValue.Text = s.Value.ToString();
            });

            m_ringWidthValue.Text = m_ringWidthSlider.Value.ToString();

            myGuiControlParent.Controls.Add(m_ringWidthSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringAngleXLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Ring angle X"
            };

            myGuiControlParent.Controls.Add(ringAngleXLabel);

            m_ringAngleXValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0.00"
            };
            myGuiControlParent.Controls.Add(m_ringAngleXValue);

            vector.Y += 0.025f;

            m_ringAngleXSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -90, 90, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
            m_ringAngleXSlider.Size         = new Vector2(0.285f, 1f);
            m_ringAngleXSlider.DefaultValue = 0;
            m_ringAngleXSlider.Value        = m_ringAngleXSlider.DefaultValue.Value;
            m_ringAngleXSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringAngleXSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringAngleXSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                UpdateRingVisual();
                m_ringAngleXValue.Text = String.Format("{0:0.00}", s.Value);
            });

            m_ringAngleXValue.Text = String.Format("{0:0.00}", m_ringAngleXSlider.Value);

            myGuiControlParent.Controls.Add(m_ringAngleXSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringAngleYLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Ring angle Y"
            };

            myGuiControlParent.Controls.Add(ringAngleYLabel);

            m_ringAngleYValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0.00"
            };
            myGuiControlParent.Controls.Add(m_ringAngleYValue);

            vector.Y += 0.025f;

            m_ringAngleYSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -90, 90, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
            m_ringAngleYSlider.Size         = new Vector2(0.285f, 1f);
            m_ringAngleYSlider.DefaultValue = 0;
            m_ringAngleYSlider.Value        = m_ringAngleYSlider.DefaultValue.Value;
            m_ringAngleYSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringAngleYSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringAngleYSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                UpdateRingVisual();
                m_ringAngleYValue.Text = String.Format("{0:0.00}", s.Value);
            });

            m_ringAngleYValue.Text = String.Format("{0:0.00}", m_ringAngleYSlider.Value);

            myGuiControlParent.Controls.Add(m_ringAngleYSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringAngleZLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Ring angle Z"
            };

            myGuiControlParent.Controls.Add(ringAngleZLabel);

            m_ringAngleZValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0.00"
            };
            myGuiControlParent.Controls.Add(m_ringAngleZValue);

            vector.Y += 0.025f;

            m_ringAngleZSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), -90, 90, intValue: false, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ANGLE);
            m_ringAngleZSlider.Size         = new Vector2(0.285f, 1f);
            m_ringAngleZSlider.DefaultValue = 0;
            m_ringAngleZSlider.Value        = m_ringAngleZSlider.DefaultValue.Value;
            m_ringAngleZSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringAngleZSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringAngleZSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                UpdateRingVisual();
                m_ringAngleZValue.Text = String.Format("{0:0.00}", s.Value);
            });

            m_ringAngleZValue.Text = String.Format("{0:0.00}", m_ringAngleZSlider.Value);

            myGuiControlParent.Controls.Add(m_ringAngleZSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringRoidSizeLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Asteroid min size"
            };

            myGuiControlParent.Controls.Add(ringRoidSizeLabel);

            m_ringRoidSizeValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0"
            };
            myGuiControlParent.Controls.Add(m_ringRoidSizeValue);

            vector.Y += 0.025f;

            m_ringRoidSizeSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), 128, 1024, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ROID_SIZE);
            m_ringRoidSizeSlider.Size         = new Vector2(0.285f, 1f);
            m_ringRoidSizeSlider.DefaultValue = 128;
            m_ringRoidSizeSlider.Value        = m_ringRoidSizeSlider.DefaultValue.Value;
            m_ringRoidSizeSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringRoidSizeSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringRoidSizeSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_ringRoidSizeValue.Text = s.Value.ToString();
                if (s.Value > m_ringRoidSizeMaxSlider.Value)
                {
                    m_ringRoidSizeSlider.Value = m_ringRoidSizeMaxSlider.Value;
                }
            });

            m_ringRoidSizeValue.Text = m_ringRoidSizeSlider.Value.ToString();

            myGuiControlParent.Controls.Add(m_ringRoidSizeSlider);

            vector.Y += 0.055f;

            MyGuiControlLabel ringRoidSizeMaxLabel = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.001f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP,
                Text        = "Asteroid max size"
            };

            myGuiControlParent.Controls.Add(ringRoidSizeMaxLabel);

            m_ringRoidSizeMaxValue = new MyGuiControlLabel
            {
                Position    = vector + new Vector2(0.285f, 0f),
                OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP,
                Text        = "0"
            };
            myGuiControlParent.Controls.Add(m_ringRoidSizeMaxValue);

            vector.Y += 0.025f;

            m_ringRoidSizeMaxSlider              = new MyGuiControlClickableSlider(vector + new Vector2(0.001f, 0f), 128, 1024, intValue: true, toolTip: MyPluginTexts.TOOLTIPS.ADMIN_RING_ROID_SIZE_MAX);
            m_ringRoidSizeMaxSlider.Size         = new Vector2(0.285f, 1f);
            m_ringRoidSizeMaxSlider.DefaultValue = 1028;
            m_ringRoidSizeMaxSlider.Value        = m_ringRoidSizeSlider.DefaultValue.Value;
            m_ringRoidSizeMaxSlider.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            m_ringRoidSizeMaxSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringRoidSizeMaxSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_ringRoidSizeMaxValue.Text = s.Value.ToString();
                if (s.Value < m_ringRoidSizeSlider.Value)
                {
                    m_ringRoidSizeMaxSlider.Value = m_ringRoidSizeSlider.Value;
                }
            });

            m_ringRoidSizeMaxValue.Text = m_ringRoidSizeMaxSlider.Value.ToString();

            myGuiControlParent.Controls.Add(m_ringRoidSizeMaxSlider);

            m_optionsGroup.RefreshInternals();

            m_currentPosition.Y += m_optionsGroup.Size.Y;

            MyGuiControlSeparatorList separator2 = new MyGuiControlSeparatorList();

            separator2.AddHorizontal(new Vector2(0f, 0f) - new Vector2(m_size.Value.X * 0.83f / 2f, -0.00f), m_size.Value.X * 0.73f);
            Controls.Add(separator2);

            m_addRingButton = CreateDebugButton(0.284f, "Add ring to planet", OnAddRingToPlanetButton, true, MyPluginTexts.TOOLTIPS.ADMIN_ADD_RING_BUTTON);

            m_currentPosition.Y += 0.003f;

            m_removeRingButton = CreateDebugButton(0.284f, "Remove ring from planet", OnRemoveRingFromPlanetButton, true, MyPluginTexts.TOOLTIPS.ADMIN_REMOVE_RING_BUTTON);

            m_currentPosition.Y += 0.003f;

            m_teleportToRingButton         = CreateDebugButton(0.284f, "Teleport to ring", OnTeleportToRingButton, true, MyPluginTexts.TOOLTIPS.ADMIN_TP_RING_BUTTON);
            m_teleportToRingButton.Enabled = false;

            Controls.Add(m_planetListBox);

            m_ringAngleXSlider.Enabled     = false;
            m_ringAngleYSlider.Enabled     = false;
            m_ringAngleZSlider.Enabled     = false;
            m_ringDistanceSlider.Enabled   = false;
            m_ringWidthSlider.Enabled      = false;
            m_ringRoidSizeSlider.Enabled   = false;
            m_addRingButton.Enabled        = false;
            m_removeRingButton.Enabled     = false;
            m_teleportToRingButton.Enabled = false;

            LoadPlanetsInWorld();
        }
Esempio n. 3
0
        public override void RecreateControls(bool constructor)
        {
            base.RecreateControls(constructor);

            var caption = AddCaption("SEWorldGenPlugin world settings");

            caption.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP;
            caption.Position    = new Vector2(0, SIZE.Y / -2 + PADDING.Y);

            MyGuiControlButton OkButton = new MyGuiControlButton(null, VRage.Game.MyGuiControlButtonStyleEnum.Default, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM, null, VRage.MyTexts.Get(MyCommonTexts.Ok), 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiControlHighlightType.WHEN_ACTIVE, OkButtonClicked);

            OkButton.Position = new Vector2(0, SIZE.Y / 2 - PADDING.Y);
            Controls.Add(OkButton);

            MyGuiControlSeparatorList separators = new MyGuiControlSeparatorList();

            separators.AddHorizontal(SIZE / -2 + PADDING + new Vector2(0, caption.Size.Y) + CHILD_MARGINS_VERT, SIZE.X - 2 * PADDING.X);
            separators.AddHorizontal(new Vector2(SIZE.X / -2 + PADDING.X, SIZE.Y / 2 - PADDING.Y - OkButton.Size.Y) - CHILD_MARGINS_VERT, SIZE.X - 2 * PADDING.X);
            Controls.Add(separators);

            MyGuiControlParentTableLayout parent = new MyGuiControlParentTableLayout(2);

            parent.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;

            //Generate rows for parent layout containing settings

            var systemGenLabel       = new MyGuiControlLabel(null, null, "Generator mode");
            var asteroidGenLabel     = new MyGuiControlLabel(null, null, "Asteroid generator mode");
            var enableVanillaLabel   = new MyGuiControlLabel(null, null, "Use vanilla planets");
            var planetCountLabel     = new MyGuiControlLabel(null, null, "Planet count");
            var asteroidCountLabel   = new MyGuiControlLabel(null, null, "Asteroid object count");
            var oribtDistanceLabel   = new MyGuiControlLabel(null, null, "Orbit distances");
            var asteroidDensityLabel = new MyGuiControlLabel(null, null, "Asteroid density");
            var worldSizeLabel       = new MyGuiControlLabel(null, null, "World size");
            var planetSizeCapLabel   = new MyGuiControlLabel(null, null, "Planet size cap");
            var planetSizeMultLabel  = new MyGuiControlLabel(null, null, "Planet size multiplier");
            var planetMoonPropLabel  = new MyGuiControlLabel(null, null, "Planet moon probability");
            var planetRingPropLabel  = new MyGuiControlLabel(null, null, "Planet ring probability");
            var planetMoonCountLabel = new MyGuiControlLabel(null, null, "Planet moon count");
            var planetGpsModeLabel   = new MyGuiControlLabel(null, null, "Planet gps mode");
            var moonGpsModeLabel     = new MyGuiControlLabel(null, null, "Moon gps mode");
            var asteroidGpsModeLabel = new MyGuiControlLabel(null, null, "Asteroid gps mode");

            m_systemGeneratorCombo = new MyGuiControlCombobox(null, null);
            m_systemGeneratorCombo.SetToolTip(MyPluginTexts.TOOLTIPS.SYS_GEN_MODE_COMBO);
            m_systemGeneratorCombo.AddItem((long)SystemGenerationMethod.FULL_RANDOM, "Full random");
            m_systemGeneratorCombo.AddItem((long)SystemGenerationMethod.UNIQUE, "Unique");
            m_systemGeneratorCombo.AddItem((long)SystemGenerationMethod.MANDATORY_FIRST, "Mandatory first");
            m_systemGeneratorCombo.AddItem((long)SystemGenerationMethod.MANDATORY_ONLY, "Mandatory only");

            m_systemGeneratorCombo.Size = new Vector2(0.25f, m_systemGeneratorCombo.Size.Y);

            parent.AddTableRow(systemGenLabel, m_systemGeneratorCombo);

            m_asteroidGeneratorCombo = new MyGuiControlCombobox();
            m_asteroidGeneratorCombo.SetToolTip(MyPluginTexts.TOOLTIPS.ASTEROID_GEN_MODE_COMBO);
            m_asteroidGeneratorCombo.AddItem((long)AsteroidGenerationMethod.PLUGIN, "Plugin");
            m_asteroidGeneratorCombo.AddItem((long)AsteroidGenerationMethod.VANILLA, "Vanilla");
            m_asteroidGeneratorCombo.AddItem((long)AsteroidGenerationMethod.BOTH, "Combined");
            m_asteroidGeneratorCombo.ItemSelected += delegate
            {
                m_asteroidGPSModeCombo.Enabled  = m_asteroidGPSModeCombo.GetSelectedIndex() != (long)AsteroidGenerationMethod.VANILLA;
                m_asteroidDensitySlider.Enabled = m_asteroidGPSModeCombo.GetSelectedIndex() != (long)AsteroidGenerationMethod.VANILLA;
            };

            m_asteroidGeneratorCombo.Size = new Vector2(0.25f, m_asteroidGeneratorCombo.Size.Y);

            parent.AddTableRow(asteroidGenLabel, m_asteroidGeneratorCombo);

            m_enableVanillaPlanetsCheckbox = new MyGuiControlCheckbox();
            m_enableVanillaPlanetsCheckbox.SetToolTip(MyPluginTexts.TOOLTIPS.VANILLA_PLANETS_CHECK);

            parent.AddTableRow(enableVanillaLabel, m_enableVanillaPlanetsCheckbox);

            m_planetCountSlider = new MyGuiControlRangedSlider(0, 50, 5, 15, true, width: 0.25f);
            m_planetCountSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_COUNT_SLIDER);

            parent.AddTableRow(planetCountLabel, m_planetCountSlider);

            m_asteroidCountSlider = new MyGuiControlRangedSlider(0, 50, 5, 15, true, width: 0.25f);
            m_asteroidCountSlider.SetToolTip(MyPluginTexts.TOOLTIPS.ASTEROID_COUNT_SLIDER);

            parent.AddTableRow(asteroidCountLabel, m_asteroidCountSlider);

            m_orbitDistancesSlider = new MyGuiControlRangedSlider(100, 10000000, 40000, 1000000, width: 0.25f, useLogScale: true);
            m_orbitDistancesSlider.SetToolTip(MyPluginTexts.TOOLTIPS.ORBIT_DISTANCE_SLIDER);

            parent.AddTableRow(oribtDistanceLabel, m_orbitDistancesSlider);

            m_asteroidDensitySlider = new MyGuiControlClickableSlider(minValue: 0, maxValue: 1, defaultValue: 0.6f, width: 0.25f, showLabel: true);
            m_asteroidDensitySlider.SetToolTip(MyPluginTexts.TOOLTIPS.ASTEROID_DENS_SLIDER);

            parent.AddTableRow(asteroidDensityLabel, m_asteroidDensitySlider);

            m_worldSizeSlider = new MyGuiControlClickableSlider(minValue: -1, maxValue: 1000000000, defaultValue: -1, width: 0.25f, showLabel: true, labelSuffix: " Km");
            m_worldSizeSlider.SetToolTip(MyPluginTexts.TOOLTIPS.WORLD_SIZE_SLIDER);
            m_worldSizeSlider.OnLabelUpdate += delegate(MyGuiControlLabel l)
            {
                if (m_worldSizeSlider.Value < 0)
                {
                    l.Text = "Infinite";
                }
            };

            parent.AddTableRow(worldSizeLabel, m_worldSizeSlider);

            m_planetSizeCapSlider = new MyGuiControlClickableSlider(minValue: 1, maxValue: 2400000, defaultValue: 1200000, intValue: true, width: 0.25f, showLabel: true, labelSuffix: " m");
            m_planetSizeCapSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_SIZE_CAP_SLIDER);

            parent.AddTableRow(planetSizeCapLabel, m_planetSizeCapSlider);

            m_planetSizeMultSlider = new MyGuiControlClickableSlider(minValue: 0.1f, maxValue: 10, defaultValue: 2, width: 0.25f, showLabel: true);
            m_planetSizeMultSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_SIZE_MULT);

            parent.AddTableRow(planetSizeMultLabel, m_planetSizeMultSlider);

            m_planetMoonBasePropSlider = new MyGuiControlClickableSlider(minValue: 0f, maxValue: 1f, defaultValue: 0.5f, width: 0.25f, showLabel: true);
            m_planetMoonBasePropSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_MOON_PROP);

            parent.AddTableRow(planetMoonPropLabel, m_planetMoonBasePropSlider);

            m_planetRingBasePropSlider = new MyGuiControlClickableSlider(minValue: 0f, maxValue: 1f, defaultValue: 0.5f, width: 0.25f, showLabel: true);
            m_planetRingBasePropSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_RING_PROP);

            parent.AddTableRow(planetRingPropLabel, m_planetRingBasePropSlider);

            m_planetMoonMinMaxSlider = new MyGuiControlRangedSlider(1, 50, 1, 25, true, showLabel: true, width: 0.25f);
            m_planetMoonMinMaxSlider.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_MOON_COUNT);

            parent.AddTableRow(planetMoonCountLabel, m_planetMoonMinMaxSlider);

            m_planetGPSModeCombo = new MyGuiControlCombobox();
            m_planetGPSModeCombo.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_GPS_COMBO);
            m_planetGPSModeCombo.AddItem((long)MyGPSGenerationMode.DISCOVERY, "Discovery");
            m_planetGPSModeCombo.AddItem((long)MyGPSGenerationMode.PERSISTENT, "Persistent");
            m_planetGPSModeCombo.AddItem((long)MyGPSGenerationMode.NONE, "None");

            m_planetGPSModeCombo.Size = new Vector2(0.25f, m_planetGPSModeCombo.Size.Y);

            parent.AddTableRow(planetGpsModeLabel, m_planetGPSModeCombo);

            m_moonGPSModeCombo = new MyGuiControlCombobox();
            m_moonGPSModeCombo.SetToolTip(MyPluginTexts.TOOLTIPS.MOON_GPS_COMBO);
            m_moonGPSModeCombo.AddItem((long)MyGPSGenerationMode.DISCOVERY, "Discovery");
            m_moonGPSModeCombo.AddItem((long)MyGPSGenerationMode.PERSISTENT, "Persistent");
            m_moonGPSModeCombo.AddItem((long)MyGPSGenerationMode.NONE, "None");

            m_moonGPSModeCombo.Size = new Vector2(0.25f, m_moonGPSModeCombo.Size.Y);

            parent.AddTableRow(moonGpsModeLabel, m_moonGPSModeCombo);

            m_asteroidGPSModeCombo = new MyGuiControlCombobox();
            m_asteroidGPSModeCombo.SetToolTip(MyPluginTexts.TOOLTIPS.ASTEROID_GPS_COMBO);
            m_asteroidGPSModeCombo.AddItem((long)MyGPSGenerationMode.DISCOVERY, "Discovery");
            m_asteroidGPSModeCombo.AddItem((long)MyGPSGenerationMode.PERSISTENT, "Persistent");
            m_asteroidGPSModeCombo.AddItem((long)MyGPSGenerationMode.NONE, "None");

            m_asteroidGPSModeCombo.Size = new Vector2(0.25f, m_asteroidGPSModeCombo.Size.Y);

            parent.AddTableRow(asteroidGpsModeLabel, m_asteroidGPSModeCombo);

            parent.ApplyRows();

            Vector2 start = SIZE / -2 + PADDING + new Vector2(0, caption.Size.Y) + CHILD_MARGINS_VERT * 2;
            Vector2 end   = new Vector2(SIZE.X / 2 - PADDING.X, SIZE.Y / 2 - PADDING.Y - OkButton.Size.Y) - CHILD_MARGINS_VERT * 2;

            MyGuiControlScrollablePanel scrollPane = new MyGuiControlScrollablePanel(parent);

            scrollPane.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            scrollPane.ScrollbarVEnabled = true;
            scrollPane.Size     = end - start;
            scrollPane.Position = start;

            Controls.Add(scrollPane);
        }
        public bool CreateSpawnMenu(float usableWidth, MyGuiControlParentTableLayout parentTable, MyPluginAdminMenu adminScreen)
        {
            m_parentScreen = adminScreen;

            if (m_fetchedStarSytem == null)
            {
                MyGuiControlRotatingWheel loadingWheel = new MyGuiControlRotatingWheel(position: Vector2.Zero);
                loadingWheel.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;

                adminScreen.Controls.Add(loadingWheel);

                MyStarSystemGenerator.Static.GetStarSystem(delegate(MyObjectBuilder_SystemData starSystem)
                {
                    m_fetchedStarSytem         = starSystem;
                    adminScreen.ShouldRecreate = true;
                });
                return(true);
            }

            MyGuiControlLabel label = new MyGuiControlLabel(null, null, "Parent objects");

            parentTable.AddTableRow(label);

            m_parentObjectListBox = new MyGuiControlListbox();
            m_parentObjectListBox.Add(new MyGuiControlListbox.Item(new System.Text.StringBuilder("System center"), userData: m_fetchedStarSytem.CenterObject));
            m_parentObjectListBox.VisibleRowsCount = 8;
            m_parentObjectListBox.Size             = new Vector2(usableWidth, m_parentObjectListBox.Size.Y);
            m_parentObjectListBox.SelectAllVisible();
            m_parentObjectListBox.ItemsSelected += OnParentItemClicked;

            foreach (var obj in m_fetchedStarSytem.CenterObject.GetAllChildren())
            {
                if (obj.Type == MySystemObjectType.PLANET || obj.Type == MySystemObjectType.MOON)
                {
                    m_parentObjectListBox.Add(new MyGuiControlListbox.Item(new System.Text.StringBuilder(obj.DisplayName), userData: obj));
                }
            }

            parentTable.AddTableRow(m_parentObjectListBox);

            parentTable.AddTableSeparator();

            m_radiusSlider               = new MyGuiControlClickableSlider(width: usableWidth - 0.1f, minValue: 0, maxValue: 1, labelSuffix: " km", showLabel: true);
            m_radiusSlider.Enabled       = false;
            m_radiusSlider.ValueChanged += delegate
            {
                RenderSpherePreview(GetDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Radius"));
            parentTable.AddTableRow(m_radiusSlider);

            m_widthSlider               = new MyGuiControlClickableSlider(null, 0, 1, usableWidth - 0.1f, 0.5f, showLabel: true, labelSuffix: " km");
            m_widthSlider.Enabled       = false;
            m_widthSlider.ValueChanged += delegate
            {
                RenderSpherePreview(GetDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Width"));
            parentTable.AddTableRow(m_widthSlider);

            m_asteroidSizesSlider         = new MyGuiControlRangedSlider(32, 1024, 32, 1024, true, width: usableWidth - 0.1f, showLabel: true);
            m_asteroidSizesSlider.Enabled = false;

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Asteroid size range"));
            parentTable.AddTableRow(m_asteroidSizesSlider);

            m_nameBox      = new MyGuiControlTextbox();
            m_nameBox.Size = new Vector2(usableWidth, m_nameBox.Size.Y);

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Name"));
            parentTable.AddTableRow(m_nameBox);

            m_spawnButton = MyPluginGuiHelper.CreateDebugButton(usableWidth, "Spawn sphere", delegate
            {
                StringBuilder name = new StringBuilder();
                m_nameBox.GetText(name);
                if (name.Length < 4)
                {
                    MyPluginGuiHelper.DisplayError("Name must be at least 4 letters long", "Error");
                    return;
                }

                MySystemAsteroids instance;
                MyAsteroidSphereData data;
                GenerateData(out instance, out data);

                if (instance == null || data == null)
                {
                    MyPluginGuiHelper.DisplayError("Could not generate asteroid sphere. No data found.", "Error");
                    return;
                }

                MyAsteroidSphereProvider.Static.AddInstance(instance, data, delegate(bool success)
                {
                    if (!success)
                    {
                        MyPluginGuiHelper.DisplayError("Sphere could not be added, because an object with the same id already exists. This error should not occour, so please try again.", "Error");
                    }
                    else
                    {
                        MyPluginGuiHelper.DisplayMessage("Sphere was created successfully.", "Success");
                        m_parentScreen.ForceFetchStarSystem = true;
                        m_parentScreen.ShouldRecreate       = true;
                    }
                });
            });

            parentTable.AddTableSeparator();

            parentTable.AddTableRow(m_spawnButton);

            return(true);
        }
Esempio n. 5
0
        /// <summary>
        /// Builds the plugin settings controls from top to bottom.
        /// </summary>
        public void BuildControls()
        {
            Vector2 vector = new Vector2(50f) / MyGuiConstants.GUI_OPTIMAL_SIZE;
            float   x2     = 0.209375018f;
            int     mod    = m_isNewGame ? 6 : 0;

            AddCaption("SEWorldGenPlugin Settings", null, new Vector2(0f, 0.003f));

            MyGuiControlParent parent = new MyGuiControlParent(null, new Vector2(base.Size.Value.X - vector.X * 2f, 0.052f * (15 + mod)));

            parent.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;

            MyGuiControlSeparatorList myGuiControlSeparatorList = new MyGuiControlSeparatorList();

            myGuiControlSeparatorList.AddHorizontal(new Vector2(0f, 0f) - new Vector2(m_size.Value.X * 0.835f / 2f, m_size.Value.Y / 2f - 0.075f), m_size.Value.X * 0.835f);
            Controls.Add(myGuiControlSeparatorList);
            MyGuiControlSeparatorList myGuiControlSeparatorList2 = new MyGuiControlSeparatorList();

            myGuiControlSeparatorList2.AddHorizontal(new Vector2(0f, 0f) - new Vector2(m_size.Value.X * 0.835f / 2f, (0f - m_size.Value.Y) / 2f + 0.123f), m_size.Value.X * 0.835f);
            Controls.Add(myGuiControlSeparatorList2);

            m_useGlobalSettignsLabel       = MakeLabel("Use global Config");
            m_useSemiRandomGenerationLabel = MakeLabel("Use all planets");
            m_useVanillaPlanetsLabel       = MakeLabel("Use vanilla planets");
            m_planetsOnlyOnceLabel         = MakeLabel("Generate Planets Once");
            m_moonsOnlyOnceLabel           = MakeLabel("Generate Moons Once");
            m_planetGpsLabel         = MakeLabel("Create GPS for Planets");
            m_moonGpsLabel           = MakeLabel("Create GPS for Moons");
            m_beltGpsLabel           = MakeLabel("Create GPS for Belts");
            m_ringGpsLabel           = MakeLabel("Create GPS for Rings");
            m_asteroidGeneratorLabel = MakeLabel("Asteroid generator");
            m_asteroidDensityLabel   = MakeLabel("Asteroid density");
            m_objAmountLabel         = MakeLabel("Objects in System");
            m_orbDistanceLabel       = MakeLabel("Average Orbit distance");
            m_sizeMultiplierLabel    = MakeLabel("Planet size multiplier");
            m_sizeCapLabel           = MakeLabel("Planet size cap");
            m_moonProbLabel          = MakeLabel("Moon spawn probability");
            m_ringWidthLabel         = MakeLabel("Average ring width");
            m_ringProbLabel          = MakeLabel("Ring spawn probability");
            m_beltHeightLabel        = MakeLabel("Average belt height");
            m_beltProbLabel          = MakeLabel("Belt spawn probability");
            m_worldSizeLabel         = MakeLabel("World Size");

            m_useGlobalCheck = new MyGuiControlCheckbox();
            m_useSemiRandomGenerationCheck = new MyGuiControlCheckbox();
            m_useVanillaPlanetsCheck       = new MyGuiControlCheckbox();
            m_planetsOnlyOnceCheck         = new MyGuiControlCheckbox();
            m_moonsOnlyOnceCheck           = new MyGuiControlCheckbox();
            m_planetGpsCheck         = new MyGuiControlCheckbox();
            m_moonGpsCheck           = new MyGuiControlCheckbox();
            m_beltGpsCheck           = new MyGuiControlCheckbox();
            m_ringGpsCheck           = new MyGuiControlCheckbox();
            m_asteroidGeneratorCombo = new MyGuiControlCombobox(null, new Vector2(x2, 0.04f));
            x2 += 0.05f;
            m_asteroidDensitySlider = new MyGuiControlClickableSlider(Vector2.Zero, 0.1f, 1f, x2, 0.6f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ROID_DENS_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
            m_objAmountSlider       = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 100f, x2, 15f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SYS_OBJ_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_orbDistanceSlider     = new MyGuiControlClickableSlider(Vector2.Zero, 500f, 100000f, x2, 50500f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.ORB_DIST_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_sizeMultiplierSlider  = new MyGuiControlClickableSlider(Vector2.Zero, 1f, 10f, x2, 2f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_MUL_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_sizeCapSlider         = new MyGuiControlClickableSlider(Vector2.Zero, 120f, 2400f, x2, 1200f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.SIZE_CAP_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_moonProbSlider        = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.MOON_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
            m_ringWidthSlider       = new MyGuiControlClickableSlider(Vector2.Zero, 10000f, 100000f, x2, 15000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_WIDTH_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_ringProbSlider        = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.5f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.RING_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
            m_beltHeightSlider      = new MyGuiControlClickableSlider(Vector2.Zero, 4000f, 40000f, x2, 22000f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_HEIGHT_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);
            m_beltProbSlider        = new MyGuiControlClickableSlider(Vector2.Zero, 0f, 1f, x2, 0.4f, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.BELT_PROB_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: false);
            m_worldSizeSlider       = new MyGuiControlClickableSlider(Vector2.Zero, -1f, 1000000 - 1, x2, -1, null, null, 0, 0.8f, 0.05f, "White", MyPluginTexts.TOOLTIPS.WORLD_SIZE_SLIDER, MyGuiControlSliderStyleEnum.Default, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, intValue: true);

            m_asteroidDensityValue             = MakeLabel(String.Format("{0:0.00}", m_asteroidDensitySlider.Value));
            m_asteroidDensityValue.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_objAmountValue                  = MakeLabel(m_objAmountSlider.Value.ToString());
            m_objAmountValue.OriginAlign      = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_orbDistanceValue                = MakeLabel(m_orbDistanceSlider.Value.ToString());
            m_orbDistanceValue.OriginAlign    = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_sizeMultiplierValue             = MakeLabel(m_sizeMultiplierSlider.Value.ToString());
            m_sizeMultiplierValue.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_sizeCapValue                = MakeLabel(m_sizeCapSlider.Value.ToString());
            m_sizeCapValue.OriginAlign    = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_moonProbValue               = MakeLabel(String.Format("{0:0.00}", m_moonProbSlider.Value));
            m_moonProbValue.OriginAlign   = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_ringWidthValue              = MakeLabel(m_ringWidthSlider.Value.ToString());
            m_ringWidthValue.OriginAlign  = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_ringProbValue               = MakeLabel(m_ringProbSlider.Value.ToString());
            m_ringProbValue.OriginAlign   = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_beltHeightValue             = MakeLabel(m_beltHeightSlider.Value.ToString());
            m_beltHeightValue.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;
            m_beltProbValue               = MakeLabel(String.Format("{0:0.00}", m_beltProbSlider.Value));
            m_beltProbValue.OriginAlign   = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;

            m_useGlobalCheck.SetToolTip(MyPluginTexts.TOOLTIPS.USE_GLOBAL_CHECK);
            m_useGlobalCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_useSemiRandomGenerationCheck.SetToolTip(MyPluginTexts.TOOLTIPS.USE_SEMI_RAND_GEN_CHECK);
            m_useSemiRandomGenerationCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_useVanillaPlanetsCheck.SetToolTip(MyPluginTexts.TOOLTIPS.USE_VANILLA_PLANETS);
            m_useVanillaPlanetsCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_planetsOnlyOnceCheck.SetToolTip(MyPluginTexts.TOOLTIPS.PLANETS_ONLY_ONCE);
            m_planetsOnlyOnceCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_moonsOnlyOnceCheck.SetToolTip(MyPluginTexts.TOOLTIPS.MOONS_ONLY_ONCE);
            m_moonsOnlyOnceCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_planetGpsCheck.SetToolTip(MyPluginTexts.TOOLTIPS.PLANET_GPSL_CHECK);
            m_planetGpsCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_moonGpsCheck.SetToolTip(MyPluginTexts.TOOLTIPS.MOON_GPS_CHECK);
            m_moonGpsCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_beltGpsCheck.SetToolTip(MyPluginTexts.TOOLTIPS.BELT_GPS_CHECK);
            m_beltGpsCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_ringGpsCheck.SetToolTip(MyPluginTexts.TOOLTIPS.RING_GPS_CHECK);
            m_ringGpsCheck.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_asteroidGeneratorCombo.SetToolTip(MyPluginTexts.TOOLTIPS.ROID_GEN_COMBO);
            m_asteroidGeneratorCombo.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_worldSizeValue             = MakeLabel(m_worldSizeSlider.Value.ToString());
            m_worldSizeValue.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER;

            m_asteroidGeneratorCombo.AddItem(0L, "Plugin");
            m_asteroidGeneratorCombo.AddItem(1L, "Vanilla");
            m_asteroidGeneratorCombo.AddItem(2L, "Mixed");
            m_asteroidGeneratorCombo.SelectItemByIndex(0);

            m_asteroidGeneratorCombo.ItemSelected += delegate
            {
                bool val = m_asteroidGeneratorCombo.GetSelectedKey() == 01L;

                m_beltGpsCheck.Enabled          = !val;
                m_ringProbSlider.Enabled        = !val;
                m_ringWidthSlider.Enabled       = !val;
                m_beltHeightSlider.Enabled      = !val;
                m_beltProbSlider.Enabled        = !val;
                m_asteroidDensitySlider.Enabled = !val;
            };

            m_asteroidDensitySlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_asteroidDensitySlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_asteroidDensityValue.Text = String.Format("{0:0.00}", s.Value);
            });
            m_objAmountSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_objAmountSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_objAmountValue.Text = s.Value.ToString();
            });
            m_orbDistanceSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_orbDistanceSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_orbDistanceValue.Text = s.Value.ToString();
            });
            m_sizeMultiplierSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_sizeMultiplierSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_sizeMultiplierValue.Text = s.Value.ToString();
            });
            m_sizeCapSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_sizeCapSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_sizeCapValue.Text = s.Value.ToString();
            });
            m_moonProbSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_moonProbSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_moonProbValue.Text = String.Format("{0:0.00}", s.Value);
            });
            m_ringWidthSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringWidthSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_ringWidthValue.Text = s.Value.ToString();
            });
            m_ringProbSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_ringProbSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_ringProbValue.Text = String.Format("{0:0.00}", s.Value);
            });
            m_beltHeightSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_beltHeightSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_beltHeightValue.Text = s.Value.ToString();
            });
            m_beltProbSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_beltProbSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                m_beltProbValue.Text = String.Format("{0:0.000}", s.Value);
            });
            m_worldSizeSlider.ValueChanged = (Action <MyGuiControlSlider>) Delegate.Combine(m_worldSizeSlider.ValueChanged, (Action <MyGuiControlSlider>) delegate(MyGuiControlSlider s)
            {
                if (s.Value < 0)
                {
                    m_worldSizeValue.Text = "Infinite";
                }
                else
                {
                    m_worldSizeValue.Text = s.Value.ToString();
                }
            });
            m_useGlobalCheck.IsCheckedChanged = (Action <MyGuiControlCheckbox>) Delegate.Combine(m_useGlobalCheck.IsCheckedChanged, (Action <MyGuiControlCheckbox>) delegate(MyGuiControlCheckbox s)
            {
                m_useSemiRandomGenerationCheck.Enabled = !s.IsChecked;
                m_useVanillaPlanetsCheck.Enabled       = !s.IsChecked;
                m_planetsOnlyOnceCheck.Enabled         = !s.IsChecked;
                m_moonsOnlyOnceCheck.Enabled           = !s.IsChecked;
                m_objAmountSlider.Enabled        = !s.IsChecked;
                m_asteroidDensitySlider.Enabled  = !s.IsChecked;
                m_asteroidGeneratorCombo.Enabled = !s.IsChecked;
                m_orbDistanceSlider.Enabled      = !s.IsChecked;
                m_sizeMultiplierSlider.Enabled   = !s.IsChecked;
                m_sizeCapSlider.Enabled          = !s.IsChecked;
                m_moonProbSlider.Enabled         = !s.IsChecked;
                m_ringWidthSlider.Enabled        = !s.IsChecked;
                m_ringProbSlider.Enabled         = !s.IsChecked;
                m_beltHeightSlider.Enabled       = !s.IsChecked;
                m_beltProbSlider.Enabled         = !s.IsChecked;
                m_planetGpsCheck.Enabled         = !s.IsChecked;
                m_moonGpsCheck.Enabled           = !s.IsChecked;
                m_beltGpsCheck.Enabled           = !s.IsChecked;
                m_ringGpsCheck.Enabled           = !s.IsChecked;
                m_worldSizeSlider.Enabled        = !s.IsChecked && m_isNewGame;
            });

            parent.Controls.Add(m_useGlobalSettignsLabel);
            parent.Controls.Add(m_useGlobalCheck);

            if (m_isNewGame)
            {
                parent.Controls.Add(m_useSemiRandomGenerationLabel);
                parent.Controls.Add(m_useSemiRandomGenerationCheck);

                parent.Controls.Add(m_useVanillaPlanetsLabel);
                parent.Controls.Add(m_useVanillaPlanetsCheck);

                parent.Controls.Add(m_planetsOnlyOnceLabel);
                parent.Controls.Add(m_planetsOnlyOnceCheck);

                parent.Controls.Add(m_moonsOnlyOnceLabel);
                parent.Controls.Add(m_moonsOnlyOnceCheck);

                parent.Controls.Add(m_planetGpsLabel);
                parent.Controls.Add(m_planetGpsCheck);

                parent.Controls.Add(m_moonGpsLabel);
                parent.Controls.Add(m_moonGpsCheck);
            }

            parent.Controls.Add(m_beltGpsLabel);
            parent.Controls.Add(m_beltGpsCheck);

            parent.Controls.Add(m_ringGpsLabel);
            parent.Controls.Add(m_ringGpsCheck);

            parent.Controls.Add(m_asteroidGeneratorLabel);
            parent.Controls.Add(m_asteroidGeneratorCombo);

            parent.Controls.Add(m_asteroidDensityLabel);
            parent.Controls.Add(m_asteroidDensitySlider);
            parent.Controls.Add(m_asteroidDensityValue);

            parent.Controls.Add(m_objAmountLabel);
            parent.Controls.Add(m_objAmountSlider);
            parent.Controls.Add(m_objAmountValue);

            parent.Controls.Add(m_orbDistanceLabel);
            parent.Controls.Add(m_orbDistanceSlider);
            parent.Controls.Add(m_orbDistanceValue);

            parent.Controls.Add(m_sizeMultiplierLabel);
            parent.Controls.Add(m_sizeMultiplierSlider);
            parent.Controls.Add(m_sizeMultiplierValue);

            parent.Controls.Add(m_sizeCapLabel);
            parent.Controls.Add(m_sizeCapSlider);
            parent.Controls.Add(m_sizeCapValue);

            parent.Controls.Add(m_moonProbLabel);
            parent.Controls.Add(m_moonProbSlider);
            parent.Controls.Add(m_moonProbValue);

            parent.Controls.Add(m_ringWidthLabel);
            parent.Controls.Add(m_ringWidthSlider);
            parent.Controls.Add(m_ringWidthValue);

            parent.Controls.Add(m_ringProbLabel);
            parent.Controls.Add(m_ringProbSlider);
            parent.Controls.Add(m_ringProbValue);

            parent.Controls.Add(m_beltHeightLabel);
            parent.Controls.Add(m_beltHeightSlider);
            parent.Controls.Add(m_beltHeightValue);

            parent.Controls.Add(m_beltProbLabel);
            parent.Controls.Add(m_beltProbSlider);
            parent.Controls.Add(m_beltProbValue);

            parent.Controls.Add(m_worldSizeLabel);
            parent.Controls.Add(m_worldSizeSlider);
            parent.Controls.Add(m_worldSizeValue);

            //Vector2 start = (new Vector2(0f, (!m_isNewGame) ? 0.052f : 0.026f) - new Vector2(m_size.Value.X * 0.835f / 2f, m_size.Value.Y / 2f - 0.075f)) + (new Vector2(0f, m_useGlobalSettignsLabel.Size.Y));
            Vector2 start   = Vector2.Zero - new Vector2(parent.Size.X / 2f, parent.Size.Y / 2f - 0.028f);
            Vector2 offset  = new Vector2(0f, 0.050f);//0.028f
            Vector2 offset2 = new Vector2(m_orbDistanceLabel.Size.X * 1.5f, 0f);
            Vector2 offset3 = new Vector2(0.4973214f, 0f);
            int     m       = 0;

            m_useGlobalSettignsLabel.Position = start + offset * m++;
            m_useGlobalCheck.Position         = m_useGlobalSettignsLabel.Position + offset2;

            if (m_isNewGame)
            {
                m_useSemiRandomGenerationLabel.Position = start + offset * m++;
                m_useSemiRandomGenerationCheck.Position = m_useSemiRandomGenerationLabel.Position + offset2;

                m_useVanillaPlanetsLabel.Position = start + offset * m++;
                m_useVanillaPlanetsCheck.Position = m_useVanillaPlanetsLabel.Position + offset2;

                m_planetsOnlyOnceLabel.Position = start + offset * m++;
                m_planetsOnlyOnceCheck.Position = m_planetsOnlyOnceLabel.Position + offset2;

                m_moonsOnlyOnceLabel.Position = start + offset * m++;
                m_moonsOnlyOnceCheck.Position = m_moonsOnlyOnceLabel.Position + offset2;

                m_planetGpsLabel.Position = start + offset * m++;
                m_planetGpsCheck.Position = m_planetGpsLabel.Position + offset2;

                m_moonGpsLabel.Position = start + offset * m++;
                m_moonGpsCheck.Position = m_moonGpsLabel.Position + offset2;
            }

            m_beltGpsLabel.Position = start + offset * m++;
            m_beltGpsCheck.Position = m_beltGpsLabel.Position + offset2;

            m_ringGpsLabel.Position = start + offset * m++;
            m_ringGpsCheck.Position = m_ringGpsLabel.Position + offset2;

            m_asteroidGeneratorLabel.Position = start + offset * m++;
            m_asteroidGeneratorCombo.Position = m_asteroidGeneratorLabel.Position + offset2;

            m_asteroidDensityLabel.Position  = start + offset * m++;
            m_asteroidDensitySlider.Position = m_asteroidDensityLabel.Position + offset2;
            m_asteroidDensityValue.Position  = m_asteroidDensityLabel.Position + offset3;

            m_objAmountLabel.Position  = start + offset * m++;
            m_objAmountSlider.Position = m_objAmountLabel.Position + offset2;
            m_objAmountValue.Position  = m_objAmountLabel.Position + offset3;

            m_orbDistanceLabel.Position  = start + offset * m++;
            m_orbDistanceSlider.Position = m_orbDistanceLabel.Position + offset2;
            m_orbDistanceValue.Position  = m_orbDistanceLabel.Position + offset3;

            m_sizeMultiplierLabel.Position  = start + offset * m++;
            m_sizeMultiplierSlider.Position = m_sizeMultiplierLabel.Position + offset2;
            m_sizeMultiplierValue.Position  = m_sizeMultiplierLabel.Position + offset3;

            m_sizeCapLabel.Position  = start + offset * m++;
            m_sizeCapSlider.Position = m_sizeCapLabel.Position + offset2;
            m_sizeCapValue.Position  = m_sizeCapLabel.Position + offset3;

            m_moonProbLabel.Position  = start + offset * m++;
            m_moonProbSlider.Position = m_moonProbLabel.Position + offset2;
            m_moonProbValue.Position  = m_moonProbLabel.Position + offset3;

            m_ringWidthLabel.Position  = start + offset * m++;
            m_ringWidthSlider.Position = m_ringWidthLabel.Position + offset2;
            m_ringWidthValue.Position  = m_ringWidthLabel.Position + offset3;

            m_ringProbLabel.Position  = start + offset * m++;
            m_ringProbSlider.Position = m_ringProbLabel.Position + offset2;
            m_ringProbValue.Position  = m_ringProbLabel.Position + offset3;

            m_beltHeightLabel.Position  = start + offset * m++;
            m_beltHeightSlider.Position = m_beltHeightLabel.Position + offset2;
            m_beltHeightValue.Position  = m_beltHeightLabel.Position + offset3;

            m_beltProbLabel.Position  = start + offset * m++;
            m_beltProbSlider.Position = m_beltProbLabel.Position + offset2;
            m_beltProbValue.Position  = m_beltProbLabel.Position + offset3;

            m_worldSizeLabel.Position  = start + offset * m++;
            m_worldSizeSlider.Position = m_worldSizeLabel.Position + offset2;
            m_worldSizeValue.Position  = m_worldSizeLabel.Position + offset3;

            m_okButton = new MyGuiControlButton(null, VRage.Game.MyGuiControlButtonStyleEnum.Default, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, null, VRage.MyTexts.Get(MyCommonTexts.Ok), 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiControlHighlightType.WHEN_ACTIVE, OkButtonClicked);
            m_okButton.SetToolTip(VRage.MyTexts.GetString(MySpaceTexts.ToolTipOptionsSpace_Ok));
            m_okButton.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM;
            m_okButton.Position    = (m_size.Value / 2f - vector) * new Vector2(0f, 1f) + new Vector2(0f - 25f, 0f) / MyGuiConstants.GUI_OPTIMAL_SIZE;

            MyGuiControlScrollablePanel scrollPane = new MyGuiControlScrollablePanel(parent);

            scrollPane.OriginAlign       = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;
            scrollPane.ScrollbarVEnabled = true;
            scrollPane.Size     = new Vector2(base.Size.Value.X - vector.X * 2f - 0.035f, 0.74f);
            scrollPane.Position = new Vector2(-0.27f, -0.394f);

            if (!m_isNewGame)
            {
                m_worldSizeSlider.Enabled = false;
            }

            Controls.Add(m_okButton);
            Controls.Add(scrollPane);
        }
        /// <summary>
        /// Builds the menu to spawn planets
        /// </summary>
        /// <param name="table">Tablet to add editing elements to</param>
        private void CreatePlanetSpawnMenu(MyGuiControlParentTableLayout table)
        {
            var settings = MySettingsSession.Static.Settings.GeneratorSettings;

            MyGuiControlLabel defLabel = new MyGuiControlLabel(null, null, "Planet");

            table.AddTableRow(defLabel);

            m_planetDefList = new MyGuiControlListbox();
            m_planetDefList.VisibleRowsCount = 8;
            m_planetDefList.MultiSelect      = false;

            table.AddTableRow(m_planetDefList);

            table.AddTableSeparator();

            MyGuiControlLabel sizeLabel = new MyGuiControlLabel(null, null, "Planet size");

            table.AddTableRow(sizeLabel);

            m_planetSizeSlider = new MyGuiControlClickableSlider(null, 1f, settings.PlanetSettings.PlanetSizeCap, m_usableWidth - 0.1f, intValue: true, showLabel: true, labelSuffix: " m");
            m_planetSizeSlider.DefaultValue = Math.Min(120000, settings.PlanetSettings.PlanetSizeCap);
            m_planetSizeSlider.Value        = m_planetSizeSlider.DefaultValue.Value;
            m_planetSizeSlider.SetToolTip(MyPluginTexts.TOOLTIPS.ADMIN_PLANET_DIAM);

            table.AddTableRow(m_planetSizeSlider);

            table.AddTableSeparator();

            MyGuiControlLabel nameLabel = new MyGuiControlLabel(null, null, "Name");

            table.AddTableRow(nameLabel);

            m_nameBox      = new MyGuiControlTextbox();
            m_nameBox.Size = new Vector2(m_usableWidth, m_nameBox.Size.Y);
            m_nameBox.SetToolTip(MyPluginTexts.TOOLTIPS.ADMIN_NAME);

            table.AddTableRow(m_nameBox);

            table.AddTableSeparator();

            m_spawnPlanetButton = MyPluginGuiHelper.CreateDebugButton(m_usableWidth, "Spawn planet", delegate(MyGuiControlButton button)
            {
                OnSpawnPlanet();
            });
            m_spawnPlanetButton.Enabled = false;
            m_spawnPlanetButton.SetToolTip(MyPluginTexts.TOOLTIPS.ADMIN_PLANET_SPAWN);

            table.AddTableRow(m_spawnPlanetButton);

            m_spawnPlanetCoordsButton = MyPluginGuiHelper.CreateDebugButton(m_usableWidth, "Spawn planet at coordinates", delegate(MyGuiControlButton button)
            {
                OnSpawnPlanet(true);
            });
            m_spawnPlanetCoordsButton.Enabled = false;
            m_spawnPlanetCoordsButton.SetToolTip(MyPluginTexts.TOOLTIPS.ADMIN_PLANET_SPAWN_COORD);

            table.AddTableRow(m_spawnPlanetCoordsButton);

            m_planetDefList.ItemClicked += delegate(MyGuiControlListbox box)
            {
                if (box.SelectedItems[box.SelectedItems.Count - 1] != null)
                {
                    m_spawnPlanetButton.Enabled       = true;
                    m_spawnPlanetCoordsButton.Enabled = true;
                }
                else
                {
                    m_spawnPlanetButton.Enabled       = false;
                    m_spawnPlanetCoordsButton.Enabled = false;
                }
            };

            LoadPlanetDefs(m_planetDefList);
        }
        /// <summary>
        /// Generates the specific gui elements to set ring data and puts them into the parent table
        /// </summary>
        /// <param name="usableWidth">Usable width for gui elements</param>
        /// <param name="parentTable">Parent table</param>
        private void GenerateRingSettingElements(float usableWidth, MyGuiControlParentTableLayout parentTable)
        {
            m_radiusSlider               = new MyGuiControlClickableSlider(width: usableWidth - 0.1f, minValue: 0, maxValue: 1, labelSuffix: " km", showLabel: true);
            m_radiusSlider.Enabled       = false;
            m_radiusSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Radius"));
            parentTable.AddTableRow(m_radiusSlider);

            m_widthSlider               = new MyGuiControlClickableSlider(null, 0, 1, usableWidth - 0.1f, 0.5f, showLabel: true, labelSuffix: " km");
            m_widthSlider.Enabled       = false;
            m_widthSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Width"));
            parentTable.AddTableRow(m_widthSlider);

            m_heightSlider               = new MyGuiControlClickableSlider(null, 0, 1, usableWidth - 0.1f, 0.5f, showLabel: true, labelSuffix: " km");
            m_heightSlider.Enabled       = false;
            m_heightSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Height"));
            parentTable.AddTableRow(m_heightSlider);

            m_asteroidSizesSlider         = new MyGuiControlRangedSlider(32, 1024, 32, 1024, true, width: usableWidth - 0.1f, showLabel: true);
            m_asteroidSizesSlider.Enabled = false;

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Asteroid size range"));
            parentTable.AddTableRow(m_asteroidSizesSlider);

            m_angleXSlider               = new MyGuiControlClickableSlider(null, -90, 90, usableWidth - 0.1f, defaultValue: 0, intValue: true, showLabel: true, labelSuffix: "°");
            m_angleXSlider.Enabled       = false;
            m_angleXSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            m_angleYSlider               = new MyGuiControlClickableSlider(null, -90, 90, usableWidth - 0.1f, defaultValue: 0, intValue: true, showLabel: true, labelSuffix: "°");
            m_angleYSlider.Enabled       = false;
            m_angleYSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            m_angleZSlider               = new MyGuiControlClickableSlider(null, -90, 90, usableWidth - 0.1f, defaultValue: 0, intValue: true, showLabel: true, labelSuffix: "°");
            m_angleZSlider.Enabled       = false;
            m_angleZSlider.ValueChanged += delegate
            {
                UpdateRingVisual(GetAsteroidDataFromGui());
            };

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Angle X Axis"));
            parentTable.AddTableRow(m_angleXSlider);

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Angle Y Axis"));
            parentTable.AddTableRow(m_angleYSlider);

            parentTable.AddTableRow(new MyGuiControlLabel(null, null, "Angle Z Axis"));
            parentTable.AddTableRow(m_angleZSlider);
        }