add basic ah physicsworld

This commit is contained in:
2026-06-23 05:04:17 +02:00
parent 85fbf2c1ff
commit 067caf5fe6
25 changed files with 1115 additions and 152 deletions
@@ -0,0 +1,35 @@
#include <destrum/Physics/PhysicsSceneBridge.h>
#include <destrum/Components/Physics/Rigidbody.h>
#include <destrum/ObjectModel/GameObject.h>
PhysicsSceneBridge::PhysicsSceneBridge(std::unique_ptr<PhysicsWorld> world)
: m_World(std::move(world)) {
}
void PhysicsSceneBridge::RegisterGameObject(GameObject& object) {
if (auto* rb = object.GetComponent<Rigidbody>()) {
if (!rb->HasPhysicsBody()) {
m_World->RegisterRigidbody(*rb);
}
}
}
void PhysicsSceneBridge::UnregisterGameObject(GameObject& object) {
if (auto* rb = object.GetComponent<Rigidbody>()) {
if (rb->HasPhysicsBody()) {
m_World->UnregisterRigidbody(*rb);
}
}
}
void PhysicsSceneBridge::FixedUpdate(float fixedDt) {
if (auto* simple = dynamic_cast<SimplePhysicsWorld*>(m_World.get())) {
simple->SyncKinematicBodiesToPhysics();
simple->Step(fixedDt);
simple->SyncDynamicBodiesToTransforms();
return;
}
m_World->Step(fixedDt);
}