public void CopyFromActionList(ActionList actionList) { isSkippable = actionList.isSkippable; actionListType = actionList.actionListType; useParameters = actionList.useParameters; // Copy parameters parameters = new List <ActionParameter>(); parameters.Clear(); foreach (ActionParameter parameter in actionList.parameters) { parameters.Add(new ActionParameter(parameter, true)); } // Actions actions = new List <Action>(); actions.Clear(); Vector2 firstPosition = new Vector2(14f, 14f); foreach (Action originalAction in actionList.actions) { if (originalAction == null) { continue; } AC.Action duplicatedAction = Object.Instantiate(originalAction) as AC.Action; if (actionList.actions.IndexOf(originalAction) == 0) { Rect newRect = new Rect(firstPosition, duplicatedAction.NodeRect.size); duplicatedAction.NodeRect = newRect; } else { Rect newRect = new Rect(originalAction.NodeRect.position, duplicatedAction.NodeRect.size); duplicatedAction.NodeRect = newRect; } duplicatedAction.isAssetFile = true; duplicatedAction.AssignConstantIDs(); duplicatedAction.isMarked = false; duplicatedAction.ClearIDs(); duplicatedAction.parentActionListInEditor = null; duplicatedAction.hideFlags = HideFlags.HideInHierarchy; AssetDatabase.AddObjectToAsset(duplicatedAction, this); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(duplicatedAction)); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); actions.Add(duplicatedAction); } }
public void CopyFromAsset(ActionListAsset actionListAsset) { isSkippable = actionListAsset.isSkippable; actionListType = actionListAsset.actionListType; useParameters = actionListAsset.useParameters; // Copy parameters parameters = new List <ActionParameter>(); parameters.Clear(); foreach (ActionParameter parameter in actionListAsset.DefaultParameters) { parameters.Add(new ActionParameter(parameter, true)); } // Actions actions = new List <Action>(); actions.Clear(); Vector2 firstPosition = new Vector2(14f, 14f); foreach (Action originalAction in actionListAsset.actions) { if (originalAction == null) { continue; } AC.Action duplicatedAction = Object.Instantiate(originalAction) as AC.Action; if (actionListAsset.actions.IndexOf(originalAction) == 0) { Rect newRect = new Rect(firstPosition, duplicatedAction.NodeRect.size); duplicatedAction.NodeRect = newRect; } else { Rect newRect = new Rect(originalAction.NodeRect.position, duplicatedAction.NodeRect.size); duplicatedAction.NodeRect = newRect; } duplicatedAction.ClearIDs(); duplicatedAction.isMarked = false; duplicatedAction.isAssetFile = false; duplicatedAction.parentActionListInEditor = this; actions.Add(duplicatedAction); } }
public void CopyFromAsset(ActionListAsset actionListAsset) { isSkippable = actionListAsset.isSkippable; actionListType = actionListAsset.actionListType; useParameters = actionListAsset.useParameters; // Copy parameters parameters = new List <ActionParameter>(); parameters.Clear(); foreach (ActionParameter parameter in actionListAsset.parameters) { parameters.Add(new ActionParameter(parameter)); } // Actions actions = new List <Action>(); actions.Clear(); Vector2 firstPosition = new Vector2(14f, 14f); foreach (Action originalAction in actionListAsset.actions) { if (originalAction == null) { continue; } AC.Action duplicatedAction = Object.Instantiate(originalAction) as AC.Action; if (actionListAsset.actions.IndexOf(originalAction) == 0) { duplicatedAction.nodeRect.x = firstPosition.x; duplicatedAction.nodeRect.y = firstPosition.y; } else { duplicatedAction.nodeRect.x = firstPosition.x + (originalAction.nodeRect.x - firstPosition.x); duplicatedAction.nodeRect.y = firstPosition.y + (originalAction.nodeRect.y - firstPosition.y); } duplicatedAction.ClearIDs(); duplicatedAction.isMarked = false; duplicatedAction.isAssetFile = false; actions.Add(duplicatedAction); } }
public static void ModifyAction(ActionList _target, AC.Action _action, string callback) { int i = -1; if (_action != null && _target.actions.IndexOf(_action) > -1) { i = _target.actions.IndexOf(_action); } switch (callback) { case "Enable": Undo.RecordObject(_target, "Enable action"); _action.isEnabled = true; break; case "Disable": Undo.RecordObject(_target, "Disable action"); _action.isEnabled = false; break; case "Cut": Undo.RecordObject(_target, "Cut action"); List <AC.Action> cutList = new List <AC.Action>(); AC.Action cutAction = Object.Instantiate(_action) as AC.Action; cutList.Add(cutAction); AdvGame.copiedActions = cutList; _target.actions.Remove(_action); break; case "Copy": List <AC.Action> copyList = new List <AC.Action>(); AC.Action copyAction = Object.Instantiate(_action) as AC.Action; copyAction.ClearIDs(); copyAction.nodeRect = new Rect(0, 0, 300, 60); copyList.Add(copyAction); AdvGame.copiedActions = copyList; break; case "Paste after": Undo.RecordObject(_target, "Paste actions"); List <AC.Action> pasteList = AdvGame.copiedActions; _target.actions.InsertRange(i + 1, pasteList); AdvGame.DuplicateActionsBuffer(); break; case "Insert end": Undo.RecordObject(_target, "Create action"); AC.Action newAction = ActionList.GetDefaultAction(); _target.actions.Add(newAction); break; case "Insert after": Undo.RecordObject(_target, "Create action"); _target.actions.Insert(i + 1, ActionList.GetDefaultAction()); break; case "Delete": Undo.RecordObject(_target, "Delete action"); _target.actions.Remove(_action); break; case "Move to top": Undo.RecordObject(_target, "Move action to top"); _target.actions[0].nodeRect.x += 30f; _target.actions[0].nodeRect.y += 30f; _target.actions.Remove(_action); _target.actions.Insert(0, _action); break; case "Move up": Undo.RecordObject(_target, "Move action up"); _target.actions.Remove(_action); _target.actions.Insert(i - 1, _action); break; case "Move to bottom": Undo.RecordObject(_target, "Move action to bottom"); _target.actions.Remove(_action); _target.actions.Insert(_target.actions.Count, _action); break; case "Move down": Undo.RecordObject(_target, "Move action down"); _target.actions.Remove(_action); _target.actions.Insert(i + 1, _action); break; case "Toggle breakpoint": Undo.RecordObject(_target, "Toggle breakpoint"); _action.isBreakPoint = !_action.isBreakPoint; break; } }
public static void ModifyAction(ActionListAsset _target, AC.Action _action, string callback) { ActionsManager actionsManager = AdvGame.GetReferences().actionsManager; if (actionsManager == null) { return; } int i = -1; if (_action != null && _target.actions.IndexOf(_action) > -1) { i = _target.actions.IndexOf(_action); } switch (callback) { case "Enable": Undo.RecordObject(_target, "Enable action"); _target.actions [i].isEnabled = true; break; case "Disable": Undo.RecordObject(_target, "Disable action"); _target.actions [i].isEnabled = false; break; case "Cut": Undo.RecordObject(_target, "Cut action"); List <AC.Action> cutList = new List <AC.Action>(); AC.Action cutAction = Object.Instantiate(_action) as AC.Action; cutAction.name = cutAction.name.Replace("(Clone)", ""); cutList.Add(cutAction); AdvGame.copiedActions = cutList; _target.actions.Remove(_action); Undo.DestroyObjectImmediate(_action); //UnityEngine.Object.DestroyImmediate (_action, true); AssetDatabase.SaveAssets(); break; case "Copy": List <AC.Action> copyList = new List <AC.Action>(); AC.Action copyAction = Object.Instantiate(_action) as AC.Action; copyAction.ClearIDs(); copyAction.name = copyAction.name.Replace("(Clone)", ""); copyList.Add(copyAction); AdvGame.copiedActions = copyList; break; case "Paste after": Undo.RecordObject(_target, "Paste actions"); List <AC.Action> pasteList = AdvGame.copiedActions; int j = i + 1; foreach (AC.Action action in pasteList) { if (action == null) { ACDebug.LogWarning("Error when pasting Action - cannot find original. Did you change scene before pasting? If you need to transfer Actions between scenes, copy them to an ActionList asset first."); continue; } AC.Action pastedAction = Object.Instantiate(action) as AC.Action; pastedAction.name = pastedAction.name.Replace("(Clone)", ""); pastedAction.hideFlags = HideFlags.HideInHierarchy; _target.actions.Insert(j, pastedAction); j++; AssetDatabase.AddObjectToAsset(pastedAction, _target); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(pastedAction)); } AssetDatabase.SaveAssets(); break; case "Insert after": Undo.RecordObject(_target, "Create action"); Action newAction = ActionListAssetEditor.AddAction(actionsManager.GetDefaultAction(), i + 1, _target); newAction.endAction = _action.endAction; newAction.skipAction = -1; newAction.skipActionActual = _action.skipActionActual; break; case "Delete": Undo.RecordObject(_target, "Delete action"); _target.actions.Remove(_action); Undo.DestroyObjectImmediate(_action); //UnityEngine.Object.DestroyImmediate (_action, true); AssetDatabase.SaveAssets(); break; case "Move to top": Undo.RecordObject(_target, "Move action to top"); _target.actions.Remove(_action); _target.actions.Insert(0, _action); break; case "Move up": Undo.RecordObject(_target, "Move action up"); _target.actions.Remove(_action); _target.actions.Insert(i - 1, _action); break; case "Move to bottom": Undo.RecordObject(_target, "Move action to bottom"); _target.actions.Remove(_action); _target.actions.Insert(_target.actions.Count, _action); break; case "Move down": Undo.RecordObject(_target, "Move action down"); _target.actions.Remove(_action); _target.actions.Insert(i + 1, _action); break; } }
public static void ModifyAction(ActionListAsset _target, AC.Action _action, string callback) { ActionsManager actionsManager = AdvGame.GetReferences().actionsManager; if (actionsManager == null) { return; } int i = -1; if (_action != null && _target.actions.IndexOf(_action) > -1) { i = _target.actions.IndexOf(_action); } bool doUndo = (callback != "Copy"); if (doUndo) { Undo.SetCurrentGroupName(callback); Undo.RecordObjects(new UnityEngine.Object [] { _target }, callback); Undo.RecordObjects(_target.actions.ToArray(), callback); } switch (callback) { case "Enable": _target.actions [i].isEnabled = true; break; case "Disable": _target.actions [i].isEnabled = false; break; case "Cut": List <AC.Action> cutList = new List <AC.Action>(); AC.Action cutAction = Object.Instantiate(_action) as AC.Action; cutAction.name = cutAction.name.Replace("(Clone)", ""); cutList.Add(cutAction); AdvGame.copiedActions = cutList; DeleteAction(_action, _target); break; case "Copy": List <AC.Action> copyList = new List <AC.Action>(); AC.Action copyAction = Object.Instantiate(_action) as AC.Action; copyAction.ClearIDs(); copyAction.name = copyAction.name.Replace("(Clone)", string.Empty); copyList.Add(copyAction); AdvGame.copiedActions = copyList; break; case "Paste after": List <AC.Action> pasteList = AdvGame.copiedActions; int j = i + 1; foreach (AC.Action action in pasteList) { if (action == null) { ACDebug.LogWarning("Error when pasting Action - cannot find original. Did you change scene before pasting? If you need to transfer Actions between scenes, copy them to an ActionList asset first."); continue; } AC.Action pastedAction = Object.Instantiate(action) as AC.Action; pastedAction.name = pastedAction.name.Replace("(Clone)", string.Empty); AddAction(pastedAction, j, _target); j++; } break; case "Insert after": Action newAction = AddAction(ActionsManager.GetDefaultAction(), i + 1, _target); newAction.endAction = _action.endAction; newAction.skipAction = -1; newAction.skipActionActual = _action.skipActionActual; break; case "Delete": DeleteAction(_action, _target); break; case "Move to top": _target.actions.Remove(_action); _target.actions.Insert(0, _action); break; case "Move up": _target.actions.Remove(_action); _target.actions.Insert(i - 1, _action); break; case "Move to bottom": _target.actions.Remove(_action); _target.actions.Insert(_target.actions.Count, _action); break; case "Move down": _target.actions.Remove(_action); _target.actions.Insert(i + 1, _action); break; } if (doUndo) { Undo.RecordObjects(new UnityEngine.Object [] { _target }, callback); Undo.RecordObjects(_target.actions.ToArray(), callback); Undo.CollapseUndoOperations(Undo.GetCurrentGroup()); EditorUtility.SetDirty(_target); } }
public static void ModifyAction(ActionList _target, AC.Action _action, string callback) { int i = -1; if (_action != null && _target.actions.IndexOf(_action) > -1) { i = _target.actions.IndexOf(_action); } bool doUndo = (callback != "Copy"); if (doUndo) { Undo.SetCurrentGroupName(callback); Undo.RecordObjects(new UnityEngine.Object [] { _target }, callback); Undo.RecordObjects(_target.actions.ToArray(), callback); } switch (callback) { case "Enable": _action.isEnabled = true; break; case "Disable": _action.isEnabled = false; break; case "Cut": List <AC.Action> cutList = new List <AC.Action>(); AC.Action cutAction = Object.Instantiate(_action) as AC.Action; cutAction.name = cutAction.name.Replace("(Clone)", ""); cutList.Add(cutAction); AdvGame.copiedActions = cutList; DeleteAction(_action, _target); break; case "Copy": List <AC.Action> copyList = new List <AC.Action>(); AC.Action copyAction = Object.Instantiate(_action) as AC.Action; copyAction.name = copyAction.name.Replace("(Clone)", ""); copyAction.ClearIDs(); copyAction.nodeRect = new Rect(0, 0, 300, 60); copyList.Add(copyAction); AdvGame.copiedActions = copyList; break; case "Paste after": List <AC.Action> pasteList = AdvGame.copiedActions; _target.actions.InsertRange(i + 1, pasteList); AdvGame.DuplicateActionsBuffer(); break; case "Insert end": AddAction(ActionsManager.GetDefaultAction(), -1, _target); break; case "Insert after": Action insertAfterAction = AddAction(ActionsManager.GetDefaultAction(), i + 1, _target); insertAfterAction.endAction = _action.endAction; insertAfterAction.skipAction = -1; insertAfterAction.skipActionActual = _action.skipActionActual; break; case "Delete": Undo.RecordObject(_target, "Delete action"); DeleteAction(_action, _target); break; case "Move to top": _target.actions[0].nodeRect.x += 30f; _target.actions[0].nodeRect.y += 30f; _target.actions.Remove(_action); _target.actions.Insert(0, _action); break; case "Move up": _target.actions.Remove(_action); _target.actions.Insert(i - 1, _action); break; case "Move to bottom": _target.actions.Remove(_action); _target.actions.Insert(_target.actions.Count, _action); break; case "Move down": _target.actions.Remove(_action); _target.actions.Insert(i + 1, _action); break; case "Toggle breakpoint": _action.isBreakPoint = !_action.isBreakPoint; break; } if (doUndo) { Undo.RecordObjects(new UnityEngine.Object [] { _target }, callback); Undo.RecordObjects(_target.actions.ToArray(), callback); Undo.CollapseUndoOperations(Undo.GetCurrentGroup()); EditorUtility.SetDirty(_target); } }