29    void                        SetSliderAxis(
Vec3Arg inSliderAxis);
 
   35    bool                        mAutoDetectPoint = 
false;
 
   49    float                       mLimitsMin = -FLT_MAX;
 
   50    float                       mLimitsMax = FLT_MAX;
 
   56    float                       mMaxFrictionForce = 0.0f;
 
   77    virtual void                NotifyShapeChanged(
const BodyID &inBodyID, 
Vec3Arg inDeltaCOM) 
override;
 
   78    virtual void                SetupVelocityConstraint(
float inDeltaTime) 
override;
 
   79    virtual void                ResetWarmStart() 
override;
 
   80    virtual void                WarmStartVelocityConstraint(
float inWarmStartImpulseRatio) 
override;
 
   81    virtual bool                SolveVelocityConstraint(
float inDeltaTime) 
override;
 
   82    virtual bool                SolvePositionConstraint(
float inDeltaTime, 
float inBaumgarte) 
override;
 
   83#ifdef JPH_DEBUG_RENDERER 
   84    virtual void                DrawConstraint(
DebugRenderer *inRenderer) 
const override;
 
   85    virtual void                DrawConstraintLimits(
DebugRenderer *inRenderer) 
const override;
 
   87    virtual void                SaveState(
StateRecorder &inStream) 
const override;
 
   92    virtual Mat44               GetConstraintToBody1Matrix() 
const override;
 
   93    virtual Mat44               GetConstraintToBody2Matrix() 
const override;
 
   96    float                       GetCurrentPosition() 
const;
 
  111    void                        SetTargetPosition(
float inPosition)                     { mTargetPosition = mHasLimits? 
Clamp(inPosition, mLimitsMin, mLimitsMax) : inPosition; }
 
  115    void                        SetLimits(
float inLimitsMin, 
float inLimitsMax);
 
  134    void                        CalculateSlidingAxisAndPosition(
Mat44Arg inRotation1);
 
  135    void                        CalculatePositionConstraintProperties(
Mat44Arg inRotation1, 
Mat44Arg inRotation2);
 
  136    void                        CalculatePositionLimitsConstraintProperties(
float inDeltaTime);
 
  137    void                        CalculateMotorConstraintProperties(
float inDeltaTime);
 
  142    Vec3                        mLocalSpacePosition1;
 
  143    Vec3                        mLocalSpacePosition2;
 
  146    Vec3                        mLocalSpaceSliderAxis1;
 
  149    Vec3                        mLocalSpaceNormal1;
 
  150    Vec3                        mLocalSpaceNormal2;
 
  153    Quat                        mInvInitialOrientation;
 
  164    float                       mMaxFrictionForce;
 
  169    float                       mTargetVelocity = 0.0f;
 
  170    float                       mTargetPosition = 0.0f;
 
  182    Vec3                        mWorldSpaceSliderAxis;
 
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition: Constraint.h:58
 
EConstraintSubType
Enum to identify constraint sub type.
Definition: Constraint.h:34
 
#define JPH_EXPORT
Definition: Core.h:236
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
#define JPH_ASSERT(...)
Definition: IssueReporting.h:33
 
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition: Math.h:45
 
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition: Memory.h:31
 
EMotorState
Definition: MotorSettings.h:17
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:109
 
Definition: AxisConstraintPart.h:43
 
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition: BodyID.h:13
 
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition: Constraint.cpp:26
 
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition: Constraint.cpp:36
 
Definition: DebugRenderer.h:47
 
Definition: DualAxisConstraintPart.h:48
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
Definition: MotorSettings.h:26
 
Definition: Reference.h:101
 
Definition: RotationEulerConstraintPart.h:36
 
A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic const...
Definition: SliderConstraint.h:68
 
void SetMaxFrictionForce(float inFrictionForce)
Friction control.
Definition: SliderConstraint.h:99
 
Vec3 GetTotalLambdaRotation() const
Definition: SliderConstraint.h:128
 
float GetLimitsMin() const
Definition: SliderConstraint.h:116
 
const MotorSettings & GetMotorSettings() const
Definition: SliderConstraint.h:104
 
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition: SliderConstraint.h:76
 
float GetTotalLambdaPositionLimits() const
Definition: SliderConstraint.h:127
 
bool HasLimits() const
Definition: SliderConstraint.h:118
 
Vector< 2 > GetTotalLambdaPosition() const
Definition: SliderConstraint.h:126
 
SpringSettings & GetLimitsSpringSettings()
Definition: SliderConstraint.h:122
 
float GetTotalLambdaMotor() const
Definition: SliderConstraint.h:129
 
float GetLimitsMax() const
Definition: SliderConstraint.h:117
 
void SetMotorState(EMotorState inState)
Definition: SliderConstraint.h:107
 
float GetTargetPosition() const
Definition: SliderConstraint.h:112
 
void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)
Definition: SliderConstraint.h:123
 
const SpringSettings & GetLimitsSpringSettings() const
Update the limits spring settings.
Definition: SliderConstraint.h:121
 
void SetTargetVelocity(float inVelocity)
Definition: SliderConstraint.h:109
 
float GetTargetVelocity() const
Definition: SliderConstraint.h:110
 
MotorSettings & GetMotorSettings()
Motor settings.
Definition: SliderConstraint.h:103
 
float GetMaxFrictionForce() const
Definition: SliderConstraint.h:100
 
void SetTargetPosition(float inPosition)
Definition: SliderConstraint.h:111
 
EMotorState GetMotorState() const
Definition: SliderConstraint.h:108
 
Slider constraint settings, used to create a slider constraint.
Definition: SliderConstraint.h:17
 
MotorSettings mMotorSettings
In case the constraint is powered, this determines the motor settings around the sliding axis.
Definition: SliderConstraint.h:59
 
SpringSettings mLimitsSpringSettings
When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will...
Definition: SliderConstraint.h:53
 
Settings for a linear or angular spring.
Definition: SpringSettings.h:23
 
Definition: StateRecorder.h:48
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition: TwoBodyConstraint.h:27
 
Base class for settings for all constraints that involve 2 bodies.
Definition: TwoBodyConstraint.h:16
 
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
 
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition: Vec3.h:53
 
static JPH_INLINE Vec3 sAxisY()
Definition: Vec3.h:54
 
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition: Vec3.inl:107
 
Templatized vector class.
Definition: Vector.h:12