#include #include #include PhysicsSceneBridge::PhysicsSceneBridge(std::unique_ptr world) : m_World(std::move(world)) { } void PhysicsSceneBridge::RegisterGameObject(GameObject& object) { if (auto* rb = object.GetComponent()) { if (!rb->HasPhysicsBody()) { m_World->RegisterRigidbody(*rb); } } } void PhysicsSceneBridge::UnregisterGameObject(GameObject& object) { if (auto* rb = object.GetComponent()) { if (rb->HasPhysicsBody()) { m_World->UnregisterRigidbody(*rb); } } } void PhysicsSceneBridge::FixedUpdate(float fixedDt) { if (auto* simple = dynamic_cast(m_World.get())) { simple->SyncKinematicBodiesToPhysics(); simple->Step(fixedDt); simple->SyncDynamicBodiesToTransforms(); return; } m_World->Step(fixedDt); }