50 MotorSettings(
ESpringMode inMode,
float inFrequency,
float inDamping,
float inForceLimit,
float inTorqueLimit) : mSpringSettings(inMode, inFrequency, inDamping), mMinForceLimit(-inForceLimit), mMaxForceLimit(inForceLimit), mMinTorqueLimit(-inTorqueLimit), mMaxTorqueLimit(inTorqueLimit) {
JPH_ASSERT(IsValid()); }
51 MotorSettings(
float inFrequency,
float inDamping,
float inForceLimit,
float inTorqueLimit) : mSpringSettings(
ESpringMode::
FrequencyAndDamping, inFrequency, inDamping), mMinForceLimit(-inForceLimit), mMaxForceLimit(inForceLimit), mMinTorqueLimit(-inTorqueLimit), mMaxTorqueLimit(inTorqueLimit) {
JPH_ASSERT(IsValid()); }
60 void SetForceLimit(
float inLimit) { mMinForceLimit = -inLimit; mMaxForceLimit = inLimit; }
63 void SetTorqueLimit(
float inLimit) { mMinTorqueLimit = -inLimit; mMaxTorqueLimit = inLimit; }
66 bool IsValid()
const {
return mSpringSettings.mFrequency >= 0.0f && mSpringSettings.mDamping >= 0.0f && mMinForceLimit <= mMaxForceLimit && mMinTorqueLimit <= mMaxTorqueLimit; }
69 void SaveBinaryState(
StreamOut &inStream)
const;
72 void RestoreBinaryState(
StreamIn &inStream);
76 float mMinForceLimit = -FLT_MAX;
77 float mMaxForceLimit = FLT_MAX;
78 float mMinTorqueLimit = -FLT_MAX;
79 float mMaxTorqueLimit = FLT_MAX;
#define JPH_EXPORT
Definition Core.h:278
#define JPH_NAMESPACE_END
Definition Core.h:428
#define JPH_NAMESPACE_BEGIN
Definition Core.h:422
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
constexpr bool IsPositionMotor(EMotorState inMotorState)
Definition MotorSettings.h:26
EMotorState
Definition MotorSettings.h:17
@ PositionAndVelocity
Motor will drive both to target position and velocity using: force = stiffness * (target_position - c...
@ Position
Motor will drive to target position using: force = stiffness * (target_position - current_position) -...
@ Velocity
Motor will drive to target velocity limited only by max force/torque that the motor can apply.
constexpr bool IsVelocityMotor(EMotorState inMotorState)
Definition MotorSettings.h:25
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
ESpringMode
Enum used by constraints to specify how the spring is defined.
Definition SpringSettings.h:16
@ FrequencyAndDamping
Frequency and damping are specified.
Definition MotorSettings.h:40
MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)
Definition MotorSettings.h:51
void SetForceLimits(float inMin, float inMax)
Set asymmetric force limits.
Definition MotorSettings.h:54
void SetTorqueLimits(float inMin, float inMax)
Set asymmetric torque limits.
Definition MotorSettings.h:57
MotorSettings(const MotorSettings &)=default
void SetForceLimit(float inLimit)
Set symmetric force limits.
Definition MotorSettings.h:60
MotorSettings(float inFrequency, float inDamping)
Definition MotorSettings.h:49
bool IsValid() const
Check if settings are valid.
Definition MotorSettings.h:66
MotorSettings(ESpringMode inMode, float inFrequency, float inDamping)
Definition MotorSettings.h:48
void SetTorqueLimit(float inLimit)
Set symmetric torque limits.
Definition MotorSettings.h:63
MotorSettings()=default
Constructor.
MotorSettings(ESpringMode inMode, float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)
Definition MotorSettings.h:50
Settings for a linear or angular spring.
Definition SpringSettings.h:24
Simple binary input stream.
Definition StreamIn.h:13
Simple binary output stream.
Definition StreamOut.h:13