description: Add contacts between the convex and a single triangle for later processing.

code: void AddTriangleContacts ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FContactPoint > & InContactPoints, const [FTriangle](API\Runtime\Chaos\Chaos\FTriangle) & Triangle, const int32 TriangleIndex, const int32 VertexIndex0, const int32 VertexIndex1, const int32 VertexIndex2, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance )


module: Chaos

code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FContactPoint > GetContactPoints() const


description: To be called when all contacts have been added. Reduces the set of contacts to a minimum and transforms data into shape space.

code: void ProcessContacts ( const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & MeshToConvexTransform )


description: Deprecated* Use the constructor below which take PhiTolerance etc

code: FContactTriangleCollector ( const bool bInOneSided, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InConvexTransform )


code: FContactTriangleCollector ( const bool bInOneSided, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InPhiTolerance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InDistanceTolerance, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InConvexTransform )


className: FContactTriangleCollector

description: Holds the contacts produced when colliding a convex shape against a non-convex triangular mesh, and provides methods to reduce the total set of contact points down to a minimum manifold.

code: class FContactTriangleCollector


className: FContactVertexID

code: typedef int32 FContactVertexID


description: Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' shapes arrays that pass the collision filter.

code: virtual void BuildDetectorsImpl()


description: Callback from the narrow phase to create a collision constraint for this particle pair. We should never be asked for a collision for a different particle pair, but the implicit objects may be children of the root shape.

code: virtual [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) * FindOrCreateConstraint ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * InImplicit0, const int32 InImplicitId0, const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * InShape0, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * InBVHParticles0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeRelativeTransform0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit1, const int32 InImplicitId1, const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * InShape1, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * InBVHParticles1, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InhapeRelativeTransform1, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [EContactShapesType](API\Runtime\Chaos\Chaos\Chaos__EContactShapesType) ShapePairType, const bool bUseManifold, const bool bEnableSweep, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: virtual int32 GenerateCollisionsImpl ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: virtual void InjectCollisionImpl ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Constraint, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: virtual void WakeCollisionsImpl ( const int32 CurrentEpoch )


description: Reactivate the constraint  SleepEpoch The tick on which the particle went to sleep. Only constraints that were active when the particle went to sleep should be reactivated.

code: void WakeCollisionsImpl ( const int32 SleepEpoch, const int32 CurrentEpoch )


className: FGenericParticlePairMidPhase

description: A midphase for a particle pair where one or both have a large number of collisions shapes, or a non-flat hierarchy of shapes. This is the general-purpose collision path and does not cache as much data as theFShapePairParticlePairMidPhaseand must visit the geometry hierarchy on both shapes every time we detect collisions. It must also rerun the collision filters on overlapping pairs, among other things. It does, howver, take advantage of the BVH held in the root ImplicitObjectUnion if there is one, so it can be much faster the theFShapePairParticlePairMidPhasewhen the set of potentially colliding pairs is very large.

code: class FGenericParticlePairMidPhase : public [Chaos::FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase)


description: Add an ignore entry for collisions of Particle0->Particle1. Note, this will add an entry for both particles against the other if both particles are dynamic or kinematic.

code: void AddIgnoreCollisions ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle1 )


description: DEPRECATED

code: void AddIgnoreCollisionsFor ( [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body0, [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body1 )


description: PHYSICS THREAD API

code: bool ContainsHandle ( [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body0 ) const


className: FDeactivationSet

code: typedef [TSet](API\Runtime\Core\Containers\TSet)< [FUniqueIdx](API\Runtime\Chaos\Chaos\FUniqueIdx) > FDeactivationSet


className: FStorageData

code: struct FStorageData

PendingActivations

type: FPendingMap

PendingDeactivations

type: FDeactivationSe...


description: GAME THREAD API

code: [FPendingMap](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FPendingMap) & GetPendingActivationsForGameThread ( int32 ExternalTimestamp )


code: [FDeactivationSet](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FDeactivationSet) & GetPendingDeactivationsForGameThread ( int32 ExternalTimestamp )


code: bool IgnoresCollision ( [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body0, [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body1 ) const


description: Return true if we should ignore collisions between the two particles

code: bool IgnoresCollision ( const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle0, const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle1 ) const


code: int32 NumIgnoredCollision ( [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body0 ) const


code: void PopStorageData_Internal ( int32 ExternalTimestamp )


code: void PushProducerStorageData_External ( int32 ExternalTimestamp )


description: INTEROP API

code: void ProcessPendingQueues ( [FPBDRigidsSolver](API\Runtime\Chaos\FPBDRigidsSolver) & Solver )


description: Deprecated* The physics thread uses the ParticleHandle API. See RemoveIgnoreCollisions

code: int32 RemoveIgnoreCollisionsFor ( [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body0, [FHandleID](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager\FHandleID) Body1 )


description: Remove an ignore entry for collisions of Particle0->Particle1 (in both directions if applicable)

code: void RemoveIgnoreCollisions ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle1 )


className: FIgnoreCollisionManager

code: class FIgnoreCollisionManager


className: FFlags

code: union FFlags

bDisabled

type: uint8:  1


code: FManifoldPoint ( const [FContactPointf](API\Runtime\Chaos\Chaos\FContactPointf) & InContactPoint )


className: FManifoldPoint

description: A single point in a contact manifold. Each Collision Constraint will have up to 4 of these.

code: class FManifoldPoint

ContactPoint

type: FContactPointf

Flags

type: FFlags

TargetPhi

type: FRealSingle


className: FManifoldPointResult

code: class FManifoldPointResult


className: FMaskFilter

code: typedef uint8 FMaskFilter


description: Add a mid phase to the list We are passing the particle and midphase here rather than just the key because we store a cookie on the midphase that we want to retrieve, and it has one cookie per particle. This could probably be cleaned up a bit...

code: void AddMidPhase ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle, [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * InMidPhase )


className: FContainerType

description: In a mostly stationary scene the choice of container doesn't matter much. In a highly dynamic scene it matters a lot. This was tested withTMap,TSortedMap, andTArray.TArraywas better in all cases. We store the list of overlapping particle pairs for every particle. This list can get quite large for world objects. We need to make sure that Add / Remove are not O(N). We also search this list to find an existing MidPhase for a specific particle pair. However we always search the particle with the fewest overlaps, which will be a dynamic particle that should not have too many contacts.

code: typedef [TArray](API\Runtime\Core\Containers\TArray)< TPair< uint64, [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * >> FContainerType


description: Find the mid phase with the matching key.

code: [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * FindMidPhase ( const uint64 InKey )


description: Get a midphase by its index.

code: [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * GetMidPhase ( const int32 InIndex )


description: Remove a mid phase.

code: void RemoveMidPhase ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle, [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * InMidPhase )


description: Clear the list of midphases. Only for use in shutdown.

code: void Reset()


description: Do not delete constraint from the lambda. You may disable them though.

code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitCollisions ( const TLambda & Visitor )


code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitConstCollisions ( const TLambda & Visitor ) const


description: Do not call RemoveMidPhase from the visitor

code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitConstMidPhases ( const TLambda & Lambda ) const


code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitMidPhases ( const TLambda & Lambda )


className: FParticleCollisions

description: Knows about all the collisions detectors associated with a particular particle. Used when particles are destroyed to remove perisstent collisions from the system, or when Islands are woken to restore the collisions.

code: class FParticleCollisions


code: FParticleEdgeCollisionPruner ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle )


className: FParticleEdgeCollisionPruner

description: Utility to remove edge contacts on a particle if those edge contacts are "hidden" by a face contact.

code: class FParticleEdgeCollisionPruner


description: Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' shapes arrays that pass the collision filter.

code: void BuildDetectorsImpl()


description: Prefetch the memory in this class for later use.

code: void CachePrefetch()


description: 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)

code: void DetachParticle ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * Particle )


code: static [EParticlePairMidPhaseType](API\Runtime\Chaos\Chaos\Collision\Chaos__EParticlePairMidPhaseType) CalculateMidPhaseType ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1 )


code: union FFlags

bIsActive

type: uint16:  1


code: virtual [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) * FindOrCreateConstraint ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * InImplicit0, const int32 InImplicitId0, const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * InShape0, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * InBVHParticles0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeRelativeTransform0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit1, const int32 InImplicitId1, const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * InShape1, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * InBVHParticles1, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InhapeRelativeTransform1, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [EContactShapesType](API\Runtime\Chaos\Chaos\Chaos__EContactShapesType) ShapePairType, const bool bUseManifold, const bool bEnableSweep, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


description: Create collision constraints for all colliding shape pairs.

code: void GenerateCollisions ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: int32 GenerateCollisionsImpl ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: const [FCollisionParticlePairKey](API\Runtime\Chaos\Chaos\Collision\FCollisionParticlePairKey) & GetKey() const


description: Cookie for use byFParticleCollisions.

code: int32 GetParticleCollisionsIndex ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle ) const


description: 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.

code: void Init ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1, const [FCollisionParticlePairKey](API\Runtime\Chaos\Chaos\Collision\FCollisionParticlePairKey) & InKey, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


description: 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.

code: void InjectCollision ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Constraint, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: void InjectCollisionImpl ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Constraint, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


description: True if CCD is supported by either particle

code: bool IsCCD() const


description: True if CCD is active for this midphase on this frame.This can be changed by modifiers and resets to bIsCCD each frame.

code: bool IsCCDActive() const


description: Whether the particle pair is sleeping and therefore contacts should not be culled (they will be reused on wake)

code: bool IsSleeping() const


description: Have we run collision detection since this Epoch (inclusive)

code: bool IsUsedSince ( const int32 Epoch ) const


code: static [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) * Make ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1 )


code: [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) & operator= ( const [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) & )


code: [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) & operator= ( [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) && )


description: Delete all cached data and collisions. Should be called when a particle changes its shapes.

code: void Reset()


description: Override the CCD condition for this mid-phase. Used by the MidPhase modifier and gets reset every frame.

code: void SetCCDIsActive ( bool bCCDIsActive )


description: Bydefault midphases are active. If IsActive is set to false, this midphase will not generate a narrow phase.

code: void SetIsActive ( bool bIsActive )


description: 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.

code: void SetIsSleeping ( const bool bInIsSleeping, const int32 CurrentEpoch )


description: Cookie for use byFParticleCollisions.

code: void SetParticleCollisionsIndex ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle, const int32 InIndex )


description:
Decide whether we should have CCD enabled on this constraint.
true if CCD is enabled this tick, false otherwise This may return false, even for collisions on CCD-enabled bodies when the bodies are moving slowly

code: bool ShouldEnableCCD ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


description: Below here is for code that is moved to avoid circular header dependencies See ParticlePairMidPhase.h and ParticleCollisions.h

code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitCollisions ( const TLambda & Visitor, const bool bOnlyActive )


description: Call a lambda on each active collision constraint.

code: template<typename TLambda> [ECollisionVisitorResult](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionVisitorResult) VisitConstCollisions ( const TLambda & Visitor, const bool bOnlyActive ) const


code: void WakeCollisionsImpl ( const int32 CurrentEpoch )


code: FParticlePairMidPhase ( [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) && )


code: FParticlePairMidPhase ( const [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) & )


code: FParticlePairMidPhase ( const [EParticlePairMidPhaseType](API\Runtime\Chaos\Chaos\Collision\Chaos__EParticlePairMidPhaseType) InMidPhaseType )


className: FParticlePairMidPhase

description: FGenericParticlePairMidPhase

code: class FParticlePairMidPhase

CullDistanceScale

description: A number based on the size of the dynamic objects used to scale cull distance.

Key

type: FCollisionParti...

MidPhaseType

type: EParticlePairMi...

description: VTable Ptr // 8 bytes.

type: FGeometryPartic...

description: Indices into the arrays of collisions on the particles. This is a cookie for use byFParticleCollisions.


code: void Prune ( const [FVec3](API\Runtime\ChaosCore\Chaos\FVec3) & UpVector )


className: FParticleSubSurfaceCollisionPruner

description: Utility to attempt to remove sub-surface contacts on a particle when those edge contacts are "hidden" by other contacts This is not 100% effective and may occasionally remove contacts that it shouldn't! Ideally you would just use this pruning policy in specific locations in the world where sub-surface contacts are a problem.


code: FParticleSubSurfaceCollisionPruner ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle )


description: Called each frame when the constraint is active after primary collision detection (but not per incremental collision detection call if enabled)

code: void Activate()


description: Deprecated* Removed parameter

code: void Activate ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: void AddIncrementalManifoldContact ( const FContactPoint & ContactPoint )


code: int32 AddManifoldPoint ( const FContactPoint & ContactPoint )


code: void AddOneshotManifoldContact ( const FContactPoint & ContactPoint )


code: bool AreMatchingContactPoints ( const FContactPoint & A, const FContactPoint & B, [FReal](API\Runtime\ChaosCore\Chaos\FReal) & OutScore ) const


description: Get the world-space normal of the closest manifold point


description: Get the world-space contact location of the closest manifold point


description: Called to force the contact to recollect its material properties (e.g., when materials are modified)

code: void ClearMaterialProperties()


code: void DisableManifoldPoint ( const int32 DisabledManifoldPointIndex )


description: Called after the simulation to reset any state that need to be reset before the next tick

code: void EndTick()


code: int32 FindManifoldPoint ( const FContactPoint & ContactPoint ) const


code: int32 FindSavedManifoldPoint ( const int32 ManifoldPointIndex, [TCArray](API\Runtime\Chaos\Chaos\TCArray)< int32, MaxManifoldPoints > & InOutAllowedSavedPointIndices ) const


description: If CCD is enabled, contacts deeper than this will be handled by CCD.


description: Whether CCD is enabled for this collision. This value depends only on the CCD requirements of the two particles. It does not change from tick to tick.

code: bool GetCCDEnabled() const


description: If CCD is enabled and processed the contact, CCD resolution leaves up to this much penetration.


description: For CCD constraints, do we need to run the initial sweep/rewind step. This may change from tick to tick as an object's velocity changes.

code: bool GetCCDSweepEnabled() const


description: Time of impact from CCD sweep test if CCD is activate.Otherwise undefined.


code: const [FReal](API\Runtime\ChaosCore\Chaos\FReal) GetCollisionMargin0() const


code: const [FReal](API\Runtime\ChaosCore\Chaos\FReal) GetCollisionMargin1() const


code: const [FManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FManifoldPoint) * GetClosestManifoldPoint() const


code: const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * GetCollisionParticles ( const int32 ParticleIndex ) const


code: const [FPBDCollisionConstraintMaterial](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraintMaterial) & GetCollisionMaterial() const


code: const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * GetCollisionParticles1() const


code: const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * GetCollisionParticles0() const


code: const [FReal](API\Runtime\ChaosCore\Chaos\FReal) GetCollisionRadius0() const


code: const [FReal](API\Runtime\ChaosCore\Chaos\FReal) GetCollisionRadius1() const


description: Determine the constraint direction based on Normal and Phi. This function assumes that the constraint is update-to-date.

code: [ECollisionConstraintDirection](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionConstraintDirec-) GetConstraintDirection ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt ) const


code: const [FPBDCollisionConstraintHandle](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraintHandle) * GetConstraintHandle() const


description: Access to the data used by the container.

code: const [FPBDCollisionConstraintContainerCookie](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraintContainer-) & GetContainerCookie() const


description: The GJK warm-start data. This is updated directly in the narrow phase.


code: const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * GetImplicit ( const int32 ParticleIndex ) const


code: const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * GetImplicit0() const


code: const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * GetImplicit1() const


code: const [FManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FManifoldPoint) & GetManifoldPoint ( const int32 PointIndex ) const


code: [FManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FManifoldPoint) & GetManifoldPoint ( const int32 PointIndex )


code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [FManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FManifoldPoint) > GetManifoldPoints() const


code: const [FManifoldPointResult](API\Runtime\Chaos\Chaos\Collision\FManifoldPointResult) & GetManifoldPointResult ( const int32 PointIndex ) const


code: [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * GetParticle1() const


code: [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * GetParticle ( const int32 ParticleIndex ) const


description: API

code: [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * GetParticle0() const


description: A key used to uniquely identify the constraint (it is based on the two particle IDs)


code: const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * GetShape ( const int32 ParticleIndex ) const


code: const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * GetShape0() const


code: const [FShapeInstance](API\Runtime\Chaos\Chaos\FShapeInstance) * GetShape1() const


description: Particle-relative transform of each collision shape in the constraint.

code: const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & GetShapeRelativeTransform0() const


code: const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & GetShapeRelativeTransform1() const


code: const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & GetShapeRelativeTransform ( const int32 ParticleIndex ) const


code: const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & GetShapeWorldTransform0() const


code: const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & GetShapeWorldTransform1() const


code: const [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) * GetSolverBody0() const


code: const [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) * GetSolverBody1() const


description: Whether we can use incremental manifolds (updated each iteration)

code: bool GetUseIncrementalManifold() const


description: Whether we run collision detection every iteration (true if we are not using one shot manifolds) NOTE: This is initially set based on whether are allowing incremental manifolds


description: Whether we are using manifolds (either one-shot or incremental)

code: bool GetUseManifold() const


code: const bool HasQuadraticShape() const


code: void InitManifoldPoint ( const int32 ManifoldPointIndex, const FContactPoint & ContactPoint )


code: void InitMarginsAndTolerances ( const [EImplicitObjectType](API\Runtime\Chaos\Chaos\EImplicitObjectType) ImplicitType0, const [EImplicitObjectType](API\Runtime\Chaos\Chaos\EImplicitObjectType) ImplicitType1, const [FRealSingle](API\Runtime\ChaosCore\Chaos\FRealSingle) Margin0, const [FRealSingle](API\Runtime\ChaosCore\Chaos\FRealSingle) Margin1 )


code: bool IsManifoldPointActive ( const int32 PointIndex ) const


description: Create a contact constraint Initializes a constraint stored inline in an object. Only intended to be called once right after construction. Does not reinitialize all data so not intended to reset a constraint for reuse with different particles etc.

code: static void Make ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * Particle0, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit0, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * Shape0, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * Simplicial0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & ImplicitLocalTransform0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * Particle1, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit1, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * Shape1, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * Simplicial1, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & ImplicitLocalTransform1, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InCullDistance, const bool bInUseManifold, const [EContactShapesType](API\Runtime\Chaos\Chaos\Chaos__EContactShapesType) ShapesType, [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & OutConstraint )


description: FTriangleMeshImplicitObject::ContactManifoldImp

code: static [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) MakeTriangle ( const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit0 )


className: MaxManifoldPoints

code: static const int32 MaxManifoldPoints = 4;


description: Unlike the other factory method, this version returns a constraint by value for emplacing into an array (ther others are by pointer)

code: static [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) MakeCopy ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Source )


code: int32 NumEnabledManifoldPoints() const


className: MaxTOI

code: static constexpr [FRealSingle](API\Runtime\ChaosCore\Chaos\FRealSingle) MaxTOI = std::numeric_limits<FRealSingle>::max();


description: Initialize the CCD TOI to the highest possible value

code: void ResetCCDTimeOfImpact()


code: void ResetPhi ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) InPhi )


description: Clear the current and previous manifolds.

code: void ResetManifold()


description: Clear the saved manifold points. This effectively resets friction anchors.

code: void ResetSavedManifoldPoints()


description: Reset the material properties to those from the shape materials. Called each frame to reset contact modifications to the material.

code: void ResetModifications()


description: Restore the properties of a collision from the properties of another. Used by the rewind/resim system when restoring a collision constraint that was saved (and called MakeCopy). This takes care not to overwrite any data maintained for the use of other systems (the ContainerCookie, Graph data, etc)

code: void RestoreFrom ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Source )


description: Enable or disable CCD for this constraint. Called once right after the constraint is created.

code: void SetCCDEnabled ( const bool bCCDEnabled )


description: Store the results of CCD contact resolution, if active.

code: void SetCCDResults ( const [FVec3](API\Runtime\ChaosCore\Chaos\FVec3) & InNetImpulse )


description: Set the CCD TOI from the collision detection sweep.

code: void SetCCDTimeOfImpact ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) TOI )


description: For CCD constraints, enable or disable the pre-solve sweep/rewind for this tick. Called every tick for CCD constraints based on current velocity versus size etc.

code: void SetCCDSweepEnabled ( const bool bCCDSweepEnabled )


code: void SetCullDistance ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) InCullDistance )


code: void SetDisabled ( bool bInDisabled )


code: void SetDynamicFriction ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InDynamicFriction )


code: void SetInvInertiaScale0 ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InInvInertiaScale )


code: void SetInvInertiaScale1 ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InInvInertiaScale )


code: void SetInvMassScale0 ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InInvMassScale )


code: void SetInvMassScale1 ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InInvMassScale )


description: Set the transforms when we last ran collision detection. This also sets the bCanRestoreManifold flag which allows the use of UpdateAndTryRestoreManifold on the next tick.

code: void SetLastShapeWorldTransforms ( const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeWorldTransform0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeWorldTransform1 )


code: virtual void SetIsSleeping ( const bool bInIsSleeping )


code: void SetManifoldPoints ( const [TArray](API\Runtime\Core\Containers\TArray)< [FManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FManifoldPoint) > & InManifoldPoints )


description: Replace the current manifold points with the input. The input array should contain no more than MaxManifoldPoints contacts (any extra will be ignored). We assume that all input contacts have been initialized and will not return false from IsSet(). Ignores contacts deeper than the CullDistance for this constraint.

code: void SetOneShotManifoldContacts ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FContactPoint > & ContactPoints )


code: void SetRestitution ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InRestitution )


code: void SetRestitutionThreshold ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InRestitutionThreshold )


code: void SetShapeWorldTransforms ( const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeWorldTransform0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InShapeWorldTransform1 )


code: void SetSolverBodies ( const [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) * InSolverBody0, const [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) * InSolverBody1 )


description: Store the data from the solver that is retained between ticks for the specified manifold point or used by dependent systems (plasticity, breaking, etc.)

code: void SetSolverResults ( const int32 ManifoldPointIndex, const [FVec3f](API\Runtime\ChaosCore\Chaos\FVec3f) & NetPushOut, const [FVec3f](API\Runtime\ChaosCore\Chaos\FVec3f) & NetImpulse, const [FRealSingle](API\Runtime\ChaosCore\Chaos\FRealSingle) StaticFrictionRatio, const [FRealSingle](API\Runtime\ChaosCore\Chaos\FRealSingle) Dt )


code: void SetStaticFriction ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InStaticFriction )


code: void SetStiffness ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) InStiffness )


description: Set all the data not initialized in the constructor.

code: void Setup ( const [ECollisionCCDType](API\Runtime\Chaos\Chaos\Collision\Chaos__ECollisionCCDType) InCCDType, const [EContactShapesType](API\Runtime\Chaos\Chaos\Chaos__EContactShapesType) InShapesType, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InImplicitTransform0, const [FRigidTransform3](API\Runtime\ChaosCore\Chaos\FRigidTransform3) & InImplicitTransform1, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InCullDistance, const bool bInUseManifold )


description: Does this constraint have the concept of sleep? (only really used for debug validation)

code: virtual bool SupportsSleeping() const


code: bool TryAddManifoldContact ( const FContactPoint & ContactPoint )


code: bool TryInsertManifoldContact ( const FContactPoint & ContactPoint )


description: Deprecated* Use TryRestoreManifold

code: bool UpdateAndTryRestoreManifold()


description: Update the store Phi for the manifold point based on current world-space shape transforms

code: void UpdateManifoldPointPhi ( const int32 ManifoldPointIndex )


description: Find the material for this contact and collect the friction, restitution, etc. This data is cached in the contact, so ClearMaterialProperties must be called if the material changes to force a re-gather of the data.

code: void UpdateMaterialProperties()


description: When a particle is moved under user control, we need to update some cached state to prevent friction from undoing the move.

code: void UpdateParticleTransform ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * InParticle )


code: void UpdateMaterialPropertiesImpl()


description: Whether this constraint was fully restored from a previous tick, and the manifold should be reused as-is.

code: bool WasManifoldRestored() const


code: FPBDCollisionConstraint ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * Particle0, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit0, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * Shape0, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * Simplicial0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FConstraintHandle\FGeometryParticleHandle) * Particle1, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * Implicit1, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * Shape1, const [FBVHParticles](API\Runtime\Chaos\Chaos\FBVHParticles) * Simplicial1 )


className: FPBDCollisionConstraint

description: Contact constraints are allocated on the heap (Asee FCollisionConstraintAllocator) and have permanent addresses. They use intrusive handles to reduce unnecessary indirection.

code: class FPBDCollisionConstraint : public [Chaos::FPBDCollisionConstraintHandle](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraintHandle)


description: Used to clear the container data when copying constraints out of the container (see resim cache) The constraint index will not be valid when the constraint is copied out of the container, but everything else is ok and should be restorable.

code: void ClearContainerData()


className: FPBDCollisionConstraintContainerCookie

description: Renamed toFPBDCollisionConstraintMaterial

bIsMultiShapePair

type: bool

description: Used by the MidPhase when a constraint is reactivated from a Resim cache If true, indicates that the constraint was created from the recursive collision detection path rather than the prefiltered shape-pair loop

CCDConstraintIndex

description: The CCD index in the container - this changes every tick (is INDEX_NONE for non-CCD constraints)

ConstraintIndex

description: The index in the container - this changes every tick (is valid for all constraints, including CCD)

CreationEpoch

description: The Epoch when then constraint was initially created.

LastUsedEpoch

description: The Epoch when the constraint was last used.

MidPhase

type: FParticlePairMi...

description: The constraint owner - set when the constraint is created.


description: InlinedFPBDCollisionConstraintHandlefunctions. Here to avoid circular deps

code: const [FPBDCollisionConstraints](API\Runtime\Chaos\Chaos\FPBDCollisionConstraints) * ConcreteContainer() const


className: FGeometryPair

code: typedef TPair< const [TGeometryParticleHandle](API\Runtime\Chaos\Chaos\TGeometryParticleHandle)< [FReal](API\Runtime\ChaosCore\Chaos\FReal), 3 > *, const [TGeometryParticleHandle](API\Runtime\Chaos\Chaos\TGeometryParticleHandle)< [FReal](API\Runtime\ChaosCore\Chaos\FReal), 3 > * > FGeometryPair


className: FImplicitPair

code: typedef TPair< const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) *, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * > FImplicitPair


description: Declared final so that TPBDConstraintGraphRuleImpl::AddToGraph() does not need to hit vtable.

code: virtual [FParticlePair](API\Runtime\Chaos\Chaos\FParticlePair) GetConstrainedParticles() const


code: const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & GetContact() const


description: Deprecated* UseGetContact()


description: Deprecated* UseGetContact()

code: const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & GetSweptPointContact() const


description: Deprecated* UseGetContact()

code: const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & GetPointContact() const


code: virtual void SetEnabled ( bool InEnabled )


code: static const [FConstraintHandleTypeID](API\Runtime\Chaos\Chaos\FConstraintHandleTypeID) & StaticType()


className: FPBDCollisionConstraintHandle

description: This is an intrusive handle, so you can use a contact pointer as a handle.

code: class FPBDCollisionConstraintHandle : public [Chaos::TIntrusiveConstraintHandle< FPBDCollisionConstraint >](API\Runtime\Chaos\Chaos\TIntrusiveConstraintHandle)


description: Reset the material properties to those pulled from the shape's materials (i.e., back to the state before any contact modification)

code: void ResetMaterialModifications()


className: FPBDCollisionConstraintMaterial

description: Material properties for a collision constraint.

code: class FPBDCollisionConstraintMaterial

DynamicFriction

description: Final material properties (post modifier) used by the solver. These get reset every frame to the material values above.

FaceIndex

description: The face index that the material was extracted from.

MaterialDynamicFriction

description: Material properties pulled from the materials of the two shapes involved in the contact


description: Add all the required bodies to the body container (required for the constraints added with AddConstraints)

code: virtual void AddBodies ( [FSolverBodyContainer](API\Runtime\Chaos\Chaos\Evolution\FSolverBodyContainer) & SolverBodyContainer )


description: IslandGroup API

code: virtual void AddConstraints()


description: Island API. Add a set of constraints to the solver. This can be called multiple times: once for each island in an IslandGroup, but there will never be more constraints added than specified inReset(). NOTE: this should not do any actual data gathering - it should just add to the list of constraints in this group. All data gathering is handled in GatherInput.

code: virtual void AddConstraints ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [Private::FPBDIslandConstraint](API\Runtime\Chaos\Chaos\Island\FPBDIslandConstraint) * > & Constraints )


description: Apply the position solve to all constraints in the container

code: virtual void ApplyPositionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


description: Apply the projection solve to all constraints in the container

code: virtual void ApplyProjectionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


description: Apply the velocity solve to all constraints in the container

code: virtual void ApplyVelocityConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


description: For testing.

code: const [Private::FPBDCollisionSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolver) & GetConstraintSolver ( const int32 ConstraintIndex ) const


code: virtual int32 GetNumConstraints() const


code: [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) & operator= ( [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) && )


code: [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) & operator= ( const [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) & )


description: Set the maximum number of constraints the solver will have to handle. This will be called only once per tick, so containers resized here will not have to resize again this tick so that pointers to elements in the container will remain valid for the tick (but not beyond).

code: virtual void Reset ( const int32 MaxConstraints )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


code: FPBDCollisionContainerSolver ( [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) && )


code: FPBDCollisionContainerSolver ( const [FPBDCollisionContainerSolver](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolver) & )


code: FPBDCollisionContainerSolver ( const [FPBDCollisionConstraints](API\Runtime\Chaos\Chaos\FPBDCollisionConstraints) & InConstraintContainer, const int32 InPriority )


className: FPBDCollisionContainerSolver

description: The solver for a set of collision constraints. This collects all the data required to solve a set of collision constraints into a contiguous, ordered buffer.

code: class FPBDCollisionContainerSolver : public [Chaos::FConstraintContainerSolver](API\Runtime\Chaos\Chaos\Evolution\FConstraintContainerSolver)


description: IslandGroup API

code: virtual void AddConstraints()


code: virtual void AddBodies ( [FSolverBodyContainer](API\Runtime\Chaos\Chaos\Evolution\FSolverBodyContainer) & SolverBodyContainer )


code: virtual void AddConstraints ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [Private::FPBDIslandConstraint](API\Runtime\Chaos\Chaos\Island\FPBDIslandConstraint) * > & Constraints )


code: virtual void ApplyPositionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void ApplyProjectionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void ApplyVelocityConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


code: virtual int32 GetNumConstraints() const


code: [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) & operator= ( const [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) & )


code: [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) & operator= ( [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) && )


code: virtual void Reset ( const int32 MaxConstraints )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


code: FPBDCollisionContainerSolverJacobi ( [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) && )


code: FPBDCollisionContainerSolverJacobi ( const [FPBDCollisionContainerSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverJaco-) & )


code: FPBDCollisionContainerSolverJacobi ( const [FPBDCollisionConstraints](API\Runtime\Chaos\Chaos\FPBDCollisionConstraints) & InConstraintContainer, const int32 InPriority )


code: ~FPBDCollisionContainerSolverJacobi()


className: FPBDCollisionContainerSolverJacobi

description: This version runs a Gauss-Seidel outer loop over manifolds, and a Jacobi loop over contacts in each manifold.

code: class FPBDCollisionContainerSolverJacobi : public [Chaos::FConstraintContainerSolver](API\Runtime\Chaos\Chaos\Evolution\FConstraintContainerSolver)


description: IslandGroup API

code: virtual void AddConstraints()


code: virtual void AddConstraints ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [Private::FPBDIslandConstraint](API\Runtime\Chaos\Chaos\Island\FPBDIslandConstraint) * > & Constraints )


code: virtual void ApplyPositionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void ApplyProjectionConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


code: virtual void ApplyVelocityConstraints ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 It, const int32 NumIts )


className: FConstraintSolverId

description: Used to recover the solver for a constraint

code: struct FConstraintSolverId


className: FDataSimd

description: Rows of collision constraints and solvers. We solve each row using SIMD. NumLanes is the width of a row and will be the same as the float SIMD register width (or less).

code: template<int TNumLanes> struct FDataSimd

type: FSolverBody[TNu...

SimdConstraints

type: TArray<TConstr...

SimdManifoldPoints

type: TArray<TPBDCol...

SimdNumConstraints

type: TSimdInt32< TNu...

SimdSolverBodies

type: TArray<TSolver...


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void GatherInput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


description: For testing.

code: const [FConstraintSolverId](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd\FConstraintSolve-) & GetConstraintSolverId ( const int32 ConstraintIndex ) const


code: const [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< 4 > & GetConstraintSolver ( const int32 SolverIndex ) const


code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< 4 > > GetManifoldPointBuffer() const


code: virtual int32 GetNumConstraints() const


code: [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) & operator= ( const [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) & )


code: [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) & operator= ( [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) && )


code: virtual void Reset ( const int32 MaxConstraints )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


code: virtual void ScatterOutput ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const int32 BeginIndex, const int32 EndIndex )


code: FPBDCollisionContainerSolverSimd ( [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) && )


code: FPBDCollisionContainerSolverSimd ( const [FPBDCollisionContainerSolverSimd](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionContainerSolverSimd) & )


code: FPBDCollisionContainerSolverSimd ( const [FPBDCollisionConstraints](API\Runtime\Chaos\Chaos\FPBDCollisionConstraints) & InConstraintContainer, const int32 InPriority )


code: ~FPBDCollisionContainerSolverSimd()


className: FPBDCollisionContainerSolverSimd

code: class FPBDCollisionContainerSolverSimd : public [Chaos::FConstraintContainerSolver](API\Runtime\Chaos\Chaos\Evolution\FConstraintContainerSolver)


description: Call once all manifold points have been initialized. Calculate mass properties etc.

code: void FinalizeManifold()


code: const [FPBDCollisionSolverManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverManifoldPoint) & GetManifoldPoint ( const int32 ManifoldPointIndex ) const


description: UpdateMass())

code: void InitManifoldPoint ( const int32 PointIndex, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition0, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition1, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactNormal, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentU, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaNormal, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentU, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactVelocityTargetNormal )


description: Create a solver with no initialization.


className: MaxConstrainedBodies

code: static const int32 MaxConstrainedBodies = 2;


className: MaxPointsPerConstraint

code: static const int32 MaxPointsPerConstraint = 4;


description: Create a solver that is initialized to safe defaults.


description: Reset the state of the collision solver

code: void Reset()


code: void SetFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InStaticFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDynamicFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InVelocityFriction )


code: void SetManifoldPointsBuffer ( [FPBDCollisionSolverManifoldPoint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverManifoldPoint) * InManifoldPoints, const int32 InMaxManifoldPoints )


code: void SetSolverBodies ( [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) & SolverBody0, [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) & SolverBody1 )


code: void SetStiffness ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InStiffness )


description:
Calculate and apply the position correction for this iteration.
true if we need to run more iterations, false if we did not apply any correction

code: void SolvePositionNoFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: void SolvePositionWithFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


description: Get the first solver body NOTE: This will not include any shock propagation mass scaling.


code: const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & SolverBody0() const


description: Get the second solver body NOTE: This will not include any shock propagation mass scaling.


code: const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & SolverBody1() const


description:
Calculate and apply the velocity correction for this iteration.
true if we need to run more iterations, false if we did not apply any correction

code: void SolveVelocity ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) bApplyDynamicFriction )


description: NOTE: Does not initialize any properties. See MakeInitialized.

code: FPBDCollisionSolver()


className: FPBDCollisionSolver

code: class FPBDCollisionSolver


code: template<int TNumLanes> static void SolvePositionNoFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< TNumLanes >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< TNumLanes >> & SolverBodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: template<> void SolvePositionNoFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< 4 >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< 4 >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< 4 >> & Bodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InMaxPushOut )


code: template<int TNumLanes> static void SolvePositionWithFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< TNumLanes >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< TNumLanes >> & SolverBodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: template<> void SolvePositionWithFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< 4 >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< 4 >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< 4 >> & Bodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InMaxPushOut )


code: template<int TNumLanes> static void SolveVelocityNoFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< TNumLanes >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< TNumLanes >> & SolverBodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt )


code: template<> void SolveVelocityNoFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< 4 >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< 4 >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< 4 >> & Bodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDt )


code: template<int TNumLanes> static void SolveVelocityWithFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< TNumLanes >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< TNumLanes >> & SolverBodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt )


className: FPBDCollisionSolverHelperSimd

description: Only works with 4 SIMD lanes for now.

code: class FPBDCollisionSolverHelperSimd


description: Disable mass scaling.

code: void DisableShockPropagation()


code: template<> void SolveVelocityWithFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< 4 >> & Solvers, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< 4 >> & ManifoldPoints, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TSolverBodyPtrPairSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrPairSimd)< 4 >> & Bodies, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDt )


description: Set up the mass scaling for shock propagation, using the position-phase mass scale.

code: void EnablePositionShockPropagation()


description: Set up the mass scaling for shock propagation, using the velocity-phase mass scale.

code: void EnableVelocityShockPropagation()


description: Finish manifold point setup. NOTE: Can only be called after the InitManifoldPoint has been called

code: void FinalizeManifoldPoint ( const int32 ManifoldPointIndex )


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetImpulse ( const int32 ManifoldPointIndex ) const


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetPushOut ( const int32 ManifoldPointIndex ) const


code: [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) GetStaticFrictionRatio ( const int32 ManifoldPointIndex ) const


code: void InitManifoldPoint ( const int32 ManifoldPointIndex, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition0, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition1, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactNormal, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentU, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaNormal, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentU, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactVelocityTargetNormal )


description: Create a solver with no initialization.


code: static const int32 MaxConstrainedBodies = 2;


code: static const int32 MaxPointsPerConstraint = 4;


code: void SetFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InStaticFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InDynamicFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InVelocityFriction )


description: Set up a manifold point (also calls FinalizeManifoldPoint)

code: void SetManifoldPoint ( const int32 ManifoldPointIndex, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition0, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition1, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactNormal, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentU, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaNormal, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentU, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactVelocityTargetNormal )


code: void SetSolverBodies ( [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) & SolverBody0, [FSolverBody](API\Runtime\Chaos\Chaos\Evolution\FSolverBody) & SolverBody1 )


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) SolvePositionNoFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) SolvePositionWithFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


description: Reset the state of the collision solver

code: void Reset()


description: Get the first (decorated) solver body The decorator add a possible mass scale.


code: const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & SolverBody0() const


description: Get the second (decorated) solver body The decorator add a possible mass scale.


code: void SetStiffness ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InStiffness )


code: const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & SolverBody1() const


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) SolveVelocity ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) bApplyDynamicFriction )


code: FPBDCollisionSolverJacobi()


className: FPBDCollisionSolverJacobi

description: Pros (vs Gauss Seidel):

code: class FPBDCollisionSolverJacobi


code: static void SolvePositionNoFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FPBDCollisionSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverJacobi) > & CollisionSolvers, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: static void SolvePositionWithFriction ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FPBDCollisionSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverJacobi) > & CollisionSolvers, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut )


code: static void SolveVelocity ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FPBDCollisionSolverJacobi](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverJacobi) > & CollisionSolvers, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) bApplyDynamicFriction )


className: FPBDCollisionSolverJacobiHelper

description: A helper for solving arrays of constraints

code: class FPBDCollisionSolverJacobiHelper


code: void ApplyFrictionCone ( const int32 ManifoldPointIndex, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) StaticFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) DynamicFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxFrictionPushOut, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & InOutPushOutTangentU, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & InOutPushOutTangentV )


description: Calculate the position error at the current transforms.

code: void CalculateContactPositionErrorNormal ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactDeltaNormal ) const


code: void CalculateContactPositionErrorTangential ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactDeltaTangentU, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactDeltaTangentV ) const


description: Calculate the velocity error at the current transforms.

code: void CalculateContactVelocityErrorNormal ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactVelocityDeltaNormal ) const


code: void CalculateContactVelocityError ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) DynamicFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactVelocityDeltaNormal, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactVelocityDeltaTangent0, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) & OutContactVelocityDeltaTangent1 ) const


code: void CalculatePositionCorrectionNormal ( const int32 ManifoldPointIndex, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Stiffness, [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) ContactDeltaNormal, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1, [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InOutDX0, [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InOutDR0, [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InOutDX1, [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InOutDR1 )


className: FManifoldPoint

code: struct FManifoldPoint

ContactDeltaNormal

type: FSolverReal

description: Errors to correct along each of the contact axes.

ContactMassNormal

description: Contact mass (for non-friction)

ContactNormal

description: World-space contact normal and tangents.

description: I^-1.(R x A) for each body where A is each axis (Normal, TangentU, TangentV)

ContactTargetVelocityNormal

description: Target velocity along the normal direction.

NetPushOutNormal

description: Solver outputs.

description: World-space contact point relative to each particle's center of mass.

StaticFrictionRatio

description: A measure of how much we exceeded the static friction threshold.


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetImpulse ( const int32 ManifoldPointIndex ) const


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetPushOut ( const int32 ManifoldPointIndex ) const


code: [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) GetStaticFrictionRatio ( const int32 ManifoldPointIndex ) const


description: Initialize the geometric data for the contact.

code: void InitContact ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


className: MaxManifoldPoints

code: static const int32 MaxManifoldPoints = 4;


code: void SetWorldContact ( const int32 ManifoldPointIndex, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition0, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InRelativeContactPosition1, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactNormal, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentU, const [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) & InWorldContactTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaNormal, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentU, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactDeltaTangentV, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) InWorldContactVelocityTargetNormal )


description: Whether we need to solve velocity for this manifold point (only if we were penetrating or applied a pushout)

code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) ShouldSolveVelocity ( const int32 ManifoldPointIndex ) const


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) SolvePositionWithFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Stiffness, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) StaticFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) DynamicFriction, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


code: void SolveVelocity ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Stiffness, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Dt, const [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) bApplyDynamicFriction, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


code: void SolvePositionNoFriction ( const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) Stiffness, const [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) MaxPushOut, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


description: Update the cached mass properties based on the current body transforms.

code: void UpdateMass ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


description: Update the contact mass for the normal correction This is used by shock propagation.

code: void UpdateMassNormal ( const int32 ManifoldPointIndex, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body0, const [FConstraintSolverBody](API\Runtime\Chaos\Chaos\Evolution\FConstraintSolverBody) & Body1 )


className: FPBDCollisionSolverManifoldPoint

description: InternalChaos class subject to API changes, renaming or removal

code: class FPBDCollisionSolverManifoldPoint


className: FPBDCollisionSolverJacobiManifoldPoints

description: A set of 4 manifold points in aFPBDCollisionSolver.

ManifoldPoints

type: TCArray<FManif...


code: [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) & operator= ( const [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) & )


code: [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) & operator= ( [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) && )


code: FPBDCollisionSolverSettings ( [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) && )


code: FPBDCollisionSolverSettings ( const [FPBDCollisionSolverSettings](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionSolverSettings) & )


className: FPBDCollisionSolverSettings

description: Settings to control the low-level collision solver behaviour.

code: class FPBDCollisionSolverSettings

MaxPushOutVelocity

type: FReal

description: Maximum speed at which two objects can depenetrate (actually, how much relative velocity can be added to a contact per frame when depentrating. Stacks and deep penetrations can lead to larger velocities)

NumPositionFrictionIterations

description: How many of the position iterations should run static/dynamic friction.

NumPositionShockPropagationIterations

description: How many position iterations should have shock propagation enabled.

NumVelocityFrictionIterations

description: How many of the velocity iterations should run dynamic friction

NumVelocityShockPropagationIterations

description: How many velocity iterations should have shock propagation enabled.


className: FRigidBodySweptPointContactConstraint


className: FSavedManifoldPoint

description: The friction data for a manifold point This is the information that needs to be stored between ticks to implement static friction.

code: class FSavedManifoldPoint


description: Build the list of potentially colliding shape pairs. This is all the shape pairs in the partilces' shapes arrays that pass the collision filter.

code: virtual void BuildDetectorsImpl()


code: virtual int32 GenerateCollisionsImpl ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: virtual void InjectCollisionImpl ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Constraint, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: virtual void WakeCollisionsImpl ( const int32 CurrentEpoch )


className: FShapePairParticlePairMidPhase

description: A midphase for a particle pair that pre-builds a set of all potentially colliding shape pairs. This is the fast path used when each particle has a small number of shapes and does not contain a complex hierarchy. This midphase (compared toFGenericParticlePairMidPhase) caches various data like the results of the collision filtering, the shapr pair types, etc.

code: class FShapePairParticlePairMidPhase : public [Chaos::FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase)


className: FSimOverlapParticleShape

description: Results from SimOverlapBounds test

code: class FSimOverlapParticleShape

HitParticle

type: constFGeometry...

description: The particle that we hit, or null.

HitShape

type: constFPerShape...

description: The shape that we hit (or uninitialized)

ShapeWorldTransform

type: FRigidTransform...

description: The world-space transform of the geometry that was hit.


description: Return a pointer to the payload on which we are querying the acceleration structure

code: const void * GetQueryPayload() const


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) ShouldIgnore ( const [TSpatialVisitorData](API\Runtime\Chaos\Chaos\TSpatialVisitorData)< [FAccelerationStructureHandle](API\Runtime\Chaos\Chaos\FAccelerationStructureHandle) > & Instance ) const


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) VisitOverlap ( const [TSpatialVisitorData](API\Runtime\Chaos\Chaos\TSpatialVisitorData)< [FAccelerationStructureHandle](API\Runtime\Chaos\Chaos\FAccelerationStructureHandle) > & Instance )


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) VisitRaycast ( [TSpatialVisitorData](API\Runtime\Chaos\Chaos\TSpatialVisitorData)< [FAccelerationStructureHandle](API\Runtime\Chaos\Chaos\FAccelerationStructureHandle) >, [FQueryFastData](API\Runtime\Chaos\Chaos\FQueryFastData) & CurData )


code: FSimOverlapVisitor ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * ParticleHandle, const [FCollisionFilterData](API\Runtime\Chaos\Chaos\FCollisionFilterData) & InSimFilterData, [Private::FBroadPhaseContext](API\Runtime\Chaos\Chaos\Collision\FBroadPhaseContext) & InContext )


className: FSimOverlapVisitor

description: A visitor for the spatial partitioning system used to build the set of objects overlapping a bounding box.

code: struct FSimOverlapVisitor


description: Keep the first hit and continue looking for more hits

code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) operator() ( const [FVec3](API\Runtime\ChaosCore\Chaos\FVec3) & Dir, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Length, const [FSimSweepParticleHit](API\Runtime\Chaos\Chaos\Collision\FSimSweepParticleHit) & InHit )


code: const [FSimSweepParticleHit](API\Runtime\Chaos\Chaos\Collision\FSimSweepParticleHit) & GetFirstHit() const


code: FSimSweepCollectorFirstHit ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) InHitDistanceEqualTolerance, [FSimSweepParticleHit](API\Runtime\Chaos\Chaos\Collision\FSimSweepParticleHit) & OutFirstHit )


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) operator() ( const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * SweptParticle, const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * OtherParticle )


className: FSimSweepCollectorFirstHit

description: A hit collector for SimSweepParticle that just keeps the first hit, except for initial overlaps where the sweep is already moving us away from the contact. When there are multiple hits at the same TOI/initial overlap we take the hit with the most opposing normal.

code: class FSimSweepCollectorFirstHit


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) VisitSweep ( [TSpatialVisitorData](API\Runtime\Chaos\Chaos\TSpatialVisitorData)< [FAccelerationStructureHandle](API\Runtime\Chaos\Chaos\FAccelerationStructureHandle) >, [FQueryFastData](API\Runtime\Chaos\Chaos\FQueryFastData) & CurData )


code: FSimSweepParticleFilterBroadPhase ( [FIgnoreCollisionManager](API\Runtime\Chaos\Chaos\Collision\FIgnoreCollisionManager) * InIgnoreCollisionManager )


className: FSimSweepParticleFilterBroadPhase

description: The default particle pair filter for sim sweeps that uses the same test as in the broadphase. I.e., sweep will be stopped by any object that the swept particle can collide with.

code: class FSimSweepParticleFilterBroadPhase


className: FSimSweepParticleHit

description: Results from a SimSweepParticle. NOTE: Only HitParticle is guaranteed to be initialized. If HitParticle is null, all other properties are undefined.

code: class FSimSweepParticleHit

HitDistance

description: The distance along the sweep at the hit, or the seperation if negative (i.e., -Penetration) (or uninitialized)

HitFaceIndex

description: The face index of the shape we hit, or INDEX_NONE (or uninitialized)

HitFaceNormal

description: The normal of the face we hit, if HitFaceIndex is set (or uninitialized)

HitGeometry

type: constFImplicit...

description: The geometry that we hit (or uninitialized)

HitNormal

description: The contact normal for HitDistance >= 0, or MTD direction for HitDistance < 0 (or uninitialized)

HitParticle

description: The particle that we hit, or null.

HitPosition

description: The contact position (or uninitialized)

HitTOI

description: Time of impact [0,1] (or uninitialized)


code: [bool](API\Runtime\Chaos\Chaos\Collision\Chaos__Private__bool\1) operator() ( const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * SweptShape, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * SweptImplicit, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * OtherShape, const [FImplicitObject](API\Runtime\Chaos\Chaos\FImplicitObject) * OtherImplicit )


className: FSimSweepShapeFilterNarrowPhase

description: The default shape pair filter for sim sweeps that uses the same test as in the narrowphase. I.e., sweep will be stopped by any object that the swept particle can collide with.

code: class FSimSweepShapeFilterNarrowPhase


description:
Perform a bounds check and run the narrow phase if necessary.
The number of collisions constraints that were activated

code: int32 GenerateCollision ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


className: FCollisionsArray

code: typedef [TArray](API\Runtime\Core\Containers\TArray)< [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) *, TInlineAllocator< 1 >> FCollisionsArray


code: const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) * GetConstraint() const


description:
Generate a SweptConstraint as long as AABBs overlap.
The number of collisions constraints that were activated

code: int32 GenerateCollisionCCD ( const bool bEnableCCDSweep, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) CullDistance, const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * GetParticle0() const


code: const [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * GetParticle1() const


code: const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * GetShape0() const


code: const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * GetShape1() const


description: Have we run collision detection since this Epoch (inclusive)

code: bool IsUsedSince ( const int32 Epoch ) const


code: [FSingleShapePairCollisionDetector](API\Runtime\Chaos\Chaos\Collision\FSingleShapePairCollisionDetecto-) & operator= ( const [FSingleShapePairCollisionDetector](API\Runtime\Chaos\Chaos\Collision\FSingleShapePairCollisionDetecto-) & R )


description: Set the collision from the parameter and activate it This is used by the Resim restore functionality.

code: void SetCollision ( const [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) & Constraint, const [FCollisionContext](API\Runtime\Chaos\Chaos\Collision\FCollisionContext) & Context )


code: FSingleShapePairCollisionDetector ( [FSingleShapePairCollisionDetector](API\Runtime\Chaos\Chaos\Collision\FSingleShapePairCollisionDetecto-) && R )


description: Reactivate the constraint  SleepEpoch The tick on which the particle went to sleep. Only constraints that were active when the particle went to sleep should be reactivated.

code: void WakeCollision ( const int32 SleepEpoch, const int32 CurrentEpoch )


code: FSingleShapePairCollisionDetector ( const [FSingleShapePairCollisionDetector](API\Runtime\Chaos\Chaos\Collision\FSingleShapePairCollisionDetecto-) & R )


code: FSingleShapePairCollisionDetector ( [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle0, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * InShape0, [FGeometryParticleHandle](API\Runtime\Chaos\Chaos\FGeometryParticleHandle) * InParticle1, const [FPerShapeData](API\Runtime\Chaos\Chaos\FPerShapeData) * InShape1, const [EContactShapesType](API\Runtime\Chaos\Chaos\Chaos__EContactShapesType) InShapePairType, [FParticlePairMidPhase](API\Runtime\Chaos\Chaos\Collision\FParticlePairMidPhase) & MidPhase )


code: ~FSingleShapePairCollisionDetector()


className: FSingleShapePairCollisionDetector

description: This is used byFShapePairParticlePairMidPhase

code: class FSingleShapePairCollisionDetector


description: This function is the outer loop of collision detection. It loops over the particles view and do the broadphase + narrowphase collision detection.

code: template<bool bOnlyRigid, typename ViewType, typename [SpatialAccelerationType](API\Runtime\Chaos\Chaos\SpatialAccelerationType)> void ComputeParticlesOverlaps ( ViewType & OverlapView, [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const [SpatialAccelerationType](API\Runtime\Chaos\Chaos\SpatialAccelerationType) & InSpatialAcceleration, [Private::FCollisionConstraintAllocator](API\Runtime\Chaos\Chaos\Collision\FCollisionConstraintAllocator) * Allocator, const [FCollisionDetectorSettings](API\Runtime\Chaos\Chaos\Collision\FCollisionDetectorSettings) & Settings )


description: Generate all the collision constraints for the set of overlapping objects produced byt he broad phase

code: void ProduceCollisions ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt )


description: Generate all overlapping pairs and spawn a midphase object to handle collisions for each of them

code: void ProduceOverlaps ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, [Private::FCollisionConstraintAllocator](API\Runtime\Chaos\Chaos\Collision\FCollisionConstraintAllocator) * Allocator, const [FCollisionDetectorSettings](API\Runtime\Chaos\Chaos\Collision\FCollisionDetectorSettings) & Settings, [IResimCacheBase](API\Runtime\Chaos\Chaos\IResimCacheBase) * ResimCache )


code: template<typename T_SPATIALACCELERATION> void ProduceOverlaps ( [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, const T_SPATIALACCELERATION & InSpatialAcceleration, [Private::FCollisionConstraintAllocator](API\Runtime\Chaos\Chaos\Collision\FCollisionConstraintAllocator) * Allocator, const [FCollisionDetectorSettings](API\Runtime\Chaos\Chaos\Collision\FCollisionDetectorSettings) & Settings, [IResimCacheBase](API\Runtime\Chaos\Chaos\IResimCacheBase) * ResimCache )


code: void SetSpatialAcceleration ( const [FAccelerationStructure](API\Runtime\Chaos\Chaos\Collision\FSpatialAccelerationBroadPhase\FAccelerationStr-) * InSpatialAcceleration )


code: FSpatialAccelerationBroadPhase ( const [FPBDRigidsSOAs](API\Runtime\Chaos\Chaos\FPBDRigidsSOAs) & InParticles )


code: virtual void DetectCollisions ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, [FEvolutionResimCache](API\Runtime\Chaos\Chaos\FEvolutionResimCache) * ResimCache )


className: FSpatialAccelerationBroadPhase

description: A broad phase that iterates over particle and uses a spatial acceleration structure to output potentially overlapping SpatialAccelerationHandles.

code: class FSpatialAccelerationBroadPhase


code: void RunBroadPhase ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, [FEvolutionResimCache](API\Runtime\Chaos\Chaos\FEvolutionResimCache) * ResimCache )


code: void RunNarrowPhase ( const [FReal](API\Runtime\ChaosCore\Chaos\FReal) Dt, [FEvolutionResimCache](API\Runtime\Chaos\Chaos\FEvolutionResimCache) * ResimCache )


code: FSpatialAccelerationCollisionDetector ( [FSpatialAccelerationBroadPhase](API\Runtime\Chaos\Chaos\Collision\FSpatialAccelerationBroadPhase) & InBroadPhase, [FPBDCollisionConstraints](API\Runtime\Chaos\Chaos\FPBDCollisionConstraints) & InCollisionContainer )


className: FSpatialAccelerationCollisionDetector

code: class FSpatialAccelerationCollisionDetector : public [Chaos::FCollisionDetector](API\Runtime\Chaos\Chaos\Collision\FCollisionDetector)


code: void IncrementCountNP ( int32 Count )


code: void RecordBoundsData ( const [FAABB3](API\Runtime\Chaos\Chaos\FAABB3) & Box1 )


code: void RecordBroadphasePotentials ( int32 Num )


className: FStatDataImp

code: struct FStatDataImp

BoundsDistribution

type: FStatHelper< tr...


className: FStatHelper

description: FStatHelper< true >

code: template<bool bGatherStats> struct FStatHelper


className: FStatHelper< true >::Record

code: void Record &40; int32 Count &41;


className: FStatHelper< true >::ToString

code: FString ToString&40;&41; const


className: FStatHelper< true >

code: template<> struct FStatHelper< true >


code: FTriangleContactPoint ( const FContactPoint & InContactPoint )


className: FTriangleContactPoint

description: Extended data used when processing contactpoints on a triangle mesh. Adds information about which triangle we hit (in the local array of FoOntactTriangles) as well as which mesh edge or vertex we hit if appropriate (used for pruning).

code: class FTriangleContactPoint : public Chaos::TContactPoint< FReal >

EdgeID

type: FContactEdgeID

VertexID

type: FContactVertexI...


className: FWorldContactPoint

description: World-space contact point data

code: class FWorldContactPoint

ContactDeltaNormal

type: FRealSingle

description: Errors to correct along each of the contact axes.

ContactNormal

description: World-space contact normal and tangents.

ContactTargetVelocityNormal

description: Target velocity along the normal direction.

RelativeContactPoints

description: World-space contact point relative to each particle's center of mass.


className: TConstraintPtrSimd

code: typedef [TSimdValue](API\Runtime\ChaosCore\Chaos\TSimdValue)< [FPBDCollisionConstraint](API\Runtime\Chaos\Chaos\Collision\FPBDCollisionConstraint) *, TNumLanes > TConstraintPtrSimd


className: FSimdRealf

code: typedef [TSimdRealf](API\Runtime\ChaosCore\Chaos\TSimdRealf)< TNumLanes > FSimdRealf


code: typedef [TSimdInt32](API\Runtime\ChaosCore\Chaos\TSimdInt32)< TNumLanes > FSimdInt32


className: FSimdSelector

code: typedef [TSimdSelector](API\Runtime\ChaosCore\Chaos\TSimdSelector)< TNumLanes > FSimdSelector


className: FSimdSolverBodyPtr

code: typedef [TSolverBodyPtrSimd](API\Runtime\Chaos\Chaos\Collision\TSolverBodyPtrSimd)< TNumLanes > FSimdSolverBodyPtr


code: typedef [TSimdVec3f](API\Runtime\ChaosCore\Chaos\TSimdVec3f)< TNumLanes > FSimdVec3f


className: TPBDCollisionSolverManifoldPointsSimd

description: A SIMD row of contact points from a set of FPBDCollisionSolverSimd.

code: template<int TNumLanes> class TPBDCollisionSolverManifoldPointsSimd

IsValid

type: FSimdSelector

description: Whether the manifold point in each lane is set up for solving.

SimdContactDeltaNormal

type: FSimdRealf

SimdContactNormal

description: Normal PushOut.

SimdContactTangentU

description: Tangential PushOut.

SimdContactTargetVelocityNormal

description: Normal Impulse.


className: FSimdManifoldPoint

code: typedef [TPBDCollisionSolverManifoldPointsSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverManifoldPoint-)< TNumLanes > FSimdManifoldPoint


code: int32 GetBufferIndex ( const int32 ManifoldPointIndex ) const


code: const [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) & GetManifoldPoint ( const int32 ManifoldPointIndex, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) > & ManifoldPointsBuffer ) const


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetImpulse ( const int32 ManifoldPointIndex, const int32 LaneIndex, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) > & ManifoldPointsBuffer ) const


code: [FSolverVec3](API\Runtime\Chaos\Chaos\Evolution\FSolverVec3) GetNetPushOut ( const int32 ManifoldPointIndex, const int32 LaneIndex, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) > & ManifoldPointsBuffer ) const


code: [FSolverReal](API\Runtime\Chaos\Chaos\Evolution\FSolverReal) GetStaticFrictionRatio ( const int32 ManifoldPointIndex, const int32 LaneIndex, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) > & ManifoldPointsBuffer ) const


code: void InitManifoldPoints ( const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [FSimdManifoldPoint](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdManifoldPoint) > & ManifoldPointsBuffer )


description: Create a solver that is initialized to safe defaults.

code: static [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes > MakeInitialized()


description: Create a solver with no initialization.

code: static [TPBDCollisionSolverSimd](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd)< TNumLanes > MakeUninitialized()


className: MaxConstrainedBodies

code: static const int32 MaxConstrainedBodies = 2;


className: MaxPointsPerConstraint

code: static const int32 MaxPointsPerConstraint = 4;


description: Reset the state of the collision solver

code: void Reset()


code: void SetFriction ( const [FSimdRealf](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdRealf) InStaticFriction, const [FSimdRealf](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdRealf) InDynamicFriction, const [FSimdRealf](API\Runtime\Chaos\Chaos\Collision\TPBDCollisionSolverSimd\FSimdRealf) InVelocityFriction )