Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/jolt_physics/Jolt/Physics/Constraints/Constraint.cpp
9913 views
1
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2
// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3
// SPDX-License-Identifier: MIT
4
5
#include <Jolt/Jolt.h>
6
7
#include <Jolt/Physics/Constraints/Constraint.h>
8
#include <Jolt/Physics/StateRecorder.h>
9
#include <Jolt/ObjectStream/TypeDeclarations.h>
10
#include <Jolt/Core/StreamUtils.h>
11
12
JPH_NAMESPACE_BEGIN
13
14
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConstraintSettings)
15
{
16
JPH_ADD_BASE_CLASS(ConstraintSettings, SerializableObject)
17
18
JPH_ADD_ATTRIBUTE(ConstraintSettings, mEnabled)
19
JPH_ADD_ATTRIBUTE(ConstraintSettings, mDrawConstraintSize)
20
JPH_ADD_ATTRIBUTE(ConstraintSettings, mConstraintPriority)
21
JPH_ADD_ATTRIBUTE(ConstraintSettings, mNumVelocityStepsOverride)
22
JPH_ADD_ATTRIBUTE(ConstraintSettings, mNumPositionStepsOverride)
23
JPH_ADD_ATTRIBUTE(ConstraintSettings, mUserData)
24
}
25
26
void ConstraintSettings::SaveBinaryState(StreamOut &inStream) const
27
{
28
inStream.Write(GetRTTI()->GetHash());
29
inStream.Write(mEnabled);
30
inStream.Write(mDrawConstraintSize);
31
inStream.Write(mConstraintPriority);
32
inStream.Write(mNumVelocityStepsOverride);
33
inStream.Write(mNumPositionStepsOverride);
34
}
35
36
void ConstraintSettings::RestoreBinaryState(StreamIn &inStream)
37
{
38
// Type hash read by sRestoreFromBinaryState
39
inStream.Read(mEnabled);
40
inStream.Read(mDrawConstraintSize);
41
inStream.Read(mConstraintPriority);
42
inStream.Read(mNumVelocityStepsOverride);
43
inStream.Read(mNumPositionStepsOverride);
44
}
45
46
ConstraintSettings::ConstraintResult ConstraintSettings::sRestoreFromBinaryState(StreamIn &inStream)
47
{
48
return StreamUtils::RestoreObject<ConstraintSettings>(inStream, &ConstraintSettings::RestoreBinaryState);
49
}
50
51
void Constraint::SaveState(StateRecorder &inStream) const
52
{
53
inStream.Write(mEnabled);
54
}
55
56
void Constraint::RestoreState(StateRecorder &inStream)
57
{
58
inStream.Read(mEnabled);
59
}
60
61
void Constraint::ToConstraintSettings(ConstraintSettings &outSettings) const
62
{
63
outSettings.mEnabled = mEnabled;
64
outSettings.mConstraintPriority = mConstraintPriority;
65
outSettings.mNumVelocityStepsOverride = mNumVelocityStepsOverride;
66
outSettings.mNumPositionStepsOverride = mNumPositionStepsOverride;
67
outSettings.mUserData = mUserData;
68
#ifdef JPH_DEBUG_RENDERER
69
outSettings.mDrawConstraintSize = mDrawConstraintSize;
70
#endif // JPH_DEBUG_RENDERER
71
}
72
73
JPH_NAMESPACE_END
74
75