23 class FCollisionConstraintAllocator;
24 class FCollisionContextAllocator;
26 class FConstGenericParticleHandle;
27 class FImplicitObject;
28 class FParticlePairMidPhase;
29 class FPBDCollisionConstraint;
30 class FPBDCollisionConstraints;
33 class FSingleShapePairCollisionDetector;
35 class FSolverBodyContainer;
58 , RestitutionThreshold(0)
64 , BaseFrictionImpulse(0)
69 , DynamicFriction(
Other.DynamicFriction)
70 , StaticFriction(
Other.StaticFriction)
71 , Restitution(
Other.Restitution)
72 , RestitutionThreshold(
Other.RestitutionThreshold)
73 , InvMassScale0(
Other.InvMassScale0)
74 , InvMassScale1(
Other.InvMassScale1)
75 , InvInertiaScale0(
Other.InvInertiaScale0)
76 , InvInertiaScale1(
Other.InvInertiaScale1)
77 , SoftSeparation(
Other.SoftSeparation)
78 , BaseFrictionImpulse(
Other.BaseFrictionImpulse)
84 DynamicFriction =
Other.DynamicFriction;
85 StaticFriction =
Other.StaticFriction;
86 Restitution =
Other.Restitution;
87 RestitutionThreshold =
Other.RestitutionThreshold;
88 InvMassScale0 =
Other.InvMassScale0;
89 InvMassScale1 =
Other.InvMassScale1;
90 InvInertiaScale0 =
Other.InvInertiaScale0;
91 InvInertiaScale1 =
Other.InvInertiaScale1;
92 SoftSeparation =
Other.SoftSeparation;
93 BaseFrictionImpulse =
Other.BaseFrictionImpulse;
297 Flags.bCCDEnabled = bCCDEnabled;
298 Flags.bCCDSweepEnabled = bCCDEnabled;
301 if (bCCDEnabled && (CCDEnablePenetration ==
FReal(0)))
326 Flags.bCCDSweepEnabled = bCCDSweepEnabled;
334 return CCDEnablePenetration;
342 return CCDTargetPenetration;
393 Flags.bDisabled =
true;
396 Flags.bIsCurrent =
false;
445 Flags.bMaterialSet =
false;
452 if (!
Flags.bMaterialSet)
455 Flags.bMaterialSet =
true;
461 UE_DEPRECATED(5.5,
"Use specific material property getters instead")
528 if (
Flags.bModifierApplied)
537 Flags.bModifierApplied =
false;
578 if (!ManifoldPoints[ManifoldPointIndex].
Flags.bDisabled)
601 if (ContactPoint.
IsSet())
604 if (ManifoldPoints[ManifoldPointIndex].ContactPoint.
Phi <
GetPhi())
606 ClosestManifoldPointIndex = ManifoldPointIndex;
628 if ((MaxManifoldPoints >= 0) && (
NumContacts > MaxManifoldPoints))
639 if (ContactPoint.
Phi < CullDistance)
644 ClosestManifoldPointIndex = ManifoldPointIndex;
654 if (ManifoldPoints[0].ContactPoint.FaceIndex !=
Material.FaceIndex)
656 Material.FaceIndex = ManifoldPoints[0].ContactPoint.FaceIndex;
657 Flags.bMaterialSet =
false;
729 SavedManifoldPoints.Reset();
734 return SavedManifoldPoints.Num();
769 SavedManifoldPoints.Reset(ManifoldPoints.Num());
770 ManifoldPointResults.SetNum(ManifoldPoints.Num());
778 const int32 ManifoldPointIndex,
788 bool bInsideStaticFrictionCone =
false;
792 SavedManifoldPoints.Emplace(
797 bInsideStaticFrictionCone =
true;
808 SavedManifoldPoints.Emplace(
819 SavedManifoldPoints.Emplace(
833 MinInitialPhi = FMath::Min(MinInitialPhi,
ManifoldPoint.InitialPhi);
849 return CollisionSortKey;
859 return BoundsTestFlags;
917 int32 ManifoldPointIndex = ManifoldPoints.AddUninitialized();
919 return ManifoldPointIndex;
941 FFlags() : Bits(0) {}
947 uint16 bUseIncrementalManifold : 1;
948 uint16 bCanRestoreManifold : 1;
949 uint16 bWasManifoldRestored : 1;
954 uint16 bCCDSweepEnabled: 1;
955 uint16 bModifierApplied : 1;
957 uint16 bInitialContact : 1;
958 uint16 bIsOneWayInteraction : 1;
959 uint16 bUsePerContactInitialPhi : 1;
963 static_assert(
sizeof(FFlags) == 2,
"Unexpected size for FPBDCollisionConstraint::FFLags");
973 const FImplicitObject* Implicit[2];
974 const FShapeInstance* Shape[2];
975 const FBVHParticles* Simplicial[2];
995 int32 ClosestManifoldPointIndex;
1001 int32 ExpectedNumManifoldPoints;
1005 FVec3f LastShapeWorldPositionDelta;
1018 template<
typename T>
1049 friend class ::FChaosVDDataWrapperUtils;
1053 UE_DEPRECATED(4.27,
"FCollisionConstraintBase has been removed and folded into FPBDCollisionConstraint. Use FPBDCollisionConstraint")
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
Definition BVHParticles.h:24
Definition ParticlePairMidPhase.h:507
Definition ImplicitObject.h:111
Definition ContactPoint.h:183
A single point in a contact manifold. Each Collision Constraint will have up to 4 of these.
Definition ContactPoint.h:97
Information used by the constraint allocator This includes any information used for optimizations lik...
Definition PBDCollisionConstraint.h:164
int32 ConstraintIndex
Definition PBDCollisionConstraint.h:198
FPBDCollisionConstraintContainerCookie()
Definition PBDCollisionConstraint.h:166
FParticlePairMidPhase * MidPhase
Definition PBDCollisionConstraint.h:189
int32 LastUsedEpoch
Definition PBDCollisionConstraint.h:195
int32 CreationEpoch
Definition PBDCollisionConstraint.h:192
int32 CCDConstraintIndex
Definition PBDCollisionConstraint.h:206
uint32 bIsMultiShapePair
Definition PBDCollisionConstraint.h:203
void ClearContainerData()
Used to clear the container data when copying constraints out of the container (see resim cache) The ...
Definition PBDCollisionConstraint.h:181
A handle to a contact constraint.
Definition PBDCollisionConstraintHandle.h:49
virtual bool IsEnabled() const override final
Definition PBDCollisionConstraints.h:426
Definition PBDCollisionConstraint.h:48
FRealSingle DynamicFriction
Definition PBDCollisionConstraint.h:104
FRealSingle InvMassScale1
Definition PBDCollisionConstraint.h:109
PRAGMA_DISABLE_DEPRECATION_WARNINGS FPBDCollisionConstraintMaterial()
Definition PBDCollisionConstraint.h:53
FRealSingle RestitutionThreshold
Definition PBDCollisionConstraint.h:107
PRAGMA_ENABLE_DEPRECATION_WARNINGS int32 FaceIndex
Definition PBDCollisionConstraint.h:100
FRealSingle InvMassScale0
Definition PBDCollisionConstraint.h:108
FPBDCollisionConstraintMaterial & operator=(const FPBDCollisionConstraintMaterial &Other)
Definition PBDCollisionConstraint.h:81
FRealSingle Restitution
Definition PBDCollisionConstraint.h:106
FPBDCollisionConstraintMaterial(const FPBDCollisionConstraintMaterial &Other)
Definition PBDCollisionConstraint.h:67
FRealSingle StaticFriction
Definition PBDCollisionConstraint.h:105
FRealSingle InvInertiaScale1
Definition PBDCollisionConstraint.h:111
FRealSingle InvInertiaScale0
Definition PBDCollisionConstraint.h:110
A contact constraint.
Definition PBDCollisionConstraint.h:225
const FRigidTransform3 & GetShapeRelativeTransform1() const
Definition PBDCollisionConstraint.h:671
int32 AddManifoldPoint(const FContactPointf &ContactPoint)
Definition PBDCollisionConstraint.h:915
const FRigidTransform3 & GetShapeWorldTransform1() const
Definition PBDCollisionConstraint.h:675
FReal GetCullDistance() const
Definition PBDCollisionConstraint.h:503
void ResetModifications()
Definition PBDCollisionConstraint.h:526
virtual bool SupportsPartialIslandSleeping() const override final
Definition PBDCollisionConstraint.h:427
bool GetCCDSweepEnabled() const
Definition PBDCollisionConstraint.h:318
const FReal GetCollisionMargin1() const
Definition PBDCollisionConstraint.h:366
const FBVHParticles * GetCollisionParticles1() const
Definition PBDCollisionConstraint.h:362
FGeometryParticleHandle * GetParticle0() const
Definition PBDCollisionConstraint.h:349
void InitManifoldPoint(const int32 ManifoldPointIndex, const FContactPointf &ContactPoint)
Definition PBDCollisionConstraint.h:902
void SetShapeWorldTransforms(const FRigidTransform3 &InShapeWorldTransform0, const FRigidTransform3 &InShapeWorldTransform1)
Definition PBDCollisionConstraint.h:678
FReal GetStaticFriction() const
Definition PBDCollisionConstraint.h:486
FGeometryParticleHandle * GetParticle1() const
Definition PBDCollisionConstraint.h:350
FReal GetInvMassScale0() const
Definition PBDCollisionConstraint.h:465
CHAOS_API void CorrectManifoldPoints()
Definition PBDCollisionConstraint.cpp:682
FORCEINLINE void SetSolverResults(const int32 ManifoldPointIndex, const FVec3f &NetPushOut, const FVec3f &NetImpulse, const FRealSingle StaticFrictionRatio, const FRealSingle Dt)
Store the data from the solver that is retained between ticks for the specified manifold point or use...
Definition PBDCollisionConstraint.h:777
virtual CHAOS_API void SetIsSleeping(const bool bInIsSleeping) override final
Definition PBDCollisionConstraint.cpp:538
CHAOS_API void UpdateManifoldContacts()
Definition PBDCollisionConstraint.cpp:712
CHAOS_API void UpdateMassScales()
Definition PBDCollisionConstraint.cpp:495
FRealSingle GetCullDistancef() const
Definition PBDCollisionConstraint.h:504
FReal GetRestitution() const
Definition PBDCollisionConstraint.h:480
void ResetCCDTimeOfImpact()
Definition PBDCollisionConstraint.h:755
const FPBDCollisionConstraintMaterial & GetCollisionMaterial() const
Definition PBDCollisionConstraint.h:462
void SetInvInertiaScale1(const FReal InInvInertiaScale)
Definition PBDCollisionConstraint.h:473
const FManifoldPoint & GetManifoldPoint(const int32 PointIndex) const
Definition PBDCollisionConstraint.h:552
Private::FImplicitBoundsTestFlags GetBoundsTestFlags() const
Definition PBDCollisionConstraint.h:857
FGJKSimplexData & GetGJKWarmStartData()
Definition PBDCollisionConstraint.h:702
FReal GetDynamicFriction() const
Definition PBDCollisionConstraint.h:489
void UpdateMaterialProperties()
Definition PBDCollisionConstraint.h:450
CHAOS_API void InitCCDThreshold()
Definition PBDCollisionConstraint.cpp:451
bool IsInitialContact() const
Definition PBDCollisionConstraint.h:422
bool GetUseIncrementalCollisionDetection() const
Definition PBDCollisionConstraint.h:518
void ResetSavedManifoldPoints()
Clear the saved manifold points. This effectively resets friction anchors.
Definition PBDCollisionConstraint.h:727
FReal GetPhi() const
Definition PBDCollisionConstraint.h:388
const FManifoldPoint * GetClosestManifoldPoint() const
Definition PBDCollisionConstraint.h:553
FRealSingle GetInitialOverlapDepenetrationVelocity() const
Definition PBDCollisionConstraint.h:521
const bool HasQuadraticShape() const
Definition PBDCollisionConstraint.h:370
bool GetIsProbe() const
Definition PBDCollisionConstraint.h:418
const FManifoldPointResult & GetManifoldPointResult(const int32 PointIndex) const
Definition PBDCollisionConstraint.h:556
static constexpr FRealSingle MaxTOI
Definition PBDCollisionConstraint.h:241
CHAOS_API FString ToString() const
Definition PBDCollisionConstraint.cpp:103
const FImplicitObject * GetImplicit(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:355
static CHAOS_API FPBDCollisionConstraint MakeCopy(const FPBDCollisionConstraint &Source)
Return a constraint copied from the Source constraint, for use in the Resim Cache or other system.
Definition PBDCollisionConstraint.cpp:172
CHAOS_API bool TryAddManifoldContact(const FContactPoint &ContactPoint)
Definition PBDCollisionConstraint.cpp:925
void SetStaticFriction(const FReal InStaticFriction)
Definition PBDCollisionConstraint.h:485
void SetStiffness(FReal InStiffness)
Definition PBDCollisionConstraint.h:476
EContactShapesType GetShapesType() const
Definition PBDCollisionConstraint.h:499
Private::FCollisionParticlePairKey GetParticlePairKey() const
Definition PBDCollisionConstraint.h:839
CHAOS_API FVec3 CalculateWorldContactNormal() const
Definition PBDCollisionConstraint.cpp:575
const FImplicitObject * GetImplicit1() const
Definition PBDCollisionConstraint.h:354
CHAOS_API int32 FindManifoldPoint(const FContactPoint &ContactPoint) const
Definition PBDCollisionConstraint.cpp:650
const FReal GetCollisionMargin0() const
Definition PBDCollisionConstraint.h:365
void SetDisabled(bool bInDisabled)
Definition PBDCollisionConstraint.h:410
FManifoldPoint & GetManifoldPoint(const int32 PointIndex)
Definition PBDCollisionConstraint.h:551
FORCEINLINE void ResetSolverResults()
Definition PBDCollisionConstraint.h:765
int32 NumManifoldPoints() const
Definition PBDCollisionConstraint.h:550
Private::FCollisionSortKey GetCollisionSortKey() const
Definition PBDCollisionConstraint.h:847
int32 FindSimpleSavedManifoldPoint(const int32 ManifoldPointIndex) const
Definition PBDCollisionConstraint.cpp:1156
bool IsManifoldPointActive(const int32 PointIndex) const
Definition PBDCollisionConstraint.h:554
const FRigidTransform3 & GetShapeWorldTransform0() const
Definition PBDCollisionConstraint.h:674
virtual bool SupportsSleeping() const override final
Definition PBDCollisionConstraint.h:426
const FReal GetCollisionRadius1() const
Definition PBDCollisionConstraint.h:372
void SetSoftSeparation(const FReal InSoftSeparation)
Definition PBDCollisionConstraint.h:496
bool GetUseManifold() const
Definition PBDCollisionConstraint.h:511
void Activate(const FReal Dt)
Definition PBDCollisionConstraint.h:380
const FSolverBody * GetSolverBody1() const
Definition PBDCollisionConstraint.h:705
void SetRestitution(const FReal InRestitution)
Definition PBDCollisionConstraint.h:479
bool GetUseIncrementalManifold() const
Definition PBDCollisionConstraint.h:514
void ClearMaterialProperties()
Definition PBDCollisionConstraint.h:443
void SetCCDSweepEnabled(const bool bCCDSweepEnabled)
Definition PBDCollisionConstraint.h:324
const FSolverBody * GetSolverBody0() const
Definition PBDCollisionConstraint.h:704
void SetSolverBodies(const FSolverBody *InSolverBody0, const FSolverBody *InSolverBody1)
Definition PBDCollisionConstraint.h:707
FPBDCollisionConstraintContainerCookie & GetContainerCookie()
Definition PBDCollisionConstraint.h:893
const FPBDCollisionConstraintHandle * GetConstraintHandle() const
Definition PBDCollisionConstraint.h:863
FReal GetInvInertiaScale1() const
Definition PBDCollisionConstraint.h:474
CHAOS_API bool TryInsertManifoldContact(const FContactPoint &ContactPoint)
Definition PBDCollisionConstraint.cpp:992
void SetDynamicFriction(const FReal InDynamicFriction)
Definition PBDCollisionConstraint.h:488
FReal GetRestitutionThreshold() const
Definition PBDCollisionConstraint.h:483
CHAOS_API void UpdateParticleTransform(FGeometryParticleHandle *InParticle)
Definition PBDCollisionConstraint.cpp:557
bool GetCCDEnabled() const
Definition PBDCollisionConstraint.h:290
CHAOS_API void UpdateMaterialPropertiesImpl()
Definition PBDCollisionConstraint.cpp:488
bool GetCanRestoreManifold() const
Definition PBDCollisionConstraint.h:695
CHAOS_API FVec3 CalculateWorldContactLocation() const
Definition PBDCollisionConstraint.cpp:564
void AddOneshotManifoldContact(const FContactPointf &ContactPoint)
Definition PBDCollisionConstraint.h:599
FReal GetMinFrictionPushOut() const
Definition PBDCollisionConstraint.h:492
const FShapeInstance * GetShape0() const
Definition PBDCollisionConstraint.h:357
FGeometryParticleHandle * GetParticle(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:351
void SetIsInitialContact(const bool bInIsInitialContact)
Definition PBDCollisionConstraint.h:421
FReal GetCCDEnablePenetration() const
If CCD is enabled, contacts deeper than this will be handled by CCD.
Definition PBDCollisionConstraint.h:332
bool IsSoftContact() const
Definition PBDCollisionConstraint.h:494
CHAOS_API bool AreMatchingContactPoints(const FContactPoint &A, const FContactPoint &B, FReal &OutScore) const
Definition PBDCollisionConstraint.cpp:595
void SetRelativeMovement(const FVec3f &InDelta)
Definition PBDCollisionConstraint.h:508
virtual CHAOS_API bool IsSleeping() const override final
Definition PBDCollisionConstraint.cpp:529
FReal GetCCDTimeOfImpact() const
Time of impact from CCD sweep test if CCD is activate.Otherwise undefined.
Definition PBDCollisionConstraint.h:745
void SetInvInertiaScale0(const FReal InInvInertiaScale)
Definition PBDCollisionConstraint.h:470
bool WasManifoldRestored() const
Whether this constraint was fully restored from a previous tick, and the manifold should be reused as...
Definition PBDCollisionConstraint.h:716
FVec3f AccumulatedImpulse
Definition PBDCollisionConstraint.h:978
CHAOS_API void Setup(const ECollisionCCDType InCCDType, const EContactShapesType InShapesType, const FRigidTransform3 &InImplicitTransform0, const FRigidTransform3 &InImplicitTransform1, const FReal InCullDistance, const bool bInUseManifold)
Definition PBDCollisionConstraint.cpp:299
FRealSingle GetSoftSeparation() const
Definition PBDCollisionConstraint.h:497
const bool IsQuadratic1() const
Definition PBDCollisionConstraint.h:369
const FBVHParticles * GetCollisionParticles(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:363
friend CHAOS_API bool ContactConstraintSortPredicate(const FPBDCollisionConstraint &L, const FPBDCollisionConstraint &R)
Definition PBDCollisionConstraint.cpp:108
void SetCCDTimeOfImpact(const FReal TOI)
Set the CCD TOI from the collision detection sweep.
Definition PBDCollisionConstraint.h:750
void SetOneShotManifoldContacts(const TArrayView< const FContactPoint > &ContactPoints)
Replace the current manifold points with the input. The input array should contain no more than MaxMa...
Definition PBDCollisionConstraint.h:617
FReal GetInvMassScale1() const
Definition PBDCollisionConstraint.h:468
void SetMinFrictionPushOut(const FReal InMinFrictionPushOut)
Definition PBDCollisionConstraint.h:491
FPBDCollisionConstraintHandle * GetConstraintHandle()
Definition PBDCollisionConstraint.h:864
static CHAOS_API FPBDCollisionConstraint MakeTriangle(const FImplicitObject *Implicit0)
For use by the tri mesh and heighfield collision detection as a temporary measure.
Definition PBDCollisionConstraint.cpp:164
CHAOS_API bool TryRestoreManifold()
Definition PBDCollisionConstraint.cpp:807
FRealSingle GetMinInitialPhi() const
Definition PBDCollisionConstraint.h:423
FPBDCollisionConstraint()
Definition PBDCollisionConstraint.cpp:205
const FImplicitObject * GetImplicit0() const
Definition PBDCollisionConstraint.h:353
virtual CHAOS_API FVec3f GetNetLinearImpulse() const override final
Definition PBDCollisionConstraint.cpp:547
bool GetIsOneWayInteraction() const
Definition PBDCollisionConstraint.h:415
bool IsCurrent() const
Definition PBDCollisionConstraint.h:407
CHAOS_API void UpdateManifoldPointPhi(const int32 ManifoldPointIndex)
Definition PBDCollisionConstraint.cpp:673
TArrayView< const FManifoldPoint > GetManifoldPoints() const
Definition PBDCollisionConstraint.h:548
void SetLastShapeWorldTransforms(const FRigidTransform3 &InShapeWorldTransform0, const FRigidTransform3 &InShapeWorldTransform1)
Definition PBDCollisionConstraint.h:686
const FShapeInstance * GetShape1() const
Definition PBDCollisionConstraint.h:358
bool GetDisabled() const
Definition PBDCollisionConstraint.h:413
CHAOS_API int32 FindSavedManifoldPoint(const int32 ManifoldPointIndex, int32 *InOutAllowedSavedPointIndices, int32 &InOutNumAllowedSavedPoints) const
Definition PBDCollisionConstraint.cpp:1198
const FSavedManifoldPoint & GetSavedManifoldPoint(const int32 PointIndex) const
Definition PBDCollisionConstraint.h:737
const FRigidTransform3 & GetShapeRelativeTransform0() const
Definition PBDCollisionConstraint.h:670
void SetCollisionSortKey(const Private::FCollisionSortKey &InCollisionSortKey)
Definition PBDCollisionConstraint.h:852
int32 NumSavedManifoldPoints() const
Definition PBDCollisionConstraint.h:732
CHAOS_API void ResetManifold()
Clear the current and previous manifolds.
Definition PBDCollisionConstraint.cpp:791
void SetCCDResults(const FVec3 &InNetImpulse)
Store the results of CCD contact resolution, if active.
Definition PBDCollisionConstraint.h:760
FReal GetCCDTargetPenetration() const
If CCD is enabled and processed the contact, CCD resolution leaves up to this much penetration.
Definition PBDCollisionConstraint.h:340
void DisableManifoldPoint(const int32 DisabledManifoldPointIndex)
Definition PBDCollisionConstraint.h:587
void SetCCDEnabled(const bool bCCDEnabled)
Definition PBDCollisionConstraint.h:295
FReal GetStiffness() const
Definition PBDCollisionConstraint.h:477
CHAOS_API void Activate()
Definition PBDCollisionConstraint.cpp:471
FVec3f GetRelativeMovement() const
Definition PBDCollisionConstraint.h:507
const FShapeInstance * GetShape(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:359
void SetInvMassScale1(const FReal InInvMassScale)
Definition PBDCollisionConstraint.h:467
const bool IsQuadratic0() const
Definition PBDCollisionConstraint.h:368
CHAOS_API void AddIncrementalManifoldContact(const FContactPoint &ContactPoint)
Definition PBDCollisionConstraint.cpp:759
CHAOS_API void InitMarginsAndTolerances(const EImplicitObjectType ImplicitType0, const EImplicitObjectType ImplicitType1, const FRealSingle Margin0, const FRealSingle Margin1)
Definition PBDCollisionConstraint.cpp:369
static CHAOS_API void Make(FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *Simplicial0, const FRigidTransform3 &ImplicitLocalTransform0, FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *Simplicial1, const FRigidTransform3 &ImplicitLocalTransform1, const FReal InCullDistance, const bool bInUseManifold, const EContactShapesType ShapesType, FPBDCollisionConstraint &OutConstraint)
Create a contact constraint Initializes a constraint stored inline in an object. Only intended to be ...
Definition PBDCollisionConstraint.cpp:136
const FPBDCollisionConstraintContainerCookie & GetContainerCookie() const
Definition PBDCollisionConstraint.h:892
void SetRestitutionThreshold(const FReal InRestitutionThreshold)
Definition PBDCollisionConstraint.h:482
void BeginTick()
Definition PBDCollisionConstraint.h:391
void SetIsProbe(bool bInProbe)
Definition PBDCollisionConstraint.h:417
const FBVHParticles * GetCollisionParticles0() const
Definition PBDCollisionConstraint.h:361
CHAOS_API ECollisionConstraintDirection GetConstraintDirection(const FReal Dt) const
Definition PBDCollisionConstraint.cpp:1300
void SetCullDistance(FReal InCullDistance)
Definition PBDCollisionConstraint.h:505
const FRigidTransform3 & GetShapeWorldTransform(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:676
int32 NumEnabledManifoldPoints() const
Definition PBDCollisionConstraint.h:571
void SetModifierApplied()
Definition PBDCollisionConstraint.h:459
const FReal GetCollisionRadius0() const
Definition PBDCollisionConstraint.h:371
CHAOS_API void ResetActiveManifoldContacts()
Definition PBDCollisionConstraint.cpp:797
void SetInvMassScale0(const FReal InInvMassScale)
Definition PBDCollisionConstraint.h:464
TArrayView< FManifoldPoint > GetManifoldPoints()
Definition PBDCollisionConstraint.h:547
CHAOS_API void AssignSavedManifoldPoints()
Definition PBDCollisionConstraint.cpp:1252
void ResetPhi(FReal InPhi)
Definition PBDCollisionConstraint.h:387
bool UsePerContactInitialPhi() const
Definition PBDCollisionConstraint.h:424
virtual CHAOS_API ~FPBDCollisionConstraint()
Definition PBDCollisionConstraint.cpp:291
const FRigidTransform3 & GetShapeRelativeTransform(const int32 ParticleIndex) const
Definition PBDCollisionConstraint.h:672
FReal GetInvInertiaScale0() const
Definition PBDCollisionConstraint.h:471
CHAOS_API void RestoreFrom(const FPBDCollisionConstraint &Source)
Definition PBDCollisionConstraint.cpp:188
bool UpdateAndTryRestoreManifold()
Definition PBDCollisionConstraint.h:868
Definition PBDCollisionConstraints.h:49
Produce collisions for a particle pair A FParticlePairMidPhase object is created for every particle p...
Definition ParticlePairMidPhase.h:192
Definition ShapeInstance.h:36
The friction data for a manifold point This is the information that needs to be stored between ticks ...
Definition ContactPoint.h:170
Definition ShapeInstance.h:554
Definition ParticlePairMidPhase.h:463
Handles collision detection for a pair of simple shapes (i.e., not compound shapes)
Definition ParticlePairMidPhase.h:50
Definition SolverBody.h:99
Definition ParticlePairMidPhase.h:596
An allocator and container of collision constraints that supports reuse of constraints from the previ...
Definition CollisionConstraintAllocator.h:234
Definition CollisionConstraintAllocator.h:28
Definition CollisionKeys.h:59
Definition CollisionKeys.h:261
Definition IslandGroup.h:19
Definition ParticleHandle.h:436
static TVector< FRealSingle, 3 > Lerp(const TVector< FRealSingle, 3 > &V1, const TVector< FRealSingle, 3 > &V2, const FRealSingle F)
Definition Vector.h:444
Definition ChaosVDDataWrapperUtils.h:77
Definition ArrayView.h:139
FImplicitBoundsTestFlags CalculateImplicitBoundsTestFlags(FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, FRealSingle &OutDistanceCheckSize)
Definition CollisionUtil.h:41
Definition SkeletalMeshComponent.h:307
int32 Chaos_Collision_MaxManifoldPoints
Definition PBDCollisionConstraint.cpp:71
TVector< FRealSingle, 3 > FVec3f
Definition Core.h:27
ECollisionCCDType
Whether we should run CCD (swept collision) or not.
Definition PBDCollisionConstraintHandle.h:20
TRigidTransform< FReal, 3 > FRigidTransform3
Definition Core.h:22
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
ECollisionConstraintDirection
The resting directionality of a contact constraint for use in constraint solver ordering.
Definition PBDCollisionConstraintHandle.h:32
bool ContactConstraintSortPredicate(const FPBDCollisionConstraint &L, const FPBDCollisionConstraint &R)
Definition PBDCollisionConstraint.cpp:108
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
EContactShapesType
Definition CollisionResolutionTypes.h:55
TGeometryParticleHandle< FReal, 3 > FGeometryParticleHandle
Definition ParticleHandleFwd.h:24
@ Bits
Definition PacketView.h:34
Definition OverriddenPropertySet.cpp:45
@ false
Definition radaudio_common.h:23
Definition NumericLimits.h:41
TQuat< T > Inverse() const
Definition Quat.h:1264
Definition PBDCollisionConstraint.h:138
uint8 bEnableDistanceCheck
Definition PBDCollisionConstraint.h:145
FImplicitBoundsTestFlags()
Definition PBDCollisionConstraint.h:139
uint8 bEnableOBBCheck1
Definition PBDCollisionConstraint.h:144
uint8 bEnableOBBCheck0
Definition PBDCollisionConstraint.h:143
uint8 bEnableAABBCheck
Definition PBDCollisionConstraint.h:142
uint8 bIsProbe
Definition PBDCollisionConstraint.h:147
uint8 Bits
Definition PBDCollisionConstraint.h:149
uint8 bEnableManifoldUpdate
Definition PBDCollisionConstraint.h:146