UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CollisionQueryParams.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3// Structs used for passing parameters to scene query functions
4
5#pragma once
6
7#include "CoreMinimal.h"
11
13#define ECC_TO_BITFIELD(x) (1<<(x))
15#define CRC_TO_BITFIELD(x) (1<<(x))
16
17class AActor;
18class UPrimitiveComponent;
19
21{
22 Any,
23 Static, //Any shape that is considered static by physx (static mobility)
24 Dynamic //Any shape that is considered dynamic by physx (movable/stationary mobility)
25};
26
30#define FIND_UNKNOWN_SCENE_QUERIES 0
31
32#if ENABLE_STATNAMEDEVENTS
33 #define SCENE_QUERY_STAT_ONLY(QueryName) TStatId(ANSI_TO_PROFILING(#QueryName))
34#else
35 #define SCENE_QUERY_STAT_ONLY(QueryName) QUICK_USE_CYCLE_STAT(QueryName, STATGROUP_CollisionTags)
36#endif
37
38#define SCENE_QUERY_STAT_NAME_ONLY(QueryName) [](){ static FName StaticName(#QueryName); return StaticName;}()
39#define SCENE_QUERY_STAT(QueryName) SCENE_QUERY_STAT_NAME_ONLY(QueryName), SCENE_QUERY_STAT_ONLY(QueryName)
40
43{
46
49
52
55
58
61
64
67
70
73
76
79
82
85
86#if UE_WITH_REMOTE_OBJECT_HANDLE
89#endif
90
92
95
98
103
104#if !(UE_BUILD_TEST || UE_BUILD_SHIPPING)
106#endif
107
108private:
109
111 mutable bool bComponentListUnique;
112
114 mutable IgnoreComponentsArrayType IgnoreComponents;
115
117 IgnoreSourceObjectsArrayType IgnoreSourceObjects;
118
119#if UE_WITH_REMOTE_OBJECT_HANDLE
127#endif
128
129 void Internal_AddIgnoredSourceObject(const FWeakObjectPtr& WeakPtr);
130
131 ENGINE_API void Internal_AddIgnoredComponent(const UPrimitiveComponent* InIgnoreComponent);
132
133public:
134
137
138#if UE_WITH_REMOTE_OBJECT_HANDLE
140 {
142 }
143#endif
144
145 UE_DEPRECATED(5.5, "Use GetIgnoredSourceObjects instead.")
148 {
149 return IgnoreSourceObjects;
150 }
151
158 {
159 return IgnoreSourceObjects;
160 }
161
162#if UE_WITH_REMOTE_OBJECT_HANDLE
164 {
166 }
167#endif
168
171 {
172 IgnoreComponents.Reset();
173 bComponentListUnique = true;
174
175#if UE_WITH_REMOTE_OBJECT_HANDLE
177#endif
178 }
179
180 UE_DEPRECATED(5.5, "Use ClearIgnoredSourceObjects instead.")
183 {
184 IgnoreSourceObjects.Reset();
185
186#if UE_WITH_REMOTE_OBJECT_HANDLE
188#endif
189 }
190
193 {
194 IgnoreSourceObjects.Reset();
195
196#if UE_WITH_REMOTE_OBJECT_HANDLE
198#endif
199 }
200
206
207 // Constructors
208#if !FIND_UNKNOWN_SCENE_QUERIES
209
211 {
212 bTraceComplex = false;
216 bReturnFaceIndex = false;
218 bComponentListUnique = true;
219 IgnoreMask = 0;
220 bIgnoreBlocks = false;
221 bIgnoreTouches = false;
222 bSkipNarrowPhase = false;
224#if !(UE_BUILD_TEST || UE_BUILD_SHIPPING)
225 bDebugQuery = false;
226#endif
229 }
230
236#endif
237
239
240 // Utils
241
244
247
252
255
260
265
267 ENGINE_API void AddIgnoredComponent(const UPrimitiveComponent* InIgnoreComponent);
270
273
276
282
284 UE_INTERNAL ENGINE_API void Internal_AddIgnoredComponent(const uint32 ComponentID);
285
286 FString ToString() const
287 {
288 return FString::Printf(TEXT("[%s:%s] TraceComplex(%d)"), *OwnerTag.ToString(), *TraceTag.ToString(), bTraceComplex );
289 }
290
293};
294
321
343
344// If ECollisionChannel entry has metadata of "TraceType = 1", they will be excluded by Collision Profile
345// Any custom channel with bTraceType=true also will be excluded
346// By default everything is object type
348{
349private:
350 int32 AllObjectQueryFlag;
351 int32 AllStaticObjectQueryFlag;
352
354 {
355 AllObjectQueryFlag = 0xFFFFFFFF;
356 AllStaticObjectQueryFlag = ECC_TO_BITFIELD(ECC_WorldStatic);
357 }
358
359public:
361
363 {
364 // this doesn't really verify trace queries to come this way
365 return AllObjectQueryFlag;
366 }
367
369 {
370 return AllStaticObjectQueryFlag;
371 }
372
374 {
375 return (AllObjectQueryFlag & ~AllStaticObjectQueryFlag);
376 }
377
379 {
380 if (ensure ((int32)NewChannel < 32))
381 {
382 SetAllObjectsQueryFlag (AllObjectQueryFlag |= ECC_TO_BITFIELD(NewChannel));
383 }
384 }
385
387 {
388 if (ensure ((int32)NewChannel < 32))
389 {
390 SetAllStaticObjectsQueryFlag (AllStaticObjectQueryFlag |= ECC_TO_BITFIELD(NewChannel));
391 }
392 }
393
395 {
396 if (ensure ((int32)NewChannel < 32))
397 {
398 SetAllObjectsQueryFlag (AllObjectQueryFlag &= ~ECC_TO_BITFIELD(NewChannel));
399 }
400 }
401
409
411 {
412 // if all object query has changed, make sure to apply to static object query
413 AllObjectQueryFlag = NewQueryFlag;
414 AllStaticObjectQueryFlag = AllObjectQueryFlag & AllStaticObjectQueryFlag;
415 }
416
418 {
419 AllStaticObjectQueryFlag = NewQueryFlag;
420 }
421
423 {
424 AllStaticObjectQueryFlag = AllObjectQueryFlag & ~NewQueryFlag;
425 }
426};
427
430{
437
440
443
449
455
457 {
459
460 for (auto Iter = ObjectTypes.CreateConstIterator(); Iter; ++Iter)
461 {
463 }
464
465 IgnoreMask = 0;
466 }
467
486
487 // to do this, use ECC_TO_BITFIELD to convert to bit field
488 // i.e. FCollisionObjectQueryParams ( ECC_TO_BITFIELD(ECC_WorldStatic) | ECC_TO_BITFIELD(ECC_WorldDynamic) )
495
501
507
509 {
511
512 return ObjectTypesToQuery;
513 }
514
515 bool IsValid() const
516 {
517 return (ObjectTypesToQuery != 0);
518 }
519
521 {
522 // return true if this belong to object query type
523 return (ECC_TO_BITFIELD(QueryChannel) & FCollisionQueryFlag::Get().GetAllObjectsQueryFlag()) != 0;
524 }
525
526 void DoVerify() const
527 {
528 // you shouldn't use Trace Types to be Object Type Query parameter. This is not technical limitation, but verification process.
530 }
531
539};
540
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define ensure( InExpression)
Definition AssertionMacros.h:464
uint8 FMaskFilter
Definition CollisionFilter.h:14
#define ECC_TO_BITFIELD(x)
Definition CollisionQueryParams.h:13
EQueryMobilityType
Definition CollisionQueryParams.h:21
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EOverlapFilterOption
Definition EngineTypes.h:1148
ECollisionChannel
Definition EngineTypes.h:1088
ECollisionResponse
Definition EngineTypes.h:1240
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition EnumAsByte.h:22
static ENGINE_API ECollisionChannel ConvertToCollisionChannel(ETraceTypeQuery TraceType)
Definition EngineTypes.cpp:34
Definition Object.h:95
@ false
Definition radaudio_common.h:23
Definition EngineTypes.h:1594
Definition CollisionQueryParams.h:430
FMaskFilter IgnoreMask
Definition CollisionQueryParams.h:442
FCollisionObjectQueryParams()
Definition CollisionQueryParams.h:444
InitType
Definition CollisionQueryParams.h:432
@ AllDynamicObjects
Definition CollisionQueryParams.h:435
@ AllStaticObjects
Definition CollisionQueryParams.h:434
@ AllObjects
Definition CollisionQueryParams.h:433
void AddObjectTypesToQuery(ECollisionChannel QueryChannel)
Definition CollisionQueryParams.h:496
void RemoveObjectTypesToQuery(ECollisionChannel QueryChannel)
Definition CollisionQueryParams.h:502
FCollisionObjectQueryParams(const TArray< TEnumAsByte< EObjectTypeQuery > > &ObjectTypes)
Definition CollisionQueryParams.h:456
int32 GetQueryBitfield() const
Definition CollisionQueryParams.h:508
FCollisionObjectQueryParams(ECollisionChannel QueryChannel)
Definition CollisionQueryParams.h:450
int32 ObjectTypesToQuery
Definition CollisionQueryParams.h:439
static bool IsValidObjectQuery(ECollisionChannel QueryChannel)
Definition CollisionQueryParams.h:520
static ENGINE_API FCollisionObjectQueryParams DefaultObjectQueryParam
Definition CollisionQueryParams.h:538
void DoVerify() const
Definition CollisionQueryParams.h:526
FCollisionObjectQueryParams(int32 InObjectTypesToQuery)
Definition CollisionQueryParams.h:489
FCollisionObjectQueryParams(enum FCollisionObjectQueryParams::InitType QueryType)
Definition CollisionQueryParams.h:468
static FCollisionObjectQueryParams::InitType GetCollisionChannelFromOverlapFilter(EOverlapFilterOption Filter)
Definition CollisionQueryParams.h:533
bool IsValid() const
Definition CollisionQueryParams.h:515
Definition CollisionQueryParams.h:348
static ENGINE_API FCollisionQueryFlag & Get()
Definition Collision.cpp:26
int32 GetAllStaticObjectsQueryFlag()
Definition CollisionQueryParams.h:368
void SetAllObjectsQueryFlag(int32 NewQueryFlag)
Definition CollisionQueryParams.h:410
int32 GetAllObjectsQueryFlag()
Definition CollisionQueryParams.h:362
void AddToAllObjectsQueryFlag(ECollisionChannel NewChannel)
Definition CollisionQueryParams.h:378
void RemoveFromAllStaticObjectsQueryFlag(ECollisionChannel NewChannel)
Definition CollisionQueryParams.h:402
int32 GetAllDynamicObjectsQueryFlag()
Definition CollisionQueryParams.h:373
void SetAllStaticObjectsQueryFlag(int32 NewQueryFlag)
Definition CollisionQueryParams.h:417
void SetAllDynamicObjectsQueryFlag(int32 NewQueryFlag)
Definition CollisionQueryParams.h:422
void AddToAllStaticObjectsQueryFlag(ECollisionChannel NewChannel)
Definition CollisionQueryParams.h:386
void RemoveFromAllObjectsQueryFlag(ECollisionChannel NewChannel)
Definition CollisionQueryParams.h:394
Definition CollisionQueryParams.h:43
TArray< uint32, TInlineAllocator< 4 > > IgnoreSourceObjectsArrayType
Definition CollisionQueryParams.h:84
bool bTraceComplex
Definition CollisionQueryParams.h:51
ENGINE_API void AddIgnoredActor(const AActor *InIgnoreActor)
Definition Collision.cpp:141
bool bReturnFaceIndex
Definition CollisionQueryParams.h:57
void ClearIgnoredActors()
Definition CollisionQueryParams.h:182
static TStatId GetUnknownStatId()
Definition CollisionQueryParams.h:99
FCollisionQueryParams()
Definition CollisionQueryParams.h:210
FCollisionQueryParams(FName InTraceTag, bool bInTraceComplex=false, const AActor *InIgnoreActor=NULL)
Definition CollisionQueryParams.h:231
bool bDebugQuery
Definition CollisionQueryParams.h:105
bool bIgnoreBlocks
Definition CollisionQueryParams.h:63
ENGINE_API void AddIgnoredComponents(const TArray< UPrimitiveComponent * > &InIgnoreComponents)
Definition Collision.cpp:295
ENGINE_API void AddIgnoredComponent(const UPrimitiveComponent *InIgnoreComponent)
Definition Collision.cpp:238
const IgnoreActorsArrayType & GetIgnoredSourceObjects() const
Definition CollisionQueryParams.h:157
bool bIgnoreTouches
Definition CollisionQueryParams.h:66
bool bReplaceHitWithSubComponents
Definition CollisionQueryParams.h:75
ENGINE_API void AddIgnoredComponent_LikelyDuplicatedRoot(const UPrimitiveComponent *InIgnoreComponent)
Definition Collision.cpp:311
const IgnoreActorsArrayType & GetIgnoredActors() const
Definition CollisionQueryParams.h:147
FString ToString() const
Definition CollisionQueryParams.h:286
EQueryMobilityType MobilityType
Definition CollisionQueryParams.h:78
IgnoreSourceObjectsArrayType IgnoreActorsArrayType
Definition CollisionQueryParams.h:91
TArray< uint32, TInlineAllocator< 8 > > IgnoreComponentsArrayType
Definition CollisionQueryParams.h:81
ENGINE_API void AddIgnoredActors(const TArray< AActor * > &InIgnoreActors)
Definition Collision.cpp:151
ENGINE_API void SetNumIgnoredComponents(int32 NewNum)
Definition Collision.cpp:364
FName TraceTag
Definition CollisionQueryParams.h:45
bool bTraceIntoSubComponents
Definition CollisionQueryParams.h:72
FMaskFilter IgnoreMask
Definition CollisionQueryParams.h:94
ENGINE_API void AddIgnoredSourceObject(const UObject *InIgnoreActor)
Definition Collision.cpp:185
ENGINE_API void AddIgnoredSourceObjects(const TArray< UObject * > &InIgnoreObjects)
Definition Collision.cpp:206
FName OwnerTag
Definition CollisionQueryParams.h:48
static ENGINE_API FCollisionQueryParams DefaultQueryParam
Definition CollisionQueryParams.h:292
TStatId StatId
Definition CollisionQueryParams.h:97
bool bReturnPhysicalMaterial
Definition CollisionQueryParams.h:60
bool bFindInitialOverlaps
Definition CollisionQueryParams.h:54
void ClearIgnoredSourceObjects()
Definition CollisionQueryParams.h:192
void ClearIgnoredComponents()
Definition CollisionQueryParams.h:170
bool bSkipNarrowPhase
Definition CollisionQueryParams.h:69
ENGINE_API const IgnoreComponentsArrayType & GetIgnoredComponents() const
Definition Collision.cpp:335
Definition EngineTypes.h:1339
ENGINE_API bool SetAllChannels(ECollisionResponse NewResponse)
Definition PhysUtils.cpp:218
Definition CollisionQueryParams.h:324
FCollisionResponseParams(ECollisionResponse DefaultResponse=ECR_Block)
Definition CollisionQueryParams.h:331
static ENGINE_API FCollisionResponseParams DefaultResponseParam
Definition CollisionQueryParams.h:341
FCollisionResponseParams(const FCollisionResponseContainer &ResponseContainer)
Definition CollisionQueryParams.h:336
struct FCollisionResponseContainer CollisionResponse
Definition CollisionQueryParams.h:329
Definition CollisionQueryParams.h:297
static ENGINE_API FComponentQueryParams DefaultComponentQueryParams
Definition CollisionQueryParams.h:319
FCollisionEnabledMask ShapeCollisionMask
Definition CollisionQueryParams.h:316
FComponentQueryParams(FName InTraceTag, const TStatId &InStatId, const AActor *InIgnoreActor=NULL, const FCollisionEnabledMask InShapeCollisionMask=0)
Definition CollisionQueryParams.h:310
FComponentQueryParams()
Definition CollisionQueryParams.h:299
FComponentQueryParams(FName InTraceTag, const AActor *InIgnoreActor=NULL, const FCollisionEnabledMask InShapeCollisionMask=0)
Definition CollisionQueryParams.h:304
Definition RemoteObjectTransfer.h:173
Definition WeakObjectPtr.h:49
Definition LightweightStats.h:416
Definition WeakObjectPtrTemplates.h:25