UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::FContactPairModifier Class Reference

#include <ContactModification.h>

Public Member Functions

 FContactPairModifier ()
 
 FContactPairModifier (FPBDCollisionConstraint *InConstraint, FCollisionContactModifier &InModifier)
 
CHAOS_API void Disable ()
 
CHAOS_API void Enable ()
 
CHAOS_API void ConvertToProbe ()
 
CHAOS_API void ConvertToNonProbe ()
 
CHAOS_API bool GetIsProbe () const
 
CHAOS_API int32 GetNumContacts () const
 
CHAOS_API int32 GetDeepestContactIndex () const
 
CHAOS_API bool GetIsInitialContact () const
 
CHAOS_API void SetIsInitialContact (bool bIsInitialContact) const
 
CHAOS_API const FImplicitObjectGetContactGeometry (int32 ParticleIdx)
 
CHAOS_API FRigidTransform3 GetShapeToWorld (int32 ParticleIdx) const
 
CHAOS_API FReal GetSeparation (int32 ContactPointIdx) const
 
CHAOS_API FReal GetTargetSeparation (int32 ContactPointIdx) const
 
CHAOS_API void ModifyTargetSeparation (FReal TargetSeparation, int32 ContactPointIdx)
 
CHAOS_API FVec3 GetWorldNormal (int32 ContactPointIdx) const
 Get the world-space contact normal.
 
CHAOS_API void ModifyWorldNormal (const FVec3 &Normal, int32 ContactPointIdx)
 
CHAOS_API void GetWorldContactLocations (int32 ContactPointIdx, FVec3 &OutLocation0, FVec3 &OutLocation1) const
 
CHAOS_API FVec3 GetWorldContactLocation (int32 ContactPointIdx) const
 
CHAOS_API void ModifyWorldContactLocations (const FVec3 &Location0, const FVec3 &Location1, int32 ContactPointIdx)
 
CHAOS_API FReal GetRestitution () const
 
CHAOS_API void ModifyRestitution (FReal Restitution)
 
CHAOS_API FReal GetRestitutionThreshold () const
 
CHAOS_API void ModifyRestitutionThreshold (FReal Restitution)
 
CHAOS_API FReal GetDynamicFriction () const
 
CHAOS_API void ModifyDynamicFriction (FReal DynamicFriction)
 
CHAOS_API FReal GetStaticFriction () const
 
CHAOS_API void ModifyStaticFriction (FReal StaticFriction)
 
CHAOS_API FVec3 GetParticleVelocity (int32 ParticleIdx) const
 
CHAOS_API void ModifyParticleVelocity (FVec3 Velocity, int32 ParticleIdx)
 
CHAOS_API FVec3 GetParticleAngularVelocity (int32 ParticleIdx) const
 
CHAOS_API void ModifyParticleAngularVelocity (FVec3 AngularVelocity, int32 ParticleIdx)
 
CHAOS_API FVec3 GetParticlePosition (int32 ParticleIdx) const
 
CHAOS_API void ModifyParticlePosition (FVec3 Position, bool bMaintainVelocity, int32 ParticleIdx)
 
CHAOS_API FRotation3 GetParticleRotation (int32 ParticleIdx) const
 
CHAOS_API void ModifyParticleRotation (FRotation3 Rotation, bool bMaintainVelocity, int32 ParticleIdx)
 
CHAOS_API FReal GetInvInertiaScale (int32 ParticleIdx) const
 
CHAOS_API void ModifyInvInertiaScale (FReal InvInertiaScale, int32 ParticleIdx)
 
CHAOS_API FReal GetInvMassScale (int32 ParticleIdx) const
 
CHAOS_API void ModifyInvMassScale (FReal InvMassScale, int32 ParticleIdx)
 
CHAOS_API FGeometryParticleHandleGetOtherParticle (FGeometryParticleHandle *Particle) const
 
CHAOS_API TVec2< FGeometryParticleHandle * > GetParticlePair () const
 
CHAOS_API TVec2< const FPerShapeData * > GetShapePair () const
 
CHAOS_API const FShapeInstanceGetShape (int32 ParticleIdx) const
 
CHAOS_API const FConstImplicitObjectRef GetImplicit (int32 ParticleIdx) const
 
CHAOS_API bool GetIsCCD () const
 
CHAOS_API bool IsEdgeContactPoint (int32 ContactPointIdx) const
 
CHAOS_API bool IsContactPointDisabled (int32 ContactPointIdx) const
 
CHAOS_API void SetContactPointDisabled (int32 ContactPointIdx) const
 

Friends

class FVisitedContactPairsTracker
 

Constructor & Destructor Documentation

◆ FContactPairModifier() [1/2]

Chaos::FContactPairModifier::FContactPairModifier ( )
inline

◆ FContactPairModifier() [2/2]

Chaos::FContactPairModifier::FContactPairModifier ( FPBDCollisionConstraint InConstraint,
FCollisionContactModifier InModifier 
)
inline

Member Function Documentation

◆ ConvertToNonProbe()

void Chaos::FContactPairModifier::ConvertToNonProbe ( )

Convert the constraint from probe to a regular physical collision

◆ ConvertToProbe()

void Chaos::FContactPairModifier::ConvertToProbe ( )

Convert the constraint between this pair of bodies into a probe. Collision callbacks will still occur if the bodies collide (a contact occurring in contact modification does not mean a contact actually has occurred yet, but that it may)

◆ Disable()

void Chaos::FContactPairModifier::Disable ( )

Disable all contact points for this pair of bodies.

◆ Enable()

void Chaos::FContactPairModifier::Enable ( )

Enables all contact points for this pair of bodies. This does nothing unless Disable() was previously called.

◆ GetContactGeometry()

const FImplicitObject * Chaos::FContactPairModifier::GetContactGeometry ( int32  ParticleIdx)
Returns
Geometry of specified particle in contact pair.

◆ GetDeepestContactIndex()

int32 Chaos::FContactPairModifier::GetDeepestContactIndex ( ) const
Returns
Contact point index of point in manifold penetrating the deepest.

◆ GetDynamicFriction()

FReal Chaos::FContactPairModifier::GetDynamicFriction ( ) const
Returns
Dynamic friction coefficient of contact.

◆ GetImplicit()

const FConstImplicitObjectRef Chaos::FContactPairModifier::GetImplicit ( int32  ParticleIdx) const

◆ GetInvInertiaScale()

FReal Chaos::FContactPairModifier::GetInvInertiaScale ( int32  ParticleIdx) const
Returns
InvInertiaScale of particle.

◆ GetInvMassScale()

FReal Chaos::FContactPairModifier::GetInvMassScale ( int32  ParticleIdx) const
Returns
InvMassScale of particle.

◆ GetIsCCD()

bool Chaos::FContactPairModifier::GetIsCCD ( ) const

◆ GetIsInitialContact()

bool Chaos::FContactPairModifier::GetIsInitialContact ( ) const
Returns
true if this contact is an initial contact, i.e., the pair of shapes in the contact were not touching last frame.

◆ GetIsProbe()

bool Chaos::FContactPairModifier::GetIsProbe ( ) const

Return true if this constraint is a probe type

◆ GetNumContacts()

int32 Chaos::FContactPairModifier::GetNumContacts ( ) const
Returns
Number of contact points in constraint pair. ContactPointIdx must be below number of contacts.

◆ GetOtherParticle()

FGeometryParticleHandle * Chaos::FContactPairModifier::GetOtherParticle ( FGeometryParticleHandle Particle) const

◆ GetParticleAngularVelocity()

FVec3 Chaos::FContactPairModifier::GetParticleAngularVelocity ( int32  ParticleIdx) const
Returns
Angular velocity of particle.

◆ GetParticlePair()

TVec2< FGeometryParticleHandle * > Chaos::FContactPairModifier::GetParticlePair ( ) const

◆ GetParticlePosition()

FVec3 Chaos::FContactPairModifier::GetParticlePosition ( int32  ParticleIdx) const
Returns
Position of particle. For simulated objects: this is PBD predicted position and not previous position before integrating movement.

◆ GetParticleRotation()

FRotation3 Chaos::FContactPairModifier::GetParticleRotation ( int32  ParticleIdx) const
Returns
Rotation of particle. For simulated objects: this is PBD predicted rotation and not previous rotation before integrating movement.

◆ GetParticleVelocity()

FVec3 Chaos::FContactPairModifier::GetParticleVelocity ( int32  ParticleIdx) const
Returns
Linear velocity of particle.

◆ GetRestitution()

FReal Chaos::FContactPairModifier::GetRestitution ( ) const
Returns
Restitution of contact.

◆ GetRestitutionThreshold()

FReal Chaos::FContactPairModifier::GetRestitutionThreshold ( ) const
Returns
Restitution threshold of contact. If velocity of object is below this threshold, no restitution is applied.

◆ GetSeparation()

FReal Chaos::FContactPairModifier::GetSeparation ( int32  ContactPointIdx) const
Returns
separation of contact locations in direction of normal.

◆ GetShape()

const FShapeInstance * Chaos::FContactPairModifier::GetShape ( int32  ParticleIdx) const

◆ GetShapePair()

TVec2< const FPerShapeData * > Chaos::FContactPairModifier::GetShapePair ( ) const

◆ GetShapeToWorld()

FRigidTransform3 Chaos::FContactPairModifier::GetShapeToWorld ( int32  ParticleIdx) const
Returns
Transformation from geometry to world.

◆ GetStaticFriction()

FReal Chaos::FContactPairModifier::GetStaticFriction ( ) const
Returns
Static friction coefficient of contact.

◆ GetTargetSeparation()

FReal Chaos::FContactPairModifier::GetTargetSeparation ( int32  ContactPointIdx) const
Returns
desired separation of contact locations in direction of normal.

◆ GetWorldContactLocation()

FVec3 Chaos::FContactPairModifier::GetWorldContactLocation ( int32  ContactPointIdx) const
Returns
Contact location. This is midpoint of each body's contact location.

◆ GetWorldContactLocations()

void Chaos::FContactPairModifier::GetWorldContactLocations ( int32  ContactPointIdx,
FVec3 OutLocation0,
FVec3 OutLocation1 
) const

Get contact location on each body in world space.

◆ GetWorldNormal()

FVec3 Chaos::FContactPairModifier::GetWorldNormal ( int32  ContactPointIdx) const

Get the world-space contact normal.

Note
The contact normal always points away from the second body. E.g., a sphere lying on a flat ground could return a WorldNormal pointing up or down, depending on whether the sphere is the first or second body in the constraint.
Returns
Normal of contact in world space.

◆ IsContactPointDisabled()

bool Chaos::FContactPairModifier::IsContactPointDisabled ( int32  ContactPointIdx) const

◆ IsEdgeContactPoint()

bool Chaos::FContactPairModifier::IsEdgeContactPoint ( int32  ContactPointIdx) const

◆ ModifyDynamicFriction()

void Chaos::FContactPairModifier::ModifyDynamicFriction ( FReal  DynamicFriction)

Modify dynamic friction coefficient of contact.

◆ ModifyInvInertiaScale()

void Chaos::FContactPairModifier::ModifyInvInertiaScale ( FReal  InvInertiaScale,
int32  ParticleIdx 
)

Modify InvInertiaScale of particle. 0 prevents all rotation of particle due to collision, values > 1 decrease rotational inertia.

◆ ModifyInvMassScale()

void Chaos::FContactPairModifier::ModifyInvMassScale ( FReal  InvMassScale,
int32  ParticleIdx 
)

Modify InvMassScale of particle. 0 gives particle infinite mass during collision, values > 1 decrease mass during collision.

◆ ModifyParticleAngularVelocity()

void Chaos::FContactPairModifier::ModifyParticleAngularVelocity ( FVec3  AngularVelocity,
int32  ParticleIdx 
)

Modify angular velocity. For simulated objects: Previous frame's rotation is modified to maintain PBD implicit velocity.

◆ ModifyParticlePosition()

void Chaos::FContactPairModifier::ModifyParticlePosition ( FVec3  Position,
bool  bMaintainVelocity,
int32  ParticleIdx 
)

For simulated objects: this sets PBD predicted position and not position before integrating movement.

Parameters
bMaintainVelocity- if true, simulated object will update previous position to maintain implicit velocity. Otherwise changing position will change velocity.

◆ ModifyParticleRotation()

void Chaos::FContactPairModifier::ModifyParticleRotation ( FRotation3  Rotation,
bool  bMaintainVelocity,
int32  ParticleIdx 
)

For simulated objects: this sets PBD predicted rotation and not rotation before integrating movement.

Parameters
bMaintainVelocity- if true, simulated object will update previous rotation to maintain implicit velocity. Otherwise changing rotation will change angular velocity.

◆ ModifyParticleVelocity()

void Chaos::FContactPairModifier::ModifyParticleVelocity ( FVec3  Velocity,
int32  ParticleIdx 
)

Modify linear velocity. For simulated objects: Previous frame's position is modified to maintain PBD implicit velocity.

◆ ModifyRestitution()

void Chaos::FContactPairModifier::ModifyRestitution ( FReal  Restitution)

Modify restitution of contact. If object is moving slowly, RestitutionThreshold may need to be lowered if restitution is desired.

◆ ModifyRestitutionThreshold()

void Chaos::FContactPairModifier::ModifyRestitutionThreshold ( FReal  Restitution)

Modify restitution threshold of contact. If velocity of object is below this threshold, no restitution is applied.

◆ ModifyStaticFriction()

void Chaos::FContactPairModifier::ModifyStaticFriction ( FReal  StaticFriction)

Modify static friction coefficient of contact.

◆ ModifyTargetSeparation()

void Chaos::FContactPairModifier::ModifyTargetSeparation ( FReal  TargetSeparation,
int32  ContactPointIdx 
)

Set the desired separation at the contact point (negative for penetration).

◆ ModifyWorldContactLocations()

void Chaos::FContactPairModifier::ModifyWorldContactLocations ( const FVec3 Location0,
const FVec3 Location1,
int32  ContactPointIdx 
)

Modify contact location of each body in world space. If modifying locations and separation, order of operations should be considered.

◆ ModifyWorldNormal()

void Chaos::FContactPairModifier::ModifyWorldNormal ( const FVec3 Normal,
int32  ContactPointIdx 
)

Modify contact normal in world space. If modifying separation and normal, order of operations should be considered.

Note
The contact normal should always point away from the second body.

◆ SetContactPointDisabled()

void Chaos::FContactPairModifier::SetContactPointDisabled ( int32  ContactPointIdx) const

◆ SetIsInitialContact()

void Chaos::FContactPairModifier::SetIsInitialContact ( bool  bIsInitialContact) const

Set whether this contact is considered an initial contact. This controls how the contact behaves with regard to the initial overlap depenetration system.

Friends And Related Symbol Documentation

◆ FVisitedContactPairsTracker


The documentation for this class was generated from the following files: