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 > NonCopyable

Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream. More...
 
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) More...
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const =0
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the constraint settings in binary form to inStream. More...
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor. More...
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor. More...
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us More...
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator. More...
 
uint32 GetRefCount () const
 Get current refcount of this object. More...
 
void AddRef () const
 Add or release a reference to this object. More...
 
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. More...
 
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. More...
 
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) More...
 
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]. More...
 
float mLimitsMax = FLT_MAX
 
SpringSettings mLimitsSpringSettings
 When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back. More...
 
float mMaxFrictionForce = 0.0f
 Maximum amount of friction force to apply (N) when not driven by a motor. More...
 
MotorSettings mMotorSettings
 In case the constraint is powered, this determines the motor settings around the sliding axis. More...
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation. More...
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island. More...
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island. More...
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer. More...
 
uint64 mUserData = 0
 User data value (can be used by application) More...
 

Protected Member Functions

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

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. More...
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION. More...
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count. More...
 
- 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. More...
 

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

◆ 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].

◆ mLimitsSpringSettings

SpringSettings SliderConstraintSettings::mLimitsSpringSettings

When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.

◆ 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: