//Run each behaviour tree tick public CompletionStates Tick(GuardController guard) { //If the guard isn't still running, run its starting function if (status != CompletionStates.RUNNING) { OnInitialise(guard); } //Update the guard status = UpdateGuard(guard); //If the guard is no longer running, call its exit function if (status != CompletionStates.RUNNING) { OnExit(status); } return(status); }
public override CompletionStates UpdateGuard(GuardController guard) { //Run the child first CompletionStates returnState = child.Tick(guard); //Check if the child was a success, and if so flip it to a failure if (returnState == CompletionStates.SUCCESS) { return(CompletionStates.FAILURE); } //Check if the child was a failure, and if so flip it to a success else if (returnState == CompletionStates.FAILURE) { return(CompletionStates.SUCCESS); } //Don't mess with a running or error result else { return(returnState); } }
//Last thing the child runs when it is destroyed, will be overriden for each child public virtual void OnExit(CompletionStates state) { }