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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
0
        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;
            }
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
            }
        }