private void m_listbox_ItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs) { MyEditorGizmo.ClearSelection(); MyEntity entityToSelect = MyEntities.GetEntityById(new MyEntityIdentifier((uint)eventArgs.Key)); MyEditorGizmo.AddEntityToSelection(entityToSelect); }
public override bool Perform() { MyGuiManager.AddScreen(new MyGuiScreenEditorProgress(MyTextsWrapperEnum.LoadingPleaseWait, false)); MyEditorGizmo.ClearSelection(); MyEditor.Static.StartBackgroundThread(new Thread(new ThreadStart(MyGuiScreenGamePlay.Static.CreateRandomWorld))); return(true); }
/// <summary> /// Removes all entities - TODO - this will have to be unified in MyEntities.cs /// </summary> void RemoveAllEntities() { //MyEditor.Static.DeleteAllFromCollidingList(); MyEditor.Static.CollidingElements.Clear(); MyEntities.CollisionsElements.Clear(); MyEditorGizmo.ClearSelection(); MyEntities.CloseAll(false); MyVoxelMaps.RemoveAll(); }
void wayPointsListBox_ItemSelect(object sender, MyGuiControlListboxItemEventArgs eventArgs) { var selectedPath = MyWayPointGraph.StoredPaths[eventArgs.Key]; MyEditorGizmo.ClearSelection(); MyWayPointGraph.SelectedPath = selectedPath; MyEditorGizmo.AddEntitiesToSelection(MyWayPointGraph.SelectedPath.WayPoints); }
void OnPlayerStartFlagChange(MyGuiControlCheckbox sender) { if (!m_canUpdateValues) { return; } // Make sure there's only one start location per sector if (m_playerStart.Checked && (DummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) == 0) { foreach (var entity in MyEntities.GetEntities()) { var dummyPoint = entity as MyDummyPoint; if (dummyPoint != null && (dummyPoint.DummyFlags & MyDummyPointFlags.PLAYER_START) > 0) { MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.EntryPointAlreadyDefined, MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.Cancel, mbReturn => { if (mbReturn == MyGuiScreenMessageBoxCallbackEnum.YES) { MyEditorGizmo.ClearSelection(); MyEditorGizmo.AddEntityToSelection(dummyPoint); CloseScreen(); return; } else { // We want to enable multiple start dummies //m_playerStart.Checked = false; } })); } } } if (m_playerStart.Checked) { DummyPoint.DummyFlags |= MyDummyPointFlags.PLAYER_START; } else { DummyPoint.DummyFlags &= ~MyDummyPointFlags.PLAYER_START; } if (m_playerStart.Checked) { DummyPoint.DummyFlags |= MyDummyPointFlags.PLAYER_START; } else { DummyPoint.DummyFlags &= ~MyDummyPointFlags.PLAYER_START; } UpdateValues(); }
private void OnSelectGroup(MyGuiControlButton sender) { var group = GetFocusedGroup(); if (group != null && group.GetCount() > 0) { var container = group.GetContainer(); if (MyEditor.Static.IsEditingPrefabContainer() && MyEditor.Static.GetEditedPrefabContainer() == container) { MyEditorGizmo.AddEntitiesToSelection(group.GetEntities()); } else { var editorState = MyEditor.GetCurrentState(); var contextHelper = MyGuiContextMenuHelpers.GetEditorContextMenuHelper(editorState); // If exit/enter to prefab container available if (container != null && (editorState == MyEditorStateEnum.NOTHING_SELECTED || contextHelper.IsActionTypeAvailable(MyGuiContextMenuItemActionType.ENTER_PREFAB_CONTAINER) || contextHelper.IsActionTypeAvailable(MyGuiContextMenuItemActionType.EXIT_EDITING_MODE))) { // Switch to group container if (MyEditor.Static.IsEditingPrefabContainer()) { MyEditor.Static.ExitActivePrefabContainer(); } MyEditor.Static.EditPrefabContainer(container); if (MyEditor.Static.IsEditingPrefabContainer() && MyEditor.Static.GetEditedPrefabContainer() == container) { MyEditorGizmo.AddEntitiesToSelection(group.GetEntities()); } } else if (container == null) { if (MyEditor.Static.IsEditingPrefabContainer()) { MyEditor.Static.ExitActivePrefabContainer(); } MyEditorGizmo.ClearSelection(); MyEditorGizmo.AddEntitiesToSelection(group.GetEntities()); } else { MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, new StringBuilder("Can't select group."), new StringBuilder("Select Group Error"), MyTextsWrapperEnum.Ok, null)); } } } }
/// <summary> /// Create entities from action object builders /// </summary> void AddOrCreate() { MyEditorGizmo.ClearSelection(); // Once entities has been created in this action, they remain and if needed, are only removed/added to scene if (ActionEntities != null && ActionEntities.Count > 0) { foreach (MyEntity actionEntity in ActionEntities) { AddToScene(actionEntity); } } else { // If no ActionEntites are present, create them from provided object builders foreach (ObjectBuilderCreate crate in ActionObjectBuilders) { CreateFromObjectBuilder(crate.ObjectBuilder, crate.Matrix, crate.ScreenPosition); } } // Link the new entities and clean up waypoint vertices foreach (var e in ActionEntities) { e.Link(); } MyWayPointGraph.DeleteNullVerticesFromPaths(); // When copying a single waypoint, connect it to its source if (this is MyEditorActionEntityCopy && ActionEntities.Count == 1 && ActionEntities[0] is MyWayPoint) { var source = (this as MyEditorActionEntityCopy).SourceEntities[0] as MyWayPoint; if (source != null) { MyWayPoint.Connect(source, ActionEntities[0] as MyWayPoint); } } // When copying prefabs, connect snap points connections if (this is MyEditorActionEntityCopy) { MyEditor.Static.CopySnapPointLinks((this as MyEditorActionEntityCopy).SourceEntities, (this as MyEditorActionEntityCopy).RemapContext); } MyEditor.Static.IssueCheckAllCollidingObjects(); }
protected override void OnOkClick(MyGuiControlButton sender) { CloseScreen(); var focused = m_groupList.GetFocusedItem(); if (focused != null) { var group = focused.Tag as MyMwcObjectBuilder_ObjectGroup; IEnumerable <MyMwcObjectBuilder_PrefabBase> prefabs = group.GetPrefabBuilders(m_entities); IEnumerable <MyMwcObjectBuilder_Base> rootObjects = group.GetRootBuilders(m_entities); var objects3d = rootObjects.OfType <MyMwcObjectBuilder_Object3dBase>(); if (objects3d.Any()) { MyEditorGizmo.ClearSelection(); var basePos = MyCamera.Position + Matrix.Invert(MyCamera.ViewMatrix).Forward * 100; var firstPos = objects3d.First().PositionAndOrientation.Position; var offset = basePos - firstPos; foreach (var b in objects3d) { b.PositionAndOrientation.Position += offset; b.ClearEntityId(); MyEntity entity = MyEntities.CreateFromObjectBuilderAndAdd(null, b, b.PositionAndOrientation.GetMatrix()); MyEditorGizmo.AddEntityToSelection(entity); } } // Prefabs var editedContainer = MyEditor.Static.GetEditedPrefabContainer(); if (editedContainer == null) { MyMwcObjectBuilder_PrefabContainer prefabContainerBuilder = new MyMwcObjectBuilder_PrefabContainer( null, MyMwcObjectBuilder_PrefabContainer_TypesEnum.INSTANCE, new List <MyMwcObjectBuilder_PrefabBase>(), MyClientServer.LoggedPlayer.GetUserId(), MyMwcObjectBuilder_FactionEnum.Euroamerican, new MyMwcObjectBuilder_Inventory(new List <MyMwcObjectBuilder_InventoryItem>(), MyInventory.DEFAULT_MAX_ITEMS)); editedContainer = MyEntities.CreateFromObjectBuilderAndAdd( null, prefabContainerBuilder, Matrix.CreateTranslation(MyCamera.Position + Matrix.Invert(MyCamera.ViewMatrix).Forward * 100)) as MyPrefabContainer; MyEditor.Static.EditPrefabContainer(editedContainer); } if (editedContainer != null) { MyEditorGizmo.ClearSelection(); List <MyEntity> addedEntities = new List <MyEntity>(); foreach (var prefabBuilder in prefabs) { prefabBuilder.EntityId = null; var entity = editedContainer.CreateAndAddPrefab(null, prefabBuilder); addedEntities.Add(entity); } // Select newly added objects foreach (var entity in addedEntities) { MyEditorGizmo.AddEntityToSelection(entity); } } } }
public override void OnOkClick(MyGuiControlButton sender) { base.OnOkClick(sender); if (m_botBuilder != null) { m_botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey(); m_botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); m_botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); m_botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); var templateBuilder = m_templatesBuilders[m_selectSmallShipCombobox.GetSelectedKey()]; bool isTemplate = templateBuilder.UserData != null; if (isTemplate) { var template = templateBuilder.UserData as MySmallShipTemplate; if (m_botBuilder.ShipTemplateID == null) { if (m_inventoryBuilder == null) { m_botBuilder.Inventory = null; m_botBuilder.Weapons = null; m_botBuilder.Engine = null; m_botBuilder.Armor = null; m_botBuilder.Radar = null; } else { m_botBuilder.Inventory = m_inventoryBuilder.Inventory; m_botBuilder.Weapons = m_inventoryBuilder.Weapons; m_botBuilder.Engine = m_inventoryBuilder.Engine; m_botBuilder.Armor = m_inventoryBuilder.Armor; m_botBuilder.Radar = m_inventoryBuilder.Radar; } } m_botBuilder.ShipTemplateID = template.ID; } else { var builderWithAllItems = MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(templateBuilder.Builder.ShipType, MyShipTypeConstants.GetShipTypeProperties(templateBuilder.Builder.ShipType).GamePlay.CargoCapacity); if (m_botBuilder.ShipTemplateID != null) { m_botBuilder.Inventory = builderWithAllItems.Inventory; m_botBuilder.Weapons = builderWithAllItems.Weapons; m_botBuilder.Engine = builderWithAllItems.Engine; m_botBuilder.Armor = builderWithAllItems.Armor; m_botBuilder.Radar = builderWithAllItems.Radar; } m_botBuilder.ShipTemplateID = null; } m_botBuilder.ShipType = templateBuilder.Builder.ShipType; CloseAndCallOnOk(); } else if (m_bot != null) // edit SmallShip { Matrix matrix = m_bot.WorldMatrix; MyMwcObjectBuilder_SmallShip_Bot botBuilder = m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot; System.Diagnostics.Debug.Assert(botBuilder != null); botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey(); botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); botBuilder.ShipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_selectSmallShipCombobox.GetSelectedKey(); if (m_inventoryBuilder != null) { botBuilder.Inventory = m_inventoryBuilder.Inventory; botBuilder.Weapons = m_inventoryBuilder.Weapons; botBuilder.Engine = m_inventoryBuilder.Engine; botBuilder.Armor = m_inventoryBuilder.Armor; botBuilder.Radar = m_inventoryBuilder.Radar; } MyEditorGizmo.ClearSelection(); m_newBotBuilderToInit = botBuilder; m_newBotWorldMatrixToInit = matrix; m_bot.MarkForClose(); m_bot.OnClose += OnOldBodClose; } else // create SmallShip { MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum) Enum.ToObject(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum), m_selectSmallShipCombobox.GetSelectedKey()); MyMwcObjectBuilder_FactionEnum shipFaction = (MyMwcObjectBuilder_FactionEnum) Enum.ToObject(typeof(MyMwcObjectBuilder_FactionEnum), m_selectShipFactionCombobox.GetSelectedKey()); MyMwcPositionAndOrientation positionAndOrientation = new MyMwcPositionAndOrientation(m_newObjectPosition, Vector3.Forward, Vector3.Up); MyMwcObjectBuilder_SmallShip_Bot botBuilder = MyEditor.CreateDefaultBotObjectBuilder(positionAndOrientation.Position, positionAndOrientation.Forward, positionAndOrientation.Up, shipType, shipFaction); botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); MyEditor.Static.CreateFromObjectBuilder(botBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up), m_screenPosition); CloseAndCallOnOk(); } }