CharacterBase.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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/Character/CharacterBase.h>
  6. #include <Jolt/Physics/StateRecorder.h>
  7. JPH_NAMESPACE_BEGIN
  8. CharacterBase::CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem) :
  9. mSystem(inSystem),
  10. mShape(inSettings->mShape),
  11. mUp(inSettings->mUp),
  12. mSupportingVolume(inSettings->mSupportingVolume)
  13. {
  14. // Initialize max slope angle
  15. SetMaxSlopeAngle(inSettings->mMaxSlopeAngle);
  16. }
  17. void CharacterBase::SaveState(StateRecorder &inStream) const
  18. {
  19. inStream.Write(mGroundState);
  20. inStream.Write(mGroundBodyID);
  21. inStream.Write(mGroundBodySubShapeID);
  22. inStream.Write(mGroundPosition);
  23. inStream.Write(mGroundNormal);
  24. inStream.Write(mGroundVelocity);
  25. // Can't save user data (may be a pointer) and material
  26. }
  27. void CharacterBase::RestoreState(StateRecorder &inStream)
  28. {
  29. inStream.Read(mGroundState);
  30. inStream.Read(mGroundBodyID);
  31. inStream.Read(mGroundBodySubShapeID);
  32. inStream.Read(mGroundPosition);
  33. inStream.Read(mGroundNormal);
  34. inStream.Read(mGroundVelocity);
  35. mGroundUserData = 0; // Cannot restore user data
  36. mGroundMaterial = PhysicsMaterial::sDefault; // Cannot restore material
  37. }
  38. JPH_NAMESPACE_END