/// <summary> /// Returns the admin menu creator for this asteroid object type. /// </summary> /// <returns>The admin menu creator or null, if it should not be added to the plugins admin spawn and edit menu</returns> public IMyAsteroidAdminMenuCreator GetAdminMenuCreator() { if (m_adminMenuCreator == null) { m_adminMenuCreator = CreateAdminMenuCreatorInstance(); } return(m_adminMenuCreator); }
/// <summary> /// Creates the sub menu for the currently selected system object, that contains the /// elements to edit it. /// </summary> private void BuildEditingSubMenu() { if (m_scrollTable != null) { Controls.Remove(m_scrollPane); } m_scrollTable = new MyGuiControlParentTableLayout(1, false, Vector2.Zero, m_usableWidth); m_scrollTable.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP; m_scrollTable.AddTableSeparator(); if (m_scrollTable == null) { m_scrollTable = new MyGuiControlParentTableLayout(1, false, Vector2.Zero, m_usableWidth); } else { m_scrollTable.ClearTable(); } m_currentAsteroidAdminMenu = null; if (m_selectedObject != null) { if (m_selectedObject.Type == MySystemObjectType.PLANET || m_selectedObject.Type == MySystemObjectType.MOON) { BuildPlanetEditingMenu(m_scrollTable, m_selectedObject as MySystemPlanet); m_scrollTable.AddTableSeparator(); CameraLookAt(m_selectedObject.CenterPosition, (float)(m_selectedObject as MySystemPlanet).Diameter * 1.5f); } else if (m_selectedObject.Type == MySystemObjectType.ASTEROIDS) { var asteroidObject = m_selectedObject as MySystemAsteroids; if (!MyAsteroidObjectsManager.Static.AsteroidObjectProviders.ContainsKey(asteroidObject.AsteroidTypeName)) { return; } var provider = MyAsteroidObjectsManager.Static.AsteroidObjectProviders[asteroidObject.AsteroidTypeName]; var creator = provider.GetAdminMenuCreator(); if (creator != null) { if (!creator.OnEditMenuSelectItem(m_usableWidth, m_scrollTable, this, asteroidObject, m_fetchedStarSytem)) { m_scrollTable.AddTableRow(new MyGuiControlLabel(null, null, "This object cant be edited.", font: "Red")); m_scrollTable.AddTableSeparator(); } m_currentAsteroidAdminMenu = creator; } } } m_scrollTable.ApplyRows(); var topCombo = GetCombo(); Vector2 start = m_systemObjectsBox.Position + new Vector2(-0.001f, MARGIN_VERT * 2 + m_systemObjectsBox.Size.Y); Vector2 end = new Vector2(topCombo.Size.X, 0.5f - MARGIN_VERT); m_scrollPane = new MyGuiControlScrollablePanel(m_scrollTable); m_scrollPane.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP; m_scrollPane.ScrollbarVEnabled = true; m_scrollPane.Size = end - start; m_scrollPane.Size = new Vector2(0.315f, m_scrollPane.Size.Y); m_scrollPane.Position = new Vector2(0, start.Y); Controls.Add(m_scrollPane); }