UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GenericPhysicsInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include "WorldCollision.h"
9
12class UWorld;
13
14namespace Chaos
15{
16 enum class EQueryInfo : uint8;
17 enum class EThreadQueryContext : uint8;
18
19 struct FCommonQueryData;
20 struct FOverlapQueryData;
21 struct FRayQueryData;
22 struct FSweepQueryData;
23}
24
26{
28 static ENGINE_API bool RaycastTest(const UWorld* World, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
29
31 static ENGINE_API bool RaycastSingle(const UWorld* World, struct FHitResult& OutHit, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
32
38 static ENGINE_API bool RaycastMulti(const UWorld* World, TArray<struct FHitResult>& OutHits, const FVector& Start, const FVector& End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
39
41 static ENGINE_API bool GeomSweepTest(const UWorld* World, const FCollisionShape& CollisionShape, const FQuat& Rot, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
42
44 template<typename GeomWrapper>
46
48 template <typename GeomWrapper>
50
52 template<typename GeomWrapper>
53 static bool GeomOverlapMulti(const UWorld* World, const GeomWrapper& InGeom, const FVector& InPosition, const FQuat& InRotation, TArray<FOverlapResult>& OutOverlaps, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams);
54
56 static ENGINE_API bool GeomOverlapBlockingTest(const UWorld* World, const FCollisionShape& CollisionShape, const FVector& Pos, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
57
59 static ENGINE_API bool GeomOverlapAnyTest(const UWorld* World, const FCollisionShape& CollisionShape, const FVector& Pos, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
60};
61
62template<typename TAccel>
64{
65 static bool RaycastTest(const TAccel& Accel, const UWorld* World, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
66 static bool RaycastSingle(const TAccel& Accel, const UWorld* World, struct FHitResult& OutHit, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
67 static bool RaycastMulti(const TAccel& Accel, const UWorld* World, TArray<struct FHitResult>& OutHits, const FVector& Start, const FVector& End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
68};
69
70template<typename TAccel, typename TGeom>
72{
73 static bool GeomSweepTest(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FQuat& Rot, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
74 static bool GeomSweepSingle(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FQuat& Rot, FHitResult& OutHit, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
75 static bool GeomSweepMulti(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FQuat& InGeomRot, TArray<FHitResult>& OutHits, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
76 static bool GeomOverlapMulti(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FVector& InPosition, const FQuat& InRotation, TArray<FOverlapResult>& OutOverlaps, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams);
77 static bool GeomOverlapBlockingTest(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FVector& Pos, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
78 static bool GeomOverlapAnyTest(const TAccel& Accel, const UWorld* World, const TGeom& InGeom, const FVector& Pos, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
79};
80
81template<>
83
84template<>
86
87template<>
89
90template<>
92
93template<>
95
96template<>
98
99template<>
101
102template<>
104
105template<>
107
108namespace Chaos::Private
109{
111 {
121
130 UE_EXPERIMENTAL(5.6, "Physics Thread sweep trace, might have API changes")
131 static ENGINE_API bool GeomSweepMulti(const UWorld* World, const FCollisionShape& InGeom, const FQuat& InGeomRot, TArray<FHitResult>& OutHits, const FVector& Start, const FVector& End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
132
140 UE_EXPERIMENTAL(5.6, "Physics Thread raycast, might have API changes")
141 static ENGINE_API bool RaycastMulti(const UWorld* World, TArray<FHitResult>& OutHits, const FVector& Start, const FVector& End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params, const FCollisionResponseParams& ResponseParams, const FCollisionObjectQueryParams& ObjectParams = FCollisionObjectQueryParams::DefaultObjectQueryParam);
142 };
143
144 // This is for internal use so that the QueryInterface API can resume queries.
146 {
147 static bool Overlap(const EQueryInfo InfoType, const EThreadQueryContext ThreadContext, const UWorld* World, const FOverlapQueryData& OverlapData, const FCommonQueryData& CommonData, TArray<FOverlapResult>& OutOverlaps);
148
149 static bool RaycastTest(const EThreadQueryContext ThreadContext, const UWorld* World, const FRayQueryData& RayData, const FCommonQueryData& CommonData, FHitResult& OutHits);
150 static bool RaycastSingle(const EThreadQueryContext ThreadContext, const UWorld* World, const FRayQueryData& RayData, const FCommonQueryData& CommonData, FHitResult& OutHits);
151 static bool RaycastMulti(const EThreadQueryContext ThreadContext, const UWorld* World, const FRayQueryData& RayData, const FCommonQueryData& CommonData, TArray<FHitResult>& OutHits);
152
153 static bool SweepTest(const EThreadQueryContext ThreadContext, const UWorld* World, const FSweepQueryData& SweepData, const FCommonQueryData& CommonData, FHitResult& OutHits);
154 static bool SweepSingle(const EThreadQueryContext ThreadContext, const UWorld* World, const FSweepQueryData& SweepData, const FCommonQueryData& CommonData, FHitResult& OutHits);
155 static bool SweepMulti(const EThreadQueryContext ThreadContext, const UWorld* World, const FSweepQueryData& SweepData, const FCommonQueryData& CommonData, TArray<FHitResult>& OutHits);
156 };
157
158#if UE_WITH_REMOTE_OBJECT_HANDLE
159 // Scoped object that allows the physics query handle to be ignored for the current thread.
161 {
162 FScopedIgnoreQueryHandler(bool bIgnore);
164
165 private:
166 bool bOldState;
167 };
168#endif
169}
#define UE_EXPERIMENTAL(Version, Message)
Definition CoreMiscDefines.h:369
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ECollisionChannel
Definition EngineTypes.h:1088
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ImplicitObject.h:111
Definition Array.h:670
Definition World.h:918
Definition BodyInstance.h:90
Definition SkeletalMeshComponent.h:307
EThreadQueryContext
Definition SceneQueryData.h:22
EQueryInfo
Definition SceneQueryData.h:15
Definition SceneQueryData.h:29
Definition SceneQueryData.h:49
Definition SceneQueryData.h:55
Definition SceneQueryData.h:61
Definition GenericPhysicsInterface.h:111
static ENGINE_API bool SpherecastMulti(const UWorld *World, float QueryRadius, TArray< FHitResult > &OutHits, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1456
static ENGINE_API bool RaycastMulti(const UWorld *World, TArray< FHitResult > &OutHits, const FVector &Start, const FVector &End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1504
static ENGINE_API bool GeomSweepMulti(const UWorld *World, const FCollisionShape &InGeom, const FQuat &InGeomRot, TArray< FHitResult > &OutHits, const FVector &Start, const FVector &End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1481
Definition GenericPhysicsInterface.h:146
static bool SweepTest(const EThreadQueryContext ThreadContext, const UWorld *World, const FSweepQueryData &SweepData, const FCommonQueryData &CommonData, FHitResult &OutHits)
Definition SceneQuery.cpp:1616
static bool SweepMulti(const EThreadQueryContext ThreadContext, const UWorld *World, const FSweepQueryData &SweepData, const FCommonQueryData &CommonData, TArray< FHitResult > &OutHits)
Definition SceneQuery.cpp:1626
static bool RaycastTest(const EThreadQueryContext ThreadContext, const UWorld *World, const FRayQueryData &RayData, const FCommonQueryData &CommonData, FHitResult &OutHits)
Definition SceneQuery.cpp:1582
static bool RaycastMulti(const EThreadQueryContext ThreadContext, const UWorld *World, const FRayQueryData &RayData, const FCommonQueryData &CommonData, TArray< FHitResult > &OutHits)
Definition SceneQuery.cpp:1592
static bool SweepSingle(const EThreadQueryContext ThreadContext, const UWorld *World, const FSweepQueryData &SweepData, const FCommonQueryData &CommonData, FHitResult &OutHits)
Definition SceneQuery.cpp:1621
static bool RaycastSingle(const EThreadQueryContext ThreadContext, const UWorld *World, const FRayQueryData &RayData, const FCommonQueryData &CommonData, FHitResult &OutHits)
Definition SceneQuery.cpp:1587
Definition CollisionQueryParams.h:430
static ENGINE_API FCollisionObjectQueryParams DefaultObjectQueryParam
Definition CollisionQueryParams.h:538
Definition CollisionQueryParams.h:43
Definition CollisionQueryParams.h:324
Definition CollisionShape.h:21
Definition GenericPhysicsInterface.h:72
static bool GeomSweepTest(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FQuat &Rot, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1015
static bool GeomOverlapBlockingTest(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FVector &Pos, const FQuat &Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1346
static bool GeomOverlapMulti(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FVector &InPosition, const FQuat &InRotation, TArray< FOverlapResult > &OutOverlaps, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams)
Definition SceneQuery.cpp:1433
static bool GeomSweepSingle(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FQuat &Rot, FHitResult &OutHit, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1409
static bool GeomOverlapAnyTest(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FVector &Pos, const FQuat &Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1369
static bool GeomSweepMulti(const TAccel &Accel, const UWorld *World, const TGeom &InGeom, const FQuat &InGeomRot, TArray< FHitResult > &OutHits, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1421
Definition GenericPhysicsInterface.h:26
static ENGINE_API bool GeomSweepTest(const UWorld *World, const FCollisionShape &CollisionShape, const FQuat &Rot, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1001
static bool GeomSweepMulti(const UWorld *World, const GeomWrapper &InGeom, const FQuat &InGeomRot, TArray< FHitResult > &OutHits, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
static ENGINE_API bool RaycastTest(const UWorld *World, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:924
static bool GeomOverlapMulti(const UWorld *World, const GeomWrapper &InGeom, const FVector &InPosition, const FQuat &InRotation, TArray< FOverlapResult > &OutOverlaps, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams)
static ENGINE_API bool GeomOverlapAnyTest(const UWorld *World, const FCollisionShape &CollisionShape, const FVector &Pos, const FQuat &Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1357
static ENGINE_API bool GeomOverlapBlockingTest(const UWorld *World, const FCollisionShape &CollisionShape, const FVector &Pos, const FQuat &Rot, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:1334
static ENGINE_API bool RaycastMulti(const UWorld *World, TArray< struct FHitResult > &OutHits, const FVector &Start, const FVector &End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:975
static ENGINE_API bool RaycastSingle(const UWorld *World, struct FHitResult &OutHit, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:951
static bool GeomSweepSingle(const UWorld *World, const GeomWrapper &InGeom, const FQuat &Rot, FHitResult &OutHit, FVector Start, FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition GenericPhysicsInterface.h:64
static bool RaycastMulti(const TAccel &Accel, const UWorld *World, TArray< struct FHitResult > &OutHits, const FVector &Start, const FVector &End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:987
static bool RaycastTest(const TAccel &Accel, const UWorld *World, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:938
static bool RaycastSingle(const TAccel &Accel, const UWorld *World, struct FHitResult &OutHit, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams &Params, const FCollisionResponseParams &ResponseParams, const FCollisionObjectQueryParams &ObjectParams=FCollisionObjectQueryParams::DefaultObjectQueryParam)
Definition SceneQuery.cpp:963
Definition HitResult.h:21
Definition ChaosEngineInterface.h:304