80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "BehaviorTree/TestBTService_Log.h"
|
|
#include "BehaviorTree/BlackboardComponent.h"
|
|
#include "MockAI_BT.h"
|
|
|
|
#include UE_INLINE_GENERATED_CPP_BY_NAME(TestBTService_Log)
|
|
|
|
UTestBTService_Log::UTestBTService_Log(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
|
|
{
|
|
NodeName = "LogService";
|
|
|
|
INIT_SERVICE_NODE_NOTIFY_FLAGS();
|
|
|
|
LogActivation = INDEX_NONE;
|
|
LogDeactivation = INDEX_NONE;
|
|
KeyNameTick = NAME_None;
|
|
LogTick = INDEX_NONE;
|
|
KeyNameBecomeRelevant = NAME_None;
|
|
KeyNameCeaseRelevant = NAME_None;
|
|
bToggleValue = false;
|
|
|
|
// Force the service to tick every frame
|
|
Interval = 0.0f;
|
|
RandomDeviation = 0.0f;
|
|
}
|
|
|
|
void UTestBTService_Log::OnBecomeRelevant(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
|
|
{
|
|
Super::OnBecomeRelevant(OwnerComp, NodeMemory);
|
|
|
|
if (KeyNameBecomeRelevant != NAME_None)
|
|
{
|
|
OwnerComp.GetBlackboardComponent()->SetValueAsBool(KeyNameBecomeRelevant, bToggleValue ? !OwnerComp.GetBlackboardComponent()->GetValueAsBool(KeyNameBecomeRelevant) : true);
|
|
}
|
|
|
|
if (LogActivation >= 0)
|
|
{
|
|
UMockAI_BT::ExecutionLog.Add(LogActivation);
|
|
}
|
|
}
|
|
|
|
void UTestBTService_Log::OnCeaseRelevant(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
|
|
{
|
|
Super::OnCeaseRelevant(OwnerComp, NodeMemory);
|
|
|
|
if (KeyNameCeaseRelevant != NAME_None)
|
|
{
|
|
OwnerComp.GetBlackboardComponent()->SetValueAsBool(KeyNameCeaseRelevant, bToggleValue ? !OwnerComp.GetBlackboardComponent()->GetValueAsBool(KeyNameCeaseRelevant) : true);
|
|
}
|
|
|
|
if (LogDeactivation >= 0)
|
|
{
|
|
UMockAI_BT::ExecutionLog.Add(LogDeactivation);
|
|
}
|
|
}
|
|
|
|
void UTestBTService_Log::TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds)
|
|
{
|
|
Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
|
|
|
|
if (KeyNameTick != NAME_None && NumTicks >= TicksDelaySetKeyNameTick)
|
|
{
|
|
OwnerComp.GetBlackboardComponent()->SetValueAsBool(KeyNameTick, bToggleValue ? !OwnerComp.GetBlackboardComponent()->GetValueAsBool(KeyNameTick) : true);
|
|
}
|
|
|
|
if (LogTick >= 0)
|
|
{
|
|
UMockAI_BT::ExecutionLog.Add(LogTick);
|
|
}
|
|
++NumTicks;
|
|
}
|
|
|
|
void UTestBTService_Log::SetFlagOnTick(FName InKeyNameTick, bool bInCallTickOnSearchStart /* = false */)
|
|
{
|
|
KeyNameTick = InKeyNameTick;
|
|
bCallTickOnSearchStart = bInCallTickOnSearchStart;
|
|
}
|
|
|