UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BTService.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "BTService.generated.h"
8
33UCLASS(Abstract, MinimalAPI)
35{
37
38 AIMODULE_API virtual FString GetStaticDescription() const override;
39
40 AIMODULE_API void NotifyParentActivation(FBehaviorTreeSearchData& SearchData);
41
42protected:
43
44 // Gets the description of our tick interval
45 AIMODULE_API FString GetStaticTickIntervalDescription() const;
46
47 // Gets the description for our service
48 AIMODULE_API virtual FString GetStaticServiceDescription() const;
49
51 UPROPERTY(Category=Service, EditAnywhere, meta=(ClampMin="0.001"))
52 float Interval;
53
55 UPROPERTY(Category=Service, EditAnywhere, meta=(ClampMin="0.0"))
56 float RandomDeviation;
57
59 UPROPERTY(Category = Service, EditAnywhere, AdvancedDisplay, meta=(EditCondition = bCanTickOnSearchStartBeExposed, EditConditionHides))
60 uint32 bCallTickOnSearchStart : 1;
61
63 UPROPERTY(Category = Service, EditAnywhere, AdvancedDisplay)
64 uint32 bRestartTimerOnEachActivation : 1;
65
67 uint32 bNotifyOnSearch : 1;
68
69#if WITH_EDITORONLY_DATA
73#endif // WITH_EDITORONLY_DATA
74
79 AIMODULE_API virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override;
80
85 AIMODULE_API virtual void OnSearchStart(FBehaviorTreeSearchData& SearchData);
86
87#if WITH_EDITOR
88 AIMODULE_API virtual FName GetNodeIconName() const override;
89#endif // WITH_EDITOR
90
92 AIMODULE_API virtual void ScheduleNextTick(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory);
93
94 template<typename TickNode, typename OnBecomeRelevant, typename OnCeaseRelevant, typename OnSearchStart>
95 void InitNotifyFlags(TickNode, OnBecomeRelevant, OnCeaseRelevant, OnSearchStart)
96 {
97 bNotifyTick = !std::is_same_v<decltype(&UBTService::TickNode), TickNode>;
98 bNotifyBecomeRelevant = !std::is_same_v<decltype(&UBTService::OnBecomeRelevant), OnBecomeRelevant>;
99 bNotifyCeaseRelevant = !std::is_same_v<decltype(&UBTService::OnCeaseRelevant), OnCeaseRelevant>;
100 bNotifyOnSearch = !std::is_same_v<decltype(&UBTService::OnSearchStart), OnSearchStart>;
101 }
102};
103
104#define INIT_SERVICE_NODE_NOTIFY_FLAGS() \
105 do { \
106 using NodeType = TRemovePointer<decltype(this)>::Type; \
107 InitNotifyFlags(&NodeType::TickNode, \
108 &NodeType::OnBecomeRelevant, \
109 &NodeType::OnCeaseRelevant, \
110 &NodeType::OnSearchStart); \
111 } while (false)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition BTAuxiliaryNode.h:31
virtual AIMODULE_API void OnCeaseRelevant(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory)
Definition BTAuxiliaryNode.cpp:131
virtual AIMODULE_API void OnBecomeRelevant(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory)
Definition BTAuxiliaryNode.cpp:126
Definition BTService.h:35
virtual AIMODULE_API void TickNode(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
Definition BTService.cpp:24
void InitNotifyFlags(TickNode, OnBecomeRelevant, OnCeaseRelevant, OnSearchStart)
Definition BTService.h:95
virtual AIMODULE_API void OnSearchStart(FBehaviorTreeSearchData &SearchData)
Definition BTService.cpp:29
Definition BehaviorTreeComponent.h:105
Definition BehaviorTreeTypes.h:534