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

Classes

struct  FOverlapKey
 

Macros

#define ENABLE_CHECK_HIT_NORMAL   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST))
 

Functions

int32 GetItemIndex (const FOverlapResult &InResult)
 
uint32 GetTypeHash (const FOverlapKey &Key)
 
 DECLARE_CYCLE_STAT (TEXT("ConvertQueryHit"), STAT_ConvertQueryImpactHit, STATGROUP_Collision)
 
 DECLARE_CYCLE_STAT (TEXT("ConvertOverlapToHit"), STAT_CollisionConvertOverlapToHit, STATGROUP_Collision)
 
 DECLARE_CYCLE_STAT (TEXT("ConvertOverlap"), STAT_CollisionConvertOverlap, STATGROUP_Collision)
 
 DECLARE_CYCLE_STAT (TEXT("SetHitResultFromShapeAndFaceIndex"), STAT_CollisionSetHitResultFromShapeAndFaceIndex, STATGROUP_Collision)
 
const FPhysicsActorGetGTActor (const FPhysicsActor *GTActor)
 
template<bool bGT>
const FPhysicsShapeGetGTShape (const FPhysicsShape *GTShape, const FPhysicsActor *GTActor)
 
template<>
const FPhysicsShapeGetGTShape< false > (const FPhysicsShape *PTShape, const FPhysicsActor *GTActor)
 
const FPhysicsActorGetGTActor (const Chaos::FGeometryParticleHandle *PTActor)
 
template<typename THitLocation >
EConvertQueryResult ConvertQueryImpactHitImp (const UWorld *World, const THitLocation &Hit, FHitResult &OutResult, float CheckLength, const FCollisionFilterData &QueryFilter, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, bool bReturnFaceIndex, bool bReturnPhysMat)
 
EConvertQueryResult ConvertQueryImpactHit (const UWorld *World, const FHitLocation &Hit, FHitResult &OutResult, float CheckLength, const FCollisionFilterData &QueryFilter, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, bool bReturnFaceIndex, bool bReturnPhysMat)
 
EConvertQueryResult ConvertQueryImpactHit (const UWorld *World, const ChaosInterface::FPTLocationHit &Hit, FHitResult &OutResult, float CheckLength, const FCollisionFilterData &QueryFilter, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template<typename HitType >
EConvertQueryResult ConvertTraceResults (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, HitType *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, TArray< FHitResult > &OutHits, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template<typename Hit >
EConvertQueryResult ConvertTraceResults (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, Hit *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, FHitResult &OutHit, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< FHitSweep > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, FHitSweep *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, TArray< FHitResult > &OutHits, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< FHitSweep > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, FHitSweep *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, FHitResult &OutHit, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTSweepHit > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, ChaosInterface::FPTSweepHit *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, TArray< FHitResult > &OutHits, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTSweepHit > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, ChaosInterface::FPTSweepHit *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, FHitResult &OutHit, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< FHitRaycast > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, FHitRaycast *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, TArray< FHitResult > &OutHits, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< FHitRaycast > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, FHitRaycast *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, FHitResult &OutHit, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTRaycastHit > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, ChaosInterface::FPTRaycastHit *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, TArray< FHitResult > &OutHits, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTRaycastHit > (bool &OutHasValidBlockingHit, const UWorld *World, int32 NumHits, ChaosInterface::FPTRaycastHit *Hits, float CheckLength, const FCollisionFilterData &QueryFilter, FHitResult &OutHit, const FVector &StartLoc, const FVector &EndLoc, const FPhysicsGeometry *Geom, const FTransform &QueryTM, float MaxDistance, bool bReturnFaceIndex, bool bReturnPhysMat)
 
void ConvertQueryOverlap (const FPhysicsShape &Shape, const FPhysicsActor &Actor, FOverlapResult &OutOverlap, const FCollisionFilterData &QueryFilter)
 
bool IsBlocking (const FPhysicsShape &Shape, const FCollisionFilterData &QueryFilter)
 
template<typename THitOverlap >
bool ConvertOverlapResultsImp (int32 NumOverlaps, THitOverlap *OverlapResults, const FCollisionFilterData &QueryFilter, TArray< FOverlapResult > &OutOverlaps)
 
bool ConvertOverlapResults (int32 NumOverlaps, FHitOverlap *OverlapResults, const FCollisionFilterData &QueryFilter, TArray< FOverlapResult > &OutOverlaps)
 
bool ConvertOverlapResults (int32 NumOverlaps, ChaosInterface::FPTOverlapHit *OverlapResults, const FCollisionFilterData &QueryFilter, TArray< FOverlapResult > &OutOverlaps)
 
FHitResult ConvertOverlapToHitResult (const FOverlapResult &Overlap)
 

Variables

int32 CVarShowInitialOverlaps
 
int32 GNumOverlapsRequiredForTMap = 3
 

Macro Definition Documentation

◆ ENABLE_CHECK_HIT_NORMAL

#define ENABLE_CHECK_HIT_NORMAL   (!(UE_BUILD_SHIPPING || UE_BUILD_TEST))

Function Documentation

◆ ConvertOverlapResults() [1/2]

bool ConvertOverlapResults ( int32  NumOverlaps,
ChaosInterface::FPTOverlapHit OverlapResults,
const FCollisionFilterData QueryFilter,
TArray< FOverlapResult > &  OutOverlaps 
)

◆ ConvertOverlapResults() [2/2]

bool ConvertOverlapResults ( int32  NumOverlaps,
FHitOverlap POverlapResults,
const FCollisionFilterData QueryFilter,
TArray< FOverlapResult > &  OutOverlaps 
)

Util to convert a list of overlap hits into FOverlapResult and add them to OutOverlaps, if not already there

Parameters
NumOverlapsNumber Of Overlaps that happened
POverlapResultsOverlaps list
QueryFilterQuery filter for converting
Returns
OutOverlaps Converted data

◆ ConvertOverlapResultsImp()

template<typename THitOverlap >
bool ConvertOverlapResultsImp ( int32  NumOverlaps,
THitOverlap OverlapResults,
const FCollisionFilterData QueryFilter,
TArray< FOverlapResult > &  OutOverlaps 
)

◆ ConvertOverlapToHitResult()

FHitResult ConvertOverlapToHitResult ( const FOverlapResult Overlap)

Converts an overlap result to a hit result.

◆ ConvertQueryImpactHit() [1/2]

EConvertQueryResult ConvertQueryImpactHit ( const UWorld World,
const ChaosInterface::FPTLocationHit Hit,
FHitResult OutResult,
float  CheckLength,
const FCollisionFilterData QueryFilter,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertQueryImpactHit() [2/2]

EConvertQueryResult ConvertQueryImpactHit ( const UWorld World,
const FHitLocation PHit,
FHitResult OutResult,
float  CheckLength,
const FCollisionFilterData QueryFilter,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

Util to convert single physX hit (raycast or sweep) to our hit result

Parameters
PHitPhysX hit data
OutResult(out) Result converted
CheckLengthDistance of trace
QueryFilterQuery Filter
StartLocStart of trace
EndLoc
Geom
bReturnFaceIndexTrue if we want to lookup the face index
bReturnPhysMatTrue if we want to lookup the physical material
Returns
Whether result passed NaN/Inf checks.

◆ ConvertQueryImpactHitImp()

template<typename THitLocation >
EConvertQueryResult ConvertQueryImpactHitImp ( const UWorld World,
const THitLocation Hit,
FHitResult OutResult,
float  CheckLength,
const FCollisionFilterData QueryFilter,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertQueryOverlap()

void ConvertQueryOverlap ( const FPhysicsShape Shape,
const FPhysicsActor Actor,
FOverlapResult OutOverlap,
const FCollisionFilterData QueryFilter 
)

◆ ConvertTraceResults() [1/2]

template<typename Hit >
EConvertQueryResult ConvertTraceResults ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
Hit *  Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
FHitResult OutHit,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults() [2/2]

template<typename HitType >
EConvertQueryResult ConvertTraceResults ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
HitType *  Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
TArray< FHitResult > &  OutHits,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< ChaosInterface::FPTRaycastHit >() [1/2]

template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTRaycastHit > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
ChaosInterface::FPTRaycastHit Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
FHitResult OutHit,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< ChaosInterface::FPTRaycastHit >() [2/2]

template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTRaycastHit > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
ChaosInterface::FPTRaycastHit Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
TArray< FHitResult > &  OutHits,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< ChaosInterface::FPTSweepHit >() [1/2]

template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTSweepHit > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
ChaosInterface::FPTSweepHit Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
FHitResult OutHit,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< ChaosInterface::FPTSweepHit >() [2/2]

template EConvertQueryResult ConvertTraceResults< ChaosInterface::FPTSweepHit > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
ChaosInterface::FPTSweepHit Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
TArray< FHitResult > &  OutHits,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< FHitRaycast >() [1/2]

template EConvertQueryResult ConvertTraceResults< FHitRaycast > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
FHitRaycast Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
FHitResult OutHit,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< FHitRaycast >() [2/2]

template EConvertQueryResult ConvertTraceResults< FHitRaycast > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
FHitRaycast Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
TArray< FHitResult > &  OutHits,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< FHitSweep >() [1/2]

template EConvertQueryResult ConvertTraceResults< FHitSweep > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
FHitSweep Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
FHitResult OutHit,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ ConvertTraceResults< FHitSweep >() [2/2]

template EConvertQueryResult ConvertTraceResults< FHitSweep > ( bool OutHasValidBlockingHit,
const UWorld World,
int32  NumHits,
FHitSweep Hits,
float  CheckLength,
const FCollisionFilterData QueryFilter,
TArray< FHitResult > &  OutHits,
const FVector StartLoc,
const FVector EndLoc,
const FPhysicsGeometry Geom,
const FTransform QueryTM,
float  MaxDistance,
bool  bReturnFaceIndex,
bool  bReturnPhysMat 
)

◆ DECLARE_CYCLE_STAT() [1/4]

DECLARE_CYCLE_STAT ( TEXT("ConvertOverlap")  ,
STAT_CollisionConvertOverlap  ,
STATGROUP_Collision   
)

◆ DECLARE_CYCLE_STAT() [2/4]

DECLARE_CYCLE_STAT ( TEXT("ConvertOverlapToHit")  ,
STAT_CollisionConvertOverlapToHit  ,
STATGROUP_Collision   
)

◆ DECLARE_CYCLE_STAT() [3/4]

DECLARE_CYCLE_STAT ( TEXT("ConvertQueryHit")  ,
STAT_ConvertQueryImpactHit  ,
STATGROUP_Collision   
)

◆ DECLARE_CYCLE_STAT() [4/4]

DECLARE_CYCLE_STAT ( TEXT("SetHitResultFromShapeAndFaceIndex")  ,
STAT_CollisionSetHitResultFromShapeAndFaceIndex  ,
STATGROUP_Collision   
)

◆ GetGTActor() [1/2]

const FPhysicsActor * GetGTActor ( const Chaos::FGeometryParticleHandle PTActor)

◆ GetGTActor() [2/2]

const FPhysicsActor * GetGTActor ( const FPhysicsActor GTActor)

◆ GetGTShape()

template<bool bGT>
const FPhysicsShape * GetGTShape ( const FPhysicsShape GTShape,
const FPhysicsActor GTActor 
)

◆ GetGTShape< false >()

template<>
const FPhysicsShape * GetGTShape< false > ( const FPhysicsShape PTShape,
const FPhysicsActor GTActor 
)

◆ GetItemIndex()

int32 GetItemIndex ( const FOverlapResult InResult)

◆ GetTypeHash()

uint32 GetTypeHash ( const FOverlapKey Key)

◆ IsBlocking()

bool IsBlocking ( const FPhysicsShape PShape,
const FCollisionFilterData QueryFilter 
)

Util to determine if a shape is deemed blocking based on the query filter

Parameters
PShapeShape that overlaps @QueryFilter Query Filter
Returns
true if the query filter and shape filter resolve to be blocking

Variable Documentation

◆ CVarShowInitialOverlaps

int32 CVarShowInitialOverlaps
extern

◆ GNumOverlapsRequiredForTMap

int32 GNumOverlapsRequiredForTMap = 3

Min number of overlaps required to start using a TMap for deduplication