private StateRepresentation EnterState(StateRepresentation representation, Transition transition, object [] args) { // Enter the new state representation.Enter(transition, args); if (FiringMode.Immediate.Equals(_firingMode) && !State.Equals(transition.Destination)) { // This can happen if triggers are fired in OnEntry // Must update current representation with updated State representation = GetRepresentation(State); transition = new Transition(transition.Source, State, transition.Trigger, args); } // Recursively enter substates that have an initial transition if (representation.HasInitialTransition) { // Verify that the target state is a substate // Check if state has substate(s), and if an initial transition(s) has been set up. if (!representation.GetSubstates().Any(s => s.UnderlyingState.Equals(representation.InitialTransitionTarget))) { throw new InvalidOperationException($"The target ({representation.InitialTransitionTarget}) for the initial transition is not a substate."); } var initialTransition = new InitialTransition(transition.Source, representation.InitialTransitionTarget, transition.Trigger, args); representation = GetRepresentation(representation.InitialTransitionTarget); representation = EnterState(representation, initialTransition, args); } return(representation); }
public void Enter(Transition transition, params object[] entryArgs) { if (transition.IsReentry) { ExecuteEntryActions(transition, entryArgs); } else if (!Includes(transition.Source)) { if (_superstate != null && !(transition is InitialTransition)) { _superstate.Enter(transition, entryArgs); } ExecuteEntryActions(transition, entryArgs); } }
public void Enter(Transition transition, params object[] entryArgs) { Enforce.ArgumentNotNull(transition, nameof(transition)); if (transition.IsReentry) { ExecuteEntryActions(transition, entryArgs); } else if (!Includes(transition.Source)) { if (_superstate != null) _superstate.Enter(transition, entryArgs); ExecuteEntryActions(transition, entryArgs); } }
public void Enter(Transition transition, params object[] entryArgs) { if (transition != null) { if (transition.IsReentry) { ExecuteEntryActions(transition, entryArgs); } else if (!IncludeState(transition.Source)) { if (mSuperState != null) { mSuperState.Enter(transition, entryArgs); } ExecuteEntryActions(transition, entryArgs); } } }
private StateRepresentation EnterState(StateRepresentation representation, Transition transition, object [] args) { // Enter the new state representation.Enter(transition, args); // Recursively enter substates that have an initial transition if (representation.HasInitialTransition) { // Verify that the target state is a substate // Check if state has substate(s), and if an initial transition(s) has been set up. if (!representation.GetSubstates().Any(s => s.UnderlyingState.Equals(representation.InitialTransitionTarget))) { throw new InvalidOperationException($"The target ({representation.InitialTransitionTarget}) for the initial transition is not a substate."); } var initialTransition = new Transition(transition.Source, representation.InitialTransitionTarget, transition.Trigger); representation = GetRepresentation(representation.InitialTransitionTarget); representation = EnterState(representation, initialTransition, args); } return(representation); }