Skip to content

Transition

GMIKE edited this page Mar 13, 2020 · 30 revisions

Сontent

Create

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
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
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");

Get

//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);

Delete

Delete with name

 //Throw exeption if transition not found
stateMachine.DeleteTransition("Transition1");

stateMachine.TryDeleteTransition("Transition1");

Delete with object

//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);

Entry

Triggered on transition from state. You can set many action for one transition

Action Syntax

Read about action parameters

 void ActionOnEtnry(State state, Dictionary<string, object> parameters)
 {
  //you need invoke transition in entry or exit action, differently work state machine will be end
  state.StateMachine.InvokeTransition("Transition1");
 }

Add action

 //you can set action with add. Throw exeption if ActionOnEtnry is null
 State state1 = stateMachine.AddState("State1", actionOnEntry: ActionOnEtnry);

 //you can set action after add. Throw exeption if  ActionOnEtnry is null
 State state1 = stateMachine.AddState("State1").OnEntry(ActionOnEtnry);

 //Throw exeption ActionOnEtnry is null
 state1.OnEntry(ActionOnEtnry); 
  
Clone this wiki locally