SoftBodyVertexRadiusTest.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2024 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include <TestFramework.h>
  5. #include <Tests/SoftBody/SoftBodyVertexRadiusTest.h>
  6. #include <Jolt/Physics/Body/BodyCreationSettings.h>
  7. #include <Jolt/Physics/Collision/Shape/SphereShape.h>
  8. #include <Jolt/Physics/SoftBody/SoftBodyCreationSettings.h>
  9. #include <Utils/SoftBodyCreator.h>
  10. #include <Layers.h>
  11. #include <Application/DebugUI.h>
  12. JPH_IMPLEMENT_RTTI_VIRTUAL(SoftBodyVertexRadiusTest)
  13. {
  14. JPH_ADD_BASE_CLASS(SoftBodyVertexRadiusTest, Test)
  15. }
  16. void SoftBodyVertexRadiusTest::Initialize()
  17. {
  18. // Floor
  19. CreateFloor();
  20. // Create sphere
  21. mBodyInterface->CreateAndAddBody(BodyCreationSettings(new SphereShape(2.0f), RVec3(0, 0, 0), Quat::sIdentity(), EMotionType::Static, Layers::NON_MOVING), EActivation::DontActivate);
  22. // Create cloth with specified vertex radius
  23. mSharedSettings = SoftBodyCreator::CreateCloth(30, 30, 0.5f);
  24. mSharedSettings->mVertexRadius = sVertexRadius;
  25. SoftBodyCreationSettings cloth(mSharedSettings, RVec3(0, 5, 0), Quat::sRotation(Vec3::sAxisY(), 0.25f * JPH_PI), Layers::MOVING);
  26. mBodyInterface->CreateAndAddSoftBody(cloth, EActivation::Activate);
  27. }
  28. void SoftBodyVertexRadiusTest::CreateSettingsMenu(DebugUI *inUI, UIElement *inSubMenu)
  29. {
  30. inUI->CreateSlider(inSubMenu, "Vertex Radius", sVertexRadius, 0.0f, 0.5f, 0.01f, [this](float inValue) { sVertexRadius = inValue; mSharedSettings->mVertexRadius = inValue; });
  31. }