コード例 #1
0
        public virtual T MoveTo(T targetStateKey, FiniteStateChangeEventArgs eventArgs = null)
        {
            if (!this.m_states.ContainsKey(targetStateKey))
            {
                throw new Exception("[FiniteStateMachine::MoveTo()] -> Target state did not exist. Please add the State<T> for key: '" + targetStateKey);
            }
            T previousStateKey = targetStateKey;

            if (this.m_currentState != null)
            {
                previousStateKey = this.m_currentState.StateKey;
                this.m_currentState._End();
            }
            this.m_currentState = this.m_states[targetStateKey];
            this.m_currentState._Begin(eventArgs, previousStateKey);
            return(this.m_currentState.StateKey);
        }
コード例 #2
0
 public override StateType MoveTo(StateType targetStateKey, FiniteStateChangeEventArgs eventArgs = null)
 {
     this.OnStateChange?.Invoke(eventArgs);
     return(base.MoveTo(targetStateKey, eventArgs));
 }
コード例 #3
0
ファイル: State.cs プロジェクト: Dentrax/Finite-State-Machine
 public abstract void Begin(FiniteStateChangeEventArgs eventArgs, T previousStateKey);
コード例 #4
0
ファイル: State.cs プロジェクト: Dentrax/Finite-State-Machine
 public virtual void _Begin(FiniteStateChangeEventArgs eventArgs, T previousStateKey)
 {
     this.Begin(eventArgs, previousStateKey);
 }