public override void OnInspectorGUI() { fsm = target as FStateMachineMono; fsmImpl = fsm.FSM; base.OnInspectorGUI(); bool repos = false; bool regen = false; ProcessMouseDeltaPos(); DrawFSMGraph(ref regen, ref repos); ProcessMouseEvent(ref regen, ref repos); ProcessFocusCenter(); serializedObject.ApplyModifiedProperties(); if (regen) { GenerateStateMachine(serializedObject); GetCopys(); } else if (repos) { GetCopys(); } if (repaint || regen || repos || Application.isPlaying) { Repaint(); repaint = false; } }
public StateChangeEvent(FStateMachine <T> targetStateMachine) { Target = targetStateMachine.Target; TargetStateMachine = targetStateMachine; NewState = targetStateMachine.CurrentState; PreviousState = targetStateMachine.PreviousState; }
private void Start() { _testMovement = GetComponent <TestMovement>(); _movement = _testMovement.MovementState; _conditions = _testMovement.ConditionState; _movement.ChangeState(CharacterStates.MovementStates.Running); }
void DrawFSMGraph() { FStateMachineMono f = target as FStateMachineMono; fsmImpl = f.FSM; if (fsm != f) { fsm = f; fsm.IsDirty = true; } if (fsm.IsDirty) { Reposition(fsm); fsm.IsDirty = false; } foldoutStates = QuickGUI.DrawHeader("状态预览图", "foldout", false); if (foldoutStates) { QuickGUI.BeginContents(50); GUILayout.Space(10); EditorGUILayout.BeginHorizontal(); float scale = EditorGUILayout.Slider("滑动缩放视图", cellScale, 0.5f, 3f); EditorGUI.BeginDisabledGroup(Application.isPlaying); bool regen = GUILayout.Button("刷新", GUILayout.Height(20)); EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); if (regen || reloaded) { fsm.GenerateStateMachine(); fsm.IsDirty = true; reloaded = false; } if (Mathf.Abs(scale - cellScale) > 0.01f) { cellScale = scale; fsm.IsDirty = true; } if (fsm.IsDirty) { Reposition(fsm); fsm.IsDirty = false; } QuickGUI.ReportView(ref stateClipRect, stateViewPos, OnDrawFSMGraphCallback, Mathf.Max(350f, stateClipRect.width * 0.75f), 80); stateClipRectCenter = stateClipRect.size * 0.5f; QuickGUI.EndContents(); } if (fsm.IsDirty) { Reposition(fsm); fsm.IsDirty = false; } }
private void Start() { MovementState = new FStateMachine <CharacterStates.MovementStates>(gameObject, false); ConditionState = new FStateMachine <CharacterStates.CharacterConditionns>(gameObject, false); }