private void UpdateCurrentState() { switch (CurrentState.Mode) { case StateMode.Inactive: case StateMode.Active: break; case StateMode.Loading: if (CurrentState.IsDoneLoading()) { CurrentState.LoadingComplete(); m_navigationPlan.StateLoaded(); var nextState = m_navigationPlan.CurrentStateToLoad(); if (nextState != null) { BeginLoadingState(nextState); } else { // All states have been loaded var statesToEnter = m_navigationPlan.NavigationEnded(); EnterStates(statesToEnter); } } break; case StateMode.Unloading: if (CurrentState.IsDoneUnloading()) { OnCurrentStateUnloadingFinished(); } break; default: m_logger.Error($"CurrentState.Mode out of range: {(int)CurrentState.Mode}"); break; } }
public void HandleTransition(string transition) { NavState targetState = null; if (Navigator.TryGetStateForTransition(transition, ref targetState)) { TransitionTo(targetState); } else { m_logger.Error($"Failed to find transition: {transition} [{Active.Path}]"); } }