UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SceneQueryLowLevel.cpp File Reference

Macros

#define DEFINE_LOW_LEVEL_RAYCAST_ACCEL_HIT(TACCEL, THIT)
 
#define DEFINE_LOW_LEVEL_RAYCAST_ACCEL(TACCEL)
 
#define DEFINE_LOW_LEVEL_SWEEP_ACCEL_HIT(TACCEL, THIT)
 
#define DEFINE_LOW_LEVEL_SWEEP_ACCEL(TACCEL)
 
#define DEFINE_LOW_LEVEL_OVERLAP_ACCEL_HIT(TACCEL, THIT)
 
#define DEFINE_LOW_LEVEL_OVERLAP_ACCEL(TACCEL)
 

Functions

template<typename TAccelContainer , typename THitRaycast >
void LowLevelRaycastImpl (const TAccelContainer &Container, const FVector &Start, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THitRaycast > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
 
template<typename TAccelContainer , typename THitSweep >
void LowLevelSweepImpl (const TAccelContainer &Container, const FPhysicsGeometry &QueryGeom, const FTransform &StartTM, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THitSweep > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
 
template<typename TAccelContainer , typename THitOverlap >
void LowLevelOverlapImpl (const TAccelContainer &Container, const FPhysicsGeometry &QueryGeom, const FTransform &GeomPose, FPhysicsHitCallback< THitOverlap > &HitBuffer, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
 

Variables

int32 ForceStandardSQ = 0
 
FAutoConsoleVariableRef CVarForceStandardSQ (TEXT("p.ForceStandardSQ"), ForceStandardSQ, TEXT("If enabled, we force the standard scene query even if custom SQ structure is enabled"))
 
int32 SerializeSQs = 0
 
int32 SerializeSQSamples = 100
 
int32 SerializeBadSQs = 0
 
int32 ReplaySQs = 0
 
int32 EnableRaycastSQCapture = 1
 
int32 EnableOverlapSQCapture = 1
 
int32 EnableSweepSQCapture = 1
 
FAutoConsoleVariableRef CVarSerializeSQs (TEXT("p.SerializeSQs"), SerializeSQs, TEXT("If enabled, we create a sq capture per sq that takes more than provided value in microseconds. This can be very expensive as the entire scene is saved out"))
 
FAutoConsoleVariableRef CVarSerializeSQSamples (TEXT("p.SerializeSQSampleCount"), SerializeSQSamples, TEXT("If Query exceeds duration threshold, we will re-measure SQ this many times before serializing. Larger values cause hitching."))
 
FAutoConsoleVariableRef CVarReplaySweeps (TEXT("p.ReplaySQs"), ReplaySQs, TEXT("If enabled, we rerun the sq against chaos"))
 
FAutoConsoleVariableRef CVarSerializeBadSweeps (TEXT("p.SerializeBadSQs"), SerializeBadSQs, TEXT("If enabled, we create a sq capture whenever chaos and physx diverge"))
 
FAutoConsoleVariableRef CVarSerializeSQsRaycastEnabled (TEXT("p.SerializeSQsRaycastEnabled"), EnableRaycastSQCapture, TEXT("If disabled, p.SerializeSQs will not consider raycasts"))
 
FAutoConsoleVariableRef CVarSerializeSQsOverlapEnabled (TEXT("p.SerializeSQsOverlapEnabled"), EnableOverlapSQCapture, TEXT("If disabled, p.SerializeSQs will not consider overlaps"))
 
FAutoConsoleVariableRef CVarSerializeSQsSweepEnabled (TEXT("p.SerializeSQsSweepEnabled"), EnableSweepSQCapture, TEXT("If disabled, p.SerializeSQs will not consider sweeps"))
 

Macro Definition Documentation

◆ DEFINE_LOW_LEVEL_OVERLAP_ACCEL

#define DEFINE_LOW_LEVEL_OVERLAP_ACCEL (   TACCEL)
Value:
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DEFINE_LOW_LEVEL_OVERLAP_ACCEL_HIT(TACCEL, THIT)
Definition SceneQueryLowLevel.cpp:349
Definition SQTypes.h:96
Definition SQTypes.h:150

◆ DEFINE_LOW_LEVEL_OVERLAP_ACCEL_HIT

#define DEFINE_LOW_LEVEL_OVERLAP_ACCEL_HIT (   TACCEL,
  THIT 
)
Value:
template<> void Chaos::Private::LowLevelOverlap(const TACCEL& Container, const FPhysicsGeometry& QueryGeom, const FTransform& GeomPose, FPhysicsHitCallback<THIT>& HitBuffer, FQueryFlags QueryFlags, const FCollisionFilterData& Filter, const ChaosInterface::FQueryFilterData& QueryFilterData, ICollisionQueryFilterCallbackBase* QueryCallback, const ChaosInterface::FQueryDebugParams& DebugParams) \
{ LowLevelOverlapImpl(Container, QueryGeom, GeomPose, HitBuffer, QueryFlags, Filter, QueryFilterData, QueryCallback, DebugParams); }
void LowLevelOverlapImpl(const TAccelContainer &Container, const FPhysicsGeometry &QueryGeom, const FTransform &GeomPose, FPhysicsHitCallback< THitOverlap > &HitBuffer, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
Definition SceneQueryLowLevel.cpp:326
Definition SQTypes.h:220
Definition ImplicitObject.h:111
Definition CollisionQueryFilterCallbackCore.h:25
void LowLevelOverlap(const TContainer &Container, const FPhysicsGeometry &Geom, const FTransform &GeomPose, FPhysicsHitCallback< THit > &HitBuffer, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams={})
Definition ChaosInterfaceWrapperCore.h:79
Definition PhysicsInterfaceTypesCore.h:390
Definition CollisionFilterData.h:46
Definition PhysicsInterfaceWrapperShared.h:28

◆ DEFINE_LOW_LEVEL_RAYCAST_ACCEL

#define DEFINE_LOW_LEVEL_RAYCAST_ACCEL (   TACCEL)
Value:
#define DEFINE_LOW_LEVEL_RAYCAST_ACCEL_HIT(TACCEL, THIT)
Definition SceneQueryLowLevel.cpp:280
Definition SQTypes.h:144
Definition SQTypes.h:81

◆ DEFINE_LOW_LEVEL_RAYCAST_ACCEL_HIT

#define DEFINE_LOW_LEVEL_RAYCAST_ACCEL_HIT (   TACCEL,
  THIT 
)
Value:
template<> void Chaos::Private::LowLevelRaycast(const TACCEL& Container, const FVector& Start, const FVector& Dir, float DeltaMag, FPhysicsHitCallback<THIT>& HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData& Filter, const ChaosInterface::FQueryFilterData& QueryFilterData, ICollisionQueryFilterCallbackBase* QueryCallback, const ChaosInterface::FQueryDebugParams& DebugParams) \
{ LowLevelRaycastImpl(Container, Start, Dir, DeltaMag, HitBuffer, OutputFlags, QueryFlags, Filter, QueryFilterData, QueryCallback, DebugParams); }
EHitFlags
Definition PhysicsInterfaceWrapperShared.h:65
void LowLevelRaycastImpl(const TAccelContainer &Container, const FVector &Start, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THitRaycast > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
Definition SceneQueryLowLevel.cpp:257
void LowLevelRaycast(const TContainer &Container, const FVector &Start, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THit > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams={})

◆ DEFINE_LOW_LEVEL_SWEEP_ACCEL

#define DEFINE_LOW_LEVEL_SWEEP_ACCEL (   TACCEL)
Value:
#define DEFINE_LOW_LEVEL_SWEEP_ACCEL_HIT(TACCEL, THIT)
Definition SceneQueryLowLevel.cpp:315
Definition SQTypes.h:154
Definition SQTypes.h:106

◆ DEFINE_LOW_LEVEL_SWEEP_ACCEL_HIT

#define DEFINE_LOW_LEVEL_SWEEP_ACCEL_HIT (   TACCEL,
  THIT 
)
Value:
template<> void Chaos::Private::LowLevelSweep(const TACCEL& Container, const FPhysicsGeometry& QueryGeom, const FTransform& StartTM, const FVector& Dir, float DeltaMag, FPhysicsHitCallback<THIT>& HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData& Filter, const ChaosInterface::FQueryFilterData& QueryFilterData, ICollisionQueryFilterCallbackBase* QueryCallback, const ChaosInterface::FQueryDebugParams& DebugParams) \
{ LowLevelSweepImpl(Container, QueryGeom, StartTM, Dir, DeltaMag, HitBuffer, OutputFlags, QueryFlags, Filter, QueryFilterData, QueryCallback, DebugParams); }
void LowLevelSweepImpl(const TAccelContainer &Container, const FPhysicsGeometry &QueryGeom, const FTransform &StartTM, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THitSweep > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams)
Definition SceneQueryLowLevel.cpp:290
void LowLevelSweep(const TContainer &Container, const FPhysicsGeometry &Geom, const FTransform &StartTM, const FVector &Dir, float DeltaMag, FPhysicsHitCallback< THit > &HitBuffer, EHitFlags OutputFlags, FQueryFlags QueryFlags, const FCollisionFilterData &Filter, const ChaosInterface::FQueryFilterData &QueryFilterData, ICollisionQueryFilterCallbackBase *QueryCallback, const ChaosInterface::FQueryDebugParams &DebugParams={})

Function Documentation

◆ LowLevelOverlapImpl()

void LowLevelOverlapImpl ( const TAccelContainer Container,
const FPhysicsGeometry QueryGeom,
const FTransform GeomPose,
FPhysicsHitCallback< THitOverlap > &  HitBuffer,
FQueryFlags  QueryFlags,
const FCollisionFilterData Filter,
const ChaosInterface::FQueryFilterData QueryFilterData,
ICollisionQueryFilterCallbackBase QueryCallback,
const ChaosInterface::FQueryDebugParams DebugParams 
)

◆ LowLevelRaycastImpl()

void LowLevelRaycastImpl ( const TAccelContainer Container,
const FVector Start,
const FVector Dir,
float  DeltaMag,
FPhysicsHitCallback< THitRaycast > &  HitBuffer,
EHitFlags  OutputFlags,
FQueryFlags  QueryFlags,
const FCollisionFilterData Filter,
const ChaosInterface::FQueryFilterData QueryFilterData,
ICollisionQueryFilterCallbackBase QueryCallback,
const ChaosInterface::FQueryDebugParams DebugParams 
)

◆ LowLevelSweepImpl()

void LowLevelSweepImpl ( const TAccelContainer Container,
const FPhysicsGeometry QueryGeom,
const FTransform StartTM,
const FVector Dir,
float  DeltaMag,
FPhysicsHitCallback< THitSweep > &  HitBuffer,
EHitFlags  OutputFlags,
FQueryFlags  QueryFlags,
const FCollisionFilterData Filter,
const ChaosInterface::FQueryFilterData QueryFilterData,
ICollisionQueryFilterCallbackBase QueryCallback,
const ChaosInterface::FQueryDebugParams DebugParams 
)

Variable Documentation

◆ CVarForceStandardSQ

FAutoConsoleVariableRef CVarForceStandardSQ(TEXT("p.ForceStandardSQ"), ForceStandardSQ, TEXT("If enabled, we force the standard scene query even if custom SQ structure is enabled")) ( TEXT("p.ForceStandardSQ")  ,
ForceStandardSQ  ,
TEXT("If enabled, we force the standard scene query even if custom SQ structure is enabled"  
)

◆ CVarReplaySweeps

FAutoConsoleVariableRef CVarReplaySweeps(TEXT("p.ReplaySQs"), ReplaySQs, TEXT("If enabled, we rerun the sq against chaos")) ( TEXT("p.ReplaySQs")  ,
ReplaySQs  ,
TEXT("If enabled, we rerun the sq against chaos"  
)

◆ CVarSerializeBadSweeps

FAutoConsoleVariableRef CVarSerializeBadSweeps(TEXT("p.SerializeBadSQs"), SerializeBadSQs, TEXT("If enabled, we create a sq capture whenever chaos and physx diverge")) ( TEXT("p.SerializeBadSQs")  ,
SerializeBadSQs  ,
TEXT("If enabled, we create a sq capture whenever chaos and physx diverge"  
)

◆ CVarSerializeSQs

FAutoConsoleVariableRef CVarSerializeSQs(TEXT("p.SerializeSQs"), SerializeSQs, TEXT("If enabled, we create a sq capture per sq that takes more than provided value in microseconds. This can be very expensive as the entire scene is saved out")) ( TEXT("p.SerializeSQs")  ,
SerializeSQs  ,
TEXT("If enabled, we create a sq capture per sq that takes more than provided value in microseconds. This can be very expensive as the entire scene is saved out"  
)

◆ CVarSerializeSQSamples

FAutoConsoleVariableRef CVarSerializeSQSamples(TEXT("p.SerializeSQSampleCount"), SerializeSQSamples, TEXT("If Query exceeds duration threshold, we will re-measure SQ this many times before serializing. Larger values cause hitching.")) ( TEXT("p.SerializeSQSampleCount")  ,
SerializeSQSamples  ,
TEXT("If Query exceeds duration threshold, we will re-measure SQ this many times before serializing. Larger values cause hitching."  
)

◆ CVarSerializeSQsOverlapEnabled

FAutoConsoleVariableRef CVarSerializeSQsOverlapEnabled(TEXT("p.SerializeSQsOverlapEnabled"), EnableOverlapSQCapture, TEXT("If disabled, p.SerializeSQs will not consider overlaps")) ( TEXT("p.SerializeSQsOverlapEnabled")  ,
EnableOverlapSQCapture  ,
TEXT("If disabled, p.SerializeSQs will not consider overlaps"  
)

◆ CVarSerializeSQsRaycastEnabled

FAutoConsoleVariableRef CVarSerializeSQsRaycastEnabled(TEXT("p.SerializeSQsRaycastEnabled"), EnableRaycastSQCapture, TEXT("If disabled, p.SerializeSQs will not consider raycasts")) ( TEXT("p.SerializeSQsRaycastEnabled")  ,
EnableRaycastSQCapture  ,
TEXT("If disabled, p.SerializeSQs will not consider raycasts"  
)

◆ CVarSerializeSQsSweepEnabled

FAutoConsoleVariableRef CVarSerializeSQsSweepEnabled(TEXT("p.SerializeSQsSweepEnabled"), EnableSweepSQCapture, TEXT("If disabled, p.SerializeSQs will not consider sweeps")) ( TEXT("p.SerializeSQsSweepEnabled")  ,
EnableSweepSQCapture  ,
TEXT("If disabled, p.SerializeSQs will not consider sweeps"  
)

◆ EnableOverlapSQCapture

int32 EnableOverlapSQCapture = 1

◆ EnableRaycastSQCapture

int32 EnableRaycastSQCapture = 1

◆ EnableSweepSQCapture

int32 EnableSweepSQCapture = 1

◆ ForceStandardSQ

int32 ForceStandardSQ = 0

◆ ReplaySQs

int32 ReplaySQs = 0

◆ SerializeBadSQs

int32 SerializeBadSQs = 0

◆ SerializeSQs

int32 SerializeSQs = 0

◆ SerializeSQSamples

int32 SerializeSQSamples = 100