public StateType RegisterState <StateType>() where StateType : IState, new() { StateType newState = new StateType(); newState.Internal_Initialize(this, m_GameObject); newState.Initialize(); AddState(newState.State, newState); return(newState); }