refactor: Update physics bridge integration and service architecture

This commit is contained in:
2026-01-04 23:51:31 +00:00
parent 19c369aac1
commit c727d7ff38
8 changed files with 19 additions and 21 deletions

View File

@@ -148,11 +148,11 @@ if(BUILD_SDL3_APP)
src/services/impl/gui_renderer_service.cpp
src/services/impl/vulkan_gui_service.cpp
src/services/impl/bullet_physics_service.cpp
src/services/impl/physics_bridge.cpp
src/services/impl/scene_service.cpp
src/services/impl/graphics_service.cpp
src/app/service_based_app.cpp
src/gui/gui_renderer.cpp
src/script/physics_bridge.cpp
)
target_include_directories(sdl3_app PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
target_link_libraries(sdl3_app PRIVATE ${SDL_TARGET} Vulkan::Vulkan lua::lua CLI11::CLI11 rapidjson assimp::assimp Bullet::Bullet glm::glm Vorbis::vorbisfile Vorbis::vorbis)
@@ -180,7 +180,6 @@ add_executable(script_engine_tests
src/services/impl/lua_helpers.cpp
src/services/impl/scene_script_service.cpp
src/services/impl/shader_script_service.cpp
src/script/physics_bridge.cpp
)
target_include_directories(script_engine_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
target_link_libraries(script_engine_tests PRIVATE ${SDL_TARGET} lua::lua assimp::assimp Bullet::Bullet glm::glm Vorbis::vorbisfile Vorbis::vorbis)

View File

@@ -21,7 +21,7 @@ void BulletPhysicsService::Initialize(const btVector3& gravity) {
return;
}
physicsBridge_ = std::make_unique<script::PhysicsBridge>(logger_);
physicsBridge_ = std::make_unique<PhysicsBridge>(logger_);
initialized_ = true;
logger_->Info("Physics service initialized");
@@ -140,7 +140,7 @@ void BulletPhysicsService::Clear() {
// PhysicsBridge doesn't expose Clear in current implementation
// Shutdown and reinitialize to clear all bodies
physicsBridge_.reset();
physicsBridge_ = std::make_unique<script::PhysicsBridge>(logger_);
physicsBridge_ = std::make_unique<PhysicsBridge>(logger_);
}
} // namespace sdl3cpp::services::impl

View File

@@ -2,7 +2,7 @@
#include "../interfaces/i_physics_service.hpp"
#include "../interfaces/i_logger.hpp"
#include "../../script/physics_bridge.hpp"
#include "physics_bridge.hpp"
#include "../../di/lifecycle.hpp"
#include <memory>
@@ -54,7 +54,7 @@ public:
private:
std::shared_ptr<ILogger> logger_;
std::unique_ptr<script::PhysicsBridge> physicsBridge_;
std::unique_ptr<PhysicsBridge> physicsBridge_;
bool initialized_ = false;
};

View File

@@ -1,9 +1,9 @@
#include "script/physics_bridge.hpp"
#include "services/interfaces/i_logger.hpp"
#include "physics_bridge.hpp"
#include "../interfaces/i_logger.hpp"
#include <btBulletDynamicsCommon.h>
namespace sdl3cpp::script {
namespace sdl3cpp::services::impl {
PhysicsBridge::PhysicsBridge(std::shared_ptr<services::ILogger> logger)
: collisionConfig_(std::make_unique<btDefaultCollisionConfiguration>()),
@@ -15,7 +15,7 @@ PhysicsBridge::PhysicsBridge(std::shared_ptr<services::ILogger> logger)
broadphase_.get(),
solver_.get(),
collisionConfig_.get())),
logger_(logger) {
logger_(std::move(logger)) {
if (logger_) {
logger_->Trace("PhysicsBridge", "PhysicsBridge");
}
@@ -102,4 +102,4 @@ bool PhysicsBridge::getRigidBodyTransform(const std::string& name,
return true;
}
} // namespace sdl3cpp::script
} // namespace sdl3cpp::services::impl

View File

@@ -1,5 +1,4 @@
#ifndef SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP
#define SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP
#pragma once
#include <memory>
#include <string>
@@ -20,7 +19,7 @@ class btBroadphaseInterface;
class btSequentialImpulseConstraintSolver;
class btDiscreteDynamicsWorld;
namespace sdl3cpp::script {
namespace sdl3cpp::services::impl {
class PhysicsBridge {
public:
@@ -56,6 +55,4 @@ private:
std::shared_ptr<services::ILogger> logger_;
};
} // namespace sdl3cpp::script
#endif // SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP
} // namespace sdl3cpp::services::impl

View File

@@ -4,7 +4,7 @@
namespace sdl3cpp::services::impl {
PhysicsBridgeService::PhysicsBridgeService(std::shared_ptr<ILogger> logger)
: bridge_(std::make_unique<script::PhysicsBridge>(logger)),
: bridge_(std::make_unique<PhysicsBridge>(logger)),
logger_(std::move(logger)) {
if (logger_) {
logger_->Trace("PhysicsBridgeService", "PhysicsBridgeService");

View File

@@ -2,7 +2,7 @@
#include "../interfaces/i_physics_bridge_service.hpp"
#include "../interfaces/i_logger.hpp"
#include "../../script/physics_bridge.hpp"
#include "physics_bridge.hpp"
#include <memory>
namespace sdl3cpp::services::impl {
@@ -25,7 +25,7 @@ public:
std::string& error) const override;
private:
std::unique_ptr<script::PhysicsBridge> bridge_;
std::unique_ptr<PhysicsBridge> bridge_;
std::shared_ptr<ILogger> logger_;
};

View File

@@ -1,8 +1,10 @@
#pragma once
#include "../../script/physics_bridge.hpp"
#include <string>
class btVector3;
class btTransform;
namespace sdl3cpp::services {
/**