public State <T> AddStateWithTasks(T id, OnAsyncEnterCallback <T> onEnterCB, OnAsyncExitCallback <T> onExitCB)
        {
            State <T> state = new State <T>(id, onEnterCB, onExitCB);

            AddState(id, state);
            return(state);
        }
        public IState <T> AddState(T id, OnSyncEnterCallback <T> onEnterCB, OnAsyncExitCallback <T> onExitCB)
        {
            UniTask OnEnter(T from)
            {
                onEnterCB(from); return(UniTask.CompletedTask);
            }

            State <T> state = new State <T>(id, OnEnter, onExitCB);

            AddState(id, state);
            return(state);
        }
 public State <T> AddState(T id, OnAsyncEnterCallback <T> onEnterCB, OnAsyncExitCallback <T> onExitCB)
 {
     return(AddStateWithTasks(id, onEnterCB, onExitCB));
 }
 public State(T id, OnAsyncEnterCallback <T> onEnter, OnAsyncExitCallback <T> onExit)
 {
     ID        = id;
     OnEnterCB = onEnter;
     OnExitCB  = onExit;
 }