UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos Namespace Reference

Namespaces

namespace  Collisions
 
namespace  CollisionStats
 
namespace  Cooking
 
namespace  CVars
 
namespace  DebugDraw
 
namespace  EAnimationFlags
 
namespace  EImplicitObject
 
namespace  Facades
 
namespace  Filter
 
namespace  ImplicitObjectType
 
namespace  JointConstraintDefaults
 
namespace  Legacy
 
namespace  Private
 
namespace  Raycasts
 
namespace  Serialization
 
namespace  Softs
 
namespace  Sweeps
 
namespace  ThreadingPrivate
 
namespace  Utilities
 
namespace  VD
 
namespace  VisualDebugger
 

Classes

struct  AABBTreeExpensiveStatistics
 
struct  AABBTreeStatistics
 
class  AdvanceOneTimeStepTask
 
class  AscendingPredicate
 
struct  CIsUpdatableElement
 
struct  ClusterId
 
class  ConstraintSettings
 
struct  CParticleView
 
struct  CSerializablePtr
 
class  DescendingPredicate
 
struct  DirtyGridHashEntry
 
struct  F2DGridSet
 
struct  FAABBEdge
 
struct  FAABBFace
 
class  FAABBSimd
 
struct  FAABBTreePayloadInfo
 
class  FAABBVectorized
 
class  FAABBVectorizedDouble
 
class  FAccelerationStructureHandle
 
class  FAckermannSim
 
class  FActiveViewRange
 
class  FAerofoil
 
struct  FAerofoilConfig
 
struct  FAerofoilOutputData
 
struct  FAerofoilSettings
 
class  FAerofoilSimModule
 
struct  FAllBreakingData
 
struct  FAllCollisionData
 
struct  FAllCrumblingData
 
struct  FAllInputs
 
struct  FAllRemovalData
 
struct  FAllSolverTasks
 
struct  FAllTrailingData
 
struct  FArcadeControlConfig
 
struct  FAxisConstraintDatas
 
struct  FAxleConfig
 
struct  FAxleSettings
 Axle settings. More...
 
class  FAxleSim
 
class  FAxleSimModule
 A vehicle component that transmits torque from one source to another, i.e. from an engine or differential to wheels. More...
 
struct  FBaseEventFlag
 
struct  FBaseRewindHistory
 
class  FBasicBroadPhase
 
class  FBasicCollisionDetector
 
class  FBoxFloat3
 
class  FBoxSimd
 
struct  FBreakingData
 
struct  FBreakingDataExt
 
struct  FBreakingEventData
 
struct  FBroadPhaseConfig
 
class  FBVHParticles
 
class  FCapsule
 
struct  FCapsuleSpecializeSamplingHelper
 
struct  FCCDConstraint
 
struct  FCCDHelpers
 
class  FCCDManager
 
class  FCCDModifier
 
class  FCCDModifierAccessor
 
class  FCCDModifierParticleIterator
 
class  FCCDModifierParticleRange
 
struct  FCCDParticle
 
class  FChaosArchive
 
class  FChaosArchiveContext
 
class  FChaosArchiveScopedMemory
 
struct  FChaosClusterUnionInterpolationData
 
struct  FChaosGeometryCollectionInterpolationData
 
struct  FChaosInterpolationResults
 
class  FChaosMarshallingManager
 
class  FChaosPhysicsMaterial
 
struct  FChaosPhysicsMaterialDamageModifier
 
class  FChaosPhysicsMaterialMask
 
struct  FChaosPhysicsMaterialStrength
 
class  FChaosRefCountedObject
 
struct  FChaosResultsChannel
 
class  FChaosResultsManager
 
struct  FChaosRigidInterpolationData
 
class  FCharacterGroundConstraint
 
class  FCharacterGroundConstraintContainer
 Container class for all character ground constraints on the physics thread. More...
 
class  FCharacterGroundConstraintDynamicData
 
class  FCharacterGroundConstraintHandle
 
class  FCharacterGroundConstraintProxy
 
class  FCharacterGroundConstraintSettings
 
struct  FChassisSettings
 Chassis settings. More...
 
class  FChassisSimModule
 A vehicle component that transmits torque from one source to another, i.e. from an engine or differential to wheels. More...
 
struct  FCheckGameplayThread
 
struct  FCheckPhysicsThread
 
struct  FCleanMeshWrapper
 
struct  FClusterCreationParameters
 
struct  FClusterDestoryParameters
 
struct  FClusterUnion
 
struct  FClusterUnionChildData
 
struct  FClusterUnionChildToParentUpdate
 
struct  FClusterUnionCreationParameters
 
struct  FClusterUnionInitData
 
class  FClusterUnionManager
 
struct  FClusterUnionParticleProperties
 
class  FClusterUnionPhysicsProxy
 
struct  FClusterUnionStressSolver
 
struct  FClusterUnionSyncedData
 
struct  FClutchSettings
 
class  FClutchSimFactory
 
class  FClutchSimModule
 a vehicle component that transmits torque from one source to another through a clutch system, i.e. connect an engine to a transmission More...
 
struct  FClutchSimModuleData
 
struct  FCollidingData
 
struct  FCollidingDataExt
 
class  FCollidingDataIndex
 
class  FCollisionContactModifier
 
class  FCollisionContext
 
struct  FCollisionData
 
class  FCollisionDetector
 
class  FCollisionDetectorSettings
 
struct  FCollisionEventData
 
class  FCollisionEventDataIterator
 
struct  FCollisionTolerances
 
class  FColoringGraph
 
struct  FCommonQueryData
 
class  FComplex
 
struct  FConstDirtyPropData
 
class  FConstGenericParticleHandle
 
struct  FConstMaterialHandle
 
struct  FConstMaterialMaskHandle
 
class  FConstraintBase
 
class  FConstraintContainerSolver
 
class  FConstraintHandle
 Base class for constraint handles. More...
 
class  FConstraintHandleHolder
 A debugging utility for tracking down dangling constraint issues This acts as a FConstraintHandle*, but caches some extra debug data useful in tracking down dangling pointer issues when they arise. More...
 
class  FConstraintHandleTypeID
 A type id for constraint handles to support safe up/down casting (including intermediate classes in the hierrachy) More...
 
class  FConstraintSolverBody
 
struct  FContactEdgeID
 
struct  FContactEdgeOrVertexID
 
class  FContactGroup
 A set of contacts in the same plane. More...
 
class  FContactGroupContainer
 All the contacts on a body, held in sets where all contacts in each set are in the same plane. More...
 
class  FContactGroupManifoldPoint
 Information about a contact point held in a ContactGroup (points in the same plane) More...
 
class  FContactPairModifier
 
class  FContactPairModifierIterator
 
class  FContactPairModifierParticleRange
 
class  FContactPairModifierParticleRangeIterator
 
class  FContactTriangle
 Data held alongside contact points when generating contacts against a (likely non-convex) mesh of triangles. More...
 
class  FContactTriangleCollector
 
class  FConvex
 
class  FConvexBuilder
 
class  FConvexStructureData
 
struct  FCookHelper
 
class  FCoreCapsule
 
struct  FCreatedModules
 
struct  FCrumblingData
 
struct  FCrumblingEventData
 
struct  FCurveKey
 
class  FCylinder
 
struct  FCylinderSpecializeSamplingHelper
 
class  FDebugSolverTasks
 
class  FDebugSubstep
 
struct  FDefaultCollectionFactory
 
class  FDenseMatrixSolver
 
class  FDirtyChaosProperties
 
struct  FDirtyCharacterGroundConstraintData
 
struct  FDirtyClusterUnionData
 
struct  FDirtyClusterUnionParticleData
 
struct  FDirtyGeometryCollectionData
 
struct  FDirtyIdx
 
struct  FDirtyJointConstraintData
 
struct  FDirtyPropData
 
class  FDirtyPropertiesManager
 
class  FDirtyPropertiesPool
 
struct  FDirtyProxiesBucket
 
struct  FDirtyProxiesBucketInfo
 
struct  FDirtyProxy
 
struct  FDirtyRigidParticleData
 
struct  FDirtyRigidParticleReplicationErrorData
 
class  FDirtySet
 
class  FDoubleBuffer
 
struct  FEngineOutputData
 
struct  FEngineSettings
 
class  FEngineSimFactory
 
class  FEngineSimModule
 
struct  FEngineSimModuleData
 
struct  FEPAFloodEntry
 
class  FErrorReporter
 
class  FEventContainerBase
 
class  FEventDefaults
 
class  FEventManager
 
class  FEvolutionResimCache
 
struct  FEvolutionStats
 
class  FFFT3
 
class  FFFTProjection3
 
struct  FFrameAndPhase
 
struct  FFrozenGameThreadContextScope
 
struct  FGameThreadContextScope
 
struct  FGearChangeEvent
 
class  FGenericParticleHandle
 
class  FGenericParticleHandleImp
 
class  FGenericParticlePairMidPhase
 
struct  FGeometryParticleParameters
 
class  FGeometryParticleState
 
struct  FGeometryParticleStateBase
 
struct  FGeomGJKHelper
 
struct  FGeomGJKHelperSIMD
 
class  FGJKCapsuleSingleSIMD
 
class  FGJKSphere
 
class  FGJKSphereSingleSIMD
 
class  FGraph
 
class  FGraphColoring
 
class  FGuardedTripleBuffer
 
class  FHeightField
 
class  FHeightfieldRaycastVisitor
 
struct  FHeightNormalResult
 
class  FIgnoreCollisionManager
 
class  FImplicitObject
 
class  FImplicitObjectInstanced
 
class  FImplicitObjectScaled
 
class  FImplicitObjectUnion
 
class  FImplicitObjectUnionClustered
 
class  FIndexedConstraintHandle
 
struct  FIndicesByPhysicsProxy
 
struct  FInertiaConditioningTolerances
 
class  FInitialState
 
class  FInternalDefaultSettings
 
class  FIntrusiveConstraintHandle
 Base class for constraints that are allocated at permanent memory addresses and inherit the handle. More...
 
struct  FJointConstants
 
class  FJointConstraint
 
struct  FJointConstraintOutputData
 
class  FJointConstraintPhysicsProxy
 
class  FJointSolver
 
class  FJointSolverConstraintRowData
 
class  FJointSolverConstraintRowState
 
class  FJointSolverConstraints
 
class  FJointSolverJointState
 
class  FJointState
 
struct  FJointStateBase
 
struct  FKinematicGeometryParticleParameters
 
class  FKinematicTarget
 
struct  FLargeUnionClusteredImplicitInfo
 
class  FLevelSet
 
class  FLinearCurve
 
struct  FLockDepthData
 
class  FManifoldPoint
 A single point in a contact manifold. Each Collision Constraint will have up to 4 of these. More...
 
class  FManifoldPointResult
 
class  FMassMatrix
 
struct  FMassProperties
 
struct  FMaterialData
 
struct  FMaterialHandle
 
struct  FMaterialMaskHandle
 
class  FMidPhaseModifier
 
class  FMidPhaseModifierAccessor
 
class  FMidPhaseModifierParticleIterator
 
class  FMidPhaseModifierParticleRange
 
class  FMLLevelSet
 
struct  FMLLevelSetImportData
 
class  FMLLevelSetNeuralInference
 
struct  FMLLevelSetNNEModelData
 
class  FModuleFactoryRegister
 
struct  FModuleHitResults
 
struct  FModuleNetData
 
struct  FMotorSettings
 Motor settings. More...
 
class  FMotorSimModule
 A vehicle component that provides torque output based on a torque control input The output torque is based on a square function style curve, zero at 0.0 and MaxRPM, and 1.0 at mid RPM. More...
 
struct  FMTDInfo
 
class  FMultiBufferFactory
 
struct  FMultiInstanceLockDepthData
 
class  FNormalisedGraph
 
struct  FOverlapQueryData
 
class  FParticleCollisions
 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. More...
 
class  FParticleData
 
class  FParticleDynamicMisc
 
class  FParticleDynamics
 
class  FParticleEdgeCollisionPruner
 Utility to remove edge contacts on a particle if those edge contacts are "hidden" by a face contact. More...
 
struct  FParticleID
 
class  FParticleMassProps
 
class  FParticleMeshCollisionPruner
 Utility to remove or correct edge contacts on the boundary between tweo separate meshes which coincident edges/vertices. More...
 
class  FParticleNonFrequentData
 
class  FParticlePairMidPhase
 Produce collisions for a particle pair A FParticlePairMidPhase object is created for every particle pair whose bounds overlap. It is responsible for building a set of potentially colliding shape pairs and running collision detection on those pairs each tick. More...
 
class  FParticlePairMidPhaseCollisionKey
 
class  FParticlePositionRotation
 
struct  FParticleProxyProperty
 
class  FParticleRule
 
class  FParticleSpatialAccessorPQ
 
class  FParticleSpatialAccessorXR
 
class  FParticleSubSurfaceCollisionPruner
 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. More...
 
class  FParticleUniqueIndicesMultithreaded
 
class  FParticleUtilities_ActorSpace
 
class  FParticleVelocities
 
class  FPBDChainConstraints
 
class  FPBDCollisionConstraint
 A contact constraint. More...
 
class  FPBDCollisionConstraintContainerCookie
 Information used by the constraint allocator This includes any information used for optimizations like array indexes etc as well as data for managing lifetime and pruning. More...
 
class  FPBDCollisionConstraintHandle
 A handle to a contact constraint. More...
 
class  FPBDCollisionConstraintMaterial
 
class  FPBDCollisionConstraints
 
class  FPBDCollisionContainerSolver
 
class  FPBDCollisionSolverSettings
 Settings to control the low-level collision solver behaviour. More...
 
class  FPBDCollisionSphereConstraints
 
class  FPBDConstraintContainer
 
class  FPBDGeometryCollectionParticle
 
class  FPBDIndexedConstraintContainer
 
class  FPBDJointCachedSolver
 
struct  FPBDJointCombinedConstraints
 
class  FPBDJointConstraintHandle
 
class  FPBDJointConstraints
 
class  FPBDJointSettings
 
class  FPBDJointSolver
 
class  FPBDJointSolverSettings
 
class  FPBDJointState
 
class  FPBDJointUtilities
 
class  FPBDMinEvolution
 
class  FPBDNullConstraint
 A dummy constraint used for unit testing. More...
 
class  FPBDNullConstraintHandle
 
class  FPBDNullConstraints
 
class  FPBDPositionConstraintHandle
 
class  FPBDPositionConstraints
 Constraint a single particle to a world-space position. More...
 
class  FPBDRigidDirtyParticlesBuffer
 
class  FPBDRigidDirtyParticlesBufferAccessor
 
struct  FPBDRigidDirtyParticlesBufferOut
 
class  FPBDRigidDynamicSpringConstraintHandle
 
class  FPBDRigidDynamicSpringConstraints
 
struct  FPBDRigidParticleParameters
 
class  FPBDRigidsEvolutionBase
 
class  FPBDRigidsEvolutionGBF
 
class  FPBDRigidSpringConstraintHandle
 
class  FPBDRigidSpringConstraints
 
class  FPBDRigidsSOAs
 
class  FPBDRigidsSolver
 
class  FPBDSuspensionConstraintHandle
 
class  FPBDSuspensionConstraints
 
class  FPBDSuspensionResults
 
class  FPBDSuspensionSettings
 
class  FPBDSuspensionSolverSettings
 
struct  FPendingModuleAdds
 
struct  FPendingModuleDeletions
 
struct  FPendingSpatialData
 
struct  FPendingSpatialDataQueue
 
struct  FPendingSpatialInternalDataQueue
 
class  FPerformanceMeasure
 
class  FPerParticleAddImpulses
 
class  FPerParticleEtherDrag
 
class  FPerParticleEulerStepVelocity
 
class  FPerParticleExternalForces
 
class  FPerParticleGravity
 
class  FPerParticleInitForce
 
class  FPerParticlePBDEulerStep
 
class  FPerParticlePBDGroundConstraint
 
class  FPerParticlePBDUpdateFromDeltaPosition
 
class  FPerParticleRule
 
class  FPerShapeData
 
class  FPerShapeDataState
 
struct  FPerShapeDataStateBase
 
class  FPhysicalMaterialManager
 
struct  FPhysicsObject
 
class  FPhysicsObjectCollisionInterface
 
struct  FPhysicsObjectDeleter
 
class  FPhysicsObjectFactory
 
class  FPhysicsObjectInterface
 
class  FPhysicsObjectInternalInterface
 
struct  FPhysicsObjectPairProperty
 
struct  FPhysicsObjectProperty
 
class  FPhysicsRwLock
 
class  FPhysicsSceneGuard
 
class  FPhysicsSimpleMutexLock
 
class  FPhysicsSolverAdvanceTask
 
class  FPhysicsSolverBase
 
class  FPhysicsSolverEvents
 
class  FPhysicsSolverFrozenGTPreSimCallbacks
 
class  FPhysicsSolverProcessPushDataTask
 
class  FPhysicsThreadContext
 
struct  FPhysicsThreadContextScope
 
class  FPhysSpinLock
 
struct  FPropertyInterval
 
struct  FProxyBasePairProperty
 
struct  FProxyBaseProperty
 
class  FPullPhysicsData
 
struct  FPushPhysicsData
 
struct  FQueryFastData
 
struct  FQueryFastDataVoid
 
struct  FQueryShape
 
struct  FRange
 
struct  FRayQueryData
 
class  FReadPhysicsObjectInterface
 
struct  FRemovalData
 
struct  FRemovalDataExt
 
struct  FRemovalEventData
 
struct  FResimDebugInfo
 
class  FRewindData
 
class  FRigidBodyHandle_External
 
class  FRigidBodyHandle_Internal
 
class  FRigidClusteredFlags
 
class  FRigidClustering
 
class  FRigidParticleControlFlags
 Enable/Disable the features on a particle These flags are externally controlled and should not be changed by the solver during the tick. The may be bound directly to settings or game-side object state. These flags should be treated as read-only to the solver. More...
 
struct  FRigidParticleCoreData
 
class  FRigidParticleTransientFlags
 Transient flags for indicating somethings needs to be updated based on a change to the particle Typically some of these flags will be set when something on the particle changes (e.g., when initially created, a joint is connected, etc etc). The flags will be checked and reset by some system during the tick. More...
 
struct  FSATResult
 
struct  FSATSettings
 
class  FSavedManifoldPoint
 The friction data for a manifold point This is the information that needs to be stored between ticks to implement static friction. More...
 
class  FScopedTraceSolverCallback
 
class  FSegmentMesh
 
struct  FSerializedDataBuffer
 
struct  FSerializedMultiPhysicsState
 
class  FShapeDirtyData
 
class  FShapeInstance
 
class  FShapeInstanceProxy
 
class  FShapeOrShapesArray
 
class  FShapePairParticlePairMidPhase
 
struct  FShapesArrayStateBase
 
class  FSharedDebugName
 
class  FSimCallbackCommandObject
 
struct  FSimCallbackInput
 
struct  FSimCallbackInputAndObject
 
struct  FSimCallbackNoInput
 
struct  FSimCallbackNoOutput
 
struct  FSimCallbackOutput
 
class  FSimCallbackOutputHandle
 
class  FSimFactoryModule
 
struct  FSimModuleAnimationData
 
class  FSimModuleTree
 
struct  FSimOutputData
 
struct  FSimpleAerodynamicsConfig
 
class  FSimpleAerodynamicsSim
 
struct  FSimpleDifferentialConfig
 
class  FSimpleDifferentialSim
 
struct  FSimpleEngineConfig
 
class  FSimpleEngineSim
 
struct  FSimpleSteeringConfig
 
class  FSimpleSteeringSim
 
struct  FSimpleSuspensionConfig
 
class  FSimpleSuspensionSim
 
struct  FSimpleThrustConfig
 
class  FSimpleThrustSim
 
struct  FSimpleTireConfig
 
class  FSimpleTireSim
 
struct  FSimpleTransmissionConfig
 
class  FSimpleTransmissionSim
 
struct  FSimpleWheelConfig
 
class  FSimpleWheeledVehicle
 
class  FSimpleWheelSim
 
struct  FSimplex
 
class  FSimTreeUpdates
 
class  FSimulationModuleTypeContainer
 
class  FSimulationSpace
 
class  FSimulationSpaceSettings
 
class  FSingleBuffer
 
class  FSingleParticlePhysicsProxy
 
class  FSingleShapePairCollisionDetector
 Handles collision detection for a pair of simple shapes (i.e., not compound shapes) More...
 
class  FSkinnedTriangleMesh
 
struct  FSleepingData
 
struct  FSleepingEventData
 
class  FSolverBody
 
class  FSolverBodyContainer
 
class  FSolverBreakingEventFilter
 
class  FSolverCollisionEventFilter
 
class  FSolverEventFilters
 
class  FSolverRemovalEventFilter
 
class  FSolverSerializer
 
struct  FSolverTasksPTOnly
 
class  FSolverTrailingEventFilter
 
class  FSpatialAccelerationBroadPhase
 
class  FSpatialAccelerationCache
 
struct  FSpatialAccelerationCacheHandle
 
class  FSpatialAccelerationCollisionDetector
 
struct  FSpatialAccelerationIdx
 
class  FSphereApproximationParticlePairMidPhase
 
struct  FSplitCount
 
struct  FSpringTrace
 
class  FSQHashTable
 
struct  FStabilizeControlConfig
 
class  FStabilizeControlSim
 
struct  FSteeringUtility
 
struct  FStrainedProxyAndRoot
 
class  FStrainedProxyIterator
 
class  FStrainedProxyModifier
 
class  FStrainedProxyRange
 
class  FStrainModifierAccessor
 
struct  FSubStepInfo
 
class  FSuspensionBaseInterface
 
class  FSuspensionConstraint
 
class  FSuspensionConstraintPhysicsProxy
 
struct  FSuspensionLocation
 
struct  FSuspensionTargetPoint
 
struct  FSuspensionTrace
 
struct  FSweepParameters
 
struct  FSweepQueryData
 
struct  FSyncState
 
class  FTaperedCapsule
 
struct  FTaperedCapsuleSpecializeSamplingHelper
 
class  FTaperedCylinder
 
struct  FTaperedCylinderSpecializeSamplingHelper
 
struct  FTargetRotationControlConfig
 
class  FTargetRotationControlSim
 
struct  FThrusterSettings
 Thruster settings. More...
 
class  FThrusterSimModule
 A vehicle component that transmits torque from one source to another, i.e. from an engine or differential to wheels. More...
 
class  FTimeAndDistanceMeasure
 
struct  FTimeResource
 
struct  FTorqueControlConfig
 
class  FTorqueControlSim
 
class  FTorqueSimModule
 
struct  FTorqueSimModuleData
 
class  FTrackedGeometryManager
 
struct  FTrailingData
 
struct  FTrailingDataExt
 
struct  FTrailingEventData
 
struct  FTransmissionOutputData
 
struct  FTransmissionSettings
 
class  FTransmissionSimFactory
 
class  FTransmissionSimModule
 
struct  FTransmissionSimModuleData
 
class  FTransmissionUtility
 
class  FTriangleContactPointData
 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). More...
 
class  FTriangleMesh
 
struct  FTriangleMeshBvDataWithThickness
 
struct  FTriangleMeshBvDataWithThicknessEntry
 
class  FTriangleMeshImplicitObject
 
struct  FTriangleMeshOverlapVisitor
 
struct  FTriangleMeshOverlapVisitorNoMTD
 
struct  FTriangleMeshOverlapVisitorNoMTD< Chaos::FSphere >
 
struct  FTriangleMeshOverlapVisitorNoMTD< FCapsule >
 
struct  FTriangleMeshOverlapVisitorNoMTD< TBox< FReal, 3 > >
 
struct  FTriangleMeshOverlapVisitorNoMTD< TImplicitObjectScaled< Chaos::FSphere > >
 
struct  FTriangleMeshOverlapVisitorNoMTD< TImplicitObjectScaled< FCapsule > >
 
struct  FTriangleMeshOverlapVisitorNoMTD< TImplicitObjectScaled< TBox< FReal, 3 > > >
 
struct  FTriangleMeshRaycastVisitor
 
struct  FTriangleMeshSweepVisitor
 
struct  FTriangleMeshSweepVisitorCCD
 
class  FTriangleRegister
 
struct  FTrimeshBVH
 
class  FTrimeshIndexBuffer
 
class  FTripleBuffer
 
class  FUncheckedHeapAllocator
 
struct  FUniqueIdx
 
struct  FVehicleState
 
class  FVehicleUtility
 
class  FVisitedContactPairsTracker
 
class  FWeakParticleHandle
 
struct  FWeightedInfluenceData
 
struct  FWeightedLatticeBvEntry
 
class  FWeightedLatticeImplicitObject
 
class  FWeightedLatticeImplicitObjectBuilder
 
struct  FWeightedLatticeInfluenceData
 
class  FWheelBaseInterface
 
struct  FWheelOutputData
 
struct  FWheelSettings
 
class  FWheelSimFactory
 
class  FWheelSimModule
 
struct  FWheelSimModuleData
 
struct  FWheelTouchChangeEvent
 
class  FWorldContactPoint
 
class  FWritePhysicsObjectInterface
 
class  GivensRotation
 
class  IBufferResource
 
class  IEventHandler
 
class  IFactoryModule
 
class  IParticleUniqueIndices
 
class  IResimCacheBase
 
class  IRewindCallback
 
class  ISimCallbackObject
 
class  ISimulationModuleBase
 
class  ISpacialDebugDrawInterface
 
class  ISpatialAcceleration
 
class  ISpatialAccelerationCollection
 
struct  ISpatialAccelerationCollectionFactory
 
class  ISpatialVisitor
 
class  ITimeStep
 
class  IVehicleInterface
 
struct  NoEntryInSync
 
struct  NoEntryInSync< THandle, T, false >
 
struct  OrderedEdgeKeyFuncs
 
struct  Pair
 
class  PMatrix
 
class  PMatrix< FReal, 2, 2 >
 
class  PMatrix< FRealDouble, 3, 2 >
 
class  PMatrix< FRealDouble, 3, 3 >
 
class  PMatrix< FRealDouble, 4, 4 >
 
class  PMatrix< FRealSingle, 2, 2 >
 
class  PMatrix< FRealSingle, 3, 2 >
 
class  PMatrix< FRealSingle, 3, 3 >
 
class  PMatrix< FRealSingle, 4, 4 >
 
struct  RealWorldConsts
 
class  SparseMatrix
 
struct  SQMapKeyWithValue
 
class  TAABB
 
struct  TAABBSpecializeSamplingHelper
 
struct  TAABBSpecializeSamplingHelper< T, 2 >
 
struct  TAABBSpecializeSamplingHelper< T, 3 >
 
class  TAABBTree
 
struct  TAABBTreeIntersectionHelper
 
struct  TAABBTreeIntersectionHelper< FQueryFastData, EAABBQueryType::Raycast >
 
struct  TAABBTreeIntersectionHelper< FQueryFastData, EAABBQueryType::Sweep >
 
struct  TAABBTreeIntersectionHelper< FQueryFastDataVoid, EAABBQueryType::Overlap >
 
struct  TAABBTreeLeafArray
 
struct  TAABBTreeNode
 
class  TArrayAsMap
 
class  TArrayCollection
 
class  TArrayCollectionArray
 
class  TArrayCollectionArrayBase
 
class  TArrayFaceND
 
class  TArrayFaceND< T, 3 >
 
class  TArrayND
 
class  TArrayND< T, 3 >
 
class  TArrayNDBase
 
struct  TBasePullData
 
class  TBlockSparseSymmetricLinearSystem
 
class  TBoundingVolume
 
class  TBoundingVolumeHierarchy
 
struct  TBoundsWrapperHelper
 
struct  TBoundsWrapperHelper< TPayloadType, T, false >
 
struct  TBoundsWrapperHelper< TPayloadType, T, true >
 
class  TBox
 
class  TBufferedData
 
struct  TBVCellElement
 
struct  TBVHNode
 
struct  TBVPayloadInfo
 
class  TCArray
 A c-style array of objects with non-shipping bounds checking. More...
 
class  TChaosProperty
 
class  TChaosReadWriteResource
 
struct  TConnectivityEdge
 
class  TConstContainerItemHandle
 
class  TConstHandle
 
class  TConstHandleIterator
 
class  TConstHandleView
 
class  TConstParticleIterator
 
class  TConstParticleView
 
class  TConstraintHandleAllocator
 
class  TContactPoint
 
class  TContainerItemHandle
 
class  TConvexHalfEdgeStructureData
 
struct  TConvexStructureIndexTraits
 
struct  TConvexStructureIndexTraits< uint8 >
 
class  TCorePlane
 
class  TCoreSegment
 
class  TCoreSphere
 
struct  TDataRewindHistory
 
struct  TDefaultAABBTreeStorageTraits
 
class  TDenseMatrix
 
class  TDirtyElementPool
 
class  TDirtyFlags
 
class  TDirtyObjects
 
class  TDynamicParticles
 
struct  TEPAEntry
 
class  TEventContainer
 
class  TGeometryParticle
 
class  TGeometryParticleHandleImp
 
class  TGeometryParticleHandles
 
class  TGeometryParticlesImp
 
struct  TGJKCoreShape
 
struct  TGJKCoreShapeTransformed
 
struct  TGJKShape
 
struct  TGJKShapeTransformed
 
class  TGJKSimplexData
 Internal simplex data for GJK that can also be stored for warm-starting subsequent calls. More...
 
struct  TGJKSupportHelperSIMD
 
struct  TGJKSupportHelperSIMD< T, EGJKTestSpace::SameSpace >
 
struct  TGridPrecisionLimit
 
struct  TGridPrecisionLimit< FRealDouble >
 
struct  TGridPrecisionLimit< FRealSingle >
 
class  THandle
 
class  THandleArray
 
class  THandleData
 
class  THandleHeap
 
class  THandleIterator
 
class  THandleView
 
class  THeightfieldSweepVisitor
 
class  THeightfieldSweepVisitorCCD
 
class  THierarchicalSpatialHash
 
class  TImplicitObjectInstanced
 
class  TImplicitObjectIntersection
 
struct  TImplicitObjectPtrStorage
 
struct  TImplicitObjectPtrStorage< T, d, false >
 
struct  TImplicitObjectPtrStorage< T, d, true >
 
class  TImplicitObjectScaled
 
class  TImplicitObjectTransformed
 
struct  TImplicitTypeInfo
 
struct  TImplicitTypeInfo< FImplicitObjectInstanced >
 
struct  TImplicitTypeInfo< FImplicitObjectScaled >
 
struct  TImplicitTypeInfo< FImplicitObjectUnion >
 
class  TIndexedConstraintContainerSolver
 
class  TIndexedContainerConstraintHandle
 
class  TIntrusiveConstraintHandle
 Base class for constraints that are allocated at permanent memory addresses and inherit the handle. More...
 
class  TKinematicGeometryParticle
 
class  TKinematicGeometryParticleHandleImp
 
class  TKinematicGeometryParticlesImp
 
class  TLeafContainer
 
class  TLeafContainer< TAABBTreeLeafArray< FAccelerationStructureHandle, true, FReal > >
 
class  TMPMGrid
 
class  TMPMTransfer
 
class  TMutexScopeLock
 
class  TObjectPool
 
class  TObjectPoolDeleter
 
class  TOrientedParticles
 
class  TParticleArray
 
class  TParticleHandleBase
 
class  TParticleIterator
 
class  TParticleMapArray
 
class  TParticlePropertyBuffer
 
class  TParticles
 
class  TParticleView
 
struct  TPayloadBoundsElement
 
class  TPBDActiveView
 
class  TPBDConstraintIslandRule
 
class  TPBDGeometryCollectionParticleHandleImp
 
class  TPBDGeometryCollectionParticles
 
class  TPBDIndexedConstraintContainer
 
class  TPBDParticles
 
class  TPBDRigidClusteredParticleHandleImp
 
class  TPBDRigidClusteredParticles
 
class  TPBDRigidParticle
 
class  TPBDRigidParticleHandleImp
 
class  TPBDRigidParticles
 
class  TPBDRigidsEvolution
 
class  TPerCellBoundaryConditions
 
class  TPerCellBuoyancy
 
class  TPerCellGravity
 
class  TPerCellSemiLagrangianAdvection
 
class  TPerShapeDataStateProperty
 
class  TPhysicsSceneGuardScopedRead
 
class  TPhysicsSceneGuardScopedWrite
 
class  TPlane
 
class  TPressureProjection
 
class  TPropertyPool
 
class  TRawEventHandler
 
struct  TRayTriangleIntersectionDefaultToleranceProvider
 
class  TRigidParticles
 
class  TRigidTransform
 
class  TRigidTransform< FReal, 2 >
 
class  TRigidTransform< FRealDouble, 3 >
 
class  TRigidTransform< FRealSingle, 3 >
 
class  TRotation
 
class  TRotation< FRealDouble, 3 >
 
class  TRotation< FRealSingle, 3 >
 
class  TRwFifoLock
 
class  TSerializablePtr
 
class  TShapeProperty
 
class  TShapesArrayState
 
class  TSimCallbackObject
 
class  TSimCallbackOutputHandle
 
class  TSimFactoryAutoRegister
 
class  TSimModuleSettings
 
struct  TSimModuleTypeIsRecursive
 
struct  TSimModuleTypeIsRecursive< T, std::enable_if_t< std::is_invocable_r< FName, decltype(T::RecurseSimType)>::value > >
 
class  TSimpleConstraintContainerSolver
 
class  TSimpleConstraintRule
 
class  TSimpleGeometryParticles
 
class  TSimulationModuleTypeable
 
class  TSimulationModuleTypeable< _To >
 
class  TSimulationModuleTypeable< _To, _From >
 
class  TSimulationModuleTypeableBase
 
struct  TSleepData
 
class  TSmokeEvolution
 
struct  TSOAView
 
struct  TSolverSimMaterialScope
 
struct  TSolverSimMaterialScope< ELockType::Read >
 
struct  TSolverSimMaterialScope< ELockType::Write >
 
struct  TSpatialAccelerationBucketEntry
 
class  TSpatialAccelerationCollection
 
struct  TSpatialAccelerationCollectionHelper
 
struct  TSpatialAccelerationSerializationFactory
 
struct  TSpatialCollectionBucket
 
class  TSpatialHash
 
class  TSpatialHashGridBase
 
class  TSpatialHashGridPoints
 
class  TSpatialRay
 
struct  TSpatialTypeTuple
 
struct  TSpatialTypeTuple< TAcceleration, TRemaining... >
 
struct  TSpatialTypeTupleGetter
 
struct  TSpatialTypeTupleGetter< 0, First, Rest... >
 
struct  TSpatialTypeTupleGetter< Idx, First, Rest... >
 
class  TSpatialVisitor
 
struct  TSpatialVisitorData
 
struct  TSpecializeParticlesHelper
 
struct  TSpecializeParticlesHelper< TParticles< T, d > >
 
class  TSphere
 
struct  TSphereSpecializeSamplingHelper
 
struct  TSphereSpecializeSamplingHelper< T, 2 >
 
struct  TSphereSpecializeSamplingHelper< T, 3 >
 
class  TSQMap
 
struct  TSupportBAtOriginHelperSIMD
 
struct  TSupportBAtOriginHelperSIMD< EGJKTestSpace::SameSpace >
 
class  TTetrahedron
 
class  TThreadCheckedData
 This is a wrapper around a piece of data which adds execution thread access checks. More...
 
class  TThreadedJointConstraintPhysicsProxyBase
 
class  TThreadedSingleParticlePhysicsProxyBase
 
class  TTriangle
 
struct  TTriangleCollisionPoint
 Data returned by TriangleMesh point-triangle and edge-edge queries. More...
 
struct  TTriangleMeshBvData
 
struct  TTriangleMeshBvEntry
 
class  TTripleBufferedData
 
class  TUncheckedFixedAllocator
 A fixed allocator without array bounds checking except in Debug builds. More...
 
class  TUniformGrid
 
class  TUniformGrid< T, 3 >
 
class  TUniformGridBase
 
class  TVector
 
struct  TVector3AndScalar
 
class  TVector< FReal, 4 >
 
class  TVector< FRealDouble, 2 >
 
class  TVector< FRealDouble, 3 >
 
class  TVector< FRealSingle, 2 >
 
class  TVector< FRealSingle, 3 >
 
class  TVector< int32, 2 >
 
class  TVector< T, 3 >
 
struct  TVectorTraits
 
class  TWeightedLatticeImplicitObject
 
class  VectorND
 
struct  VectorTEPAEntry
 

Typedefs

using FContactPoint = TContactPoint< FReal >
 
template<class T , int d>
using TBVHParticles = FBVHParticles
 
typedef TBVHParticles< FReal, 3 > FBVHParticlesFloat3
 
template<class T >
using TCapsule = FCapsule
 
using instead = FCapsuleSpecializeSamplingHelper
 
using conventions = FCCDHelpers
 
using FClusterUnionIndex = int32
 
using FClusterUnionExplicitIndex = int32
 
using use = Private::FCollisionParticlePairKey
 
using FContactPointf = TContactPoint< FRealSingle >
 
using FContactVertexID = int32
 
typedef FPBDCollisionConstraint FRigidBodyPointContactConstraint
 
using FPBDCollisionConstraintMaterial = FPBDCollisionConstraintMaterial
 
typedef FPBDCollisionConstraint FCollisionConstraintBase
 
typedef FPBDCollisionConstraint FRigidBodySweptPointContactConstraint
 
using FContactPointManifold = TCArray< FContactPoint, 4 >
 
using FContactPointLargeManifold = TArray< FContactPoint >
 
using FPBDCollisionConstraintPool = TObjectPool< FPBDCollisionConstraint >
 
using FPBDCollisionConstraintDeleter = TObjectPoolDeleter< FPBDCollisionConstraintPool >
 
using FPBDCollisionConstraintPtr = TUniquePtr< FPBDCollisionConstraint, FPBDCollisionConstraintDeleter >
 
using FParticlePairMidPhasePtr = TUniquePtr< FParticlePairMidPhase >
 
using FParticlePair = TVec2< FGeometryParticleHandle * >
 
using FConstParticlePair = TVec2< const FGeometryParticleHandle * >
 
using FCollisionModifierCallback = TFunction< void(const FCollisionContactModifier &)>
 
using FConvexHalfEdgeStructureDataS32 = TConvexHalfEdgeStructureData< int32 >
 
using FConvexHalfEdgeStructureDataS16 = TConvexHalfEdgeStructureData< int16 >
 
using FConvexHalfEdgeStructureDataU8 = TConvexHalfEdgeStructureData< uint8 >
 
typedef FPBDRigidsSolver FPhysicsSolver
 
using FDynamicParticles = TDynamicParticles< FReal, 3 >
 
template<typename T >
using TEPAWorkingArray = TArray< T, TInlineAllocator< 32 > >
 
using FSolverReal = FRealSingle
 
using SolverVectorRegister = VectorRegister4Float
 
using FSolverVec3 = TVec3< FSolverReal >
 
using FSolverRotation3 = TRotation3< FSolverReal >
 
using FSolverMatrix33 = TMatrix33< FSolverReal >
 
using FSolverBodyPtrPair = TVector< FSolverBody *, 2 >
 
using FPBDRigidParticles = TPBDRigidParticles< FReal, 3 >
 
template<typename T , int32 N>
using TFixedArray = TArray< T, TFixedAllocator< N > >
 
template<typename T , int32 N>
using TUncheckedFixedArray = TArray< T, TUncheckedFixedAllocator< N > >
 
template<typename T >
using TUncheckedArray = TArray< T, FUncheckedHeapAllocator >
 
using FConstraintHandleArray = TArray< FConstraintHandle * >
 
template<typename T , int d>
using TGeometryParticles = TGeometryParticlesImp< T, d, EGeometryParticlesSimType::RigidBodySim >
 
using FGeometryParticles = TGeometryParticles< FReal, 3 >
 
template<typename T , int d>
using TGeometryClothParticles = TGeometryParticlesImp< T, d, EGeometryParticlesSimType::Other >
 
using FGJKSimplexData = TGJKSimplexData< FReal >
 
using FImplicitBox3 = TBox< FReal, 3 >
 
using FImplicitCapsule3 = FCapsule
 
using FImplicitConvex3 = FConvex
 
using FImplicitHeightField3 = FHeightField
 
using FImplicitObject3 = FImplicitObject
 
using FImplicitPlane3 = TPlane< FReal, 3 >
 
using FImplicitSphere3 = TSphere< FReal, 3 >
 
using FTriangle = TTriangle< FReal >
 
using FImplicitObjectPtr = TRefCountPtr< FImplicitObject >
 
using FConstImplicitObjectPtr = TRefCountPtr< const FImplicitObject >
 
using FConvexPtr = TRefCountPtr< FConvex >
 
using FTriangleMeshImplicitObjectPtr = TRefCountPtr< FTriangleMeshImplicitObject >
 
using FLevelSetPtr = TRefCountPtr< FLevelSet >
 
using FMLLevelSetPtr = TRefCountPtr< FMLLevelSet >
 
using FHeightFieldPtr = TRefCountPtr< FHeightField >
 
using FCapsulePtr = TRefCountPtr< FCapsule >
 
using FPlanePtr = TRefCountPtr< FImplicitPlane3 >
 
using FBoxPtr = TRefCountPtr< FImplicitBox3 >
 
using FSpherePtr = TRefCountPtr< FImplicitSphere3 >
 
using FImplicitObjectUnionClusteredPtr = TRefCountPtr< FImplicitObjectUnionClustered >
 
using FImplicitObjectUnionPtr = TRefCountPtr< FImplicitObjectUnion >
 
using FSkinnedTriangleMeshPtr = TRefCountPtr< FSkinnedTriangleMesh >
 
using FImplicitObjectRef = FImplicitObject *
 
using FConstImplicitObjectRef = const FImplicitObject *
 
using FConvexRef = FConvex *
 
using FTriangleMeshImplicitObjectRef = FTriangleMeshImplicitObject *
 
using FLevelSetRef = FLevelSet *
 
using FMLLevelSetRef = FMLLevelSet *
 
using FHeightFieldRef = FHeightField *
 
using FCapsuleRef = FCapsule *
 
using FPlaneRef = FImplicitPlane3 *
 
using FBoxRef = FImplicitBox3 *
 
using FSphereRef = FImplicitSphere3 *
 
using FImplicitObjectUnionClusteredRef = FImplicitObjectUnionClustered *
 
using FImplicitObjectUnionRef = FImplicitObjectUnion *
 
using FSkinnedTriangleMeshRef = FSkinnedTriangleMesh *
 
using FImplicitObjectsArray = TArray< FImplicitObjectPtr >
 
using FAABB3 = TAABB< FReal, 3 >
 
using FParticles = TParticles< FReal, 3 >
 
using FSphere = TSphere< FReal, 3 >
 
using FSpheref = TSphere< FRealSingle, 3 >
 
using FImplicitHierarchyVisitor = TFunctionRef< void(const FImplicitObject *Implicit, const FRigidTransform3 &Transform, const int32 RootObjectIndex, const int32 ObjectIndex, const int32 LeafObjectIndex)>
 
using FImplicitHierarchyVisitorBool = TFunctionRef< bool(const FImplicitObject *Implicit, const FRigidTransform3 &Transform, const int32 RootObjectIndex, const int32 ObjectIndex, const int32 LeafObjectIndex)>
 
typedef TSharedPtr< Chaos::FImplicitObject, ESPMode::ThreadSafeThreadSafeSharedPtr_FImplicitObject
 
typedef TSharedPtr< Chaos::FImplicitObject, ESPMode::NotThreadSafeNotThreadSafeSharedPtr_FImplicitObject
 
template<typename TConcrete >
using TImplicitObjectScaledNonSerializable = TImplicitObjectScaled< TConcrete, false >
 
template<typename T , int d>
using TImplicitObjectScaledGeneric = TImplicitObjectScaled< FImplicitObject >
 
template<typename T , int d>
using TImplicitObjectTransformedNonSerializable = TImplicitObjectTransformed< T, d, false >
 
using FImplicitObjectTransformed = TImplicitObjectTransformed< FReal, 3 >
 
using EImplicitObjectType = uint8
 
using namespace = Private::FPBDIslandConstraintGroupSolver
 
using ISpatialDebugDrawInterface = ISpacialDebugDrawInterface< FReal >
 
using SpatialAccelerationType = uint8
 
typedef FPBDJointSolver FJointSolverGaussSeidel
 
template<typename T , int d>
using TKinematicGeometryParticles = TKinematicGeometryParticlesImp< T, d, EGeometryParticlesSimType::RigidBodySim >
 
using FKinematicGeometryParticles = TKinematicGeometryParticles< FReal, 3 >
 
template<typename T , int d>
using TKinematicGeometryClothParticles = TKinematicGeometryParticlesImp< T, d, EGeometryParticlesSimType::Other >
 
using FParticleUtilitiesPQ = FParticleUtilities_ActorSpace< FParticleSpatialAccessorPQ >
 
using FParticleUtilitiesXR = FParticleUtilities_ActorSpace< FParticleSpatialAccessorXR >
 
using FParticleUtilities = FParticleUtilities_ActorSpace< FParticleSpatialAccessorPQ >
 
using FParticleUtilitiesGT = FParticleUtilities_ActorSpace< FParticleSpatialAccessorXR >
 
typedef TVector< IPhysicsProxyBase *, 2 > FProxyBasePair
 
typedef TVector< FPhysicsObject *, 2 > FPhysicsObjectPair
 
using FDirtyChaosPropertyFlags = TDirtyFlags< EChaosPropertyFlags >
 
using FShapeDirtyFlags = TDirtyFlags< EShapeFlags >
 
using FPropertyIdx = int32
 
template<typename T , int d>
using TPBDGeometryCollectionParticle = FPBDGeometryCollectionParticle
 
template<typename T , int d>
using TGeometryParticleHandle = TGeometryParticleHandleImp< T, d, true >
 
using FGeometryParticleHandle = TGeometryParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TTransientGeometryParticleHandle = TGeometryParticleHandleImp< T, d, false >
 
using FTransientGeometryParticleHandle = TTransientGeometryParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TKinematicGeometryParticleHandle = TKinematicGeometryParticleHandleImp< T, d, true >
 
using FKinematicGeometryParticleHandle = TKinematicGeometryParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TTransientKinematicGeometryParticleHandle = TKinematicGeometryParticleHandleImp< T, d, false >
 
using FTransientKinematicGeometryParticleHandle = TTransientKinematicGeometryParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TPBDRigidParticleHandle = TPBDRigidParticleHandleImp< T, d, true >
 
using FPBDRigidParticleHandle = TPBDRigidParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TTransientPBDRigidParticleHandle = TPBDRigidParticleHandleImp< T, d, false >
 
using FTransientPBDRigidParticleHandle = TTransientPBDRigidParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TPBDRigidClusteredParticleHandle = TPBDRigidClusteredParticleHandleImp< T, d, true >
 
using FPBDRigidClusteredParticleHandle = TPBDRigidClusteredParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TTransientPBDRigidClusteredParticleHandle = TPBDRigidClusteredParticleHandleImp< T, d, false >
 
using FTransientPBDRigidClusteredParticleHandle = TTransientPBDRigidClusteredParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TPBDGeometryCollectionParticleHandle = TPBDGeometryCollectionParticleHandleImp< T, d, true >
 
using FPBDGeometryCollectionParticleHandle = TPBDGeometryCollectionParticleHandle< FReal, 3 >
 
template<typename T , int d>
using TTransientPBDGeometryCollectionParticleHandle = TPBDGeometryCollectionParticleHandleImp< T, d, false >
 
using FGeometryParticle = TGeometryParticle< FReal, 3 >
 
using FKinematicGeometryParticle = TKinematicGeometryParticle< FReal, 3 >
 
using FPBDRigidParticle = TPBDRigidParticle< FReal, 3 >
 
template<EThreadContext Id>
using TThreadParticle = std::conditional_t< Id==EThreadContext::External, FGeometryParticle, FGeometryParticleHandle >
 
template<EThreadContext Id>
using TThreadKinematicParticle = std::conditional_t< Id==EThreadContext::External, FKinematicGeometryParticle, FKinematicGeometryParticleHandle >
 
template<EThreadContext Id>
using TThreadRigidParticle = std::conditional_t< Id==EThreadContext::External, FPBDRigidParticle, FPBDRigidParticleHandle >
 
using FPBDParticles = TPBDParticles< FReal, 3 >
 
using FRigidBodyContactConstraintsPostComputeCallback = TFunction< void()>
 
using FRigidBodyContactConstraintsPostApplyCallback = TFunction< void(const FReal Dt, const TArray< FPBDCollisionConstraintHandle * > &)>
 
using FRigidBodyContactConstraintsPostApplyPushOutCallback = TFunction< void(const FReal Dt, const TArray< FPBDCollisionConstraintHandle * > &, bool)>
 
using FJointConstraintDirtyFlags = TDirtyFlags< EJointConstraintFlags >
 
using FJointPreApplyCallback = TFunction< void(const FReal Dt, const TArray< FPBDJointConstraintHandle * > &InConstraintHandles)>
 
using FJointPostApplyCallback = TFunction< void(const FReal Dt, const TArray< FPBDJointConstraintHandle * > &InConstraintHandles)>
 
using FJointBreakCallback = TFunction< void(FPBDJointConstraintHandle *ConstraintHandle)>
 
typedef TConnectivityEdge< FRealFConnectivityEdge
 
typedef TArray< FConnectivityEdgeFConnectivityEdgeArray
 
using FPBDRigidClusteredParticles = TPBDRigidClusteredParticles< FReal, 3 >
 
using FPBDRigidsEvolution = FPBDRigidsEvolutionGBF
 
using FPBDRigidsSolver = FPBDRigidsSolver
 
using FEventManager = FEventManager
 
using FPBDRigidsEvolutionCallback = TFunction< void(FReal Dt)>
 
using FPBDRigidsEvolutionIslandCallback = TFunction< void(int32 Island)>
 
using FPBDRigidsEvolutionInternalHandleCallback = TFunction< void(const FGeometryParticleHandle *OldParticle, FGeometryParticleHandle *NewParticle)>
 
using FParticleUniqueIndices = FParticleUniqueIndicesMultithreaded
 
using FSuspensionConstraintDirtyFlags = TDirtyFlags< ESuspensionConstraintFlags >
 
using FMaterialArray = THandleArray< FChaosPhysicsMaterial >
 
using FChaosMaterialHandle = FMaterialArray::FHandle
 
using FChaosConstMaterialHandle = FMaterialArray::FConstHandle
 
using FMaterialMaskArray = THandleArray< FChaosPhysicsMaterialMask >
 
using FChaosMaterialMaskHandle = FMaterialMaskArray::FHandle
 
using FChaosConstMaterialMaskHandle = FMaterialMaskArray::FConstHandle
 
using FMaterialCreatedDelegate = FOnMaterialCreated::FDelegate
 
using FMaterialDestroyedDelegate = FOnMaterialDestroyed::FDelegate
 
using FMaterialUpdatedDelegate = FOnMaterialUpdated::FDelegate
 
using FMaterialMaskCreatedDelegate = FOnMaterialMaskCreated::FDelegate
 
using FMaterialMaskDestroyedDelegate = FOnMaterialMaskDestroyed::FDelegate
 
using FMaterialMaskUpdatedDelegate = FOnMaterialMaskUpdated::FDelegate
 
using FPhysicsObjectHandle = FPhysicsObject *
 
using FConstPhysicsObjectHandle = const FPhysicsObject *
 
using FPhysicsObjectId = int32
 
using FPhysicsObjectUniquePtr = TUniquePtr< FPhysicsObject, FPhysicsObjectDeleter >
 
using FPhysicsObjectCollisionInterface_External = FPhysicsObjectCollisionInterface< EThreadContext::External >
 
using FPhysicsObjectCollisionInterface_Internal = FPhysicsObjectCollisionInterface< EThreadContext::Internal >
 
using FReadPhysicsObjectInterface_External = FReadPhysicsObjectInterface< EThreadContext::External >
 
using FReadPhysicsObjectInterface_Internal = FReadPhysicsObjectInterface< EThreadContext::Internal >
 
using FWritePhysicsObjectInterface_External = FWritePhysicsObjectInterface< EThreadContext::External >
 
using FWritePhysicsObjectInterface_Internal = FWritePhysicsObjectInterface< EThreadContext::Internal >
 
template<typename T >
using TSegmentMesh = FSegmentMesh
 
using FSerializedDataBufferPtr = TUniquePtr< FSerializedDataBuffer >
 
using FShapesArray = TArray< TUniquePtr< FPerShapeData >, TInlineAllocator< 1 > >
 
using FShapeInstanceProxyPtr = TUniquePtr< FShapeInstanceProxy >
 
using FConstShapeInstanceProxyPtr = TUniquePtr< const FShapeInstanceProxy >
 
using FShapeInstanceProxyArray = TArray< FShapeInstanceProxyPtr, TInlineAllocator< 1 > >
 
using FShapeInstancePtr = TUniquePtr< FShapeInstance >
 
using FConstShapeInstancePtr = TUniquePtr< const FShapeInstance >
 
using FShapeInstanceArray = TArray< FShapeInstancePtr, TInlineAllocator< 1 > >
 
template<EThreadContext Id>
using TThreadShapeInstance = std::conditional_t< Id==EThreadContext::External, FShapeInstanceProxy, FShapeInstance >
 
template<EThreadContext Id>
using TThreadShapeInstanceArray = std::conditional_t< Id==EThreadContext::External, FShapeInstanceProxyArray, FShapeInstanceArray >
 
using IDefaultChaosSpatialAcceleration = ISpatialAcceleration< FAccelerationStructureHandle, FReal, 3 >
 
using FTetrahedron = TTetrahedron< FReal >
 
template<typename T >
using TTriangleMesh = FTriangleMesh
 
typedef int32 FEventID
 
typedef IEventHandlerFEventHandlerPtr
 
using FEventContainerBasePtr = FEventContainerBase *
 
typedef TArray< FCollidingDataFCollisionDataArray
 
typedef TArray< FBreakingDataFBreakingDataArray
 
typedef TArray< FTrailingDataFTrailingDataArray
 
typedef TArray< FRemovalDataFRemovalDataArray
 
typedef TArray< FSleepingDataFSleepingDataArray
 
typedef TArray< FCrumblingDataFCrumblingDataArray
 
template<typename T >
using TDataGT = TThreadCheckedData< T, FCheckGameplayThread >
 
template<typename T >
using TDataPT = TThreadCheckedData< T, FCheckPhysicsThread >
 
using EThreadingMode = EChaosThreadingMode
 
using FPhysSceneLockNonTransactional = FPhysicsRwLock
 
using FPhysSceneLock = FPhysSceneLockNonTransactional
 
using FPhysicsSceneGuardScopedWrite = TPhysicsSceneGuardScopedWrite< FPhysSceneLock >
 
using FPhysicsSceneGuardScopedRead = TPhysicsSceneGuardScopedRead< FPhysSceneLock >
 
using FJointConstraintHandle_External = TThreadedJointConstraintPhysicsProxyBase< true >
 
using FJointConstraintHandle_Internal = TThreadedJointConstraintPhysicsProxyBase< false >
 
using FVec2 = TVector< FReal, 2 >
 
using FVec3 = TVector< FReal, 3 >
 
using FVec4 = TVector< FReal, 4 >
 
using FRotation3 = TRotation< FReal, 3 >
 
using FMatrix33 = PMatrix< FReal, 3, 3 >
 
using FMatrix44 = PMatrix< FReal, 4, 4 >
 
using FRigidTransform3 = TRigidTransform< FReal, 3 >
 
using FVec2f = TVector< FRealSingle, 2 >
 
using FVec3f = TVector< FRealSingle, 3 >
 
using FRotation3f = TRotation< FRealSingle, 3 >
 
using FRigidTransform3f = TRigidTransform< FRealSingle, 3 >
 
using FTransformPair = TVector< FRigidTransform3, 2 >
 
using FAABB3f = TAABB< FRealSingle, 3 >
 
using FRigidTransformRealSingle3 = TRigidTransform< FRealSingle, 3 >
 
template<typename T >
using TVec2 = TVector< T, 2 >
 
template<typename T >
using TVec3 = TVector< T, 3 >
 
template<typename T >
using TVec4 = TVector< T, 4 >
 
template<typename T >
using TRotation3 = TRotation< T, 3 >
 
template<typename T >
using TMatrix33 = PMatrix< T, 3, 3 >
 
template<typename T , int d = 3>
using TPlaneConcrete = TCorePlane< T, d >
 
template<class T >
using TSegment = TCoreSegment< T >
 
using FCoreSphere = TCoreSphere< FReal, 3 >
 
using FCoreSpheref = TCoreSphere< FRealSingle, 3 >
 
typedef PMatrix< double, 3, 3 > PMatrix33d
 
template<typename T >
using TRequiresDestructor = std::enable_if_t<!std::is_trivially_destructible_v< T > >
 
template<typename T >
using TTrivialDestruct = std::enable_if_t< std::is_trivially_destructible_v< T > >
 
using FRealDouble = double
 
using FRealSingle = float
 
using FReal = FRealDouble
 
using FModuleNetDataArray = TArray< TSharedPtr< FModuleNetData > >
 

Enumerations

enum class  EQueryInfo : uint8 { GatherAll , IsBlocking , IsAnything }
 
enum class  EThreadQueryContext : uint8 { GTData , PTDataWithGTObjects , PTOnlyData }
 
enum class  ESetPrevNextDataMode { Prev , Next }
 
enum  EPreconditionerType { Diagonal = 0 , IncompleteCholesky = 1 }
 
enum class  EResimFrameValidation : int32 { FullValidation = 0 , IslandValidation = 1 , TriggerParticleValidation = 2 }
 
enum class  EAABBQueryType { Raycast , Sweep , Overlap }
 
enum class  EClusterUnionOperation { Add , AddReleased , Remove , UpdateChildToParent }
 
enum class  EClusterUnionOperationTiming { Never , Defer , Immediate }
 
enum class  EUpdateClusterUnionPropertiesFlags : int32 {
  None = 0 , RecomputeMassOrientation = 1 << 0 , ForceGenerateConnectionGraph = 1 << 1 , IncrementalGenerateConnectionGraph = 1 << 2 ,
  UpdateKinematicProperties = 1 << 3 , ForceGenerateGeometry = 1 << 4 , IncrementalGenerateGeometry = 1 << 5 , ConnectivityCheck = 1 << 6 ,
  All = RecomputeMassOrientation | ForceGenerateConnectionGraph | UpdateKinematicProperties | ForceGenerateGeometry | ConnectivityCheck
}
 
enum class  EClusterUnionConnectivityOperation : int8 { Add , Remove }
 
enum class  EClusterUnionGeometryOperation : int8 { Add , Remove , Refresh }
 
enum class  ECollisionConstraintFlags : uint32 { CCF_None = 0x0 , CCF_BroadPhaseIgnoreCollisions = 0x1 , CCF_SmoothEdgeCollisions = 0x2 , CCF_DummyFlag }
 Flags for user-control over per-particle collision behaviour. More...
 
enum  { ChaosNumExtraFilterBits = 6 }
 
enum  { ChaosNumCollisionChannelBits = 5 }
 
enum class  ECollisionVisitorResult { Stop , Continue }
 Return value in collision visitors to indicate whether we should continue visiting for stop. More...
 
enum class  ECollisionVisitorFlags : uint8 {
  VisitActiveAwake = 0 , VisitSleeping = 1 << 1 , VisitDisabled = 1 << 2 , VisitExpired = 1 << 3 ,
  VisitDefault = VisitActiveAwake | VisitSleeping , VisitAllCurrent = VisitActiveAwake | VisitSleeping | VisitDisabled , VisitAllCurrentAndExpired = VisitActiveAwake | VisitSleeping | VisitDisabled | VisitExpired
}
 
enum class  EContactPointType : int8 {
  Unknown , VertexPlane , EdgeEdge , PlaneVertex ,
  VertexVertex
}
 Used in FContactPoint to indicate whether the contact is vertex-plane, edge-edge, etc. More...
 
enum  EParticlePairMidPhaseType : int8 { Generic , ShapePair , SphereApproximation }
 
enum class  ECollisionCCDType { Disabled , Enabled }
 Whether we should run CCD (swept collision) or not. More...
 
enum  ECollisionConstraintDirection { Particle0ToParticle1 , Particle1ToParticle0 , NoRestingDependency }
 The resting directionality of a contact constraint for use in constraint solver ordering. More...
 
enum class  EFilterFlags : uint8 {
  None = 0b00000000 , SimpleCollision = 0b00000001 , ComplexCollision = 0b00000010 , CCD = 0b00000100 ,
  ContactNotify = 0b00001000 , StaticShape = 0b00010000 , ModifyContacts = 0b00100000 , KinematicKinematicPairs = 0b01000000 ,
  All = 0xFF
}
 
enum class  ECollisionUpdateType { Any , Deepest }
 
enum class  ECollisionModifierResult { Unchanged , Modified , Disabled }
 
enum class  EContactShapesType : int8 {
  Unknown , SphereSphere , SphereCapsule , SphereBox ,
  SphereConvex , SphereTriMesh , SphereHeightField , SpherePlane ,
  CapsuleCapsule , CapsuleBox , CapsuleConvex , CapsuleTriMesh ,
  CapsuleHeightField , BoxBox , BoxConvex , BoxTriMesh ,
  BoxHeightField , BoxPlane , ConvexConvex , ConvexTriMesh ,
  ConvexHeightField , GenericConvexConvex , LevelSetLevelSet , NumShapesTypes
}
 
enum class  EOneWayInteractionPairCollisionMode { IgnoreCollision , NormalCollision , SphereCollision }
 
enum class  EChaosPhysicsMaterialSoftCollisionMode : uint8 { None , RelativeThickness , AbsoluteThickness }
 
enum class  EEPAResult {
  Ok , MaxIterations , Degenerate , BadInitialSimplex ,
  NoValidContact
}
 
enum  EventEmitterFlag { EmptyDispatcher = 0 , OwnDispatcher = 1 , GlobalDispatcher = 2 , BothDispatcher = 3 }
 
enum class  EMultiBufferMode : uint8 {
  Undefined = 0 , Single , Double , Triple ,
  TripleGuarded
}
 
enum  EAsyncBlockMode { BlockOnlyPastFrames = 0 , BlockForBestInterpolation = 1 , DoNoBlock = 2 }
 
enum class  EThreadingModeTemp : uint8 { DedicatedThread , TaskGraph , SingleThread }
 
enum class  EResimType : uint8 { FullResim = 0 , ResimAsFollower = 1 }
 
enum class  EParticleType : uint8 {
  Static , Kinematic , Rigid , Clustered ,
  StaticMesh , SkeletalMesh , GeometryCollection , Unknown
}
 
enum class  EGeometryParticlesSimType { RigidBodySim , Other }
 
enum class  ESyncState : uint8 { InSync , HardDesync }
 
enum class  EInternalClusterType : uint8 { None , KinematicOrStatic , Dynamic , ClusterUnion }
 
enum class  EGeometryParticleListMask {
  None = 0 , StaticParticles = 1 << 0 , StaticDisabledParticles = 1 << 1 , KinematicParticles = 1 << 2 ,
  KinematicDisabledParticles = 1 << 3 , DynamicDisabledParticles = 1 << 4 , DynamicParticles = 1 << 5 , DynamicKinematicParticles = 1 << 6 ,
  ClusteredParticles = 1 << 7 , GeometryCollectionParticles = 1 << 8 , StaticGeometryCollectionArray = 1 << 9 , KinematicGeometryCollectionArray = 1 << 10 ,
  SleepingGeometryCollectionArray = 1 << 11 , DynamicGeometryCollectionArray = 1 << 12 , ActiveParticlesMapArray = 1 << 13 , TransientDirtyMapArray = 1 << 14 ,
  MovingKinematicsMapArray = 1 << 15 , StaticClusteredMapArray = 1 << 16 , KinematicClusteredMapArray = 1 << 18 , DynamicClusteredMapArray = 1 << 19 ,
  ResimActiveParticlesMapArray = 1 << 20 , ResimDynamicParticles = 1 << 21 , ResimDynamicKinematicParticles = 1 << 22 , ResimStaticParticles = 1 << 23 ,
  ResimKinematicParticles = 1 << 24
}
 
enum  EGJKTestSpace { SameSpace , ALocalSpace }
 
enum class  EGJKDistanceResult { Separated , Contact , DeepContact }
 
enum class  ESpatialAcceleration : SpatialAccelerationType {
  BoundingVolume , AABBTree , AABBTreeBV , Collection ,
  Unknown
}
 
enum class  EJointSolverConstraintUpdateType {
  None , Linear_Point , Linear_Spherical , Linear_Cylindrical ,
  Linear_Planar , Linear_SphericalDrive , Linear_CircularDrive , Linear_AxialDrive ,
  Angular_Twist , Angular_Cone , Angular_SingleLockedSwing , Angular_SingleLimitedSwing ,
  Angular_DualConeSwing , Angular_Locked , Angular_TwistDrive , Angular_ConeDrive ,
  Angular_SwingDrive , Angular_SLerpDrive
}
 
enum class  EKinematicTargetMode { None , Reset , Position , Velocity }
 
enum class  EObjectStateType : int8 {
  Uninitialized = 0 , Sleeping = 1 , Kinematic = 2 , Static = 3 ,
  Dynamic = 4 , Count
}
 
enum class  EChaosProperty : uint32 { NumProperties }
 
enum class  EChaosPropertyFlags : uint32 { DummyFlag }
 
enum class  EShapeProperty : uint32 { NumShapeProperties }
 
enum class  EShapeFlags : uint32 { DummyFlag }
 
enum class  EWakeEventEntry : uint8 { None , Awake , Sleep }
 
enum class  ERemoveParticleBehavior : uint8 { RemoveAtSwap , Remove }
 
enum class  EChaosCollisionTraceFlag : int8 {
  Chaos_CTF_UseDefault , Chaos_CTF_UseSimpleAndComplex , Chaos_CTF_UseSimpleAsComplex , Chaos_CTF_UseComplexAsSimple ,
  Chaos_CTF_MAX
}
 
enum class  EConstraintType {
  NoneType = 0 , JointConstraintType = 1 , SpringConstraintType = 2 , SuspensionConstraintType = 3 ,
  CharacterGroundConstraintType = 4
}
 
enum class  EJointConstraintFlags : uint64_t {
  JointTransforms = static_cast<uint64_t>(1) << 0 , CollisionEnabled = static_cast<uint64_t>(1) << 1 , Projection = static_cast<uint64_t>(1) << 2 , ParentInvMassScale = static_cast<uint64_t>(1) << 3 ,
  LinearBreakForce = static_cast<uint64_t>(1) << 4 , AngularBreakTorque = static_cast<uint64_t>(1) << 5 , UserData = static_cast<uint64_t>(1) << 6 , LinearDrive = static_cast<uint64_t>(1) << 7 ,
  AngularDrive = static_cast<uint64_t>(1) << 8 , Stiffness = static_cast<uint64_t>(1) << 9 , Limits = static_cast<uint64_t>(1) << 10 , LinearViolationCallbackThreshold = static_cast<uint64_t>(1) << 11 ,
  AngularViolationCallbackThreshold = static_cast<uint64_t>(1) << 12 , DummyFlag
}
 
enum class  EJointMotionType : int32 { Free , Limited , Locked }
 
enum class  EJointForceMode : int32 { Acceleration , Force }
 
enum class  EPlasticityType : int32 { Free , Shrink , Grow }
 
enum class  EJointAngularConstraintIndex : int32 { Twist , Swing2 , Swing1 }
 
enum class  EJointCylindricalPositionConstraintType : int32 { Axial , Radial }
 
enum class  EMassOffsetType : uint8 { None = 0 , Position = 1 << 0 , Rotation = 1 << 1 }
 
enum class  EInertiaOperations : uint8 { None = 0 , LocalInertiaDropOffDiagonalTerms = 1 << 0 }
 
enum class  EDamageEvaluationModel : uint8 { StrainFromDamageThreshold , StrainFromMaterialStrengthAndConnectivity }
 
enum class  ESuspensionConstraintFlags : uint64_t {
  Location = 0 , Enabled = static_cast<uint64_t>(1) << 1 , Target = static_cast<uint64_t>(1) << 2 , HardstopStiffness = static_cast<uint64_t>(1) << 3 ,
  HardstopVelocityCompensation = static_cast<uint64_t>(1) << 4 , SpringPreload = static_cast<uint64_t>(1) << 5 , SpringStiffness = static_cast<uint64_t>(1) << 6 , SpringDamping = static_cast<uint64_t>(1) << 7 ,
  MinLength = static_cast<uint64_t>(1) << 8 , MaxLength = static_cast<uint64_t>(1) << 9 , Axis = static_cast<uint64_t>(1) << 10 , Normal = static_cast<uint64_t>(1) << 11 ,
  DummyFlag
}
 
enum  EPendingSpatialDataOperation : uint8 { Delete , Add , Update }
 
enum class  ESleepType : uint8 { MaterialSleep , NeverSleep }
 
enum class  ESATFeatureType { None , Plane , Edge , Vertex }
 
enum class  ESerializedDataContext : uint8 { Invalid , Internal , External , Both }
 
enum class  ESimCallbackOptions : uint16 {
  None = 0 , Presimulate = 1 << 0 , MidPhaseModification = 1 << 1 , CCDModification = 1 << 2 ,
  ContactModification = 1 << 3 , StrainModification = 1 << 5 , ParticleRegister = 1 << 6 , ParticleUnregister = 1 << 7 ,
  RunOnFrozenGameThread = 1 << 8 , Rewind = 1 << 9 , PhysicsObjectUnregister = 1 << 10 , PreIntegrate = 1 << 11 ,
  PostIntegrate = 1 << 12 , PreSolve = 1 << 13 , PostSolve = 1 << 14
}
 
enum  ESpatialAccelerationCollectionBucketInnerIdx { Default = 0 , Dynamic = 1 , DefaultQueryOnly = 2 , DynamicQueryOnly = 3 }
 
enum  EStrainTypes : uint8 { InternalStrain = 1 << 0 , ExternalStrain = 1 << 1 , CollisionStrain = 1 << 2 }
 
enum class  EEventType : int32 {
  Collision = 0 , Breaking = 1 , Trailing = 2 , Sleeping = 3 ,
  Removal = 4 , Crumbling = 5
}
 
enum class  EThreadContext { External , Internal }
 
enum class  ELockType : uint8 { Read , Write }
 
enum  EDesyncResult { InSync , Desync , NeedInfo }
 
enum class  EAerofoilType : uint8 { Fixed = 0 , Wing , Rudder , Elevator }
 
enum class  EAerofoil : uint8 { Fixed = 0 , Wing , Rudder , Elevator }
 
enum  eSimModuleState { Disabled , Enabled }
 
enum  eSimModuleTypeFlags { NonFunctional = (1 << 0) , Raycast = (1 << 1) , TorqueBased = (1 << 2) , Velocity = (1 << 3) }
 
enum  EWheelAxis { X , Y }
 
enum class  ESteerType : uint8 { SingleAngle , AngleRatio , Ackermann }
 
enum class  EThrustType : uint8 {
  Fixed = 0 , Wing , Rudder , Elevator ,
  HelicopterRotor
}
 
enum  ETransmissionType : uint8 { Manual , Automatic }
 
enum  EDifferentialType : uint8 { UndefinedDrive , AllWheelDrive , FrontWheelDrive , RearWheelDrive }
 

Functions

void CleanTrimesh (TArray< FVector3f > &InOutVertices, TArray< int32 > &InOutIndices, TArray< int32 > *OutOptFaceRemap, TArray< int32 > *OutOptVertexRemap)
 
template<typename T , int d>
void DrawNodeRecursive (ISpacialDebugDrawInterface< T > *InInterface, const TBVHNode< T, d > &InNode, const TArray< TBVHNode< T, d > > &InAllNodes)
 
template<class OBJECT_ARRAY , class T , int d, typename TPayloadType >
TArray< int32MakeNewLeaf (const OBJECT_ARRAY &Objects, const TArray< int32 > &AllObjects, const TArray< int32 > *)
 
template<class OBJECT_ARRAY , class T , int d, typename TPayloadType >
TBoundingVolume< TPayloadType, T, d > MakeNewLeaf (const OBJECT_ARRAY &Objects, const TArray< int32 > &AllObjects, const TBoundingVolume< TPayloadType, T, d > *)
 
template<class OBJECT_ARRAY , typename TPayloadType , class T , int d>
TArray< int32FindAllIntersectionsLeafHelper (const TArray< int32 > &Leaf, const TVector< T, d > &Point)
 
template<class OBJECT_ARRAY , typename TPayloadType , class T , int d>
TArray< int32FindAllIntersectionsLeafHelper (const TBoundingVolume< TPayloadType, T, d > &Leaf, const TVector< T, d > &Point)
 
template<typename T , int d>
bool IntersectsHelper (const TAABB< T, d > &WorldSpaceBox, const TAABB< T, d > &LocalBox)
 
template<typename T , int d>
bool IntersectsHelper (const TAABB< T, d > &WorldSpaceBox, const TSpatialRay< T, d > &Ray)
 
template<class OBJECT_ARRAY , typename TPayloadType , typename T , int d, typename QUERY_OBJECT >
TArray< int32FindAllIntersectionsLeafHelper (const TArray< int32 > &Leaf, const QUERY_OBJECT &QueryObject)
 
template<class OBJECT_ARRAY , typename TPayloadType , class T , int d, typename QUERY_OBJECT >
TArray< int32FindAllIntersectionsLeafHelper (const TBoundingVolume< TPayloadType, T, d > &Leaf, const QUERY_OBJECT &QueryObject)
 
template<typename T , int d>
void AccumulateNextLevelCount (const TAABB< T, d > &Box, const TVector< T, d > &MidPoint, FSplitCount< d > &Counts)
 
template<typename OBJECT_ARRAY , typename TPayloadType , typename T , int d>
void FixupLeafObj (const OBJECT_ARRAY &Objects, TArray< TBoundingVolume< TPayloadType, T, d > > &Leafs)
 
template<typename OBJECT_ARRAY >
void FixupLeafObj (const OBJECT_ARRAY &Objects, TArray< TArray< int32 > > &Leafs)
 
FConvexHalfEdgeStructureDataS16 MakeBoxStructureData ()
 
bool CCDConstraintSortPredicate (const FCCDConstraint *Constraint0, const FCCDConstraint *Constraint1)
 
FString ToString (const EObjectStateType ObjectState)
 
FString ToString (const FRotation3 &V)
 
FString ToString (const FRotation3f &V)
 
FString ToString (const FVec3 &V)
 
FString ToString (const FVec3f &V)
 
FString ToString (const TBitArray<> &BitArray)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::CreateNewClusterUnion"), STAT_CreateNewClusterUnion, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::DestroyClusterUnion"), STAT_DestroyClusterUnion, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::ForceRecreateClusterUnionSharedGeometry"), STAT_ForceRecreateClusterUnionSharedGeometry, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::ClaimNextUnionIndex"), STAT_ClaimNextUnionIndex, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::AddPendingExplicitIndexOperation"), STAT_AddPendingExplicitIndexOperation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::AddPendingClusterIndexOperation"), STAT_AddPendingClusterIndexOperation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::FlushPendingOperations"), STAT_FlushPendingOperations, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::HandleAddOperation"), STAT_HandleAddOperation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::DeferredClusterUnionUpdate"), STAT_DeferredClusterUnionUpdate, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::HandleDeferredClusterUnionUpdateProperties"), STAT_HandleDeferredClusterUnionUpdateProperties, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::HandleRemoveOperation"), STAT_HandleRemoveOperation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::HandleRemoveOperationWithClusterLookup"), STAT_HandleRemoveOperationWithClusterLookup, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::UpdateClusterUnionProperties"), STAT_UpdateClusterUnionProperties, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::GenerateInterclusterEdgesForParticle"), STAT_GenerateInterclusterEdgesForParticle, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::GenerateInterclusterEdgesBetweenParticles"), STAT_GenerateInterclusterEdgesBetweenParticles, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::FlushIncrementalConnectivityGraphOperations"), STAT_FlushIncrementalConnectivityGraphOperations, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::ForceRegenerateGeometry"), STAT_ForceRegenerateGeometry, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::FlushIncrementalGeometryOperations"), STAT_FlushIncrementalGeometryOperations, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::GetOrCreateClusterUnionIndexFromExplicitIndex"), STAT_GetOrCreateClusterUnionIndexFromExplicitIndex, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::FindClusterUnionIndexFromParticle"), STAT_FindClusterUnionIndexFromParticle, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::UpdateClusterUnionParticlesChildToParent"), STAT_UpdateClusterUnionParticlesChildToParent, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionManager::HandleUpdateChildToParentOperation"), STAT_HandleUpdateChildToParentOperation, STATGROUP_Chaos)
 
template<typename T_CONVEX >
FContactPoint CapsuleConvexContactPointImpl (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const T_CONVEX &Convex, const FRigidTransform3 &ConvexTransform)
 
FContactPoint CapsuleConvexContactPoint (const FImplicitCapsule3 &Capsule, const FRigidTransform3 &CapsuleTransform, const FImplicitObject &Object, const FRigidTransform3 &ConvexTransform)
 
void AddCapsuleTriangleParallelEdgeManifoldContacts (const FVec3 &P0, const FVec3 &P1, const FVec3 &EdgeP0, const FVec3 &EdgeP1, const FReal R, const FReal RejectDistanceSq, const FReal NormalToleranceSq, FContactPointManifold &OutContactPoints)
 
bool InRangeClosed (const FReal V, const FReal RangeMin, const FReal RangeMax)
 
bool InRangeOpen (const FReal V, const FReal RangeMin, const FReal RangeMax)
 
void ConstructCapsuleTriangleOneShotManifold2 (const FImplicitCapsule3 &Capsule, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
FReal CalculateEdgePlaneTolarance (const FGeometryParticleHandle *Particle)
 
FReal CalculateEdgePointBarycentricTolarance (const FGeometryParticleHandle *Particle)
 
bool CollisionsHasTriangleEdgeContacts (const FPBDCollisionConstraint &Collision, const int32 MeshParticleIndex)
 
FVec3 CalculateTriangleNormal (const FVec3 Vertices[])
 
template<typename TFunctor >
void MeshCastHelper (const FImplicitObject &Geom, const TFunctor &Func)
 
void GetTransformedMeshTriangle (const FImplicitObject *InImplicit, const int32 TriangleIndex, const FRigidTransform3 &InTransform, FVec3 OutVertices[], int32 OutVertexIndices[])
 
template<typename GeometryB >
FContactPoint GJKImplicitSweptContactPoint (const FImplicitObject &A, const FRigidTransform3 &AStartTransform, const GeometryB &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &OutTOI)
 
void ComputeSweptContactPhiAndTOIHelper (const FReal DirDotNormal, const FReal &Length, const FReal &HitTime, FReal &OutTOI, FReal &OutPhi)
 
void ComputeSweptContactPhiAndTOIHelper (const FVec3 &ContactNormal, const FVec3 &Dir, const FReal &Length, const FReal &HitTime, FReal &OutTOI, FReal &OutPhi)
 
bool ComputeSweptContactStartAndEndPhi (const FReal TOI, const FReal Phi, const FReal DirDotNormal, const FReal Length, FReal &StartPhi, FReal &EndPhi)
 
FReal ComputeSweptContactTimeToTargetPhi (const FReal StartPhi, const FReal EndPhi, const FReal IgnorePhi, const FReal TargetPhi)
 
bool ComputeSweptContactTOIAndPhiAtTargetPenetration (const FReal DirDotNormal, const FReal SweepLength, const FReal HitDistance, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &OutTOI, FReal &OutPhi)
 Given a sweep result, calculate the sweep time at which the penetration depth will be TargetPenetration This is based on the initial and final contact separation from the sweep test but modified so that.
 
bool ComputeSweptContactTOIAndPhiAtTargetPenetration (const FVec3 &ContactNormal, const FVec3 &Dir, const FReal SweepLength, const FReal HitDistance, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &OutTOI, FReal &OutPhi)
 
void LegacyComputeSweptContactTOIAndPhiAtTargetPenetration (const FReal DirDotNormal, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &InOutTOI, FReal &InOutPhi)
 
template<typename GeometryA , typename GeometryB >
FContactPoint GJKImplicitContactPoint (const FImplicitObject &A, const FRigidTransform3 &ATransform, const GeometryB &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename GeometryA >
FContactPoint GJKImplicitScaledTriMeshSweptContactPoint (const FImplicitObject &A, const FRigidTransform3 &AStartTransform, const TImplicitObjectScaled< FTriangleMeshImplicitObject > &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &OutTOI)
 
FContactPoint SphereSphereContactPoint (const FSphere &Sphere1, const FRigidTransform3 &Sphere1Transform, const FSphere &Sphere2, const FRigidTransform3 &Sphere2Transform, const FRealSingle CullDistance)
 
FContactPoint SpherePlaneContactPoint (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const TPlane< FReal, 3 > &Plane, const FRigidTransform3 &PlaneTransform)
 
FContactPoint SphereBoxContactPoint (const FSphere &Sphere, const FRigidTransform3 &SphereTransform, const FImplicitBox3 &Box, const FRigidTransform3 &BoxTransform)
 
FContactPoint SphereCapsuleContactPoint (const FSphere &A, const FRigidTransform3 &ATransform, const FCapsule &B, const FRigidTransform3 &BTransform)
 
template<typename TriMeshType >
FContactPoint SphereTriangleMeshContactPoint (const FSphere &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename TriMeshType >
FContactPoint SphereTriangleMeshSweptContactPoint (const FSphere &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
FContactPoint BoxHeightFieldContactPoint (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename TriMeshType >
FContactPoint BoxTriangleMeshContactPoint (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
FContactPoint SphereHeightFieldContactPoint (const FSphere &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
FContactPoint CapsuleHeightFieldContactPoint (const FCapsule &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename TriMeshType >
FContactPoint CapsuleTriangleMeshContactPoint (const FCapsule &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename TriMeshType >
FContactPoint CapsuleTriangleMeshSweptContactPoint (const FCapsule &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
FContactPoint ConvexHeightFieldContactPoint (const FImplicitObject &A, const FRigidTransform3 &ATransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
FContactPoint ConvexTriangleMeshContactPoint (const FImplicitObject &A, const FRigidTransform3 &ATransform, const FImplicitObject &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename TriMeshType >
FContactPoint ConvexTriangleMeshSweptContactPoint (const FImplicitObject &A, const FRigidTransform3 &ATransform, const TriMeshType &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
FContactPoint CapsuleCapsuleContactPoint (const FCapsule &A, const FRigidTransform3 &ATransform, const FCapsule &B, const FRigidTransform3 &BTransform)
 
FContactPoint CapsuleBoxContactPoint (const FCapsule &A, const FRigidTransform3 &ATransform, const FImplicitBox3 &B, const FRigidTransform3 &BTransform, const FVec3 &InitialDir)
 
template FContactPoint GJKImplicitSweptContactPoint< FHeightField > (const FImplicitObject &A, const FRigidTransform3 &AStartTransform, const FHeightField &B, const FRigidTransform3 &BTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint SphereTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FSphere &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint SphereTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > (const FSphere &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint CapsuleTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FCapsule &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint CapsuleTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > (const FCapsule &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint ConvexTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FImplicitObject &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint ConvexTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > (const FImplicitObject &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BStartTransform, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
template FContactPoint BoxTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template FContactPoint BoxTriangleMeshContactPoint< FTriangleMeshImplicitObject > (const FImplicitBox3 &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template FContactPoint SphereTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FSphere &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template FContactPoint SphereTriangleMeshContactPoint< FTriangleMeshImplicitObject > (const FSphere &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template FContactPoint CapsuleTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > (const FCapsule &A, const FRigidTransform3 &ATransform, const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template FContactPoint CapsuleTriangleMeshContactPoint< FTriangleMeshImplicitObject > (const FCapsule &A, const FRigidTransform3 &ATransform, const FTriangleMeshImplicitObject &B, const FRigidTransform3 &BTransform, const FReal CullDistance)
 
template<typename ConvexImplicitType >
TArrayView< FVec3ClipTriangleToConvex (const FTriangle &Triangle, const ConvexImplicitType &Convex, const int32 ConvexPlaneIndex, const FVec3 &Axis, TArrayView< FVec3 > VertexBuffer1, TArrayView< FVec3 > VertexBuffer2)
 
template<typename ConvexImplicitType >
TArrayView< FVec3ClipConvexToTriangle (const ConvexImplicitType &Convex, const int32 ConvexPlaneIndex, const FTriangle &Triangle, const FVec3 &TriangleN, TArrayView< FVec3 > VertexBuffer1, TArrayView< FVec3 > VertexBuffer2)
 
template<typename ConvexType >
void ConstructConvexTriangleOneShotManifold2 (const ConvexType &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const FImplicitConvex3 &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const TImplicitObjectInstanced< FImplicitConvex3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const TImplicitObjectScaled< FImplicitConvex3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const FImplicitBox3 &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const TImplicitObjectScaled< FImplicitBox3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template void ConstructConvexTriangleOneShotManifold2 (const TImplicitObjectInstanced< FImplicitBox3 > &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<typename GeometryA , typename GeometryB >
FContactPoint GJKContactPoint2 (const GeometryA &A, const GeometryB &B, const FRigidTransform3 &ATM, const FRigidTransform3 &BToATM, const FVec3 &InitialDir)
 
template<typename GeometryA , typename GeometryB >
FContactPoint GJKContactPoint (const GeometryA &A, const FRigidTransform3 &ATM, const GeometryB &B, const FRigidTransform3 &BTM, const FVec3 &InitialDir)
 
FContactPoint GJKContactPointSwept (const FGeomGJKHelperSIMD &A, const FRigidTransform3 &AStartTM, const FRigidTransform3 &AEndTM, const FGeomGJKHelperSIMD &B, const FRigidTransform3 &BStartTM, const FRigidTransform3 &BEndTM, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &OutTOI)
 
FContactPoint GenericConvexConvexContactPointSwept (const FImplicitObject &A, const FRigidTransform3 &AStartTM, const FRigidTransform3 &AEndTM, const FImplicitObject &B, const FRigidTransform3 &BStartTM, const FRigidTransform3 &BEndTM, const FVec3 &Dir, const FReal Length, const FReal IgnorePenetration, const FReal TargetPenetration, FReal &TOI)
 
bool ImplicitOverlapOBBToAABB (const FImplicitObject *Implicit0, const FImplicitObject *Implicit1, const FRigidTransform3 &ShapeTransform1To0, const FVec3f &LocalRelativeMovement0, const FReal CullDistance)
 
bool ImplicitOverlapOBBToAABB (const FImplicitObject *Implicit0, const FImplicitObject *Implicit1, const FRigidTransform3 &ShapeWorldTransform0, const FRigidTransform3 &ShapeWorldTransform1, const FVec3f &RelativeMovement, const FReal CullDistance)
 
int32 GetNumLeafImplicits (const FImplicitObject *Implicit)
 
const FShapeInstanceGetShapeInstance (const FShapeInstanceArray &ShapeInstances, const int32 RootObjectIndex, const Private::FConvexOptimizer *ConvexOptimizer=nullptr)
 
const FBVHParticlesFindLevelSetParticles (const FGeometryParticleHandle *Particle, const FImplicitObject *Implicit)
 
FPBDCollisionConstraintPtr CreateShapePairConstraint (FGeometryParticleHandle *Particle0, const FPerShapeData *InShape0, FGeometryParticleHandle *Particle1, const FPerShapeData *InShape1, const FReal CullDistance, const EContactShapesType ShapePairType, const bool bUseManifold, const FCollisionContext &Context)
 
FPBDCollisionConstraintPtr CreateImplicitPairConstraint (FGeometryParticleHandle *Particle0, const FImplicitObject *Implicit0, const FPerShapeData *Shape0, const FBVHParticles *BVHParticles0, const FRigidTransform3 &ShapeRelativeTransform0, FGeometryParticleHandle *Particle1, const FImplicitObject *Implicit1, const FPerShapeData *Shape1, const FBVHParticles *BVHParticles1, const FRigidTransform3 &ShapeRelativeTransform1, const FReal CullDistance, const EContactShapesType ShapePairType, const bool bUseManifold, const FCollisionContext &Context)
 
void ReactivateCollisionConstraint (FPBDCollisionConstraint *Constraint)
 
void PrefetchConstraint (const TArray< FPBDCollisionConstraint * > &Constraints, const int32 ConstraintIndex)
 
bool ContactConstraintSortPredicate (const FPBDCollisionConstraint &L, const FPBDCollisionConstraint &R)
 
void UpdateCollisionSolverContactPointFromConstraint (Private::FPBDCollisionSolver &Solver, const int32 SolverPointIndex, FPBDCollisionConstraint *Constraint, const int32 ConstraintPointIndex, const FRealSingle Dt, const FRealSingle MaxDepenetrationVelocity, const FRealSingle MaxPushOut, const FConstraintSolverBody &Body0, const FConstraintSolverBody &Body1)
 
void UpdateCollisionSolverManifoldFromConstraint (Private::FPBDCollisionSolver &Solver, FPBDCollisionConstraint *Constraint, const FSolverReal Dt, const int32 ConstraintPointBeginIndex, const int32 ConstraintPointEndIndex, const FPBDCollisionSolverSettings &SolverSettings)
 
void UpdateCollisionSolverFromConstraint (Private::FPBDCollisionSolver &Solver, FPBDCollisionConstraint *Constraint, const FSolverReal Dt, const FPBDCollisionSolverSettings &SolverSettings, bool &bOutPerIterationCollision)
 
FORCEINLINE_DEBUGGABLE void UpdateCollisionConstraintFromSolver (FPBDCollisionConstraint *Constraint, const Private::FPBDCollisionSolver &Solver, const FSolverReal Dt)
 
template<typename T_CONVEX >
bool ConvexPointPenetrationVector (const T_CONVEX &Convex, const FVec3 &X, FVec3 &OutNormal, FReal &OutPhi)
 
template<typename ConvexType >
FContactPoint SphereConvexContactPointImpl (const FImplicitSphere3 &Sphere, const ConvexType &Convex, const FRigidTransform3 &SphereToConvexTransform)
 
FContactPoint SphereConvexContactPoint (const FImplicitSphere3 &Sphere, const FImplicitObject &Object, const FRigidTransform3 &SphereToConvexTransform)
 
FContactPoint SphereConvexContactPoint (const FImplicitSphere3 &Sphere, const FRigidTransform3 &SphereTransform, const FImplicitObject &Object, const FRigidTransform3 &ConvexTransform)
 
void ConstructSphereTriangleOneShotManifold (const FImplicitSphere3 &Sphere, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
bool ComputeCapsuleTriangleOverlapSimd (const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C, const VectorRegister4Float &X1, const VectorRegister4Float &X2, FRealSingle Radius)
 
bool ComputeSphereTriangleOverlapSimd (const VectorRegister4Float &A, const VectorRegister4Float &B, const VectorRegister4Float &C, const VectorRegister4Float &X, FRealSingle Radius)
 
 DECLARE_CYCLE_STAT (TEXT("FConvex::CreateStructureData"), STAT_CreateConvexStructureData, STATGROUP_ChaosCollision)
 
 DECLARE_CYCLE_STAT (TEXT("FConvex::ComputeUnitMassInertiaTensorAndRotationOfMass"), STAT_ComputeConvexMassInertia, STATGROUP_ChaosCollision)
 
CHAOS_API DECLARE_LOG_CATEGORY_EXTERN (LogChaosMinEvolution, Log, All)
 
 DEFINE_LOG_CATEGORY (LogChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::Advance"), STAT_MinEvolution_Advance, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::PrepareTick"), STAT_MinEvolution_PrepareTick, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::UnprepareTick"), STAT_MinEvolution_UnprepareTick, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::Rewind"), STAT_MinEvolution_Rewind, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::AdvanceOneTimeStep"), STAT_MinEvolution_AdvanceOneTimeStep, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::Integrate"), STAT_MinEvolution_Integrate, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::KinematicTargets"), STAT_MinEvolution_KinematicTargets, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::Gather"), STAT_MinEvolution_Gather, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::Scatter"), STAT_MinEvolution_Scatter, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::ApplyConstraintsPhase1"), STAT_MinEvolution_ApplyConstraintsPhase1, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::ApplyConstraintsPhase2"), STAT_MinEvolution_ApplyConstraintsPhase2, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::ApplyConstraintsPhase3"), STAT_MinEvolution_ApplyConstraintsPhase3, STATGROUP_ChaosMinEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("MinEvolution::DetectCollisions"), STAT_MinEvolution_DetectCollisions, STATGROUP_ChaosMinEvolution)
 
void SolverQuaternionNormalizeApprox (FRotation3 &InOutQ)
 An approximate quaternion normalize for use in the solver.
 
FRotation3 SolverQuaternionApplyAngularDeltaApprox (const FRotation3 &InQ0, const FVec3 &InDR)
 
void UpdateSolverBodyFromParticle (FSolverBody &SolverBody, const FGeometryParticleHandle *Particle, const FReal Dt)
 
void UpdateParticleFromSolverBody (FGeometryParticleHandle *Particle, const FSolverBody &SolverBody)
 
void ConjugateAll (const FFFT3::FUniformGrid &Grid, FFFT3::FArrayNDOfComplex &Velocity, const int32 z)
 
void EnforceSymmetry (const FFFT3::FUniformGrid &Grid, FFFT3::FArrayNDOfComplex &Velocity)
 
void exchange (FReal &f1, FReal &f2)
 
template<int d>
void NRFourn (const int isign, const TVector< int32, d > &counts, TArray< FReal > &Data)
 
void InverseTransformHelper (const FFFT3::FUniformGrid &Grid, TArrayND< FVec3, 3 > &Velocity, const FFFT3::FArrayNDOfComplex &u, const int32 index, const bool Normalize)
 
void TransformHelper (const FFFT3::FUniformGrid &Grid, const TArrayND< FVec3, 3 > &Velocity, FFFT3::FArrayNDOfComplex &u, const int32 index)
 
FReal ComputeAlphaHelper (const FPullPhysicsData &Next, const FReal ResultsTime)
 
bool StateDiverged (const FDirtyRigidParticleData &A, const FDirtyRigidParticleData &B)
 
void UpdateShapesArrayFromGeometry (FShapeInstanceArray &ShapesArray, const FImplicitObjectPtr &Geometry, const FRigidTransform3 &ActorTM)
 
void TransformSweepResultsToWorld (const bool bResult, const FReal Time, const bool bComputeMTD, const FImplicitObject &TestGeom, const FVec3 &TestGeomLocation, const FVec3 &LocalDir, const FVec3 &LocalPosition, const FVec3 &LocalNormal, const int32 FaceIndex, FVec3 &OutWorldPosition, FVec3 &OutWorldNormal, FVec3 &OutWorldFaceNormal)
 
void TransformSweepResultsToWorld (const bool bResult, const FReal Time, const bool bComputeMTD, const FImplicitObject &TestGeom, const FRigidTransform3 &TestGeomTM, const FVec3 &LocalDir, const FVec3 &LocalPosition, const FVec3 &LocalNormal, const int32 FaceIndex, FVec3 &OutWorldPosition, FVec3 &OutWorldNormal, FVec3 &OutWorldFaceNormal)
 
FGJKSphereSingleSIMD ComputeLocalSphere (const FSphere &Sphere, const FRigidTransform3 &SphereTM, const FRigidTransform3 &OtherTM)
 
FGJKCapsuleSingleSIMD ComputeLocalCapsule (const FCapsule &Capsule, const FRigidTransform3 &CapsuleTM, const FRigidTransform3 &OtherTM)
 
template<typename SweptShapeType , typename TestShapeType , typename TestObjectType >
bool LocalSweep (const SweptShapeType &SweptShape, const TestShapeType &TestShape, const TestObjectType &TestObject, const FRigidTransform3 &LocalToWorldTM, const FVec3 &WorldSweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepSphereVsSphere (const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepSphereVsBox (const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const TBox< FReal, 3 > &TestBox, const FRigidTransform3 &TestBoxTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepSphereVsCapsule (const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepSphereVsConvex (const FSphere &SweptSphere, const FRigidTransform3 &SweptSphereTM, const FImplicitObject &TestObject, const FRigidTransform3 &TestObjectTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepBoxVsSphere (const TBox< FReal, 3 > &SweptBox, const FRigidTransform3 &SweptBoxTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepBoxVsCapsule (const TBox< FReal, 3 > &SweptBox, const FRigidTransform3 &SweptBoxTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepCapsuleVsSphere (const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FSphere &TestSphere, const FRigidTransform3 &TestSphereTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepCapsuleVsBox (const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const TBox< FReal, 3 > &TestBox, const FRigidTransform3 &TestBoxTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepCapsuleVsCapsule (const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FCapsule &TestCapsule, const FRigidTransform3 &TestCapsuleTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
bool SweepCapsuleVsConvex (const FCapsule &SweptCapsule, const FRigidTransform3 &SweptCapsuleTM, const FImplicitObject &TestObject, const FRigidTransform3 &TestObjectTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
template<typename BufferType , typename ToRealFuncType >
void BuildGeomData (TArrayView< BufferType > BufferView, TArrayView< const uint8 > MaterialIndexView, int32 NumRows, int32 NumCols, const FVec3 &InScale, ToRealFuncType ToRealFunc, typename FHeightField::FDataType &OutData, FAABB3 &OutBounds)
 
template<typename BufferType , typename ToRealFuncType >
void EditGeomData (TArrayView< BufferType > BufferView, int32 InBeginRow, int32 InBeginCol, int32 NumRows, int32 NumCols, ToRealFuncType ToRealFunc, typename FHeightField::FDataType &OutData, FAABB3 &OutBounds)
 
template<bool bFillHeight, bool bFillNormal>
FHeightNormalResult GetHeightNormalAt (const FVec2 &InGridLocationLocal, const Chaos::FHeightField::FDataType &InGeomData, const TUniformGrid< Chaos::FReal, 2 > &InGrid)
 
FAABB3 CalculateObjectsBounds (const TArrayView< FImplicitObjectPtr > &Objects)
 
FORCEINLINE bool ExtractLinearMotion (const FPBDJointSettings &JointSettings, TVec3< bool > &bLinearLocked, TVec3< bool > &bLinearLimited)
 
bool ExtractAngularMotion (const FPBDJointSettings &JointSettings, TVec3< bool > &bAngularLocked, TVec3< bool > &bAngularLimited, TVec3< bool > &bAngularFree)
 
bool Compare (const Pair< FReal *, TVec3< int32 > > &Other1, const Pair< FReal *, TVec3< int32 > > &Other2)
 
FReal SolveQuadraticEquation (const FReal Phi, const FReal PhiX, const FReal PhiY, const FReal Dx, const FReal Dy)
 
void GetGeomSurfaceSamples (const FSphere &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamples (const TBox< FReal, 3 > &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamples (const FCapsule &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamples (const FConvex &InGeom, TArray< FVec3 > &OutSamples)
 
template<typename InnerT >
void GetGeomSurfaceSamples (const TImplicitObjectScaled< InnerT > &InScaledGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamplesExtended (const FSphere &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamplesExtended (const TBox< FReal, 3 > &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamplesExtended (const FCapsule &InGeom, TArray< FVec3 > &OutSamples)
 
void GetGeomSurfaceSamplesExtended (const FConvex &InGeom, TArray< FVec3 > &OutSamples)
 
template<typename InnerT >
void GetGeomSurfaceSamplesExtended (const TImplicitObjectScaled< InnerT > &InScaledGeom, TArray< FVec3 > &OutSamples)
 
FVec3f CalculateInertiaConditioning (const FRealSingle InvM, const FVec3f &InvI, const FVec3f &ConstraintExtents, const FRealSingle MaxDistance, const FRealSingle MaxRotationRatio, const FRealSingle MaxInvInertiaComponentRatio, const FInertiaConditioningTolerances &Tolerances)
 
FVec3f CalculateCoMConstraintExtents (const FPBDRigidParticleHandle *Rigid)
 
FVec3f CalculateParticleInertiaConditioning (const FPBDRigidParticleHandle *Rigid, const FRealSingle MaxDistance, const FRealSingle MaxRotationRatio, const FRealSingle MaxInvInertiaComponentRatio, const FInertiaConditioningTolerances &Tolerances)
 
template<typename T >
TRotation< T, 3 > TransformToLocalSpace (PMatrix< T, 3, 3 > &Inertia)
 
void TransformToLocalSpace (FMassProperties &MassProperties)
 
void CalculateVolumeAndCenterOfMass (const FBox &BoundingBox, FVector::FReal &OutVolume, FVector &OutCenterOfMass)
 
void CalculateInertiaAndRotationOfMass (const FBox &BoundingBox, const FVector::FReal Density, FMatrix33 &OutInertiaTensor, FRotation3 &OutRotationOfMass)
 
FMassProperties CalculateMassProperties (const FBox &BoundingBox, const FVector::FReal Density)
 
template<typename T , typename TVec , typename TSurfaces >
void CalculateVolumeAndCenterOfMassImpl (const TArray< TVec > &Vertices, const TSurfaces &Surfaces, T &OutVolume, TVec &OutCenterOfMass)
 
template<typename T , typename TSurfaces >
void CHAOS_API CalculateVolumeAndCenterOfMass (const TParticles< T, 3 > &Vertices, const TSurfaces &Surfaces, T &OutVolume, TVec3< T > &OutCenterOfMass)
 
template<typename T , typename TSurfaces >
void CHAOS_API CalculateVolumeAndCenterOfMass (const TArray< TVec3< T > > &Vertices, const TSurfaces &Surfaces, T &OutVolume, TVec3< T > &OutCenterOfMass)
 
template<typename T , typename TSurfaces >
void CHAOS_API CalculateVolumeAndCenterOfMass (const TArray< UE::Math::TVector< T > > &Vertices, const TSurfaces &Surfaces, T &OutVolume, UE::Math::TVector< T > &OutCenterOfMass)
 
template<typename T , typename TVec , typename TSurfaces >
void CalculateInertiaAndRotationOfMassImpl (const TArray< TVec > &Vertices, const TSurfaces &Surfaces, const T Density, const TVec &CenterOfMass, PMatrix< T, 3, 3 > &OutInertiaTensor, TRotation< T, 3 > &OutRotationOfMass)
 
template<typename T , typename TSurfaces >
void CHAOS_API CalculateInertiaAndRotationOfMass (const TParticles< T, 3 > &Vertices, const TSurfaces &Surfaces, const T Density, const TVec3< T > &CenterOfMass, PMatrix< T, 3, 3 > &OutInertiaTensor, TRotation< T, 3 > &OutRotationOfMass)
 
template<typename T , typename TSurfaces >
void CHAOS_API CalculateInertiaAndRotationOfMass (const TArray< UE::Math::TVector< T > > &Vertices, const TSurfaces &Surfaces, const T Density, const UE::Math::TVector< T > &CenterOfMass, PMatrix< T, 3, 3 > &OutInertiaTensor, TRotation< T, 3 > &OutRotationOfMass)
 
template<typename TSurfaces >
FMassProperties CalculateMassProperties (const FParticles &Vertices, const TSurfaces &Surfaces, const FReal Mass)
 
FMassProperties Combine (const TArray< FMassProperties > &MPArray)
 
FMassProperties CombineWorldSpace (const TArray< FMassProperties > &MPArray)
 
bool CalculateMassPropertiesOfImplicitUnion (Chaos::FMassProperties &OutMassProperties, const Chaos::FRigidTransform3 &WorldTransform, const Chaos::FImplicitObjectUnion &ImplicitUnion, Chaos::FReal InDensityKGPerCM)
 
bool CalculateMassPropertiesOfImplicitType (Chaos::FMassProperties &OutMassProperties, const Chaos::FRigidTransform3 &WorldTransform, const Chaos::FImplicitObject *ImplicitObject, Chaos::FReal InDensityKGPerCM)
 
void CalculateMassPropertiesFromShapeCollection (Chaos::FMassProperties &OutProperties, int32 InNumShapes, Chaos::FReal InDensityKGPerCM, const TArray< bool > &bContributesToMass, TFunction< Chaos::FPerShapeData *(int32 ShapeIndex)> GetShapeDelegate)
 
template CHAOS_API TRotation< FRealSingle, 3 > TransformToLocalSpace (PMatrix< FRealSingle, 3, 3 > &Inertia)
 
template CHAOS_API TRotation< FRealDouble, 3 > TransformToLocalSpace (PMatrix< FRealDouble, 3, 3 > &Inertia)
 
template CHAOS_API FMassProperties CalculateMassProperties (const FParticles &Vertices, const TArray< TVec3< int32 > > &Surfaces, const FReal Mass)
 
template CHAOS_API FMassProperties CalculateMassProperties (const FParticles &Vertices, const TArray< TArray< int32 > > &Surfaces, const FReal Mass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TParticles< FRealDouble, 3 > &Vertices, const TArray< TVec3< int32 > > &Surfaces, FRealDouble &OutVolume, TVec3< FRealDouble > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TParticles< FRealDouble, 3 > &Vertices, const TArray< TArray< int32 > > &Surfaces, FRealDouble &OutVolume, TVec3< FRealDouble > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TParticles< FRealSingle, 3 > &Vertices, const TArray< TVec3< int32 > > &Surfaces, FRealSingle &OutVolume, TVec3< FRealSingle > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TParticles< FRealSingle, 3 > &Vertices, const TArray< TArray< int32 > > &Surfaces, FRealSingle &OutVolume, TVec3< FRealSingle > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TArray< TVec3< FRealSingle > > &Vertices, const TArray< TArray< int32 > > &Surfaces, FRealSingle &OutVolume, TVec3< FRealSingle > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TArray< TVec3< FRealDouble > > &Vertices, const TArray< TArray< int32 > > &Surfaces, FRealDouble &OutVolume, TVec3< FRealDouble > &OutCenterOfMass)
 
template CHAOS_API void CalculateVolumeAndCenterOfMass (const TArray< UE::Math::TVector< float > > &Vertices, const TArray< TVec3< int32 > > &Surfaces, float &OutVolume, UE::Math::TVector< float > &OutCenterOfMass)
 
template void CHAOS_API CalculateInertiaAndRotationOfMass (const TParticles< FRealSingle, 3 > &Vertices, const TArray< TVec3< int32 > > &Surfaces, const FRealSingle Density, const TVec3< FRealSingle > &CenterOfMass, PMatrix< FRealSingle, 3, 3 > &OutInertiaTensor, TRotation< FRealSingle, 3 > &OutRotationOfMass)
 
template void CHAOS_API CalculateInertiaAndRotationOfMass (const TParticles< FRealSingle, 3 > &Vertices, const TArray< TArray< int32 > > &Surfaces, const FRealSingle Density, const TVec3< FRealSingle > &CenterOfMass, PMatrix< FRealSingle, 3, 3 > &OutInertiaTensor, TRotation< FRealSingle, 3 > &OutRotationOfMass)
 
template void CHAOS_API CalculateInertiaAndRotationOfMass (const TParticles< FRealDouble, 3 > &Vertices, const TArray< TVec3< int32 > > &Surfaces, const FRealDouble Density, const TVec3< FRealDouble > &CenterOfMass, PMatrix< FRealDouble, 3, 3 > &OutInertiaTensor, TRotation< FRealDouble, 3 > &OutRotationOfMass)
 
template void CHAOS_API CalculateInertiaAndRotationOfMass (const TParticles< FRealDouble, 3 > &Vertices, const TArray< TArray< int32 > > &Surfaces, const FRealDouble Density, const TVec3< FRealDouble > &CenterOfMass, PMatrix< FRealDouble, 3, 3 > &OutInertiaTensor, TRotation< FRealDouble, 3 > &OutRotationOfMass)
 
template void CHAOS_API CalculateInertiaAndRotationOfMass (const TArray< UE::Math::TVector< float > > &Vertices, const TArray< TVec3< int32 > > &Surfaces, const float Density, const UE::Math::TVector< float > &CenterOfMass, PMatrix< float, 3, 3 > &OutInertiaTensor, TRotation< float, 3 > &OutRotationOfMass)
 
void UpdateShapesArrayFromGeometry (FShapeInstanceProxyArray &ShapesArray, const FImplicitObjectPtr &Geometry, const FRigidTransform3 &ActorTM, IPhysicsProxyBase *Proxy)
 
void SetObjectStateHelper (IPhysicsProxyBase &Proxy, FPBDRigidParticleHandle &Rigid, EObjectStateType InState, bool bAllowEvents, bool bInvalidate)
 
FImplicitObjectGetInstancedImplicitHelper (FImplicitObject *Implicit0)
 
 DECLARE_CYCLE_STAT (TEXT("Collisions::Reset"), STAT_Collisions_Reset, STATGROUP_ChaosCollision)
 
 DECLARE_CYCLE_STAT (TEXT("Collisions::BeginDetect"), STAT_Collisions_BeginDetect, STATGROUP_ChaosCollision)
 
 DECLARE_CYCLE_STAT (TEXT("Collisions::EndDetect"), STAT_Collisions_EndDetect, STATGROUP_ChaosCollision)
 
 DECLARE_CYCLE_STAT (TEXT("Collisions::Sort"), STAT_Collisions_Sort, STATGROUP_ChaosCollision)
 
 DECLARE_CYCLE_STAT (TEXT("Collisions::DetectProbeCollisions"), STAT_Collisions_DetectProbeCollisions, STATGROUP_ChaosCollision)
 
void UpdateSoftCollisionSettings (const FChaosPhysicsMaterial *PhysicsMaterial, const FGeometryParticleHandle *Particle, FReal &InOutThickess)
 
void ComputeHashTable (const TArray< Chaos::FPBDCollisionConstraint > &ConstraintsArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
void ComputeHashTable (const TArray< FCollidingData > &CollisionsArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
void ComputeHashTable (const TArray< FCollidingDataExt > &CollisionsArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
void ComputeHashTable (const TArray< FVector > &ParticleArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
void ComputeHashTable (const TArray< FBreakingData > &BreakingsArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
void ComputeHashTable (const TArray< FBreakingDataExt > &BreakingsArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const FReal SpatialHashRadius)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::Sort"), STAT_Joints_Sort, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::PrepareTick"), STAT_Joints_PrepareTick, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::UnprepareTick"), STAT_Joints_UnprepareTick, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::Gather"), STAT_Joints_Gather, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::Scatter"), STAT_Joints_Scatter, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::Apply"), STAT_Joints_Apply, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::ApplyPushOut"), STAT_Joints_ApplyPushOut, STATGROUP_ChaosJoint)
 
 DECLARE_CYCLE_STAT (TEXT("Joints::ApplyProjection"), STAT_Joints_ApplyProjection, STATGROUP_ChaosJoint)
 
FReal GetSwingAngleY (const FRotation3 &RSwing)
 
FReal GetSwingAngleZ (const FRotation3 &RSwing)
 
FVec2 NearPointOnEllipse (const FVec2 &P, const FVec2 &R, const int MaxIts=20, const FReal Tolerance=1.e-4f)
 
bool GetEllipticalAxisError (const FVec3 &SwingAxisRot, const FVec3 &EllipseNormal, const FVec3 &TwistAxis, FVec3 &AxisLocal, FReal &Error)
 
template<typename TProxy = FGeometryCollectionPhysicsProxy>
TProxyGetConcreteProxy (FPBDRigidClusteredParticleHandle *ClusteredParticle)
 
template<typename TProxy = FGeometryCollectionPhysicsProxy>
const TProxyGetConcreteProxy (const FPBDRigidClusteredParticleHandle *ClusteredParticle)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::CreateClusterParticle"), STAT_CreateClusterParticle, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::AddParticlesToCluster"), STAT_AddParticlesToCluster, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::RemoveParticlesFromCluster"), STAT_RemoveParticlesFromCluster, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateClusterParticlePropertiesFromChildren"), STAT_UpdateClusterParticlePropertiesFromChildren, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::CreateClusterParticleFromClusterChildren"), STAT_CreateClusterParticleFromClusterChildren, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UnionClusterGroups"), STAT_UnionClusterGroups, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::DeactivateClusterParticle"), STAT_DeactivateClusterParticle, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::ReleaseClusterParticles(STRAIN)"), STAT_ReleaseClusterParticles_STRAIN, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::ReleaseClusterParticlesNoInternalCluster"), STAT_ReleaseClusterParticlesNoInternalCluster, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::HandleConnectivityOnReleaseClusterParticle"), HandleConnectivityOnReleaseClusterParticle, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::ReleaseClusterParticles(LIST)"), STAT_ReleaseClusterParticles_LIST, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::ReleaseChildrenParticleAndParents"), ReleaseChildrenParticleAndParents, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::AdvanceClustering"), STAT_AdvanceClustering, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::Update Impulse from Strain"), STAT_UpdateImpulseStrain, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::Update Dirty Impulses"), STAT_UpdateDirtyImpulses, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FRigidClustering::CleanupInternalClustersForProxy"), STAT_CleanupInternalClustersForProxy, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("BreakingModel_AllParticles"), STAT_BreakingModel_AllParticles, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("BreakingModel"), STAT_BreakingModel, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FRigidClustering::Visitor"), STAT_ClusterVisitor, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::GetActiveClusterIndex"), STAT_GetActiveClusterIndex, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::GenerateConnectionGraph"), STAT_GenerateConnectionGraph, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::ClearConnectionGraph"), STAT_ClearConnectionGraph, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("ComputeStrainFromCollision"), STAT_ComputeStrainFromCollision, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("ResetCollisionImpulseArray"), STAT_ResetCollisionImpulseArray, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateConnectivityGraphUsingPointImplicit"), STAT_UpdateConnectivityGraphUsingPointImplicit, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::FixConnectivityGraphUsingDelaunayTriangulation"), STAT_FixConnectivityGraphUsingDelaunayTriangulation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateConnectivityGraphUsingDelaunayTriangulation"), STAT_UpdateConnectivityGraphUsingDelaunayTriangulation, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateConnectivityGraphUsingDelaunayTriangulationWithBoundsOverlaps"), STAT_UpdateConnectivityGraphUsingDelaunayTriangulationWithBoundsOverlaps, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::RemoveNodeConnections"), STAT_RemoveNodeConnections, STATGROUP_Chaos)
 
FClusterCreationParameters::EConnectionMethod ToInternalConnectionMethod (EClusterUnionMethod InMethod)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateClusterMassProperties()"), STAT_UpdateClusterMassProperties, STATGROUP_Chaos)
 
void UpdateClusterMassProperties (FPBDRigidClusteredParticleHandle *Parent, const TSet< FPBDRigidParticleHandle * > &Children)
 
void AdjustClusterInertia (FPBDRigidClusteredParticleHandle *Cluster, const EInertiaOperations InertiaOperations)
 
FRigidTransform3 MoveClusterToMassOffset (FPBDRigidClusteredParticleHandle *Cluster, const EMassOffsetType MassOffsetTypes)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateKinematicProperties()"), STAT_UpdateKinematicProperties, STATGROUP_Chaos)
 
void UpdateKinematicProperties (Chaos::FPBDRigidParticleHandle *InParent, const FRigidClustering::FClusterMap &MChildren, FRigidClustering::FRigidEvolution &MEvolution)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateGeometry"), STAT_UpdateGeometry, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateGeometry_GatherObjects"), STAT_UpdateGeometry_GatherObjects, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateGeometry_GatherPoints"), STAT_UpdateGeometry_GatherPoints, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateGeometry_CopyPoints"), STAT_UpdateGeometry_CopyPoints, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("TPBDRigidClustering<>::UpdateGeometry_PointsBVH"), STAT_UpdateGeometry_PointsBVH, STATGROUP_Chaos)
 
void BuildScaledGeometry (Chaos::FPBDRigidClusteredParticleHandle *ParticleHandle, const Chaos::FImplicitObjectPtr &ProxyGeometry, const FVector &WorldScale)
 
void UpdateCollisionFlags (Chaos::FPBDRigidClusteredParticleHandle *ParticleHandle, const bool bUseParticleImplicit)
 
void UpdateGeometry (Chaos::FPBDRigidClusteredParticleHandle *Parent, const TSet< FPBDRigidParticleHandle * > &Children, const FRigidClustering::FClusterMap &ChildrenMap, const Chaos::FImplicitObjectPtr &ProxyGeometry, const FClusterCreationParameters &Parameters)
 
void UpdateClusterFilterDataFromChildren (FPBDRigidClusteredParticleHandle *ClusterParent, const TArray< FPBDRigidParticleHandle * > &Children)
 
FAutoConsoleVariableRef CVarBroadphaseIsTree (TEXT("p.BroadphaseType"), BroadPhaseConfig.BroadphaseType, TEXT(""))
 
FAutoConsoleVariableRef CVarBoundingVolumeNumCells (TEXT("p.BoundingVolumeNumCells"), BroadPhaseConfig.BVNumCells, TEXT(""))
 
FAutoConsoleVariableRef CVarMaxChildrenInLeaf (TEXT("p.MaxChildrenInLeaf"), BroadPhaseConfig.MaxChildrenInLeaf, TEXT(""))
 
FAutoConsoleVariableRef CVarMaxTreeDepth (TEXT("p.MaxTreeDepth"), BroadPhaseConfig.MaxTreeDepth, TEXT(""))
 
FAutoConsoleVariableRef CVarAABBMaxChildrenInLeaf (TEXT("p.AABBMaxChildrenInLeaf"), BroadPhaseConfig.AABBMaxChildrenInLeaf, TEXT(""))
 
FAutoConsoleVariableRef CVarAABBMaxTreeDepth (TEXT("p.AABBMaxTreeDepth"), BroadPhaseConfig.AABBMaxTreeDepth, TEXT(""))
 
FAutoConsoleVariableRef CVarMaxPayloadSize (TEXT("p.MaxPayloadSize"), BroadPhaseConfig.MaxPayloadSize, TEXT(""))
 
FAutoConsoleVariableRef CVarIterationsPerTimeSlice (TEXT("p.IterationsPerTimeSlice"), BroadPhaseConfig.IterationsPerTimeSlice, TEXT(""))
 
 DECLARE_CYCLE_STAT (TEXT("CacheAccelerationBounds"), STAT_CacheAccelerationBounds, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("ComputeIntermediateSpatialAcceleration"), STAT_ComputeIntermediateSpatialAcceleration, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("CopyAccelerationStructure"), STAT_CopyAccelerationStructure, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("SwapAccelerationStructures"), STAT_SwapAccelerationStructures, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("AccelerationStructureTimeSlice"), STAT_AccelerationStructureTimeSlice, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("AccelerationStructureTimeSliceCopy"), STAT_AccelerationStructureTimeSliceCopy, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("CreateInitialAccelerationStructure"), STAT_CreateInitialAccelerationStructure, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("CreateNonSlicedStructures"), STAT_CreateNonSlicedStructures, STATGROUP_Chaos)
 
TUniquePtr< ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > > CreateNewSpatialStructureFromSubStructure (TUniquePtr< ISpatialAcceleration< FAccelerationStructureHandle, FReal, 3 > > &&Substructure)
 
int32 CalculateNumCollisionsPerBlock ()
 
template<typename TEvolution >
void SerializeToDisk (TEvolution &Evolution)
 
template<typename TParticleView >
void CheckParticleViewForDupes (const FString &Name, const TParticleView &ParticleView)
 
void CheckParticleViewsForDupes (FPBDRigidsSOAs &Particles)
 
void CheckMovingKinematicFlag (FPBDRigidsSOAs &Particles)
 
void CheckParticleViewsForErrors (FPBDRigidsSOAs &Particles)
 
bool ZeroOrOneBitSet (const EGeometryParticleListMask ParticleListMask, const EGeometryParticleListMask ViewListMask)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FRigidParticleControlFlags &Flags)
 
const TCHARLexToString (ESerializedDataContext Value)
 
 DECLARE_CYCLE_STAT_WITH_FLAGS (TEXT("UpdateShapesArrayFromGeometryImpl"), STAT_UpdateShapesArrayFromGeometryImpl, STATGROUP_Chaos, EStatFlags::Verbose)
 
template<typename TShapesArrayType >
void UpdateShapesArrayFromGeometryImpl (TShapesArrayType &ShapesArray, const FImplicitObjectPtr &Geometry, const FRigidTransform3 &ActorTM, IPhysicsProxyBase *Proxy)
 
void UpdateShapesArrayFromGeometry (FShapesArray &ShapesArray, TSerializablePtr< FImplicitObject > Geometry, const FRigidTransform3 &ActorTM, IPhysicsProxyBase *Proxy)
 
const FImplicitObjectGetInnerGeometryInstanceData (const FImplicitObject *Implicit, const FRigidTransform3 **OutRelativeTransformPtr)
 
bool ShapeInstanceWantsLeafCache (const FImplicitObject *Geometry)
 
 DEFINE_LOG_CATEGORY_STATIC (LogChaosSpatialHash, Verbose, All)
 
template<class T >
void AddTrianglesToHull (const TConstArrayView< FVec3 > &Points, const int32 I0, const int32 I1, const int32 I2, const TPlane< T, 3 > &SplitPlane, const TArray< int32 > &InIndices, TArray< TVec3< int32 > > &OutIndices)
 
FORCEINLINE TVec2< int32GetOrdered (const TVec2< int32 > &elem)
 
void Order (int32 &A, int32 &B)
 
TVec3< int32GetOrdered (const TVec3< int32 > &Elem)
 
FReal GetWindingOrder (const FVec3 &Scale)
 
void ScaleTransformHelper (const FVec3 &TriMeshScale, const FRigidTransform3 &QueryTM, FRigidTransform3 &OutScaledQueryTM)
 
template<typename QueryGeomType >
const QueryGeomTypeScaleGeomIntoWorldHelper (const QueryGeomType &QueryGeom, const FVec3 &TriMeshScale)
 
template<typename QueryGeomType >
TImplicitObjectScaled< QueryGeomTypeScaleGeomIntoWorldHelper (const TImplicitObjectScaled< QueryGeomType > &QueryGeom, const FVec3 &TriMeshScale)
 
void TransformSweepOutputsHelper (FVec3 TriMeshScale, const FVec3 &HitNormal, const FVec3 &HitPosition, const FRealSingle LengthScale, const FRealSingle Time, FVec3 &OutNormal, FVec3 &OutPosition, FRealSingle &OutTime)
 
template<typename QueryGeomType >
const auto MakeTriangleHelper (const QueryGeomType &Geom)
 
template<typename QueryGeomType >
const auto MakeTriangleHelper (const TImplicitObjectScaled< QueryGeomType > &ScaledGeom)
 
void ComputeScaledSweepInputs (FVec3 TriMeshScale, const FRigidTransform3 &StartTM, const FVec3 &Dir, const FReal Length, FVec3 &OutScaledDirNormalized, FReal &OutLengthScale, FRigidTransform3 &OutScaledStartTM)
 
FVec3 SafeInvScale (const FVec3 &Scale)
 
template<class T_SCALAR , class T >
T_SCALAR LinearlyInterpolate1D (const T_SCALAR &Prev, const T_SCALAR &Next, const T Alpha)
 
template<class T_SCALAR , class T , int d>
T_SCALAR LinearlyInterpolateHelper (const TArrayND< T_SCALAR, d > &ScalarN, const TVector< int32, d > &CellPrev, const TVector< T, d > &Alpha)
 
template<class T_SCALAR , class T >
T_SCALAR LinearlyInterpolateHelper (const TArrayND< T_SCALAR, 2 > &ScalarN, const TVector< int32, 2 > &CellPrev, const TVector< T, 2 > &Alpha)
 
template<class T_SCALAR , class T >
T_SCALAR LinearlyInterpolateHelper (const TArrayND< T_SCALAR, 3 > &ScalarN, const TVector< int32, 3 > &CellPrev, const TVector< T, 3 > &Alpha)
 
 DECLARE_CYCLE_STAT (TEXT("EventDefaults::RegisterCollisionEvent_Filter"), STAT_Events_RegisterCollisionEvent_Filter, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("EventDefaults::RegisterCollisionEvent_Notify"), STAT_Events_RegisterCollisionEvent_Notify, STATGROUP_Chaos)
 
FMaterialHandle ResolveMaterial (const FPerShapeData *InShape, const FPBDCollisionConstraint &InConstraint)
 
template<typename TRigidParticle >
bool ShouldUpdateFromSimulation (const TRigidParticle &InRigidParticle)
 
bool HasSimulationCallback (const ISimCallbackObject *Callback)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionPhysicsProxy::PushToPhysicsState"), STAT_ClusterUnionPhysicsProxyPushToPhysicsState, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionPhysicsProxy::PullFromPhysicsState"), STAT_ClusterUnionPhysicsProxyPullFromPhysicsState, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionPhysicsProxy::BufferPhysicsResults_Internal"), STAT_ClusterUnionPhysicsProxyBufferPhysicsResultsInternal, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionPhysicsProxy::BufferPhysicsResults_External"), STAT_ClusterUnionPhysicsProxyBufferPhysicsResultsExternal, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("FClusterUnionPhysicsProxy::SyncRemoteData"), STAT_ClusterUnionPhysicsProxySyncRemoteData, STATGROUP_Chaos)
 
template<Chaos::EParticleType ParticleType>
void PushToPhysicsStateImp (const Chaos::FDirtyPropertiesManager &Manager, Chaos::FGeometryParticleHandle *Handle, int32 DataIdx, const Chaos::FDirtyProxy &Dirty, Chaos::FShapeDirtyData *ShapesData, Chaos::FPBDRigidsSolver &Solver, bool bResimInitialized, Chaos::FReal ExternalDt)
 
template<typename T >
void BufferPhysicsResultsImp (Chaos::FDirtyRigidParticleData &PullData, T *Particle)
 
bool ShouldUpdateTransformFromSimulation (const Chaos::FPBDRigidParticle &Rigid)
 
bool SimWritablePropsMayChange (const TGeometryParticleHandle< FReal, 3 > &Handle)
 
 DECLARE_CYCLE_STAT (TEXT("AABBTreeGenerateTree"), STAT_AABBTreeGenerateTree, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("AABBTreeTimeSliceSetup"), STAT_AABBTreeTimeSliceSetup, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("AABBTreeInitialTimeSlice"), STAT_AABBTreeInitialTimeSlice, STATGROUP_Chaos)
 
 DECLARE_CYCLE_STAT (TEXT("AABBTreeProgressTimeSlice"), STAT_AABBTreeProgressTimeSlice, STATGROUP_Chaos)
 
template<typename TPayloadType , bool bComputeBounds, typename T >
FChaosArchiveoperator<< (FChaosArchive &Ar, TAABBTreeLeafArray< TPayloadType, bComputeBounds, T > &LeafArray)
 
template<typename LeafType >
FChaosArchiveoperator<< (FChaosArchive &Ar, TLeafContainer< LeafType > &LeafArray)
 
template<typename T >
FORCEINLINE FChaosArchiveoperator<< (FChaosArchive &Ar, TAABBTreeNode< T > &Node)
 
FORCEINLINE FArchiveoperator<< (FArchive &Ar, FAABBTreePayloadInfo &PayloadInfo)
 
template<typename TPayloadType , typename TLeafType , bool bMutable, typename T , typename StorageTraits >
FArchiveoperator<< (FChaosArchive &Ar, TAABBTree< TPayloadType, TLeafType, bMutable, T, StorageTraits > &AABBTree)
 
FORCEINLINE_DEBUGGABLE uint32 InterleaveWithZeros (uint16 input)
 
FORCEINLINE_DEBUGGABLE int64 GetDirtyCellIndexFromWorldCoordinate (FReal Coordinate, FReal DirtyElementGridCellSizeInv)
 
FORCEINLINE_DEBUGGABLE int32 HashCell (int64 XCell, int64 YCell)
 
FORCEINLINE_DEBUGGABLE int32 HashCoordinates (FReal Xcoordinate, FReal Ycoordinate, FReal DirtyElementGridCellSizeInv)
 
template<typename T >
FORCEINLINE_DEBUGGABLE bool TooManyOverlapQueryCells (const TAABB< T, 3 > &AABB, FReal DirtyElementGridCellSizeInv, int32 MaximumOverlap)
 
template<typename T , typename FunctionType >
FORCEINLINE_DEBUGGABLE bool DoForOverlappedCells (const TAABB< T, 3 > &AABB, FReal DirtyElementGridCellSize, FReal DirtyElementGridCellSizeInv, FunctionType Function)
 
template<typename T , typename FunctionType >
FORCEINLINE_DEBUGGABLE bool DoForOverlappedCellsExclude (const TAABB< T, 3 > &AABB, const TAABB< T, 3 > &AABBExclude, FReal DirtyElementGridCellSize, FReal DirtyElementGridCellSizeInv, FunctionType Function)
 
FORCEINLINE_DEBUGGABLE int32 FindInSortedArray (const TArray< int32 > &Array, int32 FindValue, int32 StartIndex, int32 EndIndex)
 
FORCEINLINE_DEBUGGABLE int32 FindInsertIndexIntoSortedArray (const TArray< int32 > &Array, int32 FindValue, int32 StartIndex, int32 EndIndex)
 
FORCEINLINE_DEBUGGABLE bool InsertValueIntoSortedSubArray (TArray< int32 > &Array, int32 Value, int32 StartIndex, int32 Count)
 
FORCEINLINE_DEBUGGABLE bool DeleteValueFromSortedSubArray (TArray< int32 > &Array, int32 Value, int32 StartIndex, int32 Count)
 
FORCEINLINE_DEBUGGABLE bool TooManySweepQueryCells (const TVec3< FReal > &QueryHalfExtents, const FVec3 &StartPoint, const FVec3 &Dir, FReal Length, FReal DirtyElementGridCellSizeInv, int32 DirtyElementMaxGridCellQueryCount)
 
template<typename FunctionType >
FORCEINLINE_DEBUGGABLE void DoForSweepIntersectCellsImp (const FReal QueryHalfExtentsX, const FReal QueryHalfExtentsY, const FReal StartPointX, const FReal StartPointY, const FReal RayX, const FReal RayY, FReal DirtyElementGridCellSize, FReal DirtyElementGridCellSizeInv, FunctionType InFunction)
 
template<typename FunctionType >
void DoForSweepIntersectCells (const FVec3 QueryHalfExtents, const FVec3 &StartPoint, const FVec3 &Dir, FReal Length, FReal DirtyElementGridCellSize, FReal DirtyElementGridCellSizeInv, FunctionType InFunction)
 
FORCEINLINE_DEBUGGABLE bool TooManyRaycastQueryCells (const FVec3 &StartPoint, const FVec3 &Dir, const FReal Length, FReal DirtyElementGridCellSizeInv, int32 DirtyElementMaxGridCellQueryCount)
 
template<typename FunctionType >
FORCEINLINE_DEBUGGABLE void DoForRaycastIntersectCells (const FVec3 &StartPoint, const FVec3 &Dir, FReal Length, FReal DirtyElementGridCellSize, FReal DirtyElementGridCellSizeInv, FunctionType InFunction)
 
template<typename TPayloadType , class T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TBVCellElement< TPayloadType, T, d > &Elem)
 
template<typename T , int d>
FArchiveoperator<< (FArchive &Ar, TBVPayloadInfo< T, d > &Info)
 
template<typename TPayloadType , class T , int d>
FArchiveoperator<< (FArchive &Ar, TBoundingVolume< TPayloadType, T, d > &BoundingVolume)
 
template<typename TPayloadType , class T , int d>
FArchiveoperator<< (FChaosArchive &Ar, TBoundingVolume< TPayloadType, T, d > &BoundingVolume)
 
template<typename T , int d>
FArchiveoperator<< (FArchive &Ar, TBVHNode< T, d > &LeafNode)
 
template<class OBJECT_ARRAY , class LEAF_TYPE , class T , int d>
FArchiveoperator<< (FArchive &Ar, TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &BVH)
 
FVec3 ComputeBoundsThickness (FVec3 Vel, FReal Dt, FReal MinBoundsThickness, FReal MaxBoundsThickness, FReal BoundsVelocityInflation)
 
FVec3 ComputeBoundsThickness (const TPBDRigidParticles< FReal, 3 > &InParticles, FReal Dt, int32 BodyIndex, FReal MinBoundsThickness, FReal BoundsVelocityInflation)
 
template<typename THandle >
FVec3 ComputeBoundsThickness (const THandle &ParticleHandle, FReal Dt, FReal MinBoundsThickness, FReal BoundsVelocityInflation)
 
template<class OBJECT_ARRAY >
bool HasBoundingBox (const OBJECT_ARRAY &Objects, const int32 i)
 
template<class T , int d>
bool HasBoundingBox (const TParticles< T, d > &Objects, const int32 i)
 
template<class T , int d>
bool HasBoundingBox (const TGeometryParticles< T, d > &Objects, const int32 i)
 
template<class T , int d>
bool HasBoundingBox (const TPBDRigidParticles< T, d > &Objects, const int32 i)
 
template<typename Generic >
bool HasBoundingBox (const Generic &Item)
 
template<typename T , int d, bool bPersistent>
bool HasBoundingBox (const TGeometryParticleHandleImp< T, d, bPersistent > &Handle)
 
template<typename T , int d, bool bPersistent>
bool HasBoundingBox (const TPBDRigidParticleHandleImp< T, d, bPersistent > &Handle)
 
template<class OBJECT_ARRAY , class T , int d>
const TAABB< T, d > GetWorldSpaceBoundingBox (const OBJECT_ARRAY &Objects, const int32 i, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
const TAABB< T, d > & GetWorldSpaceBoundingBox (const TParticles< T, d > &Objects, const int32 i, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
const TAABB< T, d > & GetWorldSpaceBoundingBox (const TGeometryParticles< T, d > &Objects, const int32 i, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
const TAABB< T, d > GetWorldSpaceBoundingBox (const TPBDRigidParticles< T, d > &Objects, const int32 i, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
TAABB< T, d > ComputeWorldSpaceBoundingBox (const TParticles< T, d > &Objects, const int32 i, bool bUseVelocity=false, T Dt=0)
 
template<class T , int d>
TAABB< T, d > ComputeWorldSpaceBoundingBox (const TGeometryParticles< T, d > &Objects, const int32 i, bool bUseVelocity=false, T Dt=0)
 
template<class T , int d>
TAABB< T, d > ComputeWorldSpaceBoundingBox (const TPBDRigidParticles< T, d > &Objects, const int32 i, bool bUseVelocity=false, T Dt=0)
 
template<typename THandle , typename T , int d, bool bPersistent>
TAABB< T, d > ComputeWorldSpaceBoundingBoxForHandle (const THandle &Handle)
 
template<typename T , int d, bool bPersistent>
TAABB< T, d > ComputeWorldSpaceBoundingBox (const TGeometryParticleHandleImp< T, d, bPersistent > &Handle, bool bUseVelocity=false, T Dt=0)
 
template<typename T , int d, bool bPersistent>
TAABB< T, d > ComputeWorldSpaceBoundingBox (const TPBDRigidParticleHandleImp< T, d, bPersistent > &Handle, bool bUseVelocity=false, T Dt=0)
 
template<typename T , typename GenericEntry >
TAABB< T, 3 > ComputeWorldSpaceBoundingBox (const GenericEntry &InEntry, bool bUseVelocity=false, T Dt=0)
 
template<typename OBJECT_ARRAY , typename T , int d>
const TAABB< T, d > ComputeGlobalBoxAndSplitAxis (const OBJECT_ARRAY &Objects, const TArray< int32 > &AllObjects, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes, bool bAllowMultipleSplitting, int32 &OutAxis)
 
template<typename T , int d>
const TAABB< T, d > ComputeGlobalBoxAndSplitAxis (const TParticles< T, d > &Objects, const TArray< int32 > &AllObjects, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes, bool bAllowMultipleSplitting, int32 &OutAxis)
 
template<class OBJECT_ARRAY , class T , int d>
void ComputeAllWorldSpaceBoundingBoxes (const OBJECT_ARRAY &Objects, const TArray< int32 > &AllObjects, const bool bUseVelocity, const T Dt, TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
void ComputeAllWorldSpaceBoundingBoxes (const TParticles< T, d > &Objects, const TArray< int32 > &AllObjects, const bool bUseVelocity, const T Dt, TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
void ComputeAllWorldSpaceBoundingBoxes (const TGeometryParticles< T, d > &Objects, const TArray< int32 > &AllObjects, const bool bUseVelocity, const T Dt, TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
void ComputeAllWorldSpaceBoundingBoxes (const TPBDRigidParticles< T, d > &Objects, const TArray< int32 > &AllObjects, const bool bUseVelocity, const T Dt, TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<typename ParticleView , typename T , int d>
TEnableIf< TModels_V< CParticleView, ParticleView > >::Type ComputeAllWorldSpaceBoundingBoxes (const ParticleView &Particles, const TArray< bool > &RequiresBounds, const bool bUseVelocity, const T Dt, TArray< TAABB< T, d > > &WorldSpaceBoxes)
 
template<typename ParticleView , typename T , int d>
TEnableIf<!TModels_V< CParticleView, ParticleView > >::Type ComputeAllWorldSpaceBoundingBoxes (const ParticleView &Particles, const TArray< bool > &RequiresBounds, const bool bUseVelocity, const T Dt, TArray< TAABB< T, d > > &WorldSpaceBoxes)
 
template<class OBJECT_ARRAY >
int32 GetObjectCount (const OBJECT_ARRAY &Objects)
 
template<class T , int d>
int32 GetObjectCount (const TParticles< T, d > &Objects)
 
template<class T , int d>
int32 GetObjectCount (const TGeometryParticles< T, d > &Objects)
 
template<class T , int d>
int32 GetObjectCount (const TPBDRigidParticles< T, d > &Objects)
 
template<class OBJECT_ARRAY >
bool IsDisabled (const OBJECT_ARRAY &Objects, const uint32 Index)
 
template<class T , int d>
bool IsDisabled (const TGeometryParticles< T, d > &Objects, const uint32 Index)
 
template<class T , int d>
bool IsDisabled (const TPBDRigidParticles< T, d > &Objects, const uint32 Index)
 
FORCEINLINE FChaosArchiveoperator<< (FChaosArchive &Ar, FBVHParticles &Value)
 
FORCEINLINE FArchiveoperator<< (FArchive &Ar, FBVHParticles &Value)
 
template<typename T , typename TAllocator >
FChaosArchiveoperator<< (FChaosArchive &Ar, TArray< T, TAllocator > &Array)
 
FORCEINLINE FChaosArchiveoperator<< (FChaosArchive &Ar, Chaos::FReal &Real)
 
template<typename T >
constexpr TEnableIf< TModels_V< CSerializablePtr, T >, bool >::Type IsSerializablePtr ()
 
template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TRefCountPtr< T > &Obj)
 
template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TUniquePtr< T > &Obj)
 
template<typename T , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TSharedPtr< T, Mode > &Obj)
 
template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TSerializablePtr< T > &Serializable)
 
template<typename T >
TEnableIf< T::AlwaysSerializable, FChaosArchive & >::Type operator<< (FChaosArchive &Ar, T *&Obj)
 
template<typename T , typename TAllocator >
TEnableIf< T::AlwaysSerializable, FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< T *, TAllocator > &Array)
 
template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TRefCountPtr< T >, TAllocator > &Array)
 
template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TArray< TRefCountPtr< T >, TAllocator >, TAllocator2 > &Array)
 
template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TUniquePtr< T >, TAllocator > &Array)
 
template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TArray< TUniquePtr< T >, TAllocator >, TAllocator2 > &Array)
 
template<typename T , typename TAllocator , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TSharedPtr< T, Mode >, TAllocator > &Array)
 
template<typename T , typename TAllocator , typename TAllocator2 , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TArray< TSharedPtr< T, Mode >, TAllocator >, TAllocator2 > &Array)
 
template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TSerializablePtr< T >, TAllocator > &Array)
 
template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type operator<< (FChaosArchive &Ar, TArray< TArray< TSerializablePtr< T >, TAllocator >, TAllocator2 > &Array)
 
 ENUM_CLASS_FLAGS (EUpdateClusterUnionPropertiesFlags)
 
template<typename TParticle >
void TransferClusterUnionShapeData (const TUniquePtr< Chaos::FPerShapeData > &ShapeData, TParticle *TemplateParticle, const TUniquePtr< Chaos::FPerShapeData > &TemplateShape, int32 ActorId, int32 ComponentId)
 
template<typename TClusterParticle , typename TParticle , typename TLambda >
void ModifyAdditionOfChildrenToClusterUnionGeometry (TClusterParticle *ClusterParticle, const TArray< TParticle * > &Particles, int32 ActorId, int32 ComponentId, TLambda &&Func)
 
template<typename TClusterParticle , typename TParticle >
void RemoveParticlesFromClusterUnionGeometry (TClusterParticle *ClusterParticle, const TArray< TParticle * > &ShapeParticles, TArray< TParticle * > &AllChildParticles)
 
bool CollisionVisitorShouldVisit (const FPBDCollisionConstraint *Constraint, const ECollisionVisitorFlags VisitFlags)
 
bool ParticlePairBroadPhaseFilter (const FGeometryParticleHandle *Particle1, const FGeometryParticleHandle *Particle2, const FIgnoreCollisionManager *IgnoreCollisionManager)
 
bool IsFilterValid (const FCollisionFilterData &Filter)
 
bool FilterHasSimEnabled (const FPerShapeData *Shape)
 
bool DoCollide (EImplicitObjectType ImplicitType, const FPerShapeData *Shape)
 
bool DoCollide (EImplicitObjectType Implicit0Type, const FPerShapeData *Shape0, EImplicitObjectType Implicit1Type, const FPerShapeData *Shape1)
 
bool ShapePairNarrowPhaseFilter (EImplicitObjectType Implicit0Type, const FPerShapeData *Shape0, EImplicitObjectType Implicit1Type, const FPerShapeData *Shape1)
 
uint32 OrderIndependentHashCombine (const uint32 A, const uint32 B)
 
bool AreParticlesInPreferredOrder (const FGeometryParticleHandle *Particle0, const FGeometryParticleHandle *Particle1)
 
bool ShouldSwapParticleOrder (const bool bIsDynamicOrSleeping0, const bool bIsDynamicOrSleeping1, const bool bIsParticle0Preferred)
 
bool ShouldSwapParticleOrder (const FGeometryParticleHandle *Particle0, const FGeometryParticleHandle *Particle1)
 
class UE_DEPRECATED (5.4, "No longer used") FCollisionParticlePairConstraintKey
 
 ENUM_CLASS_FLAGS (ECollisionVisitorFlags)
 
template<typename T >
constexprInvalidPhi ()
 
bool GetTriangleEdgeVerticesAtPosition (const FVec3 &Position, const FVec3 VertexA, const FVec3 VertexB, const FVec3 VertexC, int32 &OutEdgeVertexIndexA, int32 &OutEdgeVertexIndexB, const FReal BaryCentricTolerance=UE_KINDA_SMALL_NUMBER)
 
bool GetTriangleEdgeVerticesAtPosition (const FVec3 &Position, const FVec3 Vertices[], int32 &OutEdgeVertexIndexA, int32 &OutEdgeVertexIndexB, const FReal BaryCentricTolerance=UE_KINDA_SMALL_NUMBER)
 
template<typename ConvexType >
void ProjectOntoAxis (const ConvexType &Convex, const FVec3 &AxisN, const FVec3 &AxisX, FReal &PMin, FReal &PMax, int32 &MinVertexIndex, int32 &MaxVertexIndex, TArrayView< FReal > *VertexDs)
 
void ProjectOntoAxis (const FTriangle &Triangle, const FVec3 &AxisN, const FVec3 &AxisX, FReal &PMin, FReal &PMax, int32 &MinVertexIndex, int32 &MaxVertexIndex)
 
void ProjectOntoAxis (const FCapsule &Capsule, const FVec3 &AxisN, const FVec3 &AxisX, FReal &PMin, FReal &PMax, int32 &MinVertexIndex, int32 &MaxVertexIndex)
 
template<typename ConvexType >
CHAOS_API void ConstructConvexTriangleOneShotManifold2 (const ConvexType &Convex, const FTriangle &Triangle, const FReal CullDistance, FContactPointManifold &OutContactPoints)
 
template<>
bool PrePreFilterHelper (const FAccelerationStructureHandle &Payload, const Private::FSimOverlapVisitor &Visitor)
 
 ENUM_CLASS_FLAGS (EFilterFlags)
 
const TCHARLexToString (EFilterFlags FilterFlag)
 
FComplex operator* (const FReal Other, const FComplex Complex)
 
constexpr float MegaPascalToKgPerCmS2 (float MegaPascals)
 
template<typename T >
FORCEINLINE const TVec3< T > MinkowskiVert (const TVec3< T > *VertsABuffer, const TVec3< T > *VertsBBuffer, const int32 Idx)
 
template<typename T >
bool InitializeEPA (TArray< TVec3< T > > &VertsA, TArray< TVec3< T > > &VertsB, TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> SupportA, TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> SupportB, TEPAWorkingArray< TEPAEntry< T > > &OutEntries, TVec3< T > &OutTouchNormal)
 
template<typename T , typename SupportALambda , typename SupportBLambda >
bool InitializeEPA (TArray< TVec3< T > > &VertsA, TArray< TVec3< T > > &VertsB, const SupportALambda &SupportA, const SupportBLambda &SupportB, TEPAWorkingArray< TEPAEntry< T > > &OutEntries, TVec3< T > &OutTouchNormal)
 
template<typename T >
void EPAComputeVisibilityBorder (TEPAWorkingArray< TEPAEntry< T > > &Entries, int32 EntryIdx, const TVec3< T > &W, TEPAWorkingArray< FEPAFloodEntry > &OutBorderEdges, TEPAWorkingArray< FEPAFloodEntry > &ToVisitStack)
 
template<typename T >
void ComputeEPAResults (const TVec3< T > *VertsA, const TVec3< T > *VertsB, const TEPAEntry< T > &Entry, T &OutPenetration, TVec3< T > &OutDir, TVec3< T > &OutA, TVec3< T > &OutB)
 
const bool IsEPASuccess (EEPAResult EPAResult)
 
template<typename T , typename TSupportA , typename TSupportB >
EEPAResult EPA (TArray< TVec3< T > > &VertsABuffer, TArray< TVec3< T > > &VertsBBuffer, const TSupportA &SupportA, const TSupportB &SupportB, T &OutPenetration, TVec3< T > &OutDir, TVec3< T > &WitnessA, TVec3< T > &WitnessB, const FReal Eps=1.e-2f)
 
template<typename T >
EEPAResult EPA (TArray< TVec3< T > > &VertsABuffer, TArray< TVec3< T > > &VertsBBuffer, const TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> &SupportA, const TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> &SupportB, T &OutPenetration, TVec3< T > &OutDir, TVec3< T > &WitnessA, TVec3< T > &WitnessB, const FReal EpsRel=1.e-2f)
 
FORCEINLINE const VectorRegister4Float VectorMinkowskiVert (const VectorRegister4Float *VertsABuffer, const VectorRegister4Float *VertsBBuffer, const int32 Idx)
 
template<typename SupportALambda , typename SupportBLambda >
bool VectorInitializeEPA (TArray< VectorRegister4Float > &VertsA, TArray< VectorRegister4Float > &VertsB, const SupportALambda &SupportA, const SupportBLambda &SupportB, TEPAWorkingArray< VectorTEPAEntry > &OutEntries, VectorRegister4Float &OutTouchNormal)
 
FORCEINLINE_DEBUGGABLE void VectorEPAComputeVisibilityBorder (TEPAWorkingArray< VectorTEPAEntry > &Entries, int32 EntryIdx, const VectorRegister4Float &W, TEPAWorkingArray< FEPAFloodEntry > &OutBorderEdges, TEPAWorkingArray< FEPAFloodEntry > &ToVisitStack)
 
FORCEINLINE_DEBUGGABLE void VectorComputeEPAResults (const VectorRegister4Float *VertsA, const VectorRegister4Float *VertsB, const VectorTEPAEntry &Entry, VectorRegister4Float &OutPenetration, VectorRegister4Float &OutDir, VectorRegister4Float &OutA, VectorRegister4Float &OutB, EEPAResult &ResultStatus)
 
template<typename TSupportA , typename TSupportB >
EEPAResult VectorEPA (TArray< VectorRegister4Float > &VertsABuffer, TArray< VectorRegister4Float > &VertsBBuffer, const TSupportA &SupportA, const TSupportB &SupportB, VectorRegister4Float &OutPenetration, VectorRegister4Float &OutDir, VectorRegister4Float &WitnessA, VectorRegister4Float &WitnessB)
 
template<int d>
bool IsPowerOfTwo (const TVector< int32, d > &Counts)
 
template<typename TItemArray >
void MoveArrayItemsDown (TItemArray &Items, const int32 BeginIndex, const int32 EndIndex, const int32 DownShift)
 
template<typename TItemArray >
void RemoveArrayItemsAtSortedIndices (TItemArray &Items, const TArrayView< const int32 > &SortedIndicesToRemove)
 
void CHAOS_API PhysicsParallelForRange (int32 InNum, TFunctionRef< void(int32, int32)> InCallable, const int32 MinBatchSize, bool bForceSingleThreaded=false)
 
void CHAOS_API PhysicsParallelFor (int32 InNum, TFunctionRef< void(int32)> InCallable, bool bForceSingleThreaded=false)
 
void CHAOS_API InnerPhysicsParallelForRange (int32 InNum, TFunctionRef< void(int32, int32)> InCallable, const int32 MinBatchSize, bool bForceSingleThreaded=false)
 
void CHAOS_API InnerPhysicsParallelFor (int32 InNum, TFunctionRef< void(int32)> InCallable, bool bForceSingleThreaded=false)
 
void CHAOS_API PhysicsParallelForWithContext (int32 InNum, TFunctionRef< int32(int32, int32)> InContextCreator, TFunctionRef< void(int32, int32)> InCallable, bool bForceSingleThreaded=false)
 
bool CHAOS_API ShouldExecuteTasksInParallel (int32 InTaskNum)
 
FORCEINLINE uint32 GetTypeHash (const FParticleID &Unique)
 
template<typename T , int d, EGeometryParticlesSimType SimType>
FChaosArchiveoperator<< (FChaosArchive &Ar, TGeometryParticlesImp< T, d, SimType > &Particles)
 
uint32 GetTypeHash (const FSpatialAccelerationIdx &Idx)
 
FArchiveoperator<< (FArchive &Ar, FSpatialAccelerationIdx &Idx)
 
FORCEINLINE uint32 GetTypeHash (const FUniqueIdx &Unique)
 
 ENUM_CLASS_FLAGS (EGeometryParticleListMask)
 
template<typename QueryGeometry >
bool OverlapQuery (const FImplicitObject &A, const FRigidTransform3 &ATM, const QueryGeometry &B, const FRigidTransform3 &BTM, const FReal Thickness=0, FMTDInfo *OutMTD=nullptr)
 
template<EImplicitObjectType SweptType>
UE_INTERNAL bool TryRunSpecializedSweep (const FImplicitObject &SweptShape, const FRigidTransform3 &SweptShapeTM, const FImplicitObject &TestGeom, const FRigidTransform3 &TestGeomTM, const FVec3 &SweepDir, const FReal Length, const FReal Thickness, const bool bComputeMTD, bool &bOutResult, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal)
 
template<typename SweptGeometry >
bool SweepQuery (const FImplicitObject &A, const FRigidTransform3 &ATM, const SweptGeometry &B, const FRigidTransform3 &BTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness, const bool bComputeMTD)
 
bool SweepQuery (const FImplicitObject &A, const FRigidTransform3 &ATM, const FImplicitObject &B, const FRigidTransform3 &BTM, const FVec3 &Dir, const FReal Length, FReal &OutTime, FVec3 &OutPosition, FVec3 &OutNormal, int32 &OutFaceIndex, FVec3 &OutFaceNormal, const FReal Thickness, const bool bComputeMTD)
 
template<typename ConvexTypeA , typename ConvexTypeB >
bool CheckGJKIterationLimit (const int32 NumIterations, const ConvexTypeA &A, const ConvexTypeB &B)
 
template<typename TGeometryA , typename TGeometryB , typename T >
void CalculateQueryMargins (const TGeometryA &A, const TGeometryB &B, T &outMarginA, T &outMarginB)
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKIntersection (const TGeometryA &RESTRICT A, const TGeometryB &RESTRICT B, const TRigidTransform< T, 3 > &BToATM, const T InThicknessA=0, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0))
 
template<typename TGeometryA , typename TGeometryB >
bool GJKIntersectionSimd (const TGeometryA &RESTRICT A, const TGeometryB &RESTRICT B, const VectorRegister4Float &Translation, const VectorRegister4Float &Rotation, FRealSingle InThicknessA, const VectorRegister4Float &InitialDir)
 
bool GJKIntersectionSimd (const FGeomGJKHelperSIMD &RESTRICT A, const FGeomGJKHelperSIMD &RESTRICT B, FRealSingle EpsilonScale, const VectorRegister4Float &Translation, const VectorRegister4Float &Rotation, FRealSingle InThicknessA, const VectorRegister4Float &InitialDir)
 
template<typename T >
bool GJKIntersection (const FGeomGJKHelperSIMD &RESTRICT A, const FGeomGJKHelperSIMD &RESTRICT B, FReal EpsilonScale, const TRigidTransform< T, 3 > &BToATM, const T InThicknessA=0, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0))
 
template<typename TGeometryA , typename TGeometryB >
bool GJKIntersectionSameSpaceSimd (const TGeometryA &A, const TGeometryB &B, FRealSingle InThicknessA, const VectorRegister4Float &InitialDir)
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKPenetrationWarmStartable (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &BToATM, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormalA, TVec3< T > &OutNormalB, int32 &OutVertexA, int32 &OutVertexB, TGJKSimplexData< T > &InOutSimplexData, T &OutMaxSupportDelta, const T Epsilon=T(1.e-3), const T EPAEpsilon=T(1.e-2))
 Calculate the penetration data for two shapes using GJK and a warm-start buffer.
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKPenetrationWarmStartable2 (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &BToATM, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormalA, TVec3< T > &OutNormalB, int32 &OutVertexA, int32 &OutVertexB, TGJKSimplexData< T > &InOutSimplexData, T &OutMaxSupportDelta, const T Epsilon=T(1.e-3), const T EPAEpsilon=T(1.e-2))
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKPenetrationSameSpace (const TGeometryA &A, const TGeometryB &B, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormal, int32 &OutVertexA, int32 &OutVertexB, T &OutMaxSupportDelta, const TVec3< T > &InitialDir, const T Epsilon=T(1.e-3), const T EPAEpsilon=T(1.e-2))
 Calculate the penetration data for two shapes using GJK, assuming both shapes are already in the same space. This is intended for use with triangles which have been transformed into the space of the convex shape.
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKPenetrationSameSpace2 (const TGeometryA &A, const TGeometryB &B, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormal, int32 &OutVertexA, int32 &OutVertexB, T &OutMaxSupportDelta, const TVec3< T > &InitialDir, const T Epsilon=T(1.e-3), const T EPAEpsilon=T(1.e-2))
 
template<bool bNegativePenetrationAllowed = false, typename T >
bool GJKPenetrationImpl (const FGeomGJKHelper &A, const FGeomGJKHelper &B, const TRigidTransform< T, 3 > &BToATM, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormal, int32 &OutClosestVertexIndexA, int32 &OutClosestVertexIndexB, const T InThicknessA=0.0f, const T InThicknessB=0.0f, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T Epsilon=1.e-3f)
 
template<bool bNegativePenetrationAllowed = false, typename T , typename TGeometryA , typename TGeometryB >
bool GJKPenetration (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &BToATM, T &OutPenetration, TVec3< T > &OutClosestA, TVec3< T > &OutClosestB, TVec3< T > &OutNormal, int32 &OutClosestVertexIndexA, int32 &OutClosestVertexIndexB, const T InThicknessA=0.0f, const T InThicknessB=0.0f, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T Epsilon=1.e-3f)
 
template<typename T , typename TGeometryA , typename TGeometryB >
bool GJKRaycast (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &StartTM, const TVector< T, 3 > &RayDir, const T RayLength, T &OutTime, TVector< T, 3 > &OutPosition, TVector< T, 3 > &OutNormal, const T ThicknessA=0, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T ThicknessB=0)
 
template<typename T , EGJKTestSpace TestSpace = EGJKTestSpace::ALocalSpace>
bool GJKRaycast2ImplSimd (const FGeomGJKHelperSIMD &RESTRICT A, const FGeomGJKHelperSIMD &RESTRICT B, const T &BToARotation, const T &StartPoint, const T &RayDir, FRealSingle RayLength, FRealSingle &OutTime, T &OutPosition, T &OutNormal, bool bComputeMTD, const T &InitialDir)
 
bool GJKRaycast2Impl (const FGeomGJKHelperSIMD &A, const FGeomGJKHelperSIMD &B, const TRigidTransform< FReal, 3 > &StartTM, const TVector< FReal, 3 > &RayDir, const FReal RayLength, FReal &OutTime, TVector< FReal, 3 > &OutPosition, TVector< FReal, 3 > &OutNormal, const FReal GivenThicknessA, bool bComputeMTD, const TVector< FReal, 3 > &InitialDir, const FReal GivenThicknessB)
 
template<typename T = FReal, typename TGeometryA , typename TGeometryB >
bool GJKRaycast2 (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &StartTM, const TVector< T, 3 > &RayDir, const T RayLength, T &OutTime, TVector< T, 3 > &OutPosition, TVector< T, 3 > &OutNormal, const T GivenThicknessA=0, bool bComputeMTD=false, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T GivenThicknessB=0)
 
bool GJKRaycast2SameSpaceImpl (const FGeomGJKHelperSIMD &A, const FGeomGJKHelperSIMD &B, const TVector< FReal, 3 > &Start, const TVector< FReal, 3 > &RayDir, const FReal RayLength, FReal &OutTime, TVector< FReal, 3 > &OutPosition, TVector< FReal, 3 > &OutNormal, const FReal GivenThicknessA, bool bComputeMTD, const TVector< FReal, 3 > &InitialDir, const FReal GivenThicknessB)
 
template<typename T = FReal, typename TGeometryA , typename TGeometryB >
bool GJKRaycast2SameSpace (const TGeometryA &A, const TGeometryB &B, const TVector< T, 3 > &Start, const TVector< T, 3 > &RayDir, const T RayLength, T &OutTime, TVector< T, 3 > &OutPosition, TVector< T, 3 > &OutNormal, const T GivenThicknessA=0, bool bComputeMTD=false, const TVector< T, 3 > &InitialDir=TVector< T, 3 >(1, 0, 0), const T GivenThicknessB=0)
 
template<typename T , typename TGeometryA , typename TGeometryB >
TVector< T, 3 > GJKDistanceInitialV (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &BToATM)
 
template<typename T , typename TGeometryA , typename TGeometryB >
TVector< T, 3 > GJKDistanceInitialVFromRelativeTransform (const TGeometryA &A, const TGeometryB &B, const TRigidTransform< T, 3 > &BToATM)
 
template<typename T , typename TGeometryA , typename TGeometryB >
TVec3< T > GJKDistanceInitialVFromDirection (const TGeometryA &A, const TGeometryB &B, TVec3< T > Direction)
 
template<typename T , typename GJKShapeTypeA , typename GJKShapeTypeB >
EGJKDistanceResult GJKDistance (const GJKShapeTypeA &A, const GJKShapeTypeB &B, const TVec3< T > &InitialV, T &OutDistance, TVec3< T > &OutNearestA, TVec3< T > &OutNearestB, TVec3< T > &OutNormalA, const T Epsilon=(T) 1e-3, const int32 MaxIts=16)
 
template<typename T_SHAPE >
TGJKShape< T_SHAPEMakeGJKShape (const T_SHAPE &InShape)
 
template<typename T_SHAPE >
TGJKCoreShape< T_SHAPEMakeGJKCoreShape (const T_SHAPE &InShape)
 
template<typename T >
void ComputeGridBasedGraphSubColoringPointer (const TArray< TArray< int32 > > &ElementsPerColor, const TMPMGrid< T > &Grid, const int32 GridSize, TArray< TArray< int32 > > *&PreviousColoring, const TArray< TArray< int32 > > &ConstraintsNodesSet, TArray< TArray< TArray< int32 > > > &ElementsPerSubColors)
 
template<typename T >
CHAOS_API void ComputeGridBasedGraphSubColoringPointer (const TArray< TArray< int32 > > &ElementsPerColor, const TMPMGrid< T > &Grid, const int32 GridSize, TUniquePtr< TArray< TArray< int32 > > > &PreviousColoring, const TArray< TArray< int32 > > &ConstraintsNodesSet, TArray< TArray< TArray< int32 > > > &ElementsPerSubColors)
 
template<typename T >
CHAOS_API void ComputeWeakConstraintsColoring (const TArray< TArray< int32 > > &Indices, const TArray< TArray< int32 > > &SecondIndices, const Chaos::TDynamicParticles< T, 3 > &InParticles, TArray< TArray< int32 > > &ConstraintsPerColor)
 
template<typename T >
CHAOS_API TArray< TArray< int32 > > ComputeNodalColoring (const TArray< TVec4< int32 > > &Graph, const Chaos::TDynamicParticles< T, 3 > &InParticles, const int32 GraphParticlesStart, const int32 GraphParticlesEnd, const TArray< TArray< int32 > > &IncidentElements, const TArray< TArray< int32 > > &IncidentElementsLocalIndex)
 
template<typename T , typename ParticleType >
CHAOS_API TArray< TArray< int32 > > ComputeNodalColoring (const TArray< TArray< int32 > > &Graph, const Chaos::TDynamicParticles< T, 3 > &InParticles, const int32 GraphParticlesStart, const int32 GraphParticlesEnd, const TArray< TArray< int32 > > &IncidentElements, const TArray< TArray< int32 > > &IncidentElementsLocalIndex, const Chaos::TPBDActiveView< ParticleType > *InParticleActiveView=nullptr, TArray< int32 > *ParticleColorsOut=nullptr)
 
template<typename T >
CHAOS_API void ComputeExtraNodalColoring (const TArray< TArray< int32 > > &Graph, const TArray< TArray< int32 > > &ExtraGraph, const Chaos::TDynamicParticles< T, 3 > &InParticles, const TArray< TArray< int32 > > &IncidentElements, const TArray< TArray< int32 > > &ExtraIncidentElements, TArray< int32 > &ParticleColors, TArray< TArray< int32 > > &ParticlesPerColor)
 
template<typename T >
CHAOS_API void ComputeExtraNodalColoring (const TArray< TArray< int32 > > &StaticGraph, const TArray< TArray< int32 > > &DynamicGraph, const TArray< TArray< int32 > > &ExtraGraph, const Chaos::TDynamicParticles< T, 3 > &InParticles, const TArray< TArray< int32 > > &StaticIncidentElements, const TArray< TArray< int32 > > &DynamicIncidentElements, const TArray< TArray< int32 > > &ExtraIncidentElements, TArray< int32 > &ParticleColors, TArray< TArray< int32 > > &ParticlesPerColor)
 
FORCEINLINE FChaosArchiveoperator<< (FChaosArchive &Ar, FHeightField::FDataType::MinMaxHeights &Value)
 
FORCEINLINE FChaosArchiveoperator<< (FChaosArchive &Ar, FImplicitObject &Value)
 
FORCEINLINE FArchiveoperator<< (FArchive &Ar, FImplicitObject &Value)
 
template<>
bool HasBoundingBox (const TArray< Private::FImplicitBVHObject > &Objects, const int32 ObjectIndex)
 
template<class T , int d>
const TAABB< T, d > GetWorldSpaceBoundingBox (const TArray< Private::FImplicitBVHObject > &Objects, const int32 ObjectIndex, const TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<class T , int d>
void ComputeAllWorldSpaceBoundingBoxes (const TArray< Private::FImplicitBVHObject > &Objects, const TArray< int32 > &AllObjects, const bool bUseVelocity, const T Dt, TMap< int32, TAABB< T, d > > &WorldSpaceBoxes)
 
template<typename T >
const T * UnwrapImplicit (const FImplicitObject &Implicit, FVec3 &OutScale, FReal &OutMargin)
 Remove the Instanced or Scaled wrapper from an ImplicitObject of a known inner type and extract the instance properties.
 
void TImplicitObjectTransformSerializeHelper (FChaosArchive &Ar, FImplicitObjectPtr &Obj)
 
void TImplicitObjectTransformSerializeHelper (FChaosArchive &Ar, TSerializablePtr< FImplicitObject > &Obj)
 
void TImplicitObjectTransformSerializeHelper (FChaosArchive &Ar, const FImplicitObject *Obj)
 
FORCEINLINE bool IsInstanced (EImplicitObjectType Type)
 
FORCEINLINE bool IsScaled (EImplicitObjectType Type)
 
FORCEINLINE bool IsWeightedLattice (EImplicitObjectType Type)
 
FORCEINLINE EImplicitObjectType GetInnerType (EImplicitObjectType Type)
 
FName GetImplicitObjectTypeName (EImplicitObjectType Val)
 
bool SpatialAccelerationEqual (ESpatialAcceleration A, SpatialAccelerationType B)
 
bool operator== (ESpatialAcceleration A, SpatialAccelerationType B)
 
bool operator== (SpatialAccelerationType A, ESpatialAcceleration B)
 
bool operator!= (ESpatialAcceleration A, SpatialAccelerationType B)
 
bool operator!= (SpatialAccelerationType A, ESpatialAcceleration B)
 
template<typename TPayload >
TEnableIf<!TIsPointer< TPayload >::Value, FUniqueIdx >::Type GetUniqueIdx (const TPayload &Payload)
 
template<typename TPayload >
TEnableIf< TIsPointer< TPayload >::Value, FUniqueIdx >::Type GetUniqueIdx (const TPayload &Payload)
 
FORCEINLINE FUniqueIdx GetUniqueIdx (const int32 Payload)
 
FORCEINLINE FUniqueIdx GetUniqueIdx (const FUniqueIdx Payload)
 
template<typename TPayloadType , typename T >
FChaosArchiveoperator<< (FChaosArchive &Ar, TPayloadBoundsElement< TPayloadType, T > &PayloadElement)
 
template<typename TKey , typename TValue >
FChaosArchiveoperator<< (FChaosArchive &Ar, SQMapKeyWithValue< TKey, TValue > &Pair)
 
template<typename TKey , typename TValue >
FChaosArchiveoperator<< (FChaosArchive &Ar, TArrayAsMap< TKey, TValue > &Map)
 
template<typename TKey , typename TValue >
FChaosArchiveoperator<< (FChaosArchive &Ar, TSQMap< TKey, TValue > &Map)
 
template<typename TPayload , typename TVisitor >
TEnableIf<!TIsPointer< TPayload >::Value, bool >::Type PrePreFilterHelper (const TPayload &Payload, const TVisitor &Visitor)
 
template<typename TPayload , typename TVisitor >
TEnableIf< TIsPointer< TPayload >::Value, bool >::Type PrePreFilterHelper (const TPayload &Payload, const TVisitor &Visitor)
 
template<typename TVisitor >
FORCEINLINE bool PrePreFilterHelper (const int32 Payload, const TVisitor &Visitor)
 
template<typename T , int d, EGeometryParticlesSimType SimType>
FChaosArchiveoperator<< (FChaosArchive &Ar, TKinematicGeometryParticlesImp< T, d, SimType > &Particles)
 
template<typename T >
TRotation< T, 3 > CHAOS_API TransformToLocalSpace (PMatrix< T, 3, 3 > &Inertia)
 
template<typename TSurfaces >
FMassProperties CHAOS_API CalculateMassProperties (const FParticles &Vertices, const TSurfaces &Surfaces, const FReal Mass)
 
template<typename T >
KgCm3ToKgM3 (T Density)
 
template<typename T >
KgM3ToKgCm3 (T Density)
 
template<typename T >
GCm3ToKgCm3 (T Density)
 
template<typename T >
KgCm3ToGCm3 (T Density)
 
template<typename Func , class T >
void LanczosCG (Func multiplyA, TArray< T > &x, const TArray< T > &b, const int max_it, const T res=1e-4, bool check_residual=false, int min_parallel_batch_size=1000)
 
template<class T , typename Func , int32 d = 3>
void LanczosCG (Func multiplyA, TArray< TVector< T, d > > &x, const TArray< TVector< T, d > > &b, const int max_it, const T res=1e-4, const TArray< int32 > *use_list=nullptr)
 
template<typename T , typename TV , typename Func1 , typename Func2 , typename Func3 , typename Func4 , typename Func5 >
void LanczosCG (Func1 multiplyA, Func2 dotProduct, Func3 AXPY, Func4 scale, Func5 set, TArray< TV > &x, const TArray< TV > &b, const int max_it, const T res=T(1e-4), bool check_residual=false)
 
template<class T >
void RowMaj3x3Set (T *A, const int32 i, const int32 j, const T Value)
 
template<class T >
const T & RowMaj3x3Get (const T *A, const int32 i, const int32 j)
 
template<class T >
T & RowMaj3x3Get (T *A, const int32 i, const int32 j)
 
template<class T >
void RowMaj3x3SetRow (T *A, const int32 i, const T *Values)
 
template<class T , class TV >
void RowMaj3x3SetRow (T *A, const int32 i, const TV Value)
 
template<class T , class TV >
void RowMaj3x3GetRow (T *A, const int32 i, TV &Row)
 
template<class T >
void RowMaj3x3SetCol (T *A, const int32 j, const T *Values)
 
template<class T , class TV >
void RowMaj3x3SetCol (T *A, const int32 j, const TV Value)
 
template<class T , class TV >
void RowMaj3x3GetCol (T *A, const int32 j, TV &Col)
 
template<class T >
RowMaj3x3Determinant (const T A0, const T A1, const T A2, const T A3, const T A4, const T A5, const T A6, const T A7, const T A8)
 
template<class T >
RowMaj3x3Determinant (const T *A)
 
template<class T >
void RowMaj3x3Inverse (const T Det, const T A0, const T A1, const T A2, const T A3, const T A4, const T A5, const T A6, const T A7, const T A8, T *Inv)
 
template<class T >
void RowMaj3x3Inverse (const T Det, const T *A, T *Inv)
 
template<class T >
void RowMaj3x3Inverse (const T *A, T *Inv)
 
template<class T >
void RowMaj3x3Transpose (const T *A, T *Transpose)
 
template<class T , class TV >
TV RowMaj3x3Multiply (const T *A, const TV &x)
 
template<class T , class TV >
TV RowMaj3x3RobustSolveLinearSystem (const T *A, const TV &b)
 
template<class T , class TV = FVector3f, class TV_INT = FIntVector4, int32 d = 3>
void ComputeDeInverseAndElementMeasures (const TArray< TV_INT > &Mesh, const TArray< TV > &X, TArray< T > &De_inverse, TArray< T > &measure)
 
template<class T >
void Fill (TArray< T > &Array, const T Value)
 
int32 MinFlatIndex (const TArray< int32 > &ElemIdx, const TArray< int32 > &LocalIdx)
 
template<class T , class TV , class TV_INT = FIntVector4, int d = 3>
void PoissonSolve (const TArray< int32 > &InConstrainedNodes, const TArray< T > &ConstrainedWeights, const TArray< TV_INT > &Mesh, const TArray< TV > &X, const int32 MaxItCG, const T CGTol, TArray< T > &Weights)
 
template<class T , class TV_INT = FIntVector4, int d = 3>
void Laplacian (const TArray< TV_INT > &Mesh, const TArray< TArray< int32 > > &IncidentElements, const TArray< TArray< int32 > > &IncidentElementsLocalIndex, const TArray< T > &De_inverse, const TArray< T > &measure, const TArray< T > &u, TArray< T > &Lu)
 
template<class T , class TV_INT , int d = 3>
LaplacianEnergy (const TArray< TV_INT > &Mesh, const TArray< T > &De_inverse, const TArray< T > &measure, const TArray< T > &u)
 
template<class T , class TV , class TV_INT , int d = 3>
void ComputeFiberField (const TArray< TV_INT > &Mesh, const TArray< TV > &Vertices, const TArray< TArray< int32 > > &IncidentElements, const TArray< TArray< int32 > > &IncidentElementsLocalIndex, const TArray< int32 > &Origins, const TArray< int32 > &Insertions, TArray< TV > &Directions, TArray< T > &ScalarField, const int32 MaxIt=100, const T Tol=T(1e-7))
 
template<class TV , class T , bool NodalValues = false>
void Laplacian (const TUniformGrid< T, 3 > &UniformGrid, const TArray< TV > &U, TArray< TV > &Lu)
 
template<class TV , class T , bool NodalValues = false>
void PoissonSolve (const TArray< int32 > &InConstrainedNodes, const TArray< TV > &ConstrainedWeights, const TUniformGrid< T, 3 > &UniformGrid, const int32 MaxItCG, const TV CGTol, TArray< TV > &Weights, bool bCheckResidual=false, int32 MinParallelBatchSize=1000)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticlePositionRotation &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticleVelocities &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticleDynamics &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticleMassProps &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticleDynamicMisc &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FParticleNonFrequentData &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FCollisionData &Data)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FMaterialData &Data)
 
constexpr EChaosPropertyFlags ChaosPropertyToFlag (EChaosProperty Prop)
 
constexpr EShapeFlags ShapePropToFlag (EShapeProperty Prop)
 
template<typename T , int d, typename FConcrete >
void GeometryParticleDefaultConstruct (FConcrete &Concrete, const FGeometryParticleParameters &Params)
 
template<typename T , int d, typename FConcrete >
void KinematicGeometryParticleDefaultConstruct (FConcrete &Concrete, const FKinematicGeometryParticleParameters &Params)
 
template<typename T , int d, typename FConcrete >
void PBDRigidParticleDefaultConstruct (FConcrete &Concrete, const FPBDRigidParticleParameters &Params)
 
template<typename T , int d, typename FConcrete >
void PBDRigidClusteredParticleDefaultConstruct (FConcrete &Concrete, const FPBDRigidParticleParameters &Params)
 
template<typename FConcrete >
bool GeometryParticleSleeping (const FConcrete &Concrete)
 
FORCEINLINE_DEBUGGABLE bool PrePreQueryFilterImp (const FCollisionFilterData &QueryFilterData, const FCollisionFilterData &UnionFilterData)
 
FORCEINLINE_DEBUGGABLE uint32 GetChaosCollisionChannelAndExtraFilter (uint32 Word3, uint8 &OutMaskFilter)
 
FORCEINLINE_DEBUGGABLE bool PrePreSimFilterImp (const FCollisionFilterData &SimFilterData, const FCollisionFilterData &OtherSimFilterData)
 
template<typename T , int d>
TGeometryParticleHandle< T, d > * GetHandleHelper (TGeometryParticleHandle< T, d > *Handle)
 
template<typename T , int d>
const TGeometryParticleHandle< T, d > * GetHandleHelper (const TGeometryParticleHandle< T, d > *Handle)
 
template<typename T , int d>
TGeometryParticleHandle< T, d > * GetHandleHelper (TTransientGeometryParticleHandle< T, d > *Handle)
 
template<typename T , int d>
const TGeometryParticleHandle< T, d > * GetHandleHelper (const TTransientGeometryParticleHandle< T, d > *Handle)
 
template<typename ParticleType >
void UpdateParticleShapes (const TArray< ParticleType * > &ShapesParticles, const FImplicitObject *ImplicitObject, const FShapesArray &ShapesArray, const int32 ActorId, const int32 ComponentID)
 
template<typename T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TGeometryParticle< T, d > &Particle)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FAccelerationStructureHandle &AccelerationHandle)
 
void SetObjectStateHelper (IPhysicsProxyBase &Proxy, FPBDRigidParticle &Rigid, EObjectStateType InState, bool bAllowEvents=false, bool bInvalidate=true)
 
template<typename TParticleView , typename ContextCreatorType , typename Lambda >
void ParticleViewParallelForImp (const TParticleView &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename THandleView , typename ContextCreatorType , typename Lambda >
void HandleViewParallelForImp (const THandleView &HandleView, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TSOA , typename ContextCreatorType , typename Lambda >
void ParticlesParallelForImp (const TConstHandleView< TSOA > &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TSOA , typename ContextCreatorType , typename Lambda >
void ParticlesParallelForImp (const THandleView< TSOA > &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TSOA , typename ContextCreatorType , typename Lambda >
void ParticlesParallelForImp (const TConstParticleView< TSOA > &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TSOA , typename ContextCreatorType , typename Lambda >
void ParticlesParallelForImp (const TParticleView< TSOA > &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TParticle , typename ContextCreatorType , typename Lambda >
void ParticlesParallelForImp (const TArray< TParticle > &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TView , typename ContextCreatorType , typename Lambda >
void ParticlesSequentialFor (const TView &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func)
 
template<typename TView , typename ContextCreatorType , typename Lambda >
void ParticlesParallelFor (const TView &Particles, const ContextCreatorType &ContextCreator, const Lambda &Func, bool bForceSingleThreaded=false)
 
template<typename THandle >
TConstHandleIterator< typename THandle::TSOAType > MakeConstHandleIterator (const TArray< THandle * > &Handles)
 
template<typename THandle >
THandleIterator< typename THandle::TSOAType > MakeHandleIterator (const TArray< THandle * > &Handles)
 
template<typename THandle >
TConstHandleView< typename THandle::TSOAType > MakeConstHandleView (const TArray< THandle * > &Handles)
 
template<typename THandle >
THandleView< typename THandle::TSOAType > MakeHandleView (const TArray< THandle * > &Handles)
 
template<typename TSOA >
TConstParticleIterator< TSOA > MakeConstParticleIterator (const TArray< TSOAView< TSOA > > &SOAs)
 
template<typename TSOA >
TParticleIterator< TSOA > MakeParticleIterator (const TArray< TSOAView< TSOA > > &SOAs)
 
template<typename TSOA >
TConstParticleView< TSOA > MakeConstParticleView (TArray< TSOAView< TSOA > > &&SOAViews)
 
template<typename TSOA >
TConstParticleView< TSOA > MakeConstParticleView (TSOAView< TSOA > &&SOAView)
 
template<typename TSOA >
TParticleView< TSOA > MakeParticleView (TArray< TSOAView< TSOA > > &&SOAViews)
 
template<typename TSOA >
TConstParticleView< TSOA > MakeConstParticleView (TSOA *SOA)
 
template<typename TSOA >
TParticleView< TSOA > MakeParticleView (TSOA *SOA)
 
template<class T , int d>
class TPBDChainConstraints UE_DEPRECATED (4.27, "Deprecated. this class is to be deleted, use FPBDChainConstraints instead")
 
void CHAOS_API ComputeHashTable (const TArray< FVector > &ParticleArray, const FBox &BoundingBox, TMultiMap< int32, int32 > &HashTableMap, const float SpatialHashRadius)
 
template<typename T >
bool IsInterclusterEdge (const TPBDRigidParticleHandle< T, 3 > &Particle, const TConnectivityEdge< T > &Edge)
 
FORCEINLINE void CHAOS_API UpdateGeometry (Chaos::FPBDRigidClusteredParticleHandle *Parent, const TSet< FPBDRigidParticleHandle * > &Children, const FRigidClustering::FClusterMap &ChildrenMap, TSharedPtr< Chaos::FImplicitObject, ESPMode::ThreadSafe > ProxyGeometry, const FClusterCreationParameters &Parameters)
 
TArray< FVec3CleanCollisionParticles (const TArray< FVec3 > &Vertices, FAABB3 BBox, const FReal SnapDistance=(FReal) 0.01)
 
TArray< FVec3CleanCollisionParticles (const TArray< FVec3 > &Vertices, const FReal SnapDistance=(FReal) 0.01)
 
TArray< FVec3CleanCollisionParticles (FTriangleMesh &TriMesh, const TArrayView< const FVec3 > &Vertices, const FReal Fraction)
 
void CleanCollisionParticles (FTriangleMesh &TriMesh, const TArrayView< const FVec3 > &Vertices, const FReal Fraction, TSet< int32 > &ResultingIndices)
 
CHAOS_API void EnsureSleepingObjectState (EObjectStateType ObjectState)
 
template<typename T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TPBDRigidParticles< T, d > &Particles)
 
template<typename TParticleType >
const FString & GetParticleDebugName (const TParticleType &Particle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialCreated, FMaterialHandle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialDestroyed, FMaterialHandle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialUpdated, FMaterialHandle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialMaskCreated, FMaterialMaskHandle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialMaskDestroyed, FMaterialMaskHandle)
 
 DECLARE_MULTICAST_DELEGATE_OneParam (FOnMaterialMaskUpdated, FMaterialMaskHandle)
 
template<typename T , int d>
TVector< T, 2 > ComputeBarycentricInPlane (const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P2, const TVector< T, d > &P)
 
template<typename T , int d>
const TVector< T, d > FindClosestPointAndAlphaOnLineSegment (const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P, T &OutAlpha)
 
template<typename T , int d>
const TVector< T, d > FindClosestPointOnLineSegment (const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P)
 
template<typename T , int d>
TVector< T, d > FindClosestPointOnTriangle (const TVector< T, d > &ClosestPointOnPlane, const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P2, const TVector< T, d > &P)
 
template<typename T , int d>
TVector< T, d > FindClosestPointOnTriangle (const TPlane< T, d > &TrianglePlane, const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P2, const TVector< T, d > &P)
 
template<typename T , int d>
TVector< T, d > FindClosestPointAndBaryOnTriangle (const TVector< T, d > &P0, const TVector< T, d > &P1, const TVector< T, d > &P2, const TVector< T, d > &P, TVector< T, 3 > &Bary)
 
template<typename T , int d>
bool IntersectPlanes2 (TVector< T, d > &I, TVector< T, d > &D, const TPlane< T, d > &P1, const TPlane< T, d > &P2)
 
template<typename T , EChaosProperty PropName>
FChaosArchiveoperator<< (FChaosArchive &Ar, TChaosProperty< T, PropName > &Prop)
 
template<typename T , EShapeProperty PropName>
FChaosArchiveoperator<< (FChaosArchive &Ar, TShapeProperty< T, PropName > &Prop)
 
constexpr int8 NumBitsNeeded (const int8 MaxValue)
 
constexpr int8 LowBitsMask (const int8 NumBits)
 
template<typename T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TRigidParticles< T, d > &Particles)
 
bool IsMinkowskiSumFace (const FVec3 &A, const FVec3 &B, const FVec3 &C, const FVec3 &D)
 
template<typename ConvexImplicitType1 , typename ConvexImplicitType2 >
FSATResult SATPlaneVertex (const ConvexImplicitType1 &Convex1, const FRigidTransform3 &Convex1Transform, const ConvexImplicitType2 &Convex2, const FRigidTransform3 &Convex2Transform, const FReal CullDistance)
 
template<typename ConvexImplicitType1 , typename ConvexImplicitType2 >
FSATResult SATEdgeEdge (const ConvexImplicitType1 &Convex1, const FRigidTransform3 &Convex1Transform, const ConvexImplicitType2 &Convex2, const FRigidTransform3 &Convex2Transform, const FReal CullDistance)
 
template<typename ConvexImplicitType1 , typename ConvexImplicitType2 >
FSATResult SATPenetration (const ConvexImplicitType1 &Convex1, const FRigidTransform3 &Convex1Transform, const ConvexImplicitType2 &Convex2, const FRigidTransform3 &Convex2Transform, const FReal CullDistance, const FSATSettings &Settings)
 
template<typename T >
uint32 GetTypeHash (const TSerializablePtr< T > &Ptr)
 
template<typename T >
TSerializablePtr< T > MakeSerializable (const TUniquePtr< T > &Unique)
 
template<typename Ret , typename T >
TSerializablePtr< Ret > MakeSerializable (const TUniquePtr< T > &Unique)
 
template<typename T >
TSerializablePtr< T > MakeSerializable (const TSerializablePtr< T > &P)
 
template<typename T >
TSerializablePtr< T > MakeSerializable (const TUniquePtr< T > &&Unique)=delete
 
template<typename Ret , typename T >
TSerializablePtr< T > MakeSerializable (const TUniquePtr< T > &&Unique)=delete
 
template<typename T , ESPMode TESPMode>
TSerializablePtr< T > MakeSerializable (const TSharedPtr< T, TESPMode > &Shared)
 
template<typename T >
TSerializablePtr< T > MakeSerializable (const TRefCountPtr< T > &RefCount)
 
template<typename T >
TEnableIf< T::AlwaysSerializable, TSerializablePtr< T > >::Type & AsAlwaysSerializable (T *&Ptr)
 
template<typename T >
TEnableIf< T::AlwaysSerializable, TArray< TSerializablePtr< T > > >::Type & AsAlwaysSerializableArray (TArray< T * > &Ptrs)
 
FArchiveoperator<< (FArchive &Ar, FSerializedDataBuffer &Data)
 
template<class T , class U >
bool SaveLoadUtility (U &ObjectToSave, TCHAR const *SerializedBinaryDirectory, TCHAR const *BinaryFolderName, bool bSave, TArray< U > &ObjectsToTest)
 
FChaosArchiveoperator<< (FChaosArchive &Ar, FPerShapeData &Shape)
 
template<typename T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TSimpleGeometryParticles< T, d > &Particles)
 
template<typename T , int d>
TVector< T, d > LineSimplexFindOrigin (const TVector< T, d > *Simplex, int32 *Idxs, int32 &NumVerts, T *OutBarycentric)
 
template<typename T >
TVec3< T > LineSimplexFindOrigin2 (TVec3< T > *Simplex, int32 &NumVerts, T *OutBarycentric, TVec3< T > *A, TVec3< T > *B)
 
template<typename T >
bool SignMatch (T A, T B)
 
template<typename T >
TVec3< T > TriangleSimplexFindOrigin (const TVec3< T > *Simplex, FSimplex &Idxs, T *OutBarycentric)
 
template<typename T >
TVec3< T > TriangleSimplexFindOrigin2 (TVec3< T > *Simplex, int32 &NumVerts, T *OutBarycentric, TVec3< T > *As, TVec3< T > *Bs)
 
template<typename T >
TVec3< T > TetrahedronSimplexFindOrigin (const TVec3< T > *Simplex, FSimplex &Idxs, T *OutBarycentric)
 
template<typename T >
TVec3< T > TetrahedronSimplexFindOrigin2 (TVec3< T > *Simplex, int32 &NumVerts, T *OutBarycentric, TVec3< T > *A, TVec3< T > *B)
 
template<typename T >
void ReorderGJKArray (T *Data, FSimplex &Idxs)
 
template<typename T >
TVec3< T > SimplexFindClosestToOrigin (TVec3< T > *Simplex, FSimplex &Idxs, T *OutBarycentric, TVec3< T > *A=nullptr, TVec3< T > *B=nullptr)
 
template<typename T >
TVec3< T > SimplexFindClosestToOrigin2 (TVec3< T > *Simplex, int32 &NumVerts, T *OutBarycentric, TVec3< T > *A, TVec3< T > *B)
 
template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLEVectorLineSimplexFindOrigin (T *RESTRICT Simplex, int32 &RESTRICT NumVerts, T &RESTRICT OutBarycentric, T *RESTRICT A, T *RESTRICT B)
 
template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLETriangleSimplexFindOriginFast (T *RESTRICT Simplex, int32 &RESTRICT NumVerts, T &RESTRICT OutBarycentric, T *RESTRICT As, T *RESTRICT Bs)
 
template<typename T >
FORCEINLINE bool VectorSignMatch (T A, T B)
 
template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLEVectorTetrahedronSimplexFindOrigin (T *RESTRICT Simplex, int32 &RESTRICT NumVerts, T &RESTRICT OutBarycentric, T *RESTRICT A, T *RESTRICT B)
 
template<typename T , bool CalculatExtraInformation = true>
FORCEINLINE_DEBUGGABLEVectorSimplexFindClosestToOrigin (T *RESTRICT Simplex, int32 &RESTRICT NumVerts, T &RESTRICT OutBarycentric, T *RESTRICT A, T *RESTRICT B)
 
FArchiveoperator<< (FArchive &Ar, FWeightedInfluenceData &Value)
 
template<class T >
bool SmoothProject (const TConstArrayView< FVec3 > &Points, const TArray< TVec3< int32 > > &Tris, const TArray< FVec3 > &PointNormals, const FVec3 &Pos, const int32 TriIdx, FVec3 &Weights, TArray< TArray< FVec3 > > &TangentBases, T *B, T *C, TVec3< T > &C0, TVec3< T > &C1, TVec3< T > &C2, TVec3< T > &W0, TVec3< T > &W1, TVec3< T > &W2)
 
template<class T >
bool SmoothProject (const TConstArrayView< FVec3 > &Points, const TArray< TVec3< int32 > > &Tris, const TArray< FVec3 > &PointNormals, const FVec3 &Pos, const int32 TriIdx, FVec3 &Weights)
 
template<class T >
TArray< boolSmoothProject (const TConstArrayView< FVec3 > &Points, const TArray< TVec3< int32 > > &Tris, const TArray< FVec3 > &PointNormals, const FVec3 &Pos, const TArray< int32 > &TriIdx, TArray< FVec3 > &Weights, const bool UseFirstFound=false)
 
template<typename T >
void FreeObjHelper (T *&RawPtr)
 
template<typename TPayloadType , typename T , int d>
FChaosArchiveoperator<< (FChaosArchive &Ar, TSpatialAccelerationBucketEntry< TPayloadType, T, d > &BucketEntry)
 
template<typename TPayloadType , typename T , int d>
void FreeObjHelper (TSpatialAccelerationBucketEntry< TPayloadType, T, d > &BucketEntry)
 
template<typename T >
CopyFromHelper (const T &Src)
 
template<typename TPayloadType , typename T , int d>
TSpatialAccelerationBucketEntry< TPayloadType, T, d > CopyFromHelper (const TSpatialAccelerationBucketEntry< TPayloadType, T, d > &Src)
 
template<typename TObj >
FChaosArchiveoperator<< (FChaosArchive &Ar, TSpatialCollectionBucket< TObj > &Bucket)
 
template<int Idx, typename First , typename... Rest>
autoGetAccelerationsPerType (TSpatialTypeTuple< First, Rest... > &Types)
 
template<int Idx, typename First , typename... Rest>
const autoGetAccelerationsPerType (const TSpatialTypeTuple< First, Rest... > &Types)
 
template<typename SpatialAccelerationCollection >
std::enable_if_t< std::is_same_v< typename SpatialAccelerationCollection::TPayloadType, FAccelerationStructureHandle >, voidPBDComputeConstraintsLowLevel_Helper (FReal Dt, const SpatialAccelerationCollection &Accel, FSpatialAccelerationBroadPhase &BroadPhase, Private::FCollisionConstraintAllocator *Allocator, const FCollisionDetectorSettings &Settings, IResimCacheBase *ResimCache)
 
template<typename SpatialAccelerationCollection >
std::enable_if_t<!std::is_same_v< typename SpatialAccelerationCollection::TPayloadType, FAccelerationStructureHandle >, voidPBDComputeConstraintsLowLevel_Helper (FReal Dt, const SpatialAccelerationCollection &Accel, FSpatialAccelerationBroadPhase &BroadPhase, Private::FCollisionConstraintAllocator *Allocator, const FCollisionDetectorSettings &Settings, IResimCacheBase *ResimCache)
 
template<typename T >
FChaosArchiveoperator<< (FChaosArchive &Ar, TTetrahedron< T > &Value)
 
template<typename RealType >
TVec3< RealType > ToBarycentric (const TVec3< RealType > &Point, const TVec3< RealType > &V0, const TVec3< RealType > &V1, const TVec3< RealType > &V2)
 Convert the cartesian coordinate into a barycentric corrdinate. Compute barycentric coordinates/weights of Point inside 3D triangle (V0,V1,V2). If point is in triangle plane and inside triangle, coords will be positive and sum to 1. ie if result is a, then vPoint = a.x*V0 + a.y*V1 + a.z*V2.
 
template<typename RealType >
TVec3< RealType > FromBarycentric (const TVec3< RealType > &Barycentric, const TVec3< RealType > &V0, const TVec3< RealType > &V1, const TVec3< RealType > &V2)
 Convert the barycentric coordinate into a cartesian corrdinate.
 
template<typename T >
FChaosArchiveoperator<< (FChaosArchive &Ar, TTriangle< T > &Value)
 
template<typename T , typename ToleranceProvider = TRayTriangleIntersectionDefaultToleranceProvider<T>>
FORCEINLINE_DEBUGGABLE bool RayTriangleIntersectionAndBary (const TVec3< T > &RayStart, const TVec3< T > &RayDir, T RayLength, const TVec3< T > &A, const TVec3< T > &B, const TVec3< T > &C, T &OutT, TVec2< T > &OutBary, TVec3< T > &OutN)
 
template<typename T >
FORCEINLINE bool RayTriangleIntersection (const TVec3< T > &RayStart, const TVec3< T > &RayDir, T RayLength, const TVec3< T > &A, const TVec3< T > &B, const TVec3< T > &C, T &OutT, TVec3< T > &OutN)
 
FArchiveoperator<< (FArchive &Ar, FAABBVectorized &Bounds)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FTrimeshBVH::FChildData &ChildData)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FTrimeshBVH::FNode &Node)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FTrimeshBVH::FAABBType &Bounds)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FAABBVectorized &Bounds)
 
FORCEINLINE_DEBUGGABLE FChaosArchiveoperator<< (FChaosArchive &Ar, FTrimeshBVH &TrimeshBVH)
 
FORCEINLINE_DEBUGGABLE FArchiveoperator<< (FArchive &Ar, FTrimeshIndexBuffer &Buffer)
 
template<typename IdxType , typename ParticlesType >
void TriangleMeshTransformVertsHelper (const FVec3 &TriMeshScale, int32 TriIdx, const ParticlesType &Particles, const TArray< TVector< IdxType, 3 > > &Elements, FVec3 &OutA, FVec3 &OutB, FVec3 &OutC)
 
template<typename IdxType , typename ParticlesType >
void TriangleMeshTransformVertsHelper (const FRigidTransform3 &Transform, int32 TriIdx, const ParticlesType &Particles, const TArray< TVector< IdxType, 3 > > &Elements, FVec3 &OutA, FVec3 &OutB, FVec3 &OutC, int32 &OutVertexIndexA, int32 &OutVertexIndexB, int32 &OutVertexIndexC)
 
template<typename T , int d>
FArchiveoperator<< (FArchive &Ar, TUniformGridBase< T, d > &Value)
 
FArchiveoperator<< (FArchive &Ar, FWeightedLatticeInfluenceData &Value)
 
template<typename PayloadType >
bool IsEventDataEmpty (const PayloadType *Buffer)
 
template<typename PayloadType >
const TMap< IPhysicsProxyBase *, TArray< int32 > > * GetProxyToIndexMap (const PayloadType *Buffer)
 
FORCEINLINE bool IsInPhysicsThreadContext ()
 
FORCEINLINE bool IsInGameThreadContext ()
 
FORCEINLINE void EnsureIsInPhysicsThreadContext ()
 
FORCEINLINE void EnsureIsInGameThreadContext ()
 
template<typename TData , typename TObj >
void CopyDataFromObject (TData &Data, const TObj &Obj)
 
void CopyDataFromObject (FPBDJointSettings &Data, const FPBDJointConstraintHandle &Joint)
 
template<typename T >
FString ToStringHelper (const T &Val)
 
template<typename T >
FString ToStringHelper (const TVector< T, 2 > &Val)
 
FString ToStringHelper (void *Val)
 
FString ToStringHelper (const FReal Val)
 
FString ToStringHelper (const FRealSingle Val)
 
FString ToStringHelper (const EObjectStateType Val)
 
FString ToStringHelper (const EPlasticityType Val)
 
FString ToStringHelper (const EJointForceMode Val)
 
FString ToStringHelper (const EJointMotionType Val)
 
FString ToStringHelper (const bool Val)
 
FString ToStringHelper (const int32 Val)
 
int32 ComputeCircularSize (int32 NumFrames)
 
template<typename T >
const T * ConstifyHelper (T *Ptr)
 
template<typename T >
NoRefHelper (const T &Ref)
 
template<typename T , typename U >
TAABB< T, 3 > TransformedAABBHelper2 (const TAABB< T, 3 > &AABB, const TRigidTransform< U, 3 > &SpaceTransform)
 
template<typename T , typename U >
TAABB< T, 3 > InverseTransformedAABBHelper2 (const TAABB< T, 3 > &AABB, const TRigidTransform< U, 3 > &SpaceTransform)
 
template<typename T >
TAABB< T, 3 > TransformedAABBHelper (const TAABB< T, 3 > &AABB, const FMatrix44 &SpaceTransform)
 
TAABB< FReal, 3 > TransformedAABBHelperISPC (const TAABB< FReal, 3 > &AABB, const FTransform &SpaceTransform)
 
TAABB< Chaos::FRealSingle, 3 > TransformedAABBHelperISPC (const TAABB< Chaos::FRealSingle, 3 > &AABB, const FTransform &SpaceTransform)
 
TAABB< FReal, 3 > TransformedAABBHelperISPC2 (const TAABB< FReal, 3 > &AABB, const FTransform &SpaceTransform)
 
TAABB< Chaos::FRealSingle, 3 > TransformedAABBHelperISPC2 (const TAABB< Chaos::FRealSingle, 3 > &AABB, const FTransform &SpaceTransform)
 
template<class T , int d>
FORCEINLINE FArchiveoperator<< (FArchive &Ar, TAABB< T, d > &AABB)
 
template<typename T >
void TryBulkSerializeArrayNDBase (FArchive &Ar, TArray< T > &Array)
 
void TryBulkSerializeArrayNDBase (FArchive &Ar, TArray< float > &Array)
 
void TryBulkSerializeArrayNDBase (FArchive &Ar, TArray< TVec3< FRealSingle > > &Array)
 
float ConvertDoubleToFloat (double DoubleValue)
 
TVec3< floatConvertDoubleToFloat (TVec3< double > DoubleValue)
 
double ConvertFloatToDouble (float FloatValue)
 
TVec3< doubleConvertFloatToDouble (TVec3< float > FloatValue)
 
template<typename DOUBLE_T , typename FLOAT_T >
void TryBulkSerializeArrayNDBaseForDoubles (FArchive &Ar, TArray< DOUBLE_T > &DoubleTypedArray)
 
void TryBulkSerializeArrayNDBase (FArchive &Ar, TArray< double > &Array)
 
void TryBulkSerializeArrayNDBase (FArchive &Ar, TArray< TVec3< FRealDouble > > &Array)
 
template<typename Derived , typename T , int d>
FArchiveoperator<< (FArchive &Ar, TArrayNDBase< Derived, T, d > &ValueIn)
 
template<typename Derived , typename T , int d>
FArchiveoperator<< (FChaosArchive &Ar, TArrayNDBase< Derived, T, d > &ValueIn)
 
FString GetChaosVersionStringInner ()
 
template<typename T >
FArchiveoperator<< (FArchive &Ar, TCorePlane< T > &PlaneConcrete)
 
template<class T >
void ZeroChase (PMatrix< T, 3, 3 > &H, PMatrix< T, 3, 3 > &U, PMatrix< T, 3, 3 > &V)
 zero chasing the 3X3 matrix to bidiagonal form original form of H: x x 0 x x x 0 0 x after zero chase: x x 0 0 x x 0 0 x
 
template<class T >
void MakeUpperBidiag (PMatrix< T, 3, 3 > &H, PMatrix< T, 3, 3 > &U, PMatrix< T, 3, 3 > &V)
 make a 3X3 matrix to upper bidiagonal form original form of H: x x x x x x x x x after zero chase: x x 0 0 x x 0 0 x
 
template<class T >
void MakeLambdaShape (PMatrix< T, 3, 3 > &H, PMatrix< T, 3, 3 > &U, PMatrix< T, 3, 3 > &V)
 make a 3X3 matrix to lambda shape original form of H: x x x x x x x x x after : x 0 0 x x 0 x 0 x
 
template<class T >
void PolarDecomposition (const PMatrix< T, 2, 2 > &A, GivensRotation< T > &R, PMatrix< T, 2, 2 > &S_Sym)
 2x2 polar decomposition.
 
template<class T >
void PolarDecomposition (const PMatrix< T, 2, 2 > &A, PMatrix< T, 2, 2 > &R, PMatrix< T, 2, 2 > &S_Sym)
 2x2 polar decomposition.
 
template<class T >
void SingularValueDecomposition (const PMatrix< T, 2, 2 > &A, GivensRotation< T > &U, const TVector< T, 2 > &Sigma, GivensRotation< T > &V, const T tol=std::numeric_limits< T >::epsilon())
 2x2 SVD (singular value decomposition) A=USV'
 
template<class T >
void SingularValueDecomposition (const PMatrix< T, 2, 2 > &A, const PMatrix< T, 2, 2 > &U, const TVector< T, 2 > &Sigma, const PMatrix< T, 2, 2 > &V, const T tol=std::numeric_limits< T >::epsilon())
 2x2 SVD (singular value decomposition) A=USV'
 
template<class T >
WilkinsonShift (const T a1, const T b1, const T a2)
 Compute WilkinsonShift of the block a1 b1 b1 a2 based on the WilkinsonShift formula mu = c + d - sign (d) \ sqrt (d*d + b*b), where d = (a-c)/2.
 
template<int t, class T >
void Process (PMatrix< T, 3, 3 > &B, PMatrix< T, 3, 3 > &U, TVector< T, 3 > &sigma, PMatrix< T, 3, 3 > &V)
 Helper function of 3X3 SVD for Processing 2X2 SVD.
 
template<class T >
void FlipSign (int i, PMatrix< T, 3, 3 > &U, TVector< T, 3 > &sigma)
 Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma.
 
template<class T >
void SwapCols (PMatrix< T, 3, 3 > &A, const int i1, const int i2)
 
template<class T >
void Sort0 (PMatrix< T, 3, 3 > &U, TVector< T, 3 > &sigma, PMatrix< T, 3, 3 > &V)
 Helper function of 3X3 SVD for sorting singular values.
 
template<class T >
void Sort1 (PMatrix< T, 3, 3 > &U, TVector< T, 3 > &sigma, PMatrix< T, 3, 3 > &V)
 Helper function of 3X3 SVD for Sorting singular values.
 
template<class T >
int SingularValueDecomposition (const PMatrix< T, 3, 3 > &A, PMatrix< T, 3, 3 > &U, TVector< T, 3 > &sigma, PMatrix< T, 3, 3 > &V, T tol=std::numeric_limits< T >::epsilon())
 3X3 SVD (singular value decomposition) A=USV'
 
template<class T >
void PolarDecomposition (const PMatrix< T, 3, 3 > &A, PMatrix< T, 3, 3 > &R, PMatrix< T, 3, 3 > &S_Sym)
 3X3 polar decomposition.
 
template<class T >
void dRdFCorotated (const PMatrix< T, 3, 3 > &F, TVector< T, 81 > &dRdF)
 
template<class T1 , class T2 >
bool operator== (const Pair< T1, T2 > &First, const Pair< T1, T2 > &Second)
 
template<class T1 , class T2 >
bool operator< (const Pair< T1, T2 > &First, const Pair< T1, T2 > &Second)
 
template<class T1 , class T2 >
bool operator> (const Pair< T1, T2 > &First, const Pair< T1, T2 > &Second)
 
template<class T1 , class T2 >
Pair< T1, T2MakePair (const T1 &First, const T2 &Second)
 
bool operator== (const FRange &First, const FRange &Second)
 
template<class T >
TVector< T, 3 > operator* (const T S, const TVector< T, 3 > &V)
 
template<class T >
TVector< T, 3 > operator/ (const T S, const TVector< T, 3 > &V)
 
template<class T >
uint32 GetTypeHash (const Chaos::TVector< T, 2 > &V)
 
template<class T >
uint32 GetTypeHash (const Chaos::TVector< T, 3 > &V)
 
template<typename T , int d>
FArchiveSerializeReal (FArchive &Ar, TVector< T, d > &ValueIn)
 
template<int d>
FArchiveoperator<< (FArchive &Ar, TVector< FRealSingle, d > &ValueIn)
 
template<int d>
FArchiveoperator<< (FArchive &Ar, TVector< FRealDouble, d > &ValueIn)
 
template<typename T , int d>
FArchiveoperator<< (FArchive &Ar, TVector< T, d > &ValueIn)
 
const FName HandbrakeControlName ("Handbrake")
 
const FName ThrottleControlName ("Throttle")
 
const FName SteeringControlName ("Steering")
 
const FName BrakeControlName ("Brake")
 
const FName ClutchControlName ("Clutch")
 
const FName BoostControlName ("Boost")
 
const FName ReverseControlName ("Reverse")
 
const FName ChangeUpControlName ("ChangeUp")
 
const FName ChangeDownControlName ("ChangeDown")
 
const FName PitchControlName ("Pitch")
 
const FName RollControlName ("Roll")
 
const FName YawControlName ("Yaw")
 
FORCEINLINE float MToCmScaling ()
 
FORCEINLINE float CmToMScaling ()
 
FORCEINLINE float RPMToOmega (float RPM)
 
FORCEINLINE float OmegaToRPM (float Omega)
 
FORCEINLINE float KmHToCmS (float KmH)
 
FORCEINLINE float CmSToKmH (float CmS)
 
FORCEINLINE float CmSToMPH (float CmS)
 
FORCEINLINE float MPHToCmS (float MPH)
 
FORCEINLINE float MPHToMS (float MPH)
 
FORCEINLINE float MSToMPH (float MS)
 
FORCEINLINE float CmToM (float Cm)
 
FORCEINLINE FVector CmToM (const FVector &Cm)
 
FORCEINLINE float MToCm (float M)
 
FORCEINLINE FVector MToCm (const FVector &M)
 
FORCEINLINE float CmToMiles (float Cm)
 
FORCEINLINE float KmToMile (float Km)
 
FORCEINLINE float MileToKm (float Miles)
 
FORCEINLINE float M2ToCm2 (float M2)
 
FORCEINLINE float Cm2ToM2 (float Cm2)
 
FORCEINLINE float DegToRad (float InDeg)
 
FORCEINLINE float RadToDeg (float InRad)
 
FORCEINLINE float Sqr (float Val)
 
FORCEINLINE float TorqueMToCm (float TorqueIn)
 
FORCEINLINE float TorqueCmToM (float TorqueIn)
 

Variables

CHAOS_API int32 MaxDirtyElements = 10000
 
FAutoConsoleVariableRef CVarMaxDirtyElements (TEXT("p.MaxDirtyElements"), MaxDirtyElements, TEXT("The max number of dirty elements. This forces a flush which is very expensive"))
 
FRealSingle Chaos_Bounds_MaxInflationScale = 2.f
 
FAutoConsoleVariableRef CVarBoundsMaxInflatiuonScale (TEXT("p.Chaos.MaxInflationScale"), Chaos_Bounds_MaxInflationScale, TEXT("A limit on the bounds used to detect collisions when CCD is disabled. The bounds limit is this scale multiplied by the object's max dimension"))
 
int32 CheckBox = 1
 
FAutoConsoleVariableRef CVarCheckBox (TEXT("p.checkbox"), CheckBox, TEXT(""))
 
int32 FindAllIntersectionsSingleThreaded = 1
 
FAutoConsoleVariableRef CVarFindAllIntersectionsSingleThreaded (TEXT("p.FindAllIntersectionsSingleThreaded"), FindAllIntersectionsSingleThreaded, TEXT(""))
 
int32 UseAccumulationArray = 1
 
FAutoConsoleVariableRef CVarUseAccumulationArray (TEXT("p.UseAccumulationArray"), UseAccumulationArray, TEXT(""))
 
int32 SimDelay = 0
 
FAutoConsoleVariableRef CVarSimDelay (TEXT("p.simDelay"), SimDelay, TEXT(""))
 
bool bCachePushDataDirtyProxies = true
 
FAutoConsoleVariableRef CVarCachePushDataDirtyProxies (TEXT("p.Resim.CachePushDataDirtyProxies"), bCachePushDataDirtyProxies, TEXT("Default = false. Set true to enable resim caching dirty proxies in the push data from game thread to physics thread. This will make physics proxy changes from GT play out during resimulation."))
 
bool bCachePushDataAsyncInputs = true
 
FAutoConsoleVariableRef CVarCachePushDataAsyncInputs (TEXT("p.Resim.CachePushDataAsyncInputs"), bCachePushDataAsyncInputs, TEXT("Default = false. Set true to enable resim caching of async inputs in the push data from game thread to physics thread. This will make async inputs available again during resimulation."))
 
bool bCachePushDataSimCommands = true
 
FAutoConsoleVariableRef CVarCachePushDataSimCommands (TEXT("p.Resim.CachePushDataSimCommands"), bCachePushDataSimCommands, TEXT("Default = false. Set true to enable resim caching of sim commands in the push data from game thread to physics thread. This will make sim commands available again during resimulation."))
 
FRealSingle Chaos_Collision_EdgePrunePlaneDistance = 3.0
 
bool bChaos_Collision_EnableEdgePrune = true
 
bool bChaos_Collision_EnableLargeMeshManifolds = 1
 
FRealSingle Chaos_Collision_MeshContactNormalThreshold = 0.998f
 
bool bChaos_Collision_MeshManifoldSortByDistance = false
 
FRealSingle Chaos_Collision_GJKEpsilon = 1.e-6f
 
FRealSingle Chaos_Collision_EPAEpsilon = 1.e-6f
 
bool bChaos_Collision_UseConvexTriangleGJKSAT = true
 
FRealSingle Chaos_Collision_MeshContactNormalRejectionThreshold = 0.7f
 
int32 Chaos_Collision_MeshManifoldHashSize = 256
 
bool bChaos_Collision_EnableManifoldGJKInject = false
 
bool bChaos_Collision_EnableManifoldGJKReplace = false
 
FRealSingle Chaos_Manifold_MatchPositionTolerance = 0.3f
 
FRealSingle Chaos_Manifold_MatchNormalTolerance = 0.02f
 
FAutoConsoleVariableRef CVarChaos_Manifold_MatchPositionTolerance (TEXT("p.Chaos.Collision.Manifold.MatchPositionTolerance"), Chaos_Manifold_MatchPositionTolerance, TEXT("A tolerance as a fraction of object size used to determine if two contact points are the same"))
 
FAutoConsoleVariableRef CVarChaos_Manifold_MatchNormalTolerance (TEXT("p.Chaos.Collision.Manifold.MatchNormalTolerance"), Chaos_Manifold_MatchNormalTolerance, TEXT("A tolerance on the normal dot product used to determine if two contact points are the same"))
 
FRealSingle Chaos_Manifold_FrictionExactPositionTolerance = 0.2f
 
FRealSingle Chaos_Manifold_FrictionNearPositionTolerance = 1.0f
 
FAutoConsoleVariableRef CVarChaos_Manifold_FrictionExactPositionTolerance (TEXT("p.Chaos.Collision.Manifold.FrictionExactPositionTolerance"), Chaos_Manifold_FrictionExactPositionTolerance, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Manifold_FrictionNearPositionTolerance (TEXT("p.Chaos.Collision.Manifold.FrictionNearPositionTolerance"), Chaos_Manifold_FrictionNearPositionTolerance, TEXT(""))
 
FRealSingle Chaos_GBFCharacteristicTimeRatio = 1.0f
 
FAutoConsoleVariableRef CVarChaos_GBFCharacteristicTimeRatio (TEXT("p.Chaos.Collision.GBFCharacteristicTimeRatio"), Chaos_GBFCharacteristicTimeRatio, TEXT("The ratio between characteristic time and Dt"))
 
bool bChaos_Manifold_EnableFrictionRestore = true
 
FAutoConsoleVariableRef CVarChaos_Manifold_EnableFrictionRestore (TEXT("p.Chaos.Collision.Manifold.EnableFrictionRestore"), bChaos_Manifold_EnableFrictionRestore, TEXT(""))
 
FRealSingle Chaos_Collision_ConvexZeroMargin = 0.0f
 
FAutoConsoleVariableRef CVarChaos_Collision_ConvexZeroMargin (TEXT("p.Chaos.Collision.ConvexZeroMargin"), Chaos_Collision_ConvexZeroMargin, TEXT(""))
 
FRealSingle Chaos_Collision_Stiffness = -1.0f
 
FAutoConsoleVariableRef CVarChaos_Collision_Stiffness (TEXT("p.Chaos.Collision.Stiffness"), Chaos_Collision_Stiffness, TEXT("Override the collision solver stiffness (if >= 0)"))
 
bool bChaos_Collision_EnableOneWayInteraction = true
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableOneWayInteraction (TEXT("p.Chaos.Collision.EnableOneWayInteraction"), bChaos_Collision_EnableOneWayInteraction, TEXT("Whether the one-way interaction flag is respected in collision constraints"))
 
FRealSingle Chaos_Collision_OneWayStiffness = 0.5f
 
FAutoConsoleVariableRef CVarChaos_Collision_OneWayStiffness (TEXT("p.Chaos.Collision.OneWayStiffness"), Chaos_Collision_OneWayStiffness, TEXT("Collision solver stiffnes for one-way interactions"))
 
bool bChaos_Collision_EnableBoundsChecks = true
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableBoundsChecks (TEXT("p.Chaos.Collision.EnableBoundsChecks"), bChaos_Collision_EnableBoundsChecks, TEXT(""))
 
int32 Chaos_Collision_MaxManifoldPoints = -1
 
FAutoConsoleVariableRef CVarChaos_Collision_MaxManifoldPoints (TEXT("p.Chaos.Collision.MaxManifoldPoints"), Chaos_Collision_MaxManifoldPoints, TEXT(""))
 
bool bChaos_Collision_AllowGlobalInitialPhi = true
 
FAutoConsoleVariableRef CVarChaos_Collision_AllowGlobalInitialPhi (TEXT("p.Chaos.Collision.AllowGlobalInitialPhi"), bChaos_Collision_AllowGlobalInitialPhi, TEXT(""))
 
bool bChaos_Collision_SimpleAssignContact = true
 
FAutoConsoleVariableRef CVarChaos_Collision_SimpleAssignContacti (TEXT("p.Chaos.Collision.SimpleAssignContact"), bChaos_Collision_SimpleAssignContact, TEXT("Try to assign contact without worrying if the contact has been already assigned. Improve performance and ease to sleep when enabled."))
 
FCollisionTolerances Chaos_Manifold_Tolerances
 
FAutoConsoleVariableRef CVarConvexGeometryCheckEnable (TEXT("p.Chaos.ConvexGeometryCheckEnable"), FConvexBuilder::PerformGeometryCheck, TEXT("Perform convex geometry complexity check for Chaos physics."))
 
FAutoConsoleVariableRef CVarConvexGeometrySimplifyEnable (TEXT("p.Chaos.PerformGeometryReduction"), FConvexBuilder::PerformGeometryReduction, TEXT("Perform convex geometry simplification to increase performance in Chaos physics."))
 
FAutoConsoleVariableRef CVarConvexParticlesWarningThreshold (TEXT("p.Chaos.ConvexParticlesWarningThreshold"), FConvexBuilder::VerticesThreshold, TEXT("Threshold beyond which we warn about collision geometry complexity."))
 
FAutoConsoleVariableRef CvarUseGeometryTConvexHull3 (TEXT("p.Chaos.Convex.UseTConvexHull3Builder"), FConvexBuilder::bUseGeometryTConvexHull3, TEXT("Use the newer Geometry Tools code path for generating convex hulls when default build method is set.[def:true]"))
 
FAutoConsoleVariableRef CvarUseSimplifierForGeometryTConvexHull3 (TEXT("p.Chaos.Convex.UseSimplifierForTConvexHull3Builder"), FConvexBuilder::bUseSimplifierForTConvexHull3, TEXT("If default build is using the Geometry Tools convex hull algorithm, also use the corresponding simplifier. [def:false]"))
 
FRealSingle Chaos_Collision_Manifold_SphereCapsuleSizeThreshold = 0.5f
 
FAutoConsoleVariableRef CVarChaos_Manifold_SphereCapsuleSizeThreshold (TEXT("p.Chaos.Collision.Manifold.SphereCapsuleSizeThreshold"), Chaos_Collision_Manifold_SphereCapsuleSizeThreshold, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold = 0.8f
 
FAutoConsoleVariableRef CVarChaos_Manifold_CapsuleAxisAlignedThreshold (TEXT("p.Chaos.Collision.Manifold.CapsuleAxisAlignedThreshold"), Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction = 0.05f
 
FAutoConsoleVariableRef CVarChaos_Manifold_CapsuleDeepPenetrationFraction (TEXT("p.Chaos.Collision.Manifold.CapsuleDeepPenetrationFraction"), Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_CapsuleRadialContactFraction = 0.25f
 
FAutoConsoleVariableRef CVarChaos_Manifold_CapsuleRadialContactFraction (TEXT("p.Chaos.Collision.Manifold.CapsuleRadialContactFraction"), Chaos_Collision_Manifold_CapsuleRadialContactFraction, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction = 0.1f
 
FAutoConsoleVariableRef CVarChaos_Manifold_CapsuleMinContactDistanceFraction (TEXT("p.Chaos.Collision.Manifold.CapsuleMinContactDistanceFraction"), Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_PlaneContactNormalEpsilon = 0.001f
 
FAutoConsoleVariableRef CVarChaos_Manifold_PlaneContactNormalEpsilon (TEXT("p.Chaos.Collision.Manifold.PlaneContactNormalEpsilon"), Chaos_Collision_Manifold_PlaneContactNormalEpsilon, TEXT("Normal tolerance used to distinguish face contacts from edge-edge contacts"))
 
FRealSingle Chaos_Collision_Manifold_TriangleContactNormalThreshold = 0.75f
 
FAutoConsoleVariableRef CVarChaos_Manifold_TriangleContactNormalThreshold (TEXT("p.Chaos.Collision.Manifold.TriangleNormalThreshold"), Chaos_Collision_Manifold_TriangleContactNormalThreshold, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_EdgeContactNormalThreshold = 0.9f
 
FAutoConsoleVariableRef CVarChaos_Manifold_EdgeContactNormalThreshold (TEXT("p.Chaos.Collision.Manifold.EdgeNormalThreshold"), Chaos_Collision_Manifold_EdgeContactNormalThreshold, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_TriangleConvexMarginMultiplier = 0.5f
 
FAutoConsoleVariableRef CVarChaos_Manifold_TriangleConvexMarginMultipler (TEXT("p.Chaos.Collision.Manifold.TriangleConvexMarginMultiplier"), Chaos_Collision_Manifold_TriangleConvexMarginMultiplier, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_CullDistanceMarginMultiplier = 1.0f
 
FAutoConsoleVariableRef CVarChaosCollisioConvexManifoldCullDistanceMarginMultiplier (TEXT("p.Chaos.Collision.Manifold.CullDistanceMarginMultiplier"), Chaos_Collision_Manifold_CullDistanceMarginMultiplier, TEXT(""))
 
FRealSingle Chaos_Collision_Manifold_MinFaceSearchDistance = 1.0f
 
FAutoConsoleVariableRef CVarChaosCollisioConvexManifoldMinFaceSearchDistance (TEXT("p.Chaos.Collision.Manifold.MinFaceSearchDistance"), Chaos_Collision_Manifold_MinFaceSearchDistance, TEXT(""))
 
bool ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance = false
 
FAutoConsoleVariableRef CVarForceOneShotManifoldEdgeEdgeCaseZeroCullDistance (TEXT("p.Chaos.Collision.Manifold.ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance"), ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance, TEXT("If enabled, if one shot manifold hits edge/edge case, we will force a cull distance of zero. That means edge/edge contacts will be thrown out if separated at all. Only applies to Convex/Convex oneshot impl."))
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableManifoldReplace (TEXT("p.Chaos.Collision.EnableManifoldGJKReplace"), bChaos_Collision_EnableManifoldGJKReplace, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableManifoldInject (TEXT("p.Chaos.Collision.EnableManifoldGJKInject"), bChaos_Collision_EnableManifoldGJKInject, TEXT(""))
 
bool bChaos_Manifold_EnableGjkWarmStart = true
 
FAutoConsoleVariableRef CVarChaos_Manifold_EnableGjkWarmStart (TEXT("p.Chaos.Collision.Manifold.EnableGjkWarmStart"), bChaos_Manifold_EnableGjkWarmStart, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_GJKEpsilon (TEXT("p.Chaos.Collision.GJKEpsilon"), Chaos_Collision_GJKEpsilon, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EPAEpsilon (TEXT("p.Chaos.Collision.EPAEpsilon"), Chaos_Collision_EPAEpsilon, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableEdgePrune (TEXT("p.Chaos.Collision.EnableEdgePrune"), bChaos_Collision_EnableEdgePrune, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EdgePrunePlaneDistance (TEXT("p.Chaos.Collision.EdgePrunePlaneDistance"), Chaos_Collision_EdgePrunePlaneDistance, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableLargeMeshManifolds (TEXT("p.Chaos.Collision.EnableLargeMeshManifolds"), bChaos_Collision_EnableLargeMeshManifolds, TEXT("Whether to allow large mesh manifolds for collisions against meshes (required for good behaviour)"))
 
FAutoConsoleVariableRef CVarChaos_Collision_MeshContactNormalThreshold (TEXT("p.Chaos.Collision.MeshContactNormalThreshold"), Chaos_Collision_MeshContactNormalThreshold, TEXT("Treat contact with a dot product between the normal and the triangle face greater than this as face collisions"))
 
FAutoConsoleVariableRef CVarChaos_Collision_MeshContactNormalRejectionThreshold (TEXT("p.Chaos.Collision.MeshContactNormalRejectionThreshold"), Chaos_Collision_MeshContactNormalRejectionThreshold, TEXT("Don't correct edge and vertex normals if they are beyond the valid range by more than this"))
 
FAutoConsoleVariableRef CVarChaos_Collision_LargeMeshManifoldSortByDistance (TEXT("p.Chaos.Collision.SortMeshManifoldByDistance"), bChaos_Collision_MeshManifoldSortByDistance, TEXT("Sort large mesh manifold points by |RxN| for improved solver stability (less rotation in first iteration)"))
 
FAutoConsoleVariableRef CVarChaos_Collision_MeshManifoldHashSize (TEXT("p.Chaos.Collision.MeshManifoldHashSize"), Chaos_Collision_MeshManifoldHashSize, TEXT("Hash table size to use in vertex and edge maps in convex-mesh collision"))
 
bool bChaos_Collision_EnableMeshManifoldOptimizedLoop = true
 
bool bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh = true
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableMeshManifoldOptimizedLoop (TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoop"), bChaos_Collision_EnableMeshManifoldOptimizedLoop, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh (TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoopTriMesh"), bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh, TEXT(""))
 
bool bChaos_Collision_EnableMACDFallback = false
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableMACDFallback (TEXT("p.Chaos.Collision.EnableMACDFallback"), bChaos_Collision_EnableMACDFallback, TEXT(""))
 
bool bChaos_Collision_EnableMACDPreManifoldFix = false
 
FAutoConsoleVariableRef CVarChaos_Collision_EnableMACDPreManifoldFix (TEXT("p.Chaos.Collision.EnableMACDPreManifoldFix"), bChaos_Collision_EnableMACDPreManifoldFix, TEXT(""))
 
bool bChaos_Collision_UseGJK2 = false
 
FAutoConsoleVariableRef CVarChaos_Collision_UseGJK2 (TEXT("p.Chaos.Collision.UseGJK2"), bChaos_Collision_UseGJK2, TEXT(""))
 
bool bChaos_Collision_OneSidedTriangleMesh = true
 
bool bChaos_Collision_OneSidedHeightField = true
 
FAutoConsoleVariableRef CVarChaos_Collision_OneSidedTriangleMesh (TEXT("p.Chaos.Collision.OneSidedTriangleMesh"), bChaos_Collision_OneSidedTriangleMesh, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_OneSidedHeightfield (TEXT("p.Chaos.Collision.OneSidedHeightField"), bChaos_Collision_OneSidedHeightField, TEXT(""))
 
FRealSingle Chaos_Collision_TriMeshPhiToleranceScale = 1.0f
 
FRealSingle Chaos_Collision_TriMeshDistanceTolerance = 0.1f
 
FAutoConsoleVariableRef CVarChaos_Collision_TriMeshDistanceolerance (TEXT("p.Chaos.Collision.TriangeMeshDistanceTolerance"), Chaos_Collision_TriMeshDistanceTolerance, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_TriMeshPhiToleranceScale (TEXT("p.Chaos.Collision.TriangeMeshPhiToleranceScale"), Chaos_Collision_TriMeshPhiToleranceScale, TEXT(""))
 
bool bChaos_Collision_UseCapsuleTriMesh2 = true
 
FAutoConsoleVariableRef CVarChaos_Collision_UseCapsuleTriMesh2 (TEXT("p.Chaos.Collision.UseCapsuleTriMesh2"), bChaos_Collision_UseCapsuleTriMesh2, TEXT(""))
 
int32 Chaos_Collision_ConvexTriMeshMode = 1
 
FAutoConsoleVariableRef CVarChaos_Collision_UseConvexTriMesh2 (TEXT("p.Chaos.Collision.ConvexTriMeshMode"), Chaos_Collision_ConvexTriMeshMode, TEXT(""))
 
bool bChaos_Collision_ConvexTriMeshBackFaceCull = true
 
FAutoConsoleVariableRef CVarChaos_Collision_ConvexTriMeshBackFaceCull (TEXT("p.Chaos.Collision.ConvexTriMeshBackFaceCull"), bChaos_Collision_ConvexTriMeshBackFaceCull, TEXT(""))
 
bool bChaos_Collision_ConvexTriMeshInsideCull = true
 
FAutoConsoleVariableRef CVarChaos_Collision_ConvexTriMeshInsideCull (TEXT("p.Chaos.Collision.ConvexTriMeshInsideCull"), bChaos_Collision_ConvexTriMeshInsideCull, TEXT(""))
 
FAutoConsoleVariableRef CVarChaos_Collision_UseConvexTriangleSAT (TEXT("p.Chaos.Collision.UseConvexTriangleGJKSAT"), bChaos_Collision_UseConvexTriangleGJKSAT, TEXT(""))
 
bool bChaos_Collision_ConvexTriMeshSortByPhi = false
 
FAutoConsoleVariableRef CVarChaos_Collision_ConvexTriMeshSortByPhi (TEXT("p.Chaos.Collision.ConvexTriMeshSortByPhi"), bChaos_Collision_ConvexTriMeshSortByPhi, TEXT(""))
 
bool bChaos_Collision_ConvexTriMeshSortByDistance = false
 
FAutoConsoleVariableRef CVarChaos_Collision_ConvexTriMeshSortByDistance (TEXT("p.Chaos.Collision.ConvexTriMeshSortByDistance"), bChaos_Collision_ConvexTriMeshSortByDistance, TEXT(""))
 
bool Chaos_MinEvolution_ForceMaxConstraintIterations = false
 
FAutoConsoleVariableRef CVarChaosMinEvolutionForceMaxConstraintIterations (TEXT("p.Chaos.MinEvolution.ForceMaxConstraintIterations"), Chaos_MinEvolution_ForceMaxConstraintIterations, TEXT("Whether to force constraints to always use the worst-case maximum number of iterations"))
 
FRealSingle SecondChannelDelay = 0.05f
 
FAutoConsoleVariableRef CVarSecondChannelDelay (TEXT("p.SecondChannelDelay"), SecondChannelDelay, TEXT(""))
 
int32 DefaultNumActiveChannels = 1
 
FAutoConsoleVariableRef CVarNumActiveChannels (TEXT("p.NumActiveChannels"), DefaultNumActiveChannels, TEXT(""))
 
CHAOS_API int32 GSingleThreadedPhysics = 0
 
CHAOS_API int32 InnerParallelForBatchSize = 0
 
CHAOS_API int32 MinRangeBatchSize = 0
 
CHAOS_API int32 MaxNumWorkers = 100
 
CHAOS_API int32 SmallBatchSize = 10
 
CHAOS_API int32 LargeBatchSize = 100
 
CHAOS_API int32 MinParallelTaskSize = 0
 
CHAOS_API bool bDisablePhysicsParallelFor = false
 
CHAOS_API bool bDisableParticleParallelFor = false
 
CHAOS_API bool bDisableCollisionParallelFor = false
 
FAutoConsoleVariableRef CVarDisablePhysicsParallelFor (TEXT("p.Chaos.DisablePhysicsParallelFor"), bDisablePhysicsParallelFor, TEXT("Disable parallel execution in Chaos Evolution"))
 
FAutoConsoleVariableRef CVarDisableParticleParallelFor (TEXT("p.Chaos.DisableParticleParallelFor"), bDisableParticleParallelFor, TEXT("Disable parallel execution for Chaos Particles (Collisions, "))
 
FAutoConsoleVariableRef CVarDisableCollisionParallelFor (TEXT("p.Chaos.DisableCollisionParallelFor"), bDisableCollisionParallelFor, TEXT("Disable parallel execution for Chaos Collisions (also disabled by DisableParticleParallelFor)"))
 
FAutoConsoleVariableRef CVarInnerPhysicsBatchSize (TEXT("p.Chaos.InnerParallelForBatchSize"), InnerParallelForBatchSize, TEXT("Set the batch size threshold for inner parallel fors"))
 
FAutoConsoleVariableRef CVarMinRangeBatchSize (TEXT("p.Chaos.MinRangeBatchSize"), MinRangeBatchSize, TEXT("Set the min range batch size for parallel for"))
 
FAutoConsoleVariableRef CVarMaxRangeBatchWorkers (TEXT("p.Chaos.MaxNumWorkers"), MaxNumWorkers, TEXT("Set the max number of workers for physics"))
 
FAutoConsoleVariableRef CVarSmallBatchSize (TEXT("p.Chaos.SmallBatchSize"), SmallBatchSize, TEXT("Small batch size for chaos parallel loops"))
 
FAutoConsoleVariableRef CVarLargeBatchSize (TEXT("p.Chaos.LargeBatchSize"), LargeBatchSize, TEXT("Large batch size for chaos parallel loops"))
 
FAutoConsoleVariableRef CVarMinParallelTaskSize (TEXT("p.Chaos.MinParallelTaskSize"), MinParallelTaskSize, TEXT("Minimum number of tasks required to start parallel task execution on worker threads, set this higher to encourage single threaded execution"))
 
FAutoConsoleTaskPriority CPrio_FPhysicsTickTask (TEXT("TaskGraph.TaskPriorities.PhysicsTickTask"), TEXT("Task and thread priotiry for Chaos physics tick"), ENamedThreads::HighThreadPriority, ENamedThreads::NormalTaskPriority, ENamedThreads::HighTaskPriority)
 
int32 PhysicsRunsOnGT = 0
 
FAutoConsoleVariableRef CVarPhysicsRunsOnGT (TEXT("p.PhysicsRunsOnGT"), PhysicsRunsOnGT, TEXT("If true the physics thread runs on the game thread, but will still go wide on tasks like collision detection"))
 
CHAOS_API int32 UseAsyncInterpolation = 1
 
FAutoConsoleVariableRef CVarUseAsyncInterpolation (TEXT("p.UseAsyncInterpolation"), UseAsyncInterpolation, TEXT("Whether to interpolate when async mode is enabled"))
 
CHAOS_API int32 ForceDisableAsyncPhysics = 0
 
FAutoConsoleVariableRef CVarForceDisableAsyncPhysics (TEXT("p.ForceDisableAsyncPhysics"), ForceDisableAsyncPhysics, TEXT("Whether to force async physics off regardless of other settings"))
 
auto LambdaMul
 
auto LambdaAsyncMode
 
CHAOS_API FRealSingle AsyncInterpolationMultiplier = 2.f
 
FAutoConsoleVariableRef CVarAsyncInterpolationMultiplier (TEXT("p.AsyncInterpolationMultiplier"), AsyncInterpolationMultiplier, TEXT("How many multiples of the fixed dt should we look behind for interpolation"), LambdaMul)
 
int32 AsyncPhysicsBlockMode = 0
 
FAutoConsoleVariableRef CVarAsyncPhysicsBlockMode (TEXT("p.AsyncPhysicsBlockMode"), AsyncPhysicsBlockMode, TEXT("Setting to 0 blocks on any physics steps generated from past GT Frames, and blocks on none of the tasks from current frame." " 1 blocks on everything except the single most recent task (including tasks from current frame). 1 should gurantee we will always have a future output for interpolation from 2 frames in the past." " 2 doesn't block the game thread, physics steps could be eventually be dropped if taking too much time."), LambdaAsyncMode)
 
int32 MaxPhysicsStepsPerGameTick = 3
 
FAutoConsoleVariableRef CVarMaxPhysicsStepsPerGameTick (TEXT("p.MaxPhysicsStepsPerGameTick"), MaxPhysicsStepsPerGameTick, TEXT("The maximum number of physics steps per gametick frame."))
 
FRealSingle ClosestIntersectionStepSizeMultiplier = 0.5f
 
FAutoConsoleVariableRef CVarClosestIntersectionStepSizeMultiplier (TEXT("p.ClosestIntersectionStepSizeMultiplier"), ClosestIntersectionStepSizeMultiplier, TEXT("When raycasting we use this multiplier to substep the travel distance along the ray. Smaller number gives better accuracy at higher cost"))
 
FAutoConsoleVariableRef CVarChaosLinearSystemPreconditioner (TEXT("p.Chaos.LinearSystem.Preconditioner"), PreconditionerType, TEXT("0 = Diagonal, 1 = IncompleteCholesky"))
 
int32 CollisionParticlesBVHDepth = 4
 
FAutoConsoleVariableRef CVarCollisionParticlesBVHDepth (TEXT("p.CollisionParticlesBVHDepth"), CollisionParticlesBVHDepth, TEXT("The maximum depth for collision particles bvh"))
 
int32 ConstraintBPBVHDepth = 2
 
FAutoConsoleVariableRef CVarConstraintBPBVHDepth (TEXT("p.ConstraintBPBVHDepth"), ConstraintBPBVHDepth, TEXT("The maximum depth for constraint bvh"))
 
int32 BPTreeOfGrids = 1
 
FAutoConsoleVariableRef CVarBPTreeOfGrids (TEXT("p.BPTreeOfGrids"), BPTreeOfGrids, TEXT("Whether to use a seperate tree of grids for bp"))
 
FRealSingle CollisionFrictionOverride = -1.0f
 
FAutoConsoleVariableRef CVarCollisionFrictionOverride (TEXT("p.CollisionFriction"), CollisionFrictionOverride, TEXT("Collision friction for all contacts if >= 0"))
 
FRealSingle CollisionRestitutionOverride = -1.0f
 
FAutoConsoleVariableRef CVarCollisionRestitutionOverride (TEXT("p.CollisionRestitution"), CollisionRestitutionOverride, TEXT("Collision restitution for all contacts if >= 0"))
 
FRealSingle CollisionAngularFrictionOverride = -1.0f
 
FAutoConsoleVariableRef CVarCollisionAngularFrictionOverride (TEXT("p.CollisionAngularFriction"), CollisionAngularFrictionOverride, TEXT("Collision angular friction for all contacts if >= 0"))
 
FRealSingle CollisionBaseFrictionImpulseOverride = -1.0f
 
FAutoConsoleVariableRef CVarCollisionBaseFrictionImpulseOverride (TEXT("p.CollisionBaseFrictionImpulse"), CollisionBaseFrictionImpulseOverride, TEXT("Collision base friction position impulse for all contacts if >= 0"))
 
CHAOS_API int32 EnableCollisions = 1
 
FAutoConsoleVariableRef CVarEnableCollisions (TEXT("p.EnableCollisions"), EnableCollisions, TEXT("Enable/Disable collisions on the Chaos solver."))
 
FRealSingle DefaultCollisionFriction = 0
 
FAutoConsoleVariableRef CVarDefaultCollisionFriction (TEXT("p.DefaultCollisionFriction"), DefaultCollisionFriction, TEXT("Collision friction default value if no materials are found."))
 
FRealSingle DefaultCollisionRestitution = 0
 
FAutoConsoleVariableRef CVarDefaultCollisionRestitution (TEXT("p.DefaultCollisionRestitution"), DefaultCollisionRestitution, TEXT("Collision restitution default value if no materials are found."))
 
FRealSingle CollisionRestitutionThresholdOverride = -1.0f
 
FAutoConsoleVariableRef CVarDefaultCollisionRestitutionThreshold (TEXT("p.CollisionRestitutionThreshold"), CollisionRestitutionThresholdOverride, TEXT("Collision restitution threshold override if >= 0 (units of acceleration)"))
 
int32 CollisionCanAlwaysDisableContacts = 0
 
FAutoConsoleVariableRef CVarCollisionCanAlwaysDisableContacts (TEXT("p.CollisionCanAlwaysDisableContacts"), CollisionCanAlwaysDisableContacts, TEXT("Collision culling will always be able to permanently disable contacts"))
 
int32 CollisionCanNeverDisableContacts = 0
 
FAutoConsoleVariableRef CVarCollisionCanNeverDisableContacts (TEXT("p.CollisionCanNeverDisableContacts"), CollisionCanNeverDisableContacts, TEXT("Collision culling will never be able to permanently disable contacts"))
 
bool CollisionsAllowParticleTracking = true
 
FAutoConsoleVariableRef CVarCollisionsAllowParticleTracking (TEXT("p.Chaos.Collision.AllowParticleTracking"), CollisionsAllowParticleTracking, TEXT("Allow particles to track their collisions constraints when their DoBufferCollisions flag is enable [def:true]"))
 
bool bCollisionsEnableEdgeCollisionPruning = true
 
bool bCollisionsEnableMeshCollisionPruning = true
 
bool bCollisionsEnableSubSurfaceCollisionPruning = false
 
FAutoConsoleVariableRef CVarCollisionsEnableEdgeCollisionPruning (TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT(""))
 
FAutoConsoleVariableRef CVarCollisionsEnableMeshCollisionPruning (TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT(""))
 
FAutoConsoleVariableRef CVarCollisionsEnableSubSurfaceCollisionPruning (TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT(""))
 
bool DebugDrawProbeDetection = false
 
FAutoConsoleVariableRef CVarDebugDrawProbeDetection (TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection."))
 
constexpr int32 ConstraintChildIndex = 0
 
constexpr int32 ConstraintParentIndex = 1
 
bool bExcludeFreeJointInertiaConditioning = true
 
FAutoConsoleVariableRef CVarChaosExcludeFreeJointInertiaConditioning (TEXT("p.Chaos.ExcludeFreeJointForInertiaConditioning"), bExcludeFreeJointInertiaConditioning, TEXT("Exclude the effects from free joints when computing inertia conditioning"))
 
FRealSingle ClusterDistanceThreshold = 100.f
 
FAutoConsoleVariableRef CVarClusterDistance (TEXT("p.ClusterDistanceThreshold"), ClusterDistanceThreshold, TEXT("How close a cluster child must be to a contact to break off"))
 
int32 UseConnectivity = 1
 
FAutoConsoleVariableRef CVarUseConnectivity (TEXT("p.UseConnectivity"), UseConnectivity, TEXT("Whether to use connectivity graph when breaking up clusters"))
 
bool bCheckForInterclusterEdgesOnRelease = true
 
FAutoConsoleVariableRef CVarCheckForInterclusterEdgesOnRelease (TEXT("p.Chaos.CheckForInterclusterEdgesOnRelease"), bCheckForInterclusterEdgesOnRelease, TEXT("Whether to check for intercluster edges when removing a child from its parent cluster so that we can add the particle back into a cluster union."))
 
bool bOnlyUseInterclusterEdgesAttachedToMainParticles = true
 
FAutoConsoleVariableRef CVarOnlyUseInterclusterEdgesAttachedToMainParticles (TEXT("p.Chaos.OnlyUseInterclusterEdgesAttachedToMainParticles"), bOnlyUseInterclusterEdgesAttachedToMainParticles, TEXT("If true, an intercluster edge must be directly attached to a main particle for the particle to remain a part of the cluster union."))
 
int32 ComputeClusterCollisionStrains = 1
 
FAutoConsoleVariableRef CVarComputeClusterCollisionStrains (TEXT("p.ComputeClusterCollisionStrains"), ComputeClusterCollisionStrains, TEXT("Whether to use collision constraints when processing clustering."))
 
int32 DeactivateClusterChildren = 0
 
FAutoConsoleVariableRef CVarDeactivateClusterChildren (TEXT("p.DeactivateClusterChildren"), DeactivateClusterChildren, TEXT("If children should be decativated when broken and put into another cluster."))
 
int32 UseBoundingBoxForConnectionGraphFiltering = 0
 
FAutoConsoleVariableRef CVarUseBoundingBoxForConnectionGraphFiltering (TEXT("p.UseBoundingBoxForConnectionGraphFiltering"), UseBoundingBoxForConnectionGraphFiltering, TEXT("when on, use bounding box overlaps to filter connection during the connection graph generation [def: 0]"))
 
float BoundingBoxMarginForConnectionGraphFiltering = 0
 
FAutoConsoleVariableRef CVarBoundingBoxMarginForConnectionGraphFiltering (TEXT("p.BoundingBoxMarginForConnectionGraphFiltering"), BoundingBoxMarginForConnectionGraphFiltering, TEXT("when UseBoundingBoxForConnectionGraphFiltering is on, the margin to use for the oevrlap test [def: 0]"))
 
int32 GraphPropagationBasedCollisionImpulseProcessing = 0
 
FAutoConsoleVariableRef CVarGraphPropagationBasedCollisionImpulseProcessing (TEXT("p.GraphPropagationBasedCollisionImpulseProcessing"), GraphPropagationBasedCollisionImpulseProcessing, TEXT("when processing collision impulse toc ompute strain, pick the closest child from the impact point and propagate using the connection graph [def: 0]"))
 
float GraphPropagationBasedCollisionFactor = 1
 
FAutoConsoleVariableRef CVarGraphPropagationBasedCollisionFactor (TEXT("p.GraphPropagationBasedCollisionFactor"), GraphPropagationBasedCollisionFactor, TEXT("when p.GraphPropagationBasedCollisionImpulseProcessing is on, the percentage [0-1] of remaining damage that is distributed to the connected pieces"))
 
float RestoreBreakingMomentumPercent = .5
 
FAutoConsoleVariableRef CVarRestoreBreakingMomentumPercent (TEXT("p.RestoreBreakingMomentumPercent"), RestoreBreakingMomentumPercent, TEXT("When a rigid cluster is broken, objects that its in contact with will receive an impulse to restore this percent of their momentum prior to the break."))
 
int32 ClusteringParticleReleaseThrottlingMinCount = INDEX_NONE
 
FAutoConsoleVariableRef CVarClusteringParticleReleaseThrottlingMinCount (TEXT("p.Clustering.ParticleReleaseThrottlingMinCount"), ClusteringParticleReleaseThrottlingMinCount, TEXT("Minimum number of active geometry collection to reach before clustering start to disable a percentage of the released particle per cluster"))
 
int32 ClusteringParticleReleaseThrottlingMaxCount = INDEX_NONE
 
FAutoConsoleVariableRef CVarClusteringParticleReleaseThrottlingMaxCount (TEXT("p.Clustering.ParticleReleaseThrottlingMaxCount"), ClusteringParticleReleaseThrottlingMaxCount, TEXT("Maximum number of active geometry collection to reach before all released clustering disable all released particle instantly"))
 
int32 UnionsHaveCollisionParticles = 0
 
FAutoConsoleVariableRef CVarUnionsHaveCollisionParticles (TEXT("p.UnionsHaveCollisionParticles"), UnionsHaveCollisionParticles, TEXT(""))
 
FAutoConsoleVariableRef CVarBreakMode (TEXT("p.chaos.clustering.breakonlystrained"), GClusterBreakOnlyStrained, TEXT("If enabled we only process strained clusters for breaks, if disabled all clusters are traversed and checked"))
 
FAutoConsoleVariableRef CVarPerAdvanceBreaksAllowed (TEXT("p.Chaos.Clustering.PerAdvanceBreaksAllowed"), GPerAdvanceBreaksAllowed, TEXT("Number of breaks allowed to occur for each invocation of AdvanceClustering"))
 
FAutoConsoleVariableRef CVarPerAdvanceBreaksRescheduleLimit (TEXT("p.Chaos.Clustering.PerAdvanceBreaksRescheduleLimit"), GPerAdvanceBreaksRescheduleLimit, TEXT("Number of breaks allowed to be rescheduled for next frame if any "))
 
FAutoConsoleVariableRef CVarDumpClusterAndReleaseStats (TEXT("p.Chaos.Clustering.DumpClusterAndReleaseStats"), GDumpClusterAndReleaseStats, TEXT("Report the number of cluster processes and released particles per frame, on/off 1/0"))
 
FRealSingle MinImpulseForStrainEval = 980 * 2 * 1.f / 30.f
 
FAutoConsoleVariableRef CVarMinImpulseForStrainEval (TEXT("p.chaos.MinImpulseForStrainEval"), MinImpulseForStrainEval, TEXT("Minimum accumulated impulse before accumulating for strain eval "))
 
bool bUseContactSpeedForStrainThreshold = true
 
FAutoConsoleVariableRef CVarUseContactSpeedForStrainEval (TEXT("p.chaos.UseContactSpeedForStrainEval"), bUseContactSpeedForStrainThreshold, TEXT("Whether to use contact speed to discard contacts when updating cluster strain (true: use speed, false: use impulse)"))
 
FRealSingle MinContactSpeedForStrainEval = 1.0f
 
FAutoConsoleVariableRef CVarMinContactSpeedForStrainEval (TEXT("p.chaos.MinContactSpeedForStrainEval"), MinContactSpeedForStrainEval, TEXT("Minimum speed at the contact before accumulating for strain eval "))
 
int32 UseLevelsetCollision = 0
 
FAutoConsoleVariableRef CVarUseLevelsetCollision2 (TEXT("p.UseLevelsetCollision"), UseLevelsetCollision, TEXT("Whether unioned objects use levelsets"))
 
int32 MinLevelsetDimension = 4
 
FAutoConsoleVariableRef CVarMinLevelsetDimension2 (TEXT("p.MinLevelsetDimension"), MinLevelsetDimension, TEXT("The minimum number of cells on a single level set axis"))
 
int32 MaxLevelsetDimension = 20
 
FAutoConsoleVariableRef CVarMaxLevelsetDimension2 (TEXT("p.MaxLevelsetDimension"), MaxLevelsetDimension, TEXT("The maximum number of cells on a single level set axis"))
 
FRealSingle MinLevelsetSize = 50.f
 
FAutoConsoleVariableRef CVarLevelSetResolution2 (TEXT("p.MinLevelsetSize"), MinLevelsetSize, TEXT("The minimum size on the smallest axis to use a level set"))
 
int32 LevelsetGhostCells = 1
 
FAutoConsoleVariableRef CVarLevelsetGhostCells2 (TEXT("p.LevelsetGhostCells"), LevelsetGhostCells, TEXT("Increase the level set grid by this many ghost cells"))
 
int32 MinCleanedPointsBeforeRemovingInternals = 10
 
FAutoConsoleVariableRef CVarMinCleanedPointsBeforeRemovingInternals2 (TEXT("p.MinCleanedPointsBeforeRemovingInternals"), MinCleanedPointsBeforeRemovingInternals, TEXT("If we only have this many clean points, don't bother removing internal points as the object is likely very small"))
 
FRealSingle ClusterSnapDistance = 1.f
 
FAutoConsoleVariableRef CVarClusterSnapDistance2 (TEXT("p.ClusterSnapDistance"), ClusterSnapDistance, TEXT(""))
 
CHAOS_API int32 FixBadAccelerationStructureRemoval = 1
 
FAutoConsoleVariableRef CVarFixBadAccelerationStructureRemoval (TEXT("p.FixBadAccelerationStructureRemoval"), FixBadAccelerationStructureRemoval, TEXT(""))
 
CHAOS_API int32 AccelerationStructureIsolateQueryOnlyObjects = 0
 
FAutoConsoleVariableRef CVarAccelerationStructureIsolateQueryOnlyObjects (TEXT("p.Chaos.AccelerationStructureIsolateQueryOnlyObjects"), AccelerationStructureIsolateQueryOnlyObjects, TEXT("Set to 1: QueryOnly Objects will not be moved to acceleration structures on the Physics Thread"))
 
CHAOS_API int32 AccelerationStructureSplitStaticAndDynamic = 1
 
FAutoConsoleVariableRef CVarAccelerationStructureSplitStaticAndDynamic (TEXT("p.Chaos.AccelerationStructureSplitStaticDynamic"), AccelerationStructureSplitStaticAndDynamic, TEXT("Set to 1: Sort Dynamic and Static bodies into seperate acceleration structures, any other value will disable the feature"))
 
CHAOS_API int32 AccelerationStructureUseDynamicTree = 1
 
FAutoConsoleVariableRef CVarAccelerationStructureUseDynamicTree (TEXT("p.Chaos.AccelerationStructureUseDynamicTree"), AccelerationStructureUseDynamicTree, TEXT("Use a dynamic BVH tree structure for dynamic objects"))
 
CHAOS_API int32 AccelerationStructureUseDirtyTreeInsteadOfGrid = 1
 
FAutoConsoleVariableRef CVarAccelerationStructureUseDirtyTreeInsteadOfGrid (TEXT("p.Chaos.AccelerationStructureUseDirtyTreeInsteadOfGrid"), AccelerationStructureUseDirtyTreeInsteadOfGrid, TEXT("Use a dynamic tree structure for dirty elements instead of a 2D grid"))
 
CHAOS_API int32 GAccelerationStructureCacheOverlappingLeaves = 1
 
FAutoConsoleVariableRef CVarAccelerationStructureCacheOverlappingLeaves (TEXT("p.Chaos.AccelerationStructureCacheOverlappingLeaves"), GAccelerationStructureCacheOverlappingLeaves, TEXT("Set to 1: Cache the overlapping leaves for faster overlap query, any other value will disable the feature"))
 
CHAOS_API int32 AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce = 1000
 
FAutoConsoleVariableRef CVarAccelerationStructureTimeSlicingMaxQueueSizeBeforeForce (TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce"), AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce, TEXT("If the update queue reaches this limit, time slicing will be disabled, and the acceleration structure will be built at once"))
 
CHAOS_API int32 AccelerationStructureTimeSlicingMaxBytesCopy = 100000
 
FAutoConsoleVariableRef CVarAccelerationStructureTimeSlicingMaxBytesCopy (TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxBytesCopy"), AccelerationStructureTimeSlicingMaxBytesCopy, TEXT("The Maximum number of bytes to copy to the external acceleration structure during Copy Time Slicing"))
 
CHAOS_API FBroadPhaseConfig BroadPhaseConfig
 
CHAOS_API bool bPendingHierarchyDump = false
 
FRealSingle LinearEtherDragOverride = -1.f
 
FAutoConsoleVariableRef CVarLinearEtherDragOverride (TEXT("p.LinearEtherDragOverride"), LinearEtherDragOverride, TEXT("Set an override linear ether drag value. -1.f to disable"))
 
FRealSingle AngularEtherDragOverride = -1.f
 
FAutoConsoleVariableRef CVarAngularEtherDragOverride (TEXT("p.AngularEtherDragOverride"), AngularEtherDragOverride, TEXT("Set an override angular ether drag value. -1.f to disable"))
 
bool TriMeshPerPolySupport = 1
 
FAutoConsoleVariableRef CVarPerPolySupport (TEXT("p.Chaos.TriMeshPerPolySupport"), TriMeshPerPolySupport, TEXT("Disabling removes memory cost of vertex map on triangle mesh. Note: Changing at runtime will not work."))
 
FAutoConsoleVariableRef CVarChaosWeightedLatticePhiAndNormalBatchSize (TEXT("p.Chaos.WeightedLattice.PhiAndNormal.ParallelBatchSize"), Chaos_WeightedLattice_PhiAndNormalBatchSize, TEXT("Parallel batch size PhiAndNormal queries"))
 
template class CHAOS_API TWeightedLatticeImplicitObject< FLevelSet >
 
FInternalDefaultSettings GDefaultChaosSettings
 
CHAOS_API int32 SyncKinematicOnGameThread = -1
 
FRealSingle MaxBoundsForTree = (FRealSingle)10000
 
FAutoConsoleVariableRef CVarMaxBoundsForTree (TEXT("p.MaxBoundsForTree"), MaxBoundsForTree, TEXT(""), ECVF_Default)
 
int32 LogCorruptMap = 0
 
FAutoConsoleVariableRef CVarLogCorruptMap (TEXT("p.LogCorruptMap"), LogCorruptMap, TEXT(""))
 
bool bResimDelayDestroyObject = true
 
FAutoConsoleVariableRef CVarResimDelayDestroyObject (TEXT("p.Resim.DelayDestroyObject"), bResimDelayDestroyObject, TEXT("Keep physics objects and physics proxy available until after they go out of rewind history. Disabled by default due to not fully implemented."))
 
int32 LogDirtyParticles = 0
 
FAutoConsoleVariableRef CVarLogDirtyParticles (TEXT("p.LogDirtyParticles"), LogDirtyParticles, TEXT("Logs out which particles are dirty every frame"))
 
FAutoConsoleVariableRef CVar_ShallowCopyClusterUnionGeometryOnUpdate (TEXT("p.ShallowCopyOnClusterUnionUpdate"), GShallowCopyClusterUnionGeometryOnUpdate, TEXT("If 1, shallow copy the root union geometry of a cluster union when its geometry updates, otherwise deep copy the geometry hierarchy"))
 
FAutoConsoleVariableRef CVar_SyncKinematicOnGameThread (TEXT("P.Chaos.SyncKinematicOnGameThread"), SyncKinematicOnGameThread, TEXT("If set to 1, kinematic bodies will always send their transforms back to the game thread, following the " "simulation step/results. If 0, then they will never do so, and kinematics will be updated immediately " "their kinematic target is set. Any other value (e.g. the default -1) means that the behavior is " "determined on a per-object basis with the UpdateKinematicFromSimulation flag in BodyInstance."))
 
CHAOS_API int32 ForceNoCollisionIntoSQ = 0
 
FAutoConsoleVariableRef CVarForceNoCollisionIntoSQ (TEXT("p.ForceNoCollisionIntoSQ"), ForceNoCollisionIntoSQ, TEXT("When enabled, all particles end up in sq structure, even ones with no collision"))
 
bool bCVarRewindDataOptimization = true
 
FAutoConsoleVariableRef CVarRewindDataOptimization (TEXT("p.Resim.RewindDataOptimization"), bCVarRewindDataOptimization, TEXT("Default value for RewinData optimization, note that this can be overridden at runtime by API calls. Effect: Only alter the minimum required properties during a resim for particles not marked for FullResim and only cache data during the PrePushData phase and lower memory allocation for the history cache to 1/3 of non-optimized flow."))
 
CHAOS_API bool bResimAllowRewindToResimulatedFrames = true
 
FAutoConsoleVariableRef CVarResimAllowRewindToResimulatedFrames (TEXT("p.Resim.AllowRewindToResimulatedFrames"), bResimAllowRewindToResimulatedFrames, TEXT("Allow rewinding back to a frame that was previously part of a resimulation. If a resimulation is performed between frame 100-110, allow a new resim from 105-115 if needed, else next resim will be able to start from frame 111."))
 
CHAOS_API float ResimAllowRewindToResimulatedFramesOverlapPercent = 1.0f
 
FAutoConsoleVariableRef CVarResimAllowRewindToResimulatedFramesOverlapPercent (TEXT("p.Resim.AllowRewindToResimulatedFrames.OverlapPercent"), ResimAllowRewindToResimulatedFramesOverlapPercent, TEXT("Value in percent as a multiplier, 0.3 = 30%. When p.Resim.AllowRewindToResimulatedFrames is true, this sets how many frames of overlap we allow when rewinding back past a previous resimulation. If a resimulation is performed between frame 100-110 (10 frames), 30% overlap would allow 3 frames to get resimulated again, i.e. we would be allowed to rewind back to frame 107 again if we need to."))
 
CHAOS_API int32 SkipDesyncTest = 0
 
FAutoConsoleVariableRef CVarSkipDesyncTest (TEXT("p.SkipDesyncTest"), SkipDesyncTest, TEXT("Skips hard desync test, this means all particles will assume to be clean except spawning at different times. This is useful for a perf lower bound, not actually correct"))
 
CHAOS_API int32 ResimFrameValidation = static_cast<int32>(EResimFrameValidation::IslandValidation)
 
FAutoConsoleVariableRef CVarResimFrameValidationLeniency (TEXT("p.Resim.ResimFrameValidation"), ResimFrameValidation, TEXT("0 = no leniency, all dirty particles need a valid target. 1 = Island leniency, all particles in resim islands need a valid target. 2 = Full leniency, only the particle triggering the resim need a valid target."))
 
CHAOS_API bool bResimIncompleteHistory = true
 
FAutoConsoleVariableRef CVarResimIncompleteHistory (TEXT("p.Resim.IncompleteHistory"), bResimIncompleteHistory, TEXT("If a valid resim frame can't be found, use the requested resim frame and perform a resimulation with incomplete data."))
 
CHAOS_API bool bFindValidInputHistory = true
 
FAutoConsoleVariableRef CVarResimFindValidInputHistory (TEXT("p.Resim.FindValidInputHistory"), bFindValidInputHistory, TEXT("If the particle that needs resimulation has custom input history, find a valid resim frame where inputs are available."))
 
CHAOS_API bool bFindValidStateHistory = true
 
FAutoConsoleVariableRef CVarResimFindValidStateHistory (TEXT("p.Resim.FindValidStateHistory"), bFindValidStateHistory, TEXT("If the particle that needs resimulation has custom state history, find a valid resim frame where states are available."))
 
CHAOS_API bool bUseParticleResimAsFollowerDuringTargetValidation = false
 
FAutoConsoleVariableRef CVarUseParticleResimAsFollowerDuringTargetValidation (TEXT("p.Resim.UseParticleResimAsFollowerDuringTargetValidation"), bUseParticleResimAsFollowerDuringTargetValidation, TEXT("If disabled, do not use the particle's ResimAsFollower flag when trying to find a valid resim frame."))
 
CHAOS_API int32 InterpolateTargetGaps = 5
 
FAutoConsoleVariableRef CVarResimInterpolateTargetGaps (TEXT("p.Resim.InterpolateTargetGaps"), InterpolateTargetGaps, TEXT("How many frame gaps in replicated targets we should fill by interpolating between the previous and the new target received. Value in max number of frames to interpolate, deactivate by setting to 0."))
 
constexpr int32 ArraySizeEPA = 16
 
const TCHAR *const ChaosVersionGUID = TEXT("5E07152B-EF71-47B8-B477-0CE28888D459")
 
constexpr bool bRealTypeCompatibleWithISPC = std::is_same_v<FReal, float> || std::is_same_v<FReal, double>
 
template<class T >
constexpr bool TSimModuleTypeIsRecursive_v = TSimModuleTypeIsRecursive<T>::value
 

Detailed Description

todo: -proper suspension setup for resting position - decide on parameters i.e. use SuspensionMaxRaise/SuspensionMaxDrop?? -natural frequency stuff -defaults

todo: Not really making use of this yet. Tire nuances more advanced than current simulation which just requires one friction value

Typical gear ratios: Reverse −4.181, 1st 3.818, 2nd 2.294, 3rd 1.500, 4th 1.133, 5th 0.911 Source: Georg Rill. Road Vehicle Dynamics: Fundamentals and Modeling (Ground Vehicle Engineering Series) (p. 121). CRC Press.

todo: Add clutch option todo: Proper defaults

Typedef Documentation

◆ conventions

◆ EImplicitObjectType

◆ EThreadingMode

◆ FAABB3

◆ FAABB3f

◆ FBoxPtr

◆ FBoxRef

◆ FBreakingDataArray

◆ FBVHParticlesFloat3

◆ FCapsulePtr

◆ FCapsuleRef

◆ FChaosConstMaterialHandle

◆ FChaosConstMaterialMaskHandle

◆ FChaosMaterialHandle

◆ FChaosMaterialMaskHandle

◆ FClusterUnionExplicitIndex

◆ FClusterUnionIndex

◆ FCollisionConstraintBase

◆ FCollisionDataArray

◆ FCollisionModifierCallback

◆ FConnectivityEdge

◆ FConnectivityEdgeArray

◆ FConstImplicitObjectPtr

◆ FConstImplicitObjectRef

◆ FConstParticlePair

◆ FConstPhysicsObjectHandle

◆ FConstraintHandleArray

◆ FConstShapeInstanceProxyPtr

◆ FConstShapeInstancePtr

◆ FContactPoint

◆ FContactPointf

◆ FContactPointLargeManifold

◆ FContactPointManifold

◆ FContactVertexID

◆ FConvexHalfEdgeStructureDataS16

◆ FConvexHalfEdgeStructureDataS32

◆ FConvexHalfEdgeStructureDataU8

◆ FConvexPtr

◆ FConvexRef

◆ FCoreSphere

◆ FCoreSpheref

◆ FCrumblingDataArray

◆ FDirtyChaosPropertyFlags

◆ FDynamicParticles

◆ FEventContainerBasePtr

Pointer to event data buffer & injector functionality

◆ FEventHandlerPtr

Pointer to the event handler

◆ FEventID

◆ FEventManager

◆ FGeometryParticle

◆ FGeometryParticleHandle

◆ FGeometryParticles

◆ FGJKSimplexData

◆ FHeightFieldPtr

◆ FHeightFieldRef

◆ FImplicitBox3

◆ FImplicitCapsule3

◆ FImplicitConvex3

◆ FImplicitHeightField3

◆ FImplicitHierarchyVisitor

using Chaos::FImplicitHierarchyVisitor = typedef TFunctionRef<void(const FImplicitObject* Implicit, const FRigidTransform3& Transform, const int32 RootObjectIndex, const int32 ObjectIndex, const int32 LeafObjectIndex)>

A visitor for use in FImplicitObject hierarchy visiting functions.

Parameters
ImplicitThe geometry we are currently visiting
TransformThe net transform relative to the hierarchy root (the originating visit call)
RootObjectIndexThe index of our ancestor in the root union. Will be INDEX_NONE if no Union at the root. Used to index into a Particle's ShapeInstances or get our ancenstor.
ObjectIndexA counter tracking the current implicit object index in the flattened hierarchy (pre-order, depth first)
LeafObjectIndexA counter tracking the current leaf index in the flattened hierarchy (pre-order, depth first). Used to differentiate between geometry when duplicated in the hierarchy. INDEX_NONE if not visiting a leaf.

◆ FImplicitHierarchyVisitorBool

using Chaos::FImplicitHierarchyVisitorBool = typedef TFunctionRef<bool(const FImplicitObject* Implicit, const FRigidTransform3& Transform, const int32 RootObjectIndex, const int32 ObjectIndex, const int32 LeafObjectIndex)>

◆ FImplicitObject3

◆ FImplicitObjectPtr

◆ FImplicitObjectRef

◆ FImplicitObjectsArray

◆ FImplicitObjectTransformed

◆ FImplicitObjectUnionClusteredPtr

◆ FImplicitObjectUnionClusteredRef

◆ FImplicitObjectUnionPtr

◆ FImplicitObjectUnionRef

◆ FImplicitPlane3

◆ FImplicitSphere3

◆ FJointBreakCallback

◆ FJointConstraintDirtyFlags

◆ FJointConstraintHandle_External

◆ FJointConstraintHandle_Internal

◆ FJointPostApplyCallback

◆ FJointPreApplyCallback

◆ FJointSolverGaussSeidel

◆ FKinematicGeometryParticle

◆ FKinematicGeometryParticleHandle

◆ FKinematicGeometryParticles

◆ FLevelSetPtr

◆ FLevelSetRef

◆ FMaterialArray

◆ FMaterialCreatedDelegate

using Chaos::FMaterialCreatedDelegate = typedef FOnMaterialCreated::FDelegate

◆ FMaterialDestroyedDelegate

using Chaos::FMaterialDestroyedDelegate = typedef FOnMaterialDestroyed::FDelegate

◆ FMaterialMaskArray

◆ FMaterialMaskCreatedDelegate

using Chaos::FMaterialMaskCreatedDelegate = typedef FOnMaterialMaskCreated::FDelegate

◆ FMaterialMaskDestroyedDelegate

using Chaos::FMaterialMaskDestroyedDelegate = typedef FOnMaterialMaskDestroyed::FDelegate

◆ FMaterialMaskUpdatedDelegate

using Chaos::FMaterialMaskUpdatedDelegate = typedef FOnMaterialMaskUpdated::FDelegate

◆ FMaterialUpdatedDelegate

using Chaos::FMaterialUpdatedDelegate = typedef FOnMaterialUpdated::FDelegate

◆ FMatrix33

◆ FMatrix44

◆ FMLLevelSetPtr

◆ FMLLevelSetRef

◆ FModuleNetDataArray

◆ FParticlePair

◆ FParticlePairMidPhasePtr

◆ FParticles

◆ FParticleUniqueIndices

◆ FParticleUtilities

◆ FParticleUtilitiesGT

◆ FParticleUtilitiesPQ

◆ FParticleUtilitiesXR

◆ FPBDCollisionConstraintDeleter

◆ FPBDCollisionConstraintMaterial

◆ FPBDCollisionConstraintPool

◆ FPBDCollisionConstraintPtr

◆ FPBDGeometryCollectionParticleHandle

◆ FPBDParticles

◆ FPBDRigidClusteredParticleHandle

◆ FPBDRigidClusteredParticles

◆ FPBDRigidParticle

◆ FPBDRigidParticleHandle

◆ FPBDRigidParticles

◆ FPBDRigidsEvolution

◆ FPBDRigidsEvolutionCallback

◆ FPBDRigidsEvolutionInternalHandleCallback

◆ FPBDRigidsEvolutionIslandCallback

◆ FPBDRigidsSolver

◆ FPhysicsObjectCollisionInterface_External

◆ FPhysicsObjectCollisionInterface_Internal

◆ FPhysicsObjectHandle

◆ FPhysicsObjectId

◆ FPhysicsObjectPair

◆ FPhysicsObjectUniquePtr

◆ FPhysicsSceneGuardScopedRead

◆ FPhysicsSceneGuardScopedWrite

◆ FPhysicsSolver

◆ FPhysSceneLock

◆ FPhysSceneLockNonTransactional

◆ FPlanePtr

◆ FPlaneRef

◆ FPropertyIdx

◆ FProxyBasePair

◆ FReadPhysicsObjectInterface_External

◆ FReadPhysicsObjectInterface_Internal

◆ FReal

Common data types for the Chaos physics engine. Unless a specific precision of type is required most code should use these existing types (e.g. FVec3) to adapt to global changes in precision.

◆ FRealDouble

Specific precision types, this should be used in very targeted places where the use of a specific type is necessary over using FReal

◆ FRealSingle

◆ FRemovalDataArray

◆ FRigidBodyContactConstraintsPostApplyCallback

◆ FRigidBodyContactConstraintsPostApplyPushOutCallback

◆ FRigidBodyContactConstraintsPostComputeCallback

◆ FRigidBodyPointContactConstraint

◆ FRigidBodySweptPointContactConstraint

◆ FRigidTransform3

◆ FRigidTransform3f

◆ FRigidTransformRealSingle3

◆ FRotation3

◆ FRotation3f

◆ FSerializedDataBufferPtr

◆ FShapeDirtyFlags

◆ FShapeInstanceArray

◆ FShapeInstanceProxyArray

◆ FShapeInstanceProxyPtr

◆ FShapeInstancePtr

◆ FShapesArray

◆ FSkinnedTriangleMeshPtr

◆ FSkinnedTriangleMeshRef

◆ FSleepingDataArray

◆ FSolverBodyPtrPair

◆ FSolverMatrix33

◆ FSolverReal

◆ FSolverRotation3

◆ FSolverVec3

◆ FSphere

◆ FSpheref

◆ FSpherePtr

◆ FSphereRef

◆ FSuspensionConstraintDirtyFlags

◆ FTetrahedron

◆ FTrailingDataArray

◆ FTransformPair

◆ FTransientGeometryParticleHandle

◆ FTransientKinematicGeometryParticleHandle

◆ FTransientPBDRigidClusteredParticleHandle

◆ FTransientPBDRigidParticleHandle

◆ FTriangle

◆ FTriangleMeshImplicitObjectPtr

◆ FTriangleMeshImplicitObjectRef

◆ FVec2

◆ FVec2f

◆ FVec3

◆ FVec3f

◆ FVec4

◆ FWritePhysicsObjectInterface_External

◆ FWritePhysicsObjectInterface_Internal

◆ IDefaultChaosSpatialAcceleration

◆ instead

◆ ISpatialDebugDrawInterface

◆ namespace

◆ NotThreadSafeSharedPtr_FImplicitObject

◆ PMatrix33d

◆ SolverVectorRegister

◆ SpatialAccelerationType

◆ TBVHParticles

template<class T , int d>
using Chaos::TBVHParticles = typedef FBVHParticles

◆ TCapsule

template<class T >
using Chaos::TCapsule = typedef FCapsule

◆ TDataGT

◆ TDataPT

◆ TEPAWorkingArray

◆ TFixedArray

◆ TGeometryClothParticles

◆ TGeometryParticleHandle

◆ TGeometryParticles

◆ ThreadSafeSharedPtr_FImplicitObject

◆ TImplicitObjectScaledGeneric

◆ TImplicitObjectScaledNonSerializable

◆ TImplicitObjectTransformedNonSerializable

◆ TKinematicGeometryClothParticles

◆ TKinematicGeometryParticleHandle

◆ TKinematicGeometryParticles

◆ TMatrix33

template<typename T >
using Chaos::TMatrix33 = typedef PMatrix<T, 3, 3>

◆ TPBDGeometryCollectionParticle

◆ TPBDGeometryCollectionParticleHandle

◆ TPBDRigidClusteredParticleHandle

◆ TPBDRigidParticleHandle

◆ TPlaneConcrete

template<typename T , int d = 3>
using Chaos::TPlaneConcrete = typedef TCorePlane<T, d>

◆ TRequiresDestructor

template<typename T >
using Chaos::TRequiresDestructor = typedef std::enable_if_t<!std::is_trivially_destructible_v<T> >

◆ TRotation3

template<typename T >
using Chaos::TRotation3 = typedef TRotation<T, 3>

◆ TSegment

template<class T >
using Chaos::TSegment = typedef TCoreSegment<T>

◆ TSegmentMesh

◆ TThreadKinematicParticle

◆ TThreadParticle

◆ TThreadRigidParticle

◆ TThreadShapeInstance

◆ TThreadShapeInstanceArray

◆ TTransientGeometryParticleHandle

◆ TTransientKinematicGeometryParticleHandle

◆ TTransientPBDGeometryCollectionParticleHandle

◆ TTransientPBDRigidClusteredParticleHandle

◆ TTransientPBDRigidParticleHandle

◆ TTriangleMesh

◆ TTrivialDestruct

template<typename T >
using Chaos::TTrivialDestruct = typedef std::enable_if_t<std::is_trivially_destructible_v<T> >

◆ TUncheckedArray

◆ TUncheckedFixedArray

◆ TVec2

template<typename T >
using Chaos::TVec2 = typedef TVector<T, 2>

◆ TVec3

template<typename T >
using Chaos::TVec3 = typedef TVector<T, 3>

◆ TVec4

template<typename T >
using Chaos::TVec4 = typedef TVector<T, 4>

◆ use

Enumeration Type Documentation

◆ anonymous enum

Enumerator
ChaosNumExtraFilterBits 

◆ anonymous enum

Enumerator
ChaosNumCollisionChannelBits 

◆ EAABBQueryType

Enumerator
Raycast 
Sweep 
Overlap 

◆ EAerofoil

enum class Chaos::EAerofoil : uint8
strong
Enumerator
Fixed 
Wing 
Rudder 
Elevator 

◆ EAerofoilType

Enumerator
Fixed 
Wing 
Rudder 
Elevator 

◆ EAsyncBlockMode

Enumerator
BlockOnlyPastFrames 
BlockForBestInterpolation 
DoNoBlock 

◆ EChaosCollisionTraceFlag

Enumerator
Chaos_CTF_UseDefault 

Use project physics settings (DefaultShapeComplexity)

Chaos_CTF_UseSimpleAndComplex 

Create both simple and complex shapes. Simple shapes are used for regular scene queries and collision tests. Complex shape (per poly) is used for complex scene queries.

Chaos_CTF_UseSimpleAsComplex 

Create only simple shapes. Use simple shapes for all scene queries and collision tests.

Chaos_CTF_UseComplexAsSimple 

Create only complex shapes (per poly). Use complex shapes for all scene queries and collision tests. Can be used in simulation for static shapes only (i.e can be collided against but not moved through forces or velocity.)

Chaos_CTF_MAX 

◆ EChaosPhysicsMaterialSoftCollisionMode

Enumerator
None 
RelativeThickness 
AbsoluteThickness 

◆ EChaosProperty

Enumerator
NumProperties 

◆ EChaosPropertyFlags

Enumerator
DummyFlag 

◆ EClusterUnionConnectivityOperation

Enumerator
Add 
Remove 

◆ EClusterUnionGeometryOperation

Enumerator
Add 
Remove 
Refresh 

◆ EClusterUnionOperation

Enumerator
Add 
AddReleased 
Remove 
UpdateChildToParent 

◆ EClusterUnionOperationTiming

Enumerator
Never 
Defer 
Immediate 

◆ ECollisionCCDType

Whether we should run CCD (swept collision) or not.

Enumerator
Disabled 
Enabled 

◆ ECollisionConstraintDirection

The resting directionality of a contact constraint for use in constraint solver ordering.

Enumerator
Particle0ToParticle1 
Particle1ToParticle0 
NoRestingDependency 

◆ ECollisionConstraintFlags

Flags for user-control over per-particle collision behaviour.

Enumerator
CCF_None 
CCF_BroadPhaseIgnoreCollisions 
CCF_SmoothEdgeCollisions 
CCF_DummyFlag 

◆ ECollisionModifierResult

Return value of the collision modification callback

Enumerator
Unchanged 
Modified 

No change to the collision

Disabled 

Modified the collision, but want it to remain enabled

◆ ECollisionUpdateType

Specifies the type of work we should do

Enumerator
Any 
Deepest 

◆ ECollisionVisitorFlags

Enumerator
VisitActiveAwake 
VisitSleeping 
VisitDisabled 
VisitExpired 
VisitDefault 
VisitAllCurrent 
VisitAllCurrentAndExpired 

◆ ECollisionVisitorResult

Return value in collision visitors to indicate whether we should continue visiting for stop.

Enumerator
Stop 
Continue 

◆ EConstraintType

Enumerator
NoneType 
JointConstraintType 
SpringConstraintType 
SuspensionConstraintType 
CharacterGroundConstraintType 

◆ EContactPointType

Used in FContactPoint to indicate whether the contact is vertex-plane, edge-edge, etc.

Note
the order here is the order of preference in the solver. I.e., we like to solve Plane contacts before edge contacts before vertex contacts. This is most impotant for collisions against triangle meshes (or any concave shape) where the second shape is always the triangle, and so a PlaneVertex collision counts as a vertex collision.
Enumerator
Unknown 
VertexPlane 
EdgeEdge 
PlaneVertex 
VertexVertex 

◆ EContactShapesType

The shape types involved in a contact constraint. Used to look up the collision detection function

Enumerator
Unknown 
SphereSphere 
SphereCapsule 
SphereBox 
SphereConvex 
SphereTriMesh 
SphereHeightField 
SpherePlane 
CapsuleCapsule 
CapsuleBox 
CapsuleConvex 
CapsuleTriMesh 
CapsuleHeightField 
BoxBox 
BoxConvex 
BoxTriMesh 
BoxHeightField 
BoxPlane 
ConvexConvex 
ConvexTriMesh 
ConvexHeightField 
GenericConvexConvex 
LevelSetLevelSet 
NumShapesTypes 

◆ EDamageEvaluationModel

Enumerator
StrainFromDamageThreshold 

particles internal strains are set from user defined damage thresholds It's a simple model, fast to evaluate , but can be set to be non realistic and may require more fine tuning

StrainFromMaterialStrengthAndConnectivity 

Particle internal strains are set from the strength properties of the physics material and the surface area of connection of a piece to another this is as fast as the damage threshold to evaluate but provide a more realistic model and allow for simpler tuning based on material

◆ EDesyncResult

Enumerator
InSync 
Desync 
NeedInfo 

◆ EDifferentialType

Enumerator
UndefinedDrive 
AllWheelDrive 
FrontWheelDrive 
RearWheelDrive 

◆ EEPAResult

enum class Chaos::EEPAResult
strong
Enumerator
Ok 
MaxIterations 
Degenerate 
BadInitialSimplex 
NoValidContact 

◆ EEventType

enum class Chaos::EEventType : int32
strong

Predefined System Event Types

Enumerator
Collision 
Breaking 
Trailing 
Sleeping 
Removal 
Crumbling 

◆ EFilterFlags

enum class Chaos::EFilterFlags : uint8
strong
Enumerator
None 
SimpleCollision 
ComplexCollision 
CCD 
ContactNotify 
StaticShape 
ModifyContacts 
KinematicKinematicPairs 
All 

◆ EGeometryParticleListMask

Used to keep track of which Lists a particle is in

Enumerator
None 
StaticParticles 
StaticDisabledParticles 
KinematicParticles 
KinematicDisabledParticles 
DynamicDisabledParticles 
DynamicParticles 
DynamicKinematicParticles 
ClusteredParticles 
GeometryCollectionParticles 
StaticGeometryCollectionArray 
KinematicGeometryCollectionArray 
SleepingGeometryCollectionArray 
DynamicGeometryCollectionArray 
ActiveParticlesMapArray 
TransientDirtyMapArray 
MovingKinematicsMapArray 
StaticClusteredMapArray 
KinematicClusteredMapArray 
DynamicClusteredMapArray 
ResimActiveParticlesMapArray 
ResimDynamicParticles 
ResimDynamicKinematicParticles 
ResimStaticParticles 
ResimKinematicParticles 

◆ EGeometryParticlesSimType

Enumerator
RigidBodySim 
Other 

◆ EGJKDistanceResult

Enumerator
Separated 
Contact 
DeepContact 

◆ EGJKTestSpace

Enumerator
SameSpace 
ALocalSpace 

◆ EInertiaOperations

Enumerator
None 
LocalInertiaDropOffDiagonalTerms 

◆ EInternalClusterType

Enumerator
None 
KinematicOrStatic 
Dynamic 
ClusterUnion 

◆ EJointAngularConstraintIndex

The order of the angular constraints (for settings held in vectors etc)

Enumerator
Twist 
Swing2 
Swing1 

◆ EJointConstraintFlags

Enumerator
JointTransforms 
CollisionEnabled 
Projection 
ParentInvMassScale 
LinearBreakForce 
AngularBreakTorque 
UserData 
LinearDrive 
AngularDrive 
Stiffness 
Limits 
LinearViolationCallbackThreshold 
AngularViolationCallbackThreshold 
DummyFlag 

◆ EJointCylindricalPositionConstraintType

Enumerator
Axial 
Radial 

◆ EJointForceMode

Enumerator
Acceleration 
Force 

◆ EJointMotionType

Enumerator
Free 
Limited 
Locked 

◆ EJointSolverConstraintUpdateType

Enumerator
None 
Linear_Point 
Linear_Spherical 
Linear_Cylindrical 
Linear_Planar 
Linear_SphericalDrive 
Linear_CircularDrive 
Linear_AxialDrive 
Angular_Twist 
Angular_Cone 
Angular_SingleLockedSwing 
Angular_SingleLimitedSwing 
Angular_DualConeSwing 
Angular_Locked 
Angular_TwistDrive 
Angular_ConeDrive 
Angular_SwingDrive 
Angular_SLerpDrive 

◆ EKinematicTargetMode

Controls how a kinematic body is integrated each Evolution Advance

Enumerator
None 
Reset 

Particle does not move and no data is changed

Position 

Particle does not move, velocity and angular velocity are zeroed, then mode is set to "None".

Velocity 

Particle is moved to Kinematic Target transform, velocity and angular velocity updated to reflect the change, then mode is set to "Reset".

◆ ELockType

enum class Chaos::ELockType : uint8
strong
Enumerator
Read 
Write 

◆ EMassOffsetType

Enumerator
None 
Position 
Rotation 

◆ EMultiBufferMode

Enumerator
Undefined 
Single 
Double 
Triple 
TripleGuarded 

◆ EObjectStateType

Enumerator
Uninitialized 
Sleeping 
Kinematic 
Static 
Dynamic 
Count 

◆ EOneWayInteractionPairCollisionMode

How to treat collisions between two particles that both have OneWayInteraction enabled

Enumerator
IgnoreCollision 
NormalCollision 
SphereCollision 

◆ EParticlePairMidPhaseType

The type of the particle pair midphase.

Enumerator
Generic 
ShapePair 
SphereApproximation 

◆ EParticleType

Enumerator
Static 
Kinematic 
Rigid 
Clustered 
StaticMesh 
SkeletalMesh 
GeometryCollection 
Unknown 

◆ EPendingSpatialDataOperation

Enumerator
Delete 
Add 
Update 

◆ EPlasticityType

Enumerator
Free 
Shrink 
Grow 

◆ EPreconditionerType

Enumerator
Diagonal 
IncompleteCholesky 

◆ EQueryInfo

enum class Chaos::EQueryInfo : uint8
strong
Enumerator
GatherAll 
IsBlocking 
IsAnything 

◆ ERemoveParticleBehavior

Enumerator
RemoveAtSwap 
Remove 

◆ EResimFrameValidation

Enumerator
FullValidation 
IslandValidation 
TriggerParticleValidation 

◆ EResimType

enum class Chaos::EResimType : uint8
strong
Enumerator
FullResim 
ResimAsFollower 

◆ ESATFeatureType

Enumerator
None 
Plane 
Edge 
Vertex 

◆ ESerializedDataContext

Enum used to indicate where we should read/write the data in serialize request

Enumerator
Invalid 
Internal 

The data is owned by the solver

External 

The data is owned by the game thread

Both 

Serialize the data from both, the GT and PT

◆ ESetPrevNextDataMode

Enumerator
Prev 
Next 

◆ EShapeFlags

enum class Chaos::EShapeFlags : uint32
strong
Enumerator
DummyFlag 

◆ EShapeProperty

Enumerator
NumShapeProperties 

◆ ESimCallbackOptions

Enumerator
None 
Presimulate 
MidPhaseModification 
CCDModification 
ContactModification 
StrainModification 
ParticleRegister 
ParticleUnregister 
RunOnFrozenGameThread 
Rewind 
PhysicsObjectUnregister 
PreIntegrate 
PostIntegrate 
PreSolve 
PostSolve 

◆ eSimModuleState

Enumerator
Disabled 
Enabled 

◆ eSimModuleTypeFlags

Enumerator
NonFunctional 
Raycast 
TorqueBased 
Velocity 

◆ ESleepType

enum class Chaos::ESleepType : uint8
strong
Enumerator
MaterialSleep 
NeverSleep 

◆ ESpatialAcceleration

Enumerator
BoundingVolume 
AABBTree 
AABBTreeBV 
Collection 
Unknown 

◆ ESpatialAccelerationCollectionBucketInnerIdx

Enumerator
Default 
Dynamic 
DefaultQueryOnly 
DynamicQueryOnly 

◆ ESteerType

enum class Chaos::ESteerType : uint8
strong
Enumerator
SingleAngle 
AngleRatio 
Ackermann 

◆ EStrainTypes

Enumerator
InternalStrain 
ExternalStrain 
CollisionStrain 

◆ ESuspensionConstraintFlags

Enumerator
Location 
Enabled 
Target 
HardstopStiffness 
HardstopVelocityCompensation 
SpringPreload 
SpringStiffness 
SpringDamping 
MinLength 
MaxLength 
Axis 
Normal 
DummyFlag 

◆ ESyncState

enum class Chaos::ESyncState : uint8
strong
Enumerator
InSync 
HardDesync 

◆ EThreadContext

Enumerator
External 
Internal 

◆ EThreadingModeTemp

Enumerator
DedicatedThread 
TaskGraph 
SingleThread 

◆ EThreadQueryContext

Enumerator
GTData 
PTDataWithGTObjects 
PTOnlyData 

◆ EThrustType

enum class Chaos::EThrustType : uint8
strong
Enumerator
Fixed 
Wing 
Rudder 
Elevator 
HelicopterRotor 

◆ ETransmissionType

Enumerator
Manual 
Automatic 

◆ EUpdateClusterUnionPropertiesFlags

Enumerator
None 
RecomputeMassOrientation 
ForceGenerateConnectionGraph 
IncrementalGenerateConnectionGraph 
UpdateKinematicProperties 
ForceGenerateGeometry 
IncrementalGenerateGeometry 
ConnectivityCheck 
All 

◆ EventEmitterFlag

Enumerator
EmptyDispatcher 
OwnDispatcher 
GlobalDispatcher 
BothDispatcher 

◆ EWakeEventEntry

Enumerator
None 
Awake 
Sleep 

◆ EWheelAxis

Enumerator

Function Documentation

◆ AccumulateNextLevelCount()

template<typename T , int d>
void Chaos::AccumulateNextLevelCount ( const TAABB< T, d > &  Box,
const TVector< T, d > &  MidPoint,
FSplitCount< d > &  Counts 
)

◆ AddCapsuleTriangleParallelEdgeManifoldContacts()

void Chaos::AddCapsuleTriangleParallelEdgeManifoldContacts ( const FVec3 P0,
const FVec3 P1,
const FVec3 EdgeP0,
const FVec3 EdgeP1,
const FReal  R,
const FReal  RejectDistanceSq,
const FReal  NormalToleranceSq,
FContactPointManifold OutContactPoints 
)

◆ AddTrianglesToHull()

template<class T >
void Chaos::AddTrianglesToHull ( const TConstArrayView< FVec3 > &  Points,
const int32  I0,
const int32  I1,
const int32  I2,
const TPlane< T, 3 > &  SplitPlane,
const TArray< int32 > &  InIndices,
TArray< TVec3< int32 > > &  OutIndices 
)

◆ AdjustClusterInertia()

void CHAOS_API Chaos::AdjustClusterInertia ( FPBDRigidClusteredParticleHandle Cluster,
const EInertiaOperations  InertiaOperations 
)

◆ AreParticlesInPreferredOrder()

bool Chaos::AreParticlesInPreferredOrder ( const FGeometryParticleHandle Particle0,
const FGeometryParticleHandle Particle1 
)
inline

Return true if the particles are in the preferred order (the first one has the lower ID)

◆ AsAlwaysSerializable()

template<typename T >
TEnableIf< T::AlwaysSerializable, TSerializablePtr< T > >::Type & Chaos::AsAlwaysSerializable ( T *&  Ptr)

◆ AsAlwaysSerializableArray()

template<typename T >
TEnableIf< T::AlwaysSerializable, TArray< TSerializablePtr< T > > >::Type & Chaos::AsAlwaysSerializableArray ( TArray< T * > &  Ptrs)

◆ BoostControlName()

const FName Chaos::BoostControlName ( "Boost"  )

◆ BoxHeightFieldContactPoint()

FContactPoint Chaos::BoxHeightFieldContactPoint ( const FImplicitBox3 A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ BoxTriangleMeshContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::BoxTriangleMeshContactPoint ( const FImplicitBox3 A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ BoxTriangleMeshContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::BoxTriangleMeshContactPoint< FTriangleMeshImplicitObject > ( const FImplicitBox3 A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ BoxTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

◆ BrakeControlName()

const FName Chaos::BrakeControlName ( "Brake"  )

◆ BufferPhysicsResultsImp()

template<typename T >
void Chaos::BufferPhysicsResultsImp ( Chaos::FDirtyRigidParticleData PullData,
T *  Particle 
)

◆ BuildGeomData()

template<typename BufferType , typename ToRealFuncType >
void Chaos::BuildGeomData ( TArrayView< BufferType >  BufferView,
TArrayView< const uint8 MaterialIndexView,
int32  NumRows,
int32  NumCols,
const FVec3 InScale,
ToRealFuncType  ToRealFunc,
typename FHeightField::FDataType OutData,
FAABB3 OutBounds 
)

◆ BuildScaledGeometry()

void CHAOS_API Chaos::BuildScaledGeometry ( Chaos::FPBDRigidClusteredParticleHandle ParticleHandle,
const Chaos::FImplicitObjectPtr ProxyGeometry,
const FVector WorldScale 
)

◆ CalculateCoMConstraintExtents()

FVec3f Chaos::CalculateCoMConstraintExtents ( const FPBDRigidParticleHandle Rigid)

◆ CalculateEdgePlaneTolarance()

FReal Chaos::CalculateEdgePlaneTolarance ( const FGeometryParticleHandle Particle)
inline

◆ CalculateEdgePointBarycentricTolarance()

FReal Chaos::CalculateEdgePointBarycentricTolarance ( const FGeometryParticleHandle Particle)
inline

◆ CalculateInertiaAndRotationOfMass() [1/8]

void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const FBox BoundingBox,
const FVector::FReal  Density,
FMatrix33 OutInertiaTensor,
FRotation3 OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [2/8]

template void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TArray< UE::Math::TVector< float > > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
const float  Density,
const UE::Math::TVector< float > &  CenterOfMass,
PMatrix< float, 3, 3 > &  OutInertiaTensor,
TRotation< float, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [3/8]

template<typename T , typename TSurfaces >
void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TArray< UE::Math::TVector< T > > &  Vertices,
const TSurfaces Surfaces,
const T  Density,
const UE::Math::TVector< T > &  CenterOfMass,
PMatrix< T, 3, 3 > &  OutInertiaTensor,
TRotation< T, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [4/8]

template void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TParticles< FRealDouble, 3 > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
const FRealDouble  Density,
const TVec3< FRealDouble > &  CenterOfMass,
PMatrix< FRealDouble, 3, 3 > &  OutInertiaTensor,
TRotation< FRealDouble, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [5/8]

template void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TParticles< FRealDouble, 3 > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
const FRealDouble  Density,
const TVec3< FRealDouble > &  CenterOfMass,
PMatrix< FRealDouble, 3, 3 > &  OutInertiaTensor,
TRotation< FRealDouble, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [6/8]

template void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TParticles< FRealSingle, 3 > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
const FRealSingle  Density,
const TVec3< FRealSingle > &  CenterOfMass,
PMatrix< FRealSingle, 3, 3 > &  OutInertiaTensor,
TRotation< FRealSingle, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [7/8]

template void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TParticles< FRealSingle, 3 > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
const FRealSingle  Density,
const TVec3< FRealSingle > &  CenterOfMass,
PMatrix< FRealSingle, 3, 3 > &  OutInertiaTensor,
TRotation< FRealSingle, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMass() [8/8]

template<typename T , typename TSurfaces >
void CHAOS_API Chaos::CalculateInertiaAndRotationOfMass ( const TParticles< T, 3 > &  Vertices,
const TSurfaces Surfaces,
const T  Density,
const TVec3< T > &  CenterOfMass,
PMatrix< T, 3, 3 > &  OutInertiaTensor,
TRotation< T, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaAndRotationOfMassImpl()

void Chaos::CalculateInertiaAndRotationOfMassImpl ( const TArray< TVec > &  Vertices,
const TSurfaces Surfaces,
const T  Density,
const TVec CenterOfMass,
PMatrix< T, 3, 3 > &  OutInertiaTensor,
TRotation< T, 3 > &  OutRotationOfMass 
)

◆ CalculateInertiaConditioning()

FVec3f CHAOS_API Chaos::CalculateInertiaConditioning ( const FRealSingle  InvM,
const FVec3f InvI,
const FVec3f ConstraintExtents,
const FRealSingle  MaxDistance,
const FRealSingle  MaxRotationRatio,
const FRealSingle  MaxInvInertiaComponentRatio,
const FInertiaConditioningTolerances Tolerances = FInertiaConditioningTolerances() 
)

Calculate an inertia scale so that rotation corrections when applying a constraint are no larger than some fraction of the total correction. It has the net effect of making the object "more round" and also increasing the inertia relative to the mass when the object is not of "regular" proportions.

Parameters
InvMthe inverse mass
InvIthe inverse inertia
ConstraintExtentsthe Maximum constraint arm distance along each axis. This should be the extents of the object, including all shapes and joint connectors.
MaxDistancethe constraint error that we want to be stable. Corrections above this may still contain large rotation components.
MaxRotationRatiothe contribution to the constraint correction from rotation of the object will be less that this fraction of the total error.
MaxInvInertiaComponentRatiothe maximum allowed ratio between the smallest and largest components of the inverse inertia.
Tolerancesthe tolerances to use

◆ CalculateMassProperties() [1/5]

FMassProperties Chaos::CalculateMassProperties ( const FBox BoundingBox,
const FVector::FReal  Density 
)

◆ CalculateMassProperties() [2/5]

template CHAOS_API FMassProperties Chaos::CalculateMassProperties ( const FParticles Vertices,
const TArray< TArray< int32 > > &  Surfaces,
const FReal  Mass 
)

◆ CalculateMassProperties() [3/5]

template CHAOS_API FMassProperties Chaos::CalculateMassProperties ( const FParticles Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
const FReal  Mass 
)

◆ CalculateMassProperties() [4/5]

template<typename TSurfaces >
FMassProperties Chaos::CalculateMassProperties ( const FParticles Vertices,
const TSurfaces Surfaces,
const FReal  Mass 
)

◆ CalculateMassProperties() [5/5]

template<typename TSurfaces >
FMassProperties CHAOS_API Chaos::CalculateMassProperties ( const FParticles Vertices,
const TSurfaces Surfaces,
const FReal  Mass 
)

◆ CalculateMassPropertiesFromShapeCollection()

void CHAOS_API Chaos::CalculateMassPropertiesFromShapeCollection ( Chaos::FMassProperties OutProperties,
int32  InNumShapes,
Chaos::FReal  InDensityKGPerCM,
const TArray< bool > &  bContributesToMass,
TFunction< Chaos::FPerShapeData *(int32 ShapeIndex)>  GetShapeDelegate 
)

◆ CalculateMassPropertiesOfImplicitType()

bool CHAOS_API Chaos::CalculateMassPropertiesOfImplicitType ( Chaos::FMassProperties OutMassProperties,
const Chaos::FRigidTransform3 WorldTransform,
const Chaos::FImplicitObject ImplicitObject,
Chaos::FReal  InDensityKGPerCM 
)

◆ CalculateMassPropertiesOfImplicitUnion()

bool CHAOS_API Chaos::CalculateMassPropertiesOfImplicitUnion ( Chaos::FMassProperties OutMassProperties,
const Chaos::FRigidTransform3 WorldTransform,
const Chaos::FImplicitObjectUnion ImplicitUnion,
Chaos::FReal  InDensityKGPerCM 
)

◆ CalculateNumCollisionsPerBlock()

int32 Chaos::CalculateNumCollisionsPerBlock ( )

◆ CalculateObjectsBounds()

FAABB3 Chaos::CalculateObjectsBounds ( const TArrayView< FImplicitObjectPtr > &  Objects)
inline

◆ CalculateParticleInertiaConditioning()

FVec3f CHAOS_API Chaos::CalculateParticleInertiaConditioning ( const FPBDRigidParticleHandle Rigid,
const FRealSingle  MaxDistance,
const FRealSingle  MaxRotationRatio,
const FRealSingle  MaxInvInertiaComponentRatio,
const FInertiaConditioningTolerances Tolerances = FInertiaConditioningTolerances() 
)

Calculate an inertia scale for a particle based on object size and all joint connector offsets that should stabilize the constraints.

See also
CalculateInertiaConditioning()
Parameters
Rigidthe particle to calculate inertia conditioning for
MaxDistancethe constraint error that we want to be stable. Corrections above this may still contain large rotation components.
MaxRotationRatiothe contribution to the constraint correction from rotation of the object will be less that this fraction of the total error.
MaxInvInertiaComponentRatiothe maximum allowed ratio between the smallest and largest components of the inverse inertia.

◆ CalculateQueryMargins()

void Chaos::CalculateQueryMargins ( const TGeometryA A,
const TGeometryB B,
T &  outMarginA,
T &  outMarginB 
)

◆ CalculateTriangleNormal()

FVec3 Chaos::CalculateTriangleNormal ( const FVec3  Vertices[])
inline

◆ CalculateVolumeAndCenterOfMass() [1/11]

void CHAOS_API Chaos::CalculateVolumeAndCenterOfMass ( const FBox BoundingBox,
FVector::FReal OutVolume,
FVector OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [2/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TArray< TVec3< FRealDouble > > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
FRealDouble OutVolume,
TVec3< FRealDouble > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [3/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TArray< TVec3< FRealSingle > > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
FRealSingle OutVolume,
TVec3< FRealSingle > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [4/11]

template<typename T , typename TSurfaces >
void CHAOS_API Chaos::CalculateVolumeAndCenterOfMass ( const TArray< TVec3< T > > &  Vertices,
const TSurfaces Surfaces,
T &  OutVolume,
TVec3< T > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [5/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TArray< UE::Math::TVector< float > > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
float OutVolume,
UE::Math::TVector< float > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [6/11]

template<typename T , typename TSurfaces >
void CHAOS_API Chaos::CalculateVolumeAndCenterOfMass ( const TArray< UE::Math::TVector< T > > &  Vertices,
const TSurfaces Surfaces,
T &  OutVolume,
UE::Math::TVector< T > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [7/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TParticles< FRealDouble, 3 > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
FRealDouble OutVolume,
TVec3< FRealDouble > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [8/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TParticles< FRealDouble, 3 > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
FRealDouble OutVolume,
TVec3< FRealDouble > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [9/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TParticles< FRealSingle, 3 > &  Vertices,
const TArray< TArray< int32 > > &  Surfaces,
FRealSingle OutVolume,
TVec3< FRealSingle > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [10/11]

template CHAOS_API void Chaos::CalculateVolumeAndCenterOfMass ( const TParticles< FRealSingle, 3 > &  Vertices,
const TArray< TVec3< int32 > > &  Surfaces,
FRealSingle OutVolume,
TVec3< FRealSingle > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMass() [11/11]

template<typename T , typename TSurfaces >
void CHAOS_API Chaos::CalculateVolumeAndCenterOfMass ( const TParticles< T, 3 > &  Vertices,
const TSurfaces Surfaces,
T &  OutVolume,
TVec3< T > &  OutCenterOfMass 
)

◆ CalculateVolumeAndCenterOfMassImpl()

void Chaos::CalculateVolumeAndCenterOfMassImpl ( const TArray< TVec > &  Vertices,
const TSurfaces Surfaces,
T &  OutVolume,
TVec OutCenterOfMass 
)

◆ CapsuleBoxContactPoint()

FContactPoint Chaos::CapsuleBoxContactPoint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FImplicitBox3 B,
const FRigidTransform3 BTransform,
const FVec3 InitialDir 
)

◆ CapsuleCapsuleContactPoint()

FContactPoint Chaos::CapsuleCapsuleContactPoint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FCapsule B,
const FRigidTransform3 BTransform 
)

◆ CapsuleConvexContactPoint()

CHAOS_API FContactPoint Chaos::CapsuleConvexContactPoint ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const FImplicitObject Object,
const FRigidTransform3 ConvexTransform 
)

◆ CapsuleConvexContactPointImpl()

template<typename T_CONVEX >
FContactPoint Chaos::CapsuleConvexContactPointImpl ( const FImplicitCapsule3 Capsule,
const FRigidTransform3 CapsuleTransform,
const T_CONVEX Convex,
const FRigidTransform3 ConvexTransform 
)

◆ CapsuleHeightFieldContactPoint()

FContactPoint Chaos::CapsuleHeightFieldContactPoint ( const FCapsule A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ CapsuleTriangleMeshContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::CapsuleTriangleMeshContactPoint ( const FCapsule A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ CapsuleTriangleMeshContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::CapsuleTriangleMeshContactPoint< FTriangleMeshImplicitObject > ( const FCapsule A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ CapsuleTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

◆ CapsuleTriangleMeshSweptContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::CapsuleTriangleMeshSweptContactPoint ( const FCapsule A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ CapsuleTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::CapsuleTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > ( const FCapsule A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ CapsuleTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

template FContactPoint Chaos::CapsuleTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > ( const FCapsule A,
const FRigidTransform3 ATransform,
const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &  B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ CCDConstraintSortPredicate()

bool Chaos::CCDConstraintSortPredicate ( const FCCDConstraint Constraint0,
const FCCDConstraint Constraint1 
)

◆ ChangeDownControlName()

const FName Chaos::ChangeDownControlName ( "ChangeDown"  )

◆ ChangeUpControlName()

const FName Chaos::ChangeUpControlName ( "ChangeUp"  )

◆ ChaosPropertyToFlag()

constexpr EChaosPropertyFlags Chaos::ChaosPropertyToFlag ( EChaosProperty  Prop)
constexpr

◆ CheckGJKIterationLimit()

bool Chaos::CheckGJKIterationLimit ( const int32  NumIterations,
const ConvexTypeA A,
const ConvexTypeB B 
)
inline

◆ CheckMovingKinematicFlag()

void Chaos::CheckMovingKinematicFlag ( FPBDRigidsSOAs Particles)

◆ CheckParticleViewForDupes()

template<typename TParticleView >
void Chaos::CheckParticleViewForDupes ( const FString &  Name,
const TParticleView ParticleView 
)

◆ CheckParticleViewsForDupes()

void Chaos::CheckParticleViewsForDupes ( FPBDRigidsSOAs Particles)

◆ CheckParticleViewsForErrors()

void Chaos::CheckParticleViewsForErrors ( FPBDRigidsSOAs Particles)

◆ CleanCollisionParticles() [1/4]

TArray< FVec3 > Chaos::CleanCollisionParticles ( const TArray< FVec3 > &  Vertices,
const FReal  SnapDistance = (FReal)0.01 
)
inline

◆ CleanCollisionParticles() [2/4]

TArray< FVec3 > Chaos::CleanCollisionParticles ( const TArray< FVec3 > &  Vertices,
FAABB3  BBox,
const FReal  SnapDistance = (FReal)0.01 
)
inline

◆ CleanCollisionParticles() [3/4]

TArray< FVec3 > Chaos::CleanCollisionParticles ( FTriangleMesh TriMesh,
const TArrayView< const FVec3 > &  Vertices,
const FReal  Fraction 
)
inline

◆ CleanCollisionParticles() [4/4]

void Chaos::CleanCollisionParticles ( FTriangleMesh TriMesh,
const TArrayView< const FVec3 > &  Vertices,
const FReal  Fraction,
TSet< int32 > &  ResultingIndices 
)
inline

◆ CleanTrimesh()

void Chaos::CleanTrimesh ( TArray< FVector3f > &  InOutVertices,
TArray< int32 > &  InOutIndices,
TArray< int32 > *  OutOptFaceRemap,
TArray< int32 > *  OutOptVertexRemap 
)

◆ ClipConvexToTriangle()

TArrayView< FVec3 > Chaos::ClipConvexToTriangle ( const ConvexImplicitType Convex,
const int32  ConvexPlaneIndex,
const FTriangle Triangle,
const FVec3 TriangleN,
TArrayView< FVec3 VertexBuffer1,
TArrayView< FVec3 VertexBuffer2 
)

◆ ClipTriangleToConvex()

TArrayView< FVec3 > Chaos::ClipTriangleToConvex ( const FTriangle Triangle,
const ConvexImplicitType Convex,
const int32  ConvexPlaneIndex,
const FVec3 Axis,
TArrayView< FVec3 VertexBuffer1,
TArrayView< FVec3 VertexBuffer2 
)

◆ ClutchControlName()

const FName Chaos::ClutchControlName ( "Clutch"  )

◆ Cm2ToM2()

FORCEINLINE float Chaos::Cm2ToM2 ( float  Cm2)

cm squared to meters squared

◆ CmSToKmH()

FORCEINLINE float Chaos::CmSToKmH ( float  CmS)

cm/s to km/h

◆ CmSToMPH()

FORCEINLINE float Chaos::CmSToMPH ( float  CmS)

cm/s to miles per hour

◆ CmToM() [1/2]

FORCEINLINE FVector Chaos::CmToM ( const FVector Cm)

cm to meters

◆ CmToM() [2/2]

FORCEINLINE float Chaos::CmToM ( float  Cm)

cm to meters

◆ CmToMiles()

FORCEINLINE float Chaos::CmToMiles ( float  Cm)

cm to meters - warning loss of precision

◆ CmToMScaling()

FORCEINLINE float Chaos::CmToMScaling ( )

◆ CollisionsHasTriangleEdgeContacts()

bool Chaos::CollisionsHasTriangleEdgeContacts ( const FPBDCollisionConstraint Collision,
const int32  MeshParticleIndex 
)
inline

◆ CollisionVisitorShouldVisit()

bool Chaos::CollisionVisitorShouldVisit ( const FPBDCollisionConstraint Constraint,
const ECollisionVisitorFlags  VisitFlags 
)
inline

◆ Combine()

FMassProperties CHAOS_API Chaos::Combine ( const TArray< FMassProperties > &  MPArray)

◆ CombineWorldSpace()

FMassProperties CHAOS_API Chaos::CombineWorldSpace ( const TArray< FMassProperties > &  MPArray)

◆ Compare()

bool Chaos::Compare ( const Pair< FReal *, TVec3< int32 > > &  Other1,
const Pair< FReal *, TVec3< int32 > > &  Other2 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [1/7]

template<class OBJECT_ARRAY , class T , int d>
void Chaos::ComputeAllWorldSpaceBoundingBoxes ( const OBJECT_ARRAY Objects,
const TArray< int32 > &  AllObjects,
const bool  bUseVelocity,
const T  Dt,
TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [2/7]

template<typename ParticleView , typename T , int d>
TEnableIf< TModels_V< CParticleView, ParticleView > >::Type Chaos::ComputeAllWorldSpaceBoundingBoxes ( const ParticleView Particles,
const TArray< bool > &  RequiresBounds,
const bool  bUseVelocity,
const T  Dt,
TArray< TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [3/7]

template<typename ParticleView , typename T , int d>
TEnableIf<!TModels_V< CParticleView, ParticleView > >::Type Chaos::ComputeAllWorldSpaceBoundingBoxes ( const ParticleView Particles,
const TArray< bool > &  RequiresBounds,
const bool  bUseVelocity,
const T  Dt,
TArray< TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [4/7]

template<class T , int d>
void Chaos::ComputeAllWorldSpaceBoundingBoxes ( const TArray< Private::FImplicitBVHObject > &  Objects,
const TArray< int32 > &  AllObjects,
const bool  bUseVelocity,
const T  Dt,
TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [5/7]

template<class T , int d>
void Chaos::ComputeAllWorldSpaceBoundingBoxes ( const TGeometryParticles< T, d > &  Objects,
const TArray< int32 > &  AllObjects,
const bool  bUseVelocity,
const T  Dt,
TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [6/7]

template<class T , int d>
void Chaos::ComputeAllWorldSpaceBoundingBoxes ( const TParticles< T, d > &  Objects,
const TArray< int32 > &  AllObjects,
const bool  bUseVelocity,
const T  Dt,
TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAllWorldSpaceBoundingBoxes() [7/7]

template<class T , int d>
void Chaos::ComputeAllWorldSpaceBoundingBoxes ( const TPBDRigidParticles< T, d > &  Objects,
const TArray< int32 > &  AllObjects,
const bool  bUseVelocity,
const T  Dt,
TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ ComputeAlphaHelper()

FReal Chaos::ComputeAlphaHelper ( const FPullPhysicsData Next,
const FReal  ResultsTime 
)

◆ ComputeBarycentricInPlane()

template<typename T , int d>
TVector< T, 2 > Chaos::ComputeBarycentricInPlane ( const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P2,
const TVector< T, d > &  P 
)

◆ ComputeBoundsThickness() [1/3]

template<typename THandle >
FVec3 Chaos::ComputeBoundsThickness ( const THandle ParticleHandle,
FReal  Dt,
FReal  MinBoundsThickness,
FReal  BoundsVelocityInflation 
)

◆ ComputeBoundsThickness() [2/3]

FVec3 Chaos::ComputeBoundsThickness ( const TPBDRigidParticles< FReal, 3 > &  InParticles,
FReal  Dt,
int32  BodyIndex,
FReal  MinBoundsThickness,
FReal  BoundsVelocityInflation 
)
inline

◆ ComputeBoundsThickness() [3/3]

FVec3 Chaos::ComputeBoundsThickness ( FVec3  Vel,
FReal  Dt,
FReal  MinBoundsThickness,
FReal  MaxBoundsThickness,
FReal  BoundsVelocityInflation 
)
inline

◆ ComputeCapsuleTriangleOverlapSimd()

bool Chaos::ComputeCapsuleTriangleOverlapSimd ( const VectorRegister4Float A,
const VectorRegister4Float B,
const VectorRegister4Float C,
const VectorRegister4Float X1,
const VectorRegister4Float X2,
FRealSingle  Radius 
)

◆ ComputeCircularSize()

int32 Chaos::ComputeCircularSize ( int32  NumFrames)
inline

◆ ComputeDeInverseAndElementMeasures()

template<class T , class TV = FVector3f, class TV_INT = FIntVector4, int32 d = 3>
void Chaos::ComputeDeInverseAndElementMeasures ( const TArray< TV_INT > &  Mesh,
const TArray< TV > &  X,
TArray< T > &  De_inverse,
TArray< T > &  measure 
)

◆ ComputeEPAResults()

template<typename T >
void Chaos::ComputeEPAResults ( const TVec3< T > *  VertsA,
const TVec3< T > *  VertsB,
const TEPAEntry< T > &  Entry,
T &  OutPenetration,
TVec3< T > &  OutDir,
TVec3< T > &  OutA,
TVec3< T > &  OutB 
)

◆ ComputeExtraNodalColoring() [1/2]

template<typename T >
CHAOS_API void Chaos::ComputeExtraNodalColoring ( const TArray< TArray< int32 > > &  Graph,
const TArray< TArray< int32 > > &  ExtraGraph,
const Chaos::TDynamicParticles< T, 3 > &  InParticles,
const TArray< TArray< int32 > > &  IncidentElements,
const TArray< TArray< int32 > > &  ExtraIncidentElements,
TArray< int32 > &  ParticleColors,
TArray< TArray< int32 > > &  ParticlesPerColor 
)

◆ ComputeExtraNodalColoring() [2/2]

template<typename T >
CHAOS_API void Chaos::ComputeExtraNodalColoring ( const TArray< TArray< int32 > > &  StaticGraph,
const TArray< TArray< int32 > > &  DynamicGraph,
const TArray< TArray< int32 > > &  ExtraGraph,
const Chaos::TDynamicParticles< T, 3 > &  InParticles,
const TArray< TArray< int32 > > &  StaticIncidentElements,
const TArray< TArray< int32 > > &  DynamicIncidentElements,
const TArray< TArray< int32 > > &  ExtraIncidentElements,
TArray< int32 > &  ParticleColors,
TArray< TArray< int32 > > &  ParticlesPerColor 
)

◆ ComputeFiberField()

template<class T , class TV , class TV_INT , int d = 3>
void Chaos::ComputeFiberField ( const TArray< TV_INT > &  Mesh,
const TArray< TV > &  Vertices,
const TArray< TArray< int32 > > &  IncidentElements,
const TArray< TArray< int32 > > &  IncidentElementsLocalIndex,
const TArray< int32 > &  Origins,
const TArray< int32 > &  Insertions,
TArray< TV > &  Directions,
TArray< T > &  ScalarField,
const int32  MaxIt = 100,
const T  Tol = T(1e-7) 
)

◆ ComputeGlobalBoxAndSplitAxis() [1/2]

template<typename OBJECT_ARRAY , typename T , int d>
const TAABB< T, d > Chaos::ComputeGlobalBoxAndSplitAxis ( const OBJECT_ARRAY Objects,
const TArray< int32 > &  AllObjects,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes,
bool  bAllowMultipleSplitting,
int32 OutAxis 
)

◆ ComputeGlobalBoxAndSplitAxis() [2/2]

template<typename T , int d>
const TAABB< T, d > Chaos::ComputeGlobalBoxAndSplitAxis ( const TParticles< T, d > &  Objects,
const TArray< int32 > &  AllObjects,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes,
bool  bAllowMultipleSplitting,
int32 OutAxis 
)

◆ ComputeGridBasedGraphSubColoringPointer() [1/2]

template<typename T >
void Chaos::ComputeGridBasedGraphSubColoringPointer ( const TArray< TArray< int32 > > &  ElementsPerColor,
const TMPMGrid< T > &  Grid,
const int32  GridSize,
TArray< TArray< int32 > > *&  PreviousColoring,
const TArray< TArray< int32 > > &  ConstraintsNodesSet,
TArray< TArray< TArray< int32 > > > &  ElementsPerSubColors 
)

◆ ComputeGridBasedGraphSubColoringPointer() [2/2]

template<typename T >
CHAOS_API void Chaos::ComputeGridBasedGraphSubColoringPointer ( const TArray< TArray< int32 > > &  ElementsPerColor,
const TMPMGrid< T > &  Grid,
const int32  GridSize,
TUniquePtr< TArray< TArray< int32 > > > &  PreviousColoring,
const TArray< TArray< int32 > > &  ConstraintsNodesSet,
TArray< TArray< TArray< int32 > > > &  ElementsPerSubColors 
)

◆ ComputeHashTable() [1/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< Chaos::FPBDCollisionConstraint > &  ConstraintsArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeHashTable() [2/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< FBreakingData > &  BreakingsArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeHashTable() [3/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< FBreakingDataExt > &  BreakingsArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeHashTable() [4/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< FCollidingData > &  CollisionsArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeHashTable() [5/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< FCollidingDataExt > &  CollisionsArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeHashTable() [6/7]

void CHAOS_API Chaos::ComputeHashTable ( const TArray< FVector > &  ParticleArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const float  SpatialHashRadius 
)

◆ ComputeHashTable() [7/7]

void Chaos::ComputeHashTable ( const TArray< FVector > &  ParticleArray,
const FBox BoundingBox,
TMultiMap< int32, int32 > &  HashTableMap,
const FReal  SpatialHashRadius 
)

◆ ComputeLocalCapsule()

FGJKCapsuleSingleSIMD Chaos::ComputeLocalCapsule ( const FCapsule Capsule,
const FRigidTransform3 CapsuleTM,
const FRigidTransform3 OtherTM 
)

◆ ComputeLocalSphere()

FGJKSphereSingleSIMD Chaos::ComputeLocalSphere ( const FSphere Sphere,
const FRigidTransform3 SphereTM,
const FRigidTransform3 OtherTM 
)

◆ ComputeNodalColoring() [1/2]

template<typename T , typename ParticleType >
CHAOS_API TArray< TArray< int32 > > Chaos::ComputeNodalColoring ( const TArray< TArray< int32 > > &  Graph,
const Chaos::TDynamicParticles< T, 3 > &  InParticles,
const int32  GraphParticlesStart,
const int32  GraphParticlesEnd,
const TArray< TArray< int32 > > &  IncidentElements,
const TArray< TArray< int32 > > &  IncidentElementsLocalIndex,
const Chaos::TPBDActiveView< ParticleType > *  InParticleActiveView = nullptr,
TArray< int32 > *  ParticleColorsOut = nullptr 
)

◆ ComputeNodalColoring() [2/2]

template<typename T >
CHAOS_API TArray< TArray< int32 > > Chaos::ComputeNodalColoring ( const TArray< TVec4< int32 > > &  Graph,
const Chaos::TDynamicParticles< T, 3 > &  InParticles,
const int32  GraphParticlesStart,
const int32  GraphParticlesEnd,
const TArray< TArray< int32 > > &  IncidentElements,
const TArray< TArray< int32 > > &  IncidentElementsLocalIndex 
)

◆ ComputeScaledSweepInputs()

void Chaos::ComputeScaledSweepInputs ( FVec3  TriMeshScale,
const FRigidTransform3 StartTM,
const FVec3 Dir,
const FReal  Length,
FVec3 OutScaledDirNormalized,
FReal OutLengthScale,
FRigidTransform3 OutScaledStartTM 
)

◆ ComputeSphereTriangleOverlapSimd()

bool Chaos::ComputeSphereTriangleOverlapSimd ( const VectorRegister4Float A,
const VectorRegister4Float B,
const VectorRegister4Float C,
const VectorRegister4Float X,
FRealSingle  Radius 
)

◆ ComputeSweptContactPhiAndTOIHelper() [1/2]

void Chaos::ComputeSweptContactPhiAndTOIHelper ( const FReal  DirDotNormal,
const FReal Length,
const FReal HitTime,
FReal OutTOI,
FReal OutPhi 
)

◆ ComputeSweptContactPhiAndTOIHelper() [2/2]

void Chaos::ComputeSweptContactPhiAndTOIHelper ( const FVec3 ContactNormal,
const FVec3 Dir,
const FReal Length,
const FReal HitTime,
FReal OutTOI,
FReal OutPhi 
)

◆ ComputeSweptContactStartAndEndPhi()

bool Chaos::ComputeSweptContactStartAndEndPhi ( const FReal  TOI,
const FReal  Phi,
const FReal  DirDotNormal,
const FReal  Length,
FReal StartPhi,
FReal EndPhi 
)

◆ ComputeSweptContactTimeToTargetPhi()

FReal Chaos::ComputeSweptContactTimeToTargetPhi ( const FReal  StartPhi,
const FReal  EndPhi,
const FReal  IgnorePhi,
const FReal  TargetPhi 
)

◆ ComputeSweptContactTOIAndPhiAtTargetPenetration() [1/2]

bool Chaos::ComputeSweptContactTOIAndPhiAtTargetPenetration ( const FReal  DirDotNormal,
const FReal  SweepLength,
const FReal  HitDistance,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal OutTOI,
FReal OutPhi 
)

Given a sweep result, calculate the sweep time at which the penetration depth will be TargetPenetration This is based on the initial and final contact separation from the sweep test but modified so that.

  • we ignore separating contacts (increasing Phi)
  • we ignore contacts that are separated at T=1 (EndPhi > 0)
  • we ignore contacts if the penetration is less than the IgnorePenetration
  • we calculate the TOI that leaves a penetration depth of TargetPenetration (except when initially overlapping by more than TargetPenetration, in which case TOI=0)
Parameters
SweepLengthThe length of the sweep test
HitDistanceThe distance along the sweep where the shapes first touch
IgnorePenetrationIgnore contacts if the depth at T=1 is less than this
TargetPenetrationCalculate the TOI for this penetration depth
OutTOIThe sweep time at which we hit the TargetPenetration, or "infinity" (numeric max)
OutPhiThe depth at OutTOI, which is usually TargetPenetration unless OutTOI is zero
Returns
true if we have a TOI less than 1

◆ ComputeSweptContactTOIAndPhiAtTargetPenetration() [2/2]

bool Chaos::ComputeSweptContactTOIAndPhiAtTargetPenetration ( const FVec3 ContactNormal,
const FVec3 Dir,
const FReal  SweepLength,
const FReal  HitDistance,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal OutTOI,
FReal OutPhi 
)

◆ ComputeWeakConstraintsColoring()

template<typename T >
CHAOS_API void Chaos::ComputeWeakConstraintsColoring ( const TArray< TArray< int32 > > &  Indices,
const TArray< TArray< int32 > > &  SecondIndices,
const Chaos::TDynamicParticles< T, 3 > &  InParticles,
TArray< TArray< int32 > > &  ConstraintsPerColor 
)

◆ ComputeWorldSpaceBoundingBox() [1/6]

template<typename T , typename GenericEntry >
TAABB< T, 3 > Chaos::ComputeWorldSpaceBoundingBox ( const GenericEntry InEntry,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBox() [2/6]

template<typename T , int d, bool bPersistent>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBox ( const TGeometryParticleHandleImp< T, d, bPersistent > &  Handle,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBox() [3/6]

template<class T , int d>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBox ( const TGeometryParticles< T, d > &  Objects,
const int32  i,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBox() [4/6]

template<class T , int d>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBox ( const TParticles< T, d > &  Objects,
const int32  i,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBox() [5/6]

template<typename T , int d, bool bPersistent>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBox ( const TPBDRigidParticleHandleImp< T, d, bPersistent > &  Handle,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBox() [6/6]

template<class T , int d>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBox ( const TPBDRigidParticles< T, d > &  Objects,
const int32  i,
bool  bUseVelocity = false,
Dt = 0 
)

◆ ComputeWorldSpaceBoundingBoxForHandle()

template<typename THandle , typename T , int d, bool bPersistent>
TAABB< T, d > Chaos::ComputeWorldSpaceBoundingBoxForHandle ( const THandle Handle)

◆ ConjugateAll()

void Chaos::ConjugateAll ( const FFFT3::FUniformGrid Grid,
FFFT3::FArrayNDOfComplex Velocity,
const int32  z 
)

◆ ConstifyHelper()

template<typename T >
const T * Chaos::ConstifyHelper ( T *  Ptr)

◆ ConstructCapsuleTriangleOneShotManifold2()

CHAOS_API void Chaos::ConstructCapsuleTriangleOneShotManifold2 ( const FImplicitCapsule3 Capsule,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [1/8]

template<typename ConvexType >
void Chaos::ConstructConvexTriangleOneShotManifold2 ( const ConvexType Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [2/8]

template<typename ConvexType >
CHAOS_API void Chaos::ConstructConvexTriangleOneShotManifold2 ( const ConvexType Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)
extern

◆ ConstructConvexTriangleOneShotManifold2() [3/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const FImplicitBox3 Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [4/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const FImplicitConvex3 Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [5/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const TImplicitObjectInstanced< FImplicitBox3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [6/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const TImplicitObjectInstanced< FImplicitConvex3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [7/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const TImplicitObjectScaled< FImplicitBox3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructConvexTriangleOneShotManifold2() [8/8]

template void Chaos::ConstructConvexTriangleOneShotManifold2 ( const TImplicitObjectScaled< FImplicitConvex3 > &  Convex,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ConstructSphereTriangleOneShotManifold()

CHAOS_API void Chaos::ConstructSphereTriangleOneShotManifold ( const FImplicitSphere3 Sphere,
const FTriangle Triangle,
const FReal  CullDistance,
FContactPointManifold OutContactPoints 
)

◆ ContactConstraintSortPredicate()

CHAOS_API bool Chaos::ContactConstraintSortPredicate ( const FPBDCollisionConstraint L,
const FPBDCollisionConstraint R 
)

◆ ConvertDoubleToFloat() [1/2]

float Chaos::ConvertDoubleToFloat ( double  DoubleValue)
inline

◆ ConvertDoubleToFloat() [2/2]

TVec3< float > Chaos::ConvertDoubleToFloat ( TVec3< double DoubleValue)
inline

◆ ConvertFloatToDouble() [1/2]

double Chaos::ConvertFloatToDouble ( float  FloatValue)
inline

◆ ConvertFloatToDouble() [2/2]

TVec3< double > Chaos::ConvertFloatToDouble ( TVec3< float FloatValue)
inline

◆ ConvexHeightFieldContactPoint()

FContactPoint Chaos::ConvexHeightFieldContactPoint ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ ConvexPointPenetrationVector()

template<typename T_CONVEX >
bool Chaos::ConvexPointPenetrationVector ( const T_CONVEX Convex,
const FVec3 X,
FVec3 OutNormal,
FReal OutPhi 
)

◆ ConvexTriangleMeshContactPoint()

FContactPoint Chaos::ConvexTriangleMeshContactPoint ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const FImplicitObject B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ ConvexTriangleMeshSweptContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::ConvexTriangleMeshSweptContactPoint ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ ConvexTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::ConvexTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ ConvexTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

template FContactPoint Chaos::ConvexTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &  B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ CopyDataFromObject() [1/2]

void Chaos::CopyDataFromObject ( FPBDJointSettings Data,
const FPBDJointConstraintHandle Joint 
)
inline

◆ CopyDataFromObject() [2/2]

template<typename TData , typename TObj >
void Chaos::CopyDataFromObject ( TData &  Data,
const TObj Obj 
)

◆ CopyFromHelper() [1/2]

template<typename T >
T Chaos::CopyFromHelper ( const T &  Src)

◆ CopyFromHelper() [2/2]

template<typename TPayloadType , typename T , int d>
TSpatialAccelerationBucketEntry< TPayloadType, T, d > Chaos::CopyFromHelper ( const TSpatialAccelerationBucketEntry< TPayloadType, T, d > &  Src)

◆ CreateImplicitPairConstraint()

FPBDCollisionConstraintPtr Chaos::CreateImplicitPairConstraint ( FGeometryParticleHandle Particle0,
const FImplicitObject Implicit0,
const FPerShapeData Shape0,
const FBVHParticles BVHParticles0,
const FRigidTransform3 ShapeRelativeTransform0,
FGeometryParticleHandle Particle1,
const FImplicitObject Implicit1,
const FPerShapeData Shape1,
const FBVHParticles BVHParticles1,
const FRigidTransform3 ShapeRelativeTransform1,
const FReal  CullDistance,
const EContactShapesType  ShapePairType,
const bool  bUseManifold,
const FCollisionContext Context 
)

◆ CreateNewSpatialStructureFromSubStructure()

TUniquePtr< ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > > Chaos::CreateNewSpatialStructureFromSubStructure ( TUniquePtr< ISpatialAcceleration< FAccelerationStructureHandle, FReal, 3 > > &&  Substructure)

◆ CreateShapePairConstraint()

FPBDCollisionConstraintPtr Chaos::CreateShapePairConstraint ( FGeometryParticleHandle Particle0,
const FPerShapeData InShape0,
FGeometryParticleHandle Particle1,
const FPerShapeData InShape1,
const FReal  CullDistance,
const EContactShapesType  ShapePairType,
const bool  bUseManifold,
const FCollisionContext Context 
)

◆ CVarAABBMaxChildrenInLeaf()

FAutoConsoleVariableRef Chaos::CVarAABBMaxChildrenInLeaf ( TEXT("p.AABBMaxChildrenInLeaf")  ,
BroadPhaseConfig.  AABBMaxChildrenInLeaf,
TEXT("")   
)

◆ CVarAABBMaxTreeDepth()

FAutoConsoleVariableRef Chaos::CVarAABBMaxTreeDepth ( TEXT("p.AABBMaxTreeDepth")  ,
BroadPhaseConfig.  AABBMaxTreeDepth,
TEXT("")   
)

◆ CVarBoundingVolumeNumCells()

FAutoConsoleVariableRef Chaos::CVarBoundingVolumeNumCells ( TEXT("p.BoundingVolumeNumCells")  ,
BroadPhaseConfig.  BVNumCells,
TEXT("")   
)

◆ CVarBroadphaseIsTree()

FAutoConsoleVariableRef Chaos::CVarBroadphaseIsTree ( TEXT("p.BroadphaseType")  ,
BroadPhaseConfig.  BroadphaseType,
TEXT("")   
)

◆ CVarIterationsPerTimeSlice()

FAutoConsoleVariableRef Chaos::CVarIterationsPerTimeSlice ( TEXT("p.IterationsPerTimeSlice")  ,
BroadPhaseConfig.  IterationsPerTimeSlice,
TEXT("")   
)

◆ CVarMaxChildrenInLeaf()

FAutoConsoleVariableRef Chaos::CVarMaxChildrenInLeaf ( TEXT("p.MaxChildrenInLeaf")  ,
BroadPhaseConfig.  MaxChildrenInLeaf,
TEXT("")   
)

◆ CVarMaxPayloadSize()

FAutoConsoleVariableRef Chaos::CVarMaxPayloadSize ( TEXT("p.MaxPayloadSize")  ,
BroadPhaseConfig.  MaxPayloadSize,
TEXT("")   
)

◆ CVarMaxTreeDepth()

FAutoConsoleVariableRef Chaos::CVarMaxTreeDepth ( TEXT("p.MaxTreeDepth")  ,
BroadPhaseConfig.  MaxTreeDepth,
TEXT("")   
)

◆ DECLARE_CYCLE_STAT() [1/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AABBTreeGenerateTree")  ,
STAT_AABBTreeGenerateTree  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [2/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AABBTreeInitialTimeSlice")  ,
STAT_AABBTreeInitialTimeSlice  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [3/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AABBTreeProgressTimeSlice")  ,
STAT_AABBTreeProgressTimeSlice  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [4/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AABBTreeTimeSliceSetup")  ,
STAT_AABBTreeTimeSliceSetup  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [5/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AccelerationStructureTimeSlice")  ,
STAT_AccelerationStructureTimeSlice  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [6/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("AccelerationStructureTimeSliceCopy")  ,
STAT_AccelerationStructureTimeSliceCopy  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [7/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("BreakingModel")  ,
STAT_BreakingModel  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [8/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("BreakingModel_AllParticles")  ,
STAT_BreakingModel_AllParticles  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [9/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("CacheAccelerationBounds")  ,
STAT_CacheAccelerationBounds  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [10/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Collisions::BeginDetect")  ,
STAT_Collisions_BeginDetect  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [11/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Collisions::DetectProbeCollisions")  ,
STAT_Collisions_DetectProbeCollisions  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [12/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Collisions::EndDetect")  ,
STAT_Collisions_EndDetect  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [13/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Collisions::Reset")  ,
STAT_Collisions_Reset  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [14/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Collisions::Sort")  ,
STAT_Collisions_Sort  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [15/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("ComputeIntermediateSpatialAcceleration")  ,
STAT_ComputeIntermediateSpatialAcceleration  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [16/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("ComputeStrainFromCollision")  ,
STAT_ComputeStrainFromCollision  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [17/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("CopyAccelerationStructure")  ,
STAT_CopyAccelerationStructure  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [18/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("CreateInitialAccelerationStructure")  ,
STAT_CreateInitialAccelerationStructure  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [19/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("CreateNonSlicedStructures")  ,
STAT_CreateNonSlicedStructures  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [20/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("EventDefaults::RegisterCollisionEvent_Filter")  ,
STAT_Events_RegisterCollisionEvent_Filter  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [21/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("EventDefaults::RegisterCollisionEvent_Notify")  ,
STAT_Events_RegisterCollisionEvent_Notify  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [22/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::AddPendingClusterIndexOperation")  ,
STAT_AddPendingClusterIndexOperation  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [23/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::AddPendingExplicitIndexOperation")  ,
STAT_AddPendingExplicitIndexOperation  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [24/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::ClaimNextUnionIndex")  ,
STAT_ClaimNextUnionIndex  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [25/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::CreateNewClusterUnion")  ,
STAT_CreateNewClusterUnion  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [26/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::DeferredClusterUnionUpdate")  ,
STAT_DeferredClusterUnionUpdate  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [27/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::DestroyClusterUnion")  ,
STAT_DestroyClusterUnion  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [28/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::FindClusterUnionIndexFromParticle")  ,
STAT_FindClusterUnionIndexFromParticle  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [29/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::FlushIncrementalConnectivityGraphOperations")  ,
STAT_FlushIncrementalConnectivityGraphOperations  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [30/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::FlushIncrementalGeometryOperations")  ,
STAT_FlushIncrementalGeometryOperations  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [31/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::FlushPendingOperations")  ,
STAT_FlushPendingOperations  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [32/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::ForceRecreateClusterUnionSharedGeometry")  ,
STAT_ForceRecreateClusterUnionSharedGeometry  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [33/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::ForceRegenerateGeometry")  ,
STAT_ForceRegenerateGeometry  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [34/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::GenerateInterclusterEdgesBetweenParticles")  ,
STAT_GenerateInterclusterEdgesBetweenParticles  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [35/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::GenerateInterclusterEdgesForParticle")  ,
STAT_GenerateInterclusterEdgesForParticle  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [36/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::GetOrCreateClusterUnionIndexFromExplicitIndex")  ,
STAT_GetOrCreateClusterUnionIndexFromExplicitIndex  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [37/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::HandleAddOperation")  ,
STAT_HandleAddOperation  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [38/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::HandleDeferredClusterUnionUpdateProperties")  ,
STAT_HandleDeferredClusterUnionUpdateProperties  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [39/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::HandleRemoveOperation")  ,
STAT_HandleRemoveOperation  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [40/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::HandleRemoveOperationWithClusterLookup")  ,
STAT_HandleRemoveOperationWithClusterLookup  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [41/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::HandleUpdateChildToParentOperation")  ,
STAT_HandleUpdateChildToParentOperation  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [42/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::UpdateClusterUnionParticlesChildToParent")  ,
STAT_UpdateClusterUnionParticlesChildToParent  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [43/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionManager::UpdateClusterUnionProperties")  ,
STAT_UpdateClusterUnionProperties  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [44/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionPhysicsProxy::BufferPhysicsResults_External")  ,
STAT_ClusterUnionPhysicsProxyBufferPhysicsResultsExternal  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [45/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionPhysicsProxy::BufferPhysicsResults_Internal")  ,
STAT_ClusterUnionPhysicsProxyBufferPhysicsResultsInternal  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [46/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionPhysicsProxy::PullFromPhysicsState")  ,
STAT_ClusterUnionPhysicsProxyPullFromPhysicsState  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [47/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionPhysicsProxy::PushToPhysicsState")  ,
STAT_ClusterUnionPhysicsProxyPushToPhysicsState  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [48/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FClusterUnionPhysicsProxy::SyncRemoteData")  ,
STAT_ClusterUnionPhysicsProxySyncRemoteData  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [49/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FConvex::ComputeUnitMassInertiaTensorAndRotationOfMass")  ,
STAT_ComputeConvexMassInertia  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [50/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FConvex::CreateStructureData")  ,
STAT_CreateConvexStructureData  ,
STATGROUP_ChaosCollision   
)

◆ DECLARE_CYCLE_STAT() [51/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FRigidClustering::CleanupInternalClustersForProxy")  ,
STAT_CleanupInternalClustersForProxy  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [52/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("FRigidClustering::Visitor")  ,
STAT_ClusterVisitor  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [53/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::Apply")  ,
STAT_Joints_Apply  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [54/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::ApplyProjection")  ,
STAT_Joints_ApplyProjection  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [55/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::ApplyPushOut")  ,
STAT_Joints_ApplyPushOut  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [56/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::Gather")  ,
STAT_Joints_Gather  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [57/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::PrepareTick")  ,
STAT_Joints_PrepareTick  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [58/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::Scatter")  ,
STAT_Joints_Scatter  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [59/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::Sort")  ,
STAT_Joints_Sort  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [60/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("Joints::UnprepareTick")  ,
STAT_Joints_UnprepareTick  ,
STATGROUP_ChaosJoint   
)

◆ DECLARE_CYCLE_STAT() [61/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::Advance")  ,
STAT_MinEvolution_Advance  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [62/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::AdvanceOneTimeStep")  ,
STAT_MinEvolution_AdvanceOneTimeStep  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [63/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::ApplyConstraintsPhase1")  ,
STAT_MinEvolution_ApplyConstraintsPhase1  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [64/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::ApplyConstraintsPhase2")  ,
STAT_MinEvolution_ApplyConstraintsPhase2  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [65/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::ApplyConstraintsPhase3")  ,
STAT_MinEvolution_ApplyConstraintsPhase3  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [66/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::DetectCollisions")  ,
STAT_MinEvolution_DetectCollisions  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [67/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::Gather")  ,
STAT_MinEvolution_Gather  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [68/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::Integrate")  ,
STAT_MinEvolution_Integrate  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [69/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::KinematicTargets")  ,
STAT_MinEvolution_KinematicTargets  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [70/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::PrepareTick")  ,
STAT_MinEvolution_PrepareTick  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [71/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::Rewind")  ,
STAT_MinEvolution_Rewind  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [72/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::Scatter")  ,
STAT_MinEvolution_Scatter  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [73/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("MinEvolution::UnprepareTick")  ,
STAT_MinEvolution_UnprepareTick  ,
STATGROUP_ChaosMinEvolution   
)

◆ DECLARE_CYCLE_STAT() [74/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("ResetCollisionImpulseArray")  ,
STAT_ResetCollisionImpulseArray  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [75/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("SwapAccelerationStructures")  ,
STAT_SwapAccelerationStructures  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [76/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::AddParticlesToCluster" ,
STAT_AddParticlesToCluster  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [77/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::AdvanceClustering" ,
STAT_AdvanceClustering  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [78/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::ClearConnectionGraph" ,
STAT_ClearConnectionGraph  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [79/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::CreateClusterParticle" ,
STAT_CreateClusterParticle  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [80/105]

◆ DECLARE_CYCLE_STAT() [81/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::DeactivateClusterParticle" ,
STAT_DeactivateClusterParticle  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [82/105]

◆ DECLARE_CYCLE_STAT() [83/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::GenerateConnectionGraph" ,
STAT_GenerateConnectionGraph  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [84/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::GetActiveClusterIndex" ,
STAT_GetActiveClusterIndex  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [85/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::HandleConnectivityOnReleaseClusterParticle" ,
HandleConnectivityOnReleaseClusterParticle  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [86/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::ReleaseChildrenParticleAndParents" ,
ReleaseChildrenParticleAndParents  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [87/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::ReleaseClusterParticles(LIST)")  ,
STAT_ReleaseClusterParticles_LIST  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [88/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::ReleaseClusterParticles(STRAIN)")  ,
STAT_ReleaseClusterParticles_STRAIN  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [89/105]

◆ DECLARE_CYCLE_STAT() [90/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::RemoveNodeConnections" ,
STAT_RemoveNodeConnections  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [91/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::RemoveParticlesFromCluster" ,
STAT_RemoveParticlesFromCluster  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [92/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UnionClusterGroups" ,
STAT_UnionClusterGroups  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [93/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::Update Dirty Impulses" ,
STAT_UpdateDirtyImpulses  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [94/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::Update Impulse from Strain" ,
STAT_UpdateImpulseStrain  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [95/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateClusterMassProperties()")  ,
STAT_UpdateClusterMassProperties  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [96/105]

◆ DECLARE_CYCLE_STAT() [97/105]

◆ DECLARE_CYCLE_STAT() [98/105]

◆ DECLARE_CYCLE_STAT() [99/105]

◆ DECLARE_CYCLE_STAT() [100/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateGeometry" ,
STAT_UpdateGeometry  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [101/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateGeometry_CopyPoints" ,
STAT_UpdateGeometry_CopyPoints  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [102/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateGeometry_GatherObjects" ,
STAT_UpdateGeometry_GatherObjects  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [103/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateGeometry_GatherPoints" ,
STAT_UpdateGeometry_GatherPoints  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [104/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateGeometry_PointsBVH" ,
STAT_UpdateGeometry_PointsBVH  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT() [105/105]

Chaos::DECLARE_CYCLE_STAT ( TEXT("TPBDRigidClustering<>::UpdateKinematicProperties()")  ,
STAT_UpdateKinematicProperties  ,
STATGROUP_Chaos   
)

◆ DECLARE_CYCLE_STAT_WITH_FLAGS()

Chaos::DECLARE_CYCLE_STAT_WITH_FLAGS ( TEXT("UpdateShapesArrayFromGeometryImpl")  ,
STAT_UpdateShapesArrayFromGeometryImpl  ,
STATGROUP_Chaos  ,
EStatFlags::Verbose   
)

◆ DECLARE_LOG_CATEGORY_EXTERN()

CHAOS_API Chaos::DECLARE_LOG_CATEGORY_EXTERN ( LogChaosMinEvolution  ,
Log  ,
All   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [1/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialCreated  ,
FMaterialHandle   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [2/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialDestroyed  ,
FMaterialHandle   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [3/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialMaskCreated  ,
FMaterialMaskHandle   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [4/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialMaskDestroyed  ,
FMaterialMaskHandle   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [5/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialMaskUpdated  ,
FMaterialMaskHandle   
)

◆ DECLARE_MULTICAST_DELEGATE_OneParam() [6/6]

Chaos::DECLARE_MULTICAST_DELEGATE_OneParam ( FOnMaterialUpdated  ,
FMaterialHandle   
)

◆ DEFINE_LOG_CATEGORY()

Chaos::DEFINE_LOG_CATEGORY ( LogChaosMinEvolution  )

◆ DEFINE_LOG_CATEGORY_STATIC()

Chaos::DEFINE_LOG_CATEGORY_STATIC ( LogChaosSpatialHash  ,
Verbose  ,
All   
)

◆ DegToRad()

FORCEINLINE float Chaos::DegToRad ( float  InDeg)

◆ DeleteValueFromSortedSubArray()

FORCEINLINE_DEBUGGABLE bool Chaos::DeleteValueFromSortedSubArray ( TArray< int32 > &  Array,
int32  Value,
int32  StartIndex,
int32  Count 
)

◆ DoCollide() [1/2]

bool Chaos::DoCollide ( EImplicitObjectType  Implicit0Type,
const FPerShapeData Shape0,
EImplicitObjectType  Implicit1Type,
const FPerShapeData Shape1 
)
inline

Sim Collision filter (i.e., not Query collision filter)

◆ DoCollide() [2/2]

bool Chaos::DoCollide ( EImplicitObjectType  ImplicitType,
const FPerShapeData Shape 
)
inline

◆ DoForOverlappedCells()

template<typename T , typename FunctionType >
FORCEINLINE_DEBUGGABLE bool Chaos::DoForOverlappedCells ( const TAABB< T, 3 > &  AABB,
FReal  DirtyElementGridCellSize,
FReal  DirtyElementGridCellSizeInv,
FunctionType  Function 
)

◆ DoForOverlappedCellsExclude()

template<typename T , typename FunctionType >
FORCEINLINE_DEBUGGABLE bool Chaos::DoForOverlappedCellsExclude ( const TAABB< T, 3 > &  AABB,
const TAABB< T, 3 > &  AABBExclude,
FReal  DirtyElementGridCellSize,
FReal  DirtyElementGridCellSizeInv,
FunctionType  Function 
)

◆ DoForRaycastIntersectCells()

template<typename FunctionType >
FORCEINLINE_DEBUGGABLE void Chaos::DoForRaycastIntersectCells ( const FVec3 StartPoint,
const FVec3 Dir,
FReal  Length,
FReal  DirtyElementGridCellSize,
FReal  DirtyElementGridCellSizeInv,
FunctionType  InFunction 
)

◆ DoForSweepIntersectCells()

template<typename FunctionType >
void Chaos::DoForSweepIntersectCells ( const FVec3  QueryHalfExtents,
const FVec3 StartPoint,
const FVec3 Dir,
FReal  Length,
FReal  DirtyElementGridCellSize,
FReal  DirtyElementGridCellSizeInv,
FunctionType  InFunction 
)

◆ DoForSweepIntersectCellsImp()

template<typename FunctionType >
FORCEINLINE_DEBUGGABLE void Chaos::DoForSweepIntersectCellsImp ( const FReal  QueryHalfExtentsX,
const FReal  QueryHalfExtentsY,
const FReal  StartPointX,
const FReal  StartPointY,
const FReal  RayX,
const FReal  RayY,
FReal  DirtyElementGridCellSize,
FReal  DirtyElementGridCellSizeInv,
FunctionType  InFunction 
)

◆ DrawNodeRecursive()

template<typename T , int d>
void Chaos::DrawNodeRecursive ( ISpacialDebugDrawInterface< T > *  InInterface,
const TBVHNode< T, d > &  InNode,
const TArray< TBVHNode< T, d > > &  InAllNodes 
)

◆ dRdFCorotated()

template<class T >
void Chaos::dRdFCorotated ( const PMatrix< T, 3, 3 > &  F,
TVector< T, 81 > &  dRdF 
)

◆ EditGeomData()

template<typename BufferType , typename ToRealFuncType >
void Chaos::EditGeomData ( TArrayView< BufferType >  BufferView,
int32  InBeginRow,
int32  InBeginCol,
int32  NumRows,
int32  NumCols,
ToRealFuncType  ToRealFunc,
typename FHeightField::FDataType OutData,
FAABB3 OutBounds 
)

◆ EnforceSymmetry()

void Chaos::EnforceSymmetry ( const FFFT3::FUniformGrid Grid,
FFFT3::FArrayNDOfComplex Velocity 
)

◆ EnsureIsInGameThreadContext()

FORCEINLINE void Chaos::EnsureIsInGameThreadContext ( )

◆ EnsureIsInPhysicsThreadContext()

FORCEINLINE void Chaos::EnsureIsInPhysicsThreadContext ( )

◆ EnsureSleepingObjectState()

void Chaos::EnsureSleepingObjectState ( EObjectStateType  ObjectState)

◆ ENUM_CLASS_FLAGS() [1/4]

Chaos::ENUM_CLASS_FLAGS ( ECollisionVisitorFlags  )

◆ ENUM_CLASS_FLAGS() [2/4]

Chaos::ENUM_CLASS_FLAGS ( EFilterFlags  )

◆ ENUM_CLASS_FLAGS() [3/4]

Chaos::ENUM_CLASS_FLAGS ( EGeometryParticleListMask  )

◆ ENUM_CLASS_FLAGS() [4/4]

Chaos::ENUM_CLASS_FLAGS ( EUpdateClusterUnionPropertiesFlags  )

◆ EPA() [1/2]

template<typename T >
EEPAResult Chaos::EPA ( TArray< TVec3< T > > &  VertsABuffer,
TArray< TVec3< T > > &  VertsBBuffer,
const TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> &  SupportA,
const TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)> &  SupportB,
T &  OutPenetration,
TVec3< T > &  OutDir,
TVec3< T > &  WitnessA,
TVec3< T > &  WitnessB,
const FReal  EpsRel = 1.e-2f 
)

◆ EPA() [2/2]

EEPAResult Chaos::EPA ( TArray< TVec3< T > > &  VertsABuffer,
TArray< TVec3< T > > &  VertsBBuffer,
const TSupportA SupportA,
const TSupportB SupportB,
T &  OutPenetration,
TVec3< T > &  OutDir,
TVec3< T > &  WitnessA,
TVec3< T > &  WitnessB,
const FReal  Eps = 1.e-2f 
)

◆ EPAComputeVisibilityBorder()

template<typename T >
void Chaos::EPAComputeVisibilityBorder ( TEPAWorkingArray< TEPAEntry< T > > &  Entries,
int32  EntryIdx,
const TVec3< T > &  W,
TEPAWorkingArray< FEPAFloodEntry > &  OutBorderEdges,
TEPAWorkingArray< FEPAFloodEntry > &  ToVisitStack 
)

◆ exchange()

void Chaos::exchange ( FReal f1,
FReal f2 
)

◆ ExtractAngularMotion()

bool Chaos::ExtractAngularMotion ( const FPBDJointSettings JointSettings,
TVec3< bool > &  bAngularLocked,
TVec3< bool > &  bAngularLimited,
TVec3< bool > &  bAngularFree 
)

UTILS FOR ROTATION CONSTRAINT

◆ ExtractLinearMotion()

FORCEINLINE bool Chaos::ExtractLinearMotion ( const FPBDJointSettings JointSettings,
TVec3< bool > &  bLinearLocked,
TVec3< bool > &  bLinearLimited 
)

UTILS FOR POSITION CONSTRAINT

◆ Fill()

template<class T >
void Chaos::Fill ( TArray< T > &  Array,
const T  Value 
)

◆ FilterHasSimEnabled()

bool Chaos::FilterHasSimEnabled ( const FPerShapeData Shape)
inline

Does the shape collide with anything at all in the Sim? (else it is query-only)

◆ FindAllIntersectionsLeafHelper() [1/4]

template<class OBJECT_ARRAY , typename TPayloadType , typename T , int d, typename QUERY_OBJECT >
TArray< int32 > Chaos::FindAllIntersectionsLeafHelper ( const TArray< int32 > &  Leaf,
const QUERY_OBJECT QueryObject 
)

◆ FindAllIntersectionsLeafHelper() [2/4]

template<class OBJECT_ARRAY , typename TPayloadType , class T , int d>
TArray< int32 > Chaos::FindAllIntersectionsLeafHelper ( const TArray< int32 > &  Leaf,
const TVector< T, d > &  Point 
)

◆ FindAllIntersectionsLeafHelper() [3/4]

template<class OBJECT_ARRAY , typename TPayloadType , class T , int d, typename QUERY_OBJECT >
TArray< int32 > Chaos::FindAllIntersectionsLeafHelper ( const TBoundingVolume< TPayloadType, T, d > &  Leaf,
const QUERY_OBJECT QueryObject 
)

◆ FindAllIntersectionsLeafHelper() [4/4]

template<class OBJECT_ARRAY , typename TPayloadType , class T , int d>
TArray< int32 > Chaos::FindAllIntersectionsLeafHelper ( const TBoundingVolume< TPayloadType, T, d > &  Leaf,
const TVector< T, d > &  Point 
)

◆ FindClosestPointAndAlphaOnLineSegment()

template<typename T , int d>
const TVector< T, d > Chaos::FindClosestPointAndAlphaOnLineSegment ( const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P,
T &  OutAlpha 
)

◆ FindClosestPointAndBaryOnTriangle()

template<typename T , int d>
TVector< T, d > Chaos::FindClosestPointAndBaryOnTriangle ( const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P2,
const TVector< T, d > &  P,
TVector< T, 3 > &  Bary 
)

◆ FindClosestPointOnLineSegment()

template<typename T , int d>
const TVector< T, d > Chaos::FindClosestPointOnLineSegment ( const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P 
)

◆ FindClosestPointOnTriangle() [1/2]

template<typename T , int d>
TVector< T, d > Chaos::FindClosestPointOnTriangle ( const TPlane< T, d > &  TrianglePlane,
const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P2,
const TVector< T, d > &  P 
)

◆ FindClosestPointOnTriangle() [2/2]

template<typename T , int d>
TVector< T, d > Chaos::FindClosestPointOnTriangle ( const TVector< T, d > &  ClosestPointOnPlane,
const TVector< T, d > &  P0,
const TVector< T, d > &  P1,
const TVector< T, d > &  P2,
const TVector< T, d > &  P 
)

◆ FindInsertIndexIntoSortedArray()

FORCEINLINE_DEBUGGABLE int32 Chaos::FindInsertIndexIntoSortedArray ( const TArray< int32 > &  Array,
int32  FindValue,
int32  StartIndex,
int32  EndIndex 
)

◆ FindInSortedArray()

FORCEINLINE_DEBUGGABLE int32 Chaos::FindInSortedArray ( const TArray< int32 > &  Array,
int32  FindValue,
int32  StartIndex,
int32  EndIndex 
)

◆ FindLevelSetParticles()

const FBVHParticles * Chaos::FindLevelSetParticles ( const FGeometryParticleHandle Particle,
const FImplicitObject Implicit 
)

◆ FixupLeafObj() [1/2]

template<typename OBJECT_ARRAY >
void Chaos::FixupLeafObj ( const OBJECT_ARRAY Objects,
TArray< TArray< int32 > > &  Leafs 
)

◆ FixupLeafObj() [2/2]

template<typename OBJECT_ARRAY , typename TPayloadType , typename T , int d>
void Chaos::FixupLeafObj ( const OBJECT_ARRAY Objects,
TArray< TBoundingVolume< TPayloadType, T, d > > &  Leafs 
)

◆ FlipSign()

template<class T >
void Chaos::FlipSign ( int  i,
PMatrix< T, 3, 3 > &  U,
TVector< T, 3 > &  sigma 
)
inline

Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma.

◆ FreeObjHelper() [1/2]

template<typename T >
void Chaos::FreeObjHelper ( T *&  RawPtr)

◆ FreeObjHelper() [2/2]

template<typename TPayloadType , typename T , int d>
void Chaos::FreeObjHelper ( TSpatialAccelerationBucketEntry< TPayloadType, T, d > &  BucketEntry)

◆ FromBarycentric()

template<typename RealType >
TVec3< RealType > Chaos::FromBarycentric ( const TVec3< RealType > &  Barycentric,
const TVec3< RealType > &  V0,
const TVec3< RealType > &  V1,
const TVec3< RealType > &  V2 
)
inline

Convert the barycentric coordinate into a cartesian corrdinate.

See also
ToBarycentric()

◆ GCm3ToKgCm3()

template<typename T >
T Chaos::GCm3ToKgCm3 ( Density)

◆ GenericConvexConvexContactPointSwept()

FContactPoint Chaos::GenericConvexConvexContactPointSwept ( const FImplicitObject A,
const FRigidTransform3 AStartTM,
const FRigidTransform3 AEndTM,
const FImplicitObject B,
const FRigidTransform3 BStartTM,
const FRigidTransform3 BEndTM,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ GeometryParticleDefaultConstruct()

template<typename T , int d, typename FConcrete >
void Chaos::GeometryParticleDefaultConstruct ( FConcrete Concrete,
const FGeometryParticleParameters Params 
)

Concrete can either be the game thread or physics representation, but API stays the same. Useful for keeping initialization and other logic the same

◆ GeometryParticleSleeping()

template<typename FConcrete >
bool Chaos::GeometryParticleSleeping ( const FConcrete Concrete)

◆ GetAccelerationsPerType() [1/2]

template<int Idx, typename First , typename... Rest>
const auto & Chaos::GetAccelerationsPerType ( const TSpatialTypeTuple< First, Rest... > &  Types)

◆ GetAccelerationsPerType() [2/2]

template<int Idx, typename First , typename... Rest>
auto & Chaos::GetAccelerationsPerType ( TSpatialTypeTuple< First, Rest... > &  Types)

◆ GetChaosCollisionChannelAndExtraFilter()

FORCEINLINE_DEBUGGABLE uint32 Chaos::GetChaosCollisionChannelAndExtraFilter ( uint32  Word3,
uint8 OutMaskFilter 
)

◆ GetChaosVersionStringInner()

FString Chaos::GetChaosVersionStringInner ( )
inline

◆ GetConcreteProxy() [1/2]

template<typename TProxy = FGeometryCollectionPhysicsProxy>
const TProxy * Chaos::GetConcreteProxy ( const FPBDRigidClusteredParticleHandle ClusteredParticle)

◆ GetConcreteProxy() [2/2]

template<typename TProxy = FGeometryCollectionPhysicsProxy>
TProxy * Chaos::GetConcreteProxy ( FPBDRigidClusteredParticleHandle ClusteredParticle)

◆ GetDirtyCellIndexFromWorldCoordinate()

FORCEINLINE_DEBUGGABLE int64 Chaos::GetDirtyCellIndexFromWorldCoordinate ( FReal  Coordinate,
FReal  DirtyElementGridCellSizeInv 
)

◆ GetEllipticalAxisError()

bool Chaos::GetEllipticalAxisError ( const FVec3 SwingAxisRot,
const FVec3 EllipseNormal,
const FVec3 TwistAxis,
FVec3 AxisLocal,
FReal Error 
)

◆ GetGeomSurfaceSamples() [1/5]

void Chaos::GetGeomSurfaceSamples ( const FCapsule InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamples() [2/5]

void Chaos::GetGeomSurfaceSamples ( const FConvex InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamples() [3/5]

void Chaos::GetGeomSurfaceSamples ( const FSphere InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamples() [4/5]

void Chaos::GetGeomSurfaceSamples ( const TBox< FReal, 3 > &  InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamples() [5/5]

template<typename InnerT >
void Chaos::GetGeomSurfaceSamples ( const TImplicitObjectScaled< InnerT > &  InScaledGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamplesExtended() [1/5]

void Chaos::GetGeomSurfaceSamplesExtended ( const FCapsule InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamplesExtended() [2/5]

void Chaos::GetGeomSurfaceSamplesExtended ( const FConvex InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamplesExtended() [3/5]

void Chaos::GetGeomSurfaceSamplesExtended ( const FSphere InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamplesExtended() [4/5]

void Chaos::GetGeomSurfaceSamplesExtended ( const TBox< FReal, 3 > &  InGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetGeomSurfaceSamplesExtended() [5/5]

template<typename InnerT >
void Chaos::GetGeomSurfaceSamplesExtended ( const TImplicitObjectScaled< InnerT > &  InScaledGeom,
TArray< FVec3 > &  OutSamples 
)

◆ GetHandleHelper() [1/4]

template<typename T , int d>
const TGeometryParticleHandle< T, d > * Chaos::GetHandleHelper ( const TGeometryParticleHandle< T, d > *  Handle)

◆ GetHandleHelper() [2/4]

template<typename T , int d>
const TGeometryParticleHandle< T, d > * Chaos::GetHandleHelper ( const TTransientGeometryParticleHandle< T, d > *  Handle)

◆ GetHandleHelper() [3/4]

template<typename T , int d>
TGeometryParticleHandle< T, d > * Chaos::GetHandleHelper ( TGeometryParticleHandle< T, d > *  Handle)

◆ GetHandleHelper() [4/4]

template<typename T , int d>
TGeometryParticleHandle< T, d > * Chaos::GetHandleHelper ( TTransientGeometryParticleHandle< T, d > *  Handle)

◆ GetHeightNormalAt()

template<bool bFillHeight, bool bFillNormal>
FHeightNormalResult Chaos::GetHeightNormalAt ( const FVec2 InGridLocationLocal,
const Chaos::FHeightField::FDataType InGeomData,
const TUniformGrid< Chaos::FReal, 2 > &  InGrid 
)

GetHeightNormalAt always return a valid normal if the point is outside of the grid, the edge is extended infinitely

◆ GetImplicitObjectTypeName()

FName Chaos::GetImplicitObjectTypeName ( EImplicitObjectType  Val)
inline

◆ GetInnerGeometryInstanceData()

const FImplicitObject * Chaos::GetInnerGeometryInstanceData ( const FImplicitObject Implicit,
const FRigidTransform3 **  OutRelativeTransformPtr 
)

◆ GetInnerType()

FORCEINLINE EImplicitObjectType Chaos::GetInnerType ( EImplicitObjectType  Type)

◆ GetInstancedImplicitHelper()

FImplicitObject * Chaos::GetInstancedImplicitHelper ( FImplicitObject Implicit0)
inline

◆ GetNumLeafImplicits()

int32 Chaos::GetNumLeafImplicits ( const FImplicitObject Implicit)
inline

◆ GetObjectCount() [1/4]

template<class OBJECT_ARRAY >
int32 Chaos::GetObjectCount ( const OBJECT_ARRAY Objects)

◆ GetObjectCount() [2/4]

template<class T , int d>
int32 Chaos::GetObjectCount ( const TGeometryParticles< T, d > &  Objects)

◆ GetObjectCount() [3/4]

template<class T , int d>
int32 Chaos::GetObjectCount ( const TParticles< T, d > &  Objects)

◆ GetObjectCount() [4/4]

template<class T , int d>
int32 Chaos::GetObjectCount ( const TPBDRigidParticles< T, d > &  Objects)

◆ GetOrdered() [1/2]

FORCEINLINE TVec2< int32 > Chaos::GetOrdered ( const TVec2< int32 > &  elem)

◆ GetOrdered() [2/2]

TVec3< int32 > Chaos::GetOrdered ( const TVec3< int32 > &  Elem)

◆ GetParticleDebugName()

template<typename TParticleType >
const FString & Chaos::GetParticleDebugName ( const TParticleType Particle)

◆ GetProxyToIndexMap()

template<typename PayloadType >
const TMap< IPhysicsProxyBase *, TArray< int32 > > * Chaos::GetProxyToIndexMap ( const PayloadType *  Buffer)

◆ GetShapeInstance()

const FShapeInstance * Chaos::GetShapeInstance ( const FShapeInstanceArray ShapeInstances,
const int32  RootObjectIndex,
const Private::FConvexOptimizer ConvexOptimizer = nullptr 
)

◆ GetSwingAngleY()

FReal Chaos::GetSwingAngleY ( const FRotation3 RSwing)

◆ GetSwingAngleZ()

FReal Chaos::GetSwingAngleZ ( const FRotation3 RSwing)

◆ GetTransformedMeshTriangle()

void Chaos::GetTransformedMeshTriangle ( const FImplicitObject InImplicit,
const int32  TriangleIndex,
const FRigidTransform3 InTransform,
FVec3  OutVertices[],
int32  OutVertexIndices[] 
)

◆ GetTriangleEdgeVerticesAtPosition() [1/2]

bool Chaos::GetTriangleEdgeVerticesAtPosition ( const FVec3 Position,
const FVec3  VertexA,
const FVec3  VertexB,
const FVec3  VertexC,
int32 OutEdgeVertexIndexA,
int32 OutEdgeVertexIndexB,
const FReal  BaryCentricTolerance = UE_KINDA_SMALL_NUMBER 
)
inline

◆ GetTriangleEdgeVerticesAtPosition() [2/2]

bool Chaos::GetTriangleEdgeVerticesAtPosition ( const FVec3 Position,
const FVec3  Vertices[],
int32 OutEdgeVertexIndexA,
int32 OutEdgeVertexIndexB,
const FReal  BaryCentricTolerance = UE_KINDA_SMALL_NUMBER 
)
inline

◆ GetTypeHash() [1/6]

template<class T >
uint32 Chaos::GetTypeHash ( const Chaos::TVector< T, 2 > &  V)
inline

◆ GetTypeHash() [2/6]

template<class T >
uint32 Chaos::GetTypeHash ( const Chaos::TVector< T, 3 > &  V)
inline

◆ GetTypeHash() [3/6]

FORCEINLINE uint32 Chaos::GetTypeHash ( const FParticleID Unique)

◆ GetTypeHash() [4/6]

uint32 Chaos::GetTypeHash ( const FSpatialAccelerationIdx Idx)
inline

◆ GetTypeHash() [5/6]

FORCEINLINE uint32 Chaos::GetTypeHash ( const FUniqueIdx Unique)

◆ GetTypeHash() [6/6]

template<typename T >
uint32 Chaos::GetTypeHash ( const TSerializablePtr< T > &  Ptr)
inline

◆ GetUniqueIdx() [1/4]

FORCEINLINE FUniqueIdx Chaos::GetUniqueIdx ( const FUniqueIdx  Payload)

◆ GetUniqueIdx() [2/4]

FORCEINLINE FUniqueIdx Chaos::GetUniqueIdx ( const int32  Payload)

◆ GetUniqueIdx() [3/4]

template<typename TPayload >
TEnableIf<!TIsPointer< TPayload >::Value, FUniqueIdx >::Type Chaos::GetUniqueIdx ( const TPayload Payload)

◆ GetUniqueIdx() [4/4]

template<typename TPayload >
TEnableIf< TIsPointer< TPayload >::Value, FUniqueIdx >::Type Chaos::GetUniqueIdx ( const TPayload Payload)

◆ GetWindingOrder()

FReal Chaos::GetWindingOrder ( const FVec3 Scale)

◆ GetWorldSpaceBoundingBox() [1/5]

template<class OBJECT_ARRAY , class T , int d>
const TAABB< T, d > Chaos::GetWorldSpaceBoundingBox ( const OBJECT_ARRAY Objects,
const int32  i,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ GetWorldSpaceBoundingBox() [2/5]

template<class T , int d>
const TAABB< T, d > Chaos::GetWorldSpaceBoundingBox ( const TArray< Private::FImplicitBVHObject > &  Objects,
const int32  ObjectIndex,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)
inline

◆ GetWorldSpaceBoundingBox() [3/5]

template<class T , int d>
const TAABB< T, d > & Chaos::GetWorldSpaceBoundingBox ( const TGeometryParticles< T, d > &  Objects,
const int32  i,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ GetWorldSpaceBoundingBox() [4/5]

template<class T , int d>
const TAABB< T, d > & Chaos::GetWorldSpaceBoundingBox ( const TParticles< T, d > &  Objects,
const int32  i,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ GetWorldSpaceBoundingBox() [5/5]

template<class T , int d>
const TAABB< T, d > Chaos::GetWorldSpaceBoundingBox ( const TPBDRigidParticles< T, d > &  Objects,
const int32  i,
const TMap< int32, TAABB< T, d > > &  WorldSpaceBoxes 
)

◆ GJKContactPoint()

FContactPoint Chaos::GJKContactPoint ( const GeometryA A,
const FRigidTransform3 ATM,
const GeometryB B,
const FRigidTransform3 BTM,
const FVec3 InitialDir 
)

◆ GJKContactPoint2()

FContactPoint Chaos::GJKContactPoint2 ( const GeometryA A,
const GeometryB B,
const FRigidTransform3 ATM,
const FRigidTransform3 BToATM,
const FVec3 InitialDir 
)

◆ GJKContactPointSwept()

FContactPoint Chaos::GJKContactPointSwept ( const FGeomGJKHelperSIMD A,
const FRigidTransform3 AStartTM,
const FRigidTransform3 AEndTM,
const FGeomGJKHelperSIMD B,
const FRigidTransform3 BStartTM,
const FRigidTransform3 BEndTM,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal OutTOI 
)

B could be static or dynamic. In both cases, we compute contact point in B local space.
GJKRaycast2 assumes that A, B do not rotate. If B is rotating, the trajectory of A in space B will become non-linear. Also if A or B is rotating, the minkowski difference of the sweep geometry will be very complex and the sweep geometry can be even non-convex, creating difficulties for the GJK algorithm. For computational efficiency, we could pick any rotation from the start frame rotation to the end frame rotation and lock that rotation for the sweeping process. No matter what rotation we pick, we could always get problems when rotation is large. If we pick the start frame rotation, we can think of this whole process as first sweeping the objects from X to P, then rotating them in place to end frame rotations. We might end up with A and B penetrating because of the end frame rotations. So here instead, we use the end frame rotations. This process becomes first rotating A and B in place to end frame rotations, then sweeping them from X to P. This produces less penetrations at the end of the frame.

◆ GJKDistance()

EGJKDistanceResult Chaos::GJKDistance ( const GJKShapeTypeA A,
const GJKShapeTypeB B,
const TVec3< T > &  InitialV,
T &  OutDistance,
TVec3< T > &  OutNearestA,
TVec3< T > &  OutNearestB,
TVec3< T > &  OutNormalA,
const T  Epsilon = (T)1e-3,
const int32  MaxIts = 16 
)

Find the distance and nearest points on two convex geometries A and B, if they do not overlap.

This is intended to be used with TGJKShape, TGJKCoreShape, TGJKShapeTransformed and TGJKCoreShapeTransformed and generally you will have a TGJKShape or TGJKCoreShape as A, and a Transformed version for B. The transform in B should transform a vector in B space to a vector in A space as all calculations are performed in the local- space of object A.

You can also use this function when you have 2 shapes already in the same space to avoid transforms in the support function(s). In this case you would use the non-transform versions of TGJKShape and would need to transform the results from the shared space to the space you desire.

For algorithm see "A Fast and Robust GJK Implementation for Collision Detection of Convex Objects", Gino Van Deb Bergen, 1999.

Note
This algorithm aborts if objects are overlapping and it does not initialize the out parameters.
Parameters
AThe first object (usually TGJKShape or TGJKCoreShape)
BThe second object (usually TGJKShapeTransformed or TGJKCoreShapeTransformed)
InitialVStarting support direction that must be in or on the Minkowski Sum. See GJKDistanceInitialVFromDirection().
OutDistanceIf result is not DeepContact, the minimum distance between A and B, otherwise not modified.
OutNearestAIf result is not DeepContact, the near point on A in local-space, otherwise not modified.
OutNearestBIf result is not DeepContact, the near point on B in local-space, otherwise not modified.
EpsilonThe algorithm terminates when the iterative distance reduction gets below this threshold.
MaxItsA limit on the number of iterations. Results may be approximate if this is too low.
Returns
EGJKDistanceResult - see comments on the enum

◆ GJKDistanceInitialV()

TVector< T, 3 > Chaos::GJKDistanceInitialV ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  BToATM 
)

◆ GJKDistanceInitialVFromDirection()

TVec3< T > Chaos::GJKDistanceInitialVFromDirection ( const TGeometryA A,
const TGeometryB B,
TVec3< T >  Direction 
)

◆ GJKDistanceInitialVFromRelativeTransform()

TVector< T, 3 > Chaos::GJKDistanceInitialVFromRelativeTransform ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  BToATM 
)

◆ GJKImplicitContactPoint()

FContactPoint Chaos::GJKImplicitContactPoint ( const FImplicitObject A,
const FRigidTransform3 ATransform,
const GeometryB B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ GJKImplicitScaledTriMeshSweptContactPoint()

template<typename GeometryA >
FContactPoint Chaos::GJKImplicitScaledTriMeshSweptContactPoint ( const FImplicitObject A,
const FRigidTransform3 AStartTransform,
const TImplicitObjectScaled< FTriangleMeshImplicitObject > &  B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal OutTOI 
)

◆ GJKImplicitSweptContactPoint()

template<typename GeometryB >
FContactPoint Chaos::GJKImplicitSweptContactPoint ( const FImplicitObject A,
const FRigidTransform3 AStartTransform,
const GeometryB B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal OutTOI 
)

◆ GJKImplicitSweptContactPoint< FHeightField >()

template FContactPoint Chaos::GJKImplicitSweptContactPoint< FHeightField > ( const FImplicitObject A,
const FRigidTransform3 AStartTransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ GJKIntersection() [1/2]

template<typename T >
bool Chaos::GJKIntersection ( const FGeomGJKHelperSIMD &RESTRICT  A,
const FGeomGJKHelperSIMD &RESTRICT  B,
FReal  EpsilonScale,
const TRigidTransform< T, 3 > &  BToATM,
const T  InThicknessA = 0,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0) 
)

◆ GJKIntersection() [2/2]

bool Chaos::GJKIntersection ( const TGeometryA &RESTRICT  A,
const TGeometryB &RESTRICT  B,
const TRigidTransform< T, 3 > &  BToATM,
const T  InThicknessA = 0,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0) 
)

Determines if two convex geometries overlap.

Parameters
AThe first geometry
BThe second geometry
BToATMThe transform of B in A's local space
ThicknessAThe amount of geometry inflation for Geometry A(for example if the surface distance of two geometries with thickness 0 would be 2, a thickness of 0.5 would give a distance of 1.5)
InitialDirThe first direction we use to search the CSO
Returns
True if the geometries overlap, False otherwise

◆ GJKIntersectionSameSpaceSimd()

bool Chaos::GJKIntersectionSameSpaceSimd ( const TGeometryA A,
const TGeometryB B,
FRealSingle  InThicknessA,
const VectorRegister4Float InitialDir 
)

Determines if two convex geometries in the same space overlap IMPORTANT: the two convex geometries must be in the same space!

Parameters
AThe first geometry
BThe second geometry
ThicknessAThe amount of geometry inflation for Geometry A(for example if the surface distance of two geometries with thickness 0 would be 2, a thickness of 0.5 would give a distance of 1.5)
InitialDirThe first direction we use to search the CSO (Must be normalized)
ThicknessBThe amount of geometry inflation for Geometry B(for example if the surface distance of two geometries with thickness 0 would be 2, a thickness of 0.5 would give a distance of 1.5)
Returns
True if the geometries overlap, False otherwise

◆ GJKIntersectionSimd() [1/2]

bool Chaos::GJKIntersectionSimd ( const FGeomGJKHelperSIMD &RESTRICT  A,
const FGeomGJKHelperSIMD &RESTRICT  B,
FRealSingle  EpsilonScale,
const VectorRegister4Float Translation,
const VectorRegister4Float Rotation,
FRealSingle  InThicknessA,
const VectorRegister4Float InitialDir 
)
inline

◆ GJKIntersectionSimd() [2/2]

bool Chaos::GJKIntersectionSimd ( const TGeometryA &RESTRICT  A,
const TGeometryB &RESTRICT  B,
const VectorRegister4Float Translation,
const VectorRegister4Float Rotation,
FRealSingle  InThicknessA,
const VectorRegister4Float InitialDir 
)

◆ GJKPenetration()

template<bool bNegativePenetrationAllowed = false, typename T , typename TGeometryA , typename TGeometryB >
bool Chaos::GJKPenetration ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  BToATM,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormal,
int32 OutClosestVertexIndexA,
int32 OutClosestVertexIndexB,
const T  InThicknessA = 0.0f,
const T  InThicknessB = 0.0f,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0),
const T  Epsilon = 1.e-3f 
)

◆ GJKPenetrationImpl()

template<bool bNegativePenetrationAllowed = false, typename T >
bool Chaos::GJKPenetrationImpl ( const FGeomGJKHelper A,
const FGeomGJKHelper B,
const TRigidTransform< T, 3 > &  BToATM,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormal,
int32 OutClosestVertexIndexA,
int32 OutClosestVertexIndexB,
const T  InThicknessA = 0.0f,
const T  InThicknessB = 0.0f,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0),
const T  Epsilon = 1.e-3f 
)

◆ GJKPenetrationSameSpace()

bool Chaos::GJKPenetrationSameSpace ( const TGeometryA A,
const TGeometryB B,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormal,
int32 OutVertexA,
int32 OutVertexB,
T &  OutMaxSupportDelta,
const TVec3< T > &  InitialDir,
const T  Epsilon = T(1.e-3),
const T  EPAEpsilon = T(1.e-2) 
)

Calculate the penetration data for two shapes using GJK, assuming both shapes are already in the same space. This is intended for use with triangles which have been transformed into the space of the convex shape.

Template Parameters
T
TGeometryAFirst geometry type
TGeometryBSecond geometry type. Usually FTriangle
Parameters
AFirst geometry
BSecond geometry (usually triangle)
OutPenetrationpenetration depth (negative for separation)
OutClosestAClosest point on A
OutClosestBClosest point on B
OutNormalContact normal (points from A to B)
OutVertexAThe closest vertex on A
OutVertexBThe closest vertex on B
OutMaxSupportDeltaWhen the convex has a margin, an upper bounds on the distance from the contact point to the vertex on the outer hull
EpsilonGJK tolerance
EPAEpsilonEPA tolerance
Returns
true always

◆ GJKPenetrationSameSpace2()

bool Chaos::GJKPenetrationSameSpace2 ( const TGeometryA A,
const TGeometryB B,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormal,
int32 OutVertexA,
int32 OutVertexB,
T &  OutMaxSupportDelta,
const TVec3< T > &  InitialDir,
const T  Epsilon = T(1.e-3),
const T  EPAEpsilon = T(1.e-2) 
)

◆ GJKPenetrationWarmStartable()

bool Chaos::GJKPenetrationWarmStartable ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  BToATM,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormalA,
TVec3< T > &  OutNormalB,
int32 OutVertexA,
int32 OutVertexB,
TGJKSimplexData< T > &  InOutSimplexData,
T &  OutMaxSupportDelta,
const T  Epsilon = T(1.e-3),
const T  EPAEpsilon = T(1.e-2) 
)

Calculate the penetration data for two shapes using GJK and a warm-start buffer.

Template Parameters
TNumber type (float or double)
TGeometryAThe first shape type
TGeometryBThe second shape type
Parameters
AThe first shape
BThe second shape
BToATMA transform from B-local space to A-local space
OutPenetrationThe overlap distance (+ve for overlap, -ve for separation)
OutClosestAThe closest point on A, in A-local space
OutClosestBThe closest point on B, in B-local space
OutNormalAThe contact normal pointing away from A in A-local space
OutNormalBThe contact normal pointing away from A in B-local space
OutVertexAThe closest vertex on A
OutVertexBThe closest vertex on B
SimplexDataIn/out simplex data used to initialize and update GJK. Can be stored to improve convergence on subsequent calls for "small" changes in relative rotation.
OutMaxContactDeltaThe maximum error in the contact position as a result of using a margin. This is the difference between the core shape + margin and the outer shape on the supporting vertices
EpsilonThe separation distance below which GJK aborts and switches to EPA
Returns
true if the results are populated (always for this implementation, but
See also
EPA())

The WarmStartData is an input and output parameter. If the function is called with a small change in BToATM there's it will converge much faster, usually in 1 iteration for polygonal shapes.

Note
This version returns OutClosestB in B's local space, compated to GJKPenetration where all output is in the space of A

◆ GJKPenetrationWarmStartable2()

bool Chaos::GJKPenetrationWarmStartable2 ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  BToATM,
T &  OutPenetration,
TVec3< T > &  OutClosestA,
TVec3< T > &  OutClosestB,
TVec3< T > &  OutNormalA,
TVec3< T > &  OutNormalB,
int32 OutVertexA,
int32 OutVertexB,
TGJKSimplexData< T > &  InOutSimplexData,
T &  OutMaxSupportDelta,
const T  Epsilon = T(1.e-3),
const T  EPAEpsilon = T(1.e-2) 
)

◆ GJKRaycast()

bool Chaos::GJKRaycast ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  StartTM,
const TVector< T, 3 > &  RayDir,
const T  RayLength,
T &  OutTime,
TVector< T, 3 > &  OutPosition,
TVector< T, 3 > &  OutNormal,
const T  ThicknessA = 0,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0),
const T  ThicknessB = 0 
)

Sweeps one geometry against the other @A The first geometry @B The second geometry @StartTM B's starting configuration in A's local space @RayDir The ray's direction (normalized) @RayLength The ray's length @OutTime The time along the ray when the objects first overlap @OutPosition The first point of impact (in A's local space) when the objects first overlap. Invalid if time of impact is 0 @OutNormal The impact normal (in A's local space) when the objects first overlap. Invalid if time of impact is 0 @ThicknessA The amount of geometry inflation for Geometry A (for example if the surface distance of two geometries with thickness 0 would be 2, a thickness of 0.5 would give a distance of 1.5) @InitialDir The first direction we use to search the CSO @ThicknessB The amount of geometry inflation for Geometry B (for example if the surface distance of two geometries with thickness 0 would be 2, a thickness of 0.5 would give a distance of 1.5)

Returns
True if the geometries overlap during the sweep, False otherwise
Note
If A overlaps B at the start of the ray ("initial overlap" condition) then this function returns true, and sets OutTime = 0, but does not set any other output variables.

◆ GJKRaycast2()

template<typename T = FReal, typename TGeometryA , typename TGeometryB >
bool Chaos::GJKRaycast2 ( const TGeometryA A,
const TGeometryB B,
const TRigidTransform< T, 3 > &  StartTM,
const TVector< T, 3 > &  RayDir,
const T  RayLength,
T &  OutTime,
TVector< T, 3 > &  OutPosition,
TVector< T, 3 > &  OutNormal,
const T  GivenThicknessA = 0,
bool  bComputeMTD = false,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0),
const T  GivenThicknessB = 0 
)

◆ GJKRaycast2Impl()

bool Chaos::GJKRaycast2Impl ( const FGeomGJKHelperSIMD A,
const FGeomGJKHelperSIMD B,
const TRigidTransform< FReal, 3 > &  StartTM,
const TVector< FReal, 3 > &  RayDir,
const FReal  RayLength,
FReal OutTime,
TVector< FReal, 3 > &  OutPosition,
TVector< FReal, 3 > &  OutNormal,
const FReal  GivenThicknessA,
bool  bComputeMTD,
const TVector< FReal, 3 > &  InitialDir,
const FReal  GivenThicknessB 
)
inline

◆ GJKRaycast2ImplSimd()

template<typename T , EGJKTestSpace TestSpace = EGJKTestSpace::ALocalSpace>
bool Chaos::GJKRaycast2ImplSimd ( const FGeomGJKHelperSIMD &RESTRICT  A,
const FGeomGJKHelperSIMD &RESTRICT  B,
const T &  BToARotation,
const T &  StartPoint,
const T &  RayDir,
FRealSingle  RayLength,
FRealSingle OutTime,
T &  OutPosition,
T &  OutNormal,
bool  bComputeMTD,
const T &  InitialDir 
)

Sweeps one geometry against the other @A The first geometry @B The second geometry @BToARotation B's starting rotation in A's local space @StartPoint B's starting position in A's local space @RayDir The ray's direction (normalized) @RayLength The ray's length @OutTime The time along the ray when the objects first overlap @OutPosition The first point of impact (in A's local space) when the objects first overlap. Invalid if time of impact is 0 @OutNormal The impact normal (in A's local space) when the objects first overlap. Invalid if time of impact is 0 @bComputeMTD If there is an initial overlap, this will compute the output info from the overlap info. @InitialDir The first direction we use to search the CSO

Returns
True if the geometries overlap during the sweep, False otherwise
Note
If A overlaps B at the start of the ray ("initial overlap" condition) then this function returns true, and sets OutTime = 0, but does not set any other output variables unless bComputeMTD is true.

◆ GJKRaycast2SameSpace()

template<typename T = FReal, typename TGeometryA , typename TGeometryB >
bool Chaos::GJKRaycast2SameSpace ( const TGeometryA A,
const TGeometryB B,
const TVector< T, 3 > &  Start,
const TVector< T, 3 > &  RayDir,
const T  RayLength,
T &  OutTime,
TVector< T, 3 > &  OutPosition,
TVector< T, 3 > &  OutNormal,
const T  GivenThicknessA = 0,
bool  bComputeMTD = false,
const TVector< T, 3 > &  InitialDir = TVector<T, 3>(1, 0, 0),
const T  GivenThicknessB = 0 
)

◆ GJKRaycast2SameSpaceImpl()

bool Chaos::GJKRaycast2SameSpaceImpl ( const FGeomGJKHelperSIMD A,
const FGeomGJKHelperSIMD B,
const TVector< FReal, 3 > &  Start,
const TVector< FReal, 3 > &  RayDir,
const FReal  RayLength,
FReal OutTime,
TVector< FReal, 3 > &  OutPosition,
TVector< FReal, 3 > &  OutNormal,
const FReal  GivenThicknessA,
bool  bComputeMTD,
const TVector< FReal, 3 > &  InitialDir,
const FReal  GivenThicknessB 
)
inline

◆ HandbrakeControlName()

const FName Chaos::HandbrakeControlName ( "Handbrake"  )

◆ HandleViewParallelForImp()

void Chaos::HandleViewParallelForImp ( const THandleView HandleView,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ HasBoundingBox() [1/8]

template<typename Generic >
bool Chaos::HasBoundingBox ( const Generic Item)

◆ HasBoundingBox() [2/8]

template<class OBJECT_ARRAY >
bool Chaos::HasBoundingBox ( const OBJECT_ARRAY Objects,
const int32  i 
)

◆ HasBoundingBox() [3/8]

template<>
bool Chaos::HasBoundingBox ( const TArray< Private::FImplicitBVHObject > &  Objects,
const int32  ObjectIndex 
)
inline

◆ HasBoundingBox() [4/8]

template<typename T , int d, bool bPersistent>
bool Chaos::HasBoundingBox ( const TGeometryParticleHandleImp< T, d, bPersistent > &  Handle)

◆ HasBoundingBox() [5/8]

template<class T , int d>
bool Chaos::HasBoundingBox ( const TGeometryParticles< T, d > &  Objects,
const int32  i 
)

◆ HasBoundingBox() [6/8]

template<class T , int d>
bool Chaos::HasBoundingBox ( const TParticles< T, d > &  Objects,
const int32  i 
)

◆ HasBoundingBox() [7/8]

template<typename T , int d, bool bPersistent>
bool Chaos::HasBoundingBox ( const TPBDRigidParticleHandleImp< T, d, bPersistent > &  Handle)

◆ HasBoundingBox() [8/8]

template<class T , int d>
bool Chaos::HasBoundingBox ( const TPBDRigidParticles< T, d > &  Objects,
const int32  i 
)

◆ HashCell()

FORCEINLINE_DEBUGGABLE int32 Chaos::HashCell ( int64  XCell,
int64  YCell 
)

◆ HashCoordinates()

FORCEINLINE_DEBUGGABLE int32 Chaos::HashCoordinates ( FReal  Xcoordinate,
FReal  Ycoordinate,
FReal  DirtyElementGridCellSizeInv 
)

◆ HasSimulationCallback()

bool Chaos::HasSimulationCallback ( const ISimCallbackObject Callback)

◆ ImplicitOverlapOBBToAABB() [1/2]

bool Chaos::ImplicitOverlapOBBToAABB ( const FImplicitObject Implicit0,
const FImplicitObject Implicit1,
const FRigidTransform3 ShapeTransform1To0,
const FVec3f LocalRelativeMovement0,
const FReal  CullDistance 
)
inline

◆ ImplicitOverlapOBBToAABB() [2/2]

bool Chaos::ImplicitOverlapOBBToAABB ( const FImplicitObject Implicit0,
const FImplicitObject Implicit1,
const FRigidTransform3 ShapeWorldTransform0,
const FRigidTransform3 ShapeWorldTransform1,
const FVec3f RelativeMovement,
const FReal  CullDistance 
)
inline

◆ InitializeEPA() [1/2]

bool Chaos::InitializeEPA ( TArray< TVec3< T > > &  VertsA,
TArray< TVec3< T > > &  VertsB,
const SupportALambda SupportA,
const SupportBLambda SupportB,
TEPAWorkingArray< TEPAEntry< T > > &  OutEntries,
TVec3< T > &  OutTouchNormal 
)

◆ InitializeEPA() [2/2]

template<typename T >
bool Chaos::InitializeEPA ( TArray< TVec3< T > > &  VertsA,
TArray< TVec3< T > > &  VertsB,
TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)>  SupportA,
TFunctionRef< TVector< T, 3 >(const TVec3< T > &V)>  SupportB,
TEPAWorkingArray< TEPAEntry< T > > &  OutEntries,
TVec3< T > &  OutTouchNormal 
)

◆ InnerPhysicsParallelFor()

void Chaos::InnerPhysicsParallelFor ( int32  InNum,
TFunctionRef< void(int32)>  InCallable,
bool  bForceSingleThreaded = false 
)

◆ InnerPhysicsParallelForRange()

void Chaos::InnerPhysicsParallelForRange ( int32  InNum,
TFunctionRef< void(int32, int32)>  InCallable,
const int32  MinBatchSize,
bool  bForceSingleThreaded = false 
)

◆ InRangeClosed()

bool Chaos::InRangeClosed ( const FReal  V,
const FReal  RangeMin,
const FReal  RangeMax 
)
inline

◆ InRangeOpen()

bool Chaos::InRangeOpen ( const FReal  V,
const FReal  RangeMin,
const FReal  RangeMax 
)
inline

◆ InsertValueIntoSortedSubArray()

FORCEINLINE_DEBUGGABLE bool Chaos::InsertValueIntoSortedSubArray ( TArray< int32 > &  Array,
int32  Value,
int32  StartIndex,
int32  Count 
)

◆ InterleaveWithZeros()

FORCEINLINE_DEBUGGABLE uint32 Chaos::InterleaveWithZeros ( uint16  input)

◆ IntersectPlanes2()

template<typename T , int d>
bool Chaos::IntersectPlanes2 ( TVector< T, d > &  I,
TVector< T, d > &  D,
const TPlane< T, d > &  P1,
const TPlane< T, d > &  P2 
)

◆ IntersectsHelper() [1/2]

template<typename T , int d>
bool Chaos::IntersectsHelper ( const TAABB< T, d > &  WorldSpaceBox,
const TAABB< T, d > &  LocalBox 
)

◆ IntersectsHelper() [2/2]

template<typename T , int d>
bool Chaos::IntersectsHelper ( const TAABB< T, d > &  WorldSpaceBox,
const TSpatialRay< T, d > &  Ray 
)

◆ InvalidPhi()

template<typename T >
constexpr T Chaos::InvalidPhi ( )
constexpr

The value used for Phi (contact separation) to indicate that it is unset/invalid.

◆ InverseTransformedAABBHelper2()

template<typename T , typename U >
TAABB< T, 3 > Chaos::InverseTransformedAABBHelper2 ( const TAABB< T, 3 > &  AABB,
const TRigidTransform< U, 3 > &  SpaceTransform 
)
inline

◆ InverseTransformHelper()

void Chaos::InverseTransformHelper ( const FFFT3::FUniformGrid Grid,
TArrayND< FVec3, 3 > &  Velocity,
const FFFT3::FArrayNDOfComplex u,
const int32  index,
const bool  Normalize 
)

◆ IsDisabled() [1/3]

template<class OBJECT_ARRAY >
bool Chaos::IsDisabled ( const OBJECT_ARRAY Objects,
const uint32  Index 
)

◆ IsDisabled() [2/3]

template<class T , int d>
bool Chaos::IsDisabled ( const TGeometryParticles< T, d > &  Objects,
const uint32  Index 
)

◆ IsDisabled() [3/3]

template<class T , int d>
bool Chaos::IsDisabled ( const TPBDRigidParticles< T, d > &  Objects,
const uint32  Index 
)

◆ IsEPASuccess()

const bool Chaos::IsEPASuccess ( EEPAResult  EPAResult)
inline

◆ IsEventDataEmpty()

template<typename PayloadType >
bool Chaos::IsEventDataEmpty ( const PayloadType *  Buffer)

◆ IsFilterValid()

bool Chaos::IsFilterValid ( const FCollisionFilterData Filter)
inline

A filter set to all zeroes means we do not filter

◆ IsInGameThreadContext()

FORCEINLINE bool Chaos::IsInGameThreadContext ( )

◆ IsInPhysicsThreadContext()

FORCEINLINE bool Chaos::IsInPhysicsThreadContext ( )

◆ IsInstanced()

FORCEINLINE bool Chaos::IsInstanced ( EImplicitObjectType  Type)

◆ IsInterclusterEdge()

template<typename T >
bool Chaos::IsInterclusterEdge ( const TPBDRigidParticleHandle< T, 3 > &  Particle,
const TConnectivityEdge< T > &  Edge 
)

◆ IsMinkowskiSumFace()

bool Chaos::IsMinkowskiSumFace ( const FVec3 A,
const FVec3 B,
const FVec3 C,
const FVec3 D 
)
inline

◆ IsPowerOfTwo()

template<int d>
bool Chaos::IsPowerOfTwo ( const TVector< int32, d > &  Counts)

◆ IsScaled()

FORCEINLINE bool Chaos::IsScaled ( EImplicitObjectType  Type)

◆ IsSerializablePtr()

template<typename T >
constexpr TEnableIf< TModels_V< CSerializablePtr, T >, bool >::Type Chaos::IsSerializablePtr ( )
constexpr

◆ IsWeightedLattice()

FORCEINLINE bool Chaos::IsWeightedLattice ( EImplicitObjectType  Type)

◆ KgCm3ToGCm3()

template<typename T >
T Chaos::KgCm3ToGCm3 ( Density)

◆ KgCm3ToKgM3()

template<typename T >
T Chaos::KgCm3ToKgM3 ( Density)

◆ KgM3ToKgCm3()

template<typename T >
T Chaos::KgM3ToKgCm3 ( Density)

◆ KinematicGeometryParticleDefaultConstruct()

template<typename T , int d, typename FConcrete >
void Chaos::KinematicGeometryParticleDefaultConstruct ( FConcrete Concrete,
const FKinematicGeometryParticleParameters Params 
)

◆ KmHToCmS()

FORCEINLINE float Chaos::KmHToCmS ( float  KmH)

km/h to cm/s

◆ KmToMile()

FORCEINLINE float Chaos::KmToMile ( float  Km)

Km to miles

◆ LanczosCG() [1/3]

template<typename Func , class T >
void Chaos::LanczosCG ( Func  multiplyA,
TArray< T > &  x,
const TArray< T > &  b,
const int  max_it,
const T  res = 1e-4,
bool  check_residual = false,
int  min_parallel_batch_size = 1000 
)

◆ LanczosCG() [2/3]

template<class T , typename Func , int32 d = 3>
void Chaos::LanczosCG ( Func  multiplyA,
TArray< TVector< T, d > > &  x,
const TArray< TVector< T, d > > &  b,
const int  max_it,
const T  res = 1e-4,
const TArray< int32 > *  use_list = nullptr 
)

◆ LanczosCG() [3/3]

void Chaos::LanczosCG ( Func1  multiplyA,
Func2  dotProduct,
Func3  AXPY,
Func4  scale,
Func5  set,
TArray< TV > &  x,
const TArray< TV > &  b,
const int  max_it,
const T  res = T(1e-4),
bool  check_residual = false 
)

◆ Laplacian() [1/2]

template<class T , class TV_INT = FIntVector4, int d = 3>
void Chaos::Laplacian ( const TArray< TV_INT > &  Mesh,
const TArray< TArray< int32 > > &  IncidentElements,
const TArray< TArray< int32 > > &  IncidentElementsLocalIndex,
const TArray< T > &  De_inverse,
const TArray< T > &  measure,
const TArray< T > &  u,
TArray< T > &  Lu 
)

◆ Laplacian() [2/2]

template<class TV , class T , bool NodalValues = false>
void Chaos::Laplacian ( const TUniformGrid< T, 3 > &  UniformGrid,
const TArray< TV > &  U,
TArray< TV > &  Lu 
)

◆ LaplacianEnergy()

template<class T , class TV_INT , int d = 3>
T Chaos::LaplacianEnergy ( const TArray< TV_INT > &  Mesh,
const TArray< T > &  De_inverse,
const TArray< T > &  measure,
const TArray< T > &  u 
)

◆ LegacyComputeSweptContactTOIAndPhiAtTargetPenetration()

void Chaos::LegacyComputeSweptContactTOIAndPhiAtTargetPenetration ( const FReal  DirDotNormal,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal InOutTOI,
FReal InOutPhi 
)

◆ LexToString() [1/2]

const TCHAR * Chaos::LexToString ( EFilterFlags  FilterFlag)
inline

◆ LexToString() [2/2]

CHAOS_API const TCHAR * Chaos::LexToString ( ESerializedDataContext  Value)

◆ LinearlyInterpolate1D()

template<class T_SCALAR , class T >
T_SCALAR Chaos::LinearlyInterpolate1D ( const T_SCALAR Prev,
const T_SCALAR Next,
const T  Alpha 
)

◆ LinearlyInterpolateHelper() [1/3]

template<class T_SCALAR , class T >
T_SCALAR Chaos::LinearlyInterpolateHelper ( const TArrayND< T_SCALAR, 2 > &  ScalarN,
const TVector< int32, 2 > &  CellPrev,
const TVector< T, 2 > &  Alpha 
)

◆ LinearlyInterpolateHelper() [2/3]

template<class T_SCALAR , class T >
T_SCALAR Chaos::LinearlyInterpolateHelper ( const TArrayND< T_SCALAR, 3 > &  ScalarN,
const TVector< int32, 3 > &  CellPrev,
const TVector< T, 3 > &  Alpha 
)

◆ LinearlyInterpolateHelper() [3/3]

template<class T_SCALAR , class T , int d>
T_SCALAR Chaos::LinearlyInterpolateHelper ( const TArrayND< T_SCALAR, d > &  ScalarN,
const TVector< int32, d > &  CellPrev,
const TVector< T, d > &  Alpha 
)

◆ LineSimplexFindOrigin()

template<typename T , int d>
TVector< T, d > Chaos::LineSimplexFindOrigin ( const TVector< T, d > *  Simplex,
int32 Idxs,
int32 NumVerts,
T *  OutBarycentric 
)

◆ LineSimplexFindOrigin2()

template<typename T >
TVec3< T > Chaos::LineSimplexFindOrigin2 ( TVec3< T > *  Simplex,
int32 NumVerts,
T *  OutBarycentric,
TVec3< T > *  A,
TVec3< T > *  B 
)

◆ LocalSweep()

bool Chaos::LocalSweep ( const SweptShapeType SweptShape,
const TestShapeType TestShape,
const TestObjectType TestObject,
const FRigidTransform3 LocalToWorldTM,
const FVec3 WorldSweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ LowBitsMask()

constexpr int8 Chaos::LowBitsMask ( const int8  NumBits)
constexpr

◆ M2ToCm2()

FORCEINLINE float Chaos::M2ToCm2 ( float  M2)

meters squared to cm squared

◆ MakeBoxStructureData()

FConvexHalfEdgeStructureDataS16 Chaos::MakeBoxStructureData ( )

◆ MakeConstHandleIterator()

template<typename THandle >
TConstHandleIterator< typename THandle::TSOAType > Chaos::MakeConstHandleIterator ( const TArray< THandle * > &  Handles)

◆ MakeConstHandleView()

template<typename THandle >
TConstHandleView< typename THandle::TSOAType > Chaos::MakeConstHandleView ( const TArray< THandle * > &  Handles)

◆ MakeConstParticleIterator()

template<typename TSOA >
TConstParticleIterator< TSOA > Chaos::MakeConstParticleIterator ( const TArray< TSOAView< TSOA > > &  SOAs)

◆ MakeConstParticleView() [1/3]

template<typename TSOA >
TConstParticleView< TSOA > Chaos::MakeConstParticleView ( TArray< TSOAView< TSOA > > &&  SOAViews)

◆ MakeConstParticleView() [2/3]

template<typename TSOA >
TConstParticleView< TSOA > Chaos::MakeConstParticleView ( TSOA *  SOA)

◆ MakeConstParticleView() [3/3]

template<typename TSOA >
TConstParticleView< TSOA > Chaos::MakeConstParticleView ( TSOAView< TSOA > &&  SOAView)

◆ MakeGJKCoreShape()

template<typename T_SHAPE >
TGJKCoreShape< T_SHAPE > Chaos::MakeGJKCoreShape ( const T_SHAPE InShape)

◆ MakeGJKShape()

template<typename T_SHAPE >
TGJKShape< T_SHAPE > Chaos::MakeGJKShape ( const T_SHAPE InShape)

◆ MakeHandleIterator()

template<typename THandle >
THandleIterator< typename THandle::TSOAType > Chaos::MakeHandleIterator ( const TArray< THandle * > &  Handles)

◆ MakeHandleView()

template<typename THandle >
THandleView< typename THandle::TSOAType > Chaos::MakeHandleView ( const TArray< THandle * > &  Handles)

◆ MakeLambdaShape()

template<class T >
void Chaos::MakeLambdaShape ( PMatrix< T, 3, 3 > &  H,
PMatrix< T, 3, 3 > &  U,
PMatrix< T, 3, 3 > &  V 
)
inline

make a 3X3 matrix to lambda shape original form of H: x x x x x x x x x after : x 0 0 x x 0 x 0 x

Reduce H to of form x x 0 x x x x x x

Reduce H to of form x x 0 x x 0 x x x

Reduce H to of form x x 0 x x 0 x 0 x

Reduce H to of form x 0 0 x x 0 x 0 x

◆ MakeNewLeaf() [1/2]

template<class OBJECT_ARRAY , class T , int d, typename TPayloadType >
TArray< int32 > Chaos::MakeNewLeaf ( const OBJECT_ARRAY Objects,
const TArray< int32 > &  AllObjects,
const TArray< int32 > *   
)

◆ MakeNewLeaf() [2/2]

template<class OBJECT_ARRAY , class T , int d, typename TPayloadType >
TBoundingVolume< TPayloadType, T, d > Chaos::MakeNewLeaf ( const OBJECT_ARRAY Objects,
const TArray< int32 > &  AllObjects,
const TBoundingVolume< TPayloadType, T, d > *   
)

◆ MakePair()

template<class T1 , class T2 >
Pair< T1, T2 > Chaos::MakePair ( const T1 &  First,
const T2 Second 
)

◆ MakeParticleIterator()

template<typename TSOA >
TParticleIterator< TSOA > Chaos::MakeParticleIterator ( const TArray< TSOAView< TSOA > > &  SOAs)

◆ MakeParticleView() [1/2]

template<typename TSOA >
TParticleView< TSOA > Chaos::MakeParticleView ( TArray< TSOAView< TSOA > > &&  SOAViews)

◆ MakeParticleView() [2/2]

template<typename TSOA >
TParticleView< TSOA > Chaos::MakeParticleView ( TSOA *  SOA)

◆ MakeSerializable() [1/7]

template<typename T >
TSerializablePtr< T > Chaos::MakeSerializable ( const TRefCountPtr< T > &  RefCount)

◆ MakeSerializable() [2/7]

template<typename T >
TSerializablePtr< T > Chaos::MakeSerializable ( const TSerializablePtr< T > &  P)

◆ MakeSerializable() [3/7]

template<typename T , ESPMode TESPMode>
TSerializablePtr< T > Chaos::MakeSerializable ( const TSharedPtr< T, TESPMode > &  Shared)

◆ MakeSerializable() [4/7]

template<typename T >
TSerializablePtr< T > Chaos::MakeSerializable ( const TUniquePtr< T > &&  Unique)
delete

◆ MakeSerializable() [5/7]

template<typename Ret , typename T >
TSerializablePtr< T > Chaos::MakeSerializable ( const TUniquePtr< T > &&  Unique)
delete

◆ MakeSerializable() [6/7]

template<typename T >
TSerializablePtr< T > Chaos::MakeSerializable ( const TUniquePtr< T > &  Unique)

◆ MakeSerializable() [7/7]

template<typename Ret , typename T >
TSerializablePtr< Ret > Chaos::MakeSerializable ( const TUniquePtr< T > &  Unique)

◆ MakeTriangleHelper() [1/2]

template<typename QueryGeomType >
const auto Chaos::MakeTriangleHelper ( const QueryGeomType Geom)

◆ MakeTriangleHelper() [2/2]

template<typename QueryGeomType >
const auto Chaos::MakeTriangleHelper ( const TImplicitObjectScaled< QueryGeomType > &  ScaledGeom)

◆ MakeUpperBidiag()

template<class T >
void Chaos::MakeUpperBidiag ( PMatrix< T, 3, 3 > &  H,
PMatrix< T, 3, 3 > &  U,
PMatrix< T, 3, 3 > &  V 
)
inline

make a 3X3 matrix to upper bidiagonal form original form of H: x x x x x x x x x after zero chase: x x 0 0 x x 0 0 x

Reduce H to of form x x x x x x 0 x x

◆ MegaPascalToKgPerCmS2()

constexpr float Chaos::MegaPascalToKgPerCmS2 ( float  MegaPascals)
constexpr

◆ MeshCastHelper()

template<typename TFunctor >
void Chaos::MeshCastHelper ( const FImplicitObject Geom,
const TFunctor Func 
)

◆ MileToKm()

FORCEINLINE float Chaos::MileToKm ( float  Miles)

miles to Km

◆ MinFlatIndex()

int32 Chaos::MinFlatIndex ( const TArray< int32 > &  ElemIdx,
const TArray< int32 > &  LocalIdx 
)
inline

◆ MinkowskiVert()

template<typename T >
FORCEINLINE const TVec3< T > Chaos::MinkowskiVert ( const TVec3< T > *  VertsABuffer,
const TVec3< T > *  VertsBBuffer,
const int32  Idx 
)

◆ ModifyAdditionOfChildrenToClusterUnionGeometry()

void Chaos::ModifyAdditionOfChildrenToClusterUnionGeometry ( TClusterParticle ClusterParticle,
const TArray< TParticle * > &  Particles,
int32  ActorId,
int32  ComponentId,
TLambda &&  Func 
)

Wraps any additions to the cluster union geometry. We assume that the input lambda Func will modify the cluster union particle's geometry and shapes with the input particles. This function will make sure the newly added shapes are setup properly with the expected properties (sim data, query data, user data etc.).

◆ MoveArrayItemsDown()

template<typename TItemArray >
void Chaos::MoveArrayItemsDown ( TItemArray Items,
const int32  BeginIndex,
const int32  EndIndex,
const int32  DownShift 
)

Move the elements in the array Items in the range [BeginIndex, EndIndex) down by DownShift. Does not resize the array.

◆ MoveClusterToMassOffset()

FRigidTransform3 CHAOS_API Chaos::MoveClusterToMassOffset ( FPBDRigidClusteredParticleHandle Cluster,
const EMassOffsetType  MassOffsetTypes 
)

◆ MPHToCmS()

FORCEINLINE float Chaos::MPHToCmS ( float  MPH)

miles per hour to cm/s

◆ MPHToMS()

FORCEINLINE float Chaos::MPHToMS ( float  MPH)

miles per hour to meters per second

◆ MSToMPH()

FORCEINLINE float Chaos::MSToMPH ( float  MS)

meters per second to miles per hour

◆ MToCm() [1/2]

FORCEINLINE FVector Chaos::MToCm ( const FVector M)

cm to meters

◆ MToCm() [2/2]

FORCEINLINE float Chaos::MToCm ( float  M)

meters to cm

◆ MToCmScaling()

FORCEINLINE float Chaos::MToCmScaling ( )

◆ NearPointOnEllipse()

FVec2 Chaos::NearPointOnEllipse ( const FVec2 P,
const FVec2 R,
const int  MaxIts = 20,
const FReal  Tolerance = 1.e-4f 
)

◆ NoRefHelper()

template<typename T >
T Chaos::NoRefHelper ( const T &  Ref)

◆ NRFourn()

template<int d>
void Chaos::NRFourn ( const int  isign,
const TVector< int32, d > &  counts,
TArray< FReal > &  Data 
)

◆ NumBitsNeeded()

constexpr int8 Chaos::NumBitsNeeded ( const int8  MaxValue)
constexpr

◆ OmegaToRPM()

FORCEINLINE float Chaos::OmegaToRPM ( float  Omega)

radians per second to revolutions per minute

◆ operator!=() [1/2]

bool Chaos::operator!= ( ESpatialAcceleration  A,
SpatialAccelerationType  B 
)
inline

◆ operator!=() [2/2]

bool Chaos::operator!= ( SpatialAccelerationType  A,
ESpatialAcceleration  B 
)
inline

◆ operator*() [1/2]

FComplex Chaos::operator* ( const FReal  Other,
const FComplex  Complex 
)

◆ operator*() [2/2]

template<class T >
TVector< T, 3 > Chaos::operator* ( const T  S,
const TVector< T, 3 > &  V 
)
inline

◆ operator/()

template<class T >
TVector< T, 3 > Chaos::operator/ ( const T  S,
const TVector< T, 3 > &  V 
)
inline

◆ operator<()

template<class T1 , class T2 >
bool Chaos::operator< ( const Pair< T1, T2 > &  First,
const Pair< T1, T2 > &  Second 
)

◆ operator<<() [1/78]

FORCEINLINE FArchive & Chaos::operator<< ( FArchive Ar,
FAABBTreePayloadInfo PayloadInfo 
)

◆ operator<<() [2/78]

FORCEINLINE_DEBUGGABLE FArchive & Chaos::operator<< ( FArchive Ar,
FAABBVectorized Bounds 
)

◆ operator<<() [3/78]

FORCEINLINE FArchive & Chaos::operator<< ( FArchive Ar,
FBVHParticles Value 
)

◆ operator<<() [4/78]

FORCEINLINE FArchive & Chaos::operator<< ( FArchive Ar,
FImplicitObject Value 
)

◆ operator<<() [5/78]

FArchive & Chaos::operator<< ( FArchive Ar,
FSerializedDataBuffer Data 
)
inline

◆ operator<<() [6/78]

FArchive & Chaos::operator<< ( FArchive Ar,
FSpatialAccelerationIdx Idx 
)
inline

◆ operator<<() [7/78]

FORCEINLINE_DEBUGGABLE FArchive & Chaos::operator<< ( FArchive Ar,
FTrimeshIndexBuffer Buffer 
)

◆ operator<<() [8/78]

FArchive & Chaos::operator<< ( FArchive Ar,
FWeightedInfluenceData Value 
)
inline

◆ operator<<() [9/78]

FArchive & Chaos::operator<< ( FArchive Ar,
FWeightedLatticeInfluenceData Value 
)
inline

◆ operator<<() [10/78]

template<class T , int d>
FORCEINLINE FArchive & Chaos::operator<< ( FArchive Ar,
TAABB< T, d > &  AABB 
)

◆ operator<<() [11/78]

template<typename Derived , typename T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TArrayNDBase< Derived, T, d > &  ValueIn 
)

◆ operator<<() [12/78]

template<typename TPayloadType , class T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TBoundingVolume< TPayloadType, T, d > &  BoundingVolume 
)

◆ operator<<() [13/78]

template<class OBJECT_ARRAY , class LEAF_TYPE , class T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TBoundingVolumeHierarchy< OBJECT_ARRAY, LEAF_TYPE, T, d > &  BVH 
)

◆ operator<<() [14/78]

template<typename T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TBVHNode< T, d > &  LeafNode 
)

◆ operator<<() [15/78]

template<typename T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TBVPayloadInfo< T, d > &  Info 
)

◆ operator<<() [16/78]

template<typename T >
FArchive & Chaos::operator<< ( FArchive Ar,
TCorePlane< T > &  PlaneConcrete 
)

◆ operator<<() [17/78]

template<typename T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TUniformGridBase< T, d > &  Value 
)

◆ operator<<() [18/78]

template<int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TVector< FRealDouble, d > &  ValueIn 
)

◆ operator<<() [19/78]

template<int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TVector< FRealSingle, d > &  ValueIn 
)

◆ operator<<() [20/78]

template<typename T , int d>
FArchive & Chaos::operator<< ( FArchive Ar,
TVector< T, d > &  ValueIn 
)

◆ operator<<() [21/78]

FORCEINLINE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
Chaos::FReal Real 
)

◆ operator<<() [22/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FAABBVectorized Bounds 
)

◆ operator<<() [23/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FAccelerationStructureHandle AccelerationHandle 
)

◆ operator<<() [24/78]

FORCEINLINE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FBVHParticles Value 
)

◆ operator<<() [25/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FCollisionData Data 
)
inline

◆ operator<<() [26/78]

FORCEINLINE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FHeightField::FDataType::MinMaxHeights &  Value 
)

◆ operator<<() [27/78]

FORCEINLINE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FImplicitObject Value 
)

◆ operator<<() [28/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FMaterialData Data 
)
inline

◆ operator<<() [29/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticleDynamicMisc Data 
)
inline

◆ operator<<() [30/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticleDynamics Data 
)
inline

◆ operator<<() [31/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticleMassProps Data 
)
inline

◆ operator<<() [32/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticleNonFrequentData Data 
)
inline

◆ operator<<() [33/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticlePositionRotation Data 
)
inline

◆ operator<<() [34/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FParticleVelocities Data 
)
inline

◆ operator<<() [35/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FPerShapeData Shape 
)
inline

◆ operator<<() [36/78]

FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FRigidParticleControlFlags Flags 
)

◆ operator<<() [37/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FTrimeshBVH TrimeshBVH 
)

◆ operator<<() [38/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FTrimeshBVH::FAABBType Bounds 
)

◆ operator<<() [39/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FTrimeshBVH::FChildData ChildData 
)

◆ operator<<() [40/78]

FORCEINLINE_DEBUGGABLE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
FTrimeshBVH::FNode Node 
)

◆ operator<<() [41/78]

template<typename TKey , typename TValue >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
SQMapKeyWithValue< TKey, TValue > &  Pair 
)

◆ operator<<() [42/78]

template<typename T >
TEnableIf< T::AlwaysSerializable, FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
T *&  Obj 
)

◆ operator<<() [43/78]

template<typename TPayloadType , typename TLeafType , bool bMutable, typename T , typename StorageTraits >
FArchive & Chaos::operator<< ( FChaosArchive Ar,
TAABBTree< TPayloadType, TLeafType, bMutable, T, StorageTraits > &  AABBTree 
)

◆ operator<<() [44/78]

template<typename TPayloadType , bool bComputeBounds, typename T >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TAABBTreeLeafArray< TPayloadType, bComputeBounds, T > &  LeafArray 
)

◆ operator<<() [45/78]

template<typename T >
FORCEINLINE FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TAABBTreeNode< T > &  Node 
)

◆ operator<<() [46/78]

template<typename T , typename TAllocator >
TEnableIf< T::AlwaysSerializable, FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< T *, TAllocator > &  Array 
)

◆ operator<<() [47/78]

template<typename T , typename TAllocator >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TArray< T, TAllocator > &  Array 
)

◆ operator<<() [48/78]

template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TArray< TRefCountPtr< T >, TAllocator >, TAllocator2 > &  Array 
)

◆ operator<<() [49/78]

template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TArray< TSerializablePtr< T >, TAllocator >, TAllocator2 > &  Array 
)

◆ operator<<() [50/78]

template<typename T , typename TAllocator , typename TAllocator2 , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TArray< TSharedPtr< T, Mode >, TAllocator >, TAllocator2 > &  Array 
)

◆ operator<<() [51/78]

template<typename T , typename TAllocator , typename TAllocator2 >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TArray< TUniquePtr< T >, TAllocator >, TAllocator2 > &  Array 
)

◆ operator<<() [52/78]

template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TRefCountPtr< T >, TAllocator > &  Array 
)

◆ operator<<() [53/78]

template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TSerializablePtr< T >, TAllocator > &  Array 
)

◆ operator<<() [54/78]

template<typename T , typename TAllocator , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TSharedPtr< T, Mode >, TAllocator > &  Array 
)

◆ operator<<() [55/78]

template<typename T , typename TAllocator >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TArray< TUniquePtr< T >, TAllocator > &  Array 
)

◆ operator<<() [56/78]

template<typename TKey , typename TValue >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TArrayAsMap< TKey, TValue > &  Map 
)

◆ operator<<() [57/78]

template<typename Derived , typename T , int d>
FArchive & Chaos::operator<< ( FChaosArchive Ar,
TArrayNDBase< Derived, T, d > &  ValueIn 
)

◆ operator<<() [58/78]

template<typename TPayloadType , class T , int d>
FArchive & Chaos::operator<< ( FChaosArchive Ar,
TBoundingVolume< TPayloadType, T, d > &  BoundingVolume 
)

◆ operator<<() [59/78]

template<typename TPayloadType , class T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TBVCellElement< TPayloadType, T, d > &  Elem 
)

◆ operator<<() [60/78]

template<typename T , EChaosProperty PropName>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TChaosProperty< T, PropName > &  Prop 
)

◆ operator<<() [61/78]

template<typename T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TGeometryParticle< T, d > &  Particle 
)

◆ operator<<() [62/78]

template<typename T , int d, EGeometryParticlesSimType SimType>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TGeometryParticlesImp< T, d, SimType > &  Particles 
)

◆ operator<<() [63/78]

template<typename T , int d, EGeometryParticlesSimType SimType>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TKinematicGeometryParticlesImp< T, d, SimType > &  Particles 
)

◆ operator<<() [64/78]

template<typename LeafType >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TLeafContainer< LeafType > &  LeafArray 
)

◆ operator<<() [65/78]

template<typename TPayloadType , typename T >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TPayloadBoundsElement< TPayloadType, T > &  PayloadElement 
)

◆ operator<<() [66/78]

template<typename T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TPBDRigidParticles< T, d > &  Particles 
)

◆ operator<<() [67/78]

template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TRefCountPtr< T > &  Obj 
)

◆ operator<<() [68/78]

template<typename T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TRigidParticles< T, d > &  Particles 
)

◆ operator<<() [69/78]

template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TSerializablePtr< T > &  Serializable 
)

◆ operator<<() [70/78]

template<typename T , EShapeProperty PropName>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TShapeProperty< T, PropName > &  Prop 
)

◆ operator<<() [71/78]

template<typename T , ESPMode Mode>
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TSharedPtr< T, Mode > &  Obj 
)

◆ operator<<() [72/78]

template<typename T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TSimpleGeometryParticles< T, d > &  Particles 
)

◆ operator<<() [73/78]

template<typename TPayloadType , typename T , int d>
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TSpatialAccelerationBucketEntry< TPayloadType, T, d > &  BucketEntry 
)

◆ operator<<() [74/78]

template<typename TObj >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TSpatialCollectionBucket< TObj > &  Bucket 
)

◆ operator<<() [75/78]

template<typename TKey , typename TValue >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TSQMap< TKey, TValue > &  Map 
)

◆ operator<<() [76/78]

template<typename T >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TTetrahedron< T > &  Value 
)
inline

◆ operator<<() [77/78]

template<typename T >
FChaosArchive & Chaos::operator<< ( FChaosArchive Ar,
TTriangle< T > &  Value 
)
inline

◆ operator<<() [78/78]

template<typename T >
TEnableIf< IsSerializablePtr< T >(), FChaosArchive & >::Type Chaos::operator<< ( FChaosArchive Ar,
TUniquePtr< T > &  Obj 
)

◆ operator==() [1/4]

bool Chaos::operator== ( const FRange First,
const FRange Second 
)
inline

◆ operator==() [2/4]

template<class T1 , class T2 >
bool Chaos::operator== ( const Pair< T1, T2 > &  First,
const Pair< T1, T2 > &  Second 
)

◆ operator==() [3/4]

bool Chaos::operator== ( ESpatialAcceleration  A,
SpatialAccelerationType  B 
)
inline

◆ operator==() [4/4]

bool Chaos::operator== ( SpatialAccelerationType  A,
ESpatialAcceleration  B 
)
inline

◆ operator>()

template<class T1 , class T2 >
bool Chaos::operator> ( const Pair< T1, T2 > &  First,
const Pair< T1, T2 > &  Second 
)

◆ Order()

void Chaos::Order ( int32 A,
int32 B 
)

◆ OrderIndependentHashCombine()

uint32 Chaos::OrderIndependentHashCombine ( const uint32  A,
const uint32  B 
)
inline

Combine two hashes in an order-independent way so that Hash(A, B) == Hash(B, A)

◆ OverlapQuery()

template<typename QueryGeometry >
bool Chaos::OverlapQuery ( const FImplicitObject A,
const FRigidTransform3 ATM,
const QueryGeometry B,
const FRigidTransform3 BTM,
const FReal  Thickness = 0,
FMTDInfo OutMTD = nullptr 
)

◆ ParticlePairBroadPhaseFilter()

bool Chaos::ParticlePairBroadPhaseFilter ( const FGeometryParticleHandle Particle1,
const FGeometryParticleHandle Particle2,
const FIgnoreCollisionManager IgnoreCollisionManager 
)
inline

Check whether the two particles need to be considered in the broadphase.

Returns
true if the particle pair should be considered by the broadphase

◆ ParticlesParallelFor()

void Chaos::ParticlesParallelFor ( const TView Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func,
bool  bForceSingleThreaded = false 
)

◆ ParticlesParallelForImp() [1/5]

void Chaos::ParticlesParallelForImp ( const TArray< TParticle > &  Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticlesParallelForImp() [2/5]

template<typename TSOA , typename ContextCreatorType , typename Lambda >
void Chaos::ParticlesParallelForImp ( const TConstHandleView< TSOA > &  Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticlesParallelForImp() [3/5]

template<typename TSOA , typename ContextCreatorType , typename Lambda >
void Chaos::ParticlesParallelForImp ( const TConstParticleView< TSOA > &  Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticlesParallelForImp() [4/5]

template<typename TSOA , typename ContextCreatorType , typename Lambda >
void Chaos::ParticlesParallelForImp ( const THandleView< TSOA > &  Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticlesParallelForImp() [5/5]

template<typename TSOA , typename ContextCreatorType , typename Lambda >
void Chaos::ParticlesParallelForImp ( const TParticleView< TSOA > &  Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticlesSequentialFor()

void Chaos::ParticlesSequentialFor ( const TView Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ ParticleViewParallelForImp()

void Chaos::ParticleViewParallelForImp ( const TParticleView Particles,
const ContextCreatorType ContextCreator,
const Lambda &  Func 
)

◆ PBDComputeConstraintsLowLevel_Helper() [1/2]

std::enable_if_t< std::is_same_v< typename SpatialAccelerationCollection::TPayloadType, FAccelerationStructureHandle >, void > Chaos::PBDComputeConstraintsLowLevel_Helper ( FReal  Dt,
const SpatialAccelerationCollection Accel,
FSpatialAccelerationBroadPhase BroadPhase,
Private::FCollisionConstraintAllocator Allocator,
const FCollisionDetectorSettings Settings,
IResimCacheBase ResimCache 
)

◆ PBDComputeConstraintsLowLevel_Helper() [2/2]

std::enable_if_t<!std::is_same_v< typename SpatialAccelerationCollection::TPayloadType, FAccelerationStructureHandle >, void > Chaos::PBDComputeConstraintsLowLevel_Helper ( FReal  Dt,
const SpatialAccelerationCollection Accel,
FSpatialAccelerationBroadPhase BroadPhase,
Private::FCollisionConstraintAllocator Allocator,
const FCollisionDetectorSettings Settings,
IResimCacheBase ResimCache 
)

◆ PBDRigidClusteredParticleDefaultConstruct()

template<typename T , int d, typename FConcrete >
void Chaos::PBDRigidClusteredParticleDefaultConstruct ( FConcrete Concrete,
const FPBDRigidParticleParameters Params 
)

◆ PBDRigidParticleDefaultConstruct()

template<typename T , int d, typename FConcrete >
void Chaos::PBDRigidParticleDefaultConstruct ( FConcrete Concrete,
const FPBDRigidParticleParameters Params 
)

◆ PhysicsParallelFor()

void Chaos::PhysicsParallelFor ( int32  InNum,
TFunctionRef< void(int32)>  InCallable,
bool  bForceSingleThreaded = false 
)

◆ PhysicsParallelForRange()

void Chaos::PhysicsParallelForRange ( int32  InNum,
TFunctionRef< void(int32, int32)>  InCallable,
const int32  MinBatchSize,
bool  bForceSingleThreaded = false 
)

◆ PhysicsParallelForWithContext()

void Chaos::PhysicsParallelForWithContext ( int32  InNum,
TFunctionRef< int32(int32, int32)>  InContextCreator,
TFunctionRef< void(int32, int32)>  InCallable,
bool  bForceSingleThreaded = false 
)

◆ PitchControlName()

const FName Chaos::PitchControlName ( "Pitch"  )

◆ PoissonSolve() [1/2]

template<class T , class TV , class TV_INT = FIntVector4, int d = 3>
void Chaos::PoissonSolve ( const TArray< int32 > &  InConstrainedNodes,
const TArray< T > &  ConstrainedWeights,
const TArray< TV_INT > &  Mesh,
const TArray< TV > &  X,
const int32  MaxItCG,
const T  CGTol,
TArray< T > &  Weights 
)

◆ PoissonSolve() [2/2]

template<class TV , class T , bool NodalValues = false>
void Chaos::PoissonSolve ( const TArray< int32 > &  InConstrainedNodes,
const TArray< TV > &  ConstrainedWeights,
const TUniformGrid< T, 3 > &  UniformGrid,
const int32  MaxItCG,
const TV  CGTol,
TArray< TV > &  Weights,
bool  bCheckResidual = false,
int32  MinParallelBatchSize = 1000 
)

◆ PolarDecomposition() [1/3]

template<class T >
void Chaos::PolarDecomposition ( const PMatrix< T, 2, 2 > &  A,
GivensRotation< T > &  R,
PMatrix< T, 2, 2 > &  S_Sym 
)
inline

2x2 polar decomposition.

Parameters
[in]Amatrix.
[out]RRobustly a rotation matrix in givens form
[out]S_SymSymmetric. Whole matrix is stored

Whole matrix S is stored since its faster to calculate due to simd vectorization Polar guarantees negative sign is on the small magnitude singular value. S is guaranteed to be the closest one to identity. R is guaranteed to be the closest rotation to A.

◆ PolarDecomposition() [2/3]

template<class T >
void Chaos::PolarDecomposition ( const PMatrix< T, 2, 2 > &  A,
PMatrix< T, 2, 2 > &  R,
PMatrix< T, 2, 2 > &  S_Sym 
)
inline

2x2 polar decomposition.

Parameters
[in]Amatrix.
[out]RRobustly a rotation matrix.
[out]S_SymSymmetric. Whole matrix is stored

Whole matrix S is stored since its faster to calculate due to simd vectorization Polar guarantees negative sign is on the small magnitude singular value. S is guaranteed to be the closest one to identity. R is guaranteed to be the closest rotation to A.

◆ PolarDecomposition() [3/3]

template<class T >
void Chaos::PolarDecomposition ( const PMatrix< T, 3, 3 > &  A,
PMatrix< T, 3, 3 > &  R,
PMatrix< T, 3, 3 > &  S_Sym 
)
inline

3X3 polar decomposition.

Parameters
[in]Amatrix.
[out]RRobustly a rotation matrix.
[out]S_SymSymmetric. Whole matrix is stored

Whole matrix S is stored Polar guarantees negative sign is on the small magnitude singular value. S is guaranteed to be the closest one to identity. R is guaranteed to be the closest rotation to A.

◆ PrefetchConstraint()

void Chaos::PrefetchConstraint ( const TArray< FPBDCollisionConstraint * > &  Constraints,
const int32  ConstraintIndex 
)

◆ PrePreFilterHelper() [1/4]

template<>
bool Chaos::PrePreFilterHelper ( const FAccelerationStructureHandle Payload,
const Private::FSimOverlapVisitor Visitor 
)
inline

◆ PrePreFilterHelper() [2/4]

template<typename TVisitor >
FORCEINLINE bool Chaos::PrePreFilterHelper ( const int32  Payload,
const TVisitor Visitor 
)

◆ PrePreFilterHelper() [3/4]

TEnableIf<!TIsPointer< TPayload >::Value, bool >::Type Chaos::PrePreFilterHelper ( const TPayload Payload,
const TVisitor Visitor 
)

◆ PrePreFilterHelper() [4/4]

TEnableIf< TIsPointer< TPayload >::Value, bool >::Type Chaos::PrePreFilterHelper ( const TPayload Payload,
const TVisitor Visitor 
)

◆ PrePreQueryFilterImp()

FORCEINLINE_DEBUGGABLE bool Chaos::PrePreQueryFilterImp ( const FCollisionFilterData QueryFilterData,
const FCollisionFilterData UnionFilterData 
)

◆ PrePreSimFilterImp()

FORCEINLINE_DEBUGGABLE bool Chaos::PrePreSimFilterImp ( const FCollisionFilterData SimFilterData,
const FCollisionFilterData OtherSimFilterData 
)

◆ Process()

template<int t, class T >
void Chaos::Process ( PMatrix< T, 3, 3 > &  B,
PMatrix< T, 3, 3 > &  U,
TVector< T, 3 > &  sigma,
PMatrix< T, 3, 3 > &  V 
)
inline

Helper function of 3X3 SVD for Processing 2X2 SVD.

◆ ProjectOntoAxis() [1/3]

template<typename ConvexType >
void Chaos::ProjectOntoAxis ( const ConvexType Convex,
const FVec3 AxisN,
const FVec3 AxisX,
FReal PMin,
FReal PMax,
int32 MinVertexIndex,
int32 MaxVertexIndex,
TArrayView< FReal > *  VertexDs 
)
inline

◆ ProjectOntoAxis() [2/3]

void Chaos::ProjectOntoAxis ( const FCapsule Capsule,
const FVec3 AxisN,
const FVec3 AxisX,
FReal PMin,
FReal PMax,
int32 MinVertexIndex,
int32 MaxVertexIndex 
)
inline

◆ ProjectOntoAxis() [3/3]

void Chaos::ProjectOntoAxis ( const FTriangle Triangle,
const FVec3 AxisN,
const FVec3 AxisX,
FReal PMin,
FReal PMax,
int32 MinVertexIndex,
int32 MaxVertexIndex 
)
inline

◆ PushToPhysicsStateImp()

template<Chaos::EParticleType ParticleType>
void Chaos::PushToPhysicsStateImp ( const Chaos::FDirtyPropertiesManager Manager,
Chaos::FGeometryParticleHandle Handle,
int32  DataIdx,
const Chaos::FDirtyProxy Dirty,
Chaos::FShapeDirtyData ShapesData,
Chaos::FPBDRigidsSolver Solver,
bool  bResimInitialized,
Chaos::FReal  ExternalDt 
)

◆ RadToDeg()

FORCEINLINE float Chaos::RadToDeg ( float  InRad)

◆ RayTriangleIntersection()

template<typename T >
FORCEINLINE bool Chaos::RayTriangleIntersection ( const TVec3< T > &  RayStart,
const TVec3< T > &  RayDir,
RayLength,
const TVec3< T > &  A,
const TVec3< T > &  B,
const TVec3< T > &  C,
T &  OutT,
TVec3< T > &  OutN 
)

Ray / triangle intersection this provides a double sided test note : this method assumes that the triangle formed by A,B and C is well formed

◆ RayTriangleIntersectionAndBary()

template<typename T , typename ToleranceProvider = TRayTriangleIntersectionDefaultToleranceProvider<T>>
FORCEINLINE_DEBUGGABLE bool Chaos::RayTriangleIntersectionAndBary ( const TVec3< T > &  RayStart,
const TVec3< T > &  RayDir,
RayLength,
const TVec3< T > &  A,
const TVec3< T > &  B,
const TVec3< T > &  C,
T &  OutT,
TVec2< T > &  OutBary,
TVec3< T > &  OutN 
)

◆ ReactivateCollisionConstraint()

void Chaos::ReactivateCollisionConstraint ( FPBDCollisionConstraint Constraint)

◆ RemoveArrayItemsAtSortedIndices()

template<typename TItemArray >
void Chaos::RemoveArrayItemsAtSortedIndices ( TItemArray Items,
const TArrayView< const int32 > &  SortedIndicesToRemove 
)

Remove a set of items from an array

Template Parameters
TItemArrayAn array of items of any movable type
Parameters
Itemsan array of items to remove elements from
SortedIndicesToRemovethe set of array indices to be removed. Must be sorted low to high. May contain duplicates.

◆ RemoveParticlesFromClusterUnionGeometry()

void Chaos::RemoveParticlesFromClusterUnionGeometry ( TClusterParticle ClusterParticle,
const TArray< TParticle * > &  ShapeParticles,
TArray< TParticle * > &  AllChildParticles 
)

Utility function to remove particles from a cluster union's geometry incrementally.

◆ ReorderGJKArray()

template<typename T >
void Chaos::ReorderGJKArray ( T *  Data,
FSimplex Idxs 
)

◆ ResolveMaterial()

FMaterialHandle Chaos::ResolveMaterial ( const FPerShapeData InShape,
const FPBDCollisionConstraint InConstraint 
)

Resolves a material from a shape and a collision. Either both shapes are simple primitives, or one is simple and the other is a heightfield or trimesh. In the case of the trimesh/heightfield the contact points should have the face index of the hit face which the geometry can translate into a material index.

Parameters
InShape- The shape to resolve a material for
InConstraint- The collision that the shape is a part of
See also
FTriangleMeshImplicitObject::ContactManifoldImp
FHeightField::ContactManifoldImp

◆ ReverseControlName()

const FName Chaos::ReverseControlName ( "Reverse"  )

◆ RollControlName()

const FName Chaos::RollControlName ( "Roll"  )

◆ RowMaj3x3Determinant() [1/2]

template<class T >
T Chaos::RowMaj3x3Determinant ( const T *  A)
inline

◆ RowMaj3x3Determinant() [2/2]

template<class T >
T Chaos::RowMaj3x3Determinant ( const T  A0,
const T  A1,
const T  A2,
const T  A3,
const T  A4,
const T  A5,
const T  A6,
const T  A7,
const T  A8 
)
inline

◆ RowMaj3x3Get() [1/2]

template<class T >
const T & Chaos::RowMaj3x3Get ( const T *  A,
const int32  i,
const int32  j 
)
inline

◆ RowMaj3x3Get() [2/2]

template<class T >
T & Chaos::RowMaj3x3Get ( T *  A,
const int32  i,
const int32  j 
)
inline

◆ RowMaj3x3GetCol()

template<class T , class TV >
void Chaos::RowMaj3x3GetCol ( T *  A,
const int32  j,
TV Col 
)
inline

◆ RowMaj3x3GetRow()

template<class T , class TV >
void Chaos::RowMaj3x3GetRow ( T *  A,
const int32  i,
TV Row 
)
inline

◆ RowMaj3x3Inverse() [1/3]

template<class T >
void Chaos::RowMaj3x3Inverse ( const T *  A,
T *  Inv 
)
inline

◆ RowMaj3x3Inverse() [2/3]

template<class T >
void Chaos::RowMaj3x3Inverse ( const T  Det,
const T *  A,
T *  Inv 
)
inline

◆ RowMaj3x3Inverse() [3/3]

template<class T >
void Chaos::RowMaj3x3Inverse ( const T  Det,
const T  A0,
const T  A1,
const T  A2,
const T  A3,
const T  A4,
const T  A5,
const T  A6,
const T  A7,
const T  A8,
T *  Inv 
)
inline

◆ RowMaj3x3Multiply()

template<class T , class TV >
TV Chaos::RowMaj3x3Multiply ( const T *  A,
const TV x 
)
inline

◆ RowMaj3x3RobustSolveLinearSystem()

template<class T , class TV >
TV Chaos::RowMaj3x3RobustSolveLinearSystem ( const T *  A,
const TV b 
)
inline

◆ RowMaj3x3Set()

template<class T >
void Chaos::RowMaj3x3Set ( T *  A,
const int32  i,
const int32  j,
const T  Value 
)
inline

◆ RowMaj3x3SetCol() [1/2]

template<class T >
void Chaos::RowMaj3x3SetCol ( T *  A,
const int32  j,
const T *  Values 
)
inline

◆ RowMaj3x3SetCol() [2/2]

template<class T , class TV >
void Chaos::RowMaj3x3SetCol ( T *  A,
const int32  j,
const TV  Value 
)
inline

◆ RowMaj3x3SetRow() [1/2]

template<class T >
void Chaos::RowMaj3x3SetRow ( T *  A,
const int32  i,
const T *  Values 
)
inline

◆ RowMaj3x3SetRow() [2/2]

template<class T , class TV >
void Chaos::RowMaj3x3SetRow ( T *  A,
const int32  i,
const TV  Value 
)
inline

◆ RowMaj3x3Transpose()

template<class T >
void Chaos::RowMaj3x3Transpose ( const T *  A,
T *  Transpose 
)
inline

◆ RPMToOmega()

FORCEINLINE float Chaos::RPMToOmega ( float  RPM)

revolutions per minute to radians per second

◆ SafeInvScale()

FVec3 Chaos::SafeInvScale ( const FVec3 Scale)

◆ SATEdgeEdge()

FSATResult Chaos::SATEdgeEdge ( const ConvexImplicitType1 Convex1,
const FRigidTransform3 Convex1Transform,
const ConvexImplicitType2 Convex2,
const FRigidTransform3 Convex2Transform,
const FReal  CullDistance 
)

◆ SATPenetration()

FSATResult Chaos::SATPenetration ( const ConvexImplicitType1 Convex1,
const FRigidTransform3 Convex1Transform,
const ConvexImplicitType2 Convex2,
const FRigidTransform3 Convex2Transform,
const FReal  CullDistance,
const FSATSettings Settings 
)

◆ SATPlaneVertex()

FSATResult Chaos::SATPlaneVertex ( const ConvexImplicitType1 Convex1,
const FRigidTransform3 Convex1Transform,
const ConvexImplicitType2 Convex2,
const FRigidTransform3 Convex2Transform,
const FReal  CullDistance 
)

◆ SaveLoadUtility()

template<class T , class U >
bool Chaos::SaveLoadUtility ( U &  ObjectToSave,
TCHAR const *  SerializedBinaryDirectory,
TCHAR const *  BinaryFolderName,
bool  bSave,
TArray< U > &  ObjectsToTest 
)

Serializes and loads ObjectToSave to memory and to disk, returning loaded versions in array for testing. also loads and returns all binaries in test's subdirectory in SerializedBinaryDirectory. Used to test backwards compatibility for previous serialization formats.

Parameters
ObjectToSave- Data being tested. Will be saved and loaded, loaded copies returned for testing.
SerializedBinaryDirectory- Path to directory containing subfolders containing binaries to load for testing.
BinaryFolderName- Name of folder in SerializedBinarYDirectory for this test. Should not match name of other tests.
bSave- If true, ObjectToSave will be saved to SerialziedBinarY folder for testing in future. Should be false, temporarily flip to true to save.
ObjectsToTest- Returned Objects that were deserialized.
Returns
- False if fails to load a binary file, otherwse true. Should fail test on false.

◆ ScaleGeomIntoWorldHelper() [1/2]

template<typename QueryGeomType >
const QueryGeomType & Chaos::ScaleGeomIntoWorldHelper ( const QueryGeomType QueryGeom,
const FVec3 TriMeshScale 
)

◆ ScaleGeomIntoWorldHelper() [2/2]

template<typename QueryGeomType >
TImplicitObjectScaled< QueryGeomType > Chaos::ScaleGeomIntoWorldHelper ( const TImplicitObjectScaled< QueryGeomType > &  QueryGeom,
const FVec3 TriMeshScale 
)

◆ ScaleTransformHelper()

void Chaos::ScaleTransformHelper ( const FVec3 TriMeshScale,
const FRigidTransform3 QueryTM,
FRigidTransform3 OutScaledQueryTM 
)

◆ SerializeReal()

template<typename T , int d>
FArchive & Chaos::SerializeReal ( FArchive Ar,
TVector< T, d > &  ValueIn 
)
inline

◆ SerializeToDisk()

template<typename TEvolution >
void Chaos::SerializeToDisk ( TEvolution Evolution)

◆ SetObjectStateHelper() [1/2]

void Chaos::SetObjectStateHelper ( IPhysicsProxyBase Proxy,
FPBDRigidParticle Rigid,
EObjectStateType  InState,
bool  bAllowEvents = false,
bool  bInvalidate = true 
)
inline

◆ SetObjectStateHelper() [2/2]

CHAOS_API void Chaos::SetObjectStateHelper ( IPhysicsProxyBase Proxy,
FPBDRigidParticleHandle Rigid,
EObjectStateType  InState,
bool  bAllowEvents,
bool  bInvalidate 
)

◆ ShapeInstanceWantsLeafCache()

bool Chaos::ShapeInstanceWantsLeafCache ( const FImplicitObject Geometry)

◆ ShapePairNarrowPhaseFilter()

bool Chaos::ShapePairNarrowPhaseFilter ( EImplicitObjectType  Implicit0Type,
const FPerShapeData Shape0,
EImplicitObjectType  Implicit1Type,
const FPerShapeData Shape1 
)
inline

Check whether the two particles need to be considered in the broadphase NOTE: Implicit0Type and Implicit1Type must be the inner type of the implicit, with any decorators removed (scaled, instanced, transformed).

Returns
true if the shape pair should be considered by the narrowphase

◆ ShapePropToFlag()

constexpr EShapeFlags Chaos::ShapePropToFlag ( EShapeProperty  Prop)
constexpr

◆ ShouldExecuteTasksInParallel()

bool Chaos::ShouldExecuteTasksInParallel ( int32  InTaskNum)

Helper to call from task execution logic that does not use ParallelFor, to know if it should use parallel execution or not. Returns true if the tasks should be run in parallel based on the current context.

Parameters
InTaskNumThe total number of tasks that need to run, will be compared to MinParallelTaskSize

◆ ShouldSwapParticleOrder() [1/2]

bool Chaos::ShouldSwapParticleOrder ( const bool  bIsDynamicOrSleeping0,
const bool  bIsDynamicOrSleeping1,
const bool  bIsParticle0Preferred 
)
inline

Used to order particles in a consistent way in Broadphase and Resim. Returns whether the partcile order should be reversed. We want the particle with the lower ID first, unless only one is dynamic in which case that one is first.

◆ ShouldSwapParticleOrder() [2/2]

bool Chaos::ShouldSwapParticleOrder ( const FGeometryParticleHandle Particle0,
const FGeometryParticleHandle Particle1 
)
inline

◆ ShouldUpdateFromSimulation()

bool Chaos::ShouldUpdateFromSimulation ( const TRigidParticle InRigidParticle)

◆ ShouldUpdateTransformFromSimulation()

bool Chaos::ShouldUpdateTransformFromSimulation ( const Chaos::FPBDRigidParticle Rigid)

◆ SignMatch()

template<typename T >
bool Chaos::SignMatch ( A,
B 
)

◆ SimplexFindClosestToOrigin()

template<typename T >
TVec3< T > Chaos::SimplexFindClosestToOrigin ( TVec3< T > *  Simplex,
FSimplex Idxs,
T *  OutBarycentric,
TVec3< T > *  A = nullptr,
TVec3< T > *  B = nullptr 
)

◆ SimplexFindClosestToOrigin2()

template<typename T >
TVec3< T > Chaos::SimplexFindClosestToOrigin2 ( TVec3< T > *  Simplex,
int32 NumVerts,
T *  OutBarycentric,
TVec3< T > *  A,
TVec3< T > *  B 
)

◆ SimWritablePropsMayChange()

bool Chaos::SimWritablePropsMayChange ( const TGeometryParticleHandle< FReal, 3 > &  Handle)

◆ SingularValueDecomposition() [1/3]

template<class T >
void Chaos::SingularValueDecomposition ( const PMatrix< T, 2, 2 > &  A,
const PMatrix< T, 2, 2 > &  U,
const TVector< T, 2 > &  Sigma,
const PMatrix< T, 2, 2 > &  V,
const T  tol = std::numeric_limits<T>::epsilon() 
)
inline

2x2 SVD (singular value decomposition) A=USV'

Parameters
[in]AInput matrix.
[out]URobustly a rotation matrix.
[out]SigmaVector of singular values sorted with decreasing magnitude. The second one can be negative.
[out]VRobustly a rotation matrix.

◆ SingularValueDecomposition() [2/3]

template<class T >
void Chaos::SingularValueDecomposition ( const PMatrix< T, 2, 2 > &  A,
GivensRotation< T > &  U,
const TVector< T, 2 > &  Sigma,
GivensRotation< T > &  V,
const T  tol = std::numeric_limits<T>::epsilon() 
)
inline

2x2 SVD (singular value decomposition) A=USV'

Parameters
[in]AInput matrix.
[out]URobustly a rotation matrix in Givens form
[out]SigmaVector of singular values sorted with decreasing magnitude. The second one can be negative.
[out]VRobustly a rotation matrix in Givens form

◆ SingularValueDecomposition() [3/3]

template<class T >
int Chaos::SingularValueDecomposition ( const PMatrix< T, 3, 3 > &  A,
PMatrix< T, 3, 3 > &  U,
TVector< T, 3 > &  sigma,
PMatrix< T, 3, 3 > &  V,
tol = std::numeric_limits<T>::epsilon() 
)
inline

3X3 SVD (singular value decomposition) A=USV'

Parameters
[in]AInput matrix.
[out]Uis a rotation matrix.
[out]sigmaDiagonal matrix, sorted with decreasing magnitude. The third one can be negative.
[out]Vis a rotation matrix.

Do implicit shift QR until A^T A is block diagonal

Handle the cases of one of the alphas and betas being 0 Sorted by ease of handling and then frequency of occurrence

If B is of form x x 0 0 x 0 0 0 x

If B is of form x 0 0 0 x x 0 0 x

If B is of form x x 0 0 0 x 0 0 x

Reduce B to x x 0 0 0 0 0 0 x

If B is of form x x 0 0 x x 0 0 0

Reduce B to x x + 0 x 0 0 0 0

Reduce B to x x 0

  • x 0 0 0 0

If B is of form 0 x 0 0 x x 0 0 x

Reduce B to 0 0 + 0 x x 0 0 x

Reduce B to 0 0 0 0 x x 0 + x

◆ SmoothProject() [1/3]

template<class T >
bool Chaos::SmoothProject ( const TConstArrayView< FVec3 > &  Points,
const TArray< TVec3< int32 > > &  Tris,
const TArray< FVec3 > &  PointNormals,
const FVec3 Pos,
const int32  TriIdx,
FVec3 Weights 
)

◆ SmoothProject() [2/3]

template<class T >
bool Chaos::SmoothProject ( const TConstArrayView< FVec3 > &  Points,
const TArray< TVec3< int32 > > &  Tris,
const TArray< FVec3 > &  PointNormals,
const FVec3 Pos,
const int32  TriIdx,
FVec3 Weights,
TArray< TArray< FVec3 > > &  TangentBases,
T *  B,
T *  C,
TVec3< T > &  C0,
TVec3< T > &  C1,
TVec3< T > &  C2,
TVec3< T > &  W0,
TVec3< T > &  W1,
TVec3< T > &  W2 
)

◆ SmoothProject() [3/3]

template<class T >
TArray< bool > Chaos::SmoothProject ( const TConstArrayView< FVec3 > &  Points,
const TArray< TVec3< int32 > > &  Tris,
const TArray< FVec3 > &  PointNormals,
const FVec3 Pos,
const TArray< int32 > &  TriIdx,
TArray< FVec3 > &  Weights,
const bool  UseFirstFound = false 
)

◆ SolveQuadraticEquation()

FReal Chaos::SolveQuadraticEquation ( const FReal  Phi,
const FReal  PhiX,
const FReal  PhiY,
const FReal  Dx,
const FReal  Dy 
)

◆ SolverQuaternionApplyAngularDeltaApprox()

CHAOS_API FRotation3 Chaos::SolverQuaternionApplyAngularDeltaApprox ( const FRotation3 InQ0,
const FVec3 InDR 
)

◆ SolverQuaternionNormalizeApprox()

CHAOS_API void Chaos::SolverQuaternionNormalizeApprox ( FRotation3 InOutQ)

An approximate quaternion normalize for use in the solver.

Note
we need to correctly normalize the final quaternion before pushing it back to the particle otherwise some tolerance checks elsewhere will fail (Integrate)

This avoids the sqrt which is a massively dominating cost especially with doubles when we do not have a fast reciproical sqrt (AVX2)

This uses the first order Pade approximation instead of a Taylor expansion to get more accurate results for small quaternion deltas (i.e., where Q.SizeSquared() is already near 1).

Q.Normalized ~= Q * (2 / (1 + Q.SizeSquared)))

In practice we can use this for almost any delta generated in collision detection but we have an accurate fallback just in case. The fallback adds a branch but this does not seem to cost much.

◆ Sort0()

template<class T >
void Chaos::Sort0 ( PMatrix< T, 3, 3 > &  U,
TVector< T, 3 > &  sigma,
PMatrix< T, 3, 3 > &  V 
)

Helper function of 3X3 SVD for sorting singular values.

◆ Sort1()

template<class T >
void Chaos::Sort1 ( PMatrix< T, 3, 3 > &  U,
TVector< T, 3 > &  sigma,
PMatrix< T, 3, 3 > &  V 
)

Helper function of 3X3 SVD for Sorting singular values.

◆ SpatialAccelerationEqual()

bool Chaos::SpatialAccelerationEqual ( ESpatialAcceleration  A,
SpatialAccelerationType  B 
)
inline

◆ SphereBoxContactPoint()

FContactPoint Chaos::SphereBoxContactPoint ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const FImplicitBox3 Box,
const FRigidTransform3 BoxTransform 
)

◆ SphereCapsuleContactPoint()

FContactPoint Chaos::SphereCapsuleContactPoint ( const FSphere A,
const FRigidTransform3 ATransform,
const FCapsule B,
const FRigidTransform3 BTransform 
)

◆ SphereConvexContactPoint() [1/2]

CHAOS_API FContactPoint Chaos::SphereConvexContactPoint ( const FImplicitSphere3 Sphere,
const FImplicitObject Object,
const FRigidTransform3 SphereToConvexTransform 
)

◆ SphereConvexContactPoint() [2/2]

CHAOS_API FContactPoint Chaos::SphereConvexContactPoint ( const FImplicitSphere3 Sphere,
const FRigidTransform3 SphereTransform,
const FImplicitObject Object,
const FRigidTransform3 ConvexTransform 
)

◆ SphereConvexContactPointImpl()

template<typename ConvexType >
FContactPoint Chaos::SphereConvexContactPointImpl ( const FImplicitSphere3 Sphere,
const ConvexType Convex,
const FRigidTransform3 SphereToConvexTransform 
)

◆ SphereHeightFieldContactPoint()

FContactPoint Chaos::SphereHeightFieldContactPoint ( const FSphere A,
const FRigidTransform3 ATransform,
const FHeightField B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ SpherePlaneContactPoint()

FContactPoint Chaos::SpherePlaneContactPoint ( const FSphere Sphere,
const FRigidTransform3 SphereTransform,
const TPlane< FReal, 3 > &  Plane,
const FRigidTransform3 PlaneTransform 
)

◆ SphereSphereContactPoint()

FContactPoint Chaos::SphereSphereContactPoint ( const FSphere Sphere1,
const FRigidTransform3 Sphere1Transform,
const FSphere Sphere2,
const FRigidTransform3 Sphere2Transform,
const FRealSingle  CullDistance 
)

◆ SphereTriangleMeshContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::SphereTriangleMeshContactPoint ( const FSphere A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ SphereTriangleMeshContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::SphereTriangleMeshContactPoint< FTriangleMeshImplicitObject > ( const FSphere A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BTransform,
const FReal  CullDistance 
)

◆ SphereTriangleMeshContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

◆ SphereTriangleMeshSweptContactPoint()

template<typename TriMeshType >
FContactPoint Chaos::SphereTriangleMeshSweptContactPoint ( const FSphere A,
const FRigidTransform3 ATransform,
const TriMeshType B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ SphereTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject >()

template FContactPoint Chaos::SphereTriangleMeshSweptContactPoint< FTriangleMeshImplicitObject > ( const FSphere A,
const FRigidTransform3 ATransform,
const FTriangleMeshImplicitObject B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ SphereTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > >()

template FContactPoint Chaos::SphereTriangleMeshSweptContactPoint< TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > > ( const FSphere A,
const FRigidTransform3 ATransform,
const TImplicitObjectScaled< class Chaos::FTriangleMeshImplicitObject, 1 > &  B,
const FRigidTransform3 BStartTransform,
const FVec3 Dir,
const FReal  Length,
const FReal  IgnorePenetration,
const FReal  TargetPenetration,
FReal TOI 
)

◆ Sqr()

FORCEINLINE float Chaos::Sqr ( float  Val)

◆ StateDiverged()

bool Chaos::StateDiverged ( const FDirtyRigidParticleData A,
const FDirtyRigidParticleData B 
)

◆ SteeringControlName()

const FName Chaos::SteeringControlName ( "Steering"  )

◆ SwapCols()

template<class T >
void Chaos::SwapCols ( PMatrix< T, 3, 3 > &  A,
const int  i1,
const int  i2 
)
inline

◆ SweepBoxVsCapsule()

UE_INTERNAL CHAOS_API bool Chaos::SweepBoxVsCapsule ( const TBox< FReal, 3 > &  SweptBox,
const FRigidTransform3 SweptBoxTM,
const FCapsule TestCapsule,
const FRigidTransform3 TestCapsuleTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepBoxVsSphere()

UE_INTERNAL CHAOS_API bool Chaos::SweepBoxVsSphere ( const TBox< FReal, 3 > &  SweptBox,
const FRigidTransform3 SweptBoxTM,
const FSphere TestSphere,
const FRigidTransform3 TestSphereTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepCapsuleVsBox()

UE_INTERNAL CHAOS_API bool Chaos::SweepCapsuleVsBox ( const FCapsule SweptCapsule,
const FRigidTransform3 SweptCapsuleTM,
const TBox< FReal, 3 > &  TestBox,
const FRigidTransform3 TestBoxTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepCapsuleVsCapsule()

UE_INTERNAL CHAOS_API bool Chaos::SweepCapsuleVsCapsule ( const FCapsule SweptCapsule,
const FRigidTransform3 SweptCapsuleTM,
const FCapsule TestCapsule,
const FRigidTransform3 TestCapsuleTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepCapsuleVsConvex()

UE_INTERNAL CHAOS_API bool Chaos::SweepCapsuleVsConvex ( const FCapsule SweptCapsule,
const FRigidTransform3 SweptCapsuleTM,
const FImplicitObject TestObject,
const FRigidTransform3 TestObjectTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepCapsuleVsSphere()

UE_INTERNAL CHAOS_API bool Chaos::SweepCapsuleVsSphere ( const FCapsule SweptCapsule,
const FRigidTransform3 SweptCapsuleTM,
const FSphere TestSphere,
const FRigidTransform3 TestSphereTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepQuery() [1/2]

bool Chaos::SweepQuery ( const FImplicitObject A,
const FRigidTransform3 ATM,
const FImplicitObject B,
const FRigidTransform3 BTM,
const FVec3 Dir,
const FReal  Length,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal,
const FReal  Thickness,
const bool  bComputeMTD 
)
inline

◆ SweepQuery() [2/2]

template<typename SweptGeometry >
bool Chaos::SweepQuery ( const FImplicitObject A,
const FRigidTransform3 ATM,
const SweptGeometry B,
const FRigidTransform3 BTM,
const FVec3 Dir,
const FReal  Length,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal,
const FReal  Thickness,
const bool  bComputeMTD 
)

◆ SweepSphereVsBox()

UE_INTERNAL CHAOS_API bool Chaos::SweepSphereVsBox ( const FSphere SweptSphere,
const FRigidTransform3 SweptSphereTM,
const TBox< FReal, 3 > &  TestBox,
const FRigidTransform3 TestBoxTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepSphereVsCapsule()

UE_INTERNAL CHAOS_API bool Chaos::SweepSphereVsCapsule ( const FSphere SweptSphere,
const FRigidTransform3 SweptSphereTM,
const FCapsule TestCapsule,
const FRigidTransform3 TestCapsuleTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepSphereVsConvex()

UE_INTERNAL CHAOS_API bool Chaos::SweepSphereVsConvex ( const FSphere SweptSphere,
const FRigidTransform3 SweptSphereTM,
const FImplicitObject TestObject,
const FRigidTransform3 TestObjectTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ SweepSphereVsSphere()

UE_INTERNAL CHAOS_API bool Chaos::SweepSphereVsSphere ( const FSphere SweptSphere,
const FRigidTransform3 SweptSphereTM,
const FSphere TestSphere,
const FRigidTransform3 TestSphereTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ TetrahedronSimplexFindOrigin()

template<typename T >
TVec3< T > Chaos::TetrahedronSimplexFindOrigin ( const TVec3< T > *  Simplex,
FSimplex Idxs,
T *  OutBarycentric 
)

◆ TetrahedronSimplexFindOrigin2()

template<typename T >
TVec3< T > Chaos::TetrahedronSimplexFindOrigin2 ( TVec3< T > *  Simplex,
int32 NumVerts,
T *  OutBarycentric,
TVec3< T > *  A,
TVec3< T > *  B 
)

◆ ThrottleControlName()

const FName Chaos::ThrottleControlName ( "Throttle"  )

◆ TImplicitObjectTransformSerializeHelper() [1/3]

void Chaos::TImplicitObjectTransformSerializeHelper ( FChaosArchive Ar,
const FImplicitObject Obj 
)
inline

◆ TImplicitObjectTransformSerializeHelper() [2/3]

void Chaos::TImplicitObjectTransformSerializeHelper ( FChaosArchive Ar,
FImplicitObjectPtr Obj 
)
inline

◆ TImplicitObjectTransformSerializeHelper() [3/3]

void Chaos::TImplicitObjectTransformSerializeHelper ( FChaosArchive Ar,
TSerializablePtr< FImplicitObject > &  Obj 
)
inline

◆ ToBarycentric()

template<typename RealType >
TVec3< RealType > Chaos::ToBarycentric ( const TVec3< RealType > &  Point,
const TVec3< RealType > &  V0,
const TVec3< RealType > &  V1,
const TVec3< RealType > &  V2 
)
inline

Convert the cartesian coordinate into a barycentric corrdinate. Compute barycentric coordinates/weights of Point inside 3D triangle (V0,V1,V2). If point is in triangle plane and inside triangle, coords will be positive and sum to 1. ie if result is a, then vPoint = a.x*V0 + a.y*V1 + a.z*V2.

Note
For points outside the triangle it will return negative barycentric coordinates that should still sum to 1. However, if the triangle is degenerate and the point is not on the line/vertex, it will return (1,0,0) with no way to detect this condition.
See also
FromBarycentric()

◆ ToInternalConnectionMethod()

FClusterCreationParameters::EConnectionMethod Chaos::ToInternalConnectionMethod ( EClusterUnionMethod  InMethod)

◆ TooManyOverlapQueryCells()

template<typename T >
FORCEINLINE_DEBUGGABLE bool Chaos::TooManyOverlapQueryCells ( const TAABB< T, 3 > &  AABB,
FReal  DirtyElementGridCellSizeInv,
int32  MaximumOverlap 
)

◆ TooManyRaycastQueryCells()

FORCEINLINE_DEBUGGABLE bool Chaos::TooManyRaycastQueryCells ( const FVec3 StartPoint,
const FVec3 Dir,
const FReal  Length,
FReal  DirtyElementGridCellSizeInv,
int32  DirtyElementMaxGridCellQueryCount 
)

◆ TooManySweepQueryCells()

FORCEINLINE_DEBUGGABLE bool Chaos::TooManySweepQueryCells ( const TVec3< FReal > &  QueryHalfExtents,
const FVec3 StartPoint,
const FVec3 Dir,
FReal  Length,
FReal  DirtyElementGridCellSizeInv,
int32  DirtyElementMaxGridCellQueryCount 
)

◆ TorqueCmToM()

FORCEINLINE float Chaos::TorqueCmToM ( float  TorqueIn)

◆ TorqueMToCm()

FORCEINLINE float Chaos::TorqueMToCm ( float  TorqueIn)

◆ ToString() [1/6]

CHAOS_API FString Chaos::ToString ( const EObjectStateType  ObjectState)

◆ ToString() [2/6]

CHAOS_API FString Chaos::ToString ( const FRotation3 V)

◆ ToString() [3/6]

CHAOS_API FString Chaos::ToString ( const FRotation3f V)

◆ ToString() [4/6]

CHAOS_API FString Chaos::ToString ( const FVec3 V)

◆ ToString() [5/6]

CHAOS_API FString Chaos::ToString ( const FVec3f V)

◆ ToString() [6/6]

CHAOS_API FString Chaos::ToString ( const TBitArray<> &  BitArray)

◆ ToStringHelper() [1/11]

FString Chaos::ToStringHelper ( const bool  Val)
inline

◆ ToStringHelper() [2/11]

FString Chaos::ToStringHelper ( const EJointForceMode  Val)
inline

◆ ToStringHelper() [3/11]

FString Chaos::ToStringHelper ( const EJointMotionType  Val)
inline

◆ ToStringHelper() [4/11]

FString Chaos::ToStringHelper ( const EObjectStateType  Val)
inline

◆ ToStringHelper() [5/11]

FString Chaos::ToStringHelper ( const EPlasticityType  Val)
inline

◆ ToStringHelper() [6/11]

FString Chaos::ToStringHelper ( const FReal  Val)
inline

◆ ToStringHelper() [7/11]

FString Chaos::ToStringHelper ( const FRealSingle  Val)
inline

◆ ToStringHelper() [8/11]

FString Chaos::ToStringHelper ( const int32  Val)
inline

◆ ToStringHelper() [9/11]

template<typename T >
FString Chaos::ToStringHelper ( const T &  Val)

◆ ToStringHelper() [10/11]

template<typename T >
FString Chaos::ToStringHelper ( const TVector< T, 2 > &  Val)

◆ ToStringHelper() [11/11]

FString Chaos::ToStringHelper ( void Val)
inline

◆ TransferClusterUnionShapeData()

template<typename TParticle >
void Chaos::TransferClusterUnionShapeData ( const TUniquePtr< Chaos::FPerShapeData > &  ShapeData,
TParticle TemplateParticle,
const TUniquePtr< Chaos::FPerShapeData > &  TemplateShape,
int32  ActorId,
int32  ComponentId 
)

◆ TransformedAABBHelper()

template<typename T >
TAABB< T, 3 > Chaos::TransformedAABBHelper ( const TAABB< T, 3 > &  AABB,
const FMatrix44 SpaceTransform 
)
inline

◆ TransformedAABBHelper2()

template<typename T , typename U >
TAABB< T, 3 > Chaos::TransformedAABBHelper2 ( const TAABB< T, 3 > &  AABB,
const TRigidTransform< U, 3 > &  SpaceTransform 
)
inline

◆ TransformedAABBHelperISPC() [1/2]

TAABB< Chaos::FRealSingle, 3 > Chaos::TransformedAABBHelperISPC ( const TAABB< Chaos::FRealSingle, 3 > &  AABB,
const FTransform SpaceTransform 
)
inline

◆ TransformedAABBHelperISPC() [2/2]

TAABB< FReal, 3 > Chaos::TransformedAABBHelperISPC ( const TAABB< FReal, 3 > &  AABB,
const FTransform SpaceTransform 
)
inline

◆ TransformedAABBHelperISPC2() [1/2]

TAABB< Chaos::FRealSingle, 3 > Chaos::TransformedAABBHelperISPC2 ( const TAABB< Chaos::FRealSingle, 3 > &  AABB,
const FTransform SpaceTransform 
)
inline

◆ TransformedAABBHelperISPC2() [2/2]

TAABB< FReal, 3 > Chaos::TransformedAABBHelperISPC2 ( const TAABB< FReal, 3 > &  AABB,
const FTransform SpaceTransform 
)
inline

◆ TransformHelper()

void Chaos::TransformHelper ( const FFFT3::FUniformGrid Grid,
const TArrayND< FVec3, 3 > &  Velocity,
FFFT3::FArrayNDOfComplex u,
const int32  index 
)

◆ TransformSweepOutputsHelper()

void Chaos::TransformSweepOutputsHelper ( FVec3  TriMeshScale,
const FVec3 HitNormal,
const FVec3 HitPosition,
const FRealSingle  LengthScale,
const FRealSingle  Time,
FVec3 OutNormal,
FVec3 OutPosition,
FRealSingle OutTime 
)

◆ TransformSweepResultsToWorld() [1/2]

UE_INTERNAL CHAOS_API void Chaos::TransformSweepResultsToWorld ( const bool  bResult,
const FReal  Time,
const bool  bComputeMTD,
const FImplicitObject TestGeom,
const FRigidTransform3 TestGeomTM,
const FVec3 LocalDir,
const FVec3 LocalPosition,
const FVec3 LocalNormal,
const int32  FaceIndex,
FVec3 OutWorldPosition,
FVec3 OutWorldNormal,
FVec3 OutWorldFaceNormal 
)

◆ TransformSweepResultsToWorld() [2/2]

void Chaos::TransformSweepResultsToWorld ( const bool  bResult,
const FReal  Time,
const bool  bComputeMTD,
const FImplicitObject TestGeom,
const FVec3 TestGeomLocation,
const FVec3 LocalDir,
const FVec3 LocalPosition,
const FVec3 LocalNormal,
const int32  FaceIndex,
FVec3 OutWorldPosition,
FVec3 OutWorldNormal,
FVec3 OutWorldFaceNormal 
)

◆ TransformToLocalSpace() [1/5]

void CHAOS_API Chaos::TransformToLocalSpace ( FMassProperties MassProperties)

◆ TransformToLocalSpace() [2/5]

template CHAOS_API TRotation< FRealDouble, 3 > Chaos::TransformToLocalSpace ( PMatrix< FRealDouble, 3, 3 > &  Inertia)

◆ TransformToLocalSpace() [3/5]

template CHAOS_API TRotation< FRealSingle, 3 > Chaos::TransformToLocalSpace ( PMatrix< FRealSingle, 3, 3 > &  Inertia)

◆ TransformToLocalSpace() [4/5]

template<typename T >
TRotation< T, 3 > Chaos::TransformToLocalSpace ( PMatrix< T, 3, 3 > &  Inertia)

◆ TransformToLocalSpace() [5/5]

template<typename T >
TRotation< T, 3 > CHAOS_API Chaos::TransformToLocalSpace ( PMatrix< T, 3, 3 > &  Inertia)

◆ TriangleMeshTransformVertsHelper() [1/2]

template<typename IdxType , typename ParticlesType >
void Chaos::TriangleMeshTransformVertsHelper ( const FRigidTransform3 Transform,
int32  TriIdx,
const ParticlesType &  Particles,
const TArray< TVector< IdxType, 3 > > &  Elements,
FVec3 OutA,
FVec3 OutB,
FVec3 OutC,
int32 OutVertexIndexA,
int32 OutVertexIndexB,
int32 OutVertexIndexC 
)
inline

◆ TriangleMeshTransformVertsHelper() [2/2]

template<typename IdxType , typename ParticlesType >
void Chaos::TriangleMeshTransformVertsHelper ( const FVec3 TriMeshScale,
int32  TriIdx,
const ParticlesType &  Particles,
const TArray< TVector< IdxType, 3 > > &  Elements,
FVec3 OutA,
FVec3 OutB,
FVec3 OutC 
)
inline

◆ TriangleSimplexFindOrigin()

template<typename T >
TVec3< T > Chaos::TriangleSimplexFindOrigin ( const TVec3< T > *  Simplex,
FSimplex Idxs,
T *  OutBarycentric 
)

◆ TriangleSimplexFindOrigin2()

template<typename T >
TVec3< T > Chaos::TriangleSimplexFindOrigin2 ( TVec3< T > *  Simplex,
int32 NumVerts,
T *  OutBarycentric,
TVec3< T > *  As,
TVec3< T > *  Bs 
)

◆ TriangleSimplexFindOriginFast()

template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLE T Chaos::TriangleSimplexFindOriginFast ( T *RESTRICT  Simplex,
int32 &RESTRICT  NumVerts,
T &RESTRICT  OutBarycentric,
T *RESTRICT  As,
T *RESTRICT  Bs 
)

◆ TryBulkSerializeArrayNDBase() [1/5]

void Chaos::TryBulkSerializeArrayNDBase ( FArchive Ar,
TArray< double > &  Array 
)
inline

◆ TryBulkSerializeArrayNDBase() [2/5]

void Chaos::TryBulkSerializeArrayNDBase ( FArchive Ar,
TArray< float > &  Array 
)
inline

◆ TryBulkSerializeArrayNDBase() [3/5]

template<typename T >
void Chaos::TryBulkSerializeArrayNDBase ( FArchive Ar,
TArray< T > &  Array 
)

◆ TryBulkSerializeArrayNDBase() [4/5]

void Chaos::TryBulkSerializeArrayNDBase ( FArchive Ar,
TArray< TVec3< FRealDouble > > &  Array 
)
inline

◆ TryBulkSerializeArrayNDBase() [5/5]

void Chaos::TryBulkSerializeArrayNDBase ( FArchive Ar,
TArray< TVec3< FRealSingle > > &  Array 
)
inline

◆ TryBulkSerializeArrayNDBaseForDoubles()

void Chaos::TryBulkSerializeArrayNDBaseForDoubles ( FArchive Ar,
TArray< DOUBLE_T > &  DoubleTypedArray 
)
inline

◆ TryRunSpecializedSweep()

template<EImplicitObjectType SweptType>
UE_INTERNAL bool Chaos::TryRunSpecializedSweep ( const FImplicitObject SweptShape,
const FRigidTransform3 SweptShapeTM,
const FImplicitObject TestGeom,
const FRigidTransform3 TestGeomTM,
const FVec3 SweepDir,
const FReal  Length,
const FReal  Thickness,
const bool  bComputeMTD,
bool bOutResult,
FReal OutTime,
FVec3 OutPosition,
FVec3 OutNormal,
int32 OutFaceIndex,
FVec3 OutFaceNormal 
)

◆ UE_DEPRECATED() [1/2]

template<class T , int d>
class TPBDChainConstraints Chaos::UE_DEPRECATED ( 4.  27,
"Deprecated. this class is to be  deleted,
use FPBDChainConstraints instead"   
)

◆ UE_DEPRECATED() [2/2]

class Chaos::UE_DEPRECATED ( 5.  4,
"No longer used"   
)

◆ UnwrapImplicit()

template<typename T >
const T * Chaos::UnwrapImplicit ( const FImplicitObject Implicit,
FVec3 OutScale,
FReal OutMargin 
)

Remove the Instanced or Scaled wrapper from an ImplicitObject of a known inner type and extract the instance properties.

Returns
the inner implicit object or null if the wrong type

◆ UpdateClusterFilterDataFromChildren()

void Chaos::UpdateClusterFilterDataFromChildren ( FPBDRigidClusteredParticleHandle ClusterParent,
const TArray< FPBDRigidParticleHandle * > &  Children 
)

Update shapes with first valid filter data from a child. Should be called after a child's filter is modified to ensure cluster's filters match at least one of the children and isn't stale.

◆ UpdateClusterMassProperties()

void CHAOS_API Chaos::UpdateClusterMassProperties ( FPBDRigidClusteredParticleHandle Parent,
const TSet< FPBDRigidParticleHandle * > &  Children 
)

◆ UpdateCollisionConstraintFromSolver()

FORCEINLINE_DEBUGGABLE void Chaos::UpdateCollisionConstraintFromSolver ( FPBDCollisionConstraint Constraint,
const Private::FPBDCollisionSolver Solver,
const FSolverReal  Dt 
)

◆ UpdateCollisionFlags()

void CHAOS_API Chaos::UpdateCollisionFlags ( Chaos::FPBDRigidClusteredParticleHandle ParticleHandle,
const bool  bUseParticleImplicit 
)

◆ UpdateCollisionSolverContactPointFromConstraint()

void Chaos::UpdateCollisionSolverContactPointFromConstraint ( Private::FPBDCollisionSolver Solver,
const int32  SolverPointIndex,
FPBDCollisionConstraint Constraint,
const int32  ConstraintPointIndex,
const FRealSingle  Dt,
const FRealSingle  MaxDepenetrationVelocity,
const FRealSingle  MaxPushOut,
const FConstraintSolverBody Body0,
const FConstraintSolverBody Body1 
)

◆ UpdateCollisionSolverFromConstraint()

void Chaos::UpdateCollisionSolverFromConstraint ( Private::FPBDCollisionSolver Solver,
FPBDCollisionConstraint Constraint,
const FSolverReal  Dt,
const FPBDCollisionSolverSettings SolverSettings,
bool bOutPerIterationCollision 
)

◆ UpdateCollisionSolverManifoldFromConstraint()

void Chaos::UpdateCollisionSolverManifoldFromConstraint ( Private::FPBDCollisionSolver Solver,
FPBDCollisionConstraint Constraint,
const FSolverReal  Dt,
const int32  ConstraintPointBeginIndex,
const int32  ConstraintPointEndIndex,
const FPBDCollisionSolverSettings SolverSettings 
)

◆ UpdateGeometry() [1/2]

void CHAOS_API Chaos::UpdateGeometry ( Chaos::FPBDRigidClusteredParticleHandle Parent,
const TSet< FPBDRigidParticleHandle * > &  Children,
const FRigidClustering::FClusterMap ChildrenMap,
const Chaos::FImplicitObjectPtr ProxyGeometry,
const FClusterCreationParameters Parameters 
)

◆ UpdateGeometry() [2/2]

FORCEINLINE void CHAOS_API Chaos::UpdateGeometry ( Chaos::FPBDRigidClusteredParticleHandle Parent,
const TSet< FPBDRigidParticleHandle * > &  Children,
const FRigidClustering::FClusterMap ChildrenMap,
TSharedPtr< Chaos::FImplicitObject, ESPMode::ThreadSafe ProxyGeometry,
const FClusterCreationParameters Parameters 
)

◆ UpdateKinematicProperties()

void CHAOS_API Chaos::UpdateKinematicProperties ( Chaos::FPBDRigidParticleHandle InParent,
const FRigidClustering::FClusterMap MChildren,
FRigidClustering::FRigidEvolution MEvolution 
)

◆ UpdateParticleFromSolverBody()

void Chaos::UpdateParticleFromSolverBody ( FGeometryParticleHandle Particle,
const FSolverBody SolverBody 
)
inline

◆ UpdateParticleShapes()

template<typename ParticleType >
void Chaos::UpdateParticleShapes ( const TArray< ParticleType * > &  ShapesParticles,
const FImplicitObject ImplicitObject,
const FShapesArray ShapesArray,
const int32  ActorId,
const int32  ComponentID 
)

◆ UpdateShapesArrayFromGeometry() [1/3]

void Chaos::UpdateShapesArrayFromGeometry ( FShapeInstanceArray ShapesArray,
const FImplicitObjectPtr Geometry,
const FRigidTransform3 ActorTM 
)
extern

◆ UpdateShapesArrayFromGeometry() [2/3]

void Chaos::UpdateShapesArrayFromGeometry ( FShapeInstanceProxyArray ShapesArray,
const FImplicitObjectPtr Geometry,
const FRigidTransform3 ActorTM,
IPhysicsProxyBase Proxy 
)
extern

◆ UpdateShapesArrayFromGeometry() [3/3]

void CHAOS_API Chaos::UpdateShapesArrayFromGeometry ( FShapesArray ShapesArray,
TSerializablePtr< FImplicitObject Geometry,
const FRigidTransform3 ActorTM,
IPhysicsProxyBase Proxy 
)

◆ UpdateShapesArrayFromGeometryImpl()

void Chaos::UpdateShapesArrayFromGeometryImpl ( TShapesArrayType ShapesArray,
const FImplicitObjectPtr Geometry,
const FRigidTransform3 ActorTM,
IPhysicsProxyBase Proxy 
)

◆ UpdateSoftCollisionSettings()

void Chaos::UpdateSoftCollisionSettings ( const FChaosPhysicsMaterial PhysicsMaterial,
const FGeometryParticleHandle Particle,
FReal InOutThickess 
)

◆ UpdateSolverBodyFromParticle()

void Chaos::UpdateSolverBodyFromParticle ( FSolverBody SolverBody,
const FGeometryParticleHandle Particle,
const FReal  Dt 
)
inline

◆ VectorComputeEPAResults()

FORCEINLINE_DEBUGGABLE void Chaos::VectorComputeEPAResults ( const VectorRegister4Float VertsA,
const VectorRegister4Float VertsB,
const VectorTEPAEntry Entry,
VectorRegister4Float OutPenetration,
VectorRegister4Float OutDir,
VectorRegister4Float OutA,
VectorRegister4Float OutB,
EEPAResult ResultStatus 
)

◆ VectorEPA()

EEPAResult Chaos::VectorEPA ( TArray< VectorRegister4Float > &  VertsABuffer,
TArray< VectorRegister4Float > &  VertsBBuffer,
const TSupportA SupportA,
const TSupportB SupportB,
VectorRegister4Float OutPenetration,
VectorRegister4Float OutDir,
VectorRegister4Float WitnessA,
VectorRegister4Float WitnessB 
)

◆ VectorEPAComputeVisibilityBorder()

FORCEINLINE_DEBUGGABLE void Chaos::VectorEPAComputeVisibilityBorder ( TEPAWorkingArray< VectorTEPAEntry > &  Entries,
int32  EntryIdx,
const VectorRegister4Float W,
TEPAWorkingArray< FEPAFloodEntry > &  OutBorderEdges,
TEPAWorkingArray< FEPAFloodEntry > &  ToVisitStack 
)

◆ VectorInitializeEPA()

bool Chaos::VectorInitializeEPA ( TArray< VectorRegister4Float > &  VertsA,
TArray< VectorRegister4Float > &  VertsB,
const SupportALambda SupportA,
const SupportBLambda SupportB,
TEPAWorkingArray< VectorTEPAEntry > &  OutEntries,
VectorRegister4Float OutTouchNormal 
)

◆ VectorLineSimplexFindOrigin()

template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLE T Chaos::VectorLineSimplexFindOrigin ( T *RESTRICT  Simplex,
int32 &RESTRICT  NumVerts,
T &RESTRICT  OutBarycentric,
T *RESTRICT  A,
T *RESTRICT  B 
)

◆ VectorMinkowskiVert()

FORCEINLINE const VectorRegister4Float Chaos::VectorMinkowskiVert ( const VectorRegister4Float VertsABuffer,
const VectorRegister4Float VertsBBuffer,
const int32  Idx 
)

◆ VectorSignMatch()

template<typename T >
FORCEINLINE bool Chaos::VectorSignMatch ( A,
B 
)

◆ VectorSimplexFindClosestToOrigin()

template<typename T , bool CalculatExtraInformation = true>
FORCEINLINE_DEBUGGABLE T Chaos::VectorSimplexFindClosestToOrigin ( T *RESTRICT  Simplex,
int32 &RESTRICT  NumVerts,
T &RESTRICT  OutBarycentric,
T *RESTRICT  A,
T *RESTRICT  B 
)

◆ VectorTetrahedronSimplexFindOrigin()

template<typename T , bool CalculatExtraInformation>
FORCEINLINE_DEBUGGABLE T Chaos::VectorTetrahedronSimplexFindOrigin ( T *RESTRICT  Simplex,
int32 &RESTRICT  NumVerts,
T &RESTRICT  OutBarycentric,
T *RESTRICT  A,
T *RESTRICT  B 
)

◆ WilkinsonShift()

template<class T >
T Chaos::WilkinsonShift ( const T  a1,
const T  b1,
const T  a2 
)

Compute WilkinsonShift of the block a1 b1 b1 a2 based on the WilkinsonShift formula mu = c + d - sign (d) \ sqrt (d*d + b*b), where d = (a-c)/2.

◆ YawControlName()

const FName Chaos::YawControlName ( "Yaw"  )

◆ ZeroChase()

template<class T >
void Chaos::ZeroChase ( PMatrix< T, 3, 3 > &  H,
PMatrix< T, 3, 3 > &  U,
PMatrix< T, 3, 3 > &  V 
)
inline

zero chasing the 3X3 matrix to bidiagonal form original form of H: x x 0 x x x 0 0 x after zero chase: x x 0 0 x x 0 0 x

Reduce H to of form x x + 0 x x 0 0 x

Reduce H to of form x x 0 0 x x 0 + x Can calculate r2 without multiplying by r1 since both entries are in first two rows thus no need to divide by sqrt(a^2+b^2)

Reduce H to of form x x 0 0 x x 0 0 x

◆ ZeroOrOneBitSet()

bool Chaos::ZeroOrOneBitSet ( const EGeometryParticleListMask  ParticleListMask,
const EGeometryParticleListMask  ViewListMask 
)

Variable Documentation

◆ AccelerationStructureIsolateQueryOnlyObjects

CHAOS_API int32 Chaos::AccelerationStructureIsolateQueryOnlyObjects = 0

◆ AccelerationStructureSplitStaticAndDynamic

CHAOS_API int32 Chaos::AccelerationStructureSplitStaticAndDynamic = 1

◆ AccelerationStructureTimeSlicingMaxBytesCopy

CHAOS_API int32 Chaos::AccelerationStructureTimeSlicingMaxBytesCopy = 100000

◆ AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce

CHAOS_API int32 Chaos::AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce = 1000

◆ AccelerationStructureUseDirtyTreeInsteadOfGrid

CHAOS_API int32 Chaos::AccelerationStructureUseDirtyTreeInsteadOfGrid = 1

◆ AccelerationStructureUseDynamicTree

CHAOS_API int32 Chaos::AccelerationStructureUseDynamicTree = 1

◆ AngularEtherDragOverride

FRealSingle Chaos::AngularEtherDragOverride = -1.f

◆ ArraySizeEPA

constexpr int32 Chaos::ArraySizeEPA = 16
inlineconstexpr

◆ AsyncInterpolationMultiplier

CHAOS_API FRealSingle Chaos::AsyncInterpolationMultiplier = 2.f

◆ AsyncPhysicsBlockMode

int32 Chaos::AsyncPhysicsBlockMode = 0

◆ bCachePushDataAsyncInputs

bool Chaos::bCachePushDataAsyncInputs = true

◆ bCachePushDataDirtyProxies

bool Chaos::bCachePushDataDirtyProxies = true

◆ bCachePushDataSimCommands

bool Chaos::bCachePushDataSimCommands = true

◆ bChaos_Collision_AllowGlobalInitialPhi

bool Chaos::bChaos_Collision_AllowGlobalInitialPhi = true

◆ bChaos_Collision_ConvexTriMeshBackFaceCull

bool Chaos::bChaos_Collision_ConvexTriMeshBackFaceCull = true

◆ bChaos_Collision_ConvexTriMeshInsideCull

bool Chaos::bChaos_Collision_ConvexTriMeshInsideCull = true

◆ bChaos_Collision_ConvexTriMeshSortByDistance

bool Chaos::bChaos_Collision_ConvexTriMeshSortByDistance = false

◆ bChaos_Collision_ConvexTriMeshSortByPhi

bool Chaos::bChaos_Collision_ConvexTriMeshSortByPhi = false

◆ bChaos_Collision_EnableBoundsChecks

bool Chaos::bChaos_Collision_EnableBoundsChecks = true

◆ bChaos_Collision_EnableEdgePrune

bool Chaos::bChaos_Collision_EnableEdgePrune = true

◆ bChaos_Collision_EnableLargeMeshManifolds

bool Chaos::bChaos_Collision_EnableLargeMeshManifolds = 1

◆ bChaos_Collision_EnableMACDFallback

bool Chaos::bChaos_Collision_EnableMACDFallback = false

◆ bChaos_Collision_EnableMACDPreManifoldFix

bool Chaos::bChaos_Collision_EnableMACDPreManifoldFix = false

◆ bChaos_Collision_EnableManifoldGJKInject

bool Chaos::bChaos_Collision_EnableManifoldGJKInject = false

◆ bChaos_Collision_EnableManifoldGJKReplace

bool Chaos::bChaos_Collision_EnableManifoldGJKReplace = false

◆ bChaos_Collision_EnableMeshManifoldOptimizedLoop

bool Chaos::bChaos_Collision_EnableMeshManifoldOptimizedLoop = true

◆ bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh

bool Chaos::bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh = true

◆ bChaos_Collision_EnableOneWayInteraction

bool Chaos::bChaos_Collision_EnableOneWayInteraction = true

◆ bChaos_Collision_MeshManifoldSortByDistance

bool Chaos::bChaos_Collision_MeshManifoldSortByDistance = false

◆ bChaos_Collision_OneSidedHeightField

bool Chaos::bChaos_Collision_OneSidedHeightField = true

◆ bChaos_Collision_OneSidedTriangleMesh

bool Chaos::bChaos_Collision_OneSidedTriangleMesh = true

◆ bChaos_Collision_SimpleAssignContact

bool Chaos::bChaos_Collision_SimpleAssignContact = true

◆ bChaos_Collision_UseCapsuleTriMesh2

bool Chaos::bChaos_Collision_UseCapsuleTriMesh2 = true

◆ bChaos_Collision_UseConvexTriangleGJKSAT

bool Chaos::bChaos_Collision_UseConvexTriangleGJKSAT = true

◆ bChaos_Collision_UseGJK2

bool Chaos::bChaos_Collision_UseGJK2 = false

◆ bChaos_Manifold_EnableFrictionRestore

bool Chaos::bChaos_Manifold_EnableFrictionRestore = true

◆ bChaos_Manifold_EnableGjkWarmStart

bool Chaos::bChaos_Manifold_EnableGjkWarmStart = true

◆ bCheckForInterclusterEdgesOnRelease

bool Chaos::bCheckForInterclusterEdgesOnRelease = true

◆ bCollisionsEnableEdgeCollisionPruning

bool Chaos::bCollisionsEnableEdgeCollisionPruning = true

◆ bCollisionsEnableMeshCollisionPruning

bool Chaos::bCollisionsEnableMeshCollisionPruning = true

◆ bCollisionsEnableSubSurfaceCollisionPruning

bool Chaos::bCollisionsEnableSubSurfaceCollisionPruning = false

◆ bCVarRewindDataOptimization

bool Chaos::bCVarRewindDataOptimization = true

◆ bDisableCollisionParallelFor

CHAOS_API bool Chaos::bDisableCollisionParallelFor = false

◆ bDisableParticleParallelFor

CHAOS_API bool Chaos::bDisableParticleParallelFor = false

◆ bDisablePhysicsParallelFor

CHAOS_API bool Chaos::bDisablePhysicsParallelFor = false

◆ bExcludeFreeJointInertiaConditioning

bool Chaos::bExcludeFreeJointInertiaConditioning = true

◆ bFindValidInputHistory

CHAOS_API bool Chaos::bFindValidInputHistory = true

◆ bFindValidStateHistory

CHAOS_API bool Chaos::bFindValidStateHistory = true

◆ bOnlyUseInterclusterEdgesAttachedToMainParticles

bool Chaos::bOnlyUseInterclusterEdgesAttachedToMainParticles = true

◆ BoundingBoxMarginForConnectionGraphFiltering

float Chaos::BoundingBoxMarginForConnectionGraphFiltering = 0

◆ bPendingHierarchyDump

CHAOS_API bool Chaos::bPendingHierarchyDump = false

◆ BPTreeOfGrids

int32 Chaos::BPTreeOfGrids = 1

◆ bRealTypeCompatibleWithISPC

constexpr bool Chaos::bRealTypeCompatibleWithISPC = std::is_same_v<FReal, float> || std::is_same_v<FReal, double>
inlineconstexpr

ISPC optimization supports float and double, this allows classes that uses ISPC to branch to the right implementation without having to check the actual underlying type of FReal

◆ bResimAllowRewindToResimulatedFrames

CHAOS_API bool Chaos::bResimAllowRewindToResimulatedFrames = true

◆ bResimDelayDestroyObject

bool Chaos::bResimDelayDestroyObject = true

◆ bResimIncompleteHistory

CHAOS_API bool Chaos::bResimIncompleteHistory = true

◆ BroadPhaseConfig

CHAOS_API FBroadPhaseConfig Chaos::BroadPhaseConfig

◆ bUseContactSpeedForStrainThreshold

bool Chaos::bUseContactSpeedForStrainThreshold = true

◆ bUseParticleResimAsFollowerDuringTargetValidation

CHAOS_API bool Chaos::bUseParticleResimAsFollowerDuringTargetValidation = false

◆ Chaos_Bounds_MaxInflationScale

float Chaos::Chaos_Bounds_MaxInflationScale = 2.f

◆ Chaos_Collision_ConvexTriMeshMode

int32 Chaos::Chaos_Collision_ConvexTriMeshMode = 1

◆ Chaos_Collision_ConvexZeroMargin

FRealSingle Chaos::Chaos_Collision_ConvexZeroMargin = 0.0f

◆ Chaos_Collision_EdgePrunePlaneDistance

FRealSingle Chaos::Chaos_Collision_EdgePrunePlaneDistance = 3.0

◆ Chaos_Collision_EPAEpsilon

FRealSingle Chaos::Chaos_Collision_EPAEpsilon = 1.e-6f

◆ Chaos_Collision_GJKEpsilon

FRealSingle Chaos::Chaos_Collision_GJKEpsilon = 1.e-6f

◆ Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold

FRealSingle Chaos::Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold = 0.8f

◆ Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction

FRealSingle Chaos::Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction = 0.05f

◆ Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction

FRealSingle Chaos::Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction = 0.1f

◆ Chaos_Collision_Manifold_CapsuleRadialContactFraction

FRealSingle Chaos::Chaos_Collision_Manifold_CapsuleRadialContactFraction = 0.25f

◆ Chaos_Collision_Manifold_CullDistanceMarginMultiplier

FRealSingle Chaos::Chaos_Collision_Manifold_CullDistanceMarginMultiplier = 1.0f

◆ Chaos_Collision_Manifold_EdgeContactNormalThreshold

FRealSingle Chaos::Chaos_Collision_Manifold_EdgeContactNormalThreshold = 0.9f

◆ Chaos_Collision_Manifold_MinFaceSearchDistance

FRealSingle Chaos::Chaos_Collision_Manifold_MinFaceSearchDistance = 1.0f

◆ Chaos_Collision_Manifold_PlaneContactNormalEpsilon

FRealSingle Chaos::Chaos_Collision_Manifold_PlaneContactNormalEpsilon = 0.001f

◆ Chaos_Collision_Manifold_SphereCapsuleSizeThreshold

FRealSingle Chaos::Chaos_Collision_Manifold_SphereCapsuleSizeThreshold = 0.5f

◆ Chaos_Collision_Manifold_TriangleContactNormalThreshold

FRealSingle Chaos::Chaos_Collision_Manifold_TriangleContactNormalThreshold = 0.75f

◆ Chaos_Collision_Manifold_TriangleConvexMarginMultiplier

FRealSingle Chaos::Chaos_Collision_Manifold_TriangleConvexMarginMultiplier = 0.5f

◆ Chaos_Collision_MaxManifoldPoints

int32 Chaos::Chaos_Collision_MaxManifoldPoints = -1

◆ Chaos_Collision_MeshContactNormalRejectionThreshold

FRealSingle Chaos::Chaos_Collision_MeshContactNormalRejectionThreshold = 0.7f

◆ Chaos_Collision_MeshContactNormalThreshold

FRealSingle Chaos::Chaos_Collision_MeshContactNormalThreshold = 0.998f

◆ Chaos_Collision_MeshManifoldHashSize

int32 Chaos::Chaos_Collision_MeshManifoldHashSize = 256

◆ Chaos_Collision_OneWayStiffness

FRealSingle Chaos::Chaos_Collision_OneWayStiffness = 0.5f

◆ Chaos_Collision_Stiffness

FRealSingle Chaos::Chaos_Collision_Stiffness = -1.0f

◆ Chaos_Collision_TriMeshDistanceTolerance

FRealSingle Chaos::Chaos_Collision_TriMeshDistanceTolerance = 0.1f

◆ Chaos_Collision_TriMeshPhiToleranceScale

FRealSingle Chaos::Chaos_Collision_TriMeshPhiToleranceScale = 1.0f

◆ Chaos_GBFCharacteristicTimeRatio

FRealSingle Chaos::Chaos_GBFCharacteristicTimeRatio = 1.0f

◆ Chaos_Manifold_FrictionExactPositionTolerance

FRealSingle Chaos::Chaos_Manifold_FrictionExactPositionTolerance = 0.2f

◆ Chaos_Manifold_FrictionNearPositionTolerance

FRealSingle Chaos::Chaos_Manifold_FrictionNearPositionTolerance = 1.0f

◆ Chaos_Manifold_MatchNormalTolerance

FRealSingle Chaos::Chaos_Manifold_MatchNormalTolerance = 0.02f

◆ Chaos_Manifold_MatchPositionTolerance

FRealSingle Chaos::Chaos_Manifold_MatchPositionTolerance = 0.3f

◆ Chaos_Manifold_Tolerances

FCollisionTolerances Chaos::Chaos_Manifold_Tolerances

◆ Chaos_MinEvolution_ForceMaxConstraintIterations

bool Chaos::Chaos_MinEvolution_ForceMaxConstraintIterations = false

◆ ChaosVersionGUID

const TCHAR* const Chaos::ChaosVersionGUID = TEXT("5E07152B-EF71-47B8-B477-0CE28888D459")
inline

◆ CheckBox

int32 Chaos::CheckBox = 1

◆ ClosestIntersectionStepSizeMultiplier

FRealSingle Chaos::ClosestIntersectionStepSizeMultiplier = 0.5f

◆ ClusterDistanceThreshold

FRealSingle Chaos::ClusterDistanceThreshold = 100.f

◆ ClusteringParticleReleaseThrottlingMaxCount

int32 Chaos::ClusteringParticleReleaseThrottlingMaxCount = INDEX_NONE

◆ ClusteringParticleReleaseThrottlingMinCount

int32 Chaos::ClusteringParticleReleaseThrottlingMinCount = INDEX_NONE

◆ ClusterSnapDistance

FRealSingle Chaos::ClusterSnapDistance = 1.f

◆ CollisionAngularFrictionOverride

FRealSingle Chaos::CollisionAngularFrictionOverride = -1.0f

◆ CollisionBaseFrictionImpulseOverride

FRealSingle Chaos::CollisionBaseFrictionImpulseOverride = -1.0f

◆ CollisionCanAlwaysDisableContacts

int32 Chaos::CollisionCanAlwaysDisableContacts = 0

◆ CollisionCanNeverDisableContacts

int32 Chaos::CollisionCanNeverDisableContacts = 0

◆ CollisionFrictionOverride

FRealSingle Chaos::CollisionFrictionOverride = -1.0f

◆ CollisionParticlesBVHDepth

int32 CHAOS_API Chaos::CollisionParticlesBVHDepth = 4

◆ CollisionRestitutionOverride

FRealSingle Chaos::CollisionRestitutionOverride = -1.0f

◆ CollisionRestitutionThresholdOverride

FRealSingle Chaos::CollisionRestitutionThresholdOverride = -1.0f

◆ CollisionsAllowParticleTracking

bool Chaos::CollisionsAllowParticleTracking = true

◆ ComputeClusterCollisionStrains

int32 Chaos::ComputeClusterCollisionStrains = 1

◆ ConstraintBPBVHDepth

int32 Chaos::ConstraintBPBVHDepth = 2

◆ ConstraintChildIndex

constexpr int32 Chaos::ConstraintChildIndex = 0
constexpr

◆ ConstraintParentIndex

constexpr int32 Chaos::ConstraintParentIndex = 1
constexpr

◆ CPrio_FPhysicsTickTask

FAutoConsoleTaskPriority Chaos::CPrio_FPhysicsTickTask(TEXT("TaskGraph.TaskPriorities.PhysicsTickTask"), TEXT("Task and thread priotiry for Chaos physics tick"), ENamedThreads::HighThreadPriority, ENamedThreads::NormalTaskPriority, ENamedThreads::HighTaskPriority) ( TEXT("TaskGraph.TaskPriorities.PhysicsTickTask")  ,
TEXT("Task and thread priotiry for Chaos physics tick" ,
ENamedThreads::HighThreadPriority  ,
ENamedThreads::NormalTaskPriority  ,
ENamedThreads::HighTaskPriority   
)

◆ CVar_ShallowCopyClusterUnionGeometryOnUpdate

FAutoConsoleVariableRef Chaos::CVar_ShallowCopyClusterUnionGeometryOnUpdate(TEXT("p.ShallowCopyOnClusterUnionUpdate"), GShallowCopyClusterUnionGeometryOnUpdate, TEXT("If 1, shallow copy the root union geometry of a cluster union when its geometry updates, otherwise deep copy the geometry hierarchy")) ( TEXT("p.ShallowCopyOnClusterUnionUpdate")  ,
GShallowCopyClusterUnionGeometryOnUpdate  ,
TEXT("If 1, shallow copy the root union geometry of a cluster union when its geometry updates, otherwise deep copy the geometry hierarchy"  
)

◆ CVar_SyncKinematicOnGameThread

FAutoConsoleVariableRef Chaos::CVar_SyncKinematicOnGameThread(TEXT("P.Chaos.SyncKinematicOnGameThread"), SyncKinematicOnGameThread, TEXT( "If set to 1, kinematic bodies will always send their transforms back to the game thread, following the " "simulation step/results. If 0, then they will never do so, and kinematics will be updated immediately " "their kinematic target is set. Any other value (e.g. the default -1) means that the behavior is " "determined on a per-object basis with the UpdateKinematicFromSimulation flag in BodyInstance.")) ( TEXT("P.Chaos.SyncKinematicOnGameThread")  ,
SyncKinematicOnGameThread  ,
TEXT( "If set to 1, kinematic bodies will always send their transforms back to the game thread, following the " "simulation step/results. If 0, then they will never do so, and kinematics will be updated immediately " "their kinematic target is set. Any other value (e.g. the default -1) means that the behavior is " "determined on a per-object basis with the UpdateKinematicFromSimulation flag in BodyInstance.")   
)

◆ CVarAccelerationStructureCacheOverlappingLeaves

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureCacheOverlappingLeaves(TEXT("p.Chaos.AccelerationStructureCacheOverlappingLeaves"), GAccelerationStructureCacheOverlappingLeaves, TEXT("Set to 1: Cache the overlapping leaves for faster overlap query, any other value will disable the feature")) ( TEXT("p.Chaos.AccelerationStructureCacheOverlappingLeaves")  ,
GAccelerationStructureCacheOverlappingLeaves  ,
TEXT("Set to 1: Cache the overlapping leaves for faster overlap query, any other value will disable the feature"  
)

◆ CVarAccelerationStructureIsolateQueryOnlyObjects

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureIsolateQueryOnlyObjects(TEXT("p.Chaos.AccelerationStructureIsolateQueryOnlyObjects"), AccelerationStructureIsolateQueryOnlyObjects, TEXT("Set to 1: QueryOnly Objects will not be moved to acceleration structures on the Physics Thread")) ( TEXT("p.Chaos.AccelerationStructureIsolateQueryOnlyObjects")  ,
AccelerationStructureIsolateQueryOnlyObjects  ,
TEXT("Set to 1: QueryOnly Objects will not be moved to acceleration structures on the Physics Thread"  
)

◆ CVarAccelerationStructureSplitStaticAndDynamic

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureSplitStaticAndDynamic(TEXT("p.Chaos.AccelerationStructureSplitStaticDynamic"), AccelerationStructureSplitStaticAndDynamic, TEXT("Set to 1: Sort Dynamic and Static bodies into seperate acceleration structures, any other value will disable the feature")) ( TEXT("p.Chaos.AccelerationStructureSplitStaticDynamic")  ,
AccelerationStructureSplitStaticAndDynamic  ,
TEXT("Set to 1: Sort Dynamic and Static bodies into seperate acceleration structures, any other value will disable the feature"  
)

◆ CVarAccelerationStructureTimeSlicingMaxBytesCopy

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureTimeSlicingMaxBytesCopy(TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxBytesCopy"), AccelerationStructureTimeSlicingMaxBytesCopy, TEXT("The Maximum number of bytes to copy to the external acceleration structure during Copy Time Slicing")) ( TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxBytesCopy")  ,
AccelerationStructureTimeSlicingMaxBytesCopy  ,
TEXT("The Maximum number of bytes to copy to the external acceleration structure during Copy Time Slicing"  
)

◆ CVarAccelerationStructureTimeSlicingMaxQueueSizeBeforeForce

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureTimeSlicingMaxQueueSizeBeforeForce(TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce"), AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce, TEXT("If the update queue reaches this limit, time slicing will be disabled, and the acceleration structure will be built at once")) ( TEXT("p.Chaos.AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce")  ,
AccelerationStructureTimeSlicingMaxQueueSizeBeforeForce  ,
TEXT("If the update queue reaches this limit, time slicing will be disabled, and the acceleration structure will be built at once"  
)

◆ CVarAccelerationStructureUseDirtyTreeInsteadOfGrid

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureUseDirtyTreeInsteadOfGrid(TEXT("p.Chaos.AccelerationStructureUseDirtyTreeInsteadOfGrid"), AccelerationStructureUseDirtyTreeInsteadOfGrid, TEXT("Use a dynamic tree structure for dirty elements instead of a 2D grid")) ( TEXT("p.Chaos.AccelerationStructureUseDirtyTreeInsteadOfGrid")  ,
AccelerationStructureUseDirtyTreeInsteadOfGrid  ,
TEXT("Use a dynamic tree structure for dirty elements instead of a 2D grid"  
)

◆ CVarAccelerationStructureUseDynamicTree

FAutoConsoleVariableRef Chaos::CVarAccelerationStructureUseDynamicTree(TEXT("p.Chaos.AccelerationStructureUseDynamicTree"), AccelerationStructureUseDynamicTree, TEXT("Use a dynamic BVH tree structure for dynamic objects")) ( TEXT("p.Chaos.AccelerationStructureUseDynamicTree")  ,
AccelerationStructureUseDynamicTree  ,
TEXT("Use a dynamic BVH tree structure for dynamic objects"  
)

◆ CVarAngularEtherDragOverride

FAutoConsoleVariableRef Chaos::CVarAngularEtherDragOverride(TEXT("p.AngularEtherDragOverride"), AngularEtherDragOverride, TEXT("Set an override angular ether drag value. -1.f to disable")) ( TEXT("p.AngularEtherDragOverride")  ,
AngularEtherDragOverride  ,
TEXT("Set an override angular ether drag value. -1.f to disable"  
)

◆ CVarAsyncInterpolationMultiplier

FAutoConsoleVariableRef Chaos::CVarAsyncInterpolationMultiplier(TEXT("p.AsyncInterpolationMultiplier"), AsyncInterpolationMultiplier, TEXT("How many multiples of the fixed dt should we look behind for interpolation"), LambdaMul) ( TEXT("p.AsyncInterpolationMultiplier")  ,
AsyncInterpolationMultiplier  ,
TEXT("How many multiples of the fixed dt should we look behind for interpolation" ,
LambdaMul   
)

◆ CVarAsyncPhysicsBlockMode

FAutoConsoleVariableRef Chaos::CVarAsyncPhysicsBlockMode(TEXT("p.AsyncPhysicsBlockMode"), AsyncPhysicsBlockMode, TEXT("Setting to 0 blocks on any physics steps generated from past GT Frames, and blocks on none of the tasks from current frame." " 1 blocks on everything except the single most recent task (including tasks from current frame). 1 should gurantee we will always have a future output for interpolation from 2 frames in the past." " 2 doesn't block the game thread, physics steps could be eventually be dropped if taking too much time."), LambdaAsyncMode) ( TEXT("p.AsyncPhysicsBlockMode")  ,
AsyncPhysicsBlockMode  ,
TEXT("Setting to 0 blocks on any physics steps generated from past GT Frames, and blocks on none of the tasks from current frame." " 1 blocks on everything except the single most recent task (including tasks from current frame). 1 should gurantee we will always have a future output for interpolation from 2 frames in the past." " 2 doesn't block the game thread, physics steps could be eventually be dropped if taking too much time.")  ,
LambdaAsyncMode   
)

◆ CVarBoundingBoxMarginForConnectionGraphFiltering

FAutoConsoleVariableRef Chaos::CVarBoundingBoxMarginForConnectionGraphFiltering(TEXT("p.BoundingBoxMarginForConnectionGraphFiltering"), BoundingBoxMarginForConnectionGraphFiltering, TEXT("when UseBoundingBoxForConnectionGraphFiltering is on, the margin to use for the oevrlap test [def: 0]")) ( TEXT("p.BoundingBoxMarginForConnectionGraphFiltering")  ,
BoundingBoxMarginForConnectionGraphFiltering  ,
TEXT("when UseBoundingBoxForConnectionGraphFiltering is on, the margin to use for the oevrlap test [def: 0]")   
)

◆ CVarBoundsMaxInflatiuonScale

FAutoConsoleVariableRef Chaos::CVarBoundsMaxInflatiuonScale(TEXT("p.Chaos.MaxInflationScale"), Chaos_Bounds_MaxInflationScale, TEXT("A limit on the bounds used to detect collisions when CCD is disabled. The bounds limit is this scale multiplied by the object's max dimension")) ( TEXT("p.Chaos.MaxInflationScale")  ,
Chaos_Bounds_MaxInflationScale  ,
TEXT("A limit on the bounds used to detect collisions when CCD is disabled. The bounds limit is this scale multiplied by the object's max dimension"  
)

◆ CVarBPTreeOfGrids

FAutoConsoleVariableRef Chaos::CVarBPTreeOfGrids(TEXT("p.BPTreeOfGrids"), BPTreeOfGrids, TEXT("Whether to use a seperate tree of grids for bp")) ( TEXT("p.BPTreeOfGrids")  ,
BPTreeOfGrids  ,
TEXT("Whether to use a seperate tree of grids for bp"  
)

◆ CVarBreakMode

FAutoConsoleVariableRef Chaos::CVarBreakMode(TEXT("p.chaos.clustering.breakonlystrained"), GClusterBreakOnlyStrained, TEXT("If enabled we only process strained clusters for breaks, if disabled all clusters are traversed and checked")) ( TEXT("p.chaos.clustering.breakonlystrained")  ,
GClusterBreakOnlyStrained  ,
TEXT("If enabled we only process strained clusters for breaks, if disabled all clusters are traversed and checked"  
)

◆ CVarCachePushDataAsyncInputs

FAutoConsoleVariableRef Chaos::CVarCachePushDataAsyncInputs(TEXT("p.Resim.CachePushDataAsyncInputs"), bCachePushDataAsyncInputs, TEXT("Default = false. Set true to enable resim caching of async inputs in the push data from game thread to physics thread. This will make async inputs available again during resimulation.")) ( TEXT("p.Resim.CachePushDataAsyncInputs")  ,
bCachePushDataAsyncInputs  ,
TEXT("Default = false. Set true to enable resim caching of async inputs in the push data from game thread to physics thread. This will make async inputs available again during resimulation.")   
)

◆ CVarCachePushDataDirtyProxies

FAutoConsoleVariableRef Chaos::CVarCachePushDataDirtyProxies(TEXT("p.Resim.CachePushDataDirtyProxies"), bCachePushDataDirtyProxies, TEXT("Default = false. Set true to enable resim caching dirty proxies in the push data from game thread to physics thread. This will make physics proxy changes from GT play out during resimulation.")) ( TEXT("p.Resim.CachePushDataDirtyProxies")  ,
bCachePushDataDirtyProxies  ,
TEXT("Default = false. Set true to enable resim caching dirty proxies in the push data from game thread to physics thread. This will make physics proxy changes from GT play out during resimulation.")   
)

◆ CVarCachePushDataSimCommands

FAutoConsoleVariableRef Chaos::CVarCachePushDataSimCommands(TEXT("p.Resim.CachePushDataSimCommands"), bCachePushDataSimCommands, TEXT("Default = false. Set true to enable resim caching of sim commands in the push data from game thread to physics thread. This will make sim commands available again during resimulation.")) ( TEXT("p.Resim.CachePushDataSimCommands")  ,
bCachePushDataSimCommands  ,
TEXT("Default = false. Set true to enable resim caching of sim commands in the push data from game thread to physics thread. This will make sim commands available again during resimulation.")   
)

◆ CVarChaos_Collision_AllowGlobalInitialPhi

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_AllowGlobalInitialPhi(TEXT("p.Chaos.Collision.AllowGlobalInitialPhi"), bChaos_Collision_AllowGlobalInitialPhi, TEXT("")) ( TEXT("p.Chaos.Collision.AllowGlobalInitialPhi")  ,
bChaos_Collision_AllowGlobalInitialPhi  ,
TEXT("")   
)

◆ CVarChaos_Collision_ConvexTriMeshBackFaceCull

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_ConvexTriMeshBackFaceCull(TEXT("p.Chaos.Collision.ConvexTriMeshBackFaceCull"), bChaos_Collision_ConvexTriMeshBackFaceCull, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexTriMeshBackFaceCull")  ,
bChaos_Collision_ConvexTriMeshBackFaceCull  ,
TEXT("")   
)

◆ CVarChaos_Collision_ConvexTriMeshInsideCull

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_ConvexTriMeshInsideCull(TEXT("p.Chaos.Collision.ConvexTriMeshInsideCull"), bChaos_Collision_ConvexTriMeshInsideCull, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexTriMeshInsideCull")  ,
bChaos_Collision_ConvexTriMeshInsideCull  ,
TEXT("")   
)

◆ CVarChaos_Collision_ConvexTriMeshSortByDistance

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_ConvexTriMeshSortByDistance(TEXT("p.Chaos.Collision.ConvexTriMeshSortByDistance"), bChaos_Collision_ConvexTriMeshSortByDistance, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexTriMeshSortByDistance")  ,
bChaos_Collision_ConvexTriMeshSortByDistance  ,
TEXT("")   
)

◆ CVarChaos_Collision_ConvexTriMeshSortByPhi

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_ConvexTriMeshSortByPhi(TEXT("p.Chaos.Collision.ConvexTriMeshSortByPhi"), bChaos_Collision_ConvexTriMeshSortByPhi, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexTriMeshSortByPhi")  ,
bChaos_Collision_ConvexTriMeshSortByPhi  ,
TEXT("")   
)

◆ CVarChaos_Collision_ConvexZeroMargin

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_ConvexZeroMargin(TEXT("p.Chaos.Collision.ConvexZeroMargin"), Chaos_Collision_ConvexZeroMargin, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexZeroMargin")  ,
Chaos_Collision_ConvexZeroMargin  ,
TEXT("")   
)

◆ CVarChaos_Collision_EdgePrunePlaneDistance

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EdgePrunePlaneDistance(TEXT("p.Chaos.Collision.EdgePrunePlaneDistance"), Chaos_Collision_EdgePrunePlaneDistance, TEXT("")) ( TEXT("p.Chaos.Collision.EdgePrunePlaneDistance")  ,
Chaos_Collision_EdgePrunePlaneDistance  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableBoundsChecks

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableBoundsChecks(TEXT("p.Chaos.Collision.EnableBoundsChecks"), bChaos_Collision_EnableBoundsChecks, TEXT("")) ( TEXT("p.Chaos.Collision.EnableBoundsChecks")  ,
bChaos_Collision_EnableBoundsChecks  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableEdgePrune

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableEdgePrune(TEXT("p.Chaos.Collision.EnableEdgePrune"), bChaos_Collision_EnableEdgePrune, TEXT("")) ( TEXT("p.Chaos.Collision.EnableEdgePrune")  ,
bChaos_Collision_EnableEdgePrune  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableLargeMeshManifolds

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableLargeMeshManifolds(TEXT("p.Chaos.Collision.EnableLargeMeshManifolds"), bChaos_Collision_EnableLargeMeshManifolds, TEXT("Whether to allow large mesh manifolds for collisions against meshes (required for good behaviour)")) ( TEXT("p.Chaos.Collision.EnableLargeMeshManifolds")  ,
bChaos_Collision_EnableLargeMeshManifolds  ,
TEXT("Whether to allow large mesh manifolds for collisions against meshes (required for good behaviour)")   
)

◆ CVarChaos_Collision_EnableMACDFallback

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableMACDFallback(TEXT("p.Chaos.Collision.EnableMACDFallback"), bChaos_Collision_EnableMACDFallback, TEXT("")) ( TEXT("p.Chaos.Collision.EnableMACDFallback")  ,
bChaos_Collision_EnableMACDFallback  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableMACDPreManifoldFix

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableMACDPreManifoldFix(TEXT("p.Chaos.Collision.EnableMACDPreManifoldFix"), bChaos_Collision_EnableMACDPreManifoldFix, TEXT("")) ( TEXT("p.Chaos.Collision.EnableMACDPreManifoldFix")  ,
bChaos_Collision_EnableMACDPreManifoldFix  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableManifoldInject

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableManifoldInject(TEXT("p.Chaos.Collision.EnableManifoldGJKInject"), bChaos_Collision_EnableManifoldGJKInject, TEXT("")) ( TEXT("p.Chaos.Collision.EnableManifoldGJKInject")  ,
bChaos_Collision_EnableManifoldGJKInject  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableManifoldReplace

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableManifoldReplace(TEXT("p.Chaos.Collision.EnableManifoldGJKReplace"), bChaos_Collision_EnableManifoldGJKReplace, TEXT("")) ( TEXT("p.Chaos.Collision.EnableManifoldGJKReplace")  ,
bChaos_Collision_EnableManifoldGJKReplace  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableMeshManifoldOptimizedLoop

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableMeshManifoldOptimizedLoop(TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoop"), bChaos_Collision_EnableMeshManifoldOptimizedLoop, TEXT("")) ( TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoop")  ,
bChaos_Collision_EnableMeshManifoldOptimizedLoop  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh(TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoopTriMesh"), bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh, TEXT("")) ( TEXT("p.Chaos.Collision.EnableMeshManifoldOptimizedLoopTriMesh")  ,
bChaos_Collision_EnableMeshManifoldOptimizedLoop_TriMesh  ,
TEXT("")   
)

◆ CVarChaos_Collision_EnableOneWayInteraction

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EnableOneWayInteraction(TEXT("p.Chaos.Collision.EnableOneWayInteraction"), bChaos_Collision_EnableOneWayInteraction, TEXT("Whether the one-way interaction flag is respected in collision constraints")) ( TEXT("p.Chaos.Collision.EnableOneWayInteraction")  ,
bChaos_Collision_EnableOneWayInteraction  ,
TEXT("Whether the one-way interaction flag is respected in collision constraints"  
)

◆ CVarChaos_Collision_EPAEpsilon

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_EPAEpsilon(TEXT("p.Chaos.Collision.EPAEpsilon"), Chaos_Collision_EPAEpsilon, TEXT("")) ( TEXT("p.Chaos.Collision.EPAEpsilon")  ,
Chaos_Collision_EPAEpsilon  ,
TEXT("")   
)

◆ CVarChaos_Collision_GJKEpsilon

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_GJKEpsilon(TEXT("p.Chaos.Collision.GJKEpsilon"), Chaos_Collision_GJKEpsilon, TEXT("")) ( TEXT("p.Chaos.Collision.GJKEpsilon")  ,
Chaos_Collision_GJKEpsilon  ,
TEXT("")   
)

◆ CVarChaos_Collision_LargeMeshManifoldSortByDistance

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_LargeMeshManifoldSortByDistance(TEXT("p.Chaos.Collision.SortMeshManifoldByDistance"), bChaos_Collision_MeshManifoldSortByDistance, TEXT("Sort large mesh manifold points by |RxN| for improved solver stability (less rotation in first iteration)")) ( TEXT("p.Chaos.Collision.SortMeshManifoldByDistance")  ,
bChaos_Collision_MeshManifoldSortByDistance  ,
TEXT("Sort large mesh manifold points by |RxN| for improved solver stability (less rotation in first iteration)")   
)

◆ CVarChaos_Collision_MaxManifoldPoints

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_MaxManifoldPoints(TEXT("p.Chaos.Collision.MaxManifoldPoints"), Chaos_Collision_MaxManifoldPoints, TEXT("")) ( TEXT("p.Chaos.Collision.MaxManifoldPoints")  ,
Chaos_Collision_MaxManifoldPoints  ,
TEXT("")   
)

◆ CVarChaos_Collision_MeshContactNormalRejectionThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_MeshContactNormalRejectionThreshold(TEXT("p.Chaos.Collision.MeshContactNormalRejectionThreshold"), Chaos_Collision_MeshContactNormalRejectionThreshold, TEXT("Don't correct edge and vertex normals if they are beyond the valid range by more than this")) ( TEXT("p.Chaos.Collision.MeshContactNormalRejectionThreshold")  ,
Chaos_Collision_MeshContactNormalRejectionThreshold  ,
TEXT("Don't correct edge and vertex normals if they are beyond the valid range by more than this"  
)

◆ CVarChaos_Collision_MeshContactNormalThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_MeshContactNormalThreshold(TEXT("p.Chaos.Collision.MeshContactNormalThreshold"), Chaos_Collision_MeshContactNormalThreshold, TEXT("Treat contact with a dot product between the normal and the triangle face greater than this as face collisions")) ( TEXT("p.Chaos.Collision.MeshContactNormalThreshold")  ,
Chaos_Collision_MeshContactNormalThreshold  ,
TEXT("Treat contact with a dot product between the normal and the triangle face greater than this as face collisions"  
)

◆ CVarChaos_Collision_MeshManifoldHashSize

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_MeshManifoldHashSize(TEXT("p.Chaos.Collision.MeshManifoldHashSize"), Chaos_Collision_MeshManifoldHashSize, TEXT("Hash table size to use in vertex and edge maps in convex-mesh collision")) ( TEXT("p.Chaos.Collision.MeshManifoldHashSize")  ,
Chaos_Collision_MeshManifoldHashSize  ,
TEXT("Hash table size to use in vertex and edge maps in convex-mesh collision"  
)

◆ CVarChaos_Collision_OneSidedHeightfield

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_OneSidedHeightfield(TEXT("p.Chaos.Collision.OneSidedHeightField"), bChaos_Collision_OneSidedHeightField, TEXT("")) ( TEXT("p.Chaos.Collision.OneSidedHeightField")  ,
bChaos_Collision_OneSidedHeightField  ,
TEXT("")   
)

◆ CVarChaos_Collision_OneSidedTriangleMesh

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_OneSidedTriangleMesh(TEXT("p.Chaos.Collision.OneSidedTriangleMesh"), bChaos_Collision_OneSidedTriangleMesh, TEXT("")) ( TEXT("p.Chaos.Collision.OneSidedTriangleMesh")  ,
bChaos_Collision_OneSidedTriangleMesh  ,
TEXT("")   
)

◆ CVarChaos_Collision_OneWayStiffness

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_OneWayStiffness(TEXT("p.Chaos.Collision.OneWayStiffness"), Chaos_Collision_OneWayStiffness, TEXT("Collision solver stiffnes for one-way interactions")) ( TEXT("p.Chaos.Collision.OneWayStiffness")  ,
Chaos_Collision_OneWayStiffness  ,
TEXT("Collision solver stiffnes for one-way interactions"  
)

◆ CVarChaos_Collision_SimpleAssignContacti

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_SimpleAssignContacti(TEXT("p.Chaos.Collision.SimpleAssignContact"), bChaos_Collision_SimpleAssignContact, TEXT("Try to assign contact without worrying if the contact has been already assigned. Improve performance and ease to sleep when enabled.")) ( TEXT("p.Chaos.Collision.SimpleAssignContact")  ,
bChaos_Collision_SimpleAssignContact  ,
TEXT("Try to assign contact without worrying if the contact has been already assigned. Improve performance and ease to sleep when enabled.")   
)

◆ CVarChaos_Collision_Stiffness

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_Stiffness(TEXT("p.Chaos.Collision.Stiffness"), Chaos_Collision_Stiffness, TEXT("Override the collision solver stiffness (if >= 0)")) ( TEXT("p.Chaos.Collision.Stiffness")  ,
Chaos_Collision_Stiffness  ,
TEXT("Override the collision solver stiffness (if >= 0)")   
)

◆ CVarChaos_Collision_TriMeshDistanceolerance

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_TriMeshDistanceolerance(TEXT("p.Chaos.Collision.TriangeMeshDistanceTolerance"), Chaos_Collision_TriMeshDistanceTolerance, TEXT("")) ( TEXT("p.Chaos.Collision.TriangeMeshDistanceTolerance")  ,
Chaos_Collision_TriMeshDistanceTolerance  ,
TEXT("")   
)

◆ CVarChaos_Collision_TriMeshPhiToleranceScale

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_TriMeshPhiToleranceScale(TEXT("p.Chaos.Collision.TriangeMeshPhiToleranceScale"), Chaos_Collision_TriMeshPhiToleranceScale, TEXT("")) ( TEXT("p.Chaos.Collision.TriangeMeshPhiToleranceScale")  ,
Chaos_Collision_TriMeshPhiToleranceScale  ,
TEXT("")   
)

◆ CVarChaos_Collision_UseCapsuleTriMesh2

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_UseCapsuleTriMesh2(TEXT("p.Chaos.Collision.UseCapsuleTriMesh2"), bChaos_Collision_UseCapsuleTriMesh2, TEXT("")) ( TEXT("p.Chaos.Collision.UseCapsuleTriMesh2")  ,
bChaos_Collision_UseCapsuleTriMesh2  ,
TEXT("")   
)

◆ CVarChaos_Collision_UseConvexTriangleSAT

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_UseConvexTriangleSAT(TEXT("p.Chaos.Collision.UseConvexTriangleGJKSAT"), bChaos_Collision_UseConvexTriangleGJKSAT, TEXT("")) ( TEXT("p.Chaos.Collision.UseConvexTriangleGJKSAT")  ,
bChaos_Collision_UseConvexTriangleGJKSAT  ,
TEXT("")   
)

◆ CVarChaos_Collision_UseConvexTriMesh2

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_UseConvexTriMesh2(TEXT("p.Chaos.Collision.ConvexTriMeshMode"), Chaos_Collision_ConvexTriMeshMode, TEXT("")) ( TEXT("p.Chaos.Collision.ConvexTriMeshMode")  ,
Chaos_Collision_ConvexTriMeshMode  ,
TEXT("")   
)

◆ CVarChaos_Collision_UseGJK2

FAutoConsoleVariableRef Chaos::CVarChaos_Collision_UseGJK2(TEXT("p.Chaos.Collision.UseGJK2"), bChaos_Collision_UseGJK2, TEXT("")) ( TEXT("p.Chaos.Collision.UseGJK2")  ,
bChaos_Collision_UseGJK2  ,
TEXT("")   
)

◆ CVarChaos_GBFCharacteristicTimeRatio

FAutoConsoleVariableRef Chaos::CVarChaos_GBFCharacteristicTimeRatio(TEXT("p.Chaos.Collision.GBFCharacteristicTimeRatio"), Chaos_GBFCharacteristicTimeRatio, TEXT("The ratio between characteristic time and Dt")) ( TEXT("p.Chaos.Collision.GBFCharacteristicTimeRatio")  ,
Chaos_GBFCharacteristicTimeRatio  ,
TEXT("The ratio between characteristic time and Dt"  
)

◆ CVarChaos_Manifold_CapsuleAxisAlignedThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_CapsuleAxisAlignedThreshold(TEXT("p.Chaos.Collision.Manifold.CapsuleAxisAlignedThreshold"), Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.CapsuleAxisAlignedThreshold")  ,
Chaos_Collision_Manifold_CapsuleAxisAlignedThreshold  ,
TEXT("")   
)

◆ CVarChaos_Manifold_CapsuleDeepPenetrationFraction

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_CapsuleDeepPenetrationFraction(TEXT("p.Chaos.Collision.Manifold.CapsuleDeepPenetrationFraction"), Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.CapsuleDeepPenetrationFraction")  ,
Chaos_Collision_Manifold_CapsuleDeepPenetrationFraction  ,
TEXT("")   
)

◆ CVarChaos_Manifold_CapsuleMinContactDistanceFraction

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_CapsuleMinContactDistanceFraction(TEXT("p.Chaos.Collision.Manifold.CapsuleMinContactDistanceFraction"), Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.CapsuleMinContactDistanceFraction")  ,
Chaos_Collision_Manifold_CapsuleMinContactDistanceFraction  ,
TEXT("")   
)

◆ CVarChaos_Manifold_CapsuleRadialContactFraction

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_CapsuleRadialContactFraction(TEXT("p.Chaos.Collision.Manifold.CapsuleRadialContactFraction"), Chaos_Collision_Manifold_CapsuleRadialContactFraction, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.CapsuleRadialContactFraction")  ,
Chaos_Collision_Manifold_CapsuleRadialContactFraction  ,
TEXT("")   
)

◆ CVarChaos_Manifold_EdgeContactNormalThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_EdgeContactNormalThreshold(TEXT("p.Chaos.Collision.Manifold.EdgeNormalThreshold"), Chaos_Collision_Manifold_EdgeContactNormalThreshold, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.EdgeNormalThreshold")  ,
Chaos_Collision_Manifold_EdgeContactNormalThreshold  ,
TEXT("")   
)

◆ CVarChaos_Manifold_EnableFrictionRestore

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_EnableFrictionRestore(TEXT("p.Chaos.Collision.Manifold.EnableFrictionRestore"), bChaos_Manifold_EnableFrictionRestore, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.EnableFrictionRestore")  ,
bChaos_Manifold_EnableFrictionRestore  ,
TEXT("")   
)

◆ CVarChaos_Manifold_EnableGjkWarmStart

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_EnableGjkWarmStart(TEXT("p.Chaos.Collision.Manifold.EnableGjkWarmStart"), bChaos_Manifold_EnableGjkWarmStart, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.EnableGjkWarmStart")  ,
bChaos_Manifold_EnableGjkWarmStart  ,
TEXT("")   
)

◆ CVarChaos_Manifold_FrictionExactPositionTolerance

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_FrictionExactPositionTolerance(TEXT("p.Chaos.Collision.Manifold.FrictionExactPositionTolerance"), Chaos_Manifold_FrictionExactPositionTolerance, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.FrictionExactPositionTolerance")  ,
Chaos_Manifold_FrictionExactPositionTolerance  ,
TEXT("")   
)

◆ CVarChaos_Manifold_FrictionNearPositionTolerance

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_FrictionNearPositionTolerance(TEXT("p.Chaos.Collision.Manifold.FrictionNearPositionTolerance"), Chaos_Manifold_FrictionNearPositionTolerance, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.FrictionNearPositionTolerance")  ,
Chaos_Manifold_FrictionNearPositionTolerance  ,
TEXT("")   
)

◆ CVarChaos_Manifold_MatchNormalTolerance

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_MatchNormalTolerance(TEXT("p.Chaos.Collision.Manifold.MatchNormalTolerance"), Chaos_Manifold_MatchNormalTolerance, TEXT("A tolerance on the normal dot product used to determine if two contact points are the same")) ( TEXT("p.Chaos.Collision.Manifold.MatchNormalTolerance")  ,
Chaos_Manifold_MatchNormalTolerance  ,
TEXT("A tolerance on the normal dot product used to determine if two contact points are the same"  
)

◆ CVarChaos_Manifold_MatchPositionTolerance

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_MatchPositionTolerance(TEXT("p.Chaos.Collision.Manifold.MatchPositionTolerance"), Chaos_Manifold_MatchPositionTolerance, TEXT("A tolerance as a fraction of object size used to determine if two contact points are the same")) ( TEXT("p.Chaos.Collision.Manifold.MatchPositionTolerance")  ,
Chaos_Manifold_MatchPositionTolerance  ,
TEXT("A tolerance as a fraction of object size used to determine if two contact points are the same"  
)

◆ CVarChaos_Manifold_PlaneContactNormalEpsilon

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_PlaneContactNormalEpsilon(TEXT("p.Chaos.Collision.Manifold.PlaneContactNormalEpsilon"), Chaos_Collision_Manifold_PlaneContactNormalEpsilon, TEXT("Normal tolerance used to distinguish face contacts from edge-edge contacts")) ( TEXT("p.Chaos.Collision.Manifold.PlaneContactNormalEpsilon")  ,
Chaos_Collision_Manifold_PlaneContactNormalEpsilon  ,
TEXT("Normal tolerance used to distinguish face contacts from edge-edge contacts"  
)

◆ CVarChaos_Manifold_SphereCapsuleSizeThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_SphereCapsuleSizeThreshold(TEXT("p.Chaos.Collision.Manifold.SphereCapsuleSizeThreshold"), Chaos_Collision_Manifold_SphereCapsuleSizeThreshold, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.SphereCapsuleSizeThreshold")  ,
Chaos_Collision_Manifold_SphereCapsuleSizeThreshold  ,
TEXT("")   
)

◆ CVarChaos_Manifold_TriangleContactNormalThreshold

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_TriangleContactNormalThreshold(TEXT("p.Chaos.Collision.Manifold.TriangleNormalThreshold"), Chaos_Collision_Manifold_TriangleContactNormalThreshold, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.TriangleNormalThreshold")  ,
Chaos_Collision_Manifold_TriangleContactNormalThreshold  ,
TEXT("")   
)

◆ CVarChaos_Manifold_TriangleConvexMarginMultipler

FAutoConsoleVariableRef Chaos::CVarChaos_Manifold_TriangleConvexMarginMultipler(TEXT("p.Chaos.Collision.Manifold.TriangleConvexMarginMultiplier"), Chaos_Collision_Manifold_TriangleConvexMarginMultiplier, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.TriangleConvexMarginMultiplier")  ,
Chaos_Collision_Manifold_TriangleConvexMarginMultiplier  ,
TEXT("")   
)

◆ CVarChaosCollisioConvexManifoldCullDistanceMarginMultiplier

FAutoConsoleVariableRef Chaos::CVarChaosCollisioConvexManifoldCullDistanceMarginMultiplier(TEXT("p.Chaos.Collision.Manifold.CullDistanceMarginMultiplier"), Chaos_Collision_Manifold_CullDistanceMarginMultiplier, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.CullDistanceMarginMultiplier")  ,
Chaos_Collision_Manifold_CullDistanceMarginMultiplier  ,
TEXT("")   
)

◆ CVarChaosCollisioConvexManifoldMinFaceSearchDistance

FAutoConsoleVariableRef Chaos::CVarChaosCollisioConvexManifoldMinFaceSearchDistance(TEXT("p.Chaos.Collision.Manifold.MinFaceSearchDistance"), Chaos_Collision_Manifold_MinFaceSearchDistance, TEXT("")) ( TEXT("p.Chaos.Collision.Manifold.MinFaceSearchDistance")  ,
Chaos_Collision_Manifold_MinFaceSearchDistance  ,
TEXT("")   
)

◆ CVarChaosExcludeFreeJointInertiaConditioning

FAutoConsoleVariableRef Chaos::CVarChaosExcludeFreeJointInertiaConditioning(TEXT("p.Chaos.ExcludeFreeJointForInertiaConditioning"), bExcludeFreeJointInertiaConditioning, TEXT("Exclude the effects from free joints when computing inertia conditioning")) ( TEXT("p.Chaos.ExcludeFreeJointForInertiaConditioning")  ,
bExcludeFreeJointInertiaConditioning  ,
TEXT("Exclude the effects from free joints when computing inertia conditioning"  
)

◆ CVarChaosLinearSystemPreconditioner

FAutoConsoleVariableRef Chaos::CVarChaosLinearSystemPreconditioner(TEXT("p.Chaos.LinearSystem.Preconditioner"), PreconditionerType, TEXT("0 = Diagonal, 1 = IncompleteCholesky")) ( TEXT("p.Chaos.LinearSystem.Preconditioner")  ,
PreconditionerType  ,
TEXT("0 = Diagonal, 1 = IncompleteCholesky"  
)

◆ CVarChaosMinEvolutionForceMaxConstraintIterations

FAutoConsoleVariableRef Chaos::CVarChaosMinEvolutionForceMaxConstraintIterations(TEXT("p.Chaos.MinEvolution.ForceMaxConstraintIterations"), Chaos_MinEvolution_ForceMaxConstraintIterations, TEXT("Whether to force constraints to always use the worst-case maximum number of iterations")) ( TEXT("p.Chaos.MinEvolution.ForceMaxConstraintIterations")  ,
Chaos_MinEvolution_ForceMaxConstraintIterations  ,
TEXT("Whether to force constraints to always use the worst-case maximum number of iterations"  
)

◆ CVarChaosWeightedLatticePhiAndNormalBatchSize

FAutoConsoleVariableRef Chaos::CVarChaosWeightedLatticePhiAndNormalBatchSize(TEXT("p.Chaos.WeightedLattice.PhiAndNormal.ParallelBatchSize"), Chaos_WeightedLattice_PhiAndNormalBatchSize, TEXT("Parallel batch size PhiAndNormal queries")) ( TEXT("p.Chaos.WeightedLattice.PhiAndNormal.ParallelBatchSize")  ,
Chaos_WeightedLattice_PhiAndNormalBatchSize  ,
TEXT("Parallel batch size PhiAndNormal queries"  
)

◆ CVarCheckBox

FAutoConsoleVariableRef Chaos::CVarCheckBox(TEXT("p.checkbox"), CheckBox, TEXT("")) ( TEXT("p.checkbox")  ,
CheckBox  ,
TEXT("")   
)

◆ CVarCheckForInterclusterEdgesOnRelease

FAutoConsoleVariableRef Chaos::CVarCheckForInterclusterEdgesOnRelease(TEXT("p.Chaos.CheckForInterclusterEdgesOnRelease"), bCheckForInterclusterEdgesOnRelease, TEXT("Whether to check for intercluster edges when removing a child from its parent cluster so that we can add the particle back into a cluster union.")) ( TEXT("p.Chaos.CheckForInterclusterEdgesOnRelease")  ,
bCheckForInterclusterEdgesOnRelease  ,
TEXT("Whether to check for intercluster edges when removing a child from its parent cluster so that we can add the particle back into a cluster union.")   
)

◆ CVarClosestIntersectionStepSizeMultiplier

FAutoConsoleVariableRef Chaos::CVarClosestIntersectionStepSizeMultiplier(TEXT("p.ClosestIntersectionStepSizeMultiplier"), ClosestIntersectionStepSizeMultiplier, TEXT("When raycasting we use this multiplier to substep the travel distance along the ray. Smaller number gives better accuracy at higher cost")) ( TEXT("p.ClosestIntersectionStepSizeMultiplier")  ,
ClosestIntersectionStepSizeMultiplier  ,
TEXT("When raycasting we use this multiplier to substep the travel distance along the ray. Smaller number gives better accuracy at higher cost"  
)

◆ CVarClusterDistance

FAutoConsoleVariableRef Chaos::CVarClusterDistance(TEXT("p.ClusterDistanceThreshold"), ClusterDistanceThreshold, TEXT("How close a cluster child must be to a contact to break off")) ( TEXT("p.ClusterDistanceThreshold")  ,
ClusterDistanceThreshold  ,
TEXT("How close a cluster child must be to a contact to break off"  
)

◆ CVarClusteringParticleReleaseThrottlingMaxCount

FAutoConsoleVariableRef Chaos::CVarClusteringParticleReleaseThrottlingMaxCount(TEXT("p.Clustering.ParticleReleaseThrottlingMaxCount"), ClusteringParticleReleaseThrottlingMaxCount, TEXT("Maximum number of active geometry collection to reach before all released clustering disable all released particle instantly")) ( TEXT("p.Clustering.ParticleReleaseThrottlingMaxCount")  ,
ClusteringParticleReleaseThrottlingMaxCount  ,
TEXT("Maximum number of active geometry collection to reach before all released clustering disable all released particle instantly"  
)

◆ CVarClusteringParticleReleaseThrottlingMinCount

FAutoConsoleVariableRef Chaos::CVarClusteringParticleReleaseThrottlingMinCount(TEXT("p.Clustering.ParticleReleaseThrottlingMinCount"), ClusteringParticleReleaseThrottlingMinCount, TEXT("Minimum number of active geometry collection to reach before clustering start to disable a percentage of the released particle per cluster")) ( TEXT("p.Clustering.ParticleReleaseThrottlingMinCount")  ,
ClusteringParticleReleaseThrottlingMinCount  ,
TEXT("Minimum number of active geometry collection to reach before clustering start to disable a percentage of the released particle per cluster"  
)

◆ CVarClusterSnapDistance2

FAutoConsoleVariableRef Chaos::CVarClusterSnapDistance2(TEXT("p.ClusterSnapDistance"), ClusterSnapDistance, TEXT("")) ( TEXT("p.ClusterSnapDistance")  ,
ClusterSnapDistance  ,
TEXT("")   
)

◆ CVarCollisionAngularFrictionOverride

FAutoConsoleVariableRef Chaos::CVarCollisionAngularFrictionOverride(TEXT("p.CollisionAngularFriction"), CollisionAngularFrictionOverride, TEXT("Collision angular friction for all contacts if >= 0")) ( TEXT("p.CollisionAngularFriction")  ,
CollisionAngularFrictionOverride  ,
TEXT("Collision angular friction for all contacts if >= 0")   
)

◆ CVarCollisionBaseFrictionImpulseOverride

FAutoConsoleVariableRef Chaos::CVarCollisionBaseFrictionImpulseOverride(TEXT("p.CollisionBaseFrictionImpulse"), CollisionBaseFrictionImpulseOverride, TEXT("Collision base friction position impulse for all contacts if >= 0")) ( TEXT("p.CollisionBaseFrictionImpulse")  ,
CollisionBaseFrictionImpulseOverride  ,
TEXT("Collision base friction position impulse for all contacts if >= 0")   
)

◆ CVarCollisionCanAlwaysDisableContacts

FAutoConsoleVariableRef Chaos::CVarCollisionCanAlwaysDisableContacts(TEXT("p.CollisionCanAlwaysDisableContacts"), CollisionCanAlwaysDisableContacts, TEXT("Collision culling will always be able to permanently disable contacts")) ( TEXT("p.CollisionCanAlwaysDisableContacts")  ,
CollisionCanAlwaysDisableContacts  ,
TEXT("Collision culling will always be able to permanently disable contacts"  
)

◆ CVarCollisionCanNeverDisableContacts

FAutoConsoleVariableRef Chaos::CVarCollisionCanNeverDisableContacts(TEXT("p.CollisionCanNeverDisableContacts"), CollisionCanNeverDisableContacts, TEXT("Collision culling will never be able to permanently disable contacts")) ( TEXT("p.CollisionCanNeverDisableContacts")  ,
CollisionCanNeverDisableContacts  ,
TEXT("Collision culling will never be able to permanently disable contacts"  
)

◆ CVarCollisionFrictionOverride

FAutoConsoleVariableRef Chaos::CVarCollisionFrictionOverride(TEXT("p.CollisionFriction"), CollisionFrictionOverride, TEXT("Collision friction for all contacts if >= 0")) ( TEXT("p.CollisionFriction")  ,
CollisionFrictionOverride  ,
TEXT("Collision friction for all contacts if >= 0")   
)

◆ CVarCollisionParticlesBVHDepth

FAutoConsoleVariableRef Chaos::CVarCollisionParticlesBVHDepth(TEXT("p.CollisionParticlesBVHDepth"), CollisionParticlesBVHDepth, TEXT("The maximum depth for collision particles bvh")) ( TEXT("p.CollisionParticlesBVHDepth")  ,
CollisionParticlesBVHDepth  ,
TEXT("The maximum depth for collision particles bvh"  
)

◆ CVarCollisionRestitutionOverride

FAutoConsoleVariableRef Chaos::CVarCollisionRestitutionOverride(TEXT("p.CollisionRestitution"), CollisionRestitutionOverride, TEXT("Collision restitution for all contacts if >= 0")) ( TEXT("p.CollisionRestitution")  ,
CollisionRestitutionOverride  ,
TEXT("Collision restitution for all contacts if >= 0")   
)

◆ CVarCollisionsAllowParticleTracking

FAutoConsoleVariableRef Chaos::CVarCollisionsAllowParticleTracking(TEXT("p.Chaos.Collision.AllowParticleTracking"), CollisionsAllowParticleTracking, TEXT("Allow particles to track their collisions constraints when their DoBufferCollisions flag is enable [def:true]")) ( TEXT("p.Chaos.Collision.AllowParticleTracking")  ,
CollisionsAllowParticleTracking  ,
TEXT("Allow particles to track their collisions constraints when their DoBufferCollisions flag is enable [def:true]")   
)

◆ CVarCollisionsEnableEdgeCollisionPruning

FAutoConsoleVariableRef Chaos::CVarCollisionsEnableEdgeCollisionPruning(TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT("")) ( TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning")  ,
bCollisionsEnableEdgeCollisionPruning  ,
TEXT("")   
)

◆ CVarCollisionsEnableMeshCollisionPruning

FAutoConsoleVariableRef Chaos::CVarCollisionsEnableMeshCollisionPruning(TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT("")) ( TEXT("p.Chaos.Collision.EnableMeshCollisionPruning")  ,
bCollisionsEnableMeshCollisionPruning  ,
TEXT("")   
)

◆ CVarCollisionsEnableSubSurfaceCollisionPruning

FAutoConsoleVariableRef Chaos::CVarCollisionsEnableSubSurfaceCollisionPruning(TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT("")) ( TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning")  ,
bCollisionsEnableSubSurfaceCollisionPruning  ,
TEXT("")   
)

◆ CVarComputeClusterCollisionStrains

FAutoConsoleVariableRef Chaos::CVarComputeClusterCollisionStrains(TEXT("p.ComputeClusterCollisionStrains"), ComputeClusterCollisionStrains, TEXT("Whether to use collision constraints when processing clustering.")) ( TEXT("p.ComputeClusterCollisionStrains")  ,
ComputeClusterCollisionStrains  ,
TEXT("Whether to use collision constraints when processing clustering.")   
)

◆ CVarConstraintBPBVHDepth

FAutoConsoleVariableRef Chaos::CVarConstraintBPBVHDepth(TEXT("p.ConstraintBPBVHDepth"), ConstraintBPBVHDepth, TEXT("The maximum depth for constraint bvh")) ( TEXT("p.ConstraintBPBVHDepth")  ,
ConstraintBPBVHDepth  ,
TEXT("The maximum depth for constraint bvh"  
)

◆ CVarConvexGeometryCheckEnable

FAutoConsoleVariableRef Chaos::CVarConvexGeometryCheckEnable(TEXT("p.Chaos.ConvexGeometryCheckEnable"), FConvexBuilder::PerformGeometryCheck, TEXT("Perform convex geometry complexity check for Chaos physics.")) ( TEXT("p.Chaos.ConvexGeometryCheckEnable")  ,
FConvexBuilder::PerformGeometryCheck  ,
TEXT("Perform convex geometry complexity check for Chaos physics.")   
)

◆ CVarConvexGeometrySimplifyEnable

FAutoConsoleVariableRef Chaos::CVarConvexGeometrySimplifyEnable(TEXT("p.Chaos.PerformGeometryReduction"), FConvexBuilder::PerformGeometryReduction, TEXT("Perform convex geometry simplification to increase performance in Chaos physics.")) ( TEXT("p.Chaos.PerformGeometryReduction")  ,
FConvexBuilder::PerformGeometryReduction  ,
TEXT("Perform convex geometry simplification to increase performance in Chaos physics.")   
)

◆ CVarConvexParticlesWarningThreshold

FAutoConsoleVariableRef Chaos::CVarConvexParticlesWarningThreshold(TEXT("p.Chaos.ConvexParticlesWarningThreshold"), FConvexBuilder::VerticesThreshold, TEXT("Threshold beyond which we warn about collision geometry complexity.")) ( TEXT("p.Chaos.ConvexParticlesWarningThreshold")  ,
FConvexBuilder::VerticesThreshold  ,
TEXT("Threshold beyond which we warn about collision geometry complexity.")   
)

◆ CVarDeactivateClusterChildren

FAutoConsoleVariableRef Chaos::CVarDeactivateClusterChildren(TEXT("p.DeactivateClusterChildren"), DeactivateClusterChildren, TEXT("If children should be decativated when broken and put into another cluster.")) ( TEXT("p.DeactivateClusterChildren")  ,
DeactivateClusterChildren  ,
TEXT("If children should be decativated when broken and put into another cluster.")   
)

◆ CVarDebugDrawProbeDetection

FAutoConsoleVariableRef Chaos::CVarDebugDrawProbeDetection(TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection.")) ( TEXT("p.Chaos.Collision.DebugDrawProbeDetection")  ,
DebugDrawProbeDetection  ,
TEXT("Draw probe constraint detection.")   
)

◆ CVarDefaultCollisionFriction

FAutoConsoleVariableRef Chaos::CVarDefaultCollisionFriction(TEXT("p.DefaultCollisionFriction"), DefaultCollisionFriction, TEXT("Collision friction default value if no materials are found.")) ( TEXT("p.DefaultCollisionFriction")  ,
DefaultCollisionFriction  ,
TEXT("Collision friction default value if no materials are found.")   
)

◆ CVarDefaultCollisionRestitution

FAutoConsoleVariableRef Chaos::CVarDefaultCollisionRestitution(TEXT("p.DefaultCollisionRestitution"), DefaultCollisionRestitution, TEXT("Collision restitution default value if no materials are found.")) ( TEXT("p.DefaultCollisionRestitution")  ,
DefaultCollisionRestitution  ,
TEXT("Collision restitution default value if no materials are found.")   
)

◆ CVarDefaultCollisionRestitutionThreshold

FAutoConsoleVariableRef Chaos::CVarDefaultCollisionRestitutionThreshold(TEXT("p.CollisionRestitutionThreshold"), CollisionRestitutionThresholdOverride, TEXT("Collision restitution threshold override if >= 0 (units of acceleration)")) ( TEXT("p.CollisionRestitutionThreshold")  ,
CollisionRestitutionThresholdOverride  ,
TEXT("Collision restitution threshold override if >= 0 (units of acceleration)")   
)

◆ CVarDisableCollisionParallelFor

FAutoConsoleVariableRef Chaos::CVarDisableCollisionParallelFor(TEXT("p.Chaos.DisableCollisionParallelFor"), bDisableCollisionParallelFor, TEXT("Disable parallel execution for Chaos Collisions (also disabled by DisableParticleParallelFor)")) ( TEXT("p.Chaos.DisableCollisionParallelFor")  ,
bDisableCollisionParallelFor  ,
TEXT("Disable parallel execution for Chaos Collisions (also disabled by DisableParticleParallelFor)")   
)

◆ CVarDisableParticleParallelFor

FAutoConsoleVariableRef Chaos::CVarDisableParticleParallelFor(TEXT("p.Chaos.DisableParticleParallelFor"), bDisableParticleParallelFor, TEXT("Disable parallel execution for Chaos Particles (Collisions, ")) ( TEXT("p.Chaos.DisableParticleParallelFor")  ,
bDisableParticleParallelFor   
)

◆ CVarDisablePhysicsParallelFor

FAutoConsoleVariableRef Chaos::CVarDisablePhysicsParallelFor(TEXT("p.Chaos.DisablePhysicsParallelFor"), bDisablePhysicsParallelFor, TEXT("Disable parallel execution in Chaos Evolution")) ( TEXT("p.Chaos.DisablePhysicsParallelFor")  ,
bDisablePhysicsParallelFor  ,
TEXT("Disable parallel execution in Chaos Evolution"  
)

◆ CVarDumpClusterAndReleaseStats

FAutoConsoleVariableRef Chaos::CVarDumpClusterAndReleaseStats(TEXT("p.Chaos.Clustering.DumpClusterAndReleaseStats"), GDumpClusterAndReleaseStats, TEXT("Report the number of cluster processes and released particles per frame, on/off 1/0")) ( TEXT("p.Chaos.Clustering.DumpClusterAndReleaseStats")  ,
GDumpClusterAndReleaseStats  ,
TEXT("Report the number of cluster processes and released particles per frame, on/off 1/0")   
)

◆ CVarEnableCollisions

FAutoConsoleVariableRef Chaos::CVarEnableCollisions(TEXT("p.EnableCollisions"), EnableCollisions, TEXT("Enable/Disable collisions on the Chaos solver.")) ( TEXT("p.EnableCollisions")  ,
EnableCollisions  ,
TEXT("Enable/Disable collisions on the Chaos solver.")   
)

◆ CVarFindAllIntersectionsSingleThreaded

FAutoConsoleVariableRef Chaos::CVarFindAllIntersectionsSingleThreaded(TEXT("p.FindAllIntersectionsSingleThreaded"), FindAllIntersectionsSingleThreaded, TEXT("")) ( TEXT("p.FindAllIntersectionsSingleThreaded")  ,
FindAllIntersectionsSingleThreaded  ,
TEXT("")   
)

◆ CVarFixBadAccelerationStructureRemoval

FAutoConsoleVariableRef Chaos::CVarFixBadAccelerationStructureRemoval(TEXT("p.FixBadAccelerationStructureRemoval"), FixBadAccelerationStructureRemoval, TEXT("")) ( TEXT("p.FixBadAccelerationStructureRemoval")  ,
FixBadAccelerationStructureRemoval  ,
TEXT("")   
)

◆ CVarForceDisableAsyncPhysics

FAutoConsoleVariableRef Chaos::CVarForceDisableAsyncPhysics(TEXT("p.ForceDisableAsyncPhysics"), ForceDisableAsyncPhysics, TEXT("Whether to force async physics off regardless of other settings")) ( TEXT("p.ForceDisableAsyncPhysics")  ,
ForceDisableAsyncPhysics  ,
TEXT("Whether to force async physics off regardless of other settings"  
)

◆ CVarForceNoCollisionIntoSQ

FAutoConsoleVariableRef Chaos::CVarForceNoCollisionIntoSQ(TEXT("p.ForceNoCollisionIntoSQ"), ForceNoCollisionIntoSQ, TEXT("When enabled, all particles end up in sq structure, even ones with no collision")) ( TEXT("p.ForceNoCollisionIntoSQ")  ,
ForceNoCollisionIntoSQ  ,
TEXT("When enabled, all particles end up in sq structure, even ones with no collision"  
)

◆ CVarForceOneShotManifoldEdgeEdgeCaseZeroCullDistance

FAutoConsoleVariableRef Chaos::CVarForceOneShotManifoldEdgeEdgeCaseZeroCullDistance(TEXT("p.Chaos.Collision.Manifold.ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance"), ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance, TEXT("If enabled, if one shot manifold hits edge/edge case, we will force a cull distance of zero. That means edge/edge contacts will be thrown out if separated at all. Only applies to Convex/Convex oneshot impl.")) ( TEXT("p.Chaos.Collision.Manifold.ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance")  ,
ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance  ,
TEXT("If enabled, if one shot manifold hits edge/edge case, we will force a cull distance of zero. That means edge/edge contacts will be thrown out if separated at all. Only applies to Convex/Convex oneshot impl.")   
)

◆ CVarGraphPropagationBasedCollisionFactor

FAutoConsoleVariableRef Chaos::CVarGraphPropagationBasedCollisionFactor(TEXT("p.GraphPropagationBasedCollisionFactor"), GraphPropagationBasedCollisionFactor, TEXT("when p.GraphPropagationBasedCollisionImpulseProcessing is on, the percentage [0-1] of remaining damage that is distributed to the connected pieces")) ( TEXT("p.GraphPropagationBasedCollisionFactor")  ,
GraphPropagationBasedCollisionFactor  ,
TEXT("when p.GraphPropagationBasedCollisionImpulseProcessing is on, the percentage [0-1] of remaining damage that is distributed to the connected pieces"  
)

◆ CVarGraphPropagationBasedCollisionImpulseProcessing

FAutoConsoleVariableRef Chaos::CVarGraphPropagationBasedCollisionImpulseProcessing(TEXT("p.GraphPropagationBasedCollisionImpulseProcessing"), GraphPropagationBasedCollisionImpulseProcessing, TEXT("when processing collision impulse toc ompute strain, pick the closest child from the impact point and propagate using the connection graph [def: 0]")) ( TEXT("p.GraphPropagationBasedCollisionImpulseProcessing")  ,
GraphPropagationBasedCollisionImpulseProcessing  ,
TEXT("when processing collision impulse toc ompute strain, pick the closest child from the impact point and propagate using the connection graph [def: 0]")   
)

◆ CVarInnerPhysicsBatchSize

FAutoConsoleVariableRef Chaos::CVarInnerPhysicsBatchSize(TEXT("p.Chaos.InnerParallelForBatchSize"), InnerParallelForBatchSize, TEXT("Set the batch size threshold for inner parallel fors")) ( TEXT("p.Chaos.InnerParallelForBatchSize")  ,
InnerParallelForBatchSize  ,
TEXT("Set the batch size threshold for inner parallel fors"  
)

◆ CVarLargeBatchSize

FAutoConsoleVariableRef Chaos::CVarLargeBatchSize(TEXT("p.Chaos.LargeBatchSize"), LargeBatchSize, TEXT("Large batch size for chaos parallel loops")) ( TEXT("p.Chaos.LargeBatchSize")  ,
LargeBatchSize  ,
TEXT("Large batch size for chaos parallel loops"  
)

◆ CVarLevelsetGhostCells2

FAutoConsoleVariableRef Chaos::CVarLevelsetGhostCells2(TEXT("p.LevelsetGhostCells"), LevelsetGhostCells, TEXT("Increase the level set grid by this many ghost cells")) ( TEXT("p.LevelsetGhostCells")  ,
LevelsetGhostCells  ,
TEXT("Increase the level set grid by this many ghost cells"  
)

◆ CVarLevelSetResolution2

FAutoConsoleVariableRef Chaos::CVarLevelSetResolution2(TEXT("p.MinLevelsetSize"), MinLevelsetSize, TEXT("The minimum size on the smallest axis to use a level set")) ( TEXT("p.MinLevelsetSize")  ,
MinLevelsetSize  ,
TEXT("The minimum size on the smallest axis to use a level set"  
)

◆ CVarLinearEtherDragOverride

FAutoConsoleVariableRef Chaos::CVarLinearEtherDragOverride(TEXT("p.LinearEtherDragOverride"), LinearEtherDragOverride, TEXT("Set an override linear ether drag value. -1.f to disable")) ( TEXT("p.LinearEtherDragOverride")  ,
LinearEtherDragOverride  ,
TEXT("Set an override linear ether drag value. -1.f to disable"  
)

◆ CVarLogCorruptMap

FAutoConsoleVariableRef Chaos::CVarLogCorruptMap(TEXT("p.LogCorruptMap"), LogCorruptMap, TEXT("")) ( TEXT("p.LogCorruptMap")  ,
LogCorruptMap  ,
TEXT("")   
)

◆ CVarLogDirtyParticles

FAutoConsoleVariableRef Chaos::CVarLogDirtyParticles(TEXT("p.LogDirtyParticles"), LogDirtyParticles, TEXT("Logs out which particles are dirty every frame")) ( TEXT("p.LogDirtyParticles")  ,
LogDirtyParticles  ,
TEXT("Logs out which particles are dirty every frame"  
)

◆ CVarMaxBoundsForTree

FAutoConsoleVariableRef Chaos::CVarMaxBoundsForTree(TEXT("p.MaxBoundsForTree"), MaxBoundsForTree, TEXT(""), ECVF_Default) ( TEXT("p.MaxBoundsForTree")  ,
MaxBoundsForTree  ,
TEXT("")  ,
ECVF_Default   
)

◆ CVarMaxDirtyElements

FAutoConsoleVariableRef Chaos::CVarMaxDirtyElements(TEXT("p.MaxDirtyElements"), MaxDirtyElements, TEXT("The max number of dirty elements. This forces a flush which is very expensive")) ( TEXT("p.MaxDirtyElements")  ,
MaxDirtyElements  ,
TEXT("The max number of dirty elements. This forces a flush which is very expensive"  
)

◆ CVarMaxLevelsetDimension2

FAutoConsoleVariableRef Chaos::CVarMaxLevelsetDimension2(TEXT("p.MaxLevelsetDimension"), MaxLevelsetDimension, TEXT("The maximum number of cells on a single level set axis")) ( TEXT("p.MaxLevelsetDimension")  ,
MaxLevelsetDimension  ,
TEXT("The maximum number of cells on a single level set axis"  
)

◆ CVarMaxPhysicsStepsPerGameTick

FAutoConsoleVariableRef Chaos::CVarMaxPhysicsStepsPerGameTick(TEXT("p.MaxPhysicsStepsPerGameTick"), MaxPhysicsStepsPerGameTick, TEXT("The maximum number of physics steps per gametick frame.")) ( TEXT("p.MaxPhysicsStepsPerGameTick")  ,
MaxPhysicsStepsPerGameTick  ,
TEXT("The maximum number of physics steps per gametick frame.")   
)

◆ CVarMaxRangeBatchWorkers

FAutoConsoleVariableRef Chaos::CVarMaxRangeBatchWorkers(TEXT("p.Chaos.MaxNumWorkers"), MaxNumWorkers, TEXT("Set the max number of workers for physics")) ( TEXT("p.Chaos.MaxNumWorkers")  ,
MaxNumWorkers  ,
TEXT("Set the max number of workers for physics"  
)

◆ CVarMinCleanedPointsBeforeRemovingInternals2

FAutoConsoleVariableRef Chaos::CVarMinCleanedPointsBeforeRemovingInternals2(TEXT("p.MinCleanedPointsBeforeRemovingInternals"), MinCleanedPointsBeforeRemovingInternals, TEXT("If we only have this many clean points, don't bother removing internal points as the object is likely very small")) ( TEXT("p.MinCleanedPointsBeforeRemovingInternals")  ,
MinCleanedPointsBeforeRemovingInternals  ,
TEXT("If we only have this many clean points, don't bother removing internal points as the object is likely very small"  
)

◆ CVarMinContactSpeedForStrainEval

FAutoConsoleVariableRef Chaos::CVarMinContactSpeedForStrainEval(TEXT("p.chaos.MinContactSpeedForStrainEval"), MinContactSpeedForStrainEval, TEXT("Minimum speed at the contact before accumulating for strain eval ")) ( TEXT("p.chaos.MinContactSpeedForStrainEval")  ,
MinContactSpeedForStrainEval  ,
TEXT("Minimum speed at the contact before accumulating for strain eval ")   
)

◆ CVarMinImpulseForStrainEval

FAutoConsoleVariableRef Chaos::CVarMinImpulseForStrainEval(TEXT("p.chaos.MinImpulseForStrainEval"), MinImpulseForStrainEval, TEXT("Minimum accumulated impulse before accumulating for strain eval ")) ( TEXT("p.chaos.MinImpulseForStrainEval")  ,
MinImpulseForStrainEval  ,
TEXT("Minimum accumulated impulse before accumulating for strain eval ")   
)

◆ CVarMinLevelsetDimension2

FAutoConsoleVariableRef Chaos::CVarMinLevelsetDimension2(TEXT("p.MinLevelsetDimension"), MinLevelsetDimension, TEXT("The minimum number of cells on a single level set axis")) ( TEXT("p.MinLevelsetDimension")  ,
MinLevelsetDimension  ,
TEXT("The minimum number of cells on a single level set axis"  
)

◆ CVarMinParallelTaskSize

FAutoConsoleVariableRef Chaos::CVarMinParallelTaskSize(TEXT("p.Chaos.MinParallelTaskSize"), MinParallelTaskSize, TEXT("Minimum number of tasks required to start parallel task execution on worker threads, set this higher to encourage single threaded execution")) ( TEXT("p.Chaos.MinParallelTaskSize")  ,
MinParallelTaskSize  ,
TEXT("Minimum number of tasks required to start parallel task execution on worker threads, set this higher to encourage single threaded execution"  
)

◆ CVarMinRangeBatchSize

FAutoConsoleVariableRef Chaos::CVarMinRangeBatchSize(TEXT("p.Chaos.MinRangeBatchSize"), MinRangeBatchSize, TEXT("Set the min range batch size for parallel for")) ( TEXT("p.Chaos.MinRangeBatchSize")  ,
MinRangeBatchSize  ,
TEXT("Set the min range batch size for parallel for"  
)

◆ CVarNumActiveChannels

FAutoConsoleVariableRef Chaos::CVarNumActiveChannels(TEXT("p.NumActiveChannels"), DefaultNumActiveChannels, TEXT("")) ( TEXT("p.NumActiveChannels")  ,
DefaultNumActiveChannels  ,
TEXT("")   
)

◆ CVarOnlyUseInterclusterEdgesAttachedToMainParticles

FAutoConsoleVariableRef Chaos::CVarOnlyUseInterclusterEdgesAttachedToMainParticles(TEXT("p.Chaos.OnlyUseInterclusterEdgesAttachedToMainParticles"), bOnlyUseInterclusterEdgesAttachedToMainParticles, TEXT("If true, an intercluster edge must be directly attached to a main particle for the particle to remain a part of the cluster union.")) ( TEXT("p.Chaos.OnlyUseInterclusterEdgesAttachedToMainParticles")  ,
bOnlyUseInterclusterEdgesAttachedToMainParticles  ,
TEXT("If true, an intercluster edge must be directly attached to a main particle for the particle to remain a part of the cluster union.")   
)

◆ CVarPerAdvanceBreaksAllowed

FAutoConsoleVariableRef Chaos::CVarPerAdvanceBreaksAllowed(TEXT("p.Chaos.Clustering.PerAdvanceBreaksAllowed"), GPerAdvanceBreaksAllowed, TEXT("Number of breaks allowed to occur for each invocation of AdvanceClustering")) ( TEXT("p.Chaos.Clustering.PerAdvanceBreaksAllowed")  ,
GPerAdvanceBreaksAllowed  ,
TEXT("Number of breaks allowed to occur for each invocation of AdvanceClustering"  
)

◆ CVarPerAdvanceBreaksRescheduleLimit

FAutoConsoleVariableRef Chaos::CVarPerAdvanceBreaksRescheduleLimit(TEXT("p.Chaos.Clustering.PerAdvanceBreaksRescheduleLimit"), GPerAdvanceBreaksRescheduleLimit, TEXT("Number of breaks allowed to be rescheduled for next frame if any ")) ( TEXT("p.Chaos.Clustering.PerAdvanceBreaksRescheduleLimit")  ,
GPerAdvanceBreaksRescheduleLimit  ,
TEXT("Number of breaks allowed to be rescheduled for next frame if any ")   
)

◆ CVarPerPolySupport

FAutoConsoleVariableRef Chaos::CVarPerPolySupport(TEXT("p.Chaos.TriMeshPerPolySupport"), TriMeshPerPolySupport, TEXT("Disabling removes memory cost of vertex map on triangle mesh. Note: Changing at runtime will not work.")) ( TEXT("p.Chaos.TriMeshPerPolySupport")  ,
TriMeshPerPolySupport  ,
TEXT("Disabling removes memory cost of vertex map on triangle mesh. Note: Changing at runtime will not work.")   
)

◆ CVarPhysicsRunsOnGT

FAutoConsoleVariableRef Chaos::CVarPhysicsRunsOnGT(TEXT("p.PhysicsRunsOnGT"), PhysicsRunsOnGT, TEXT("If true the physics thread runs on the game thread, but will still go wide on tasks like collision detection")) ( TEXT("p.PhysicsRunsOnGT")  ,
PhysicsRunsOnGT  ,
TEXT("If true the physics thread runs on the game thread, but will still go wide on tasks like collision detection"  
)

◆ CVarResimAllowRewindToResimulatedFrames

FAutoConsoleVariableRef Chaos::CVarResimAllowRewindToResimulatedFrames(TEXT("p.Resim.AllowRewindToResimulatedFrames"), bResimAllowRewindToResimulatedFrames, TEXT("Allow rewinding back to a frame that was previously part of a resimulation. If a resimulation is performed between frame 100-110, allow a new resim from 105-115 if needed, else next resim will be able to start from frame 111.")) ( TEXT("p.Resim.AllowRewindToResimulatedFrames")  ,
bResimAllowRewindToResimulatedFrames  ,
TEXT("Allow rewinding back to a frame that was previously part of a resimulation. If a resimulation is performed between frame 100-110, allow a new resim from 105-115 if needed, else next resim will be able to start from frame 111.")   
)

◆ CVarResimAllowRewindToResimulatedFramesOverlapPercent

FAutoConsoleVariableRef Chaos::CVarResimAllowRewindToResimulatedFramesOverlapPercent(TEXT("p.Resim.AllowRewindToResimulatedFrames.OverlapPercent"), ResimAllowRewindToResimulatedFramesOverlapPercent, TEXT("Value in percent as a multiplier, 0.3 = 30%. When p.Resim.AllowRewindToResimulatedFrames is true, this sets how many frames of overlap we allow when rewinding back past a previous resimulation. If a resimulation is performed between frame 100-110 (10 frames), 30% overlap would allow 3 frames to get resimulated again, i.e. we would be allowed to rewind back to frame 107 again if we need to.")) ( TEXT("p.Resim.AllowRewindToResimulatedFrames.OverlapPercent")  ,
ResimAllowRewindToResimulatedFramesOverlapPercent  ,
TEXT("Value in percent as a multiplier, 0.3 = 30%. When p.Resim.AllowRewindToResimulatedFrames is true, this sets how many frames of overlap we allow when rewinding back past a previous resimulation. If a resimulation is performed between frame 100-110 (10 frames), 30% overlap would allow 3 frames to get resimulated again, i.e. we would be allowed to rewind back to frame 107 again if we need to.")   
)

◆ CVarResimDelayDestroyObject

FAutoConsoleVariableRef Chaos::CVarResimDelayDestroyObject(TEXT("p.Resim.DelayDestroyObject"), bResimDelayDestroyObject, TEXT("Keep physics objects and physics proxy available until after they go out of rewind history. Disabled by default due to not fully implemented.")) ( TEXT("p.Resim.DelayDestroyObject")  ,
bResimDelayDestroyObject  ,
TEXT("Keep physics objects and physics proxy available until after they go out of rewind history. Disabled by default due to not fully implemented.")   
)

◆ CVarResimFindValidInputHistory

FAutoConsoleVariableRef Chaos::CVarResimFindValidInputHistory(TEXT("p.Resim.FindValidInputHistory"), bFindValidInputHistory, TEXT("If the particle that needs resimulation has custom input history, find a valid resim frame where inputs are available.")) ( TEXT("p.Resim.FindValidInputHistory")  ,
bFindValidInputHistory  ,
TEXT("If the particle that needs resimulation has custom input history, find a valid resim frame where inputs are available.")   
)

◆ CVarResimFindValidStateHistory

FAutoConsoleVariableRef Chaos::CVarResimFindValidStateHistory(TEXT("p.Resim.FindValidStateHistory"), bFindValidStateHistory, TEXT("If the particle that needs resimulation has custom state history, find a valid resim frame where states are available.")) ( TEXT("p.Resim.FindValidStateHistory")  ,
bFindValidStateHistory  ,
TEXT("If the particle that needs resimulation has custom state history, find a valid resim frame where states are available.")   
)

◆ CVarResimFrameValidationLeniency

FAutoConsoleVariableRef Chaos::CVarResimFrameValidationLeniency(TEXT("p.Resim.ResimFrameValidation"), ResimFrameValidation, TEXT("0 = no leniency, all dirty particles need a valid target. 1 = Island leniency, all particles in resim islands need a valid target. 2 = Full leniency, only the particle triggering the resim need a valid target.")) ( TEXT("p.Resim.ResimFrameValidation")  ,
ResimFrameValidation  ,
TEXT("0 = no leniency, all dirty particles need a valid target. 1 = Island leniency, all particles in resim islands need a valid target. 2 = Full leniency, only the particle triggering the resim need a valid target.")   
)

◆ CVarResimIncompleteHistory

FAutoConsoleVariableRef Chaos::CVarResimIncompleteHistory(TEXT("p.Resim.IncompleteHistory"), bResimIncompleteHistory, TEXT("If a valid resim frame can't be found, use the requested resim frame and perform a resimulation with incomplete data.")) ( TEXT("p.Resim.IncompleteHistory")  ,
bResimIncompleteHistory  ,
TEXT("If a valid resim frame can't be found, use the requested resim frame and perform a resimulation with incomplete data.")   
)

◆ CVarResimInterpolateTargetGaps

FAutoConsoleVariableRef Chaos::CVarResimInterpolateTargetGaps(TEXT("p.Resim.InterpolateTargetGaps"), InterpolateTargetGaps, TEXT("How many frame gaps in replicated targets we should fill by interpolating between the previous and the new target received. Value in max number of frames to interpolate, deactivate by setting to 0.")) ( TEXT("p.Resim.InterpolateTargetGaps")  ,
InterpolateTargetGaps  ,
TEXT("How many frame gaps in replicated targets we should fill by interpolating between the previous and the new target received. Value in max number of frames to interpolate, deactivate by setting to 0.")   
)

◆ CVarRestoreBreakingMomentumPercent

FAutoConsoleVariableRef Chaos::CVarRestoreBreakingMomentumPercent(TEXT("p.RestoreBreakingMomentumPercent"), RestoreBreakingMomentumPercent, TEXT("When a rigid cluster is broken, objects that its in contact with will receive an impulse to restore this percent of their momentum prior to the break.")) ( TEXT("p.RestoreBreakingMomentumPercent")  ,
RestoreBreakingMomentumPercent  ,
TEXT("When a rigid cluster is broken, objects that its in contact with will receive an impulse to restore this percent of their momentum prior to the break.")   
)

◆ CVarRewindDataOptimization

FAutoConsoleVariableRef Chaos::CVarRewindDataOptimization(TEXT("p.Resim.RewindDataOptimization"), bCVarRewindDataOptimization, TEXT("Default value for RewinData optimization, note that this can be overridden at runtime by API calls. Effect: Only alter the minimum required properties during a resim for particles not marked for FullResim and only cache data during the PrePushData phase and lower memory allocation for the history cache to 1/3 of non-optimized flow.")) ( TEXT("p.Resim.RewindDataOptimization")  ,
bCVarRewindDataOptimization  ,
TEXT("Default value for RewinData optimization, note that this can be overridden at runtime by API calls. Effect: Only alter the minimum required properties during a resim for particles not marked for FullResim and only cache data during the PrePushData phase and lower memory allocation for the history cache to 1/3 of non-optimized flow.")   
)

◆ CVarSecondChannelDelay

FAutoConsoleVariableRef Chaos::CVarSecondChannelDelay(TEXT("p.SecondChannelDelay"), SecondChannelDelay, TEXT("")) ( TEXT("p.SecondChannelDelay")  ,
SecondChannelDelay  ,
TEXT("")   
)

◆ CVarSimDelay

FAutoConsoleVariableRef Chaos::CVarSimDelay(TEXT("p.simDelay"), SimDelay, TEXT("")) ( TEXT("p.simDelay")  ,
SimDelay  ,
TEXT("")   
)

◆ CVarSkipDesyncTest

FAutoConsoleVariableRef Chaos::CVarSkipDesyncTest(TEXT("p.SkipDesyncTest"), SkipDesyncTest, TEXT("Skips hard desync test, this means all particles will assume to be clean except spawning at different times. This is useful for a perf lower bound, not actually correct")) ( TEXT("p.SkipDesyncTest")  ,
SkipDesyncTest  ,
TEXT("Skips hard desync test, this means all particles will assume to be clean except spawning at different times. This is useful for a perf lower bound, not actually correct"  
)

◆ CVarSmallBatchSize

FAutoConsoleVariableRef Chaos::CVarSmallBatchSize(TEXT("p.Chaos.SmallBatchSize"), SmallBatchSize, TEXT("Small batch size for chaos parallel loops")) ( TEXT("p.Chaos.SmallBatchSize")  ,
SmallBatchSize  ,
TEXT("Small batch size for chaos parallel loops"  
)

◆ CVarUnionsHaveCollisionParticles

FAutoConsoleVariableRef Chaos::CVarUnionsHaveCollisionParticles(TEXT("p.UnionsHaveCollisionParticles"), UnionsHaveCollisionParticles, TEXT("")) ( TEXT("p.UnionsHaveCollisionParticles")  ,
UnionsHaveCollisionParticles  ,
TEXT("")   
)

◆ CVarUseAccumulationArray

FAutoConsoleVariableRef Chaos::CVarUseAccumulationArray(TEXT("p.UseAccumulationArray"), UseAccumulationArray, TEXT("")) ( TEXT("p.UseAccumulationArray")  ,
UseAccumulationArray  ,
TEXT("")   
)

◆ CVarUseAsyncInterpolation

FAutoConsoleVariableRef Chaos::CVarUseAsyncInterpolation(TEXT("p.UseAsyncInterpolation"), UseAsyncInterpolation, TEXT("Whether to interpolate when async mode is enabled")) ( TEXT("p.UseAsyncInterpolation")  ,
UseAsyncInterpolation  ,
TEXT("Whether to interpolate when async mode is enabled"  
)

◆ CVarUseBoundingBoxForConnectionGraphFiltering

FAutoConsoleVariableRef Chaos::CVarUseBoundingBoxForConnectionGraphFiltering(TEXT("p.UseBoundingBoxForConnectionGraphFiltering"), UseBoundingBoxForConnectionGraphFiltering, TEXT("when on, use bounding box overlaps to filter connection during the connection graph generation [def: 0]")) ( TEXT("p.UseBoundingBoxForConnectionGraphFiltering")  ,
UseBoundingBoxForConnectionGraphFiltering  ,
TEXT("when on, use bounding box overlaps to filter connection during the connection graph generation [def: 0]")   
)

◆ CVarUseConnectivity

FAutoConsoleVariableRef Chaos::CVarUseConnectivity(TEXT("p.UseConnectivity"), UseConnectivity, TEXT("Whether to use connectivity graph when breaking up clusters")) ( TEXT("p.UseConnectivity")  ,
UseConnectivity  ,
TEXT("Whether to use connectivity graph when breaking up clusters"  
)

◆ CVarUseContactSpeedForStrainEval

FAutoConsoleVariableRef Chaos::CVarUseContactSpeedForStrainEval(TEXT("p.chaos.UseContactSpeedForStrainEval"), bUseContactSpeedForStrainThreshold, TEXT("Whether to use contact speed to discard contacts when updating cluster strain (true: use speed, false: use impulse)")) ( TEXT("p.chaos.UseContactSpeedForStrainEval")  ,
bUseContactSpeedForStrainThreshold  ,
TEXT("Whether to use contact speed to discard contacts when updating cluster strain (true: use speed, false: use impulse)")   
)

◆ CvarUseGeometryTConvexHull3

FAutoConsoleVariableRef Chaos::CvarUseGeometryTConvexHull3(TEXT("p.Chaos.Convex.UseTConvexHull3Builder"), FConvexBuilder::bUseGeometryTConvexHull3, TEXT("Use the newer Geometry Tools code path for generating convex hulls when default build method is set.[def:true]")) ( TEXT("p.Chaos.Convex.UseTConvexHull3Builder")  ,
FConvexBuilder::bUseGeometryTConvexHull3  ,
TEXT("Use the newer Geometry Tools code path for generating convex hulls when default build method is set.[def:true]")   
)

◆ CVarUseLevelsetCollision2

FAutoConsoleVariableRef Chaos::CVarUseLevelsetCollision2(TEXT("p.UseLevelsetCollision"), UseLevelsetCollision, TEXT("Whether unioned objects use levelsets")) ( TEXT("p.UseLevelsetCollision")  ,
UseLevelsetCollision  ,
TEXT("Whether unioned objects use levelsets"  
)

◆ CVarUseParticleResimAsFollowerDuringTargetValidation

FAutoConsoleVariableRef Chaos::CVarUseParticleResimAsFollowerDuringTargetValidation(TEXT("p.Resim.UseParticleResimAsFollowerDuringTargetValidation"), bUseParticleResimAsFollowerDuringTargetValidation, TEXT("If disabled, do not use the particle's ResimAsFollower flag when trying to find a valid resim frame.")) ( TEXT("p.Resim.UseParticleResimAsFollowerDuringTargetValidation")  ,
bUseParticleResimAsFollowerDuringTargetValidation  ,
TEXT("If disabled, do not use the particle's ResimAsFollower flag when trying to find a valid resim frame.")   
)

◆ CvarUseSimplifierForGeometryTConvexHull3

FAutoConsoleVariableRef Chaos::CvarUseSimplifierForGeometryTConvexHull3(TEXT("p.Chaos.Convex.UseSimplifierForTConvexHull3Builder"), FConvexBuilder::bUseSimplifierForTConvexHull3, TEXT("If default build is using the Geometry Tools convex hull algorithm, also use the corresponding simplifier. [def:false]")) ( TEXT("p.Chaos.Convex.UseSimplifierForTConvexHull3Builder")  ,
FConvexBuilder::bUseSimplifierForTConvexHull3  ,
TEXT("If default build is using the Geometry Tools convex hull algorithm, also use the corresponding simplifier. [def:false]")   
)

◆ DeactivateClusterChildren

int32 Chaos::DeactivateClusterChildren = 0

◆ DebugDrawProbeDetection

bool Chaos::DebugDrawProbeDetection = false

◆ DefaultCollisionFriction

FRealSingle Chaos::DefaultCollisionFriction = 0

◆ DefaultCollisionRestitution

FRealSingle Chaos::DefaultCollisionRestitution = 0

◆ DefaultNumActiveChannels

int32 Chaos::DefaultNumActiveChannels = 1

◆ EnableCollisions

CHAOS_API int32 Chaos::EnableCollisions = 1

◆ FindAllIntersectionsSingleThreaded

int32 Chaos::FindAllIntersectionsSingleThreaded = 1

◆ FixBadAccelerationStructureRemoval

CHAOS_API int32 Chaos::FixBadAccelerationStructureRemoval = 1

◆ ForceDisableAsyncPhysics

CHAOS_API int32 Chaos::ForceDisableAsyncPhysics = 0

◆ ForceNoCollisionIntoSQ

CHAOS_API int32 Chaos::ForceNoCollisionIntoSQ = 0

◆ ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance

bool Chaos::ForceOneShotManifoldEdgeEdgeCaseZeroCullDistance = false

◆ GAccelerationStructureCacheOverlappingLeaves

CHAOS_API int32 Chaos::GAccelerationStructureCacheOverlappingLeaves = 1

Console variable to enable the caching of the overlapping leaves if the dynamic tree is enable

◆ GDefaultChaosSettings

CHAOS_API FInternalDefaultSettings Chaos::GDefaultChaosSettings

◆ GraphPropagationBasedCollisionFactor

float Chaos::GraphPropagationBasedCollisionFactor = 1

◆ GraphPropagationBasedCollisionImpulseProcessing

int32 Chaos::GraphPropagationBasedCollisionImpulseProcessing = 0

◆ GSingleThreadedPhysics

CHAOS_API int32 Chaos::GSingleThreadedPhysics = 0

◆ InnerParallelForBatchSize

CHAOS_API int32 Chaos::InnerParallelForBatchSize = 0

◆ InterpolateTargetGaps

CHAOS_API int32 Chaos::InterpolateTargetGaps = 5

◆ LambdaAsyncMode

auto Chaos::LambdaAsyncMode
Initial value:
= FConsoleVariableDelegate::CreateLambda([](IConsoleVariable* InVariable)
{
for (FPhysicsSolverBase* Solver : FChaosSolversModule::GetModule()->GetAllSolvers())
{
Solver->SetAsyncPhysicsBlockMode(EAsyncBlockMode(InVariable->GetInt()));
}
})
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition ChaosSolversModule.h:146
Definition IConsoleManager.h:558
EAsyncBlockMode
Definition PhysicsSolverBase.h:98

◆ LambdaMul

auto Chaos::LambdaMul
Initial value:
= FConsoleVariableDelegate::CreateLambda([](IConsoleVariable* InVariable)
{
for (FPhysicsSolverBase* Solver : FChaosSolversModule::GetModule()->GetAllSolvers())
{
Solver->SetAsyncInterpolationMultiplier(InVariable->GetFloat());
}
})

◆ LargeBatchSize

CHAOS_API int32 Chaos::LargeBatchSize = 100

◆ LevelsetGhostCells

int32 Chaos::LevelsetGhostCells = 1

◆ LinearEtherDragOverride

FRealSingle Chaos::LinearEtherDragOverride = -1.f

◆ LogCorruptMap

int32 Chaos::LogCorruptMap = 0

◆ LogDirtyParticles

int32 Chaos::LogDirtyParticles = 0

◆ MaxBoundsForTree

FRealSingle Chaos::MaxBoundsForTree = (FRealSingle)10000

◆ MaxDirtyElements

CHAOS_API int32 Chaos::MaxDirtyElements = 10000

◆ MaxLevelsetDimension

int32 Chaos::MaxLevelsetDimension = 20

◆ MaxNumWorkers

CHAOS_API int32 Chaos::MaxNumWorkers = 100

◆ MaxPhysicsStepsPerGameTick

int32 Chaos::MaxPhysicsStepsPerGameTick = 3

◆ MinCleanedPointsBeforeRemovingInternals

int32 Chaos::MinCleanedPointsBeforeRemovingInternals = 10

◆ MinContactSpeedForStrainEval

FRealSingle Chaos::MinContactSpeedForStrainEval = 1.0f

◆ MinImpulseForStrainEval

FRealSingle Chaos::MinImpulseForStrainEval = 980 * 2 * 1.f / 30.f

◆ MinLevelsetDimension

int32 Chaos::MinLevelsetDimension = 4

◆ MinLevelsetSize

FRealSingle Chaos::MinLevelsetSize = 50.f

◆ MinParallelTaskSize

CHAOS_API int32 Chaos::MinParallelTaskSize = 0

◆ MinRangeBatchSize

CHAOS_API int32 Chaos::MinRangeBatchSize = 0

◆ PhysicsRunsOnGT

int32 Chaos::PhysicsRunsOnGT = 0

◆ ResimAllowRewindToResimulatedFramesOverlapPercent

CHAOS_API float Chaos::ResimAllowRewindToResimulatedFramesOverlapPercent = 1.0f

◆ ResimFrameValidation

◆ RestoreBreakingMomentumPercent

float Chaos::RestoreBreakingMomentumPercent = .5

◆ SecondChannelDelay

FRealSingle Chaos::SecondChannelDelay = 0.05f

◆ SimDelay

int32 Chaos::SimDelay = 0

◆ SkipDesyncTest

CHAOS_API int32 Chaos::SkipDesyncTest = 0

◆ SmallBatchSize

CHAOS_API int32 Chaos::SmallBatchSize = 10

◆ SyncKinematicOnGameThread

CHAOS_API int32 Chaos::SyncKinematicOnGameThread = -1

◆ TriMeshPerPolySupport

CHAOS_API bool Chaos::TriMeshPerPolySupport = 1

◆ TSimModuleTypeIsRecursive_v

template<class T >
constexpr bool Chaos::TSimModuleTypeIsRecursive_v = TSimModuleTypeIsRecursive<T>::value
constexpr

◆ TWeightedLatticeImplicitObject< FLevelSet >

◆ UnionsHaveCollisionParticles

int32 Chaos::UnionsHaveCollisionParticles = 0

◆ UseAccumulationArray

int32 Chaos::UseAccumulationArray = 1

◆ UseAsyncInterpolation

CHAOS_API int32 Chaos::UseAsyncInterpolation = 1

◆ UseBoundingBoxForConnectionGraphFiltering

int32 Chaos::UseBoundingBoxForConnectionGraphFiltering = 0

◆ UseConnectivity

int32 Chaos::UseConnectivity = 1

◆ UseLevelsetCollision

int32 Chaos::UseLevelsetCollision = 0