UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EnvQueryDebugHelpers.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 "UObject/Object.h"
8#include "EngineDefines.h"
9#include "Engine/World.h"
13#include "EnvQueryDebugHelpers.generated.h"
14
15class FTestData;
17
18#if USE_EQS_DEBUGGER || ENABLE_VISUAL_LOG
19
20struct FLogCategoryBase;
21
22namespace EQSDebug
23{
24 struct FItemData
25 {
26 FString Desc;
28 float TotalScore;
29
32 };
33
34 struct FTestData
35 {
36 FString ShortName;
37 FString Detailed;
38 };
39
40 // struct filled while collecting data (to store additional debug data needed to display per rendered item)
41 struct FDebugHelper
42 {
43 FDebugHelper() : Location(FVector::ZeroVector), Radius(0), FailedTestIndex(INDEX_NONE){}
44 FDebugHelper(FVector Loc, float R) : Location(Loc), Radius(R), FailedTestIndex(INDEX_NONE) {}
45 FDebugHelper(FVector Loc, float R, const FString& Desc) : Location(Loc), Radius(R), FailedTestIndex(INDEX_NONE), AdditionalInformation(Desc) {}
46
48 float Radius;
49 int32 FailedTestIndex;
50 float FailedScore;
52 };
53
54 struct FQueryData
55 {
61 TArray<FString> Options;
63 int32 NumValidItems;
64 int32 Id;
65 FString Name;
66 double Timestamp;
67
68 void Reset()
69 {
70 UsedOption = 0;
71 Options.Reset();
72 NumValidItems = 0;
73 Id = INDEX_NONE;
74 Name.Empty();
75 Items.Reset();
76 Tests.Reset();
77 SolidSpheres.Reset();
78 Texts.Reset();
79 Timestamp = 0;
80 RenderDebugHelpers.Reset();
81 }
82 };
83}
84
85inline
87{
88 Ar << Data.Radius;
89 Ar << Data.Location;
90 Ar << Data.Color;
91 return Ar;
92}
93
94inline
96{
97 Ar << Data.Text;
98 Ar << Data.Location;
99 Ar << Data.Color;
100 return Ar;
101}
102
103inline
104FArchive& operator<<(FArchive& Ar, EQSDebug::FItemData& Data)
105{
106 Ar << Data.Desc;
107 Ar << Data.ItemIdx;
108 Ar << Data.TotalScore;
109 Ar << Data.TestValues;
110 Ar << Data.TestScores;
111 return Ar;
112}
113
114inline
115FArchive& operator<<(FArchive& Ar, EQSDebug::FTestData& Data)
116{
117 Ar << Data.ShortName;
118 Ar << Data.Detailed;
119 return Ar;
120}
121
122inline
123FArchive& operator<<(FArchive& Ar, EQSDebug::FDebugHelper& Data)
124{
125 Ar << Data.Location;
126 Ar << Data.Radius;
127 Ar << Data.AdditionalInformation;
128 Ar << Data.FailedTestIndex;
129 return Ar;
130}
131
132inline
133FArchive& operator<<(FArchive& Ar, EQSDebug::FQueryData& Data)
134{
135 Ar << Data.Items;
136 Ar << Data.Tests;
137 Ar << Data.SolidSpheres;
138 Ar << Data.Texts;
139 Ar << Data.NumValidItems;
140 Ar << Data.Id;
141 Ar << Data.Name;
142 Ar << Data.Timestamp;
143 Ar << Data.RenderDebugHelpers;
144 Ar << Data.Options;
145 Ar << Data.UsedOption;
146 return Ar;
147}
148
149#endif //USE_EQS_DEBUGGER || ENABLE_VISUAL_LOG
150
151#if ENABLE_VISUAL_LOG && USE_EQS_DEBUGGER
152# define UE_VLOG_EQS(Query, Category, Verbosity) UEnvQueryDebugHelpers::LogQuery(Query, Category, ELogVerbosity::Verbosity);
153#else
154# define UE_VLOG_EQS(Query, CategoryName, Verbosity)
155#endif //ENABLE_VISUAL_LOG && USE_EQS_DEBUGGER
156
157UCLASS(Abstract, MinimalAPI)
159{
161public:
162#if USE_EQS_DEBUGGER
163 static AIMODULE_API void QueryToDebugData(FEnvQueryInstance& Query, EQSDebug::FQueryData& EQSLocalData, int32 MaxItemsToStore = 10);
164 static AIMODULE_API void QueryToBlobArray(FEnvQueryInstance& Query, TArray<uint8>& BlobArray, bool bUseCompression = false);
165 static AIMODULE_API void DebugDataToBlobArray(EQSDebug::FQueryData& QueryData, TArray<uint8>& BlobArray, bool bUseCompression = false);
166 static AIMODULE_API void BlobArrayToDebugData(const TArray<uint8>& BlobArray, EQSDebug::FQueryData& EQSLocalData, bool bUseCompression = false);
167#endif
168
169#if ENABLE_VISUAL_LOG && USE_EQS_DEBUGGER
170 static void LogQuery(FEnvQueryInstance& Query, const FLogCategoryBase& Category, ELogVerbosity::Type Verbosity);
171 static void LogQuery(FEnvQueryInstance& Query, const FName& CategoryName, ELogVerbosity::Type Verbosity);
172
173private:
174 static void LogQueryInternal(FEnvQueryInstance& Query, const FName& CategoryName, ELogVerbosity::Type Verbosity, double TimeSeconds, FVisualLogEntry *CurrentEntry);
175#endif
176};
177
178#if ENABLE_VISUAL_LOG && USE_EQS_DEBUGGER
179inline void UEnvQueryDebugHelpers::LogQuery(FEnvQueryInstance& Query, const FLogCategoryBase& Category, ELogVerbosity::Type Verbosity)
180{
181 const FName CategoryName = Category.GetCategoryName();
182 LogQuery(Query, CategoryName, Verbosity);
183}
184
185inline void UEnvQueryDebugHelpers::LogQuery(FEnvQueryInstance& Query, const FName& CategoryName, ELogVerbosity::Type Verbosity)
186{
187 UWorld *World = nullptr;
188 FVisualLogEntry *CurrentEntry = nullptr;
189 if (FVisualLogger::CheckVisualLogInputInternal(Query.Owner.Get(), CategoryName, Verbosity, &World, &CurrentEntry) == false)
190 {
191 return;
192 }
193
194 LogQueryInternal(Query, CategoryName, Verbosity, World->TimeSeconds, CurrentEntry);
195}
196#endif
197
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition Archive.h:1208
Definition NameTypes.h:617
Definition STableViewTesting.cpp:68
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition EnvQueryDebugHelpers.h:159
Definition Object.h:95
Definition World.h:918
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
@ Detailed
Definition BehaviorTreeTypes.h:219
Type
Definition LogVerbosity.h:17
Definition DebugRenderSceneProxy.h:288
Definition DebugRenderSceneProxy.h:307
Definition EnvQueryTypes.h:793
Definition LogCategory.h:21
Definition VisualLoggerTypes.h:205