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);
        }