Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Transition

GMIKE edited this page Jun 2, 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
//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");

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

Exists

//You can check on exists
bool Transition1IsExists = stateMachine.TransitionExists("Transition1")

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

Invoke

Transition invoke after entry and exit state (state from for transition) events

state.StateMachine.InvokeTransition("Transition1");
state.StateMachine.InvokeTransition(transition1);
transition1.Invoke();

Parameters

You can add parameters for invoke transition.

It's parameters will be use in:

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

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /