private void SwitchTo(TTrigger trigger, TState sourceState, TState targetState)
        {
            OnBeforeActiveHierarchyPathChanges?.Invoke(trigger);

            ExitActivesUntil(sourceState);

            RemoveFromActivesUntil(sourceState);

            AddToActivesFrom(targetState);

            OnActiveHierarchyPathChanged?.Invoke(trigger);

            EnterActivesFrom(targetState);
        }
        public void SwitchTo(TState newActiveState)
        {
            if (IsValidSwitchTo(newActiveState, out TState activeSibling) == false)
            {
                throw new InvalidOperationException("Cannot switch to " + newActiveState);
            }

            OnBeforeActiveHierarchyPathChanges?.Invoke();

            ExitActivesUntil(activeSibling);

            RemoveFromActivesUntil(activeSibling);

            AddToActivesFrom(newActiveState);

            OnActiveHierarchyPathChanged?.Invoke();

            EnterActivesFrom(newActiveState);

            OnTransitionFinished?.Invoke();
        }
Ejemplo n.º 3
0
 private void CallOnBeforeActiveHierarchyPathChangesEvent()
 {
     OnBeforeActiveHierarchyPathChanges?.Invoke(_currentValidatedTransition.Trigger);
 }