This issue makes BP BT decorators not being able to run condition checking every tick.
The core issue is here:
bool UBTDecorator_BlueprintBase::GetShouldAbort(UBehaviorTreeComponent& OwnerComp) const { // if there's no condition-checking function implemented we always want to abort on any change if (PerformConditionCheckImplementations == 0) { return true; } const bool bIsOnActiveBranch = OwnerComp.IsExecutingBranch(GetMyNode(), GetChildIndex()); bool bShouldAbort = false; if (bIsOnActiveBranch) { bShouldAbort = (FlowAbortMode == EBTFlowAbortMode::Self || FlowAbortMode == EBTFlowAbortMode::Both) && CalculateRawConditionValueImpl(OwnerComp) == IsInversed(); } else { bShouldAbort = (FlowAbortMode == EBTFlowAbortMode::LowerPriority || FlowAbortMode == EBTFlowAbortMode::Both) && CalculateRawConditionValueImpl(OwnerComp) != IsInversed(); } return bShouldAbort; }
bIsOnActiveBranch ends up being false when there are more then one BP decorator on BT's first level
1. open a project containing AI
2. make an AI use the BT that has been attached to the ticket
Is: BT prints debug info on screen every 5 seconds
Should be: printing every frame.
Head over to the existing Questions & Answers thread and let us know what's up.