mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-24 13:44:58 +00:00
ROADMAP.md
This commit is contained in:
216
CMakeLists.txt
216
CMakeLists.txt
@@ -285,25 +285,27 @@ set(JSON_CONFIG_SOURCES
|
||||
src/services/impl/config/json_config_migration_service.cpp
|
||||
)
|
||||
|
||||
file(GLOB WORKFLOW_GENERIC_STEP_SOURCES CONFIGURE_DEPENDS
|
||||
src/services/impl/workflow/workflow_generic_steps/*.cpp
|
||||
)
|
||||
|
||||
set(WORKFLOW_SOURCES
|
||||
src/services/impl/workflow/workflow_step_io_resolver.cpp
|
||||
src/services/impl/workflow/workflow_step_parameter_resolver.cpp
|
||||
src/services/impl/workflow/workflow_step_registry.cpp
|
||||
src/services/impl/workflow/workflow_executor.cpp
|
||||
src/services/impl/workflow/workflow_definition_parser.cpp
|
||||
src/services/impl/workflow/workflow_template_resolver.cpp
|
||||
src/services/impl/workflow/workflow_camera_view_state_builder.cpp
|
||||
src/services/impl/workflow/workflow_config_pipeline.cpp
|
||||
src/services/impl/workflow/workflow_config_load_step.cpp
|
||||
src/services/impl/workflow/workflow_config_version_step.cpp
|
||||
src/services/impl/workflow/workflow_config_migration_step.cpp
|
||||
src/services/impl/workflow/workflow_config_schema_step.cpp
|
||||
src/services/impl/workflow/workflow_default_step_registrar.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_list_filter_equals_step.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_list_map_add_step.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_list_reduce_sum_step.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_number_add_step.cpp
|
||||
src/services/impl/workflow/workflow_mesh_payload_converter.cpp
|
||||
src/services/impl/workflow/workflow_runtime_config_step.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_value_copy_step.cpp
|
||||
src/services/impl/workflow/workflow_generic_steps/workflow_value_default_step.cpp
|
||||
${WORKFLOW_GENERIC_STEP_SOURCES}
|
||||
)
|
||||
|
||||
set(FRAME_WORKFLOW_SOURCES
|
||||
@@ -321,16 +323,16 @@ set(FRAME_WORKFLOW_SOURCES
|
||||
src/services/impl/workflow/workflow_validation_checkpoint_step.cpp
|
||||
src/services/impl/workflow/frame/frame_workflow_step_registrar.cpp
|
||||
src/services/impl/workflow/frame/frame_workflow_service.cpp
|
||||
src/services/impl/soundboard_state_service.cpp
|
||||
src/services/impl/soundboard_path_resolver.cpp
|
||||
src/services/impl/soundboard/soundboard_state_service.cpp
|
||||
src/services/impl/soundboard/soundboard_path_resolver.cpp
|
||||
)
|
||||
|
||||
set(MATERIALX_SCRIPT_SOURCES
|
||||
src/services/impl/materialx_path_resolver.cpp
|
||||
src/services/impl/materialx_search_path_builder.cpp
|
||||
src/services/impl/materialx_document_loader.cpp
|
||||
src/services/impl/materialx_surface_node_resolver.cpp
|
||||
src/services/impl/materialx_surface_parameter_reader.cpp
|
||||
src/services/impl/materialx/materialx_path_resolver.cpp
|
||||
src/services/impl/materialx/materialx_search_path_builder.cpp
|
||||
src/services/impl/materialx/materialx_document_loader.cpp
|
||||
src/services/impl/materialx/materialx_surface_node_resolver.cpp
|
||||
src/services/impl/materialx/materialx_surface_parameter_reader.cpp
|
||||
)
|
||||
|
||||
if(BUILD_SDL3_APP)
|
||||
@@ -344,45 +346,45 @@ if(BUILD_SDL3_APP)
|
||||
${FRAME_WORKFLOW_SOURCES}
|
||||
${MATERIALX_SCRIPT_SOURCES}
|
||||
src/services/impl/config/config_compiler_service.cpp
|
||||
src/services/impl/command_line_service.cpp
|
||||
src/services/impl/app/command_line_service.cpp
|
||||
src/services/impl/config/json_config_writer_service.cpp
|
||||
src/services/impl/logger_service.cpp
|
||||
src/services/impl/ecs_service.cpp
|
||||
src/services/impl/platform_service.cpp
|
||||
src/services/impl/probe_service.cpp
|
||||
src/services/impl/script_engine_service.cpp
|
||||
src/services/impl/lua_helpers.cpp
|
||||
src/services/impl/scene_script_service.cpp
|
||||
src/services/impl/shader_script_service.cpp
|
||||
src/services/impl/shader_system_registry.cpp
|
||||
src/services/impl/materialx_shader_system.cpp
|
||||
src/services/impl/glsl_shader_system.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/gui_script_service.cpp
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/bgfx_gui_service.cpp>
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/bgfx_shader_compiler.cpp>
|
||||
src/services/impl/audio_command_service.cpp
|
||||
src/services/impl/physics_bridge_service.cpp
|
||||
src/services/impl/mesh_service.cpp
|
||||
src/services/impl/sdl_window_service.cpp
|
||||
src/services/impl/sdl_input_service.cpp
|
||||
src/services/impl/sdl_audio_service.cpp
|
||||
src/services/impl/crash_recovery_service.cpp
|
||||
src/services/impl/lifecycle_service.cpp
|
||||
src/services/impl/application_loop_service.cpp
|
||||
src/services/impl/render_coordinator_service.cpp
|
||||
src/services/impl/validation_tour_service.cpp
|
||||
src/services/impl/render_graph_service.cpp
|
||||
src/services/impl/null_gui_service.cpp
|
||||
src/services/impl/bgfx_gui_service.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/pipeline_compiler_service.cpp
|
||||
src/services/impl/bullet_physics_service.cpp
|
||||
src/services/impl/scene_service.cpp
|
||||
src/services/impl/graphics_service.cpp
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/bgfx_graphics_backend.cpp>
|
||||
$<$<BOOL:${ENABLE_VITA}>:src/services/impl/gxm_graphics_backend.cpp>
|
||||
src/services/impl/diagnostics/logger_service.cpp
|
||||
src/services/impl/scene/ecs_service.cpp
|
||||
src/services/impl/platform/platform_service.cpp
|
||||
src/services/impl/diagnostics/probe_service.cpp
|
||||
src/services/impl/script/script_engine_service.cpp
|
||||
src/services/impl/script/lua_helpers.cpp
|
||||
src/services/impl/script/scene_script_service.cpp
|
||||
src/services/impl/script/shader_script_service.cpp
|
||||
src/services/impl/shader/shader_system_registry.cpp
|
||||
src/services/impl/shader/materialx_shader_system.cpp
|
||||
src/services/impl/shader/glsl_shader_system.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
src/services/impl/script/gui_script_service.cpp
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/gui/bgfx_gui_service.cpp>
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/graphics/bgfx_shader_compiler.cpp>
|
||||
src/services/impl/audio/audio_command_service.cpp
|
||||
src/services/impl/scene/physics_bridge_service.cpp
|
||||
src/services/impl/scene/mesh_service.cpp
|
||||
src/services/impl/platform/sdl_window_service.cpp
|
||||
src/services/impl/input/sdl_input_service.cpp
|
||||
src/services/impl/audio/sdl_audio_service.cpp
|
||||
src/services/impl/diagnostics/crash_recovery_service.cpp
|
||||
src/services/impl/app/lifecycle_service.cpp
|
||||
src/services/impl/app/application_loop_service.cpp
|
||||
src/services/impl/render/render_coordinator_service.cpp
|
||||
src/services/impl/diagnostics/validation_tour_service.cpp
|
||||
src/services/impl/render/render_graph_service.cpp
|
||||
src/services/impl/gui/null_gui_service.cpp
|
||||
src/services/impl/gui/bgfx_gui_service.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/services/impl/shader/pipeline_compiler_service.cpp
|
||||
src/services/impl/scene/bullet_physics_service.cpp
|
||||
src/services/impl/scene/scene_service.cpp
|
||||
src/services/impl/graphics/graphics_service.cpp
|
||||
$<$<NOT:$<BOOL:${ENABLE_VITA}>>:src/services/impl/graphics/bgfx_graphics_backend.cpp>
|
||||
$<$<BOOL:${ENABLE_VITA}>:src/services/impl/graphics/gxm_graphics_backend.cpp>
|
||||
src/app/service_based_app.cpp
|
||||
)
|
||||
target_include_directories(sdl3_app PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
@@ -461,28 +463,28 @@ enable_testing()
|
||||
if(NOT ENABLE_VITA)
|
||||
add_executable(script_engine_tests
|
||||
tests/test_cube_script.cpp
|
||||
src/services/impl/bgfx_graphics_backend.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/logger_service.cpp
|
||||
src/services/impl/mesh_service.cpp
|
||||
src/services/impl/physics_bridge_service.cpp
|
||||
src/services/impl/platform_service.cpp
|
||||
src/services/impl/script_engine_service.cpp
|
||||
src/services/impl/graphics/bgfx_graphics_backend.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/services/impl/diagnostics/logger_service.cpp
|
||||
src/services/impl/scene/mesh_service.cpp
|
||||
src/services/impl/scene/physics_bridge_service.cpp
|
||||
src/services/impl/platform/platform_service.cpp
|
||||
src/services/impl/script/script_engine_service.cpp
|
||||
${MATERIALX_SCRIPT_SOURCES}
|
||||
src/services/impl/lua_helpers.cpp
|
||||
src/services/impl/scene_script_service.cpp
|
||||
src/services/impl/shader_script_service.cpp
|
||||
src/services/impl/shader_system_registry.cpp
|
||||
src/services/impl/materialx_shader_system.cpp
|
||||
src/services/impl/glsl_shader_system.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/sdl_window_service.cpp
|
||||
src/services/impl/ecs_service.cpp
|
||||
src/services/impl/scene_service.cpp
|
||||
src/services/impl/script/lua_helpers.cpp
|
||||
src/services/impl/script/scene_script_service.cpp
|
||||
src/services/impl/script/shader_script_service.cpp
|
||||
src/services/impl/shader/shader_system_registry.cpp
|
||||
src/services/impl/shader/materialx_shader_system.cpp
|
||||
src/services/impl/shader/glsl_shader_system.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
src/services/impl/platform/sdl_window_service.cpp
|
||||
src/services/impl/scene/ecs_service.cpp
|
||||
src/services/impl/scene/scene_service.cpp
|
||||
src/events/event_bus.cpp
|
||||
src/stb_image.cpp
|
||||
src/services/impl/pipeline_compiler_service.cpp
|
||||
src/services/impl/shader/pipeline_compiler_service.cpp
|
||||
)
|
||||
target_include_directories(script_engine_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_include_directories(script_engine_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/bgfx_tools/shaderc")
|
||||
@@ -515,11 +517,11 @@ add_test(NAME script_engine_tests COMMAND script_engine_tests)
|
||||
|
||||
add_executable(bgfx_gui_service_tests
|
||||
tests/test_bgfx_gui_service.cpp
|
||||
src/services/impl/bgfx_gui_service.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/pipeline_compiler_service.cpp
|
||||
src/services/impl/gui/bgfx_gui_service.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
src/services/impl/shader/pipeline_compiler_service.cpp
|
||||
)
|
||||
target_include_directories(bgfx_gui_service_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_include_directories(bgfx_gui_service_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/bgfx_tools/shaderc")
|
||||
@@ -546,11 +548,11 @@ add_test(NAME bgfx_gui_service_tests COMMAND bgfx_gui_service_tests)
|
||||
# Test: GUI budget enforcement (cache pruning)
|
||||
add_executable(bgfx_gui_budget_enforcement_test
|
||||
tests/bgfx_gui_budget_enforcement_test.cpp
|
||||
src/services/impl/bgfx_gui_service.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/pipeline_compiler_service.cpp
|
||||
src/services/impl/gui/bgfx_gui_service.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
src/services/impl/shader/pipeline_compiler_service.cpp
|
||||
)
|
||||
target_include_directories(bgfx_gui_budget_enforcement_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_include_directories(bgfx_gui_budget_enforcement_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/bgfx_tools/shaderc")
|
||||
@@ -578,8 +580,8 @@ add_test(NAME bgfx_gui_budget_enforcement_test COMMAND bgfx_gui_budget_enforceme
|
||||
# Test: Texture budget tracker (allocation + free)
|
||||
add_executable(bgfx_texture_budget_tracker_test
|
||||
tests/bgfx_texture_budget_tracker_test.cpp
|
||||
src/services/impl/bgfx_graphics_backend.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/graphics/bgfx_graphics_backend.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/stb_image.cpp
|
||||
)
|
||||
target_include_directories(bgfx_texture_budget_tracker_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
@@ -606,18 +608,18 @@ add_test(NAME bgfx_texture_budget_tracker_test COMMAND bgfx_texture_budget_track
|
||||
# Test: Vulkan shader linking (TDD test for walls/ceiling/floor rendering)
|
||||
add_executable(vulkan_shader_linking_test
|
||||
tests/test_vulkan_shader_linking.cpp
|
||||
src/services/impl/bgfx_graphics_backend.cpp
|
||||
src/services/impl/bgfx_gui_service.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/graphics/bgfx_graphics_backend.cpp
|
||||
src/services/impl/gui/bgfx_gui_service.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
${JSON_CONFIG_SOURCES}
|
||||
${WORKFLOW_SOURCES}
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/platform_service.cpp
|
||||
src/services/impl/sdl_window_service.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
src/services/impl/platform/platform_service.cpp
|
||||
src/services/impl/platform/sdl_window_service.cpp
|
||||
src/events/event_bus.cpp
|
||||
src/stb_image.cpp
|
||||
src/services/impl/pipeline_compiler_service.cpp
|
||||
src/services/impl/shader/pipeline_compiler_service.cpp
|
||||
)
|
||||
target_include_directories(vulkan_shader_linking_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_include_directories(vulkan_shader_linking_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/bgfx_tools/shaderc")
|
||||
@@ -644,7 +646,7 @@ add_test(NAME vulkan_shader_linking_test COMMAND vulkan_shader_linking_test)
|
||||
# Test: Shader Pipeline Validator (mega-strict validation system)
|
||||
add_executable(shader_pipeline_validator_test
|
||||
tests/shader_pipeline_validator_test.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
)
|
||||
target_include_directories(shader_pipeline_validator_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(shader_pipeline_validator_test PRIVATE
|
||||
@@ -670,8 +672,8 @@ add_test(NAME shaderc_uniform_mapping_test COMMAND shaderc_uniform_mapping_test)
|
||||
# Test: MaterialX Shader Generator Integration (validates shader generation + validation together)
|
||||
add_executable(materialx_shader_generator_integration_test
|
||||
tests/materialx_shader_generator_integration_test.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
)
|
||||
target_include_directories(materialx_shader_generator_integration_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(materialx_shader_generator_integration_test PRIVATE
|
||||
@@ -719,7 +721,7 @@ add_test(NAME bgfx_frame_requirement_test COMMAND bgfx_frame_requirement_test)
|
||||
# Test: Render coordinator initialization order (TDD guard for shader load timing)
|
||||
add_executable(render_coordinator_init_order_test
|
||||
tests/render_coordinator_init_order_test.cpp
|
||||
src/services/impl/render_coordinator_service.cpp
|
||||
src/services/impl/render/render_coordinator_service.cpp
|
||||
)
|
||||
target_include_directories(render_coordinator_init_order_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(render_coordinator_init_order_test PRIVATE
|
||||
@@ -731,8 +733,8 @@ add_test(NAME render_coordinator_init_order_test COMMAND render_coordinator_init
|
||||
# Test: Bgfx backend frame guard (ensures texture loads are blocked before first frame)
|
||||
add_executable(bgfx_backend_frame_guard_test
|
||||
tests/bgfx_backend_frame_guard_test.cpp
|
||||
src/services/impl/bgfx_graphics_backend.cpp
|
||||
src/services/impl/bgfx_shader_compiler.cpp
|
||||
src/services/impl/graphics/bgfx_graphics_backend.cpp
|
||||
src/services/impl/graphics/bgfx_shader_compiler.cpp
|
||||
src/stb_image.cpp
|
||||
)
|
||||
target_include_directories(bgfx_backend_frame_guard_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
@@ -759,8 +761,8 @@ add_test(NAME bgfx_backend_frame_guard_test COMMAND bgfx_backend_frame_guard_tes
|
||||
# Test: Gui script service missing fields (logs trace and uses defaults)
|
||||
add_executable(gui_script_service_missing_fields_test
|
||||
tests/gui_script_service_missing_fields_test.cpp
|
||||
src/services/impl/gui_script_service.cpp
|
||||
src/services/impl/lua_helpers.cpp
|
||||
src/services/impl/script/gui_script_service.cpp
|
||||
src/services/impl/script/lua_helpers.cpp
|
||||
)
|
||||
target_include_directories(gui_script_service_missing_fields_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(gui_script_service_missing_fields_test PRIVATE
|
||||
@@ -774,7 +776,7 @@ add_test(NAME gui_script_service_missing_fields_test COMMAND gui_script_service_
|
||||
# Test: Graphics service buffer lifecycle (TDD guard for VRAM leaks on reupload)
|
||||
add_executable(graphics_service_buffer_lifecycle_test
|
||||
tests/graphics_service_buffer_lifecycle_test.cpp
|
||||
src/services/impl/graphics_service.cpp
|
||||
src/services/impl/graphics/graphics_service.cpp
|
||||
)
|
||||
target_include_directories(graphics_service_buffer_lifecycle_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(graphics_service_buffer_lifecycle_test PRIVATE
|
||||
@@ -786,7 +788,7 @@ add_test(NAME graphics_service_buffer_lifecycle_test COMMAND graphics_service_bu
|
||||
# Test: Render graph validation (cycles + unknown dependencies)
|
||||
add_executable(render_graph_service_test
|
||||
tests/render_graph_service_test.cpp
|
||||
src/services/impl/render_graph_service.cpp
|
||||
src/services/impl/render/render_graph_service.cpp
|
||||
)
|
||||
target_include_directories(render_graph_service_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(render_graph_service_test PRIVATE
|
||||
@@ -854,11 +856,11 @@ add_test(NAME config_compiler_reference_validation_test COMMAND config_compiler_
|
||||
add_executable(shader_system_registry_test
|
||||
tests/shader_system_registry_test.cpp
|
||||
src/services/impl/config/config_compiler_service.cpp
|
||||
src/services/impl/shader_system_registry.cpp
|
||||
src/services/impl/glsl_shader_system.cpp
|
||||
src/services/impl/materialx_shader_system.cpp
|
||||
src/services/impl/materialx_shader_generator.cpp
|
||||
src/services/impl/shader_pipeline_validator.cpp
|
||||
src/services/impl/shader/shader_system_registry.cpp
|
||||
src/services/impl/shader/glsl_shader_system.cpp
|
||||
src/services/impl/shader/materialx_shader_system.cpp
|
||||
src/services/impl/materialx/materialx_shader_generator.cpp
|
||||
src/services/impl/shader/shader_pipeline_validator.cpp
|
||||
)
|
||||
target_include_directories(shader_system_registry_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_include_directories(shader_system_registry_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/bgfx_tools/shaderc")
|
||||
@@ -895,7 +897,7 @@ add_test(NAME gui_shader_linking_failure_test COMMAND gui_shader_linking_failure
|
||||
# Test: Crash recovery timeout (TDD test for main loop hang after timeout)
|
||||
add_executable(crash_recovery_timeout_test
|
||||
tests/crash_recovery_timeout_test.cpp
|
||||
src/services/impl/crash_recovery_service.cpp
|
||||
src/services/impl/diagnostics/crash_recovery_service.cpp
|
||||
)
|
||||
target_include_directories(crash_recovery_timeout_test PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(crash_recovery_timeout_test PRIVATE
|
||||
@@ -972,7 +974,7 @@ endif()
|
||||
if(ENABLE_VITA)
|
||||
add_executable(gxm_backend_tests
|
||||
tests/test_gxm_backend.cpp
|
||||
src/services/impl/gxm_graphics_backend.cpp
|
||||
src/services/impl/graphics/gxm_graphics_backend.cpp
|
||||
)
|
||||
target_include_directories(gxm_backend_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
target_link_libraries(gxm_backend_tests PRIVATE
|
||||
|
||||
46
ROADMAP.md
46
ROADMAP.md
@@ -24,6 +24,7 @@ Treat JSON config as a declarative control plane that compiles into scene, resou
|
||||
- Schema now covers assets/materials/shaders, `shader_systems`, and render-pass `view_id` + `clear` metadata.
|
||||
- Runtime rendering is still Lua-driven, with MaterialX shader generation, pipeline validation, sampler caps, and texture/GUI cache budget enforcement.
|
||||
- Diagnostics include ProbeService reports plus CrashRecoveryService heartbeats/GPU hang detection; runtime probe hooks (draw/present/frame) are still missing.
|
||||
- Package workflows still include stub placeholders in `packages/*/workflows/stubs`, so `scripts/package_lint.py` currently fails.
|
||||
|
||||
## Launch Packages (Cheesy Edition)
|
||||
|
||||
@@ -65,6 +66,7 @@ Treat JSON config as a declarative control plane that compiles into scene, resou
|
||||
- Enforce shader uniform compatibility using reflection + material metadata.
|
||||
- Validate soundboard workflow steps (catalog/GUI/audio) in runtime and retire the Lua soundboard UI path.
|
||||
- Port Lua demos (seed/gui/soundboard/quake3) into JSON-first packages and workflows.
|
||||
- Replace all workflow stubs in `packages/*/workflows/stubs` with fully implemented n8n JSON graphs derived from the existing Lua scripts + JSON configs (no placeholders).
|
||||
- Add tests for schema/merge rules, render graph validation, and budget enforcement.
|
||||
- Start service refactor program for large modules (approaching 2K LOC).
|
||||
- Remove the Lua-first execution path once config-first workflows (boot, frame, gameplay) can fully describe the engine; workflows should be able to teleport the camera to key spots, render expected visuals, and fail fast when actual output deviates from the JSON-specified state (no Lua required unless explicitly chosen).
|
||||
@@ -171,9 +173,10 @@ Treat JSON config as a declarative control plane that compiles into scene, resou
|
||||
- MaterialXShaderGenerator (~1100 LOC): split MaterialX graph prep, shader emit, validation.
|
||||
|
||||
### Phase A: Mechanical Extraction (1-3 days)
|
||||
- [~] JsonConfigService: extracted config document load/merge helpers into `src/services/impl/json_config_document_loader.cpp` plus small parser/extend/merge services to keep files <100 LOC.
|
||||
- [~] JsonConfigService: extracted config document load/merge helpers into `src/services/impl/config/json_config_document_loader.cpp` plus small parser/extend/merge services to keep files <100 LOC.
|
||||
- [~] JsonConfigService: split schema validation/versioning/migration into `json_config_*` services (`schema_validator`, `version_validator`, `migration_service`).
|
||||
- [~] ScriptEngineService: extracted MaterialX helpers into micro services (`materialx_path_resolver`, `materialx_search_path_builder`, `materialx_document_loader`, `materialx_surface_node_resolver`, `materialx_surface_parameter_reader`).
|
||||
- [x] Reorganized `src/services/impl` into domain subfolders (app/audio/config/diagnostics/graphics/gui/input/materialx/platform/render/scene/script/shader/soundboard/workflow) to align with workflow boundaries and DI.
|
||||
- Move self-contained helpers into `*_helpers.cpp` with clear headers.
|
||||
- Extract pure data transforms into free functions with unit tests.
|
||||
- Preserve public interfaces; no behavior change in this phase.
|
||||
@@ -258,18 +261,27 @@ Option B: per-shader only
|
||||
- [x] Boot config workflow execution (load/version/migrate/schema + runtime config build).
|
||||
- [x] Workflow schema: `config/schema/workflow_v1.schema.json` supports n8n nodes + connections.
|
||||
- [x] Templates: `config/workflows/templates/boot_default.json`, `config/workflows/templates/frame_default.json`.
|
||||
- [x] Package workflows converted to n8n nodes (`seed`, `gui`, `soundboard`, `quake3`, `engine_tester`).
|
||||
- [~] Package workflows converted to n8n nodes (`seed`, `gui`, `soundboard`, `quake3`, `engine_tester`); stub placeholders still present and must be replaced.
|
||||
- [x] Workflow steps implemented: `frame.bullet_physics`, `frame.camera`, `validation.tour.checkpoint`, `soundboard.catalog.scan`, `soundboard.gui`, `soundboard.audio`.
|
||||
- [x] Render coordinator supports workflow-supplied GUI command overrides (bypass Lua GUI path).
|
||||
- [~] Generic step library started (`value.copy`, `value.default`, `number.add`, `list.filter.equals`, `list.map.add`, `list.reduce.sum`).
|
||||
- [x] Generic step library implemented (core data ops + camera/audio/scene/model coverage).
|
||||
|
||||
### Generic Step Catalog (Implemented)
|
||||
- Value: `value.copy`, `value.default`, `value.literal`, `value.clear`, `value.assert.exists`, `value.assert.type`.
|
||||
- Number: `number.add`, `number.sub`, `number.mul`, `number.div`, `number.min`, `number.max`, `number.clamp`, `number.abs`, `number.round`.
|
||||
- Compare: `compare.eq`, `compare.ne`, `compare.gt`, `compare.gte`, `compare.lt`, `compare.lte`.
|
||||
- Bool: `bool.and`, `bool.or`, `bool.not`.
|
||||
- String: `string.concat`, `string.trim`, `string.lower`, `string.upper`, `string.replace`, `string.contains`, `string.equals`, `string.split`, `string.join`.
|
||||
- List: `list.literal`, `list.append`, `list.concat`, `list.filter.equals`, `list.filter.gt`, `list.map.add`, `list.map.mul`, `list.reduce.sum`, `list.reduce.min`, `list.reduce.max`, `list.count`.
|
||||
- Camera: `camera.set_pose`, `camera.look_at`, `camera.teleport`, `camera.set_fov`, `camera.build_view_state`.
|
||||
- Audio: `audio.play`, `audio.stop`, `audio.set_volume`.
|
||||
- Mesh/Model/Scene: `mesh.load`, `model.spawn`, `model.despawn`, `model.set_transform`, `scene.load`, `scene.clear`, `scene.set_active`.
|
||||
|
||||
### Next Steps
|
||||
- [ ] Publish gameplay workflow templates (FPS/passive camera variants, bullet physics, validation/teleport checks).
|
||||
- [ ] Expand JSON-driven GUI steps beyond soundboard (replace Lua GUI scripts in demo packages).
|
||||
- [ ] Build out generic "software building blocks" step coverage (strings, math, comparisons, branching, fan-out, list transforms).
|
||||
- [ ] Add generic game workflow steps (camera controls, teleport/waypoints, audio cues, model spawn/despawn, animation toggles).
|
||||
- [ ] Publish a workflow step catalog with example JSON snippets for each generic step.
|
||||
- [ ] Add workflow step analytics (probe events with JSON path + node id).
|
||||
- [ ] Add workflow step analytics (probe events with JSON path + node id + per-step timing/counters).
|
||||
|
||||
## Feature Matrix (What You Get, When You Get It)
|
||||
|
||||
@@ -295,15 +307,15 @@ Option B: per-shader only
|
||||
## Deliverables Checklist
|
||||
- [x] `config/schema/` with versioned JSON Schema and migration notes
|
||||
- [x] n8n workflow schema + parser support (nodes + connections)
|
||||
- [x] n8n templates + package workflow conversion
|
||||
- [~] n8n templates + package workflow conversion (templates shipped; package workflows still contain stubs)
|
||||
- [x] Workflow step plugins for camera + validation checkpoints + bullet physics + soundboard catalog/GUI/audio
|
||||
- [x] `src/services/impl/config_compiler_service.*` for JSON -> IR compilation
|
||||
- [x] `src/services/impl/render_graph_service.*` for graph build and scheduling
|
||||
- [x] `src/services/impl/config/config_compiler_service.*` for JSON -> IR compilation
|
||||
- [x] `src/services/impl/render/render_graph_service.*` for graph build and scheduling
|
||||
- [x] `src/services/interfaces/i_probe_service.hpp` plus report/event types
|
||||
- [x] `src/services/impl/probe_service.*` for logging/queueing probe reports
|
||||
- [x] `src/services/impl/diagnostics/probe_service.*` for logging/queueing probe reports
|
||||
- [x] `src/services/interfaces/config_ir_types.hpp` for typed IR payloads
|
||||
- [x] `src/services/impl/shader_pipeline_validator.*` for mesh/shader compatibility checks
|
||||
- [x] `src/services/impl/crash_recovery_service.*` for heartbeat + hang detection
|
||||
- [x] `src/services/impl/shader/shader_pipeline_validator.*` for mesh/shader compatibility checks
|
||||
- [x] `src/services/impl/diagnostics/crash_recovery_service.*` for heartbeat + hang detection
|
||||
- [~] Budget enforcement with clear failure modes and fallback resources (textures + GUI caches today)
|
||||
- [ ] Cube demo config-only boot path
|
||||
|
||||
@@ -367,11 +379,11 @@ Option B: per-shader only
|
||||
- Ensure bgfx is initialized and has seen a frame before loading textures/shaders.
|
||||
|
||||
### Known Hotspots To Inspect
|
||||
- Shader pipeline validation: `src/services/impl/shader_pipeline_validator.cpp`
|
||||
- Texture load guards + budgets: `src/services/impl/bgfx_graphics_backend.cpp`
|
||||
- Render graph scheduling: `src/services/impl/render_graph_service.cpp`
|
||||
- Config compiler diagnostics: `src/services/impl/config_compiler_service.cpp`
|
||||
- Crash recovery timeouts: `src/services/impl/crash_recovery_service.cpp`
|
||||
- Shader pipeline validation: `src/services/impl/shader/shader_pipeline_validator.cpp`
|
||||
- Texture load guards + budgets: `src/services/impl/graphics/bgfx_graphics_backend.cpp`
|
||||
- Render graph scheduling: `src/services/impl/render/render_graph_service.cpp`
|
||||
- Config compiler diagnostics: `src/services/impl/config/config_compiler_service.cpp`
|
||||
- Crash recovery timeouts: `src/services/impl/diagnostics/crash_recovery_service.cpp`
|
||||
|
||||
### Ordering Checklist (When Things Crash)
|
||||
- `InitializeDevice` → `InitializeSwapchain` → `BeginFrame` → `EndFrame` before loading shaders/textures.
|
||||
|
||||
@@ -31,11 +31,5 @@ Templates
|
||||
- `config/workflows/templates/n8n_skeleton.json` is a minimal starting point.
|
||||
|
||||
Generic Steps
|
||||
- Implementations live in `src/services/impl/workflow_generic_steps/`.
|
||||
- Current generic plugins:
|
||||
- `value.copy` (inputs: `value`, outputs: `value`)
|
||||
- `value.default` (inputs: `primary`, `fallback`, outputs: `value`)
|
||||
- `number.add` (inputs: `left`, `right`, outputs: `value`)
|
||||
- `list.filter.equals` (inputs: `list`, `value`, outputs: `list`)
|
||||
- `list.map.add` (inputs: `list`, `value`, outputs: `list`)
|
||||
- `list.reduce.sum` (inputs: `list`, outputs: `value`)
|
||||
- Implementations live in `src/services/impl/workflow/workflow_generic_steps/`.
|
||||
- Full catalog lives in `ROADMAP.md` under "Generic Step Catalog (Implemented)".
|
||||
|
||||
@@ -7,37 +7,37 @@
|
||||
#include "services/interfaces/i_lifecycle_service.hpp"
|
||||
#include "services/impl/config/json_config_service.hpp"
|
||||
#include "services/impl/config/config_compiler_service.hpp"
|
||||
#include "services/impl/lifecycle_service.hpp"
|
||||
#include "services/impl/application_loop_service.hpp"
|
||||
#include "services/impl/render_coordinator_service.hpp"
|
||||
#include "services/impl/render_graph_service.hpp"
|
||||
#include "services/impl/platform_service.hpp"
|
||||
#include "services/impl/probe_service.hpp"
|
||||
#include "services/impl/sdl_window_service.hpp"
|
||||
#include "services/impl/sdl_input_service.hpp"
|
||||
#include "services/impl/ecs_service.hpp"
|
||||
#include "services/impl/graphics_service.hpp"
|
||||
#include "services/impl/bgfx_graphics_backend.hpp"
|
||||
#include "services/impl/script_engine_service.hpp"
|
||||
#include "services/impl/scene_script_service.hpp"
|
||||
#include "services/impl/shader_script_service.hpp"
|
||||
#include "services/impl/shader_system_registry.hpp"
|
||||
#include "services/impl/gui_script_service.hpp"
|
||||
#include "services/impl/audio_command_service.hpp"
|
||||
#include "services/impl/physics_bridge_service.hpp"
|
||||
#include "services/impl/mesh_service.hpp"
|
||||
#include "services/impl/scene_service.hpp"
|
||||
#include "services/impl/sdl_audio_service.hpp"
|
||||
#include "services/impl/null_gui_service.hpp"
|
||||
#include "services/impl/app/lifecycle_service.hpp"
|
||||
#include "services/impl/app/application_loop_service.hpp"
|
||||
#include "services/impl/render/render_coordinator_service.hpp"
|
||||
#include "services/impl/render/render_graph_service.hpp"
|
||||
#include "services/impl/platform/platform_service.hpp"
|
||||
#include "services/impl/diagnostics/probe_service.hpp"
|
||||
#include "services/impl/platform/sdl_window_service.hpp"
|
||||
#include "services/impl/input/sdl_input_service.hpp"
|
||||
#include "services/impl/scene/ecs_service.hpp"
|
||||
#include "services/impl/graphics/graphics_service.hpp"
|
||||
#include "services/impl/graphics/bgfx_graphics_backend.hpp"
|
||||
#include "services/impl/script/script_engine_service.hpp"
|
||||
#include "services/impl/script/scene_script_service.hpp"
|
||||
#include "services/impl/script/shader_script_service.hpp"
|
||||
#include "services/impl/shader/shader_system_registry.hpp"
|
||||
#include "services/impl/script/gui_script_service.hpp"
|
||||
#include "services/impl/audio/audio_command_service.hpp"
|
||||
#include "services/impl/scene/physics_bridge_service.hpp"
|
||||
#include "services/impl/scene/mesh_service.hpp"
|
||||
#include "services/impl/scene/scene_service.hpp"
|
||||
#include "services/impl/audio/sdl_audio_service.hpp"
|
||||
#include "services/impl/gui/null_gui_service.hpp"
|
||||
#if !defined(SDL3CPP_ENABLE_VITA)
|
||||
#include "services/impl/bgfx_gui_service.hpp"
|
||||
#include "services/impl/gui/bgfx_gui_service.hpp"
|
||||
#endif
|
||||
#include "services/impl/bullet_physics_service.hpp"
|
||||
#include "services/impl/crash_recovery_service.hpp"
|
||||
#include "services/impl/logger_service.hpp"
|
||||
#include "services/impl/pipeline_compiler_service.hpp"
|
||||
#include "services/impl/validation_tour_service.hpp"
|
||||
#include "services/impl/soundboard_state_service.hpp"
|
||||
#include "services/impl/scene/bullet_physics_service.hpp"
|
||||
#include "services/impl/diagnostics/crash_recovery_service.hpp"
|
||||
#include "services/impl/diagnostics/logger_service.hpp"
|
||||
#include "services/impl/shader/pipeline_compiler_service.hpp"
|
||||
#include "services/impl/diagnostics/validation_tour_service.hpp"
|
||||
#include "services/impl/soundboard/soundboard_state_service.hpp"
|
||||
#include "services/impl/workflow/workflow_default_step_registrar.hpp"
|
||||
#include "services/impl/workflow/workflow_definition_parser.hpp"
|
||||
#include "services/impl/workflow/workflow_executor.hpp"
|
||||
@@ -309,11 +309,16 @@ void ServiceBasedApp::RegisterServices() {
|
||||
registry_.RegisterService<services::ISoundboardStateService, services::impl::SoundboardStateService>(
|
||||
registry_.GetService<services::ILogger>());
|
||||
|
||||
registry_.RegisterService<services::IMeshService, services::impl::MeshService>(
|
||||
registry_.GetService<services::IConfigService>(),
|
||||
registry_.GetService<services::ILogger>());
|
||||
|
||||
registry_.RegisterService<services::IFrameWorkflowService, services::impl::FrameWorkflowService>(
|
||||
registry_.GetService<services::ILogger>(),
|
||||
registry_.GetService<services::IConfigService>(),
|
||||
registry_.GetService<services::IAudioService>(),
|
||||
registry_.GetService<services::IInputService>(),
|
||||
registry_.GetService<services::IMeshService>(),
|
||||
registry_.GetService<services::IPhysicsService>(),
|
||||
registry_.GetService<services::ISceneService>(),
|
||||
registry_.GetService<services::IRenderCoordinatorService>(),
|
||||
@@ -321,9 +326,6 @@ void ServiceBasedApp::RegisterServices() {
|
||||
registry_.GetService<services::ISoundboardStateService>());
|
||||
|
||||
// Script bridge services
|
||||
registry_.RegisterService<services::IMeshService, services::impl::MeshService>(
|
||||
registry_.GetService<services::IConfigService>(),
|
||||
registry_.GetService<services::ILogger>());
|
||||
registry_.RegisterService<services::IPhysicsBridgeService, services::impl::PhysicsBridgeService>(
|
||||
registry_.GetService<services::ILogger>());
|
||||
registry_.RegisterService<services::IAudioCommandService, services::impl::AudioCommandService>(
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
#include <SDL3/SDL_main.h>
|
||||
|
||||
#include "app/service_based_app.hpp"
|
||||
#include "services/impl/command_line_service.hpp"
|
||||
#include "services/impl/json_config_writer_service.hpp"
|
||||
#include "services/impl/logger_service.hpp"
|
||||
#include "services/impl/platform_service.hpp"
|
||||
#include "services/impl/app/command_line_service.hpp"
|
||||
#include "services/impl/config/json_config_writer_service.hpp"
|
||||
#include "services/impl/diagnostics/logger_service.hpp"
|
||||
#include "services/impl/platform/platform_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
|
||||
namespace sdl3cpp::app {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_application_loop_service.hpp"
|
||||
#include "../interfaces/i_frame_workflow_service.hpp"
|
||||
#include "../interfaces/i_audio_service.hpp"
|
||||
#include "../interfaces/i_crash_recovery_service.hpp"
|
||||
#include "../interfaces/i_input_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_physics_service.hpp"
|
||||
#include "../interfaces/i_render_coordinator_service.hpp"
|
||||
#include "../interfaces/i_scene_service.hpp"
|
||||
#include "../interfaces/i_window_service.hpp"
|
||||
#include "../../events/i_event_bus.hpp"
|
||||
#include "services/interfaces/i_application_loop_service.hpp"
|
||||
#include "services/interfaces/i_frame_workflow_service.hpp"
|
||||
#include "services/interfaces/i_audio_service.hpp"
|
||||
#include "services/interfaces/i_crash_recovery_service.hpp"
|
||||
#include "services/interfaces/i_input_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_physics_service.hpp"
|
||||
#include "services/interfaces/i_render_coordinator_service.hpp"
|
||||
#include "services/interfaces/i_scene_service.hpp"
|
||||
#include "services/interfaces/i_window_service.hpp"
|
||||
#include "../../../events/i_event_bus.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "command_line_service.hpp"
|
||||
|
||||
#include "config/json_config_service.hpp"
|
||||
#include "../config/json_config_service.hpp"
|
||||
#include <CLI/CLI.hpp>
|
||||
|
||||
#include <cstdlib>
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_command_line_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_platform_service.hpp"
|
||||
#include "services/interfaces/i_command_line_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_platform_service.hpp"
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_lifecycle_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../../di/service_registry.hpp"
|
||||
#include "services/interfaces/i_lifecycle_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "../../../di/service_registry.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_audio_command_service.hpp"
|
||||
#include "../interfaces/i_audio_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_audio_command_service.hpp"
|
||||
#include "services/interfaces/i_audio_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_audio_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_audio_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
#include <SDL3/SDL.h>
|
||||
#include <vorbis/vorbisfile.h>
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include "services/interfaces/i_render_graph_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/config_types.hpp"
|
||||
#include "../interfaces/i_crash_recovery_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/config_types.hpp"
|
||||
#include "services/interfaces/i_crash_recovery_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <atomic>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <filesystem>
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_probe_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "validation_tour_service.hpp"
|
||||
|
||||
#include "../interfaces/probe_types.hpp"
|
||||
#include "services/interfaces/probe_types.hpp"
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_probe_service.hpp"
|
||||
#include "../interfaces/i_validation_tour_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include "services/interfaces/i_validation_tour_service.hpp"
|
||||
#include <filesystem>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "bgfx_graphics_backend.hpp"
|
||||
#include "bgfx_shader_compiler.hpp"
|
||||
#include "../interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "services/interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include <stb_image.h>
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
@@ -1,12 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_graphics_backend.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_platform_service.hpp"
|
||||
#include "../interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "../interfaces/i_probe_service.hpp"
|
||||
#include "../../core/vertex.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_graphics_backend.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_platform_service.hpp"
|
||||
#include "services/interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include "../../../core/vertex.hpp"
|
||||
#include <bgfx/bgfx.h>
|
||||
#include <array>
|
||||
#include <filesystem>
|
||||
@@ -1,11 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <bgfx/bgfx.h>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "../interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "services/interfaces/i_pipeline_compiler_service.hpp"
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "graphics_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/graphics_types.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/graphics_types.hpp"
|
||||
#include <stdexcept>
|
||||
#include <cstring>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_graphics_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_window_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_graphics_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_window_service.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "gxm_graphics_backend.hpp"
|
||||
#include "../../core/vertex.hpp"
|
||||
#include "../../../core/vertex.hpp"
|
||||
#include <psp2/gxm.h>
|
||||
#include <psp2/display.h>
|
||||
#include <psp2/kernel/sysmem.h>
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_graphics_backend.hpp"
|
||||
#include "services/interfaces/i_graphics_backend.hpp"
|
||||
#include <psp2/gxm.h>
|
||||
#include <psp2/display.h>
|
||||
#include <psp2/kernel/sysmem.h>
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "bgfx_gui_service.hpp"
|
||||
#include "bgfx_shader_compiler.hpp"
|
||||
#include "services/impl/graphics/bgfx_shader_compiler.hpp"
|
||||
|
||||
#include "../interfaces/config_types.hpp"
|
||||
#include "../interfaces/gui_types.hpp"
|
||||
#include "services/interfaces/config_types.hpp"
|
||||
#include "services/interfaces/gui_types.hpp"
|
||||
|
||||
#include <bgfx/bgfx.h>
|
||||
#include <bx/math.h>
|
||||
@@ -1,14 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_gui_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_gui_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
|
||||
#include <bgfx/bgfx.h>
|
||||
|
||||
#include "materialx_shader_generator.hpp"
|
||||
#include "services/impl/materialx/materialx_shader_generator.hpp"
|
||||
|
||||
#include <array>
|
||||
#include <cstdint>
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "null_gui_service.hpp"
|
||||
|
||||
#include "../interfaces/gui_types.hpp"
|
||||
#include "services/interfaces/gui_types.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_gui_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_gui_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_input_service.hpp"
|
||||
#include "../interfaces/i_gui_script_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../../events/i_event_bus.hpp"
|
||||
#include "services/interfaces/i_input_service.hpp"
|
||||
#include "services/interfaces/i_gui_script_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "../../../events/i_event_bus.hpp"
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/config_types.hpp"
|
||||
#include "services/interfaces/config_types.hpp"
|
||||
|
||||
#include <MaterialXCore/Document.h>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/config_types.hpp"
|
||||
#include "services/interfaces/config_types.hpp"
|
||||
|
||||
#include <MaterialXFormat/Util.h>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "materialx_shader_generator.hpp"
|
||||
#include "shader_pipeline_validator.hpp"
|
||||
#include "../../core/vertex.hpp"
|
||||
#include "services/impl/shader/shader_pipeline_validator.hpp"
|
||||
#include "../../../core/vertex.hpp"
|
||||
|
||||
#include <MaterialXCore/Document.h>
|
||||
#include <MaterialXFormat/File.h>
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/config_types.hpp"
|
||||
#include "../interfaces/graphics_types.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/config_types.hpp"
|
||||
#include "services/interfaces/graphics_types.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_platform_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_platform_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "sdl_window_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <chrono>
|
||||
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_window_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_platform_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "../../events/i_event_bus.hpp"
|
||||
#include "services/interfaces/i_window_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_platform_service.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include "../../../events/i_event_bus.hpp"
|
||||
#include <memory>
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_render_coordinator_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_config_compiler_service.hpp"
|
||||
#include "../interfaces/i_graphics_service.hpp"
|
||||
#include "../interfaces/i_gui_script_service.hpp"
|
||||
#include "../interfaces/i_gui_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_scene_script_service.hpp"
|
||||
#include "../interfaces/i_scene_service.hpp"
|
||||
#include "../interfaces/i_shader_script_service.hpp"
|
||||
#include "../interfaces/i_validation_tour_service.hpp"
|
||||
#include "services/interfaces/i_render_coordinator_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_config_compiler_service.hpp"
|
||||
#include "services/interfaces/i_graphics_service.hpp"
|
||||
#include "services/interfaces/i_gui_script_service.hpp"
|
||||
#include "services/interfaces/i_gui_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_scene_script_service.hpp"
|
||||
#include "services/interfaces/i_scene_service.hpp"
|
||||
#include "services/interfaces/i_shader_script_service.hpp"
|
||||
#include "services/interfaces/i_validation_tour_service.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_render_graph_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_probe_service.hpp"
|
||||
#include "services/interfaces/i_render_graph_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "bullet_physics_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <stdexcept>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_physics_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_physics_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "physics_bridge_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_ecs_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_ecs_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_mesh_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_mesh_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_physics_bridge_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_physics_bridge_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <array>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -94,7 +94,12 @@ void SceneService::LoadScene(const std::vector<SceneObject>& objects) {
|
||||
sceneEntities_.push_back(entity);
|
||||
registry_->emplace<SceneTag>(entity);
|
||||
registry_->emplace<MeshComponent>(entity, obj.vertices, obj.indices);
|
||||
registry_->emplace<RenderComponent>(entity, obj.computeModelMatrixRef, obj.shaderKeys);
|
||||
RenderComponent renderComponent;
|
||||
renderComponent.computeModelMatrixRef = obj.computeModelMatrixRef;
|
||||
renderComponent.hasCustomModelMatrix = obj.hasCustomModelMatrix;
|
||||
renderComponent.modelMatrix = obj.modelMatrix;
|
||||
renderComponent.shaderKeys = obj.shaderKeys;
|
||||
registry_->emplace<RenderComponent>(entity, std::move(renderComponent));
|
||||
}
|
||||
|
||||
for (const auto entity : sceneEntities_) {
|
||||
@@ -134,6 +139,8 @@ void SceneService::LoadScene(const std::vector<SceneObject>& objects) {
|
||||
drawInfo.indexCount = static_cast<uint32_t>(mesh.indices.size());
|
||||
drawInfo.vertexOffset = static_cast<int32_t>(vertexOffset);
|
||||
drawInfo.computeModelMatrixRef = render.computeModelMatrixRef;
|
||||
drawInfo.hasCustomModelMatrix = render.hasCustomModelMatrix;
|
||||
drawInfo.modelMatrix = render.modelMatrix;
|
||||
drawInfo.shaderKeys = render.shaderKeys;
|
||||
drawInfos_.push_back(std::move(drawInfo));
|
||||
}
|
||||
@@ -184,7 +191,11 @@ std::vector<RenderCommand> SceneService::GetRenderCommands(float time) const {
|
||||
cmd.indexCount = drawInfo.indexCount;
|
||||
cmd.vertexOffset = drawInfo.vertexOffset;
|
||||
cmd.shaderKeys = drawInfo.shaderKeys;
|
||||
cmd.modelMatrix = scriptService_->ComputeModelMatrix(drawInfo.computeModelMatrixRef, time);
|
||||
if (drawInfo.hasCustomModelMatrix) {
|
||||
cmd.modelMatrix = drawInfo.modelMatrix;
|
||||
} else {
|
||||
cmd.modelMatrix = scriptService_->ComputeModelMatrix(drawInfo.computeModelMatrixRef, time);
|
||||
}
|
||||
commands.push_back(cmd);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_scene_service.hpp"
|
||||
#include "../interfaces/i_scene_script_service.hpp"
|
||||
#include "../interfaces/i_ecs_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_probe_service.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_scene_service.hpp"
|
||||
#include "services/interfaces/i_scene_script_service.hpp"
|
||||
#include "services/interfaces/i_ecs_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_probe_service.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <array>
|
||||
#include <entt/entt.hpp>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -50,6 +51,8 @@ private:
|
||||
|
||||
struct RenderComponent {
|
||||
int computeModelMatrixRef = -1;
|
||||
bool hasCustomModelMatrix = false;
|
||||
std::array<float, 16> modelMatrix{};
|
||||
std::vector<std::string> shaderKeys;
|
||||
};
|
||||
|
||||
@@ -58,6 +61,8 @@ private:
|
||||
uint32_t indexCount = 0;
|
||||
int32_t vertexOffset = 0;
|
||||
int computeModelMatrixRef = -1;
|
||||
bool hasCustomModelMatrix = false;
|
||||
std::array<float, 16> modelMatrix{};
|
||||
std::vector<std::string> shaderKeys;
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_gui_script_service.hpp"
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_gui_script_service.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_scene_script_service.hpp"
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_scene_script_service.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
|
||||
struct lua_State;
|
||||
@@ -1,10 +1,10 @@
|
||||
#include "script_engine_service.hpp"
|
||||
|
||||
#include "lua_helpers.hpp"
|
||||
#include "materialx_document_loader.hpp"
|
||||
#include "materialx_path_resolver.hpp"
|
||||
#include "materialx_surface_node_resolver.hpp"
|
||||
#include "materialx_surface_parameter_reader.hpp"
|
||||
#include "services/impl/materialx/materialx_document_loader.hpp"
|
||||
#include "services/impl/materialx/materialx_path_resolver.hpp"
|
||||
#include "services/impl/materialx/materialx_surface_node_resolver.hpp"
|
||||
#include "services/impl/materialx/materialx_surface_parameter_reader.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
|
||||
#include <btBulletDynamicsCommon.h>
|
||||
@@ -1,14 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_audio_command_service.hpp"
|
||||
#include "../interfaces/i_mesh_service.hpp"
|
||||
#include "../interfaces/i_physics_bridge_service.hpp"
|
||||
#include "../interfaces/i_input_service.hpp"
|
||||
#include "../interfaces/i_window_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../../di/lifecycle.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_audio_command_service.hpp"
|
||||
#include "services/interfaces/i_mesh_service.hpp"
|
||||
#include "services/interfaces/i_physics_bridge_service.hpp"
|
||||
#include "services/interfaces/i_input_service.hpp"
|
||||
#include "services/interfaces/i_window_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "../../../di/lifecycle.hpp"
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_shader_script_service.hpp"
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_shader_system_registry.hpp"
|
||||
#include "services/interfaces/i_shader_script_service.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_shader_system_registry.hpp"
|
||||
#include <memory>
|
||||
|
||||
struct lua_State;
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_compiler_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_shader_system.hpp"
|
||||
#include "services/interfaces/i_config_compiler_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_shader_system.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_shader_system.hpp"
|
||||
#include "materialx_shader_generator.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_shader_system.hpp"
|
||||
#include "services/impl/materialx/materialx_shader_generator.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_pipeline_compiler_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "shader_pipeline_validator.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include <sstream>
|
||||
|
||||
namespace sdl3cpp::services {
|
||||
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_compiler_service.hpp"
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_script_engine_service.hpp"
|
||||
#include "../interfaces/i_shader_system_registry.hpp"
|
||||
#include "services/interfaces/i_config_compiler_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_script_engine_service.hpp"
|
||||
#include "services/interfaces/i_shader_system_registry.hpp"
|
||||
#include "glsl_shader_system.hpp"
|
||||
#include "materialx_shader_system.hpp"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_soundboard_state_service.hpp"
|
||||
#include "services/interfaces/i_logger.hpp"
|
||||
#include "services/interfaces/i_soundboard_state_service.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -12,6 +12,7 @@ FrameWorkflowService::FrameWorkflowService(std::shared_ptr<ILogger> logger,
|
||||
std::shared_ptr<IConfigService> configService,
|
||||
std::shared_ptr<IAudioService> audioService,
|
||||
std::shared_ptr<IInputService> inputService,
|
||||
std::shared_ptr<IMeshService> meshService,
|
||||
std::shared_ptr<IPhysicsService> physicsService,
|
||||
std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<IRenderCoordinatorService> renderService,
|
||||
@@ -32,6 +33,7 @@ FrameWorkflowService::FrameWorkflowService(std::shared_ptr<ILogger> logger,
|
||||
std::move(configService),
|
||||
std::move(audioService),
|
||||
std::move(inputService),
|
||||
std::move(meshService),
|
||||
std::move(physicsService),
|
||||
std::move(sceneService),
|
||||
std::move(renderService),
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "services/interfaces/i_audio_service.hpp"
|
||||
#include "services/interfaces/i_config_service.hpp"
|
||||
#include "services/interfaces/i_input_service.hpp"
|
||||
#include "services/interfaces/i_mesh_service.hpp"
|
||||
#include "services/interfaces/i_physics_service.hpp"
|
||||
#include "services/interfaces/i_render_coordinator_service.hpp"
|
||||
#include "services/interfaces/i_scene_service.hpp"
|
||||
@@ -26,6 +27,7 @@ public:
|
||||
std::shared_ptr<IConfigService> configService,
|
||||
std::shared_ptr<IAudioService> audioService,
|
||||
std::shared_ptr<IInputService> inputService,
|
||||
std::shared_ptr<IMeshService> meshService,
|
||||
std::shared_ptr<IPhysicsService> physicsService,
|
||||
std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<IRenderCoordinatorService> renderService,
|
||||
|
||||
@@ -8,16 +8,69 @@
|
||||
#include "workflow_frame_physics_step.hpp"
|
||||
#include "workflow_frame_render_step.hpp"
|
||||
#include "workflow_frame_scene_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_audio_play_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_audio_set_volume_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_audio_stop_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_bool_and_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_bool_not_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_bool_or_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_camera_build_view_state_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_camera_look_at_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_camera_set_fov_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_camera_set_pose_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_camera_teleport_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_eq_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_gte_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_gt_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_lte_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_lt_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_compare_ne_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_append_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_concat_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_count_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_filter_equals_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_filter_gt_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_literal_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_map_add_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_map_mul_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_reduce_max_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_reduce_min_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_list_reduce_sum_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_mesh_load_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_model_despawn_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_model_set_transform_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_model_spawn_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_abs_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_add_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_clamp_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_div_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_max_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_min_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_mul_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_round_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_number_sub_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_scene_clear_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_scene_load_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_scene_set_active_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_concat_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_contains_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_equals_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_join_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_lower_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_replace_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_split_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_trim_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_string_upper_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_assert_exists_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_assert_type_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_clear_step.hpp"
|
||||
#include "../workflow_soundboard_audio_step.hpp"
|
||||
#include "../workflow_soundboard_catalog_scan_step.hpp"
|
||||
#include "../workflow_soundboard_gui_step.hpp"
|
||||
#include "../workflow_step_registry.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_copy_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_default_step.hpp"
|
||||
#include "../workflow_generic_steps/workflow_value_literal_step.hpp"
|
||||
#include "../workflow_validation_checkpoint_step.hpp"
|
||||
|
||||
#include <stdexcept>
|
||||
@@ -29,6 +82,7 @@ FrameWorkflowStepRegistrar::FrameWorkflowStepRegistrar(std::shared_ptr<ILogger>
|
||||
std::shared_ptr<IConfigService> configService,
|
||||
std::shared_ptr<IAudioService> audioService,
|
||||
std::shared_ptr<IInputService> inputService,
|
||||
std::shared_ptr<IMeshService> meshService,
|
||||
std::shared_ptr<IPhysicsService> physicsService,
|
||||
std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<IRenderCoordinatorService> renderService,
|
||||
@@ -38,6 +92,7 @@ FrameWorkflowStepRegistrar::FrameWorkflowStepRegistrar(std::shared_ptr<ILogger>
|
||||
configService_(std::move(configService)),
|
||||
audioService_(std::move(audioService)),
|
||||
inputService_(std::move(inputService)),
|
||||
meshService_(std::move(meshService)),
|
||||
physicsService_(std::move(physicsService)),
|
||||
sceneService_(std::move(sceneService)),
|
||||
renderService_(std::move(renderService)),
|
||||
@@ -97,24 +152,183 @@ void FrameWorkflowStepRegistrar::RegisterUsedSteps(
|
||||
soundboardStateService_,
|
||||
logger_));
|
||||
}
|
||||
if (plugins.contains("camera.set_pose")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCameraSetPoseStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("camera.look_at")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCameraLookAtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("camera.teleport")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCameraTeleportStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("camera.set_fov")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCameraSetFovStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("camera.build_view_state")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCameraBuildViewStateStep>(configService_, logger_));
|
||||
}
|
||||
if (plugins.contains("audio.play")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowAudioPlayStep>(audioService_, logger_));
|
||||
}
|
||||
if (plugins.contains("audio.stop")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowAudioStopStep>(audioService_, logger_));
|
||||
}
|
||||
if (plugins.contains("audio.set_volume")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowAudioSetVolumeStep>(audioService_, logger_));
|
||||
}
|
||||
if (plugins.contains("mesh.load")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowMeshLoadStep>(meshService_, logger_));
|
||||
}
|
||||
if (plugins.contains("model.spawn")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowModelSpawnStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("model.despawn")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowModelDespawnStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("model.set_transform")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowModelSetTransformStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("scene.load")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowSceneLoadStep>(sceneService_, logger_));
|
||||
}
|
||||
if (plugins.contains("scene.clear")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowSceneClearStep>(sceneService_, logger_));
|
||||
}
|
||||
if (plugins.contains("scene.set_active")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowSceneSetActiveStep>(sceneService_, logger_));
|
||||
}
|
||||
if (plugins.contains("value.copy")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueCopyStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.default")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueDefaultStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.literal")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueLiteralStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.clear")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueClearStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.assert.exists")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueAssertExistsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.assert.type")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueAssertTypeStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.add")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberAddStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.sub")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberSubStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.mul")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMulStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.div")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberDivStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.min")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.max")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMaxStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.clamp")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberClampStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.abs")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberAbsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.round")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberRoundStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.eq")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareEqStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.ne")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareNeStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.gt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareGtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.gte")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareGteStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.lt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareLtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.lte")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareLteStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.and")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolAndStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.or")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolOrStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.not")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolNotStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.concat")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringConcatStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.trim")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringTrimStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.lower")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringLowerStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.upper")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringUpperStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.replace")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringReplaceStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.contains")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringContainsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.equals")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringEqualsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.split")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringSplitStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.join")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringJoinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.literal")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListLiteralStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.append")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListAppendStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.concat")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListConcatStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.filter.equals")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListFilterEqualsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.filter.gt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListFilterGtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.map.add")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListMapAddStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.map.mul")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListMapMulStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.sum")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceSumStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.min")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceMinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.max")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceMaxStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.count")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListCountStep>(logger_));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace sdl3cpp::services {
|
||||
class IAudioService;
|
||||
class IConfigService;
|
||||
class IInputService;
|
||||
class IMeshService;
|
||||
class IPhysicsService;
|
||||
class IRenderCoordinatorService;
|
||||
class ISceneService;
|
||||
@@ -25,6 +26,7 @@ public:
|
||||
std::shared_ptr<IConfigService> configService,
|
||||
std::shared_ptr<IAudioService> audioService,
|
||||
std::shared_ptr<IInputService> inputService,
|
||||
std::shared_ptr<IMeshService> meshService,
|
||||
std::shared_ptr<IPhysicsService> physicsService,
|
||||
std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<IRenderCoordinatorService> renderService,
|
||||
@@ -39,6 +41,7 @@ private:
|
||||
std::shared_ptr<IConfigService> configService_;
|
||||
std::shared_ptr<IAudioService> audioService_;
|
||||
std::shared_ptr<IInputService> inputService_;
|
||||
std::shared_ptr<IMeshService> meshService_;
|
||||
std::shared_ptr<IPhysicsService> physicsService_;
|
||||
std::shared_ptr<ISceneService> sceneService_;
|
||||
std::shared_ptr<IRenderCoordinatorService> renderService_;
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#include "workflow_camera_view_state_builder.hpp"
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <glm/gtc/type_ptr.hpp>
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
namespace {
|
||||
std::array<float, 16> ToArray(const glm::mat4& matrix) {
|
||||
std::array<float, 16> result{};
|
||||
std::memcpy(result.data(), glm::value_ptr(matrix), sizeof(float) * result.size());
|
||||
return result;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
ViewState BuildViewState(const CameraPose& pose, float aspect) {
|
||||
glm::vec3 position(pose.position[0], pose.position[1], pose.position[2]);
|
||||
glm::vec3 lookAt(pose.lookAt[0], pose.lookAt[1], pose.lookAt[2]);
|
||||
glm::vec3 up(pose.up[0], pose.up[1], pose.up[2]);
|
||||
glm::mat4 view = glm::lookAt(position, lookAt, up);
|
||||
float safeAspect = aspect <= 0.0f ? 1.0f : aspect;
|
||||
glm::mat4 proj = glm::perspective(glm::radians(pose.fovDegrees),
|
||||
safeAspect,
|
||||
pose.nearPlane,
|
||||
pose.farPlane);
|
||||
|
||||
ViewState state{};
|
||||
state.view = ToArray(view);
|
||||
state.proj = ToArray(proj);
|
||||
state.viewProj = ToArray(proj * view);
|
||||
state.cameraPosition = pose.position;
|
||||
return state;
|
||||
}
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "services/interfaces/camera_types.hpp"
|
||||
#include "services/interfaces/graphics_types.hpp"
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
|
||||
ViewState BuildViewState(const CameraPose& pose, float aspect);
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
@@ -4,12 +4,50 @@
|
||||
#include "workflow_config_schema_step.hpp"
|
||||
#include "workflow_config_version_step.hpp"
|
||||
#include "workflow_runtime_config_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_bool_and_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_bool_not_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_bool_or_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_eq_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_gte_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_gt_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_lte_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_lt_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_compare_ne_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_append_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_concat_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_count_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_filter_equals_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_filter_gt_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_literal_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_map_add_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_map_mul_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_reduce_max_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_reduce_min_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_list_reduce_sum_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_abs_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_add_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_clamp_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_div_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_max_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_min_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_mul_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_round_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_number_sub_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_concat_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_contains_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_equals_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_join_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_lower_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_replace_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_split_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_trim_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_string_upper_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_assert_exists_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_assert_type_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_clear_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_copy_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_default_step.hpp"
|
||||
#include "workflow_generic_steps/workflow_value_literal_step.hpp"
|
||||
|
||||
#include <stdexcept>
|
||||
#include <unordered_set>
|
||||
@@ -55,18 +93,132 @@ void WorkflowDefaultStepRegistrar::RegisterUsedSteps(
|
||||
if (plugins.contains("value.default")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueDefaultStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.literal")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueLiteralStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.clear")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueClearStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.assert.exists")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueAssertExistsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("value.assert.type")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowValueAssertTypeStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.add")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberAddStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.sub")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberSubStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.mul")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMulStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.div")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberDivStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.min")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.max")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberMaxStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.clamp")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberClampStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.abs")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberAbsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("number.round")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowNumberRoundStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.eq")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareEqStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.ne")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareNeStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.gt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareGtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.gte")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareGteStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.lt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareLtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("compare.lte")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowCompareLteStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.and")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolAndStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.or")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolOrStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("bool.not")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowBoolNotStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.concat")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringConcatStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.trim")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringTrimStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.lower")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringLowerStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.upper")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringUpperStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.replace")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringReplaceStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.contains")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringContainsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.equals")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringEqualsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.split")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringSplitStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("string.join")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowStringJoinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.literal")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListLiteralStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.append")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListAppendStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.concat")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListConcatStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.filter.equals")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListFilterEqualsStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.filter.gt")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListFilterGtStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.map.add")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListMapAddStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.map.mul")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListMapMulStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.sum")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceSumStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.min")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceMinStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.reduce.max")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListReduceMaxStep>(logger_));
|
||||
}
|
||||
if (plugins.contains("list.count")) {
|
||||
registry->RegisterStep(std::make_shared<WorkflowListCountStep>(logger_));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user