public void FixedUpdateStack()
 {
     if (m_stateStack.Count > 0)
     {
         FlowStateBase state = m_stateStack.Peek();
         state.FixedUpdateState();
     }
 }
 public void UpdateStack()
 {
     if (m_stateStack.Count > 0)
     {
         FlowStateBase state = m_stateStack.Peek();
         state.UpdateState();
         if (state.IsDismissed())
         {
             m_stateStack.Pop();
         }
     }
 }
 public void PopState(FlowStateBase state)
 {
     Debug.Assert(m_stateStack.Count > 0 && m_stateStack.Peek() == state, "Trying to pop non active state");
     m_stateStack.Peek().EndActiveState();
 }
 public void PushState(FlowStateBase state)
 {
     Debug.Assert(m_stateStack.Count == 0 || m_stateStack.Peek() != state, "Trying to push already active state");
     m_stateStack.Push(state);
     state.SetStateController(this);
 }