public void Run() { AbstractState <T> previous = currentState; if (Manager.GetNewState(ref currentState)) { previous.OnExit(Entity); currentState.OnEnter(Entity); currentState.InState(Entity); } else { currentState.InState(Entity); } }