// Can't do this in OnEnable because it interferes with FSM init // when playing in the editor void Initialize() { fsmTemplate = fsmComponent.FsmTemplate; RefreshTemplate(); BuildFsmVariableList(); initialized = true; }
public void OnEnable() { fsmComponent = target as PlayMakerFSM; if (fsmComponent == null) return; // shouldn't happen fsmTemplate = fsmComponent.FsmTemplate; RefreshTemplate(); BuildFsmVariableList(); }
public void OnEnable() { fsmComponent = target as PlayMakerFSM; // can happen when playmaker is updated if (fsmComponent != null) { #if UNITY_3_4 serializedObject = new SerializedObject(fsmComponent); #endif fsmTemplate = fsmComponent.FsmTemplate; if (fsmTemplate != null) { VerifyTemplateVariables(); } BuildFsmVariableList(); } }
/// <summary> /// Open the Fsm Editor and select an Fsm Component /// </summary> public static void OpenWindow(FsmTemplate fsmTemplate) { OpenWindow(); FsmEditor.SelectFsm(fsmTemplate.fsm); }
void SelectTemplate(FsmTemplate template) { fsmComponent.SetFsmTemplate(template); fsmTemplate = template; CopyTemplateVariables(); BuildFsmVariableList(); EditorUtility.SetDirty(fsmComponent); }
void ClearTemplate() { fsmComponent.Reset(); fsmTemplate = null; BuildFsmVariableList(); if (FsmEditor.SelectedFsmComponent == fsmComponent) { FsmEditor.SelectFsm(fsmComponent.Fsm); } }
void ClearTemplate() { fsmComponent.Reset(); fsmTemplate = null; BuildFsmVariableList(); // If we were editing the template in the Playmaker editor // handle this gracefully by reselecting the base FSM if (FsmEditor.SelectedFsmComponent == fsmComponent) { FsmEditor.SelectFsm(fsmComponent.Fsm); } }
void SelectTemplate(FsmTemplate template) { if (template == fsmComponent.FsmTemplate) { return; // don't want to lose overridden variables } fsmComponent.SetFsmTemplate(template); fsmTemplate = template; BuildFsmVariableList(); EditorUtility.SetDirty(fsmComponent); FsmEditor.RefreshInspector(); // Keep Playmaker Editor in sync }
public override void OnInspectorGUI() { //EditorGUIUtility.LookLikeControls(); // can happen when playmaker is updated...? if (fsmComponent == null) { return; } // Make sure common PlayMaker styles are initialized FsmEditorStyles.Init(); // Begin GUI var fsm = fsmComponent.Fsm; // FSM Name EditorGUILayout.BeginHorizontal(); fsm.Name = EditorGUILayout.TextField(fsm.Name); if (GUILayout.Button(new GUIContent(Strings.Label_Edit, Strings.Tooltip_Edit_in_the_PlayMaker_Editor), GUILayout.MaxWidth(45))) { OpenInEditor(fsmComponent); GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); // FSM Template EditorGUILayout.BeginHorizontal(); var fsmTemplate = (FsmTemplate) EditorGUILayout.ObjectField(new GUIContent(Strings.Label_Use_Template, Strings.Tooltip_Use_Template), fsmComponent.FsmTemplate, typeof(FsmTemplate), false); if (fsmTemplate != fsmComponent.FsmTemplate) { fsmComponent.SetFsmTemplate(fsmTemplate); } if (GUILayout.Button(new GUIContent(Strings.Label_Browse, Strings.Tooltip_Browse_Templates), GUILayout.MaxWidth(45))) { DoSelectTemplateMenu(); } EditorGUILayout.EndHorizontal(); if (!Application.isPlaying && fsmComponent.FsmTemplate != null) { fsmTemplate = fsmComponent.FsmTemplate; fsm = fsmTemplate.fsm; GUI.enabled = false; } // Description fsm.Description = FsmEditorGUILayout.TextAreaWithHint(fsm.Description, Strings.Label_Description___, GUILayout.MinHeight(60)); // Help Url EditorGUILayout.BeginHorizontal(); fsm.DocUrl = FsmEditorGUILayout.TextFieldWithHint(fsm.DocUrl, Strings.Tooltip_Documentation_Url); var guiEnabled = GUI.enabled; GUI.enabled = !string.IsNullOrEmpty(fsm.DocUrl); if (FsmEditorGUILayout.HelpButton()) { Application.OpenURL(fsm.DocUrl); } EditorGUILayout.EndHorizontal(); GUI.enabled = guiEnabled; // Basic Settings /* if (GUILayout.Button(WatermarkLabel, EditorStyles.popup)) { GenerateWatermarkMenu().ShowAsContext(); } */ fsm.RestartOnEnable = GUILayout.Toggle(fsm.RestartOnEnable, new GUIContent(Strings.Label_Reset_On_Disable, Strings.Tooltip_Reset_On_Disable)); fsm.ShowStateLabel = GUILayout.Toggle(fsm.ShowStateLabel, new GUIContent(Strings.Label_Show_State_Label, Strings.Tooltip_Show_State_Label)); fsm.EnableDebugFlow = GUILayout.Toggle(fsm.EnableDebugFlow, new GUIContent(Strings.FsmEditorSettings_Enable_DebugFlow, Strings.FsmEditorSettings_Enable_DebugFlow_Tooltip)); GUI.enabled = true; // VARIABLES FsmEditorGUILayout.LightDivider(); showControls = EditorGUILayout.Foldout(showControls, new GUIContent(Strings.Label_Controls, Strings.Tooltip_Controls), FsmEditorStyles.CategoryFoldout); if (showControls) { //EditorGUIUtility.LookLikeInspector(); BuildFsmVariableList(); foreach (var fsmVar in fsmVariables) { if (fsmVar.ShowInInspector) { const string next = ":\n"; fsmVar.DoValueGUI(new GUIContent(fsmVar.Name, fsmVar.Name + (!string.IsNullOrEmpty(fsmVar.Tooltip) ? next + fsmVar.Tooltip : ""))); } } if (GUI.changed) { FsmEditor.RepaintAll(); } } // EVENTS //FsmEditorGUILayout.LightDivider(); //showExposedEvents = EditorGUILayout.Foldout(showExposedEvents, new GUIContent("Events", "To expose events here:\nIn PlayMaker Editor, Events tab, select an event and check Inspector."), FsmEditorStyles.CategoryFoldout); if (showControls) { //EditorGUI.indentLevel = 1; //GUI.enabled = Application.isPlaying; foreach (var fsmEvent in fsm.ExposedEvents) { GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(fsmEvent.Name); if (GUILayout.Button(fsmEvent.Name)) { fsm.Event(fsmEvent); } GUILayout.EndHorizontal(); } if (GUI.changed) { FsmEditor.RepaintAll(); } } //GUI.enabled = true; //INFO EditorGUI.indentLevel = 0; FsmEditorGUILayout.LightDivider(); showInfo = EditorGUILayout.Foldout(showInfo, Strings.Label_Info, FsmEditorStyles.CategoryFoldout); if (showInfo) { EditorGUI.indentLevel = 1; //FsmEditorGUILayout.LightDivider(); //GUILayout.Label("Summary", EditorStyles.boldLabel); showStates = EditorGUILayout.Foldout(showStates, string.Format(Strings.Label_States_Count, fsm.States.Length)); if (showStates) { string states = ""; if (fsm.States.Length > 0) { foreach (var state in fsm.States) { states += FsmEditorStyles.tab2 + state.Name + FsmEditorStyles.newline; } states = states.Substring(0, states.Length - 1); } else { states = FsmEditorStyles.tab2 + Strings.Label_None_In_Table; } GUILayout.Label(states); } showEvents = EditorGUILayout.Foldout(showEvents, string.Format(Strings.Label_Events_Count, fsm.Events.Length)); if (showEvents) { string events = ""; if (fsm.Events.Length > 0) { foreach (var fsmEvent in fsm.Events) { events += FsmEditorStyles.tab2 + fsmEvent.Name + FsmEditorStyles.newline; } events = events.Substring(0, events.Length - 1); } else { events = FsmEditorStyles.tab2 + Strings.Label_None_In_Table; } GUILayout.Label(events); } showVariables = EditorGUILayout.Foldout(showVariables, string.Format(Strings.Label_Variables_Count, fsmVariables.Count)); if (showVariables) { string variables = ""; if (fsmVariables.Count > 0) { foreach (var fsmVar in fsmVariables) { variables += FsmEditorStyles.tab2 + fsmVar.Name + FsmEditorStyles.newline; } variables = variables.Substring(0, variables.Length - 1); } else { variables = FsmEditorStyles.tab2 + Strings.Label_None_In_Table; } GUILayout.Label(variables); } } }
void SelectTemplate(object userdata) { var template = userdata as FsmTemplate; fsmComponent.SetFsmTemplate(template); fsmTemplate = template; CopyTemplateVariables(); BuildFsmVariableList(); EditorUtility.SetDirty(fsmComponent); }