add basic ah physicsworld
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user