27{
29 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Behaviors);
30 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Services);
31 Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
32 FBTTaskSelectTargetMemory* SelectTargetMemory = reinterpret_cast<FBTTaskSelectTargetMemory*>(NodeMemory);
33 if(SelectTargetMemory == nullptr){return;}
34 SelectTargetMemory->BestTarget = nullptr;
35 SelectTargetMemory->NearestTargetDistance = 10000000000.0f;
36 if(OwnerComp.GetAIOwner() ==
nullptr && OwnerComp.GetAIOwner()->GetPawn() ==
nullptr){UE_LOG(LogAIToolKit,
Error, TEXT(
"AI Owner NULL in Select Target Object"))return;}
37 const FVector OwnerLocation = OwnerComp.GetAIOwner()->GetPawn()->GetActorLocation();
39 if(AIActions != nullptr)
40 {
42 for(const auto Object : PerceivedObjects)
43 {
44 const float Distance = FVector::Distance(OwnerLocation, Object->GetActorLocation());
45 if(Distance < SelectTargetMemory->NearestTargetDistance)
46 {
47 SelectTargetMemory->NearestTargetDistance = Distance;
48 SelectTargetMemory->BestTarget = Object;
49 }
51 {
53 }
54 }
56 {
58 }
59 UBlackboardComponent* BlackboardComp = OwnerComp.GetBlackboardComponent();
60 if(BlackboardComp != nullptr )
61 {
62
64 {
65 BlackboardComp->SetValueAsObject(
TargetObject.SelectedKeyName, SelectTargetMemory->BestTarget);
66 }
67 }
68 }
69
70}
Definition AIActionsInterface.h:20
virtual TArray< AActor * > GetPerceivedObjects(const TArray< EAIStimuliType > Filters) const =0
FColor ObjectPointColor
Definition BTService_SelectTargetObject.h:37
virtual void TickNode(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
Definition BTService_SelectTargetObject.cpp:26
bool bDebugAllObjects
Definition BTService_SelectTargetObject.h:33
float PointSize
Definition BTService_SelectTargetObject.h:35
FColor TargetPointColor
Definition BTService_SelectTargetObject.h:39