Пример #1
0
        public static void ShowPropertiesGUI(ActionListAsset _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Asset properties", EditorStyles.boldLabel);
            _target.actionListType = (ActionListType)EditorGUILayout.EnumPopup("When running:", _target.actionListType);
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable        = EditorGUILayout.Toggle("Is skippable?", _target.isSkippable);
                _target.unfreezePauseMenus = EditorGUILayout.Toggle("Unfreeze 'pause' Menus?", _target.unfreezePauseMenus);
            }
            _target.canRunMultipleInstances = EditorGUILayout.Toggle("Can run multiple instances?", _target.canRunMultipleInstances);
            if (!_target.IsSkippable())
            {
                _target.canSurviveSceneChanges = EditorGUILayout.Toggle("Can survive scene changes?", _target.canSurviveSceneChanges);
            }
            _target.useParameters = EditorGUILayout.Toggle("Use parameters?", _target.useParameters);
            if (_target.useParameters)
            {
                _target.revertToDefaultParametersAfterRunning = EditorGUILayout.ToggleLeft("Revert to default parameter values after running?", _target.revertToDefaultParametersAfterRunning);
            }

            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical("Button");
                EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                ActionListEditor.ShowParametersGUI(null, _target, _target.GetParameters());
                EditorGUILayout.EndVertical();
            }

            _target.tagID = ActionListEditor.ShowTagUI(_target.actions.ToArray(), _target.tagID);
        }
Пример #2
0
        public override void OnInspectorGUI()
        {
            RuntimeActionList _target = (RuntimeActionList)target;

            if (Application.isPlaying)
            {
                CustomGUILayout.BeginVertical();
                EditorGUILayout.ObjectField("Asset source:", _target.assetSource, typeof(ActionListAsset), false);

                if (_target.useParameters)
                {
                    CustomGUILayout.EndVertical();
                    CustomGUILayout.BeginVertical();
                    EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                    ActionListEditor.ShowParametersGUI(_target, null, _target.parameters);
                }
                CustomGUILayout.EndVertical();
            }
            else
            {
                EditorGUILayout.HelpBox("This component should not be added manually - it is added automatically by AC at runtime.", MessageType.Warning);
            }

            UnityVersionHandler.CustomSetDirty(_target);
        }
Пример #3
0
        public static void PropertiesGUI(Cutscene _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Cutscene properties", EditorStyles.boldLabel);
            _target.source = (ActionListSource)EditorGUILayout.EnumPopup("Actions source:", _target.source);
            if (_target.source == ActionListSource.AssetFile)
            {
                _target.assetFile       = (ActionListAsset)EditorGUILayout.ObjectField("ActionList asset:", _target.assetFile, typeof(ActionListAsset), false);
                _target.syncParamValues = EditorGUILayout.Toggle("Sync parameter values?", _target.syncParamValues);
            }
            _target.actionListType = (ActionListType)EditorGUILayout.EnumPopup("When running:", _target.actionListType);
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable = EditorGUILayout.Toggle("Is skippable?", _target.isSkippable);
            }
            _target.triggerTime   = EditorGUILayout.Slider("Start delay (s):", _target.triggerTime, 0f, 10f);
            _target.autosaveAfter = EditorGUILayout.Toggle("Auto-save after?", _target.autosaveAfter);
            _target.tagID         = ShowTagUI(_target.actions.ToArray(), _target.tagID);
            if (_target.source == ActionListSource.InScene)
            {
                _target.useParameters = EditorGUILayout.Toggle("Use parameters?", _target.useParameters);
            }
            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical("Button");
                EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                ActionListEditor.ShowParametersGUI(_target.parameters);

                EditorGUILayout.EndVertical();
            }
        }
Пример #4
0
        public static void ShowLocalParametersGUI(List <ActionParameter> localParameters, List <ActionParameter> assetParameters, bool isAssetFile)
        {
            int numParameters = assetParameters.Count;

            if (numParameters < localParameters.Count)
            {
                localParameters.RemoveRange(numParameters, localParameters.Count - numParameters);
            }
            else if (numParameters > localParameters.Count)
            {
                if (numParameters > localParameters.Capacity)
                {
                    localParameters.Capacity = numParameters;
                }
                for (int i = localParameters.Count; i < numParameters; i++)
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(localParameters));
                    localParameters.Add(newParameter);
                }
            }

            for (int i = 0; i < numParameters; i++)
            {
                localParameters[i].label         = assetParameters[i].label;
                localParameters[i].parameterType = assetParameters[i].parameterType;

                EditorGUILayout.LabelField("Label " + assetParameters[i].ID + ":", assetParameters[i].label);
                localParameters[i].ShowGUI(isAssetFile, true);

                if (i < (numParameters - 1))
                {
                    EditorGUILayout.Space();
                }
            }
        }
Пример #5
0
        public static void ShowParametersGUI(List <ActionParameter> parameters)
        {
            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.Width(10f));
                _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);
                if (GUILayout.Button("-"))
                {
                    parameters.Remove(_parameter);
                    break;
                }
                EditorGUILayout.EndHorizontal();
            }

            if (parameters.Count > 0)
            {
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Create new parameter", EditorStyles.miniButton))
            {
                ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                parameters.Add(newParameter);
            }
        }
        public static void ShowParametersGUI(ActionList actionList, ActionListAsset actionListAsset, List <ActionParameter> parameters)
        {
            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.Width(10f));
                _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);

                if (GUILayout.Button(Resource.CogIcon, GUILayout.Width(20f), GUILayout.Height(15f)))
                {
                    ParameterSideMenu(actionList, actionListAsset, parameters.Count, parameters.IndexOf(_parameter));
                }

                EditorGUILayout.EndHorizontal();
            }

            if (parameters.Count > 0)
            {
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Create new parameter", EditorStyles.miniButton))
            {
                ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                parameters.Add(newParameter);
            }
        }
        public static void ShowPropertiesGUI(ActionListAsset _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Asset properties", EditorStyles.boldLabel);
            _target.actionListType = (ActionListType)EditorGUILayout.EnumPopup("When running:", _target.actionListType);
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable        = EditorGUILayout.Toggle("Is skippable?", _target.isSkippable);
                _target.unfreezePauseMenus = EditorGUILayout.Toggle("Unfreeze 'pause' Menus?", _target.unfreezePauseMenus);
            }
            _target.canRunMultipleInstances = EditorGUILayout.Toggle("Can run multiple instances?", _target.canRunMultipleInstances);
            _target.useParameters           = EditorGUILayout.Toggle("Use parameters?", _target.useParameters);
            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical("Button");
                EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                ActionListEditor.ShowParametersGUI(null, _target, _target.parameters);
                EditorGUILayout.EndVertical();
            }

            _target.tagID = ActionListEditor.ShowTagUI(_target.actions.ToArray(), _target.tagID);
        }
Пример #8
0
 private void ShowParametersGUI(ActionListAsset _targetAsset)
 {
     EditorGUILayout.Space();
     EditorGUILayout.BeginVertical("Button");
     EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
     ActionListEditor.ShowParametersGUI(_targetAsset.parameters);
     EditorGUILayout.EndVertical();
 }
Пример #9
0
        public static void PropertiesGUI(Cutscene _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Cutscene properties", EditorStyles.boldLabel);
            _target.source = (ActionListSource)CustomGUILayout.EnumPopup("Actions source:", _target.source, "", "Where the Actions are stored");
            if (_target.source == ActionListSource.AssetFile)
            {
                _target.assetFile       = (ActionListAsset)CustomGUILayout.ObjectField <ActionListAsset> ("ActionList asset:", _target.assetFile, false, "", "The ActionList asset that stores the Actions");
                _target.syncParamValues = CustomGUILayout.Toggle("Sync parameter values?", _target.syncParamValues, "", "If True, the ActionList asset's parameter values will be shared amongst all linked ActionLists");
            }
            _target.actionListType = (ActionListType)CustomGUILayout.EnumPopup("When running:", _target.actionListType, "", "The effect that running the Actions has on the rest of the game");
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable = CustomGUILayout.Toggle("Is skippable?", _target.isSkippable, "", "If True, the Actions will be skipped when the user presses the 'EndCutscene' Input button");
            }
            _target.triggerTime   = CustomGUILayout.Slider("Start delay (s):", _target.triggerTime, 0f, 10f, "", "The delay, in seconds, before the Actions are run when the ActionList is triggered");
            _target.autosaveAfter = CustomGUILayout.Toggle("Autosave after?", _target.autosaveAfter, "", "If True, the game will auto-save when the Actions have finished running");
            _target.tagID         = ShowTagUI(_target.actions.ToArray(), _target.tagID);
            if (_target.source == ActionListSource.InScene)
            {
                _target.useParameters = CustomGUILayout.Toggle("Use parameters?", _target.useParameters, "", "If True, ActionParameters can be used to override values within the Action objects");
            }
            else if (_target.source == ActionListSource.AssetFile && _target.assetFile != null && !_target.syncParamValues && _target.assetFile.useParameters)
            {
                _target.useParameters = CustomGUILayout.Toggle("Set local parameter values?", _target.useParameters, "", "If True, parameter values set here will be assigned locally, and not on the ActionList asset");
            }
            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                if (_target.source == ActionListSource.InScene)
                {
                    EditorGUILayout.Space();
                    EditorGUILayout.BeginVertical("Button");

                    EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                    ActionListEditor.ShowParametersGUI(_target, null, _target.parameters);

                    EditorGUILayout.EndVertical();
                }
                else if (!_target.syncParamValues && _target.source == ActionListSource.AssetFile && _target.assetFile != null && _target.assetFile.useParameters)
                {
                    bool isAsset = UnityVersionHandler.IsPrefabFile(_target.gameObject);

                    EditorGUILayout.Space();
                    EditorGUILayout.BeginVertical("Button");

                    EditorGUILayout.LabelField("Local parameter values", EditorStyles.boldLabel);
                    ActionListEditor.ShowLocalParametersGUI(_target.parameters, _target.assetFile.GetParameters(), isAsset);

                    EditorGUILayout.EndVertical();
                }
            }
        }
Пример #10
0
        public static void ShowParametersGUI(ActionList actionList, ActionListAsset actionListAsset, List <ActionParameter> parameters, bool readOnly = false)
        {
            for (int i = 0; i < parameters.Count; i++)
            {
                if (Application.isPlaying)
                {
                    EditorGUILayout.LabelField("Label " + parameters[i].ID + ":", parameters[i].label);
                    parameters[i].ShowGUI(actionListAsset != null);
                }
                else
                {
                    EditorGUILayout.BeginHorizontal();

                    if (readOnly)
                    {
                        EditorGUILayout.LabelField("Label " + parameters[i].ID + ":", parameters[i].label);
                    }
                    else
                    {
                        parameters[i].label = EditorGUILayout.TextField("Label " + parameters[i].ID + ":", parameters[i].label);
                    }
                    if (GUILayout.Button(string.Empty, CustomStyles.IconCog))
                    {
                        ParameterSideMenu(actionList, actionListAsset, parameters.Count, i);
                    }

                    EditorGUILayout.EndHorizontal();

                    parameters[i].ShowGUI(actionListAsset != null, false, readOnly);
                }

                if (i < (parameters.Count - 1))
                {
                    GUILayout.Box(string.Empty, GUILayout.ExpandWidth(true), GUILayout.Height(1));
                }

                if (parameters.Count > 0)
                {
                    EditorGUILayout.Space();
                }
            }

            if (!Application.isPlaying && !readOnly)
            {
                if (GUILayout.Button("Create new parameter", EditorStyles.miniButton))
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                    newParameter.parameterType = ParameterType.Integer;
                    parameters.Add(newParameter);
                }
            }
        }
        public static void PropertiesGUI(Interaction _target)
        {
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Interaction properties", EditorStyles.boldLabel);
            _target.source = (ActionListSource)EditorGUILayout.EnumPopup("Actions source:", _target.source);
            if (_target.source == ActionListSource.AssetFile)
            {
                _target.assetFile       = (ActionListAsset)EditorGUILayout.ObjectField("ActionList asset:", _target.assetFile, typeof(ActionListAsset), false);
                _target.syncParamValues = EditorGUILayout.Toggle("Sync parameter values?", _target.syncParamValues);
            }
            _target.actionListType = (ActionListType)EditorGUILayout.EnumPopup("When running:", _target.actionListType);
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable = EditorGUILayout.Toggle("Is skippable?", _target.isSkippable);
            }
            _target.tagID = ShowTagUI(_target.actions.ToArray(), _target.tagID);
            if (_target.source == ActionListSource.InScene)
            {
                _target.useParameters = EditorGUILayout.Toggle("Use parameters?", _target.useParameters);
            }
            else if (_target.source == ActionListSource.AssetFile && _target.assetFile != null && !_target.syncParamValues && _target.assetFile.useParameters)
            {
                _target.useParameters = EditorGUILayout.Toggle("Set local parameter values?", _target.useParameters);
            }
            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                if (_target.source == ActionListSource.InScene)
                {
                    EditorGUILayout.Space();
                    EditorGUILayout.BeginVertical("Button");

                    EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
                    ActionListEditor.ShowParametersGUI(_target, null, _target.parameters);

                    EditorGUILayout.EndVertical();
                }
                else if (!_target.syncParamValues && _target.source == ActionListSource.AssetFile && _target.assetFile != null && _target.assetFile.useParameters)
                {
                    bool isAsset = (PrefabUtility.GetPrefabType(_target) == PrefabType.Prefab) ? true : false;

                    EditorGUILayout.Space();
                    EditorGUILayout.BeginVertical("Button");

                    EditorGUILayout.LabelField("Local parameter values", EditorStyles.boldLabel);
                    ActionListEditor.ShowLocalParametersGUI(_target.parameters, _target.assetFile.parameters, isAsset);

                    EditorGUILayout.EndVertical();
                }
            }
        }
Пример #12
0
        private static void ModifyParameter(ActionListAsset _target, int i, string callback)
        {
            if (_target == null || _target.parameters == null)
            {
                return;
            }

            ActionParameter moveParameter = _target.parameters[i];

            switch (callback)
            {
            case "Insert":
                Undo.RecordObject(_target, "Create parameter");
                ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(_target.parameters));
                _target.parameters.Insert(i + 1, newParameter);
                break;

            case "Delete":
                Undo.RecordObject(_target, "Delete parameter");
                _target.parameters.RemoveAt(i);
                break;

            case "Move to top":
                Undo.RecordObject(_target, "Move parameter to top");
                _target.parameters.Remove(moveParameter);
                _target.parameters.Insert(0, moveParameter);
                break;

            case "Move up":
                Undo.RecordObject(_target, "Move parameter up");
                _target.parameters.Remove(moveParameter);
                _target.parameters.Insert(i - 1, moveParameter);
                break;

            case "Move to bottom":
                Undo.RecordObject(_target, "Move parameter to bottom");
                _target.parameters.Remove(moveParameter);
                _target.parameters.Insert(_target.parameters.Count, moveParameter);
                break;

            case "Move down":
                Undo.RecordObject(_target, "Move parameter down");
                _target.parameters.Remove(moveParameter);
                _target.parameters.Insert(i + 1, moveParameter);
                break;
            }
        }
Пример #13
0
        public static void ShowParametersGUI(List <ActionParameter> parameters)
        {
            int numParameters = parameters.Count;

            numParameters = EditorGUILayout.IntField("Number of parameters:", numParameters);
            if (numParameters < 0)
            {
                numParameters = 0;
            }

            if (numParameters < parameters.Count)
            {
                parameters.RemoveRange(numParameters, parameters.Count - numParameters);
            }
            else if (numParameters > parameters.Count)
            {
                if (numParameters > parameters.Capacity)
                {
                    parameters.Capacity = numParameters;
                }
                for (int i = parameters.Count; i < numParameters; i++)
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                    parameters.Add(newParameter);
                }
            }

            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.Width(10f));
                _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);
                if (GUILayout.Button("-"))
                {
                    parameters.Remove(_parameter);
                    break;
                }
                EditorGUILayout.EndHorizontal();
            }
        }
Пример #14
0
        public static void ShowParametersGUI(ActionList actionList, ActionListAsset actionListAsset, List <ActionParameter> parameters)
        {
            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();

                if (Application.isPlaying)
                {
                    EditorGUILayout.LabelField(_parameter.ID.ToString() + ": " + _parameter.parameterType.ToString() + " '" + _parameter.label + "'");
                    EditorGUILayout.LabelField("Current value: '" + _parameter.GetLabel() + "'");
                }
                else
                {
                    EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.MaxWidth(10f));
                    _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                    _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);

                    if (GUILayout.Button("", CustomStyles.IconCog))
                    {
                        ParameterSideMenu(actionList, actionListAsset, parameters.Count, parameters.IndexOf(_parameter));
                    }
                }

                EditorGUILayout.EndHorizontal();
            }

            if (!Application.isPlaying)
            {
                if (parameters.Count > 0)
                {
                    EditorGUILayout.Space();
                }

                if (GUILayout.Button("Create new parameter", EditorStyles.miniButton))
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                    parameters.Add(newParameter);
                }
            }
        }
Пример #15
0
        private void ShowParametersGUI(ActionList _target)
        {
            if (_target is AC_Trigger)
            {
                if (_target.parameters.Count != 1)
                {
                    ActionParameter newParameter = new ActionParameter(0);
                    newParameter.parameterType = ParameterType.GameObject;
                    newParameter.label         = "Collision object";
                    _target.parameters.Clear();
                    _target.parameters.Add(newParameter);
                }
                return;
            }

            EditorGUILayout.Space();
            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel);
            ActionListEditor.ShowParametersGUI(_target.parameters);

            EditorGUILayout.EndVertical();
        }
Пример #16
0
        public override void OnInspectorGUI()
        {
            ActionListAsset _target = (ActionListAsset)target;

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Asset properties", EditorStyles.boldLabel);
            _target.actionListType = (ActionListType)EditorGUILayout.EnumPopup("When running:", _target.actionListType);
            if (_target.actionListType == ActionListType.PauseGameplay)
            {
                _target.isSkippable        = EditorGUILayout.Toggle("Is skippable?", _target.isSkippable);
                _target.unfreezePauseMenus = EditorGUILayout.Toggle("Unfreeze 'pause' Menus?", _target.unfreezePauseMenus);
            }
            _target.useParameters = EditorGUILayout.Toggle("Use parameters?", _target.useParameters);
            EditorGUILayout.EndVertical();

            if (_target.useParameters)
            {
                ShowParametersGUI(_target);
            }
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Expand all", EditorStyles.miniButtonLeft))
            {
                Undo.RecordObject(_target, "Expand actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = true;
                }
            }
            if (GUILayout.Button("Collapse all", EditorStyles.miniButtonMid))
            {
                Undo.RecordObject(_target, "Collapse actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = false;
                }
            }
            if (GUILayout.Button("Action List Editor", EditorStyles.miniButtonMid))
            {
                ActionListEditorWindow.Init(_target);
            }
            if (!Application.isPlaying)
            {
                GUI.enabled = false;
            }
            if (GUILayout.Button("Run now", EditorStyles.miniButtonRight))
            {
                AdvGame.RunActionListAsset(_target);
            }
            GUI.enabled = true;
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            if (actionsManager == null)
            {
                EditorGUILayout.HelpBox("An Actions Manager asset file must be assigned in the Game Editor Window", MessageType.Warning);
                OnEnable();
                return;
            }

            if (!actionsManager.displayActionsInInspector)
            {
                EditorGUILayout.HelpBox("As set by the Actions Manager, Actions are only displayed in the ActionList Editor window.", MessageType.Info);
                return;
            }

            for (int i = 0; i < _target.actions.Count; i++)
            {
                int typeIndex = KickStarter.actionsManager.GetActionTypeIndex(_target.actions[i]);

                if (_target.actions[i] == null)
                {
                    _target.actions.Insert(i, ActionListAssetEditor.RebuildAction(_target.actions[i], typeIndex, _target));
                }

                _target.actions[i].isAssetFile = true;

                EditorGUILayout.BeginVertical("Button");

                string actionLabel = " " + (i).ToString() + ": " + actionsManager.EnabledActions[typeIndex].GetFullTitle() + _target.actions[i].SetLabel();

                EditorGUILayout.BeginHorizontal();
                _target.actions[i].isDisplayed = EditorGUILayout.Foldout(_target.actions[i].isDisplayed, actionLabel);
                if (!_target.actions[i].isEnabled)
                {
                    EditorGUILayout.LabelField("DISABLED", EditorStyles.boldLabel, GUILayout.Width(100f));
                }

                Texture2D icon = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/AdventureCreator/Graphics/Textures/inspector-use.png", typeof(Texture2D));
                if (GUILayout.Button(icon, GUILayout.Width(20f), GUILayout.Height(15f)))
                {
                    ActionSideMenu(_target.actions[i]);
                }
                EditorGUILayout.EndHorizontal();

                if (_target.actions[i].isDisplayed)
                {
                    if (!actionsManager.DoesActionExist(_target.actions[i].GetType().ToString()))
                    {
                        EditorGUILayout.HelpBox("This Action type has been disabled in the Actions Manager", MessageType.Warning);
                    }
                    else
                    {
                        int newTypeIndex = ActionListEditor.ShowTypePopup(_target.actions[i], typeIndex);
                        if (newTypeIndex >= 0)
                        {
                            // Rebuild constructor if Subclass and type string do not match
                            ActionEnd _end = new ActionEnd();
                            _end.resultAction   = _target.actions[i].endAction;
                            _end.skipAction     = _target.actions[i].skipAction;
                            _end.linkedAsset    = _target.actions[i].linkedAsset;
                            _end.linkedCutscene = _target.actions[i].linkedCutscene;

                            Undo.RecordObject(_target, "Change Action type");

                            _target.actions.Insert(i, ActionListAssetEditor.RebuildAction(_target.actions[i], newTypeIndex, _target, _end.resultAction, _end.skipAction, _end.linkedAsset, _end.linkedCutscene));
                        }

                        EditorGUILayout.Space();
                        GUI.enabled = _target.actions[i].isEnabled;

                        if (_target.useParameters)
                        {
                            _target.actions[i].ShowGUI(_target.parameters);
                        }
                        else
                        {
                            _target.actions[i].ShowGUI(null);
                        }
                    }
                    GUI.enabled = true;
                }

                if (_target.actions[i].endAction == AC.ResultAction.Skip || _target.actions[i] is ActionCheck || _target.actions[i] is ActionCheckMultiple || _target.actions[i] is ActionParallel)
                {
                    _target.actions[i].SkipActionGUI(_target.actions, _target.actions[i].isDisplayed);
                }

                EditorGUILayout.EndVertical();
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Add new Action"))
            {
                Undo.RecordObject(_target, "Create action");
                AddAction(actionsManager.GetActionName(actionsManager.defaultClass), _target.actions.Count, _target);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(_target);
            }
        }
Пример #17
0
        protected void DrawSharedElements(ActionList _target)
        {
            if (IsActionListPrefab(_target))
            {
                //EditorGUILayout.HelpBox ("Scene-based Actions can not live in prefabs - use ActionList assets instead.", MessageType.Info);
                //return;
            }

            int numActions = 0;

            if (_target.source != ActionListSource.AssetFile)
            {
                numActions = _target.actions.Count;
                if (numActions < 1)
                {
                    numActions = 1;
                    AddAction(ActionsManager.GetDefaultAction(), -1, _target);
                }
            }

            EditorGUILayout.Space();

            if (_target.source == ActionListSource.InScene)
            {
                ActionListEditor.ResetList(_target);
            }

            actionsManager = AdvGame.GetReferences().actionsManager;
            if (actionsManager == null)
            {
                EditorGUILayout.HelpBox("An Actions Manager asset file must be assigned in the Game Editor Window", MessageType.Warning);
                OnEnable();
                return;
            }

            if (!actionsManager.displayActionsInInspector || _target.source == ActionListSource.AssetFile)
            {
                if (Application.isPlaying)
                {
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("Edit Actions", GUILayout.Height(40f)))
                    {
                        ActionListEditorWindow.OpenForActionList(_target);
                    }

                    bool isRunning = false;
                    if (Application.isPlaying)
                    {
                        if (KickStarter.actionListManager != null)
                        {
                            isRunning = KickStarter.actionListManager.IsListRunning(_target);
                        }
                    }

                    if (isRunning)
                    {
                        if (GUILayout.Button("Stop", GUILayout.Height(40f)))
                        {
                            _target.Kill();
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Run now", GUILayout.Height(40f)))
                        {
                            _target.Interact();
                        }
                    }
                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    if (GUILayout.Button("Edit Actions", GUILayout.Height(40f)))
                    {
                        ActionListEditorWindow.OpenForActionList(_target);
                    }
                }
                return;
            }
            else
            {
                EditorGUILayout.BeginHorizontal();

                GUI.enabled = (_target.source == ActionListSource.InScene);

                if (GUILayout.Button("Expand all", EditorStyles.miniButtonLeft))
                {
                    Undo.RecordObject(_target, "Expand actions");
                    foreach (AC.Action action in _target.actions)
                    {
                        action.isDisplayed = true;
                    }
                }
                if (GUILayout.Button("Collapse all", EditorStyles.miniButtonMid))
                {
                    Undo.RecordObject(_target, "Collapse actions");
                    foreach (AC.Action action in _target.actions)
                    {
                        action.isDisplayed = false;
                    }
                }

                GUI.enabled = true;

                if (GUILayout.Button("Action List Editor", EditorStyles.miniButtonMid))
                {
                    ActionListEditorWindow.OpenForActionList(_target);
                }
                GUI.enabled = Application.isPlaying;
                if (GUILayout.Button("Run now", EditorStyles.miniButtonRight))
                {
                    _target.Interact();
                }
                GUI.enabled = true;
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
            }

            for (int i = 0; i < _target.actions.Count; i++)
            {
                if (_target.actions[i] == null)
                {
                    ACDebug.LogWarning("An empty Action was found, and was deleted", _target);
                    _target.actions.RemoveAt(i);
                    numActions--;
                    continue;
                }

                _target.actions[i].AssignParentList(_target);

                CustomGUILayout.BeginVertical();
                EditorGUILayout.BeginHorizontal();
                int typeIndex = actionsManager.GetActionTypeIndex(_target.actions[i]);

                string actionLabel = " (" + i.ToString() + ") " + actionsManager.GetActionTypeLabel(_target.actions[i], true);
                actionLabel = actionLabel.Replace("\r\n", "");
                actionLabel = actionLabel.Replace("\n", "");
                actionLabel = actionLabel.Replace("\r", "");
                if (actionLabel.Length > 40)
                {
                    actionLabel = actionLabel.Substring(0, 40) + "..)";
                }

                _target.actions[i].isDisplayed = EditorGUILayout.Foldout(_target.actions[i].isDisplayed, actionLabel);
                if (!_target.actions[i].isEnabled)
                {
                    EditorGUILayout.LabelField("DISABLED", EditorStyles.boldLabel, GUILayout.MaxWidth(100f));
                }

                if (GUILayout.Button("", CustomStyles.IconCog))
                {
                    ActionSideMenu(i);
                }

                _target.actions[i].isAssetFile = false;

                EditorGUILayout.EndHorizontal();

                if (_target.actions[i].isBreakPoint)
                {
                    EditorGUILayout.HelpBox("Break point", MessageType.None);
                }

                if (_target.actions[i].isDisplayed)
                {
                    GUI.enabled = _target.actions[i].isEnabled;

                    if (!actionsManager.DoesActionExist(_target.actions[i].GetType().ToString()))
                    {
                        EditorGUILayout.HelpBox("This Action type is not listed in the Actions Manager", MessageType.Warning);
                    }
                    else
                    {
                        int newTypeIndex = ActionListEditor.ShowTypePopup(_target.actions[i], typeIndex);
                        if (newTypeIndex >= 0)
                        {
                            // Rebuild constructor if Subclass and type string do not match
                            ActionEnd _end = new ActionEnd();
                            _end.resultAction   = _target.actions[i].endAction;
                            _end.skipAction     = _target.actions[i].skipAction;
                            _end.linkedAsset    = _target.actions[i].linkedAsset;
                            _end.linkedCutscene = _target.actions[i].linkedCutscene;

                            Undo.RecordObject(_target, "Change Action type");
                            _target.actions[i] = RebuildAction(_target.actions[i], newTypeIndex, _target, -1, _end);
                        }

                        if (_target.NumParameters > 0)
                        {
                            _target.actions[i].ShowGUI(_target.parameters);
                        }
                        else
                        {
                            _target.actions[i].ShowGUI(null);
                        }
                    }
                }

                if (_target.actions[i].endAction == AC.ResultAction.Skip || _target.actions[i].numSockets == 2 || _target.actions[i] is ActionCheckMultiple || _target.actions[i] is ActionParallel)
                {
                    _target.actions[i].SkipActionGUI(_target.actions, _target.actions[i].isDisplayed);
                }

                GUI.enabled = true;

                CustomGUILayout.EndVertical();
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Add new action"))
            {
                Undo.RecordObject(_target, "Create action");
                numActions += 1;
            }

            _target = ActionListEditor.ResizeList(_target, numActions);
        }
Пример #18
0
        public static void ShowLocalParametersGUI(List <ActionParameter> localParameters, List <ActionParameter> assetParameters, bool isAssetFile)
        {
            int numParameters = assetParameters.Count;

            if (numParameters < localParameters.Count)
            {
                localParameters.RemoveRange(numParameters, localParameters.Count - numParameters);
            }
            else if (numParameters > localParameters.Count)
            {
                if (numParameters > localParameters.Capacity)
                {
                    localParameters.Capacity = numParameters;
                }
                for (int i = localParameters.Count; i < numParameters; i++)
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(localParameters));
                    localParameters.Add(newParameter);
                }
            }

            for (int i = 0; i < numParameters; i++)
            {
                string label = assetParameters[i].label;
                localParameters[i].parameterType = assetParameters[i].parameterType;

                if (assetParameters[i].parameterType == ParameterType.String)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(label + ":", GUILayout.Width(145f));
                    EditorStyles.textField.wordWrap = true;
                    localParameters[i].stringValue  = EditorGUILayout.TextArea(localParameters[i].stringValue, GUILayout.MaxWidth(400f));
                    EditorGUILayout.EndHorizontal();
                }
                else if (assetParameters[i].parameterType == ParameterType.Float)
                {
                    localParameters[i].floatValue = EditorGUILayout.FloatField(label + ":", localParameters[i].floatValue);
                }
                else if (assetParameters[i].parameterType == ParameterType.Integer)
                {
                    localParameters[i].intValue = EditorGUILayout.IntField(label + ":", localParameters[i].intValue);
                }
                else if (assetParameters[i].parameterType == ParameterType.Boolean)
                {
                    BoolValue boolValue = BoolValue.False;
                    if (localParameters[i].intValue == 1)
                    {
                        boolValue = BoolValue.True;
                    }

                    boolValue = (BoolValue)EditorGUILayout.EnumPopup(label + ":", boolValue);

                    if (boolValue == BoolValue.True)
                    {
                        localParameters[i].intValue = 1;
                    }
                    else
                    {
                        localParameters[i].intValue = 0;
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.GlobalVariable)
                {
                    if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager)
                    {
                        VariablesManager variablesManager = AdvGame.GetReferences().variablesManager;
                        localParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", variablesManager.vars, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning);
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.InventoryItem)
                {
                    if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager)
                    {
                        InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager;
                        localParameters[i].intValue = ActionRunActionList.ShowInvItemSelectorGUI(label + ":", inventoryManager.items, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning);
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.LocalVariable)
                {
                    if (KickStarter.localVariables)
                    {
                        localParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", KickStarter.localVariables.localVars, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning);
                    }
                }
                if (assetParameters[i].parameterType == ParameterType.GameObject)
                {
                    if (isAssetFile)
                    {
                        // ID
                        localParameters[i].intValue   = EditorGUILayout.IntField(label + " (ID):", localParameters[i].intValue);
                        localParameters[i].gameObject = null;
                    }
                    else
                    {
                        // Gameobject
                        localParameters[i].gameObject = (GameObject)EditorGUILayout.ObjectField(label + ":", localParameters[i].gameObject, typeof(GameObject), true);
                        localParameters[i].intValue   = 0;
                        if (localParameters[i].gameObject != null && localParameters[i].gameObject.GetComponent <ConstantID>() == null)
                        {
                            localParameters[i].gameObject.AddComponent <ConstantID>();
                        }
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.UnityObject)
                {
                    localParameters[i].objectValue = (Object)EditorGUILayout.ObjectField(label + ":", localParameters[i].objectValue, typeof(Object), true);
                }
            }
        }
Пример #19
0
        protected void DrawSharedElements(ActionList _target)
        {
            if (PrefabUtility.GetPrefabType(_target) == PrefabType.Prefab)
            {
                EditorGUILayout.HelpBox("Scene-based Actions can not live in prefabs - use ActionList assets instead.", MessageType.Info);
                return;
            }

            int numActions = 0;

            if (_target.source != ActionListSource.AssetFile)
            {
                numActions = _target.actions.Count;
                if (numActions < 1)
                {
                    numActions = 1;
                    AC.Action newAction = ActionList.GetDefaultAction();
                    _target.actions.Add(newAction);
                }
            }

            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();

            if (_target.source == ActionListSource.AssetFile)
            {
                GUI.enabled = false;
            }

            if (GUILayout.Button("Expand all", EditorStyles.miniButtonLeft))
            {
                Undo.RecordObject(_target, "Expand actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = true;
                }
            }
            if (GUILayout.Button("Collapse all", EditorStyles.miniButtonMid))
            {
                Undo.RecordObject(_target, "Collapse actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = false;
                }
            }

            GUI.enabled = true;

            if (GUILayout.Button("Action List Editor", EditorStyles.miniButtonMid))
            {
                if (_target.source == ActionListSource.AssetFile)
                {
                    if (_target.assetFile != null)
                    {
                        ActionListEditorWindow.Init(_target.assetFile);
                    }
                }
                else
                {
                    ActionListEditorWindow.Init(_target);
                }
            }
            if (!Application.isPlaying)
            {
                GUI.enabled = false;
            }
            if (GUILayout.Button("Run now", EditorStyles.miniButtonRight))
            {
                _target.Interact();
            }
            GUI.enabled = true;
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            if (_target.source == ActionListSource.AssetFile)
            {
                return;
            }

            ActionListEditor.ResetList(_target);

            if (actionsManager == null)
            {
                EditorGUILayout.HelpBox("An Actions Manager asset file must be assigned in the Game Editor Window", MessageType.Warning);
                OnEnable();
                return;
            }

            if (!actionsManager.displayActionsInInspector)
            {
                EditorGUILayout.HelpBox("As set by the Actions Manager, Actions are only displayed in the ActionList Editor window.", MessageType.Info);
                return;
            }

            for (int i = 0; i < _target.actions.Count; i++)
            {
                if (_target.actions[i] == null)
                {
                    ACDebug.LogWarning("An empty Action was found, and was deleted");
                    _target.actions.RemoveAt(i);
                    continue;
                }

                EditorGUILayout.BeginVertical("Button");
                EditorGUILayout.BeginHorizontal();
                int    typeIndex   = KickStarter.actionsManager.GetActionTypeIndex(_target.actions[i]);
                string actionLabel = " (" + (i).ToString() + ") " + actionsManager.EnabledActions[typeIndex].GetFullTitle() + _target.actions[i].SetLabel();
                _target.actions[i].isDisplayed = EditorGUILayout.Foldout(_target.actions[i].isDisplayed, actionLabel);
                if (!_target.actions[i].isEnabled)
                {
                    EditorGUILayout.LabelField("DISABLED", EditorStyles.boldLabel, GUILayout.MaxWidth(100f));
                }

                if (GUILayout.Button(Resource.CogIcon, GUILayout.Width(20f), GUILayout.Height(15f)))
                {
                    ActionSideMenu(i);
                }

                _target.actions[i].isAssetFile = false;

                EditorGUILayout.EndHorizontal();

                if (_target.actions[i].isBreakPoint)
                {
                    EditorGUILayout.HelpBox("Break point", MessageType.None);
                }

                if (_target.actions[i].isDisplayed)
                {
                    GUI.enabled = _target.actions[i].isEnabled;

                    if (!actionsManager.DoesActionExist(_target.actions[i].GetType().ToString()))
                    {
                        EditorGUILayout.HelpBox("This Action type has been disabled in the Actions Manager", MessageType.Warning);
                    }
                    else
                    {
                        int newTypeIndex = ActionListEditor.ShowTypePopup(_target.actions[i], typeIndex);
                        if (newTypeIndex >= 0)
                        {
                            // Rebuild constructor if Subclass and type string do not match
                            ActionEnd _end = new ActionEnd();
                            _end.resultAction   = _target.actions[i].endAction;
                            _end.skipAction     = _target.actions[i].skipAction;
                            _end.linkedAsset    = _target.actions[i].linkedAsset;
                            _end.linkedCutscene = _target.actions[i].linkedCutscene;

                            Undo.RecordObject(_target, "Change Action type");
                            _target.actions[i] = ActionListEditor.RebuildAction(_target.actions[i], newTypeIndex, _end.resultAction, _end.skipAction, _end.linkedAsset, _end.linkedCutscene);
                        }

                        if (_target.useParameters && _target.parameters != null && _target.parameters.Count > 0)
                        {
                            _target.actions[i].ShowGUI(_target.parameters);
                        }
                        else
                        {
                            _target.actions[i].ShowGUI(null);
                        }
                    }
                }

                if (_target.actions[i].endAction == AC.ResultAction.Skip || _target.actions[i].numSockets == 2 || _target.actions[i] is ActionCheckMultiple || _target.actions[i] is ActionParallel)
                {
                    _target.actions[i].SkipActionGUI(_target.actions, _target.actions[i].isDisplayed);
                }

                GUI.enabled = true;

                EditorGUILayout.EndVertical();
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Add new action"))
            {
                Undo.RecordObject(_target, "Create action");
                numActions += 1;
            }

            _target.actions = ActionListEditor.ResizeList(_target.actions, numActions);
        }
        public override void OnInspectorGUI()
        {
            ActionListAsset _target = (ActionListAsset)target;

            ActionListAssetEditor.ShowPropertiesGUI(_target);
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Expand all", EditorStyles.miniButtonLeft))
            {
                Undo.RecordObject(_target, "Expand actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = true;
                }
            }
            if (GUILayout.Button("Collapse all", EditorStyles.miniButtonMid))
            {
                Undo.RecordObject(_target, "Collapse actions");
                foreach (AC.Action action in _target.actions)
                {
                    action.isDisplayed = false;
                }
            }
            if (GUILayout.Button("Action List Editor", EditorStyles.miniButtonMid))
            {
                ActionListEditorWindow.Init(_target);
            }
            if (!Application.isPlaying)
            {
                GUI.enabled = false;
            }
            if (GUILayout.Button("Run now", EditorStyles.miniButtonRight))
            {
                if (KickStarter.actionListAssetManager != null)
                {
                    if (!_target.canRunMultipleInstances)
                    {
                        int numRemoved = KickStarter.actionListAssetManager.EndAssetList(_target);
                        if (numRemoved > 0)
                        {
                            ACDebug.Log("Removed 1 instance of ActionList asset '" + _target.name + "' because it is set to only run one at a time.", _target);
                        }
                    }

                    AdvGame.RunActionListAsset(_target);
                }
                else
                {
                    ACDebug.LogWarning("An AC PersistentEngine object must be present in the scene for ActionList assets to run.", _target);
                }
            }
            GUI.enabled = true;
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            if (actionsManager == null)
            {
                EditorGUILayout.HelpBox("An Actions Manager asset file must be assigned in the Game Editor Window", MessageType.Warning);
                OnEnable();
                return;
            }

            if (!actionsManager.displayActionsInInspector)
            {
                EditorGUILayout.HelpBox("As set by the Actions Manager, Actions are only displayed in the ActionList Editor window.", MessageType.Info);
                return;
            }

            for (int i = 0; i < _target.actions.Count; i++)
            {
                int typeIndex = KickStarter.actionsManager.GetActionTypeIndex(_target.actions[i]);

                if (_target.actions[i] == null)
                {
                    _target.actions.Insert(i, ActionListAssetEditor.RebuildAction(_target.actions[i], typeIndex, _target));
                }

                _target.actions[i].isAssetFile = true;

                EditorGUILayout.BeginVertical("Button");

                string actionLabel = " " + (i).ToString() + ": " + actionsManager.EnabledActions[typeIndex].GetFullTitle() + _target.actions[i].SetLabel();
                actionLabel = actionLabel.Replace("\r\n", "");
                actionLabel = actionLabel.Replace("\n", "");
                actionLabel = actionLabel.Replace("\r", "");
                if (actionLabel.Length > 40)
                {
                    actionLabel = actionLabel.Substring(0, 40) + "..)";
                }

                EditorGUILayout.BeginHorizontal();
                _target.actions[i].isDisplayed = EditorGUILayout.Foldout(_target.actions[i].isDisplayed, actionLabel);
                if (!_target.actions[i].isEnabled)
                {
                    EditorGUILayout.LabelField("DISABLED", EditorStyles.boldLabel, GUILayout.Width(100f));
                }

                if (GUILayout.Button(Resource.CogIcon, GUILayout.Width(20f), GUILayout.Height(15f)))
                {
                    ActionSideMenu(_target.actions[i]);
                }
                EditorGUILayout.EndHorizontal();

                if (_target.actions[i].isDisplayed)
                {
                    if (!actionsManager.DoesActionExist(_target.actions[i].GetType().ToString()))
                    {
                        EditorGUILayout.HelpBox("This Action type has been disabled in the Actions Manager", MessageType.Warning);
                    }
                    else
                    {
                        int newTypeIndex = ActionListEditor.ShowTypePopup(_target.actions[i], typeIndex);
                        if (newTypeIndex >= 0)
                        {
                            // Rebuild constructor if Subclass and type string do not match
                            ActionEnd _end = new ActionEnd();
                            _end.resultAction   = _target.actions[i].endAction;
                            _end.skipAction     = _target.actions[i].skipAction;
                            _end.linkedAsset    = _target.actions[i].linkedAsset;
                            _end.linkedCutscene = _target.actions[i].linkedCutscene;

                            Undo.RecordObject(_target, "Change Action type");

                            _target.actions.Insert(i, ActionListAssetEditor.RebuildAction(_target.actions[i], newTypeIndex, _target, _end.resultAction, _end.skipAction, _end.linkedAsset, _end.linkedCutscene));
                        }

                        EditorGUILayout.Space();
                        GUI.enabled = _target.actions[i].isEnabled;

                        if (_target.useParameters)
                        {
                            if (Application.isPlaying)
                            {
                                _target.actions[i].AssignValues(_target.parameters);
                            }

                            _target.actions[i].ShowGUI(_target.parameters);
                        }
                        else
                        {
                            if (Application.isPlaying)
                            {
                                _target.actions[i].AssignValues(null);
                            }
                            _target.actions[i].ShowGUI(null);
                        }
                    }
                    GUI.enabled = true;
                }

                if (_target.actions[i].endAction == AC.ResultAction.Skip || _target.actions[i] is ActionCheck || _target.actions[i] is ActionCheckMultiple || _target.actions[i] is ActionParallel)
                {
                    _target.actions[i].SkipActionGUI(_target.actions, _target.actions[i].isDisplayed);
                }

                EditorGUILayout.EndVertical();
                EditorGUILayout.Space();
            }

            if (GUILayout.Button("Add new Action"))
            {
                Undo.RecordObject(_target, "Create action");
                AddAction(actionsManager.GetDefaultAction(), _target.actions.Count, _target);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(_target);
            }
        }