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

#include <CollisionConstraintAllocator.h>

Public Member Functions

 FCollisionContextAllocator (FPBDCollisionConstraints *InCollisionContainer, const int32 InNumCollisionsPerBlock, const int32 InCurrentEpoch)
 
int32 GetCurrentEpoch () const
 
CHAOS_API FPBDCollisionConstraintPtr CreateConstraint (FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const FRigidTransform3 &ShapeRelativeTransform0, FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const FRigidTransform3 &ShapeRelativeTransform1, const FReal CullDistance, const bool bUseManifold, const EContactShapesType ShapePairType)
 
FPBDCollisionConstraintPtr CreateConstraint ()
 
bool ActivateConstraint (FPBDCollisionConstraint *Constraint)
 
FParticlePairMidPhaseGetMidPhase (FGeometryParticleHandle *Particle0, FGeometryParticleHandle *Particle1, FGeometryParticleHandle *SearchParticlePerformanceHint, const FCollisionContext &Context)
 
FParticlePairMidPhaseFindMidPhase (FGeometryParticleHandle *Particle0, FGeometryParticleHandle *Particle1, FGeometryParticleHandle *SearchParticlePerformanceHint)
 

Friends

class Private::FCollisionConstraintAllocator
 
class FSortConstraintTask
 
class FMergeConstraintsTask
 
class Chaos::FSpatialAccelerationBroadPhase
 

Detailed Description

Container the storage for the FCollisionConstraintAllocator, as well as the API to create new midphases and collision constraints. We have one of these objects per thread on which collisions detection is performed to get lock-free allocations and lists.

Constructor & Destructor Documentation

◆ FCollisionContextAllocator()

Chaos::Private::FCollisionContextAllocator::FCollisionContextAllocator ( FPBDCollisionConstraints InCollisionContainer,
const int32  InNumCollisionsPerBlock,
const int32  InCurrentEpoch 
)
inline

Member Function Documentation

◆ ActivateConstraint()

bool Chaos::Private::FCollisionContextAllocator::ActivateConstraint ( FPBDCollisionConstraint Constraint)
inline

Set the constraint as Active - it will be added to the graph and solved this tick. NOTE: The definitive active constraints list is compiled after the parallel phase is complete (FCollisionConstraintAllocator::ProcessNewConstraints).

◆ CreateConstraint() [1/2]

FPBDCollisionConstraintPtr Chaos::Private::FCollisionContextAllocator::CreateConstraint ( )
inline

Create an uninitialized collision constraint (public only for use by Resim which overwrites it with a saved constraint)

◆ CreateConstraint() [2/2]

FPBDCollisionConstraintPtr Chaos::Private::FCollisionContextAllocator::CreateConstraint ( FGeometryParticleHandle Particle0,
const FImplicitObject Implicit0,
const FPerShapeData Shape0,
const FBVHParticles Simplicial0,
const FRigidTransform3 ShapeRelativeTransform0,
FGeometryParticleHandle Particle1,
const FImplicitObject Implicit1,
const FPerShapeData Shape1,
const FBVHParticles Simplicial1,
const FRigidTransform3 ShapeRelativeTransform1,
const FReal  CullDistance,
const bool  bUseManifold,
const EContactShapesType  ShapePairType 
)

Create a constraint (called by the MidPhase)

◆ FindMidPhase()

FParticlePairMidPhase * Chaos::Private::FCollisionContextAllocator::FindMidPhase ( FGeometryParticleHandle Particle0,
FGeometryParticleHandle Particle1,
FGeometryParticleHandle SearchParticlePerformanceHint 
)
inline

Return a midphase for a particle pair if it already exists, otherwise return null

◆ GetCurrentEpoch()

int32 Chaos::Private::FCollisionContextAllocator::GetCurrentEpoch ( ) const
inline

The current epoch used to determine if a collision is up to date

◆ GetMidPhase()

FParticlePairMidPhase * Chaos::Private::FCollisionContextAllocator::GetMidPhase ( FGeometryParticleHandle Particle0,
FGeometryParticleHandle Particle1,
FGeometryParticleHandle SearchParticlePerformanceHint,
const FCollisionContext Context 
)
inline

Return a midphase for a particle pair. This wil create a new midphase if the particle pairs were not recently overlapping, or return an existing one if they were.

Note
Nothing outside of thie allocator should hold a pointer to the midphase, or any constraints it creates for more than the duration of the tick. Except the IslandManager :|

Friends And Related Symbol Documentation

◆ Chaos::FSpatialAccelerationBroadPhase

◆ FMergeConstraintsTask

friend class FMergeConstraintsTask
friend

◆ FSortConstraintTask

friend class FSortConstraintTask
friend

◆ Private::FCollisionConstraintAllocator


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