/// <summary> /// Add a new state that will be taken care of /// </summary> /// <param name="state"></param> public void AddState(State state) { if (!m_states.ContainsKey(state.Name())) { state.Setup(this); m_states.Add(state.Name(), state); FSMHelper.Log(LogVerbose, $"New State added : {state.Name()}"); } }
/// <summary> /// State will be changed immediately. /// </summary> /// <param name="newState"></param> public void ChangeState(string newState) { if (m_states.ContainsKey(newState) && !string.Equals(CurrentState, newState)) { m_previousState = m_currentState; m_previousState?.OnLeave(); m_currentState = m_states[newState]; m_currentState.OnEnter(); CurrentState = newState; FSMHelper.Log(LogVerbose, $"State changed from {m_previousState.Name()} to {m_currentState.Name()}"); } }
/// <summary> /// True if in state equals current state, otherwise false. /// </summary> public bool IsInState(string state) { return(string.Equals(m_currentState.Name(), state)); }