UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BlackboardKeyType.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
6#include "UObject/Object.h"
7#include "InputCoreTypes.h"
10#include "BlackboardKeyType.generated.h"
11
13
14class UBlackboardComponent;
15
21
22UCLASS(EditInlineNew, Abstract, CollapseCategories, AutoExpandCategories=(Blackboard), MinimalAPI)
24{
26
27
28 AIMODULE_API virtual void PreInitialize(UBlackboardComponent& OwnerComp);
29
31 AIMODULE_API void InitializeKey(UBlackboardComponent& OwnerComp, FBlackboard::FKey KeyID);
32
34 AIMODULE_API virtual bool IsAllowedByFilter(UBlackboardKeyType* FilterOb) const;
35
37 AIMODULE_API bool WrappedGetLocation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, FVector& Location) const;
38
40 AIMODULE_API bool WrappedGetRotation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, FRotator& Rotation) const;
41
43 AIMODULE_API void WrappedFree(UBlackboardComponent& OwnerComp, uint8* MemoryBlock);
44
46 AIMODULE_API void WrappedClear(const UBlackboardComponent& OwnerComp, uint8* MemoryBlock) const;
47
49 AIMODULE_API bool WrappedIsEmpty(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
50
52 AIMODULE_API bool WrappedTestBasicOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, EBasicKeyOperation::Type Op) const;
53 AIMODULE_API bool WrappedTestArithmeticOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, EArithmeticKeyOperation::Type Op, int32 OtherIntValue, float OtherFloatValue) const;
54 AIMODULE_API bool WrappedTestTextOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, ETextKeyOperation::Type Op, const FString& OtherString) const;
55
57 AIMODULE_API virtual FString DescribeArithmeticParam(int32 IntValue, float FloatValue) const;
58
60 AIMODULE_API FString WrappedDescribeValue(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
61
63 AIMODULE_API virtual FString DescribeSelf() const;
64
66 AIMODULE_API virtual UBlackboardKeyType* UpdateDeprecatedKey();
67
69 AIMODULE_API const UBlackboardKeyType* GetKeyInstance(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
70 AIMODULE_API UBlackboardKeyType* GetKeyInstance(UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
71
73 AIMODULE_API virtual EBlackboardCompare::Type CompareValues(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock,
75
77 bool HasInstance() const;
78
80 bool IsInstanced() const;
81
83 uint16 GetValueSize() const;
84
86 EBlackboardKeyOperation::Type GetTestOperation() const;
87
88protected:
89
92
95
98
101
103 template<typename T>
104 static T GetValueFromMemory(const uint8* MemoryBlock)
105 {
106 return *((T*)MemoryBlock);
107 }
108
110 template<typename T>
111 static bool SetValueInMemory(uint8* MemoryBlock, const T& Value)
112 {
113 const bool bChanged = *((T*)MemoryBlock) != Value;
114 *((T*)MemoryBlock) = Value;
115
116 return bChanged;
117 }
118
120 template<typename T>
121 static bool SetWeakObjectInMemory(uint8* MemoryBlock, const TWeakObjectPtr<T>& Value)
122 {
124 const bool bChanged =
125 (Value.IsValid(false, true) != PrevValue->IsValid(false, true)) ||
126 (Value.IsStale(false, true) != PrevValue->IsStale(false, true)) ||
127 (*PrevValue) != Value;
128
129 *((TWeakObjectPtr<T>*)MemoryBlock) = Value;
130
131 return bChanged;
132 }
133
135
137 AIMODULE_API virtual void CopyValues(UBlackboardComponent& OwnerComp, uint8* MemoryBlock, const UBlackboardKeyType* SourceKeyOb, const uint8* SourceBlock);
138
140 AIMODULE_API virtual void InitializeMemory(UBlackboardComponent& OwnerComp, uint8* MemoryBlock);
141
143 AIMODULE_API virtual void FreeMemory(UBlackboardComponent& OwnerComp, uint8* MemoryBlock);
144
146 AIMODULE_API virtual bool GetLocation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, FVector& Location) const;
147
149 AIMODULE_API virtual bool GetRotation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, FRotator& Rotation) const;
150
152 AIMODULE_API virtual void Clear(UBlackboardComponent& OwnerComp, uint8* MemoryBlock);
153
155 AIMODULE_API virtual bool IsEmpty(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
156
158 AIMODULE_API virtual bool TestBasicOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, EBasicKeyOperation::Type Op) const;
159 AIMODULE_API virtual bool TestArithmeticOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, EArithmeticKeyOperation::Type Op, int32 OtherIntValue, float OtherFloatValue) const;
160 AIMODULE_API virtual bool TestTextOperation(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock, ETextKeyOperation::Type Op, const FString& OtherString) const;
161
163 AIMODULE_API virtual FString DescribeValue(const UBlackboardComponent& OwnerComp, const uint8* MemoryBlock) const;
164};
165
167// Inlines
168
169inline uint16 UBlackboardKeyType::GetValueSize() const
170{
171 return ValueSize;
172}
173
174inline EBlackboardKeyOperation::Type UBlackboardKeyType::GetTestOperation() const
175{
176 return SupportedOp;
177}
178
179inline bool UBlackboardKeyType::HasInstance() const
180{
181 return bCreateKeyInstance;
182}
183
184inline bool UBlackboardKeyType::IsInstanced() const
185{
186 return bIsInstanced;
187}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition EnumAsByte.h:22
Definition BlackboardKeyType.h:24
static T GetValueFromMemory(const uint8 *MemoryBlock)
Definition BlackboardKeyType.h:104
uint8 bCreateKeyInstance
Definition BlackboardKeyType.h:100
static bool SetWeakObjectInMemory(uint8 *MemoryBlock, const TWeakObjectPtr< T > &Value)
Definition BlackboardKeyType.h:121
friend UBlackboardComponent
Definition BlackboardKeyType.h:134
TEnumAsByte< EBlackboardKeyOperation::Type > SupportedOp
Definition BlackboardKeyType.h:94
uint16 ValueSize
Definition BlackboardKeyType.h:91
static bool SetValueInMemory(uint8 *MemoryBlock, const T &Value)
Definition BlackboardKeyType.h:111
uint8 bIsInstanced
Definition BlackboardKeyType.h:97
Definition Object.h:95
Type
Definition BlackboardKeyEnums.h:43
Type
Definition BlackboardKeyEnums.h:33
Type
Definition BlackboardKeyEnums.h:10
Type
Definition BlackboardKeyEnums.h:22
Type
Definition BlackboardKeyEnums.h:57
Definition BlackboardKeyType.h:17
int32 KeyIdx
Definition BlackboardKeyType.h:19
Definition BlackboardKey.h:18
Definition WeakObjectPtrTemplates.h:25