UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticlePairMidPhase.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"
5
10#include "Chaos/ImplicitFwd.h"
13
14
16
17namespace Chaos
18{
19 namespace Private
20 {
21 class FCollisionConstraintAllocator;
22 }
23
24 class FParticlePairMidPhaseCollisionKey;
25
30 {
31 // A general purpose midphase that handle BVHs, Meshes,
32 // Unions of Unions, etc in the geometry hierarchy.
34
35 // A midphase optimized for particle pairs with a small
36 // number of shapes. Pre-expands the set of potentially
37 // colliding shape pairs.
39
40 // A midphase used to collide particles as sphere approximations
42 };
43
50 {
51 public:
53
61 FParticlePairMidPhase& MidPhase);
66
67 const FPBDCollisionConstraint* GetConstraint() const{ return Constraint.Get(); }
68 FPBDCollisionConstraint* GetConstraint() { return Constraint.Get(); }
69 const FGeometryParticleHandle* GetParticle0() const { return Particle0; }
70 FGeometryParticleHandle* GetParticle0() { return Particle0; }
71 const FGeometryParticleHandle* GetParticle1() const { return Particle1; }
72 FGeometryParticleHandle* GetParticle1() { return Particle1; }
73 const FPerShapeData* GetShape0() const { return Shape0; }
74 const FPerShapeData* GetShape1() const { return Shape1; }
75
79 inline bool IsUsedSince(const int32 Epoch) const
80 {
81 return Constraint.IsValid() && (LastUsedEpoch >= Epoch);
82 }
83
88 UE_DEPRECATED(5.4, "Use single precision version")
89 int32 GenerateCollision(const FReal CullDistance, const FReal Dt, const FCollisionContext& Context) { return GenerateCollision(FRealSingle(Dt), FRealSingle(CullDistance), FVec3f(0), Context); }
90
92 const FRealSingle Dt,
93 const FRealSingle CullDistance,
94 const FVec3f& RelativeMovement,
96
101 UE_DEPRECATED(5.4, "Use single precision version")
102 int32 GenerateCollisionCCD( const bool bEnableCCDSweep, const FReal CullDistance, const FReal Dt, const FCollisionContext& Context) { return GenerateCollisionCCD(FRealSingle(Dt), FRealSingle(CullDistance), FVec3f(0), bEnableCCDSweep, Context); }
103
105 const FRealSingle Dt,
106 const FRealSingle CullDistance,
107 const FVec3f& RelativeMovement,
108 const bool bEnableCCDSweep,
110
117 const int32 SleepEpoch,
118 const int32 CurrentEpoch);
119
125 const FPBDCollisionConstraint& Constraint,
127
128 private:
129 CHAOS_API int32 GenerateCollisionImpl(
130 const FRealSingle Dt,
131 const FRealSingle CullDistance,
132 const FVec3f& RelativeMovement,
134
135 CHAOS_API int32 GenerateCollisionCCDImpl(
136 const FRealSingle Dt,
137 const FRealSingle CullDistance,
138 const FVec3f& RelativeMovement,
139 const bool bEnableCCDSweep,
141
142 CHAOS_API int32 GenerateCollisionProbeImpl(
143 const FRealSingle Dt,
144 const FRealSingle CullDistance,
145 const FVec3f& RelativeMovement,
147
152 CHAOS_API bool DoBoundsOverlap(
153 const FRealSingle CullDistance,
154 const FVec3f& RelativeMovement,
155 const int32 CurrentEpoch);
156
160 CHAOS_API void CreateConstraint(
161 const FReal CullDistance,
163
164 FParticlePairMidPhase& MidPhase;
166 FGeometryParticleHandle* Particle0;
167 FGeometryParticleHandle* Particle1;
168 const FPerShapeData* Shape0;
169 const FPerShapeData* Shape1;
170 Private::FCollisionSortKey CollisionSortKey;
171 FRealSingle SphereBoundsCheckSize;
172 int32 LastUsedEpoch;
173 EContactShapesType ShapePairType;
174 Private::FImplicitBoundsTestFlags BoundsTestFlags;
175 };
176
177
192 {
193 public:
196
198
201
206
213 CHAOS_API void Init(
218
220
222
224
225 inline bool IsValid() const { return (Particle0 != nullptr) && (Particle1 != nullptr); }
226
227 // Prefetch the memory in this class for later use
228 inline void CachePrefetch()
229 {
230 FPlatformMisc::PrefetchBlock(this, sizeof(*this));
231 }
232
236 inline bool IsUsedSince(const int32 Epoch) const
237 {
238 return (LastUsedEpoch >= Epoch);
239 }
240
241
245 inline bool IsSleeping() const { return Flags.bIsSleeping; }
246
252 CHAOS_API void SetIsSleeping(const bool bInIsSleeping, const int32 CurrentEpoch);
253
254 CHAOS_API bool IsInConstraintGraph() const;
255
262
266 CHAOS_API void Reset();
267
272
277 const FReal CullDistance,
278 const FReal Dt,
280
287
294 template<typename TLambda>
296
297
302 template<typename TLambda>
304
309 {
311 if (InParticle == Particle0)
312 {
314 }
315 else
316 {
318 }
319 }
320
336
341 void SetIsActive(bool bIsActive)
342 {
343 Flags.bIsModified = true;
344 Flags.bIsActive = bIsActive;
345 }
346
351 {
352 Flags.bIsModified = true;
354 }
355
356 UE_DEPRECATED(5.6, "Use SetConvexOptimizationIsActive which takes an OnDestroyingCollision functor")
361
362
369
370 /*
371 * True if CCD is supported by either particle
372 */
373 bool IsCCD() const
374 {
375 return Flags.bIsCCD;
376 }
377
378 /*
379 * True if CCD is active for this midphase on this frame.This can be changed by modifiers and resets to bIsCCD each frame.
380 */
381 bool IsCCDActive() const
382 {
383 return Flags.bIsCCDActive;
384 }
385
386 protected:
387
388 virtual void ResetImpl() = 0;
389
394 virtual void BuildDetectorsImpl() = 0;
395
397 const FRealSingle Dt,
398 const FRealSingle CullDistance,
399 const FVec3f& RelativeMovement,
400 const FCollisionContext& Context) = 0;
401
402 virtual void WakeCollisionsImpl(const int32 CurrentEpoch) = 0;
403
404 virtual void InjectCollisionImpl(const FPBDCollisionConstraint& Constraint, const FCollisionContext& Context) = 0;
405
411 CHAOS_API bool ShouldEnableCCDSweep(const FReal Dt);
412
414
415
416 union FFlags
417 {
418 FFlags() : Bits(0) {}
419 struct
420 {
421 uint16 bIsActive : 1; // True if this midphase should generate a narrow phase at all
422 uint16 bIsCCD : 1; // True if CCD is supported by either particle
423 uint16 bIsCCDActive : 1; // True if CCD is active for this midphase on this frame. This can be changed by modifiers and resets to bIsCCD each frame.
424 uint16 bUseSweep : 1; // True if CCD is active (this frame) and we are moving fast enough to require a sweep
425 uint16 bIsMACD : 1; // True if MACD (movement-aware collision detection) is enabled for this pair
426 uint16 bIsConvexOptimizationActive : 1; // True if convex optimization is active for this midphase
427 uint16 bIsConvexOptimizationUsed : 1; // True if we generated collisions with convex optimization active (used to detect changes to bIsConvexOptimizationActive in modifiers). See FGenericParticlePairMidPhase::GenerateCollisionsImpl
428 uint16 bIsSleeping : 1; // True is the particles in the midphase are sleeping
429 uint16 bIsModified : 1; // True if a modifier applied any changes to this midphase
430 };
432 };
433
434 // VTable Ptr // 8 bytes
436 FFlags Flags; // 2 bytes
437
440 // A number based on the size of the dynamic objects used to scale cull distance
442
444
447
448 // Indices into the arrays of collisions on the particles. This is a cookie for use by FParticleCollisions
451
452 friend ::FChaosVDDataWrapperUtils;
453 };
454
455
463 {
464 public:
466
468
469 CHAOS_API virtual void ResetImpl() override final;
471
472 protected:
474 const FRealSingle Dt,
475 const FRealSingle CullDistance,
476 const FVec3f& RelativeMovement,
477 const FCollisionContext& Context) override final;
478
479 CHAOS_API virtual void WakeCollisionsImpl(const int32 CurrentEpoch) override final;
480
482
483 private:
484 CHAOS_API void TryAddShapePair(
485 const FPerShapeData* Shape0,
486 const int32 ShapeIndex0,
487 const FPerShapeData* Shape1,
488 const int32 ShapeIndex1);
489
490 TArray<FSingleShapePairCollisionDetector, TInlineAllocator<1>> ShapePairDetectors; // 88 bytes
491 };
492
493 // A set of cached data about a simple implicit object on a particle
495
507 {
508 public:
510
513
514 CHAOS_API virtual void ResetImpl() override final;
516
517 protected:
519 const FRealSingle Dt,
520 const FRealSingle CullDistance,
521 const FVec3f& RelativeMovement,
522 const FCollisionContext& Context) override final;
523
524 CHAOS_API virtual void WakeCollisionsImpl(const int32 CurrentEpoch) override final;
525
527
528 private:
529 // BVH on ParticleA versus BVH on ParticleB
530 CHAOS_API void GenerateCollisionsBVHBVH(
531 FGeometryParticleHandle* ParticleA, const Private::FImplicitBVH* BVHA,
532 FGeometryParticleHandle* ParticleB, const Private::FImplicitBVH* BVHB,
533 const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
534
535 // BVH on ParticleA versus implicit hierarchy of ParticleB
536 CHAOS_API void GenerateCollisionsBVHImplicitHierarchy(
537 FGeometryParticleHandle* ParticleA, const Private::FImplicitBVH* BVHA,
539 const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
540
541 // Implicit hierarchy of particle A versus implicit hierarchy of ParticleB (used when no BVH present on either)
542 CHAOS_API void GenerateCollisionsImplicitHierarchyImplicitHierarchy(
545 const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
546
547 // BVH on particle A versus a Leaf Implicit of ParticleB
548 CHAOS_API void GenerateCollisionsBVHImplicitLeaf(
549 FGeometryParticleHandle* ParticleA, const Private::FImplicitBVH* BVHA,
551 const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
552
553 // Leaf Implicit on ParticleA versus Leaf Implicit of ParticleB
554 CHAOS_API void GenerateCollisionsImplicitLeafImplicitLeaf(
557 const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
558
559 // A bounds check between two implicits
560 CHAOS_API bool DoBoundsOverlap(
563 const Private::FImplicitBoundsTestFlags BoundsTestFlags, const FRealSingle DistanceCheckSize, const FReal CullDistance);
564
565 CHAOS_API FPBDCollisionConstraint* FindOrCreateConstraint(
568 const FReal CullDistance, const EContactShapesType ShapePairType, const bool bUseManifold, const bool bEnableSweep, const FCollisionContext& Context);
569
571
572 CHAOS_API FPBDCollisionConstraint* CreateConstraint(
575 const FParticlePairMidPhaseCollisionKey& CollisionKey, const Private::FCollisionSortKey& CollisionSortKey,
576 const FReal CullDistance, const EContactShapesType ShapePairType, const bool bInUseManifold, const FCollisionContext& Context);
577
578 CHAOS_API int32 ProcessNewConstraints(const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
579
580 CHAOS_API void PruneConstraints(const int32 CurrentEpoch);
581
582 CHAOS_API bool UpdateCollision(FPBDCollisionConstraint* Constraint, const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
583
584 CHAOS_API bool UpdateCollisionCCD( FPBDCollisionConstraint* Constraint, const FReal CullDistance, const FReal Dt, const FCollisionContext& Context);
585
587
589 TArray<FPBDCollisionConstraint*> NewConstraints;
590 };
591
596 {
597 public:
599
601
602 CHAOS_API virtual void ResetImpl() override final;
604
605 protected:
607 const FRealSingle Dt,
608 const FRealSingle CullDistance,
609 const FVec3f& RelativeMovement,
610 const FCollisionContext& Context) override final;
611
612 CHAOS_API virtual void WakeCollisionsImpl(const int32 CurrentEpoch) override final;
613
615
617
618 private:
619 FImplicitSphere3 Sphere0;
620 FImplicitSphere3 Sphere1;
621 const FShapeInstance* SphereShape0;
622 const FShapeInstance* SphereShape1;
625 bool bHasSpheres;
626 };
627}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition BVHParticles.h:24
Definition CollisionContext.h:83
Definition ParticlePairMidPhase.h:507
Definition ImplicitObject.h:111
A contact constraint.
Definition PBDCollisionConstraint.h:225
Definition ParticlePairMidPhase.cpp:238
Produce collisions for a particle pair A FParticlePairMidPhase object is created for every particle p...
Definition ParticlePairMidPhase.h:192
int32 GetParticleCollisionsIndex(FGeometryParticleHandle *InParticle) const
Cookie for use by FParticleCollisions.
Definition ParticlePairMidPhase.h:308
UE_NONCOPYABLE(FParticlePairMidPhase)
virtual int32 GenerateCollisionsImpl(const FRealSingle Dt, const FRealSingle CullDistance, const FVec3f &RelativeMovement, const FCollisionContext &Context)=0
virtual void InjectCollisionImpl(const FPBDCollisionConstraint &Constraint, const FCollisionContext &Context)=0
void SetParticleCollisionsIndex(FGeometryParticleHandle *InParticle, const int32 InIndex)
Cookie for use by FParticleCollisions.
Definition ParticlePairMidPhase.h:324
FGeometryParticleHandle * GetParticle0() const
Definition ParticlePairMidPhase.h:219
int32 LastUsedEpoch
Definition ParticlePairMidPhase.h:445
virtual CHAOS_API ~FParticlePairMidPhase()
Definition ParticlePairMidPhase.cpp:788
static CHAOS_API FParticlePairMidPhase * Make(FGeometryParticleHandle *InParticle0, FGeometryParticleHandle *InParticle1)
Definition ParticlePairMidPhase.cpp:846
bool IsUsedSince(const int32 Epoch) const
Have we run collision detection since this Epoch (inclusive)
Definition ParticlePairMidPhase.h:236
FGeometryParticleHandle * Particle0
Definition ParticlePairMidPhase.h:438
FRealSingle CullDistanceScale
Definition ParticlePairMidPhase.h:441
CHAOS_API void InjectCollision(const FPBDCollisionConstraint &Constraint, const FCollisionContext &Context)
Copy a collision and activate it This is used by the Resim system to restore saved colisions....
Definition ParticlePairMidPhase.cpp:1064
bool IsSleeping() const
Whether the particle pair is sleeping and therefore contacts should not be culled (they will be reuse...
Definition ParticlePairMidPhase.h:245
bool IsCCD() const
Definition ParticlePairMidPhase.h:373
void SetIsActive(bool bIsActive)
By default midphases are active. If IsActive is set to false, this midphase will not generate a narro...
Definition ParticlePairMidPhase.h:341
FFlags Flags
Definition ParticlePairMidPhase.h:436
CHAOS_API void ResetModifications()
Definition ParticlePairMidPhase.cpp:891
bool IsValid() const
Definition ParticlePairMidPhase.h:225
bool IsCCDActive() const
Definition ParticlePairMidPhase.h:381
static CHAOS_API EParticlePairMidPhaseType CalculateMidPhaseType(FGeometryParticleHandle *InParticle0, FGeometryParticleHandle *InParticle1)
Definition ParticlePairMidPhase.cpp:792
virtual void WakeCollisionsImpl(const int32 CurrentEpoch)=0
virtual void ResetImpl()=0
CHAOS_API void GenerateCollisions(const FReal CullDistance, const FReal Dt, const FCollisionContext &Context)
Create collision constraints for all colliding shape pairs.
Definition ParticlePairMidPhase.cpp:988
void SetConvexOptimizationIsActive(bool bSetConvexOptimizationIsActive)
Definition ParticlePairMidPhase.h:357
ECollisionVisitorResult VisitConstCollisions(const TLambda &Visitor, const ECollisionVisitorFlags VisitFlags=ECollisionVisitorFlags::VisitDefault) const
Call a lambda on each active collision constraint.
Definition CollisionConstraintAllocator.h:715
EParticlePairMidPhaseType GetMidPhaseType() const
Definition ParticlePairMidPhase.h:202
virtual void BuildDetectorsImpl()=0
Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' sh...
CHAOS_API void DetachParticle(FGeometryParticleHandle *Particle)
Destroy all collisions and prevent this midphasae from being used any more. Called when one of its pa...
Definition ParticlePairMidPhase.cpp:863
int32 NumActiveConstraints
Definition ParticlePairMidPhase.h:446
int32 ParticleCollisionsIndex0
Definition ParticlePairMidPhase.h:449
const Private::FCollisionParticlePairKey & GetKey() const
Definition ParticlePairMidPhase.h:223
CHAOS_API bool IsInConstraintGraph() const
Definition ParticlePairMidPhase.cpp:1106
FGeometryParticleHandle * Particle1
Definition ParticlePairMidPhase.h:439
EParticlePairMidPhaseType MidPhaseType
Definition ParticlePairMidPhase.h:435
CHAOS_API void Reset()
Delete all cached data and collisions. Should be called when a particle changes its shapes.
Definition ParticlePairMidPhase.cpp:877
void CachePrefetch()
Definition ParticlePairMidPhase.h:228
FGeometryParticleHandle * GetParticle1() const
Definition ParticlePairMidPhase.h:221
void SetCCDIsActive(bool bCCDIsActive)
Override the CCD condition for this mid-phase. Used by the MidPhase modifier and gets reset every fra...
Definition ParticlePairMidPhase.h:350
CHAOS_API bool ShouldEnableCCDSweep(const FReal Dt)
Decide whether we should have CCD enabled on this constraint.
Definition ParticlePairMidPhase.cpp:943
CHAOS_API void InitThresholds()
Definition ParticlePairMidPhase.cpp:966
CHAOS_API void SetIsSleeping(const bool bInIsSleeping, const int32 CurrentEpoch)
Update the sleeping state If this switches the state to Awake, it will reactivate any collisions betw...
Definition ParticlePairMidPhase.cpp:1071
ECollisionVisitorResult VisitCollisions(const TLambda &Visitor, const ECollisionVisitorFlags VisitFlags=ECollisionVisitorFlags::VisitDefault)
Call a lambda on each active collision constraint This includes sleeping constraints,...
Definition CollisionConstraintAllocator.h:659
Private::FCollisionParticlePairKey ParticlePairKey
Definition ParticlePairMidPhase.h:443
int32 ParticleCollisionsIndex1
Definition ParticlePairMidPhase.h:450
virtual void SetConvexOptimizationIsActive(bool bSetConvexOptimizationIsActive, TFunctionRef< void(FPBDCollisionConstraint *)> OnDestroyingCollision)
Override whether convex optimization if used this mid-phase. Used by the MidPhase modifier and gets r...
Definition ParticlePairMidPhase.h:368
Definition ShapeInstance.h:36
Definition ShapeInstance.h:554
Definition ParticlePairMidPhase.h:463
virtual CHAOS_API void WakeCollisionsImpl(const int32 CurrentEpoch) override final
Definition ParticlePairMidPhase.cpp:1222
CHAOS_API FShapePairParticlePairMidPhase()
Definition ParticlePairMidPhase.cpp:1129
virtual CHAOS_API void InjectCollisionImpl(const FPBDCollisionConstraint &Constraint, const FCollisionContext &Context) override final
Definition ParticlePairMidPhase.cpp:1230
virtual CHAOS_API void ResetImpl() override final
Definition ParticlePairMidPhase.cpp:1135
virtual CHAOS_API void BuildDetectorsImpl() override final
Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' sh...
Definition ParticlePairMidPhase.cpp:1140
virtual CHAOS_API int32 GenerateCollisionsImpl(const FRealSingle Dt, const FRealSingle CullDistance, const FVec3f &RelativeMovement, const FCollisionContext &Context) override final
Definition ParticlePairMidPhase.cpp:1194
Handles collision detection for a pair of simple shapes (i.e., not compound shapes)
Definition ParticlePairMidPhase.h:50
FSingleShapePairCollisionDetector(const FSingleShapePairCollisionDetector &R)=delete
int32 GenerateCollisionCCD(const bool bEnableCCDSweep, const FReal CullDistance, const FReal Dt, const FCollisionContext &Context)
Generate a SweptConstraint as long as AABBs overlap.
Definition ParticlePairMidPhase.h:102
CHAOS_API void WakeCollision(const int32 SleepEpoch, const int32 CurrentEpoch)
Reactivate the constraint @parame SleepEpoch The tick on which the particle went to sleep....
Definition ParticlePairMidPhase.cpp:718
CHAOS_API void SetCollision(const FPBDCollisionConstraint &Constraint, const FCollisionContext &Context)
Set the collision from the parameter and activate it This is used by the Resim restore functionality.
Definition ParticlePairMidPhase.cpp:746
const FPerShapeData * GetShape0() const
Definition ParticlePairMidPhase.h:73
FGeometryParticleHandle * GetParticle1()
Definition ParticlePairMidPhase.h:72
const FGeometryParticleHandle * GetParticle0() const
Definition ParticlePairMidPhase.h:69
int32 GenerateCollision(const FReal CullDistance, const FReal Dt, const FCollisionContext &Context)
Perform a bounds check and run the narrow phase if necessary.
Definition ParticlePairMidPhase.h:89
CHAOS_API ~FSingleShapePairCollisionDetector()
Definition ParticlePairMidPhase.cpp:355
FGeometryParticleHandle * GetParticle0()
Definition ParticlePairMidPhase.h:70
const FPerShapeData * GetShape1() const
Definition ParticlePairMidPhase.h:74
FSingleShapePairCollisionDetector & operator=(const FSingleShapePairCollisionDetector &R)=delete
const FGeometryParticleHandle * GetParticle1() const
Definition ParticlePairMidPhase.h:71
bool IsUsedSince(const int32 Epoch) const
Have we run collision detection since this Epoch (inclusive)
Definition ParticlePairMidPhase.h:79
const FPBDCollisionConstraint * GetConstraint() const
Definition ParticlePairMidPhase.h:67
FPBDCollisionConstraint * GetConstraint()
Definition ParticlePairMidPhase.h:68
Definition ParticlePairMidPhase.h:596
Definition CollisionKeys.h:59
Definition CollisionKeys.h:261
Definition ParticleHandle.h:436
Definition Vector.h:407
Definition Constraints.Build.cs:6
Definition ChaosVDDataWrapperUtils.h:77
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition ContainerAllocationPolicies.h:894
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition SkeletalMeshComponent.h:307
TVector< FRealSingle, 3 > FVec3f
Definition Core.h:27
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
EContactShapesType
Definition CollisionResolutionTypes.h:55
EParticlePairMidPhaseType
Definition ParticlePairMidPhase.h:30
@ Generic
Definition ParticlePairMidPhase.h:33
@ ShapePair
Definition ParticlePairMidPhase.h:38
@ SphereApproximation
Definition ParticlePairMidPhase.h:41
ECollisionVisitorResult
Return value in collision visitors to indicate whether we should continue visiting for stop.
Definition CollisionVisitor.h:14
ECollisionVisitorFlags
Definition CollisionVisitor.h:23
Definition OverriddenPropertySet.cpp:45
static FORCEINLINE void PrefetchBlock(const void *Ptr)
Definition GenericPlatformMisc.h:1467
Definition ParticlePairMidPhase.h:417
uint16 bIsCCDActive
Definition ParticlePairMidPhase.h:423
uint16 bIsMACD
Definition ParticlePairMidPhase.h:425
uint16 Bits
Definition ParticlePairMidPhase.h:431
uint16 bIsModified
Definition ParticlePairMidPhase.h:429
FFlags()
Definition ParticlePairMidPhase.h:418
uint16 bIsConvexOptimizationActive
Definition ParticlePairMidPhase.h:426
uint16 bIsCCD
Definition ParticlePairMidPhase.h:422
uint16 bIsConvexOptimizationUsed
Definition ParticlePairMidPhase.h:427
uint16 bUseSweep
Definition ParticlePairMidPhase.h:424
uint16 bIsSleeping
Definition ParticlePairMidPhase.h:428
uint16 bIsActive
Definition ParticlePairMidPhase.h:421
Definition PBDCollisionConstraint.h:138