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); }
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(); }
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); }
/// <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); }
private void OnClickRemove(ContextMenuButton button) { var script = (Script)button.ParentContextMenu.Tag; var action = AddRemoveScript.Remove(script); action.Do(); Editor.Instance.Undo.AddAction(action); }
private void OnClickRemove(ContextMenuButton button) { var script = (Script)button.ParentContextMenu.Tag; var action = AddRemoveScript.Remove(script); action.Do(); Presenter.Undo?.AddAction(action); }
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; } } }