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 existTransitiontransition1=stateMachine.AddTransition("Transition1",state1,state2);Transitiontransition1=stateMachine.AddTransition("Transition1","state1",state2);Transitiontransition1=stateMachine.AddTransition("Transition1",state1,"state2");Transitiontransition1=stateMachine.AddTransition("Transition1","state1","state2");//Return null if transition already existTransitiontransition1=stateMachine.TryAddTransition(outboolresult,"Transition1",state1,state2);Transitiontransition1=stateMachine.TryAddTransition(outboolresult,"Transition1","state1",state2);Transitiontransition1=stateMachine.TryAddTransition(outboolresult,"Transition1",state1,"state2");Transitiontransition1=stateMachine.TryAddTransition(outboolresult,"Transition1","state1","state2");

You can add transition from this state

//Throw exeption if transition already exist//Add transition from state1 to state2Transitiontransition1=state1.AddTransitionFromThis("Transition1",state2);Transitiontransition1=state1.AddTransitionFromThis("Transition1","state2");//Return null if transition already existTransitiontransition1=state1.TryAddTransitionFromThis(outboolresult,"Transition1",state2);Transitiontransition1=state1.TryAddTransitionFromThis(outboolresult,"Transition1","state2");

You can add transition to this state

//Throw exeption if transition already exist//Add transition from state1 to state2Transitiontransition1=state2.AddTransitionToThis("Transition1",state1);Transitiontransition1=state2.AddTransitionToThis("Transition1","state1");//Return null if transition already existTransitiontransition1=state2.TryAddTransitionToThis(outboolresult,"Transition1",state1);Transitiontransition1=state2.TryAddTransitionToThis(outboolresult,"Transition1","state1");

Get

//Throw exeption if transition not foundTransitiontransition1=stateMachine.GetTransition("Transition1");//Return null if transition not foundTransitiontransition1=stateMachine.TryGetTransition("Transition1",outboolresult);

You can get all transitions from this state

//From state machine//Throw exeption if transitions not foundDictionary<string,Transition>transitions=stateMachine.GetTransitionsFromState(state1);Dictionary<string,Transition>transitions=stateMachine.GetTransitionsFromState("State1");//Return empty dictionary if transitions not foundDictionary<string,Transition>transitions=stateMachine.TryGetTransitionsFromState(state1,outboolresult);Dictionary<string,Transition>transitions=stateMachine.TryGetTransitionsFromState("State1",outboolresult);//From state//Throw exeption if transitions not foundDictionary<string,Transition>transitions=state1.GetTransitionsFromThis();//Return empty dictionary if transitions not foundDictionary<string,Transition>transitions=state1.TryGetTransitionsFromThis(outboolresult);

You can get all transitions to this state

//From state machine//Throw exeption if transitions not foundDictionary<string,Transition>transitions=stateMachine.GetTransitionsToState(state2);Dictionary<string,Transition>transitions=stateMachine.GetTransitionsToState("State2");//Return empty dictionary if transitions not foundDictionary<string,Transition>transitions=stateMachine.GetTransitionsToState(state2,outboolresult);Dictionary<string,Transition>transitions=stateMachine.GetTransitionsToState("State2",outboolresult);//From state//Throw exeption if transitions not foundDictionary<string,Transition>transitions=state2.GetTransitionsToThis();//Return empty dictionary if transitions not foundDictionary<string,Transition>transitions=state2.TryGetTransitionsToThis(outboolresult);

Exists

//You can check on existsboolTransition1IsExists=stateMachine.TransitionExists("Transition1")

Delete

Delete with name
//Throw exeption if transition not foundstateMachine.DeleteTransition("Transition1");stateMachine.TryDeleteTransition("Transition1");
Delete with object
//Throw exeption if transition not foundstateMachine.DeleteTransition(transition1);stateMachine.TryDeleteTransition(transition1);//Throw exeption if transition already delete from state machinetransition1.Delete();transition1.TryDelete(outboolresult);

Entry

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

Action Syntax
voidActionOnInvoke(Transitiontransition,Dictionary<string,object>parameters){}
Add action
//you can set action with addTransitiontransition1=stateMachine.AddTransition("Transition1",state1,state2,ActionOnInvoke);//you can set action after addTransitiontransition1=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

//ExampleDictionary<string,object>parameters=newDictionary<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