public override void OnInspectorGUI () { ActionListAsset _target = (ActionListAsset) target; actionsManager = AdvGame.GetReferences ().actionsManager; 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 window = (ActionListEditorWindow) EditorWindow.GetWindow (typeof (ActionListEditorWindow)); window.Repaint (); } if (!Application.isPlaying) { GUI.enabled = false; } if (GUILayout.Button ("Run now", EditorStyles.miniButtonRight)) { AdvGame.RunActionListAsset (_target); } GUI.enabled = true; EditorGUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i=0; i<_target.actions.Count; i++) { typeNumber = ActionListEditor.GetTypeNumber (_target.actions[i]); if (_target.actions[i] == null) { _target.actions.Insert (i, ActionListAssetEditor.RebuildAction (_target.actions[i], typeNumber, _target)); } categoryNumber = ActionListEditor.GetCategoryNumber (typeNumber); subCategoryNumber = ActionListEditor.GetSubCategoryNumber (_target.actions[i].title, categoryNumber); _target.actions[i].isAssetFile = true; EditorGUILayout.BeginVertical("Button"); string actionLabel = " " + (i).ToString() + ": " + _target.actions[i].title + _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 { EditorGUILayout.BeginHorizontal (); EditorGUILayout.LabelField ("Action type:", GUILayout.Width (150)); categoryNumber = EditorGUILayout.Popup(categoryNumber, actionsManager.GetActionCategories ()); subCategoryNumber = EditorGUILayout.Popup(subCategoryNumber, actionsManager.GetActionSubCategories (categoryNumber)); EditorGUILayout.EndVertical (); typeNumber = actionsManager.GetTypeNumber (categoryNumber, subCategoryNumber); // Rebuild constructor if Subclass and type string do not match if (_target.actions[i].GetType ().ToString () != actionsManager.GetActionName (typeNumber) && _target.actions[i].GetType ().ToString () != ("AC." + actionsManager.GetActionName (typeNumber))) { 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], typeNumber, _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].SkipActionGUI (_target.actions, _target.actions[i].isDisplayed); } EditorGUILayout.EndVertical(); EditorGUILayout.Space (); } if (GUILayout.Button("Add new Action")) { AddAction (actionsManager.GetActionName (actionsManager.defaultClass), _target.actions.Count, _target); } if (GUI.changed) { EditorUtility.SetDirty (_target); } }