Пример #1
0
        private void AddScripts(List <ScriptItem> items)
        {
            var actions = new List <IUndoAction>(4);

            for (int i = 0; i < items.Count; i++)
            {
                var item       = items[i];
                var scriptName = item.ScriptName;
                var scriptType = ScriptsBuilder.FindScript(scriptName);
                if (scriptType == null)
                {
                    Editor.LogError("Invalid script type " + scriptName);
                    return;
                }

                var actors = ScriptsEditor.ParentEditor.Values;
                for (int j = 0; j < actors.Count; j++)
                {
                    var actor = (Actor)actors[j];
                    actions.Add(AddRemoveScript.Add(actor, scriptType));
                }
            }

            if (actions.Count == 0)
            {
                Editor.LogWarning("Failed to spawn scripts");
                return;
            }

            var multiAction = new MultiUndoAction(actions);

            multiAction.Do();
            Editor.Instance.Undo.AddAction(multiAction);
        }
Пример #2
0
        private void OnDiffRevert(CustomEditor editor)
        {
            // Special case for removed Script from actor
            if (editor is RemovedScriptDummy removed)
            {
                Editor.Log("Reverting removed script changes to prefab (adding it)");

                var actor          = (Actor)Values[0];
                var restored       = actor.AddScript(removed.PrefabObject.GetType());
                var prefabId       = actor.PrefabID;
                var prefabObjectId = restored.PrefabObjectID;
                Script.Internal_LinkPrefab(restored.unmanagedPtr, ref prefabId, ref prefabObjectId);
                string data = JsonSerializer.Serialize(removed.PrefabObject);
                JsonSerializer.Deserialize(restored, data);

                var action = AddRemoveScript.Added(restored);
                Presenter.Undo?.AddAction(action);

                return;
            }

            // Special case for new Script added to actor
            if (editor.Values[0] is Script script && !script.HasPrefabLink)
            {
                Editor.Log("Reverting added script changes to prefab (removing it)");

                var action = AddRemoveScript.Remove(script);
                action.Do();
                Presenter.Undo?.AddAction(action);

                return;
            }

            editor.RevertToReferenceValue();
        }
Пример #3
0
        private void AddScripts(List <ScriptType> items)
        {
            var actions = new List <IUndoAction>(4);

            for (int i = 0; i < items.Count; i++)
            {
                var scriptType = items[i];
                var actors     = ScriptsEditor.ParentEditor.Values;
                for (int j = 0; j < actors.Count; j++)
                {
                    var actor = (Actor)actors[j];
                    actions.Add(AddRemoveScript.Add(actor, scriptType));
                }
            }

            if (actions.Count == 0)
            {
                Editor.LogWarning("Failed to spawn scripts");
                return;
            }

            var multiAction = new MultiUndoAction(actions);

            multiAction.Do();
            ScriptsEditor.Presenter?.Undo.AddAction(multiAction);
        }
Пример #4
0
            /// <inheritdoc />
            public override DragDropEffect OnDragDrop(ref Vector2 location, DragData data)
            {
                var result = base.OnDragDrop(ref location, data);

                if (_dragScripts.HasValidDrag)
                {
                    result = _dragScripts.Effect;

                    var actions = new List <IUndoAction>(4);

                    for (int i = 0; i < _dragScripts.Objects.Count; i++)
                    {
                        var item       = _dragScripts.Objects[i];
                        var scriptName = item.ScriptName;
                        var scriptType = ScriptsBuilder.FindScript(scriptName);

                        var actors = ScriptsEditor.ParentEditor.Values;
                        for (int j = 0; j < actors.Count; j++)
                        {
                            var actor = (Actor)actors[j];
                            actions.Add(AddRemoveScript.Add(actor, scriptType));
                        }
                    }

                    var multiAction = new MultiUndoAction(actions);
                    multiAction.Do();
                    Editor.Instance.Undo.AddAction(multiAction);
                }

                _dragScripts.OnDragDrop();

                return(result);
            }
Пример #5
0
        private void OnClickRemove(ContextMenuButton button)
        {
            var script = (Script)button.ParentContextMenu.Tag;
            var action = AddRemoveScript.Remove(script);

            action.Do();
            Editor.Instance.Undo.AddAction(action);
        }
Пример #6
0
        private void OnClickRemove(ContextMenuButton button)
        {
            var script = (Script)button.ParentContextMenu.Tag;
            var action = AddRemoveScript.Remove(script);

            action.Do();
            Presenter.Undo?.AddAction(action);
        }
Пример #7
0
            private void SettingsMenuOnButtonClicked(int id, ContextMenu contextMenu)
            {
                var script = (Script)contextMenu.Tag;

                switch (id)
                {
                // Reset
                case 0:
                {
                    throw new NotImplementedException("Reset script");
                    break;
                }

                // Remove
                case 1:
                {
                    var action = AddRemoveScript.Remove(script);
                    action.Do();
                    Editor.Instance.Undo.AddAction(action);
                    break;
                }

                // Move up
                case 2:
                {
                    var action = ChangeScriptAction.ChangeOrder(script, script.OrderInParent - 1);
                    action.Do();
                    Editor.Instance.Undo.AddAction(action);
                    break;
                }

                // Move down
                case 3:
                {
                    var action = ChangeScriptAction.ChangeOrder(script, script.OrderInParent + 1);
                    action.Do();
                    Editor.Instance.Undo.AddAction(action);
                    break;
                }

                // Edit script
                case 4:
                {
                    var item = Editor.Instance.ContentDatabase.FindScriptWitScriptName(script);
                    if (item != null)
                    {
                        Editor.Instance.ContentEditing.Open(item);
                    }
                    break;
                }

                // Show in content window
                case 5:
                {
                    var item = Editor.Instance.ContentDatabase.FindScriptWitScriptName(script);
                    if (item != null)
                    {
                        Editor.Instance.Windows.ContentWin.Select(item);
                    }
                    break;
                }
                }
            }