MotionProperties.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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/Body/MotionProperties.h>
  6. #include <Jolt/Physics/StateRecorder.h>
  7. JPH_NAMESPACE_BEGIN
  8. void MotionProperties::SaveState(StateRecorder &inStream) const
  9. {
  10. // Only write properties that can change at runtime
  11. inStream.Write(mLinearVelocity);
  12. inStream.Write(mAngularVelocity);
  13. inStream.Write(mForce);
  14. inStream.Write(mTorque);
  15. inStream.Write(mLinearDamping);
  16. inStream.Write(mAngularDamping);
  17. inStream.Write(mMaxLinearVelocity);
  18. inStream.Write(mMaxAngularVelocity);
  19. inStream.Write(mGravityFactor);
  20. #ifdef JPH_DOUBLE_PRECISION
  21. inStream.Write(mSleepTestOffset);
  22. #endif // JPH_DOUBLE_PRECISION
  23. inStream.Write(mSleepTestSpheres);
  24. inStream.Write(mSleepTestTimer);
  25. inStream.Write(mMotionQuality);
  26. inStream.Write(mAllowSleeping);
  27. }
  28. void MotionProperties::RestoreState(StateRecorder &inStream)
  29. {
  30. inStream.Read(mLinearVelocity);
  31. inStream.Read(mAngularVelocity);
  32. inStream.Read(mForce);
  33. inStream.Read(mTorque);
  34. inStream.Read(mLinearDamping);
  35. inStream.Read(mAngularDamping);
  36. inStream.Read(mMaxLinearVelocity);
  37. inStream.Read(mMaxAngularVelocity);
  38. inStream.Read(mGravityFactor);
  39. #ifdef JPH_DOUBLE_PRECISION
  40. inStream.Read(mSleepTestOffset);
  41. #endif // JPH_DOUBLE_PRECISION
  42. inStream.Read(mSleepTestSpheres);
  43. inStream.Read(mSleepTestTimer);
  44. inStream.Read(mMotionQuality);
  45. inStream.Read(mAllowSleeping);
  46. }
  47. JPH_NAMESPACE_END