Space Plunder
Loading...
Searching...
No Matches
UBTS_CheckWeapon Class Reference

This class is a Behavior Tree service node that checks the state of a weapon for an AI character. More...

#include <BTS_CheckWeapon.h>

Inheritance diagram for UBTS_CheckWeapon:

Classes

struct  FCheckWeaponMemory
 

Public Member Functions

 UBTS_CheckWeapon ()
 

Public Attributes

FBlackboardKeySelector bHasWeapon
 
FBlackboardKeySelector bNeedToReload
 
FBlackboardKeySelector bOutOfAmmo
 
FBlackboardKeySelector WeaponFireMode
 
FBlackboardKeySelector WeaponFireRate
 
bool bCheckHasWeapon = true
 
bool bCheckNeedToReload = true
 
bool bCheckAmmo = true
 
bool bCheckFireMode = true
 
bool bCheckFireRate = true
 
bool bDebuggingMode = false
 

Protected Member Functions

virtual void TickNode (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
 
virtual FString GetStaticDescription () const override
 
virtual uint16 GetInstanceMemorySize () const override
 

Detailed Description

This class is a Behavior Tree service node that checks the state of a weapon for an AI character.

Will Only Update what is Selected

Constructor & Destructor Documentation

◆ UBTS_CheckWeapon()

UBTS_CheckWeapon::UBTS_CheckWeapon ( )
17{
18 NodeName = TEXT("Check Weapon");
19 INIT_SERVICE_NODE_NOTIFY_FLAGS();
20
21#if WITH_EDITOR
22 bDebuggingMode = true;
23#endif // WITH_EDITOR
24}
bool bDebuggingMode
Definition BTS_CheckWeapon.h:48

Member Function Documentation

◆ GetInstanceMemorySize()

uint16 UBTS_CheckWeapon::GetInstanceMemorySize ( ) const
overrideprotectedvirtual
150{
151 return sizeof(FCheckWeaponMemory);
152}

◆ GetStaticDescription()

FString UBTS_CheckWeapon::GetStaticDescription ( ) const
overrideprotectedvirtual
92{
93 FString Description;
94 Description += FString::Printf(TEXT("\nChecking:"));
96 {
97 Description += FString::Printf(TEXT("\nCharacter has Weapon"));
98 }
100 {
101 Description += FString::Printf(TEXT("\nNeed to Reload"));
102 }
103 if(bCheckAmmo)
104 {
105 Description += FString::Printf(TEXT("\nIf Out Of Ammo"));
106 }
108 {
109 Description += FString::Printf(TEXT("\nFire Mode"));
110 }
112 {
113 Description += FString::Printf(TEXT("\nFire Rate"));
114 }
116 {
117 Description += FString::Printf(TEXT("\n DEBUG ACTIVE"));
118 }
119 if(!bOutOfAmmo.SelectedKeyName.IsValid() && bCheckAmmo)
120 {
121 Description += FString::Printf(TEXT("\nbOutOfAmmo: Not SET"));
122 }
123 if(!bHasWeapon.SelectedKeyName.IsValid() && bCheckHasWeapon)
124 {
125 Description += FString::Printf(TEXT("\nbHasWeapon: Not SET"));
126 }
127 if(!bNeedToReload.SelectedKeyName.IsValid() && bCheckNeedToReload)
128 {
129 Description += FString::Printf(TEXT("\nbNeedToReload: Not SET"));
130 }
131 if(!WeaponFireMode.SelectedKeyName.IsValid() && bCheckFireMode)
132 {
133 Description += FString::Printf(TEXT("\nWeaponFireMode: Not SET"));
134 }
135 if(!WeaponFireRate.SelectedKeyName.IsValid() && bCheckFireRate)
136 {
137 Description += FString::Printf(TEXT("\nWeaponFireRate: Not SET"));
138 }
139 return Description;
140}
bool bCheckFireMode
Definition BTS_CheckWeapon.h:43
bool bCheckAmmo
Definition BTS_CheckWeapon.h:41
FBlackboardKeySelector bHasWeapon
Definition BTS_CheckWeapon.h:26
bool bCheckHasWeapon
Definition BTS_CheckWeapon.h:37
bool bCheckFireRate
Definition BTS_CheckWeapon.h:45
FBlackboardKeySelector WeaponFireMode
Definition BTS_CheckWeapon.h:32
FBlackboardKeySelector bNeedToReload
Definition BTS_CheckWeapon.h:28
bool bCheckNeedToReload
Definition BTS_CheckWeapon.h:39
FBlackboardKeySelector WeaponFireRate
Definition BTS_CheckWeapon.h:34
FBlackboardKeySelector bOutOfAmmo
Definition BTS_CheckWeapon.h:30

◆ TickNode()

void UBTS_CheckWeapon::TickNode ( UBehaviorTreeComponent & OwnerComp,
uint8 * NodeMemory,
float DeltaSeconds )
overrideprotectedvirtual
27{
28 TRACE_CPUPROFILER_EVENT_SCOPE(UBTS_CheckWeapon::TickNode);
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;}
36 const IAIActionsInterface* AIActions = Cast<IAIActionsInterface>(OwnerComp.GetAIOwner());
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 //- @TODO in the Blackboard, Set Blackboard Wait Time (FireRate * x) then stop fire if in auto //
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 }
75 if(bCheckAmmo)
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

Member Data Documentation

◆ bCheckAmmo

bool UBTS_CheckWeapon::bCheckAmmo = true

◆ bCheckFireMode

bool UBTS_CheckWeapon::bCheckFireMode = true

◆ bCheckFireRate

bool UBTS_CheckWeapon::bCheckFireRate = true

◆ bCheckHasWeapon

bool UBTS_CheckWeapon::bCheckHasWeapon = true

◆ bCheckNeedToReload

bool UBTS_CheckWeapon::bCheckNeedToReload = true

◆ bDebuggingMode

bool UBTS_CheckWeapon::bDebuggingMode = false

◆ bHasWeapon

FBlackboardKeySelector UBTS_CheckWeapon::bHasWeapon

◆ bNeedToReload

FBlackboardKeySelector UBTS_CheckWeapon::bNeedToReload

◆ bOutOfAmmo

FBlackboardKeySelector UBTS_CheckWeapon::bOutOfAmmo

◆ WeaponFireMode

FBlackboardKeySelector UBTS_CheckWeapon::WeaponFireMode

◆ WeaponFireRate

FBlackboardKeySelector UBTS_CheckWeapon::WeaponFireRate

The documentation for this class was generated from the following files: