Click or drag to resize

SimpleStateMachineTonAfterTransition Event

Event that fires when the state machine has changed its state.

Namespace:  KSPDev.ProcessingUtils
Assembly:  KSPDev_Utils.2.5 (in KSPDev_Utils.2.5.dll) Version: 2.5 for KSP v1
Syntax
C#
public event SimpleStateMachineTOnStateChangeHandler onAfterTransition
Request Example View Source

Value

Type: KSPDev.ProcessingUtilsSimpleStateMachineTOnStateChangeHandler
Remarks
The event is fired after the new state has been applied to the state machine and all the transition callbacks are handled.
Examples
class SimpleStateMachineFree {
  public enum State {
    One,
    Two,
    Three
  };

  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
  }
}
See Also