Table of Contents

Namespace BepuPhysics.Constraints

Classes

AngularAxisGearMotorTypeProcessor
AngularAxisMotorTypeProcessor
AngularHingeTypeProcessor
AngularMotorTypeProcessor
AngularServoTypeProcessor
AngularSwivelHingeTypeProcessor
AreaConstraintTypeProcessor

Handles the solve iterations of a bunch of area constraints.

BallSocketMotorTypeProcessor

Handles the solve iterations of a bunch of ball socket motor constraints.

BallSocketServoTypeProcessor

Handles the solve iterations of a bunch of ball socket servo constraints.

BallSocketShared

Provides shared functionality for constraints with jacobians similar to the BallSocket.

BallSocketTypeProcessor

Handles the solve iterations of a bunch of ball socket constraints.

CenterDistanceLimitTypeProcessor

Handles the solve iterations of a bunch of distance servos.

CenterDistanceTypeProcessor

Handles the solve iterations of a bunch of distance servos.

ConstraintChecker
DistanceLimitTypeProcessor

Handles the solve iterations of a bunch of distance servos.

DistanceServoTypeProcessor

Handles the solve iterations of a bunch of distance servos.

FourBodyTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions, TWarmStartAccessFilterA, TWarmStartAccessFilterB, TWarmStartAccessFilterC, TWarmStartAccessFilterD, TSolveAccessFilterA, TSolveAccessFilterB, TSolveAccessFilterC, TSolveAccessFilterD>

Shared implementation across all four body constraints.

HingeTypeProcessor
InequalityHelpers
LinearAxisLimitTypeProcessor
LinearAxisMotorTypeProcessor
LinearAxisServoTypeProcessor
OneBodyAngularMotorTypeProcessor
OneBodyAngularServoTypeProcessor
OneBodyContactTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions>
OneBodyLinearMotorTypeProcessor
OneBodyLinearServoTypeProcessor
OneBodyTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions, TWarmStartAccessFilterA, TSolveAccessFilterA>

Shared implementation across all one body constraints.

PointOnLineServoTypeProcessor
SwingLimitTypeProcessor
SwivelHingeTypeProcessor
ThreeBodyTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions, TWarmStartAccessFilterA, TWarmStartAccessFilterB, TWarmStartAccessFilterC, TSolveAccessFilterA, TSolveAccessFilterB, TSolveAccessFilterC>

Shared implementation across all three body constraints.

TwistLimitTypeProcessor
TwistMotorTypeProcessor
TwistServoTypeProcessor
TwoBodyContactTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions>
TwoBodyTypeProcessor<TPrestepData, TAccumulatedImpulse, TConstraintFunctions, TWarmStartAccessFilterA, TWarmStartAccessFilterB, TSolveAccessFilterA, TSolveAccessFilterB>

Shared implementation across all two body constraints.

TypeProcessor

Superclass of constraint type batch processors. Responsible for interpreting raw type batches for the purposes of bookkeeping and solving.

TypeProcessor<TBodyReferences, TPrestepData, TAccumulatedImpulse>
VolumeConstraintTypeProcessor

Handles the solve iterations of a bunch of volume constraints.

WeldTypeProcessor

Handles the solve iterations of a bunch of ball socket constraints.

Structs

AccessAll

Marks all body properties as necessary for gather/scatter.

AccessNoInertia

Used for kinematic integration; the inertias are known ahead of time and there's no reason to gather them.

AccessNoOrientation
AccessNoPose
AccessNoPosition
AccessOnlyAngular
AccessOnlyAngularWithoutPose
AccessOnlyLinear
AccessOnlyVelocity
AllowPoseIntegration

Marks a batch as integrating poses for any bodies with integration responsibility within the constraint batch. Constraints which need to be updated in response to pose integration will also have their UpdateForNewPose function called.

AngularAxisGearMotor

Constrains body B's angular velocity around an axis anchored to body A to equal body A's velocity around that axis with a scaling factor applied.

AngularAxisGearMotorFunctions
AngularAxisGearMotorPrestepData
AngularAxisMotor

Constrains the relative angular velocity of two bodies around a local axis attached to body A to a target velocity.

AngularAxisMotorFunctions
AngularAxisMotorPrestepData
AngularHinge

Angular component of a hinge. Constrains the angular degrees of freedom of two bodies such that they can only rotate relative to each other around the hinge's axis.

AngularHingeFunctions
AngularHingePrestepData
AngularMotor

Constrains the relative angular velocity between two bodies to a target.

AngularMotorFunctions
AngularMotorPrestepData
AngularServo

Constrains two bodies to have a target relative rotation.

AngularServoFunctions
AngularServoPrestepData
AngularSwivelHinge

Constrains two bodies with the angular component of a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen.

AngularSwivelHingeFunctions
AngularSwivelHingePrestepData
AreaConstraint

Constrains the area of a triangle connecting the centers of three bodies to match a goal area. Scaled volume computed from ||ab x ac||.

AreaConstraintFunctions
AreaConstraintPrestepData
BallSocket

Constrains a point on one body to a point on another body.

BallSocketFunctions
BallSocketMotor

Controls the relative linear velocity from the center of body A to an attachment point on body B.

BallSocketMotorFunctions
BallSocketMotorPrestepData
BallSocketPrestepData
BallSocketServo

Constrains a point on one body to a point on another body. Provides speed and force configuration that the BallSocket joint does not.

BallSocketServoFunctions
BallSocketServoPrestepData
BatchShouldAlwaysIntegrate

The batch was determined to have only constraints with integration responsibilities, so there's no need to check.

BatchShouldConditionallyIntegrate

The batch was determined to have some constraints with integration responsibilities.

BatchShouldNeverIntegrate

The batch was determined to have no constraints with integration responsibilities, so there's no need to check.

CenterDistanceConstraint

Constrains the center of two bodies to be separated by a goal distance.

CenterDistanceConstraintFunctions
CenterDistanceLimit

Constrains the center of two bodies to be separated by a distance within a range.

CenterDistanceLimitFunctions
CenterDistanceLimitPrestepData
CenterDistancePrestepData
DisallowPoseIntegration

Marks a batch as not integrating poses for any bodies within the constraint batch.

DistanceLimit

Constrains points on two bodies to be separated by a distance within a range.

DistanceLimitFunctions
DistanceLimitPrestepData
DistanceServo

Constrains points on two bodies to be separated by a goal distance.

DistanceServoFunctions
DistanceServoPrestepData
FourBodyReferences

A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.

Hinge

Constrains two bodies with a hinge. Equivalent to a BallSocket constraint and an AngularHinge constraint solved together.

HingeAccumulatedImpulses
HingeFunctions
HingePrestepData
LinearAxisLimit

Constrains points on two bodies to a range of offsets from each other along a direction anchored to body A.

LinearAxisLimitFunctions
LinearAxisLimitPrestepData
LinearAxisMotor

Constrains points on two bodies to move relative to each other along a direction.

LinearAxisMotorFunctions
LinearAxisMotorPrestepData
LinearAxisServo

Constrains points on two bodies to be on a plane defined in the local space of one of the bodies.

LinearAxisServoFunctions
LinearAxisServoFunctions.NoChangeModifier
LinearAxisServoPrestepData
MotorSettings

Defines some of the shared behavior across motor constraints.

MotorSettingsWide
OneBodyAngularMotor

Constrains the angular velocity of one body to the target.

OneBodyAngularMotorFunctions
OneBodyAngularMotorPrestepData
OneBodyAngularServo

Constrains a single body to a target orientation.

OneBodyAngularServoFunctions
OneBodyAngularServoPrestepData
OneBodyLinearMotor

Constrains a point on a body to have a target linear velocity.

OneBodyLinearMotorFunctions
OneBodyLinearMotorPrestepData
OneBodyLinearServo

Constrains a point on a body to a target location.

OneBodyLinearServoFunctions
OneBodyLinearServoPrestepData
PointOnLineServo

Constrains a point on body B to be on a line attached to body A.

PointOnLineServoFunctions
PointOnLineServoPrestepData
ServoSettings
ServoSettingsWide
SpringSettings
SpringSettingsWide
SwingLimit

Restricts axes attached to two bodies to fall within a maximum swing angle.

SwingLimitFunctions
SwingLimitPrestepData
SwivelHinge

Constrains two bodies with a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen. Equivalent to a BallSocket constraint and an AngularSwivelHinge constraint solved together.

SwivelHingeFunctions
SwivelHingePrestepData
ThreeBodyReferences

A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.

TwistLimit

Constrains two bodies' rotations around attached twist axes to a range of permitted twist angles.

TwistLimitFunctions
TwistLimitPrestepData
TwistMotor

Constrains the twist velocity between two bodies to a target.

TwistMotorFunctions
TwistMotorPrestepData
TwistServo

Constrains two bodies to maintain a target twist angle around body-attached axes.

TwistServoFunctions
TwistServoPrestepData
TwoBodyReferences

A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve. Two address streams isn't much of a problem for prefetching.

TypeBatch

Stores the raw AOSOA formatted data associated with constraints in a type batch.

VolumeConstraint

Constrains the volume of a tetrahedron connecting the centers of four bodies to match a goal volume. Scaled volume computed from (ab x ac) * ad; the volume may be negative depending on the winding of the tetrahedron.

VolumeConstraintFunctions
VolumeConstraintPrestepData
Weld

Constrains two bodies to maintain a relative position and orientation. All six degrees of freedom are solved simultaneously.

WeldAccumulatedImpulses
WeldFunctions
WeldPrestepData

Interfaces

IBatchIntegrationMode

Marks a type as determining the integration mode for a solver batch.

IBatchPoseIntegrationAllowed

Marks a type as determining whether pose integration should be performed on bodies within the constraint batch.

IBodyAccessFilter

Constrains which body properties should be accessed in a body during constraint data gathering/scattering.

IConstraintDescription<TDescription>

Marks a type as a description of a constraint associated with a particular batch.

IFourBodyConstraintDescription<TDescription>

Marks a type as a four body constraint description.

IFourBodyConstraintFunctions<TPrestepData, TAccumulatedImpulse>

Prestep, warm start and solve iteration functions for a four body constraint type.

IOneBodyConstraintDescription<TDescription>

Marks a type as a one body constraint description.

IOneBodyConstraintFunctions<TPrestepData, TAccumulatedImpulse>

Prestep, warm start and solve iteration functions for a constraint type.

ISortKeyGenerator<TBodyReferences>

Defines a function that creates a sort key from body references in a type batch. Used by constraint layout optimization.

IThreeBodyConstraintDescription<TDescription>

Marks a type as a three body constraint description.

IThreeBodyConstraintFunctions<TPrestepData, TAccumulatedImpulse>

Prestep, warm start and solve iteration functions for a three body constraint type.

ITwoBodyConstraintDescription<TDescription>

Marks a type as a two body constraint description.

ITwoBodyConstraintFunctions<TPrestepData, TAccumulatedImpulse>

Prestep, warm start and solve iteration functions for a two body constraint type.

LinearAxisServoFunctions.IJacobianModifier

Enums

TypeProcessor<TBodyReferences, TPrestepData, TAccumulatedImpulse>.BundleIntegrationMode