UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CollisionResolution.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
9
10
11namespace Chaos
12{
13 template <typename T, int d>
14 class TSphere;
15
16 class FCapsule;
17
18 class FConvex;
19
20 template <typename T, int d>
21 class TPlane;
22
23 class FBVHParticles;
24 class FCollisionContext;
25 class FHeightField;
26 class FImplicitObject;
27 class FPBDCollisionConstraint;
28 class FTriangleMeshImplicitObject;
29
30
31 namespace Collisions
32 {
33
34 //
35 // Constraint API
36 //
37
42 void CHAOS_API UpdateConstraint(FPBDCollisionConstraint& Constraint, const FRigidTransform3& ShapeWorldTransform0, const FRigidTransform3& ShapeWorldTransform1, const FReal Dt);
43
48 bool CHAOS_API UpdateConstraintSwept(FPBDCollisionConstraint& Constraint, const FRigidTransform3& ShapeStartWorldTransform0, const FRigidTransform3& ShapeStartWorldTransform1, const FReal Dt);
49
53 EContactShapesType CHAOS_API CalculateShapePairType(const FGeometryParticleHandle* Particle0, const FImplicitObject* Implicit0, const FGeometryParticleHandle* Particle1, const FImplicitObject* Implicit1, bool& bOutSwap);
54
58 bool CHAOS_API ShouldUseCCD(const FGeometryParticleHandle* Particle0, const FVec3& DeltaX0, const FGeometryParticleHandle* Particle1, const FVec3& DeltaX1, FVec3& Dir, FReal& Length);
59
60 // @todo(chaos): this should not be exposed but is currently used in tests
61 void UpdateLevelsetLevelsetConstraint(const FRigidTransform3& WorldTransform0, const FRigidTransform3& WorldTransform1, const FReal Dt, FPBDCollisionConstraint& Constraint);
62
63 //
64 //
65 // DEPRECATED STUFF
66 //
67 //
68
69 UE_DEPRECATED(5.4, "No longer supported")
70 EImplicitObjectType CHAOS_API GetImplicitCollisionType(const FGeometryParticleHandle* Particle, const FImplicitObject* Implicit);
71
72 UE_DEPRECATED(5.4, "No longer supported")
74
75 UE_DEPRECATED(5.3, "No longer supported")
77 TGeometryParticleHandle<FReal, 3>* Particle0,
78 TGeometryParticleHandle<FReal, 3>* Particle1,
80 const FPerShapeData* Shape0,
82 const int32 ImplicitID0,
84 const FPerShapeData* Shape1,
86 const int32 ImplicitID1,
91 const FReal CullDistance,
92 const FReal Dt,
93 const bool bEnableSweep,
94 const FCollisionContext& Context) {}
95
96 UE_DEPRECATED(5.3, "No longer supported")
98
99 // See Above
100 UE_DEPRECATED(5.3, "No longer supported")
102
103 template<ECollisionUpdateType UpdateType>
104 UE_DEPRECATED(5.3, "Use UpdateConstraint, but call Constraint.SetShapeWorldTransform first (see implementation)")
106 }
107}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition BVHParticles.h:24
Definition CollisionContext.h:83
Definition ImplicitObject.h:111
A contact constraint.
Definition PBDCollisionConstraint.h:225
Definition ShapeInstance.h:36
Definition ParticleHandle.h:436
EImplicitObjectType GetImplicitCollisionType(const FGeometryParticleHandle *Particle, const FImplicitObject *Implicit)
Definition CollisionResolution.cpp:1375
EContactShapesType CalculateShapePairType(const FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, bool &bOutSwap)
Determine the shape pair type for use in UpdateConstraints.
Definition CollisionResolution.cpp:1168
void UpdateConstraintFromGeometry(FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &ParticleWorldTransform1, const FReal Dt)
Definition CollisionResolution.cpp:1381
void CHAOS_API ConstructConstraints(TGeometryParticleHandle< FReal, 3 > *Particle0, TGeometryParticleHandle< FReal, 3 > *Particle1, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const int32 ImplicitID0, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const int32 ImplicitID1, const FRigidTransform3 &ParticleWorldTransform0, const FRigidTransform3 &Transform0, const FRigidTransform3 &ParticleWorldTransform1, const FRigidTransform3 &Transform1, const FReal CullDistance, const FReal Dt, const bool bEnableSweep, const FCollisionContext &Context)
Definition CollisionResolution.h:76
void UpdateConstraint(FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ShapeWorldTransform0, const FRigidTransform3 &ShapeWorldTransform1, const FReal Dt)
Update the contact manifold on the constraint.
Definition CollisionResolution.cpp:1158
bool UpdateConstraintSwept(FPBDCollisionConstraint &Constraint, const FRigidTransform3 &ShapeStartWorldTransform0, const FRigidTransform3 &ShapeStartWorldTransform1, const FReal Dt)
Update the contact manifold on the constraint.
Definition CollisionResolution.cpp:1163
bool ShouldUseCCD(const FGeometryParticleHandle *Particle0, const FVec3 &DeltaX0, const FGeometryParticleHandle *Particle1, const FVec3 &DeltaX1, FVec3 &Dir, FReal &Length)
Whether CCD should be enabled for a contact given the current particle velocities etc.
Definition CollisionResolution.cpp:111
void CHAOS_API ResetChaosCollisionCounters()
Definition CollisionResolution.h:73
void UpdateLevelsetLevelsetConstraint(const FRigidTransform3 &WorldTransform0, const FRigidTransform3 &WorldTransform1, const FReal Dt, FPBDCollisionConstraint &Constraint)
Definition CollisionResolution.cpp:868
Definition SkeletalMeshComponent.h:307
TRigidTransform< FReal, 3 > FRigidTransform3
Definition Core.h:22
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
FRealDouble FReal
Definition Real.h:22
EContactShapesType
Definition CollisionResolutionTypes.h:55
TVector< FReal, 3 > FVec3
Definition Core.h:17
TGeometryParticleHandle< FReal, 3 > FGeometryParticleHandle
Definition ParticleHandleFwd.h:24