protected virtual void DoActions(CharacterStateController controller) { for (int i = 0; i < actions.Length; i++) { actions[i].Execute(controller); } }
public void OnEnterState(CharacterStateController controller) { for (int i = 0; i < enterActions.Length; i++) { enterActions[i].Execute(controller); } }
private void CheckTransitions(CharacterStateController controller) { for (int i = 0; i < transitions.Length; i++) { bool decisionSucceeded = true; for (int j = 0; j < transitions[i].decision.Length; j++) { decisionSucceeded = decisionSucceeded && transitions[i].decision[j].Decide(controller); } if (decisionSucceeded) { controller.TransitionToState(transitions[i].trueState); } else { controller.TransitionToState(transitions[i].falseState); } } }
// public abstract void Execute(StateController controller); public virtual void Execute(CharacterStateController controller) { }
// Every time we are calling this function we are evaluating all the actions and decisions connected to the state public void UpdateState(CharacterStateController controller) { DoActions(controller); CheckTransitions(controller); }
public virtual bool Decide(CharacterStateController controller) { return(true); }