-
-
Notifications
You must be signed in to change notification settings - Fork 15
Transition
GMIKE edited this page Jun 2, 2020
·
30 revisions
You can add transition set states object or states name
//Throw exeption if transition already exist Transition transition1 = stateMachine.AddTransition("Transition1", state1, state2); Transition transition1 = stateMachine.AddTransition("Transition1", "state1", state2); Transition transition1 = stateMachine.AddTransition("Transition1", state1, "state2"); Transition transition1 = stateMachine.AddTransition("Transition1", "state1", "state2"); //Return null if transition already exist Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", state1, state2); Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", "state1", state2); Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", state1, "state2"); Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", "state1", "state2");
You can add transition from this state
//Throw exeption if transition already exist //Add transition from state1 to state2 Transition transition1 = state1.AddTransitionFromThis("Transition1", state2); Transition transition1 = state1.AddTransitionFromThis("Transition1", "state2"); //Return null if transition already exist Transition transition1 = state1.TryAddTransitionFromThis(out bool result, "Transition1", state2); Transition transition1 = state1.TryAddTransitionFromThis(out bool result, "Transition1", "state2");
You can add transition to this state
//Throw exeption if transition already exist //Add transition from state1 to state2 Transition transition1 = state2.AddTransitionToThis("Transition1", state1); Transition transition1 = state2.AddTransitionToThis("Transition1", "state1"); //Return null if transition already exist Transition transition1 = state2.TryAddTransitionToThis(out bool result, "Transition1", state1); Transition transition1 = state2.TryAddTransitionToThis(out bool result, "Transition1", "state1");
//Throw exeption if transition not found Transition transition1 = stateMachine.GetTransition("Transition1"); //Return null if transition not found Transition transition1 = stateMachine.TryGetTransition("Transition1", out bool result);
You can get all transitions from this state
//From state machine //Throw exeption if transitions not found Dictionary<string, Transition> transitions = stateMachine.GetTransitionsFromState(state1); Dictionary<string, Transition> transitions = stateMachine.GetTransitionsFromState("State1"); //Return empty dictionary if transitions not found Dictionary<string, Transition> transitions = stateMachine.TryGetTransitionsFromState(state1, out bool result); Dictionary<string, Transition> transitions = stateMachine.TryGetTransitionsFromState("State1", out bool result); //From state //Throw exeption if transitions not found Dictionary<string, Transition> transitions = state1.GetTransitionsFromThis(); //Return empty dictionary if transitions not found Dictionary<string, Transition> transitions = state1.TryGetTransitionsFromThis(out bool result);
You can get all transitions to this state
//From state machine //Throw exeption if transitions not found Dictionary<string, Transition> transitions = stateMachine.GetTransitionsToState(state2); Dictionary<string, Transition> transitions = stateMachine.GetTransitionsToState("State2"); //Return empty dictionary if transitions not found Dictionary<string, Transition> transitions = stateMachine.GetTransitionsToState(state2, out bool result); Dictionary<string, Transition> transitions = stateMachine.GetTransitionsToState("State2", out bool result); //From state //Throw exeption if transitions not found Dictionary<string, Transition> transitions = state2.GetTransitionsToThis(); //Return empty dictionary if transitions not found Dictionary<string, Transition> transitions = state2.TryGetTransitionsToThis(out bool result);
//You can check on exists bool Transition1IsExists = stateMachine.TransitionExists("Transition1")
//Throw exeption if transition not found stateMachine.DeleteTransition("Transition1"); stateMachine.TryDeleteTransition("Transition1");
//Throw exeption if transition not found stateMachine.DeleteTransition(transition1); stateMachine.TryDeleteTransition(transition1); //Throw exeption if transition already delete from state machine transition1.Delete(); transition1.TryDelete(out bool result);
Triggered on transition from state. You can set many action for one transition
void ActionOnInvoke(Transition transition, Dictionary<string, object> parameters) { }
//you can set action with add Transition transition1 = stateMachine.AddTransition("Transition1", state1, state2, ActionOnInvoke); //you can set action after add Transition transition1 = stateMachine.AddTransition("Transition1", state1, state2).OnInvoke(ActionOnInvoke); transition1.OnInvoke(ActionOnInvoke);
Transition invoke after entry and exit state (state from for transition) events
state.StateMachine.InvokeTransition("Transition1"); state.StateMachine.InvokeTransition(transition1); transition1.Invoke();
You can add parameters for invoke transition.
- Invoke Transition
- Entry State
- Exit State
Parameters it's collection of keys and values
//Example Dictionary<string, object> parameters = new Dictionary<string, object>() { { "Key1", Value1 } };
You can set parameters with invoke
StateMachine.InvokeTransition("Transition1", parameters);
After invoke
StateMachine.InvokeTransition("Transition3").AddParameters(parameters);
You can add parameters one by one
StateMachine.InvokeTransition("Transition3").AddParameter("Key1", Value1).AddParameter("Key2", Value1)
Or mixed addition
StateMachine.InvokeTransition("Transition1", parameters).AddParameter("Key1", Value1).AddParameters(parameters2).AddParameter("Key2", Value2);