Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
SpringSettings.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
8
10
11class StreamIn;
12class StreamOut;
13
21
24{
26
27public:
29 SpringSettings() = default;
30 SpringSettings(const SpringSettings &) = default;
31 SpringSettings & operator = (const SpringSettings &) = default;
32 SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping) : mMode(inMode), mFrequency(inFrequencyOrStiffness), mDamping(inDamping) { }
33
35 void SaveBinaryState(StreamOut &inStream) const;
36
38 void RestoreBinaryState(StreamIn &inStream);
39
41 inline bool HasStiffness() const { return mFrequency > 0.0f; }
42
44 inline bool HasStiffnessOrDamping() const { return mFrequency > 0.0f || (mMode != ESpringMode::FrequencyAndDamping && mDamping > 0.0f); }
45
48
49 union
50 {
54 float mFrequency = 0.0f;
55
71 };
72
84 float mDamping = 0.0f;
85};
86
std::uint8_t uint8
Definition Core.h:505
#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_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
@ MassNormalizedStiffnessAndDamping
Stiffness and damping divided by mass / inertia are specified (also known as acceleration mode)....
@ FrequencyAndDamping
Frequency and damping are specified.
@ StiffnessAndDamping
Stiffness and damping are specified.
Settings for a linear or angular spring.
Definition SpringSettings.h:24
SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping)
Definition SpringSettings.h:32
bool HasStiffnessOrDamping() const
Check if this spring has stiffness or damping (making it active), if not the constraint will be hard.
Definition SpringSettings.h:44
float mStiffness
Definition SpringSettings.h:70
SpringSettings(const SpringSettings &)=default
SpringSettings()=default
Constructor.
bool HasStiffness() const
Check if the spring has a valid frequency / stiffness, if not the spring will be hard.
Definition SpringSettings.h:41
Simple binary input stream.
Definition StreamIn.h:13
Simple binary output stream.
Definition StreamOut.h:13