ActivateDuringUpdateTest.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include <TestFramework.h>
  5. #include <Tests/General/ActivateDuringUpdateTest.h>
  6. #include <Layers.h>
  7. #include <Jolt/Physics/Collision/Shape/BoxShape.h>
  8. #include <Jolt/Physics/Body/BodyCreationSettings.h>
  9. JPH_IMPLEMENT_RTTI_VIRTUAL(ActivateDuringUpdateTest)
  10. {
  11. JPH_ADD_BASE_CLASS(ActivateDuringUpdateTest, Test)
  12. }
  13. void ActivateDuringUpdateTest::Initialize()
  14. {
  15. // Floor
  16. CreateFloor();
  17. BodyCreationSettings settings;
  18. settings.SetShape(new BoxShape(Vec3::sReplicate(0.5f)));
  19. settings.mMotionType = EMotionType::Dynamic;
  20. settings.mObjectLayer = Layers::MOVING;
  21. const int cNumBodies = 3;
  22. const float cPenetrationSlop = mPhysicsSystem->GetPhysicsSettings().mPenetrationSlop;
  23. for (int i = 0; i < cNumBodies; ++i)
  24. {
  25. settings.mPosition = RVec3(i * (1.0f - cPenetrationSlop), 2.0f, 0);
  26. BodyID body_id = mBodyInterface->CreateBody(settings)->GetID();
  27. mBodyInterface->AddBody(body_id, EActivation::DontActivate);
  28. if (i == 0)
  29. mBodyInterface->SetLinearVelocity(body_id, Vec3(500, 0, 0));
  30. }
  31. for (int i = 0; i < cNumBodies; ++i)
  32. {
  33. settings.mPosition = RVec3(i * (1.0f - cPenetrationSlop), 2.0f, 2.0f);
  34. BodyID body_id = mBodyInterface->CreateBody(settings)->GetID();
  35. mBodyInterface->AddBody(body_id, EActivation::DontActivate);
  36. if (i == cNumBodies - 1)
  37. mBodyInterface->SetLinearVelocity(body_id, Vec3(-500, 0, 0));
  38. }
  39. }