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

#include <PBDCollisionConstraints.h>

+ Inheritance diagram for Chaos::FPBDCollisionConstraints:

Public Types

using Base = FPBDIndexedConstraintContainer
 
using FHandles = TArrayView< FPBDCollisionConstraint *const >
 
using FConstHandles = TArrayView< const FPBDCollisionConstraint *const >
 
using FConstraintContainerHandle = FPBDCollisionConstraintHandle
 

Public Member Functions

CHAOS_API FPBDCollisionConstraints (const FPBDRigidsSOAs &InParticles, TArrayCollectionArray< bool > &Collided, const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > &PhysicsMaterials, const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > &PerParticlePhysicsMaterials, const THandleArray< FChaosPhysicsMaterial > *const SimMaterials, const int32 NumCollisionsPerBlock=1000, const FReal RestitutionThreshold=FReal(2000))
 
virtual CHAOS_API ~FPBDCollisionConstraints ()
 
const FString & GetName () const
 
void SetName (const FSharedDebugName &InName)
 
bool GetHandlesEnabled () const
 
CHAOS_API void DisableHandles ()
 
void SetIsDeterministic (const bool bInIsDeterministic)
 Enable or disable determinism. Support for determinism requires that we sort active constraints each tick, so there is additional cost.
 
bool GetIsDeterministic () const
 Get determinism. Support for determinism requires that we sort active constraints each tick, so there is additional cost.
 
CHAOS_API void BeginFrame ()
 
CHAOS_API void Reset ()
 
CHAOS_API void BeginDetectCollisions ()
 Called before collision detection to reset contacts.
 
CHAOS_API void EndDetectCollisions ()
 Called after collision detection to finalize the contacts.
 
CHAOS_API void DetectProbeCollisions (FReal Dt)
 Called after collision resolution in order to detect probes.
 
void ApplyMidPhaseModifier (const TArray< ISimCallbackObject * > &MidPhaseModifiers, FReal Dt)
 
CHAOS_API void ApplyCCDModifier (const TArray< ISimCallbackObject * > &CCDModifiers, FReal Dt)
 
CHAOS_API void ApplyCollisionModifier (const TArray< ISimCallbackObject * > &CollisionModifiers, FReal Dt)
 
CHAOS_API void RemoveConstraints (const TSet< FGeometryParticleHandle * > &ParticleHandle)
 
virtual CHAOS_API void DisconnectConstraints (const TSet< FGeometryParticleHandle * > &ParticleHandles) override
 Remove all constraints associated with the particles - called when particles are destroyed.
 
void DisableConstraints (const TSet< FGeometryParticleHandle * > &ParticleHandle)
 
virtual int32 GetNumConstraints () const override final
 
virtual void ResetConstraints () override final
 
virtual CHAOS_API void AddConstraintsToGraph (Private::FPBDIslandManager &IslandManager) override final
 
virtual void PrepareTick () override final
 
virtual void UnprepareTick () override final
 
virtual CHAOS_API TUniquePtr< FConstraintContainerSolverCreateSceneSolver (const int32 Priority) override final
 
virtual CHAOS_API TUniquePtr< FConstraintContainerSolverCreateGroupSolver (const int32 Priority) override final
 
Private::ECollisionSolverType GetSolverType () const
 
void SetSolverType (const Private::ECollisionSolverType InSolverType)
 
void SetCanDisableContacts (bool bInCanDisableContacts)
 
bool GetCanDisableContacts () const
 
void SetRestitutionThreshold (FReal InRestitutionThreshold)
 
FReal GetRestitutionThreshold () const
 
void SetCollisionsEnabled (bool bInEnableCollisions)
 
bool GetCollisionsEnabled () const
 
void SetRestitutionEnabled (bool bInEnableRestitution)
 
bool GetRestitutionEnabled () const
 
void SetGravity (const FVec3 &InGravity)
 
FVec3 GetGravityDirection () const
 
FReal GetGravitySize () const
 
void SetMaxPushOutVelocity (const FReal InMaxPushOutVelocity)
 
void SetDepenetrationVelocity (const FRealSingle InVel)
 
void SetPositionFrictionIterations (const int32 InNumIterations)
 
void SetVelocityFrictionIterations (const int32 InNumIterations)
 
void SetPositionShockPropagationIterations (const int32 InNumIterations)
 
void SetVelocityShockPropagationIterations (const int32 InNumIterations)
 
bool IsShockPropagationEnabled () const
 
int32 NumConstraints () const
 
TArrayView< FPBDCollisionConstraint *const > GetConstraints () const
 
CHAOS_API FHandles GetConstraintHandles () const
 
CHAOS_API FConstHandles GetConstConstraintHandles () const
 
CHAOS_API const FPBDCollisionConstraintGetConstraint (int32 Index) const
 
CHAOS_API const FPBDCollisionConstraintGetConstConstraint (int32 Index) const
 
Private::FCollisionConstraintAllocatorGetConstraintAllocator ()
 
CHAOS_API void UpdateConstraintMaterialProperties (FPBDCollisionConstraint &Contact)
 
const FPBDCollisionSolverSettingsGetSolverSettings () const
 
void SetSolverSettings (const FPBDCollisionSolverSettings &InSettings)
 
const FCollisionDetectorSettingsGetDetectorSettings () const
 
void SetDetectorSettings (const FCollisionDetectorSettings &InSettings)
 
void SetCullDistance (const FReal InCullDistance)
 
void SetVelocityBoundsExpansion (const FReal BoundsVelocityMultiplier, const FReal MaxVelocityBoundsExpansion)
 
void SetVelocityBoundsExpansionMACD (const FReal BoundsVelocityMultiplier, const FReal MaxVelocityBoundsExpansion)
 
void SetAllowManifolds (const bool bAllowManifolds)
 
- Public Member Functions inherited from Chaos::FPBDConstraintContainer
CHAOS_API FPBDConstraintContainer (FConstraintHandleTypeID InConstraintHandleType)
 
virtual CHAOS_API ~FPBDConstraintContainer ()
 
int32 GetContainerId () const
 
void SetContainerId (int32 InContainerId)
 
const FConstraintHandleTypeIDGetConstraintHandleType () const
 
virtual void UpdatePositionBasedState (const FReal Dt)
 
virtual void DisconnectConstraints (const TSet< TGeometryParticleHandle< FReal, 3 > * > &)
 
virtual void OnDisableParticle (FGeometryParticleHandle *DisabledParticle)
 
virtual void OnEnableParticle (FGeometryParticleHandle *EnabledParticle)
 

Protected Member Functions

CHAOS_API FPBDCollisionConstraintGetConstraint (int32 Index)
 
CHAOS_API void PruneEdgeCollisions ()
 

Friends

class FPBDCollisionConstraintHandle
 

Additional Inherited Members

- Protected Attributes inherited from Chaos::FPBDConstraintContainer
FConstraintHandleTypeID ConstraintHandleType
 
int32 ContainerId
 

Detailed Description

A container and solver for collision constraints.

Member Typedef Documentation

◆ Base

◆ FConstHandles

◆ FConstraintContainerHandle

◆ FHandles

Constructor & Destructor Documentation

◆ FPBDCollisionConstraints()

Chaos::FPBDCollisionConstraints::FPBDCollisionConstraints ( const FPBDRigidsSOAs InParticles,
TArrayCollectionArray< bool > &  Collided,
const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > &  PhysicsMaterials,
const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > &  PerParticlePhysicsMaterials,
const THandleArray< FChaosPhysicsMaterial > *const  SimMaterials,
const int32  NumCollisionsPerBlock = 1000,
const FReal  RestitutionThreshold = FReal(2000) 
)

◆ ~FPBDCollisionConstraints()

Chaos::FPBDCollisionConstraints::~FPBDCollisionConstraints ( )
virtual

Member Function Documentation

◆ AddConstraintsToGraph()

void Chaos::FPBDCollisionConstraints::AddConstraintsToGraph ( Private::FPBDIslandManager IslandManager)
finaloverridevirtual

Add all the constraints in the container to the graph

Implements Chaos::FPBDConstraintContainer.

◆ ApplyCCDModifier()

void Chaos::FPBDCollisionConstraints::ApplyCCDModifier ( const TArray< ISimCallbackObject * > &  CCDModifiers,
FReal  Dt 
)

Apply modifiers to CCD results

◆ ApplyCollisionModifier()

void Chaos::FPBDCollisionConstraints::ApplyCollisionModifier ( const TArray< ISimCallbackObject * > &  CollisionModifiers,
FReal  Dt 
)

Apply modifiers to the constraints and specify which constraints should be disabled. You would probably call this in the PostComputeCallback. Prefer this to calling RemoveConstraints in a loop, so you don't have to worry about constraint iterator/indices changing.

◆ ApplyMidPhaseModifier()

void Chaos::FPBDCollisionConstraints::ApplyMidPhaseModifier ( const TArray< ISimCallbackObject * > &  MidPhaseModifiers,
FReal  Dt 
)
inline

Apply modifiers to particle pair midphases

◆ BeginDetectCollisions()

void Chaos::FPBDCollisionConstraints::BeginDetectCollisions ( )

Called before collision detection to reset contacts.

◆ BeginFrame()

void Chaos::FPBDCollisionConstraints::BeginFrame ( )

Clears the list of active constraints.

◆ CreateGroupSolver()

TUniquePtr< FConstraintContainerSolver > Chaos::FPBDCollisionConstraints::CreateGroupSolver ( const int32  Priority)
finaloverridevirtual

Create a constraint solver for an Evolution with Graph support (World evolution). The system will create several of these: usually one per worker thread (Island Group) but possibly more in complex scenes where constraint coloring is being used. It will be used to solve constraints in groups, with the constraints in each group determined by the graph/islands/islandgroups.

Implements Chaos::FPBDConstraintContainer.

◆ CreateSceneSolver()

TUniquePtr< FConstraintContainerSolver > Chaos::FPBDCollisionConstraints::CreateSceneSolver ( const int32  Priority)
finaloverridevirtual

Create a constraint solver for an Evolution without Graph support (RBAN evolution). There will only be one of these per scene (RBAN node) and it is used to solve all constraints in the container (serially).

Implements Chaos::FPBDConstraintContainer.

◆ DetectProbeCollisions()

void Chaos::FPBDCollisionConstraints::DetectProbeCollisions ( FReal  Dt)

Called after collision resolution in order to detect probes.

◆ DisableConstraints()

void Chaos::FPBDCollisionConstraints::DisableConstraints ( const TSet< FGeometryParticleHandle * > &  ParticleHandle)
inline

Disable the constraints associated with the ParticleHandle.

◆ DisableHandles()

void Chaos::FPBDCollisionConstraints::DisableHandles ( )

Put the container in "no handles" mode for use with simple solver. Must be called when empty of constraints (ideally right after creation).

◆ DisconnectConstraints()

void Chaos::FPBDCollisionConstraints::DisconnectConstraints ( const TSet< FGeometryParticleHandle * > &  ParticleHandles)
overridevirtual

Remove all constraints associated with the particles - called when particles are destroyed.

◆ EndDetectCollisions()

void Chaos::FPBDCollisionConstraints::EndDetectCollisions ( )

Called after collision detection to finalize the contacts.

◆ GetCanDisableContacts()

bool Chaos::FPBDCollisionConstraints::GetCanDisableContacts ( ) const
inline

◆ GetCollisionsEnabled()

bool Chaos::FPBDCollisionConstraints::GetCollisionsEnabled ( ) const
inline

◆ GetConstConstraint()

const FPBDCollisionConstraint & Chaos::FPBDCollisionConstraints::GetConstConstraint ( int32  Index) const

◆ GetConstConstraintHandles()

FPBDCollisionConstraints::FConstHandles Chaos::FPBDCollisionConstraints::GetConstConstraintHandles ( ) const

◆ GetConstraint() [1/2]

FPBDCollisionConstraint & Chaos::FPBDCollisionConstraints::GetConstraint ( int32  Index)
protected

◆ GetConstraint() [2/2]

const FPBDCollisionConstraint & Chaos::FPBDCollisionConstraints::GetConstraint ( int32  Index) const

◆ GetConstraintAllocator()

Private::FCollisionConstraintAllocator & Chaos::FPBDCollisionConstraints::GetConstraintAllocator ( )
inline

◆ GetConstraintHandles()

FPBDCollisionConstraints::FHandles Chaos::FPBDCollisionConstraints::GetConstraintHandles ( ) const

◆ GetConstraints()

TArrayView< FPBDCollisionConstraint *const > Chaos::FPBDCollisionConstraints::GetConstraints ( ) const
inline

◆ GetDetectorSettings()

const FCollisionDetectorSettings & Chaos::FPBDCollisionConstraints::GetDetectorSettings ( ) const
inline

◆ GetGravityDirection()

FVec3 Chaos::FPBDCollisionConstraints::GetGravityDirection ( ) const
inline

◆ GetGravitySize()

FReal Chaos::FPBDCollisionConstraints::GetGravitySize ( ) const
inline

◆ GetHandlesEnabled()

bool Chaos::FPBDCollisionConstraints::GetHandlesEnabled ( ) const
inline

Whether this container provides constraint handles (simple solvers do not need them)

◆ GetIsDeterministic()

bool Chaos::FPBDCollisionConstraints::GetIsDeterministic ( ) const

Get determinism. Support for determinism requires that we sort active constraints each tick, so there is additional cost.

◆ GetName()

const FString & Chaos::FPBDCollisionConstraints::GetName ( ) const
inline

◆ GetNumConstraints()

virtual int32 Chaos::FPBDCollisionConstraints::GetNumConstraints ( ) const
inlinefinaloverridevirtual

Get the number of constraints in this container (includes inactive and disabled)

Implements Chaos::FPBDConstraintContainer.

◆ GetRestitutionEnabled()

bool Chaos::FPBDCollisionConstraints::GetRestitutionEnabled ( ) const
inline

◆ GetRestitutionThreshold()

FReal Chaos::FPBDCollisionConstraints::GetRestitutionThreshold ( ) const
inline

◆ GetSolverSettings()

const FPBDCollisionSolverSettings & Chaos::FPBDCollisionConstraints::GetSolverSettings ( ) const
inline

◆ GetSolverType()

Private::ECollisionSolverType Chaos::FPBDCollisionConstraints::GetSolverType ( ) const
inline

◆ IsShockPropagationEnabled()

bool Chaos::FPBDCollisionConstraints::IsShockPropagationEnabled ( ) const
inline

◆ NumConstraints()

int32 Chaos::FPBDCollisionConstraints::NumConstraints ( ) const
inline

◆ PrepareTick()

virtual void Chaos::FPBDCollisionConstraints::PrepareTick ( )
inlinefinaloverridevirtual

Called oncer per tick to initialize buffers required for the rest of the tick

Implements Chaos::FPBDConstraintContainer.

◆ PruneEdgeCollisions()

void Chaos::FPBDCollisionConstraints::PruneEdgeCollisions ( )
protected

◆ RemoveConstraints()

void Chaos::FPBDCollisionConstraints::RemoveConstraints ( const TSet< FGeometryParticleHandle * > &  ParticleHandle)

Remove the constraints associated with the ParticleHandle.

◆ Reset()

void Chaos::FPBDCollisionConstraints::Reset ( )

Destroy all constraints

◆ ResetConstraints()

virtual void Chaos::FPBDCollisionConstraints::ResetConstraints ( )
inlinefinaloverridevirtual

Empty the constraints (must be removed from the graph first, if required)

Implements Chaos::FPBDConstraintContainer.

◆ SetAllowManifolds()

void Chaos::FPBDCollisionConstraints::SetAllowManifolds ( const bool  bAllowManifolds)
inline

◆ SetCanDisableContacts()

void Chaos::FPBDCollisionConstraints::SetCanDisableContacts ( bool  bInCanDisableContacts)
inline

◆ SetCollisionsEnabled()

void Chaos::FPBDCollisionConstraints::SetCollisionsEnabled ( bool  bInEnableCollisions)
inline

◆ SetCullDistance()

void Chaos::FPBDCollisionConstraints::SetCullDistance ( const FReal  InCullDistance)
inline

◆ SetDepenetrationVelocity()

void Chaos::FPBDCollisionConstraints::SetDepenetrationVelocity ( const FRealSingle  InVel)
inline

◆ SetDetectorSettings()

void Chaos::FPBDCollisionConstraints::SetDetectorSettings ( const FCollisionDetectorSettings InSettings)
inline

◆ SetGravity()

void Chaos::FPBDCollisionConstraints::SetGravity ( const FVec3 InGravity)
inline

◆ SetIsDeterministic()

void Chaos::FPBDCollisionConstraints::SetIsDeterministic ( const bool  bInIsDeterministic)

Enable or disable determinism. Support for determinism requires that we sort active constraints each tick, so there is additional cost.

◆ SetMaxPushOutVelocity()

void Chaos::FPBDCollisionConstraints::SetMaxPushOutVelocity ( const FReal  InMaxPushOutVelocity)
inline

◆ SetName()

void Chaos::FPBDCollisionConstraints::SetName ( const FSharedDebugName InName)
inline

◆ SetPositionFrictionIterations()

void Chaos::FPBDCollisionConstraints::SetPositionFrictionIterations ( const int32  InNumIterations)
inline

◆ SetPositionShockPropagationIterations()

void Chaos::FPBDCollisionConstraints::SetPositionShockPropagationIterations ( const int32  InNumIterations)
inline

◆ SetRestitutionEnabled()

void Chaos::FPBDCollisionConstraints::SetRestitutionEnabled ( bool  bInEnableRestitution)
inline

◆ SetRestitutionThreshold()

void Chaos::FPBDCollisionConstraints::SetRestitutionThreshold ( FReal  InRestitutionThreshold)
inline

◆ SetSolverSettings()

void Chaos::FPBDCollisionConstraints::SetSolverSettings ( const FPBDCollisionSolverSettings InSettings)
inline

◆ SetSolverType()

void Chaos::FPBDCollisionConstraints::SetSolverType ( const Private::ECollisionSolverType  InSolverType)
inline

◆ SetVelocityBoundsExpansion()

void Chaos::FPBDCollisionConstraints::SetVelocityBoundsExpansion ( const FReal  BoundsVelocityMultiplier,
const FReal  MaxVelocityBoundsExpansion 
)
inline

◆ SetVelocityBoundsExpansionMACD()

void Chaos::FPBDCollisionConstraints::SetVelocityBoundsExpansionMACD ( const FReal  BoundsVelocityMultiplier,
const FReal  MaxVelocityBoundsExpansion 
)
inline

◆ SetVelocityFrictionIterations()

void Chaos::FPBDCollisionConstraints::SetVelocityFrictionIterations ( const int32  InNumIterations)
inline

◆ SetVelocityShockPropagationIterations()

void Chaos::FPBDCollisionConstraints::SetVelocityShockPropagationIterations ( const int32  InNumIterations)
inline

◆ UnprepareTick()

virtual void Chaos::FPBDCollisionConstraints::UnprepareTick ( )
inlinefinaloverridevirtual

Should undo any allocations in PrepareTick

Implements Chaos::FPBDConstraintContainer.

◆ UpdateConstraintMaterialProperties()

void Chaos::FPBDCollisionConstraints::UpdateConstraintMaterialProperties ( FPBDCollisionConstraint Contact)

Friends And Related Symbol Documentation

◆ FPBDCollisionConstraintHandle


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