27{
29 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Behaviors);
30 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Services);
31
32 Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);
33 FCheckWeaponMemory* SelectTargetMemory = reinterpret_cast<FCheckWeaponMemory*>(NodeMemory);
34 if(SelectTargetMemory == nullptr){return;}
35 if(OwnerComp.GetAIOwner() ==
nullptr){UE_LOG(LogAIToolKit,
Error, TEXT(
"AI Owner NULL in BTS_CheckWeapon Object"))return;}
37 if(AIActions != nullptr)
38 {
39 SelectTargetMemory->bHasWeapon = AIActions->
GetHasWeapon();
40 SelectTargetMemory->WeaponFireMode = AIActions->GetWeaponFireMode();
41 SelectTargetMemory->bOutOfAmmo = AIActions->CheckAmmo(SelectTargetMemory->bNeedToReload);
42 SelectTargetMemory->WeaponFireRate = AIActions->GetWeaponFireRate();
44 {
45 FString DebugString;
46 DebugString += FString::Printf(TEXT("Fire Mode: %i"), SelectTargetMemory->WeaponFireMode);
47 DebugString += FString::Printf(TEXT("Fire Rate: %.2f"), SelectTargetMemory->WeaponFireRate);
48 if(SelectTargetMemory->bHasWeapon)
49 {
50 DebugString += FString::Printf(TEXT(" Has Weapon"));
51 }
52 if(SelectTargetMemory->bOutOfAmmo)
53 {
54 DebugString += FString::Printf(TEXT(" Out Of Ammo"));
55 }
56 if(SelectTargetMemory->bNeedToReload)
57 {
58 DebugString += FString::Printf(TEXT(" Need To Reload"));
59 }
60 DrawDebugString(GetWorld(),OwnerComp.GetAIOwner()->GetTargetLocation(), DebugString, nullptr, FColor::White, 1.0f);
61 UE_LOG(LogAIToolKit,
Warning, TEXT(
"%s"), *DebugString);
62 }
63
64 UBlackboardComponent* BlackboardComp = OwnerComp.GetBlackboardComponent();
65 if(BlackboardComp != nullptr )
66 {
68 {
69 BlackboardComp->SetValueAsBool(
bHasWeapon.SelectedKeyName, SelectTargetMemory->bHasWeapon);
70 }
72 {
73 BlackboardComp->SetValueAsBool(
bNeedToReload.SelectedKeyName, SelectTargetMemory->bNeedToReload);
74 }
76 {
77 BlackboardComp->SetValueAsBool(
bOutOfAmmo.SelectedKeyName, SelectTargetMemory->bOutOfAmmo);
78 }
80 {
81 BlackboardComp->SetValueAsEnum(
WeaponFireMode.SelectedKeyName, SelectTargetMemory->WeaponFireMode);
82 }
84 {
85 BlackboardComp->SetValueAsFloat(
WeaponFireRate.SelectedKeyName, SelectTargetMemory->WeaponFireRate);
86 }
87 }
88 }
89}
Definition AIActionsInterface.h:20
virtual bool GetHasWeapon() const =0
virtual void TickNode(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
Definition BTS_CheckWeapon.cpp:26