public void TestMachine() { var sm = new SimpleStateMachine <State>(strict: false); sm.AddStateHandlers( State.One, enterHandler: oldState => Debug.Log("Now in state ONE"), leaveHandler: newState => Debug.LogFormat("Going into state: {0}", newState)); sm.onAfterTransition += (from, to) => Debug.LogFormat( "Move from {0} to {1}", DbgFormatter.Nullable(from), DbgFormatter.Nullable(to)); sm.currentState = State.One; // Start the machine. // Logs: // Now in state ONE // Move from NULL to One sm.currentState = State.Two; // Logs: // Going into state: Two // Move from One to Two sm.currentState = State.Three; // Logs: Move from Two to Three sm.currentState = null; // Stop the machine. // Logs: Move Three to NULL }
public void TestMachine() { var sm = new SimpleStateMachine <State>(strict: false); sm.AddStateHandlers( State.One, enterHandler: oldState => Debug.Log("Now in state ONE"), leaveHandler: newState => Debug.LogFormat("Going into state: {0}", newState)); sm.onBeforeTransition += (from, to) => Debug.LogFormat( "Before move: current={0}, new={1}", DbgFormatter.Nullable(sm.currentState), DbgFormatter.Nullable(to)); sm.onAfterTransition += (from, to) => Debug.LogFormat( "After move: old={0}, current={1}", DbgFormatter.Nullable(from), DbgFormatter.Nullable(sm.currentState)); sm.currentState = State.One; // Start the machine. // Logs: // Now in state ONE // Before move: current=NULL, new=One // After move: old=NULL, current=One sm.currentState = State.Two; // Logs: // Going into state: Two // Before move: current=One, new=Two // After move: old=One, current=Two sm.currentState = State.Three; // Logs: // Before move: current=Two, new=Three // After move: old=Two, current=Three sm.currentState = null; // Stop the machine. // Logs: // Before move: current=Three, new=NULL // After move: old=Three, current=NULL }
void LogFromTo(State?from, State?to) { Debug.LogFormat( "Move from {0} to {1}", DbgFormatter.Nullable(from), DbgFormatter.Nullable(to)); }