33 template <
typename QueryGeometry>
68 if(
GJKPenetration<false, FReal>(
AConcrete,
B,
BToAFullTM,
OutMTD->Penetration,
LocalA,
LocalB,
LocalNormal,
ClosestVertexIndexA,
ClosestVertexIndexB,Thickness,0.,
Offset.SizeSquared() < 1e-4 ?
FVec3(1,0,0) :
Offset))
155 UE_INTERNAL CHAOS_API void TransformSweepResultsToWorld(
const bool bResult,
const FReal Time,
const bool bComputeMTD,
const FImplicitObject&
TestGeom,
const FRigidTransform3&
TestGeomTM,
const FVec3& LocalDir,
const FVec3& LocalPosition,
const FVec3&
LocalNormal,
const int32 FaceIndex,
FVec3&
OutWorldPosition,
FVec3&
OutWorldNormal,
FVec3&
OutWorldFaceNormal);
156 UE_INTERNAL CHAOS_API bool SweepSphereVsSphere(
const FSphere&
SweptSphere,
const FRigidTransform3&
SweptSphereTM,
const FSphere& TestSphere,
const FRigidTransform3&
TestSphereTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
157 UE_INTERNAL CHAOS_API bool SweepSphereVsBox(
const FSphere&
SweptSphere,
const FRigidTransform3&
SweptSphereTM,
const TBox<FReal, 3>&
TestBox,
const FRigidTransform3&
TestBoxTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
158 UE_INTERNAL CHAOS_API bool SweepSphereVsCapsule(
const FSphere&
SweptSphere,
const FRigidTransform3&
SweptSphereTM,
const FCapsule&
TestCapsule,
const FRigidTransform3&
TestCapsuleTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
159 UE_INTERNAL CHAOS_API bool SweepSphereVsConvex(
const FSphere&
SweptSphere,
const FRigidTransform3&
SweptSphereTM,
const FImplicitObject& TestObject,
const FRigidTransform3&
TestObjectTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
160 UE_INTERNAL CHAOS_API bool SweepBoxVsSphere(
const TBox<FReal, 3>&
SweptBox,
const FRigidTransform3&
SweptBoxTM,
const FSphere& TestSphere,
const FRigidTransform3&
TestSphereTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
161 UE_INTERNAL CHAOS_API bool SweepBoxVsCapsule(
const TBox<FReal, 3>&
SweptBox,
const FRigidTransform3&
SweptBoxTM,
const FCapsule&
TestCapsule,
const FRigidTransform3&
TestCapsuleTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
162 UE_INTERNAL CHAOS_API bool SweepCapsuleVsSphere(
const FCapsule&
SweptCapsule,
const FRigidTransform3&
SweptCapsuleTM,
const FSphere& TestSphere,
const FRigidTransform3&
TestSphereTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
163 UE_INTERNAL CHAOS_API bool SweepCapsuleVsBox(
const FCapsule&
SweptCapsule,
const FRigidTransform3&
SweptCapsuleTM,
const TBox<FReal, 3>&
TestBox,
const FRigidTransform3&
TestBoxTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
164 UE_INTERNAL CHAOS_API bool SweepCapsuleVsCapsule(
const FCapsule&
SweptCapsule,
const FRigidTransform3&
SweptCapsuleTM,
const FCapsule&
TestCapsule,
const FRigidTransform3&
TestCapsuleTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
165 UE_INTERNAL CHAOS_API bool SweepCapsuleVsConvex(
const FCapsule&
SweptCapsule,
const FRigidTransform3&
SweptCapsuleTM,
const FImplicitObject& TestObject,
const FRigidTransform3&
TestObjectTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal);
167 template <EImplicitObjectType SweptType>
168 UE_INTERNAL bool TryRunSpecializedSweep(
const FImplicitObject&
SweptShape,
const FRigidTransform3&
SweptShapeTM,
const FImplicitObject&
TestGeom,
const FRigidTransform3&
TestGeomTM,
const FVec3&
SweepDir,
const FReal Length,
const FReal Thickness,
const bool bComputeMTD,
bool&
bOutResult,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal)
177 bOutResult =
SweepSphereVsSphere(
SweptSphere,
SweptShapeTM, TestSphere,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
184 bOutResult =
SweepSphereVsBox(
SweptSphere,
SweptShapeTM,
TestBox,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
191 bOutResult =
SweepSphereVsCapsule(
SweptSphere,
SweptShapeTM,
TestCapsule,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
197 bOutResult =
SweepSphereVsConvex(
SweptSphere,
SweptShapeTM,
TestGeom,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
207 bOutResult =
SweepBoxVsSphere(
SweptBox,
SweptShapeTM, TestSphere,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
214 bOutResult =
SweepBoxVsCapsule(
SweptBox,
SweptShapeTM,
TestCapsule,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
224 bOutResult =
SweepCapsuleVsSphere(
SweptCapsule,
SweptShapeTM, TestSphere,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
231 bOutResult =
SweepCapsuleVsBox(
SweptCapsule,
SweptShapeTM,
TestBox,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
238 bOutResult =
SweepCapsuleVsCapsule(
SweptCapsule,
SweptShapeTM,
TestCapsule,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
244 bOutResult =
SweepCapsuleVsConvex(
SweptCapsule,
SweptShapeTM,
TestGeom,
TestGeomTM,
SweepDir,
Length, Thickness, bComputeMTD, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal);
251 template <
typename SweptGeometry>
252 bool SweepQuery(
const FImplicitObject&
A,
const FRigidTransform3&
ATM,
const SweptGeometry&
B,
const FRigidTransform3&
BTM,
const FVec3& Dir,
const FReal Length,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal,
const FReal Thickness,
const bool bComputeMTD)
257 bool bResult =
false;
263 return SweepQuery(*
TransformedA.GetTransformedObject(),
NewATM,
B,
BTM, Dir,
Length, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
268 if (
TryRunSpecializedSweep<BType>(
B,
BTM,
A,
ATM, Dir,
Length, Thickness, bComputeMTD, bResult, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal))
279 const FVec3 LocalDir =
ATM.InverseTransformVectorNoScale(Dir);
297 bResult =
A.Raycast(Start, LocalDir,
Length, Thickness +
BSphere.GetRadiusf(), OutTime, LocalPosition,
LocalNormal, OutFaceIndex);
300 else if (
A.IsConvex())
307 return Convex->GetUnscaledObject()->NumVertices() > 0;
324 return GJKRaycast2(
ADowncast,
B,
BToAFullTM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, Thickness, bComputeMTD,
Offset, Thickness);
344 bResult =
AHeightField.
SweepGeom(
B,
BToATM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
350 bResult =
ATriangleMesh.
SweepGeom(
B,
BToATM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
367 [&bHit, &
ATM, &
B, &
BTM, &Dir,
Length, &OutTime, &OutPosition, &OutNormal, &OutFaceIndex, &OutFaceNormal, Thickness, bComputeMTD](
const FImplicitObject& SubObject,
const FRigidTransform3&
SubTransform)
372 FVec3 ObjectPosition;
377 if (
SweepQuery(SubObject,
NewATM,
B,
BTM, Dir,
Length,
ObjectTime, ObjectPosition,
ObjectNormal,
ObjectFaceIndex,
ObjectFaceNormal, Thickness, bComputeMTD))
383 OutPosition = ObjectPosition;
400 bResult =
AScaled.LowLevelSweepGeom(
B,
BToATM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
406 bResult = Instanced.LowLevelSweepGeom(
B,
BToATM, LocalDir,
Length, OutTime, LocalPosition,
LocalNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
418 TransformSweepResultsToWorld(bResult, OutTime, bComputeMTD,
A,
ATM, LocalDir, LocalPosition,
LocalNormal, OutFaceIndex, OutPosition, OutNormal, OutFaceNormal);
426 inline bool SweepQuery(
const FImplicitObject&
A,
const FRigidTransform3&
ATM,
const FImplicitObject&
B,
const FRigidTransform3&
BTM,
const FVec3& Dir,
const FReal Length,
FReal& OutTime,
FVec3& OutPosition,
FVec3& OutNormal,
int32& OutFaceIndex,
FVec3& OutFaceNormal,
const FReal Thickness,
const bool bComputeMTD)
429 [&
A, &
ATM, &Dir, &
Length, &OutTime, &OutPosition, &OutNormal, &OutFaceIndex, &OutFaceNormal, &Thickness, &bComputeMTD]
432 return SweepQuery(
A,
ATM,
BInner,
BInnerTM, Dir,
Length, OutTime, OutPosition, OutNormal, OutFaceIndex, OutFaceNormal, Thickness, bComputeMTD);
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define PRAGMA_DISABLE_INTERNAL_WARNINGS
Definition CoreMiscDefines.h:346
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define PRAGMA_ENABLE_INTERNAL_WARNINGS
Definition CoreMiscDefines.h:347
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition HeightField.h:32
CHAOS_API bool OverlapGeom(const FSphere &QueryGeom, const FRigidTransform3 &QueryTM, const FReal Thickness, FMTDInfo *OutMTD=nullptr) const
Definition HeightField.cpp:2112
CHAOS_API bool SweepGeom(const FSphere &QueryGeom, const FRigidTransform3 &StartTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness=0, bool bComputeMTD=false) const
Definition HeightField.cpp:2180
Definition ImplicitObjectUnion.h:27
CHAOS_API void ForEachObject(TFunctionRef< bool(const FImplicitObject &, const FRigidTransform3 &)> Lambda) const
Definition ImplicitObjectUnion.cpp:397
Definition ImplicitObject.h:111
const T_DERIVED & GetObjectChecked() const
Definition ImplicitObject.h:185
CHAOS_API bool SweepGeom(const FSphere &QueryGeom, const FRigidTransform3 &StartTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, const FReal Thickness=0, const bool bComputeMTD=false) const
Definition Levelset.cpp:1663
CHAOS_API bool OverlapGeom(const FSphere &QueryGeom, const FRigidTransform3 &QueryTM, const FReal Thickness, FMTDInfo *OutMTD=nullptr) const
Definition Levelset.cpp:1788
Definition TriangleMeshImplicitObject.h:490
CHAOS_API bool OverlapGeom(const FSphere &QueryGeom, const FRigidTransform3 &QueryTM, const FReal Thickness, FMTDInfo *OutMTD=nullptr) const
Definition TriangleMeshImplicitObject.cpp:1188
CHAOS_API bool SweepGeom(const FSphere &QueryGeom, const FRigidTransform3 &StartTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness=0, const bool bComputeMTD=false, FVec3 TriMeshScale=FVec3(1.0f)) const
static const TImplicitObjectInstanced< TConcrete > & AsInstancedChecked(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:217
Definition ImplicitObjectScaled.h:447
static const TImplicitObjectScaled< TConcrete > & AsScaledChecked(const FImplicitObject &Obj)
Definition ImplicitObjectScaled.h:522
@ TriangleMesh
Definition ImplicitObjectType.h:24
@ Union
Definition ImplicitObjectType.h:18
@ LevelSet
Definition ImplicitObjectType.h:19
@ Convex
Definition ImplicitObjectType.h:21
@ HeightField
Definition ImplicitObjectType.h:25
@ Box
Definition ImplicitObjectType.h:14
@ Capsule
Definition ImplicitObjectType.h:16
@ Sphere
Definition ImplicitObjectType.h:13
@ DEPRECATED_Scaled
Definition ImplicitObjectType.h:26
@ Transformed
Definition ImplicitObjectType.h:17
@ UnionClustered
Definition ImplicitObjectType.h:28
FORCEINLINE_DEBUGGABLE decltype(auto) CastHelper(const FImplicitObject &Geom, const Lambda &Func)
Definition CastingUtilities.h:21
FORCEINLINE_DEBUGGABLE decltype(auto) CastHelperNoUnwrap(const FImplicitObject &Geom, const FRigidTransform3 &TM, const Lambda &Func)
Definition CastingUtilities.h:129
Definition SkeletalMeshComponent.h:307
bool SweepQuery(const FImplicitObject &A, const FRigidTransform3 &ATM, const SweptGeometry &B, const FRigidTransform3 &BTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness, const bool bComputeMTD)
Definition GeometryQueries.h:252
TRigidTransform< FReal, 3 > FRigidTransform3
Definition Core.h:22
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
bool SweepBoxVsSphere(const TBox< FReal, 3 > &SweptBox, const FRigidTransform3 &SweptBoxTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:125
UE_INTERNAL bool TryRunSpecializedSweep(const FImplicitObject &SweptShape, const FRigidTransform3 &SweptShapeTM, const FImplicitObject &TestGeom, const FRigidTransform3 &TestGeomTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, bool &bOutResult, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.h:168
FORCEINLINE bool IsInstanced(EImplicitObjectType Type)
Definition ImplicitObjectType.h:43
bool SweepSphereVsConvex(const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FImplicitObject &TestObject, const FRigidTransform3 &TestObjectTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:113
FRealDouble FReal
Definition Real.h:22
bool GJKRaycast2(const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &StartTM, const TVector< T, 3 > &RayDir, const T RayLength, T &OutTime, TVector< T, 3 > &OutPosition, TVector< T, 3 > &OutNormal, const T GivenThicknessA=0, bool bComputeMTD=false, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T GivenThicknessB=0)
Definition GJK.h:1953
bool SweepSphereVsCapsule(const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:93
FORCEINLINE bool IsScaled(EImplicitObjectType Type)
Definition ImplicitObjectType.h:48
bool SweepBoxVsCapsule(const TBox< FReal, 3 > &SweptBox, const FRigidTransform3 &SweptBoxTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:133
bool SweepCapsuleVsCapsule(const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:169
TVector< FReal, 3 > FVec3
Definition Core.h:17
void TransformSweepResultsToWorld(const bool bResult, const FReal Time, const bool bComputeMTD, const FImplicitObject &TestGeom, const FVec3 &TestGeomLocation, const FVec3 &LocalDir, const FVec3 &LocalPosition, const FVec3 &LocalNormal, const int32 FaceIndex, FVec3 &OutWorldPosition, FVec3 &OutWorldNormal, FVec3 &OutWorldFaceNormal)
Definition GeometryQueries.cpp:15
bool SweepCapsuleVsSphere(const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:141
bool OverlapQuery(const FImplicitObject &A, const FRigidTransform3 &ATM, const QueryGeometry &B, const FRigidTransform3 &BTM, const FReal Thickness=0, FMTDInfo *OutMTD=nullptr)
Definition GeometryQueries.h:34
bool SweepSphereVsBox(const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const TBox< FReal, 3 > &TestBox, const FRigidTransform3 &TestBoxTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:87
bool SweepCapsuleVsBox(const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const TBox< FReal, 3 > &TestBox, const FRigidTransform3 &TestBoxTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:163
bool SweepCapsuleVsConvex(const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FImplicitObject &TestObject, const FRigidTransform3 &TestObjectTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:175
bool SweepSphereVsSphere(const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
Definition GeometryQueries.cpp:70
Definition GeometryQueries.h:27
FVec3 Position
Definition GeometryQueries.h:29
FReal Penetration
Definition GeometryQueries.h:30
FVec3 Normal
Definition GeometryQueries.h:28
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition NumericLimits.h:41