SoftBodyContactListenerTest.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2024 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Tests/Test.h>
  6. #include <Jolt/Physics/SoftBody/SoftBodyContactListener.h>
  7. // This test shows how to use contact listeners for soft bodies
  8. class SoftBodyContactListenerTest : public Test, public SoftBodyContactListener
  9. {
  10. public:
  11. JPH_DECLARE_RTTI_VIRTUAL(JPH_NO_EXPORT, SoftBodyContactListenerTest)
  12. // See: Test
  13. virtual void Initialize() override;
  14. virtual void PrePhysicsUpdate(const PreUpdateParams &inParams) override;
  15. virtual void GetInitialCamera(CameraState &ioState) const override { ioState.mPos = RVec3(15, 10, 15); }
  16. // Test is not deterministic as it creates/removes bodies in a way that's not compatible with the determinism check
  17. virtual bool IsDeterministic() const override { return false; }
  18. // See: SoftBodyContactListener
  19. virtual SoftBodyValidateResult OnSoftBodyContactValidate(const Body &inSoftBody, const Body &inOtherBody, SoftBodyContactSettings &ioSettings) override;
  20. virtual void OnSoftBodyContactAdded(const Body &inSoftBody, const SoftBodyManifold &inManifold) override;
  21. private:
  22. void StartCycle();
  23. float mTime = 0.0f;
  24. int mCycle = 0;
  25. BodyID mSoftBodyID;
  26. BodyID mOtherBodyID;
  27. };