mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-24 13:44:58 +00:00
refactor: Update physics bridge integration and service architecture
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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");
|
||||
|
||||
@@ -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_;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../script/physics_bridge.hpp"
|
||||
#include <string>
|
||||
|
||||
class btVector3;
|
||||
class btTransform;
|
||||
|
||||
namespace sdl3cpp::services {
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user