int32 UBTComposite_Question::GetNextChildHandler(FBehaviorTreeSearchData& SearchData, int32 PrevChild, EBTNodeResult::Type LastResult) const { int32 NextChildIdx = PrevChild+1; if (NextChildIdx == GetChildrenNum() || LastResult == EBTNodeResult::Failed) { NextChildIdx = BTSpecialChild::ReturnToParent; } return NextChildIdx; }
int32 UBTComposite_Selector::GetNextChildHandler(FBehaviorTreeSearchData& SearchData, int32 PrevChild, EBTNodeResult::Type LastResult) const { // success = quit int32 NextChildIdx = BTSpecialChild::ReturnToParent; if (PrevChild == BTSpecialChild::NotInitialized) { // newly activated: start from first NextChildIdx = 0; } else if (LastResult == EBTNodeResult::Failed && (PrevChild + 1) < GetChildrenNum()) { // failed = choose next child NextChildIdx = PrevChild + 1; } return NextChildIdx; }