ActivateDuringUpdateTest.cpp 1.4 KB

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