UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EnvQueryTest.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"
13#include "EnvQueryTest.generated.h"
14
15class AActor;
16
17#if WITH_EDITOR
19#endif // WITH_EDITOR
20
21UENUM()
23{
24 // Use 0 as the base of normalization range.
26 // Use lowest item score as the base of normalization range.
28};
29
31{
32 inline const int32 Initial = 0;
33 inline const int32 DataProviders = 1;
34 inline const int32 ReferenceValueFix = 2;
35
37}
38
39#if WITH_EDITORONLY_DATA
41{
42 enum
43 {
44 // used for built-in functions (@see EEnvTestScoreEquation)
46 };
47
48 TArray<float> Samples;
49 float FilterLow;
50 float FilterHigh;
51 float ClampMin;
52 float ClampMax;
57};
58#endif
59
60UCLASS(Abstract, MinimalAPI)
62{
64
65
66 UPROPERTY()
67 int32 TestOrder;
68
70 UPROPERTY(EditDefaultsOnly, Category=Test)
72
75 UPROPERTY(EditDefaultsOnly, Category=Test)
76 FString TestComment;
77
79 UPROPERTY(EditDefaultsOnly, Category=Filter, AdvancedDisplay)
80 TEnumAsByte<EEnvTestFilterOperator::Type> MultipleContextFilterOp;
81
83 UPROPERTY(EditDefaultsOnly, Category = Score, AdvancedDisplay)
84 TEnumAsByte<EEnvTestScoreOperator::Type> MultipleContextScoreOp;
85
87 UPROPERTY(EditDefaultsOnly, Category=Filter)
89
91 UPROPERTY(EditDefaultsOnly, Category=Filter)
93
95 UPROPERTY(EditDefaultsOnly, Category=Filter)
96 FAIDataProviderFloatValue FloatValueMin;
97
99 UPROPERTY(EditDefaultsOnly, Category=Filter)
100 FAIDataProviderFloatValue FloatValueMax;
101
104
106 UPROPERTY(EditDefaultsOnly, Category=Score)
108
111 UPROPERTY(EditDefaultsOnly, Category=Score)
113
116 UPROPERTY(EditDefaultsOnly, Category=Score)
118
120 UPROPERTY(EditDefaultsOnly, Category = Score)
121 EEQSNormalizationType NormalizationType;
122
124 UPROPERTY(EditDefaultsOnly, Category=Score)
125 FAIDataProviderFloatValue ScoreClampMin;
126
128 UPROPERTY(EditDefaultsOnly, Category=Score)
129 FAIDataProviderFloatValue ScoreClampMax;
130
132 UPROPERTY(EditDefaultsOnly, Category=Score, Meta=(ClampMin="0.001", UIMin="0.001"))
133 FAIDataProviderFloatValue ScoringFactor;
134
138 UPROPERTY(EditDefaultsOnly, Category = Score, Meta=(EditCondition = "bDefineReferenceValue"))
139 FAIDataProviderFloatValue ReferenceValue;
140
142 UPROPERTY(EditDefaultsOnly, Category = Score, meta=(InlineEditConditionToggle))
143 bool bDefineReferenceValue;
144
146 TSubclassOf<UEnvQueryItemType> ValidItemType;
147
148#if WITH_EDITORONLY_DATA
151#endif
152
153 AIMODULE_API void SetWorkOnFloatValues(bool bWorkOnFloats);
154 inline bool GetWorkOnFloatValues() const { return bWorkOnFloatValues; }
155
156 inline bool CanRunAsFinalCondition() const
157 {
158 return (TestPurpose != EEnvTestPurpose::Score) // We are filtering and...
159 && ((TestPurpose == EEnvTestPurpose::Filter) // Either we are NOT scoring at ALL or...
160 || (ScoringEquation == EEnvTestScoreEquation::Constant)); // We are giving a constant score value for passing.
161 }
162
163private:
166 UPROPERTY()
167 uint32 bWorkOnFloatValues : 1;
168
169public:
170
172 virtual void RunTest(FEnvQueryInstance& QueryInstance) const { checkNoEntry(); }
173
175 bool IsSupportedItem(TSubclassOf<UEnvQueryItemType> ItemType) const;
176
178 AIMODULE_API bool IsContextPerItem(TSubclassOf<UEnvQueryContext> CheckContext) const;
179
181 AIMODULE_API FVector GetItemLocation(FEnvQueryInstance& QueryInstance, int32 ItemIndex) const;
182
184 inline FVector GetItemLocation(FEnvQueryInstance& QueryInstance, const FEnvQueryInstance::ItemIterator& Iterator) const
185 {
186 return GetItemLocation(QueryInstance, Iterator.GetIndex());
187 }
188
190 AIMODULE_API FRotator GetItemRotation(FEnvQueryInstance& QueryInstance, int32 ItemIndex) const;
191
193 inline FRotator GetItemRotation(FEnvQueryInstance& QueryInstance, const FEnvQueryInstance::ItemIterator& Iterator) const
194 {
195 return GetItemRotation(QueryInstance, Iterator.GetIndex());
196 }
197
199 AIMODULE_API AActor* GetItemActor(FEnvQueryInstance& QueryInstance, int32 ItemIndex) const;
200
202 inline AActor* GetItemActor(FEnvQueryInstance& QueryInstance, const FEnvQueryInstance::ItemIterator& Iterator) const
203 {
204 return GetItemActor(QueryInstance, Iterator.GetIndex());
205 }
206
208 AIMODULE_API void NormalizeItemScores(FEnvQueryInstance& QueryInstance);
209
210 inline bool IsScoring() const { return (TestPurpose != EEnvTestPurpose::Filter); }
211 inline bool IsFiltering() const { return (TestPurpose != EEnvTestPurpose::Score); }
212
213 AIMODULE_API FText DescribeFloatTestParams() const;
214 AIMODULE_API FText DescribeBoolTestParams(const FString& ConditionDesc) const;
215
216 AIMODULE_API virtual void PostLoad() override;
217
219 AIMODULE_API virtual void UpdateNodeVersion() override;
220
221#if WITH_EDITOR
222 AIMODULE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
223#endif
224
226 AIMODULE_API void UpdatePreviewData();
227};
228
230// Inlines
231
233{
234 return ItemType && (ItemType == ValidItemType || ItemType->IsChildOf(ValidItemType));
235};
#define checkNoEntry()
Definition AssertionMacros.h:316
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
EEQSNormalizationType
Definition EnvQueryTest.h:23
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Text.h:385
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SubclassOf.h:30
Definition EnvQueryNode.h:15
Definition EnvQueryTest.h:62
bool IsScoring() const
Definition EnvQueryTest.h:210
AActor * GetItemActor(FEnvQueryInstance &QueryInstance, const FEnvQueryInstance::ItemIterator &Iterator) const
Definition EnvQueryTest.h:202
virtual void RunTest(FEnvQueryInstance &QueryInstance) const
Definition EnvQueryTest.h:172
bool IsFiltering() const
Definition EnvQueryTest.h:211
FVector GetItemLocation(FEnvQueryInstance &QueryInstance, const FEnvQueryInstance::ItemIterator &Iterator) const
Definition EnvQueryTest.h:184
bool IsSupportedItem(TSubclassOf< UEnvQueryItemType > ItemType) const
Definition EnvQueryTest.h:232
FRotator GetItemRotation(FEnvQueryInstance &QueryInstance, const FEnvQueryInstance::ItemIterator &Iterator) const
Definition EnvQueryTest.h:193
bool IsChildOf() const
Definition Class.h:788
@ Constant
Definition EnvQueryTypes.h:97
Definition EnvQueryTest.h:31
const int32 Latest
Definition EnvQueryTest.h:36
const int32 Initial
Definition EnvQueryTest.h:32
const int32 DataProviders
Definition EnvQueryTest.h:33
const int32 ReferenceValueFix
Definition EnvQueryTest.h:34
Definition TestUtils.cpp:8
@ ClampMin
[PropertyMetadata] Used for float and integer properties. Specifies the minimum value that may be ent...
Definition ObjectMacros.h:1324
@ ClampMax
[PropertyMetadata] Used for float and integer properties. Specifies the maximum value that may be ent...
Definition ObjectMacros.h:1327
Definition AIDataProvider.h:143
Definition AIDataProvider.h:130
Definition EnvQueryTypes.h:793
Definition UnrealType.h:6865