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

void ActionOnInvoke(Transition transition, Dictionary<string, object> parameters)
{

}

Add action

//From State

Transition transition1 = stateMachine.AddTransition("Transition1", state1, state2, ActionOnInvoke);
Transition transition1 = stateMachine.AddTransition("Transition1", "state1", state2, ActionOnInvoke);
Transition transition1 = stateMachine.AddTransition("Transition1", state1, "state2", ActionOnInvoke);
Transition transition1 = stateMachine.AddTransition("Transition1", "state1", "state2", ActionOnInvoke);

Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", state1, state2, ActionOnInvoke);
Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", "state1", state2, ActionOnInvoke);
Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", state1, "state2", ActionOnInvoke);
Transition transition1 = stateMachine.TryAddTransition(out bool result, "Transition1", "state1", "state2", ActionOnInvoke);

//From this state

Transition transition1 = state1.AddTransitionFromThis("Transition1", state2, ActionOnInvoke);
Transition transition1 = state1.AddTransitionFromThis("Transition1", "state2", ActionOnInvoke);

Transition transition1 = state1.TryAddTransitionFromThis(out bool result, "Transition1", state2, ActionOnInvoke);
Transition transition1 = state1.TryAddTransitionFromThis(out bool result, "Transition1", "state2", ActionOnInvoke);

//To this state

Transition transition1 = state2.AddTransitionToThis("Transition1", state1, ActionOnInvoke);
Transition transition1 = state2.AddTransitionToThis("Transition1", "state1", ActionOnInvoke);

Transition transition1 = state2.TryAddTransitionToThis(out bool result, "Transition1", state1, ActionOnInvoke);
Transition transition1 = state2.TryAddTransitionToThis(out bool result, "Transition1", "state1", ActionOnInvoke);

Invoke

state.StateMachine.InvokeTransition("Transition1");

state.StateMachine.InvokeTransition(transition1);

transition1.Invoke();
Clone this wiki locally