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); }
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); }
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(); } }
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(); } } }
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); }
private void ShowParametersGUI(ActionListAsset _targetAsset) { EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Button"); EditorGUILayout.LabelField("Parameters", EditorStyles.boldLabel); ActionListEditor.ShowParametersGUI(_targetAsset.parameters); EditorGUILayout.EndVertical(); }
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(); } } }
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(); } } }
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; } }
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(); } }
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); } } }
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(); }
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); } }
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); }
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); } } }
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); } }