Constraint.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include <Jolt/Jolt.h>
  5. #include <Jolt/Physics/Constraints/Constraint.h>
  6. #include <Jolt/Physics/StateRecorder.h>
  7. #include <Jolt/ObjectStream/TypeDeclarations.h>
  8. #include <Jolt/Core/StreamUtils.h>
  9. JPH_NAMESPACE_BEGIN
  10. JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConstraintSettings)
  11. {
  12. JPH_ADD_BASE_CLASS(ConstraintSettings, SerializableObject)
  13. JPH_ADD_ATTRIBUTE(ConstraintSettings, mEnabled)
  14. JPH_ADD_ATTRIBUTE(ConstraintSettings, mDrawConstraintSize)
  15. JPH_ADD_ATTRIBUTE(ConstraintSettings, mConstraintPriority)
  16. JPH_ADD_ATTRIBUTE(ConstraintSettings, mNumVelocityStepsOverride)
  17. JPH_ADD_ATTRIBUTE(ConstraintSettings, mNumPositionStepsOverride)
  18. JPH_ADD_ATTRIBUTE(ConstraintSettings, mUserData)
  19. }
  20. void ConstraintSettings::SaveBinaryState(StreamOut &inStream) const
  21. {
  22. inStream.Write(GetRTTI()->GetHash());
  23. inStream.Write(mEnabled);
  24. inStream.Write(mDrawConstraintSize);
  25. inStream.Write(mConstraintPriority);
  26. inStream.Write(mNumVelocityStepsOverride);
  27. inStream.Write(mNumPositionStepsOverride);
  28. }
  29. void ConstraintSettings::RestoreBinaryState(StreamIn &inStream)
  30. {
  31. // Type hash read by sRestoreFromBinaryState
  32. inStream.Read(mEnabled);
  33. inStream.Read(mDrawConstraintSize);
  34. inStream.Read(mConstraintPriority);
  35. inStream.Read(mNumVelocityStepsOverride);
  36. inStream.Read(mNumPositionStepsOverride);
  37. }
  38. ConstraintSettings::ConstraintResult ConstraintSettings::sRestoreFromBinaryState(StreamIn &inStream)
  39. {
  40. return StreamUtils::RestoreObject<ConstraintSettings>(inStream, &ConstraintSettings::RestoreBinaryState);
  41. }
  42. void Constraint::SaveState(StateRecorder &inStream) const
  43. {
  44. inStream.Write(mEnabled);
  45. }
  46. void Constraint::RestoreState(StateRecorder &inStream)
  47. {
  48. inStream.Read(mEnabled);
  49. }
  50. void Constraint::ToConstraintSettings(ConstraintSettings &outSettings) const
  51. {
  52. outSettings.mEnabled = mEnabled;
  53. outSettings.mConstraintPriority = mConstraintPriority;
  54. outSettings.mNumVelocityStepsOverride = mNumVelocityStepsOverride;
  55. outSettings.mNumPositionStepsOverride = mNumPositionStepsOverride;
  56. outSettings.mUserData = mUserData;
  57. #ifdef JPH_DEBUG_RENDERER
  58. outSettings.mDrawConstraintSize = mDrawConstraintSize;
  59. #endif // JPH_DEBUG_RENDERER
  60. }
  61. JPH_NAMESPACE_END