Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

56 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Tasks/AITask_RunEQS.h"
#include "AIController.h"
#include "VisualLogger/VisualLogger.h"
#include "GameplayTasksComponent.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(AITask_RunEQS)
UAITask_RunEQS::UAITask_RunEQS(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
bIsPausable = false;
EQSFinishedDelegate = FQueryFinishedSignature::CreateUObject(this, &UAITask_RunEQS::OnEQSRequestFinished);
}
UAITask_RunEQS* UAITask_RunEQS::RunEQS(AAIController* Controller, UEnvQuery* QueryTemplate)
{
if (QueryTemplate == nullptr || Controller == nullptr)
{
return nullptr;
}
UAITask_RunEQS* MyTask = UAITask::NewAITask<UAITask_RunEQS>(*Controller, EAITaskPriority::High);
if (MyTask)
{
MyTask->EQSRequest.QueryTemplate = QueryTemplate;
}
return MyTask;
}
void UAITask_RunEQS::Activate()
{
if (EQSRequest.QueryTemplate && OwnerController
&& OwnerController->GetBlackboardComponent()
&& OwnerController->GetPawn())
{
Super::Activate();
EQSRequest.Execute(*OwnerController->GetPawn(), OwnerController->GetBlackboardComponent(), EQSFinishedDelegate);
}
}
void UAITask_RunEQS::OnEQSRequestFinished(TSharedPtr<FEnvQueryResult> Result)
{
if (IsFinished() == false)
{
QueryResult = Result;
NotificationDelegate.ExecuteIfBound(Result);
EndTask();
}
}