13#include "BehaviorTreeTypes.generated.h"
15class FBlackboardDecoratorDetails;
18class UBlackboardComponent;
28#define BT_VLOG(Context, Verbosity, Format, ...) UE_VLOG(Context->OwnerComp.IsValid() ? Context->OwnerComp->GetOwner() : NULL, LogBehaviorTree, Verbosity, Format, ##__VA_ARGS__)
29#define BT_SEARCHLOG(SearchData, Verbosity, Format, ...) UE_VLOG(SearchData.OwnerComp.GetOwner(), LogBehaviorTree, Verbosity, Format, ##__VA_ARGS__)
32#define USE_BEHAVIORTREE_DEBUGGER (1 && WITH_EDITORONLY_DATA)
47#ifndef AI_BLACKBOARD_KEY_SIZE_8
54#if WITH_EDITORONLY_DATA
55namespace UE::BehaviorTree::Messages
347 UE_DEPRECATED(5.2,
"Copying FBehaviorTreeInstance constructor has been deprecated in favor of move-constructor")
384 UE_DEPRECATED(5.4,
"This function is deprecated. Please use version that takes UBehaviorTreeComponent.")
605 static int32 NextSearchId;
636 UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = Blackboard)
645 UPROPERTY(
transient, EditInstanceOnly, BlueprintReadWrite, Category = Blackboard, meta = (ClampMin = "0", UIMin = "0"))
649 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Blackboard, Meta = (Tooltip = ""))
695UCLASS(Abstract, MinimalAPI)
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
EBTRestartMode
Definition BehaviorTreeTypes.h:118
@ ForceReevaluateRootNode
EBlackboardNotificationResult
Definition BehaviorTreeTypes.h:62
EBTNodeRelativePriority
Definition BehaviorTreeTypes.h:224
return Self
Definition CocoaThread.cpp:337
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
#define DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:684
#define DECLARE_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:687
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define MAX_uint8
Definition NumericLimits.h:19
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UMETA(...)
Definition ObjectMacros.h:747
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
bool Failed
Definition binka_ue_decode_test.cpp:18
Definition NameTypes.h:617
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
Definition DelegateSignatureImpl.inl:310
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition BTAuxiliaryNode.h:31
Definition BTCompositeNode.h:88
Definition BTTaskNode.h:34
Definition BehaviorTreeComponent.h:105
Definition BehaviorTreeTypes.h:697
static AIMODULE_API void SetBTLoggingContext(const UBTNode *NewBTLoggingContext)
Definition BehaviorTreeTypes.cpp:791
static FString GetBTLoggingContext()
Definition BehaviorTreeTypes.h:715
Definition BehaviorTree.h:16
Definition BlackboardData.h:46
Definition BlackboardKeyType.h:24
Definition BehaviorTreeTypes.h:75
constexpr uint8 OwnedByComposite
Definition BehaviorTreeTypes.h:79
constexpr int32 ReturnToParent
Definition BehaviorTreeTypes.h:77
constexpr int32 NotInitialized
Definition BehaviorTreeTypes.h:76
Definition BehaviorTreeTypes.h:156
Type
Definition BehaviorTreeTypes.h:159
@ AbortingTask
Definition BehaviorTreeTypes.h:162
@ InactiveTask
Definition BehaviorTreeTypes.h:163
@ Composite
Definition BehaviorTreeTypes.h:160
@ ActiveTask
Definition BehaviorTreeTypes.h:161
Definition BehaviorTreeTypes.h:215
Type
Definition BehaviorTreeTypes.h:217
@ Basic
Definition BehaviorTreeTypes.h:218
@ Detailed
Definition BehaviorTreeTypes.h:219
Definition BehaviorTreeTypes.h:100
Type
Definition BehaviorTreeTypes.h:102
@ SingleRun
Definition BehaviorTreeTypes.h:103
@ Looped
Definition BehaviorTreeTypes.h:104
Definition BehaviorTreeTypes.h:206
Type
Definition BehaviorTreeTypes.h:208
@ OutOfNodes
Definition BehaviorTreeTypes.h:210
@ Regular
Definition BehaviorTreeTypes.h:209
Definition BehaviorTreeTypes.h:143
Type
Definition BehaviorTreeTypes.h:147
Definition BehaviorTreeTypes.h:133
Type
Definition BehaviorTreeTypes.h:135
@ StoreSubtree
Definition BehaviorTreeTypes.h:137
@ Destroy
Definition BehaviorTreeTypes.h:136
Definition BehaviorTreeTypes.h:124
Type
Definition BehaviorTreeTypes.h:126
@ Initialize
Definition BehaviorTreeTypes.h:127
@ RestoreSubtree
Definition BehaviorTreeTypes.h:128
Definition BehaviorTreeTypes.h:84
Type
Definition BehaviorTreeTypes.h:87
Definition BehaviorTreeTypes.h:179
Type
Definition BehaviorTreeTypes.h:182
@ Unknown
Definition BehaviorTreeTypes.h:183
@ Remove
Definition BehaviorTreeTypes.h:185
@ Add
Definition BehaviorTreeTypes.h:184
Definition BehaviorTreeTypes.h:109
Type
Definition BehaviorTreeTypes.h:111
@ Safe
Definition BehaviorTreeTypes.h:112
@ Forced
Definition BehaviorTreeTypes.h:113
Definition BehaviorTreeTypes.h:168
Type
Definition BehaviorTreeTypes.h:171
@ Aborting
Definition BehaviorTreeTypes.h:173
@ Active
Definition BehaviorTreeTypes.h:172
@ Inactive
Definition BehaviorTreeTypes.h:174
Definition BlackboardKey.h:8
constexpr FKey InvalidKey
Definition BlackboardKey.h:33
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition BehaviorTreeTypes.h:473
FString Describe() const
Definition BehaviorTreeTypes.h:492
bool Contains(const FBTNodeIndex &Index) const
Definition BehaviorTreeTypes.h:487
bool IsSet() const
Definition BehaviorTreeTypes.h:482
FBTNodeIndex ToIndex
Definition BehaviorTreeTypes.h:478
bool operator==(const FBTNodeIndexRange &Other) const
Definition BehaviorTreeTypes.h:484
FBTNodeIndexRange(const FBTNodeIndex &From, const FBTNodeIndex &To)
Definition BehaviorTreeTypes.h:480
FBTNodeIndex FromIndex
Definition BehaviorTreeTypes.h:475
bool operator!=(const FBTNodeIndexRange &Other) const
Definition BehaviorTreeTypes.h:485
Definition BehaviorTreeTypes.h:450
bool operator==(const FBTNodeIndex &Other) const
Definition BehaviorTreeTypes.h:465
bool operator!=(const FBTNodeIndex &Other) const
Definition BehaviorTreeTypes.h:466
uint16 InstanceIndex
Definition BehaviorTreeTypes.h:454
FString Describe() const
Definition BehaviorTreeTypes.h:469
FBTNodeIndex(uint16 InInstanceIndex, uint16 InExecutionIndex)
Definition BehaviorTreeTypes.h:460
FBTNodeIndex()
Definition BehaviorTreeTypes.h:459
uint16 ExecutionIndex
Definition BehaviorTreeTypes.h:457
static constexpr uint16 InvalidIndex
Definition BehaviorTreeTypes.h:451
bool TakesPriorityOver(const FBTNodeIndex &Other) const
Definition BehaviorTreeTypes.cpp:458
bool IsSet() const
Definition BehaviorTreeTypes.h:463
friend uint32 GetTypeHash(const FBTNodeIndex &Other)
Definition BehaviorTreeTypes.h:467
Definition BehaviorTreeTypes.h:234
FNodeFlowData()
Definition BehaviorTreeTypes.h:240
uint16 ExecutionIndex
Definition BehaviorTreeTypes.h:235
uint16 bDiscardedTrigger
Definition BehaviorTreeTypes.h:238
uint16 bTrigger
Definition BehaviorTreeTypes.h:237
uint16 bPassed
Definition BehaviorTreeTypes.h:236
Definition BehaviorTreeTypes.h:232
FBehaviorTreeDebuggerInstance()
Definition BehaviorTreeTypes.h:243
TArray< FString > RuntimeDesc
Definition BehaviorTreeTypes.h:261
UBehaviorTree * TreeAsset
Definition BehaviorTreeTypes.h:246
TArray< uint16 > AdditionalActiveNodes
Definition BehaviorTreeTypes.h:255
TWeakObjectPtr< UBTCompositeNode > RootNode
Definition BehaviorTreeTypes.h:249
TArray< uint16 > ActivePath
Definition BehaviorTreeTypes.h:252
bool IsValid() const
Definition BehaviorTreeTypes.h:263
TArray< FNodeFlowData > PathFromPrevious
Definition BehaviorTreeTypes.h:258
Definition BehaviorTreeTypes.h:268
double TimeStamp
Definition BehaviorTreeTypes.h:278
TArray< FBehaviorTreeDebuggerInstance > InstanceStack
Definition BehaviorTreeTypes.h:272
static constexpr int32 InvalidExecutionId
Definition BehaviorTreeTypes.h:280
FBehaviorTreeExecutionStep()
Definition BehaviorTreeTypes.h:269
int32 ExecutionStepId
Definition BehaviorTreeTypes.h:283
bool bIsExecutionPaused
Definition BehaviorTreeTypes.h:286
TMap< FName, FString > BlackboardValues
Definition BehaviorTreeTypes.h:275
Definition BehaviorTreeTypes.h:291
int32 FirstNodeInstance
Definition BehaviorTreeTypes.h:305
TArray< uint8 > InstanceMemory
Definition BehaviorTreeTypes.h:302
TObjectPtr< UBTCompositeNode > RootNode
Definition BehaviorTreeTypes.h:296
FBehaviorTreeInstanceId()
Definition BehaviorTreeTypes.h:307
TObjectPtr< UBehaviorTree > TreeAsset
Definition BehaviorTreeTypes.h:293
TArray< uint16 > Path
Definition BehaviorTreeTypes.h:299
bool operator==(const FBehaviorTreeInstanceId &Other) const
Definition BehaviorTreeTypes.h:309
Definition BehaviorTreeTypes.h:320
void CleanupNodes(UBehaviorTreeComponent &OwnerComp, UBTCompositeNode &Node, EBTMemoryClear::Type CleanupType)
Definition BehaviorTreeTypes.cpp:125
uint32 GetAllocatedSize() const
Definition BehaviorTreeTypes.h:364
TObjectPtr< UBTNode > ActiveNode
Definition BehaviorTreeTypes.h:325
void ResetActiveAuxNodes()
Definition BehaviorTreeTypes.cpp:315
void AddToParallelTasks(FBehaviorTreeParallelTask &&ParallelTask)
Definition BehaviorTreeTypes.cpp:323
void RemoveFromActiveAuxNodes(UBTAuxiliaryNode *AuxNode)
Definition BehaviorTreeTypes.cpp:292
void IncMemoryStats() const
Definition BehaviorTreeTypes.h:365
uint8 InstanceIdIndex
Definition BehaviorTreeTypes.h:337
TObjectPtr< UBTCompositeNode > RootNode
Definition BehaviorTreeTypes.h:322
TArray< uint8 > InstanceMemory
Definition BehaviorTreeTypes.h:334
void DeactivateNodes(FBehaviorTreeSearchData &SearchData, uint16 InstanceIndex)
Definition BehaviorTreeTypes.cpp:420
TArrayView< const FBehaviorTreeParallelTask > GetParallelTasks() const
Definition BehaviorTreeTypes.h:403
TArrayView< const uint8 > GetInstanceMemory() const
Definition BehaviorTreeTypes.h:424
TEnumAsByte< EBTActiveNode::Type > ActiveNodeType
Definition BehaviorTreeTypes.h:340
TArray< TObjectPtr< UBTAuxiliaryNode > > ActiveAuxNodes
Definition BehaviorTreeTypes.h:328
bool IsValidParallelTaskIndex(const int32 Index) const
Definition BehaviorTreeTypes.h:415
void ExecuteOnEachAuxNode(TFunctionRef< void(const UBTAuxiliaryNode &)> ExecFunc)
Definition BehaviorTreeTypes.cpp:355
void ExecuteOnEachParallelTask(TFunctionRef< void(const FBehaviorTreeParallelTask &, const int32)> ExecFunc)
Definition BehaviorTreeTypes.cpp:368
TArrayView< UBTAuxiliaryNode *const > GetActiveAuxNodes() const
Definition BehaviorTreeTypes.h:382
FBTInstanceDeactivation DeactivationNotify
Definition BehaviorTreeTypes.h:343
bool HasActiveNode(uint16 TestExecutionIndex) const
Definition BehaviorTreeTypes.cpp:393
void DecMemoryStats() const
Definition BehaviorTreeTypes.h:366
void RemoveParallelTaskAt(int32 TaskIndex)
Definition BehaviorTreeTypes.cpp:331
AIMODULE_API FBehaviorTreeInstance()
Definition BehaviorTreeTypes.cpp:187
void MarkParallelTaskAsAbortingAt(int32 TaskIndex)
Definition BehaviorTreeTypes.cpp:342
void SetInstanceMemory(const TArray< uint8 > &Memory)
Definition BehaviorTreeTypes.cpp:348
void AddToActiveAuxNodes(UBTAuxiliaryNode *AuxNode)
Definition BehaviorTreeTypes.cpp:269
TArray< FBehaviorTreeParallelTask > ParallelTasks
Definition BehaviorTreeTypes.h:331
Definition BehaviorTreeTypes.h:191
EBTTaskStatus::Type Status
Definition BehaviorTreeTypes.h:196
bool operator==(const UBTTaskNode *OtherTask) const
Definition BehaviorTreeTypes.h:202
FBehaviorTreeParallelTask(const UBTTaskNode *InTaskNode, EBTTaskStatus::Type InStatus)
Definition BehaviorTreeTypes.h:199
bool operator==(const FBehaviorTreeParallelTask &Other) const
Definition BehaviorTreeTypes.h:201
FBehaviorTreeParallelTask()
Definition BehaviorTreeTypes.h:198
TObjectPtr< const UBTTaskNode > TaskNode
Definition BehaviorTreeTypes.h:193
Definition BehaviorTreeTypes.h:610
FBehaviorTreePropertyMemory()
Definition BehaviorTreeTypes.h:614
uint16 Offset
Definition BehaviorTreeTypes.h:611
uint16 BlockSize
Definition BehaviorTreeTypes.h:612
FBehaviorTreePropertyMemory(int32 Value)
Definition BehaviorTreeTypes.h:615
int32 Pack() const
Definition BehaviorTreeTypes.h:617
Definition BehaviorTreeTypes.h:534
void Reset()
Definition BehaviorTreeTypes.cpp:526
uint32 bPostponeSearch
Definition BehaviorTreeTypes.h:576
UBehaviorTreeComponent & OwnerComp
Definition BehaviorTreeTypes.h:536
FBTNodeIndex DeactivatedBranchStart
Definition BehaviorTreeTypes.h:561
int32 SearchId
Definition BehaviorTreeTypes.h:555
FBehaviorTreeSearchData()=delete
TArray< FBehaviorTreeSearchUpdate > PendingUpdates
Definition BehaviorTreeTypes.h:540
FBTNodeIndex SearchStart
Definition BehaviorTreeTypes.h:549
FBTNodeIndex RollbackDeactivatedBranchEnd
Definition BehaviorTreeTypes.h:570
void AddUniqueUpdate(const FBehaviorTreeSearchUpdate &UpdateInfo)
Definition BehaviorTreeTypes.cpp:476
FBehaviorTreeSearchData(UBehaviorTreeComponent &InOwnerComp)
Definition BehaviorTreeTypes.h:593
uint32 bPreserveActiveNodeMemoryOnRollback
Definition BehaviorTreeTypes.h:582
int32 RollbackInstanceIdx
Definition BehaviorTreeTypes.h:558
FBTNodeIndex DeactivatedBranchEnd
Definition BehaviorTreeTypes.h:564
uint32 bFilterOutRequestFromDeactivatedBranch
Definition BehaviorTreeTypes.h:573
uint32 bSearchInProgress
Definition BehaviorTreeTypes.h:579
FBTNodeIndex RollbackDeactivatedBranchStart
Definition BehaviorTreeTypes.h:567
FBTNodeIndex SearchRootNode
Definition BehaviorTreeTypes.h:546
void AssignSearchId()
Definition BehaviorTreeTypes.cpp:520
FBTNodeIndex SearchEnd
Definition BehaviorTreeTypes.h:552
TArray< FBehaviorTreeSearchUpdateNotify > PendingNotifies
Definition BehaviorTreeTypes.h:543
Definition BehaviorTreeTypes.h:524
uint16 InstanceIndex
Definition BehaviorTreeTypes.h:525
FBehaviorTreeSearchUpdateNotify()
Definition BehaviorTreeTypes.h:528
FBehaviorTreeSearchUpdateNotify(uint16 InInstanceIndex, EBTNodeResult::Type InNodeResult)
Definition BehaviorTreeTypes.h:529
TEnumAsByte< EBTNodeResult::Type > NodeResult
Definition BehaviorTreeTypes.h:526
Definition BehaviorTreeTypes.h:497
TObjectPtr< UBTAuxiliaryNode > AuxNode
Definition BehaviorTreeTypes.h:498
FBehaviorTreeSearchUpdate()
Definition BehaviorTreeTypes.h:511
uint16 InstanceIndex
Definition BehaviorTreeTypes.h:501
uint8 bPostUpdate
Definition BehaviorTreeTypes.h:506
TObjectPtr< UBTTaskNode > TaskNode
Definition BehaviorTreeTypes.h:499
FBehaviorTreeSearchUpdate(const UBTAuxiliaryNode *InAuxNode, uint16 InInstanceIndex, EBTNodeUpdateMode::Type InMode)
Definition BehaviorTreeTypes.h:514
uint8 bApplySkipped
Definition BehaviorTreeTypes.h:509
TEnumAsByte< EBTNodeUpdateMode::Type > Mode
Definition BehaviorTreeTypes.h:503
FBehaviorTreeSearchUpdate(const UBTTaskNode *InTaskNode, uint16 InInstanceIndex, EBTNodeUpdateMode::Type InMode)
Definition BehaviorTreeTypes.h:517
Definition BehaviorTreeTypes.h:624
FBlackboard::FKey GetSelectedKeyID() const
Definition BehaviorTreeTypes.h:661
friend FBlackboardDecoratorDetails
Definition BehaviorTreeTypes.h:692
bool IsSet() const
Definition BehaviorTreeTypes.h:684
bool NeedsResolving() const
Definition BehaviorTreeTypes.h:685
void AddStructFilter(UObject *Owner, FName PropertyName)
Definition BehaviorTreeTypes.h:678
void InvalidateResolvedKey()
Definition BehaviorTreeTypes.h:686
bool IsNone() const
Definition BehaviorTreeTypes.h:683
Definition BlackboardKey.h:18
Definition InputCoreTypes.h:50
Definition DelegateBase.h:179
Definition BehaviorTreeTypes.h:724
FScopedBTLoggingContext()=delete
FScopedBTLoggingContext(const UBTNode *Context)
Definition BehaviorTreeTypes.h:726
~FScopedBTLoggingContext()
Definition BehaviorTreeTypes.h:731
Definition IsValidVariadicFunctionArg.h:14
static constexpr bool Value
Definition IsValidVariadicFunctionArg.h:19
Definition NumericLimits.h:41
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25