Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
SliderConstraintSettings Class Referencefinal

Slider constraint settings, used to create a slider constraint. More...

#include <SliderConstraint.h>

Inheritance diagram for SliderConstraintSettings:
TwoBodyConstraintSettings ConstraintSettings SerializableObject RefTarget< ConstraintSettings >

Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 
void SetSliderAxis (Vec3Arg inSliderAxis)
 Simple way of setting the slider and normal axis in world space (assumes the bodies are already oriented correctly when the constraint is created)
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 

Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
bool mAutoDetectPoint = false
 When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (the current relative position/orientation is chosen as the '0' position). Set this to false if you want to supply the attachment points yourself.
 
RVec3 mPoint1 = RVec3::sZero()
 
Vec3 mSliderAxis1 = Vec3::sAxisX()
 
Vec3 mNormalAxis1 = Vec3::sAxisY()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mSliderAxis2 = Vec3::sAxisX()
 
Vec3 mNormalAxis2 = Vec3::sAxisY()
 
float mLimitsMin = -FLT_MAX
 When the bodies move so that mPoint1 coincides with mPoint2 the slider position is defined to be 0, movement will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-inf, 0] and mLimitsMax e [0, inf].
 
float mLimitsMax = FLT_MAX
 
float mFrequency = 0.0f
 
float mDamping = 0.0f
 
float mMaxFrictionForce = 0.0f
 Maximum amount of friction force to apply (N) when not driven by a motor.
 
MotorSettings mMotorSettings
 In case the constraint is powered, this determines the motor settings around the sliding axis.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
int mNumVelocityStepsOverride = 0
 Override for the number of solver velocity iterations to run, the total amount of iterations is the max of PhysicsSettings::mNumVelocitySteps and this for all constraints in the island.
 
int mNumPositionStepsOverride = 0
 Override for the number of position velocity iterations to run, the total amount of iterations is the max of PhysicsSettings::mNumPositionSteps and this for all constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 

Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 

Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result<Ref<ConstraintSettings>>
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 

Detailed Description

Slider constraint settings, used to create a slider constraint.

Member Function Documentation

◆ Create()

TwoBodyConstraint * SliderConstraintSettings::Create ( Body & inBody1,
Body & inBody2 ) const
overridevirtual

Create an an instance of this constraint. Note that the rotation constraint will be solved from body 1. This means that if body 1 and body 2 have different masses / inertias (kinematic body = infinite mass / inertia), body 1 should be the heaviest body.

Implements TwoBodyConstraintSettings.

◆ RestoreBinaryState()

void SliderConstraintSettings::RestoreBinaryState ( StreamIn & inStream)
overrideprotectedvirtual

This function should not be called directly, it is used by sRestoreFromBinaryState.

Reimplemented from ConstraintSettings.

◆ SaveBinaryState()

void SliderConstraintSettings::SaveBinaryState ( StreamOut & inStream) const
overridevirtual

Saves the contents of the constraint settings in binary form to inStream.

Reimplemented from ConstraintSettings.

◆ SetSliderAxis()

void SliderConstraintSettings::SetSliderAxis ( Vec3Arg inSliderAxis)

Simple way of setting the slider and normal axis in world space (assumes the bodies are already oriented correctly when the constraint is created)

Member Data Documentation

◆ mAutoDetectPoint

bool SliderConstraintSettings::mAutoDetectPoint = false

When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (the current relative position/orientation is chosen as the '0' position). Set this to false if you want to supply the attachment points yourself.

◆ mDamping

float SliderConstraintSettings::mDamping = 0.0f

◆ mFrequency

float SliderConstraintSettings::mFrequency = 0.0f

If mFrequency > 0 the constraint limits will be soft and mFrequency specifies the oscillation frequency in Hz and mDamping the damping ratio (0 = no damping, 1 = critical damping). If mFrequency <= 0, mDamping is ignored and the limits will be hard.

◆ mLimitsMax

float SliderConstraintSettings::mLimitsMax = FLT_MAX

◆ mLimitsMin

float SliderConstraintSettings::mLimitsMin = -FLT_MAX

When the bodies move so that mPoint1 coincides with mPoint2 the slider position is defined to be 0, movement will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-inf, 0] and mLimitsMax e [0, inf].

◆ mMaxFrictionForce

float SliderConstraintSettings::mMaxFrictionForce = 0.0f

Maximum amount of friction force to apply (N) when not driven by a motor.

◆ mMotorSettings

MotorSettings SliderConstraintSettings::mMotorSettings

In case the constraint is powered, this determines the motor settings around the sliding axis.

◆ mNormalAxis1

Vec3 SliderConstraintSettings::mNormalAxis1 = Vec3::sAxisY()

◆ mNormalAxis2

Vec3 SliderConstraintSettings::mNormalAxis2 = Vec3::sAxisY()

◆ mPoint1

RVec3 SliderConstraintSettings::mPoint1 = RVec3::sZero()

Body 1 constraint reference frame (space determined by mSpace). Slider axis is the axis along which movement is possible (direction), normal axis is a perpendicular vector to define the frame.

◆ mPoint2

RVec3 SliderConstraintSettings::mPoint2 = RVec3::sZero()

Body 2 constraint reference frame (space determined by mSpace)

◆ mSliderAxis1

Vec3 SliderConstraintSettings::mSliderAxis1 = Vec3::sAxisX()

◆ mSliderAxis2

Vec3 SliderConstraintSettings::mSliderAxis2 = Vec3::sAxisX()

◆ mSpace

EConstraintSpace SliderConstraintSettings::mSpace = EConstraintSpace::WorldSpace

This determines in which space the constraint is setup, all properties below should be in the specified space.


The documentation for this class was generated from the following files: