ModifyMassTest.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2023 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Tests/Test.h>
  6. #include <Jolt/Physics/Collision/ContactListener.h>
  7. // Tests modifying mass from a contact listener
  8. class ModifyMassTest : public Test, public ContactListener
  9. {
  10. public:
  11. JPH_DECLARE_RTTI_VIRTUAL(JPH_NO_EXPORT, ModifyMassTest)
  12. // See: Test
  13. virtual void Initialize() override;
  14. virtual void PrePhysicsUpdate(const PreUpdateParams &inParams) override;
  15. virtual void PostPhysicsUpdate(float inDeltaTime) override;
  16. virtual void SaveState(StateRecorder& inStream) const override;
  17. virtual void RestoreState(StateRecorder& inStream) override;
  18. // If this test implements a contact listener, it should be returned here
  19. virtual ContactListener * GetContactListener() override { return this; }
  20. // See: ContactListener
  21. virtual void OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings) override;
  22. virtual void OnContactPersisted(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings) override;
  23. private:
  24. // Get the scale factor for a body based on its user data
  25. static float sGetInvMassScale(const Body &inBody);
  26. // Reset the bodies to their initial states
  27. void ResetBodies(int inCycle);
  28. float mTime = 0.0f;
  29. BodyID mBodies[2];
  30. };