21#ifdef JPH_DEBUG_RENDERER
114#ifdef JPH_DEBUG_RENDERER
117 mConstraintPriority(inSettings.mConstraintPriority),
118 mNumVelocityStepsOverride(
uint8(inSettings.mNumVelocityStepsOverride)),
119 mNumPositionStepsOverride(
uint8(inSettings.mNumPositionStepsOverride)),
120 mEnabled(inSettings.mEnabled),
121 mUserData(inSettings.mUserData)
189#ifdef JPH_DEBUG_RENDERER
213#ifdef JPH_DEBUG_RENDERER
222 static constexpr uint32 cInvalidConstraintIndex = 0xffffffff;
225 uint32 mConstraintIndex = cInvalidConstraintIndex;
228 uint32 mConstraintPriority = 0;
231 uint8 mNumVelocityStepsOverride = 0;
234 uint8 mNumPositionStepsOverride = 0;
237 bool mEnabled =
true;
EConstraintType
Enum to identify constraint type.
Definition Constraint.h:27
@ Constraint
Definition Constraint.h:28
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
@ LocalToBodyCOM
All constraint properties are specified in local space to center of mass of the bodies that are being...
Definition Constraint.h:59
@ WorldSpace
All constraint properties are specified in world space.
Definition Constraint.h:60
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
@ Distance
Definition Constraint.h:39
@ Hinge
Definition Constraint.h:37
@ Point
Definition Constraint.h:36
@ Slider
Definition Constraint.h:38
@ Fixed
Definition Constraint.h:35
@ SwingTwist
Definition Constraint.h:41
@ User4
Definition Constraint.h:53
@ User1
User defined constraint types start here.
Definition Constraint.h:50
@ RackAndPinion
Definition Constraint.h:45
@ User2
Definition Constraint.h:51
@ Path
Definition Constraint.h:43
@ Pulley
Definition Constraint.h:47
@ SixDOF
Definition Constraint.h:42
@ Cone
Definition Constraint.h:40
@ Vehicle
Definition Constraint.h:44
@ User3
Definition Constraint.h:52
@ Gear
Definition Constraint.h:46
std::uint8_t uint8
Definition Core.h:501
#define JPH_EXPORT
Definition Core.h:275
std::uint64_t uint64
Definition Core.h:504
unsigned int uint
Definition Core.h:500
#define JPH_NAMESPACE_END
Definition Core.h:425
std::uint32_t uint32
Definition Core.h:503
#define JPH_NAMESPACE_BEGIN
Definition Core.h:419
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
const Vec3 Vec3Arg
Definition MathTypes.h:19
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:50
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
Definition BodyManager.h:47
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:108
virtual ~Constraint()=default
Virtual destructor.
virtual void SetupVelocityConstraint(float inDeltaTime)=0
virtual bool IsActive() const
Definition Constraint.h:176
virtual Ref< ConstraintSettings > GetConstraintSettings() const =0
Debug function to convert a constraint to its settings, note that this will not save to which bodies ...
bool GetEnabled() const
Test if a constraint is enabled.
Definition Constraint.h:156
void SetUserData(uint64 inUserData)
Definition Constraint.h:160
virtual bool SolveVelocityConstraint(float inDeltaTime)=0
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0
void SetConstraintPriority(uint32 inPriority)
Definition Constraint.h:139
void SetNumVelocityStepsOverride(uint inN)
Used only when the constraint is active. Override for the number of solver velocity iterations to run...
Definition Constraint.h:142
uint64 GetUserData() const
Access to the user data, can be used for anything by the application.
Definition Constraint.h:159
virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const
Definition Constraint.h:192
uint GetNumVelocityStepsOverride() const
Definition Constraint.h:143
virtual EConstraintSubType GetSubType() const =0
Get the sub type of a constraint.
virtual uint BuildIslandSplits(LargeIslandSplitter &ioSplitter) const =0
Link bodies that are connected by this constraint in the same split. Returns the split index.
uint32 GetConstraintPriority() const
Definition Constraint.h:138
virtual EConstraintType GetType() const
Get the type of a constraint.
Definition Constraint.h:131
float GetDrawConstraintSize() const
Size of constraint when drawing it through the debug renderer.
Definition Constraint.h:196
void SetNumPositionStepsOverride(uint inN)
Used only when the constraint is active. Override for the number of solver position iterations to run...
Definition Constraint.h:146
virtual void DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const
Definition Constraint.h:193
void ToConstraintSettings(ConstraintSettings &outSettings) const
Helper function to copy settings back to constraint settings for this base class.
Definition Constraint.cpp:61
void SetEnabled(bool inEnabled)
Definition Constraint.h:153
virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio)=0
virtual void DrawConstraint(DebugRenderer *inRenderer) const =0
friend class ConstraintManager
Definition Constraint.h:219
uint GetNumPositionStepsOverride() const
Definition Constraint.h:147
virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte)=0
JPH_OVERRIDE_NEW_DELETE Constraint(const ConstraintSettings &inSettings)
Constructor.
Definition Constraint.h:113
void SetDrawConstraintSize(float inSize)
Definition Constraint.h:197
float mDrawConstraintSize
Size of constraint when drawing it through the debug renderer.
Definition Constraint.h:215
virtual void BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager)=0
Link bodies that are connected by this constraint in the island builder.
virtual void ResetWarmStart()=0
Class used to store the configuration of a constraint. Allows run-time creation of constraints.
Definition Constraint.h:65
static ConstraintResult sRestoreFromBinaryState(StreamIn &inStream)
Creates a constraint of the correct type and restores its contents from the binary stream inStream.
Definition Constraint.cpp:46
bool mEnabled
If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
Definition Constraint.h:78
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
ConstraintSettings(const ConstraintSettings &)=default
uint64 mUserData
User data value (can be used by application).
Definition Constraint.h:94
uint mNumPositionStepsOverride
Used only when the constraint is active. Override for the number of solver position iterations to run...
Definition Constraint.h:88
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
ConstraintSettings()=default
Don't allow (copy) constructing this base class, but allow derived classes to (copy) construct themse...
uint32 mConstraintPriority
Definition Constraint.h:82
Result< Ref< ConstraintSettings > > ConstraintResult
Definition Constraint.h:69
float mDrawConstraintSize
Size of constraint when drawing it through the debug renderer.
Definition Constraint.h:91
uint mNumVelocityStepsOverride
Used only when the constraint is active. Override for the number of solver velocity iterations to run...
Definition Constraint.h:85
Definition DebugRenderer.h:47
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
Definition LargeIslandSplitter.h:27
Definition Reference.h:107
Helper class that either contains a valid result or an error.
Definition Result.h:12
SerializableObject()=default
Don't allow (copy) constructing this base class, but allow derived classes to (copy) construct themse...
SerializableObject & operator=(const SerializableObject &)=default
Definition StateRecorder.h:110
Simple binary input stream.
Definition StreamIn.h:13
Simple binary output stream.
Definition StreamOut.h:13
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27