public override void OnInspectorGUI() { DrawDefaultInspector(); if (!PanelManagerWindow.IsWindowOpen) { if (GUILayout.Button("Open Panel Manager")) { PanelManagerWindow.DoWindow(); } } }
public override void OnInspectorGUI() { var it = serializedObject.GetIterator(); it.NextVisible(true); EditorGUILayout.PropertyField(it, true); EditorGUILayout.PropertyField(serializedObject.FindProperty("PanelType")); EditorGUILayout.PropertyField(serializedObject.FindProperty("PanelProperties"), true); eventsFoldout = EditorGUILayout.Foldout(eventsFoldout, "Events", true); if (eventsFoldout) { EditorGUILayout.PropertyField(serializedObject.FindProperty("OnPanelOpen")); EditorGUILayout.PropertyField(serializedObject.FindProperty("OnPanelOpenEnd")); EditorGUILayout.PropertyField(serializedObject.FindProperty("OnPanelClose")); EditorGUILayout.PropertyField(serializedObject.FindProperty("OnPanelCloseEnd")); } serializedObject.ApplyModifiedProperties(); var prevColor = GUI.contentColor; GUI.contentColor = Color.red; GUI.contentColor = prevColor; WooPanel myScript = (WooPanel)target; if (myScript == null) { return; } var animator = myScript.gameObject.GetComponent <Animator>(); if (targets.Length > 1) { return; } ProcessEffects(); if (animator.runtimeAnimatorController == null || animator.runtimeAnimatorController.name == "Default Panel Controller") { var controllerName = target.name + " Controller.controller"; if (GUILayout.Button("Create Mirrored \"" + controllerName + "\"")) { CreateMirroredAnimator(myScript.gameObject, controllerName); } if (GUILayout.Button("Create \"" + controllerName + "\"")) { CreateAnimator(myScript.gameObject, controllerName); } } else { bool found = false; if (!myScript.IsMirrored()) { if (GUILayout.Button("Make Open/Close mirrored")) { ConvertToMirrored(); } } else { if (GUILayout.Button("Make Open/Close separate")) { ConvertToSeparate(); } } for (int i = 0; i < animator.runtimeAnimatorController.animationClips.Length; i++) { var clip = animator.runtimeAnimatorController.animationClips[i]; if (clip.name == PANEL_OPENED_STATE) { found = true; } } if (!found) { if (GUILayout.Button("Add Mirrored states to controller")) { CreateAnimatorStates(animator.runtimeAnimatorController as AnimatorController, true); } if (GUILayout.Button("Add Open/Close states to controller")) { CreateAnimatorStates(animator.runtimeAnimatorController as AnimatorController); } } } if (target.GetType() == typeof(WooPanel)) { GUILayout.BeginHorizontal(); GUILayout.Label("Script Name: "); var prevScriptName = scriptName; if (!wasEdited) { scriptName = target.name; } scriptName = GUILayout.TextField(scriptName); if (scriptName != prevScriptName) { wasEdited = true; } bool exists = false; if (!File.Exists(GetFilePath(scriptName))) { if (GUILayout.Button("Create \"" + GenerateFileName(scriptName) + "\"")) { CreateScript(((WooPanel)target).gameObject, scriptName); } } else { if (GUILayout.Button("Replace with \"" + GenerateFileName(scriptName) + "\"")) { CreateScript(((WooPanel)target).gameObject, scriptName); } exists = true; } GUILayout.EndHorizontal(); var msg = ""; if (waitForCompile) { msg = "Please, wait while the script is compiling. It will add automatically."; } else if (exists) { msg = "Script with this name already exists. "; } else { msg = "Component will be created and will replace WooPanel on this gameobject."; } EditorGUILayout.HelpBox(msg, MessageType.Info); } if (waitForCompile) { if (!EditorApplication.isCompiling) { if (shouldAddScript) { waitForCompile = false; shouldAddScript = false; targetGameObject.AddComponent(System.Type.GetType(componentName + ",Assembly-CSharp")); DestroyImmediate(targetGameObject.GetComponent <WooPanel>()); return; } shouldAddScript = true; } } if (!(target is GenericPanelEditor)) { while (it.NextVisible(false)) { var name = it.name; if (name != "PanelType" && name != "PanelProperties" && name != "OnPanelOpen" && name != "OnPanelOpenEnd" && name != "OnPanelClose" && name != "OnPanelCloseEnd") { EditorGUILayout.PropertyField(it, true); } } } if (!PanelManagerWindow.IsWindowOpen) { if (GUILayout.Button("Open Panel Manager")) { PanelManagerWindow.DoWindow(); } } serializedObject.ApplyModifiedProperties(); }