private TaskState RunSequence(BehaviourParentTask parentTask) { if (parentTask.CanExecute()) { TaskState state = RunTask(parentTask.GetChild(parentTask.CurrentChildIndex())); if (state == TaskState.Success || state == TaskState.Failure) { parentTask.OnChildExecuted(state); } return(state); } parentTask.OnReset(); return(TaskState.Failure); }
private TaskState RunParentTask(BehaviourParentTask parentTask) { switch (parentTask) { case BehaviourWeightSelector weightSelector: return(RunWeightSelector(weightSelector)); case BehaviourSelectorEvaluator selectorEvaluator: return(RunSelectorEvaluator(selectorEvaluator)); case BehaviourSelector selector: return(RunSelector(selector)); case BehaviourSequence sequence: return(RunSequence(sequence)); default: throw new Exception("Unknown " + parentTask + " Precess Mode"); } }