From c727d7ff38d2ff8514fedf8ba6d7611a43095a34 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 4 Jan 2026 23:51:31 +0000 Subject: [PATCH] refactor: Update physics bridge integration and service architecture --- CMakeLists.txt | 3 +-- src/services/impl/bullet_physics_service.cpp | 4 ++-- src/services/impl/bullet_physics_service.hpp | 4 ++-- src/{script => services/impl}/physics_bridge.cpp | 10 +++++----- src/{script => services/impl}/physics_bridge.hpp | 9 +++------ src/services/impl/physics_bridge_service.cpp | 2 +- src/services/impl/physics_bridge_service.hpp | 4 ++-- src/services/interfaces/i_physics_bridge_service.hpp | 4 +++- 8 files changed, 19 insertions(+), 21 deletions(-) rename src/{script => services/impl}/physics_bridge.cpp (94%) rename src/{script => services/impl}/physics_bridge.hpp (89%) diff --git a/CMakeLists.txt b/CMakeLists.txt index d8c0af3..1ff6374 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/services/impl/bullet_physics_service.cpp b/src/services/impl/bullet_physics_service.cpp index d45b6cc..5fc771c 100644 --- a/src/services/impl/bullet_physics_service.cpp +++ b/src/services/impl/bullet_physics_service.cpp @@ -21,7 +21,7 @@ void BulletPhysicsService::Initialize(const btVector3& gravity) { return; } - physicsBridge_ = std::make_unique(logger_); + physicsBridge_ = std::make_unique(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(logger_); + physicsBridge_ = std::make_unique(logger_); } } // namespace sdl3cpp::services::impl diff --git a/src/services/impl/bullet_physics_service.hpp b/src/services/impl/bullet_physics_service.hpp index 08be5f4..37c45b9 100644 --- a/src/services/impl/bullet_physics_service.hpp +++ b/src/services/impl/bullet_physics_service.hpp @@ -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 @@ -54,7 +54,7 @@ public: private: std::shared_ptr logger_; - std::unique_ptr physicsBridge_; + std::unique_ptr physicsBridge_; bool initialized_ = false; }; diff --git a/src/script/physics_bridge.cpp b/src/services/impl/physics_bridge.cpp similarity index 94% rename from src/script/physics_bridge.cpp rename to src/services/impl/physics_bridge.cpp index 2981455..c6ed1f7 100644 --- a/src/script/physics_bridge.cpp +++ b/src/services/impl/physics_bridge.cpp @@ -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 -namespace sdl3cpp::script { +namespace sdl3cpp::services::impl { PhysicsBridge::PhysicsBridge(std::shared_ptr logger) : collisionConfig_(std::make_unique()), @@ -15,7 +15,7 @@ PhysicsBridge::PhysicsBridge(std::shared_ptr 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 diff --git a/src/script/physics_bridge.hpp b/src/services/impl/physics_bridge.hpp similarity index 89% rename from src/script/physics_bridge.hpp rename to src/services/impl/physics_bridge.hpp index 57917b3..80a2256 100644 --- a/src/script/physics_bridge.hpp +++ b/src/services/impl/physics_bridge.hpp @@ -1,5 +1,4 @@ -#ifndef SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP -#define SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP +#pragma once #include #include @@ -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 logger_; }; -} // namespace sdl3cpp::script - -#endif // SDL3CPP_SCRIPT_PHYSICS_BRIDGE_HPP +} // namespace sdl3cpp::services::impl diff --git a/src/services/impl/physics_bridge_service.cpp b/src/services/impl/physics_bridge_service.cpp index 812ef8d..9d1dba5 100644 --- a/src/services/impl/physics_bridge_service.cpp +++ b/src/services/impl/physics_bridge_service.cpp @@ -4,7 +4,7 @@ namespace sdl3cpp::services::impl { PhysicsBridgeService::PhysicsBridgeService(std::shared_ptr logger) - : bridge_(std::make_unique(logger)), + : bridge_(std::make_unique(logger)), logger_(std::move(logger)) { if (logger_) { logger_->Trace("PhysicsBridgeService", "PhysicsBridgeService"); diff --git a/src/services/impl/physics_bridge_service.hpp b/src/services/impl/physics_bridge_service.hpp index 700fd5a..51a680f 100644 --- a/src/services/impl/physics_bridge_service.hpp +++ b/src/services/impl/physics_bridge_service.hpp @@ -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 namespace sdl3cpp::services::impl { @@ -25,7 +25,7 @@ public: std::string& error) const override; private: - std::unique_ptr bridge_; + std::unique_ptr bridge_; std::shared_ptr logger_; }; diff --git a/src/services/interfaces/i_physics_bridge_service.hpp b/src/services/interfaces/i_physics_bridge_service.hpp index 0b6d8e1..7d12c90 100644 --- a/src/services/interfaces/i_physics_bridge_service.hpp +++ b/src/services/interfaces/i_physics_bridge_service.hpp @@ -1,8 +1,10 @@ #pragma once -#include "../../script/physics_bridge.hpp" #include +class btVector3; +class btTransform; + namespace sdl3cpp::services { /**