public IEnumerator ChangeStateCoroutine(InGameState gameState) { m_changingState = true; //game states ClientState currentState = null; ClientState newState = null; if (m_clientGameState != InGameState.DEFAULT) { GetState(m_clientGameState); } if (gameState != InGameState.DEFAULT) { //get new state newState = GetState(gameState); } //Debug.Log("States Fetched"); if (currentState != null) { //transittion from old state yield return(StartCoroutine(currentState.OnExit())); } //Debug.Log("Exited state"); if (newState != null) { //transittion into new state yield return(StartCoroutine(newState.OnEnter())); } //Debug.Log("entered state"); m_clientGameState = gameState; m_changingState = false; yield return(null); }