public static void AddAction(string className, int i, ActionListAsset _target) { List <int> idArray = new List <int>(); foreach (AC.Action _action in _target.actions) { idArray.Add(_action.id); } idArray.Sort(); AC.Action newAction = (AC.Action)CreateInstance(className); newAction.hideFlags = HideFlags.HideInHierarchy; // Update id based on array foreach (int _id in idArray.ToArray()) { if (newAction.id == _id) { newAction.id++; } } newAction.name = newAction.title; _target.actions.Insert(i, newAction); AssetDatabase.AddObjectToAsset(newAction, _target); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(newAction)); AssetDatabase.Refresh(); }
public static Action RebuildAction(AC.Action action, int typeIndex, ActionListAsset _target, ResultAction _resultAction, int _skipAction, ActionListAsset _linkedAsset, Cutscene _linkedCutscene) { ActionsManager actionsManager = AdvGame.GetReferences().actionsManager; if (actionsManager) { ActionListAssetEditor.DeleteAction(action, _target); string className = actionsManager.AllActions [typeIndex].fileName; AC.Action newAction = (AC.Action)CreateInstance(className); newAction.hideFlags = HideFlags.HideInHierarchy; newAction.endAction = _resultAction; newAction.skipAction = _skipAction; newAction.linkedAsset = _linkedAsset; newAction.linkedCutscene = _linkedCutscene; AssetDatabase.AddObjectToAsset(newAction, _target); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(newAction)); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return(newAction); } return(action); }
private void ActionSideMenu(AC.Action action) { ActionListAsset _target = (ActionListAsset)target; int i = _target.actions.IndexOf(action); actionToAffect = action; GenericMenu menu = new GenericMenu(); if (action.isEnabled) { menu.AddItem(new GUIContent("Disable"), false, Callback, "Disable"); } else { menu.AddItem(new GUIContent("Enable"), false, Callback, "Enable"); } menu.AddSeparator(""); if (_target.actions.Count > 1) { menu.AddItem(new GUIContent("Cut"), false, Callback, "Cut"); } menu.AddItem(new GUIContent("Copy"), false, Callback, "Copy"); if (AdvGame.copiedActions.Count > 0) { menu.AddItem(new GUIContent("Paste after"), false, Callback, "Paste after"); } menu.AddSeparator(""); menu.AddItem(new GUIContent("Insert after"), false, Callback, "Insert after"); menu.AddItem(new GUIContent("Delete"), false, Callback, "Delete"); if (i > 0 || i < _target.actions.Count - 1) { menu.AddSeparator(""); } if (i > 0) { menu.AddItem(new GUIContent("Re-arrange/Move to top"), false, Callback, "Move to top"); menu.AddItem(new GUIContent("Re-arrange/Move up"), false, Callback, "Move up"); } if (i < _target.actions.Count - 1) { menu.AddItem(new GUIContent("Re-arrange/Move down"), false, Callback, "Move down"); menu.AddItem(new GUIContent("Re-arrange/Move to bottom"), false, Callback, "Move to bottom"); } menu.ShowAsContext(); }
private void ActionSideMenu (AC.Action action) { ActionListAsset _target = (ActionListAsset) target; int i = _target.actions.IndexOf (action); actionToAffect = action; GenericMenu menu = new GenericMenu (); if (action.isEnabled) { menu.AddItem (new GUIContent ("Disable"), false, Callback, "Disable"); } else { menu.AddItem (new GUIContent ("Enable"), false, Callback, "Enable"); } menu.AddSeparator (""); if (_target.actions.Count > 1) { menu.AddItem (new GUIContent ("Cut"), false, Callback, "Cut"); } menu.AddItem (new GUIContent ("Copy"), false, Callback, "Copy"); if (AdvGame.copiedActions.Count > 0) { menu.AddItem (new GUIContent ("Paste after"), false, Callback, "Paste after"); } menu.AddSeparator (""); menu.AddItem (new GUIContent ("Insert after"), false, Callback, "Insert after"); menu.AddItem (new GUIContent ("Delete"), false, Callback, "Delete"); if (i > 0 || i < _target.actions.Count-1) { menu.AddSeparator (""); } if (i > 0) { menu.AddItem (new GUIContent ("Re-arrange/Move to top"), false, Callback, "Move to top"); menu.AddItem (new GUIContent ("Re-arrange/Move up"), false, Callback, "Move up"); } if (i < _target.actions.Count-1) { menu.AddItem (new GUIContent ("Re-arrange/Move down"), false, Callback, "Move down"); menu.AddItem (new GUIContent ("Re-arrange/Move to bottom"), false, Callback, "Move to bottom"); } menu.ShowAsContext (); }
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; cutList.Add(cutAction); AdvGame.copiedActions = cutList; _target.actions.Remove(_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.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) { 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"); ActionListAssetEditor.AddAction(actionsManager.GetDefaultAction(), i + 1, _target); break; case "Delete": Undo.RecordObject(_target, "Delete action"); _target.actions.Remove(_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 DeleteAction(AC.Action action, ActionListAsset _target) { UnityEngine.Object.DestroyImmediate(action, true); AssetDatabase.SaveAssets(); _target.actions.Remove(action); }