Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
MotorSettings.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
9
11
12class StreamIn;
13class StreamOut;
14
15enum class EMotorState
16{
17 Off,
18 Velocity,
20};
21
25{
26public:
28
29
30 MotorSettings() = default;
31 MotorSettings(const MotorSettings &inRHS) = default;
32 MotorSettings(float inFrequency, float inDamping) : mFrequency(inFrequency), mDamping(inDamping) { JPH_ASSERT(IsValid()); }
33 MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit) : mFrequency(inFrequency), mDamping(inDamping), mMinForceLimit(-inForceLimit), mMaxForceLimit(inForceLimit), mMinTorqueLimit(-inTorqueLimit), mMaxTorqueLimit(inTorqueLimit) { JPH_ASSERT(IsValid()); }
34
36 void SetForceLimits(float inMin, float inMax) { JPH_ASSERT(inMin <= inMax); mMinForceLimit = inMin; mMaxForceLimit = inMax; }
37
39 void SetTorqueLimits(float inMin, float inMax) { JPH_ASSERT(inMin <= inMax); mMinTorqueLimit = inMin; mMaxTorqueLimit = inMax; }
40
42 void SetForceLimit(float inLimit) { mMinForceLimit = -inLimit; mMaxForceLimit = inLimit; }
43
45 void SetTorqueLimit(float inLimit) { mMinTorqueLimit = -inLimit; mMaxTorqueLimit = inLimit; }
46
48 bool IsValid() const { return mFrequency >= 0.0f && mDamping >= 0.0f && mMinForceLimit <= mMaxForceLimit && mMinTorqueLimit <= mMaxTorqueLimit; }
49
51 void SaveBinaryState(StreamOut &inStream) const;
52
54 void RestoreBinaryState(StreamIn &inStream);
55
56 // Settings
57 float mFrequency = 2.0f;
58 float mDamping = 1.0f;
59 float mMinForceLimit = -FLT_MAX;
60 float mMaxForceLimit = FLT_MAX;
61 float mMinTorqueLimit = -FLT_MAX;
62 float mMaxTorqueLimit = FLT_MAX;
63};
64
#define JPH_NAMESPACE_END
Definition: Core.h:240
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:234
#define JPH_ASSERT(...)
Definition: IssueReporting.h:33
EMotorState
Definition: MotorSettings.h:16
@ Position
Motor will drive to target position.
@ Velocity
Motor will drive to target velocity.
@ Off
Motor is off.
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(class_name)
Definition: SerializableObject.h:71
Definition: MotorSettings.h:25
void RestoreBinaryState(StreamIn &inStream)
Restores contents from the binary stream inStream.
Definition: MotorSettings.cpp:34
float mFrequency
Oscillation frequency when solving position target (Hz). Should be in the range (0,...
Definition: MotorSettings.h:57
float mDamping
Damping when solving position target (0 = minimal damping, 1 = critical damping). Only used for posit...
Definition: MotorSettings.h:58
MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)
Definition: MotorSettings.h:33
void SetForceLimits(float inMin, float inMax)
Set asymmetric force limits.
Definition: MotorSettings.h:36
void SetTorqueLimits(float inMin, float inMax)
Set asymmetric torque limits.
Definition: MotorSettings.h:39
float mMaxTorqueLimit
Maximum torque to apply in case of a angular constraint (N m). Not used when motor is a position moto...
Definition: MotorSettings.h:62
float mMinTorqueLimit
Minimum torque to apply in case of a angular constraint (N m). Usually this is -mMaxTorqueLimit unles...
Definition: MotorSettings.h:61
void SetForceLimit(float inLimit)
Set symmetric force limits.
Definition: MotorSettings.h:42
bool IsValid() const
Check if settings are valid.
Definition: MotorSettings.h:48
void SetTorqueLimit(float inLimit)
Set symmetric torque limits.
Definition: MotorSettings.h:45
float mMaxForceLimit
Maximum force to apply in case of a linear constraint (N). Not used when motor is an angular motor.
Definition: MotorSettings.h:60
void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the motor settings in binary form to inStream.
Definition: MotorSettings.cpp:24
float mMinForceLimit
Minimum force to apply in case of a linear constraint (N). Usually this is -mMaxForceLimit unless you...
Definition: MotorSettings.h:59
Simple binary input stream.
Definition: StreamIn.h:11
Simple binary output stream.
Definition: StreamOut.h:11