예제 #1
0
        private void m_listbox_ItemDoubleClick(object sender, MyGuiControlListboxItemEventArgs eventArgs)
        {
            MyEditorGizmo.ClearSelection();
            MyEntity entityToSelect = MyEntities.GetEntityById(new MyEntityIdentifier((uint)eventArgs.Key));

            MyEditorGizmo.AddEntityToSelection(entityToSelect);
        }
예제 #2
0
 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);
        }
예제 #5
0
        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();
        }
예제 #6
0
        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();
        }
예제 #8
0
        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();
            }
        }