Skip to content

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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy