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(); }
private void CallOnActiveHierarchyPathChangedEvent() { OnActiveHierarchyPathChanged?.Invoke(_currentValidatedTransition.Trigger); }