Navigation
API > API/Runtime > API/Runtime/Chaos
The lifetime of midphase objects is handled entirely by the CollisionConstraintAllocator. Nothing outside of the CollisionConstraintAllocator should hold a pointer to the detector or any constraints it creates for more than the duration of the tick.
| Name | FParticlePairMidPhase |
| Type | class |
| Header File | /Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/Collision/ParticlePairMidPhase.h |
| Include Path | #include "Chaos/Collision/ParticlePairMidPhase.h" |
Syntax
class FParticlePairMidPhase
Derived Classes
- FGenericParticlePairMidPhase
- FShapePairParticlePairMidPhase
- FSphereApproximationParticlePairMidPhase
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FParticlePairMidPhase
(
const EParticlePairMidPhaseType InMidPhaseType |
Chaos/Collision/ParticlePairMidPhase.h | ||
FParticlePairMidPhase
(
const FParticlePairMidPhase& |
Chaos/Collision/ParticlePairMidPhase.h | ||
| Chaos/Collision/ParticlePairMidPhase.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual ~FParticlePairMidPhase() |
Chaos/Collision/ParticlePairMidPhase.h |
Classes
| Name | Remarks |
|---|---|
| FFlags |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void CachePrefetch() |
Prefetch the memory in this class for later use. | Chaos/Collision/ParticlePairMidPhase.h | |
void DetachParticle
(
FGeometryParticleHandle* Particle |
Destroy all collisions and prevent this midphasae from being used any more. Called when one of its particles is destoyed. It will be culled at the next Prune in the CollisionConstraintAllocator. We don't delete it immediately so that we don't have to remove it from either Particle's ParticleCollisions array (which is O(N) and unnecessary when the particles are being destroyed) | Chaos/Collision/ParticlePairMidPhase.h | |
void GenerateCollisions
(
const FReal CullDistance, |
Create collision constraints for all colliding shape pairs. | Chaos/Collision/ParticlePairMidPhase.h | |
const Private::FCollisionParticlePairKey & GetKey() |
Chaos/Collision/ParticlePairMidPhase.h | ||
EParticlePairMidPhaseType GetMidPhaseType() |
Chaos/Collision/ParticlePairMidPhase.h | ||
FGeometryParticleHandle * GetParticle0() |
Chaos/Collision/ParticlePairMidPhase.h | ||
FGeometryParticleHandle * GetParticle1() |
Chaos/Collision/ParticlePairMidPhase.h | ||
int32 GetParticleCollisionsIndex
(
FGeometryParticleHandle* InParticle |
Cookie for use by FParticleCollisions. | Chaos/Collision/ParticlePairMidPhase.h | |
void Init
(
FGeometryParticleHandle* InParticle0, |
Set up the midphase based on the ShapesArrays of the two particles Only intended to be called once right after constructor. We don't do this work in the constructor so that we can reduce the time that the lock is held when allocating new MidPhases. | Chaos/Collision/ParticlePairMidPhase.h | |
void InjectCollision
(
const FPBDCollisionConstraint& Constraint, |
Copy a collision and activate it This is used by the Resim system to restore saved colisions. If there is already a matching constraint it will be overwritten, otherwise a new constraint will be added. | Chaos/Collision/ParticlePairMidPhase.h | |
bool IsCCD() |
True if CCD is supported by either particle | Chaos/Collision/ParticlePairMidPhase.h | |
bool IsCCDActive() |
True if CCD is active for this midphase on this frame.This can be changed by modifiers and resets to bIsCCD each frame. | Chaos/Collision/ParticlePairMidPhase.h | |
bool IsInConstraintGraph() |
Chaos/Collision/ParticlePairMidPhase.h | ||
bool IsSleeping() |
Whether the particle pair is sleeping and therefore contacts should not be culled (they will be reused on wake) | Chaos/Collision/ParticlePairMidPhase.h | |
bool IsUsedSince
(
const int32 Epoch |
Have we run collision detection since this Epoch (inclusive) | Chaos/Collision/ParticlePairMidPhase.h | |
bool IsValid() |
Chaos/Collision/ParticlePairMidPhase.h | ||
void Reset() |
Delete all cached data and collisions. Should be called when a particle changes its shapes. | Chaos/Collision/ParticlePairMidPhase.h | |
void ResetModifications() |
Chaos/Collision/ParticlePairMidPhase.h | ||
void SetCCDIsActive
(
bool bCCDIsActive |
Override the CCD condition for this mid-phase. Used by the MidPhase modifier and gets reset every frame. | Chaos/Collision/ParticlePairMidPhase.h | |
void SetConvexOptimizationIsActive
(
bool bSetConvexOptimizationIsActive |
Chaos/Collision/ParticlePairMidPhase.h | ||
virtual void SetConvexOptimizationIsActive
(
bool bSetConvexOptimizationIsActive, |
Override whether convex optimization if used this mid-phase. Used by the MidPhase modifier and gets reset every frame. NOTE: when this setting is changed, collisions will be destroyed so any external systems referencing them will need to drop their references. | Chaos/Collision/ParticlePairMidPhase.h | |
void SetIsActive
(
bool bIsActive |
By default midphases are active. If IsActive is set to false, this midphase will not generate a narrow phase. | Chaos/Collision/ParticlePairMidPhase.h | |
void SetIsSleeping
(
const bool bInIsSleeping, |
Update the sleeping state If this switches the state to Awake, it will reactivate any collisions between the particle pair that were active when they went to sleep. | Chaos/Collision/ParticlePairMidPhase.h | |
void SetParticleCollisionsIndex
(
FGeometryParticleHandle* InParticle, |
Cookie for use by FParticleCollisions. | Chaos/Collision/ParticlePairMidPhase.h | |
ECollisionVisitorResult VisitCollisions
(
const TLambda& Visitor, |
Call a lambda on each active collision constraint This includes sleeping constraints, but skips constraints that are were not used on the last awake tick but are still kept around as an optimization. | Chaos/Collision/ParticlePairMidPhase.h | |
ECollisionVisitorResult VisitConstCollisions
(
const TLambda& Visitor, |
Call a lambda on each active collision constraint. | Chaos/Collision/ParticlePairMidPhase.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void BuildDetectorsImpl() |
Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' shapes arrays that pass the collision filter. | Chaos/Collision/ParticlePairMidPhase.h | |
int32 GenerateCollisionsImpl
(
const FRealSingle Dt, |
Chaos/Collision/ParticlePairMidPhase.h | ||
void InitThresholds() |
Chaos/Collision/ParticlePairMidPhase.h | ||
void InjectCollisionImpl
(
const FPBDCollisionConstraint& Constraint, |
Chaos/Collision/ParticlePairMidPhase.h | ||
void ResetImpl() |
Chaos/Collision/ParticlePairMidPhase.h | ||
bool ShouldEnableCCDSweep
(
const FReal Dt |
Decide whether we should have CCD enabled on this constraint. | Chaos/Collision/ParticlePairMidPhase.h | |
void WakeCollisionsImpl
(
const int32 CurrentEpoch |
Chaos/Collision/ParticlePairMidPhase.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static EParticlePairMidPhaseType CalculateMidPhaseType
(
FGeometryParticleHandle* InParticle0, |
Chaos/Collision/ParticlePairMidPhase.h | ||
static FParticlePairMidPhase * Make
(
FGeometryParticleHandle* InParticle0, |
Chaos/Collision/ParticlePairMidPhase.h |
Operators
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
| Chaos/Collision/ParticlePairMidPhase.h | |||
FParticlePairMidPhase & operator=
(
const FParticlePairMidPhase& |
Chaos/Collision/ParticlePairMidPhase.h |