mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-24 13:44:58 +00:00
ROADMAP.md
This commit is contained in:
35
src/services/impl/workflow_frame_scene_step.cpp
Normal file
35
src/services/impl/workflow_frame_scene_step.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include "workflow_frame_scene_step.hpp"
|
||||
#include "workflow_step_io_resolver.hpp"
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
|
||||
WorkflowFrameSceneStep::WorkflowFrameSceneStep(std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<ILogger> logger)
|
||||
: sceneService_(std::move(sceneService)),
|
||||
logger_(std::move(logger)) {}
|
||||
|
||||
std::string WorkflowFrameSceneStep::GetPluginId() const {
|
||||
return "frame.scene";
|
||||
}
|
||||
|
||||
void WorkflowFrameSceneStep::Execute(const WorkflowStepDefinition& step, WorkflowContext& context) {
|
||||
if (!sceneService_) {
|
||||
throw std::runtime_error("frame.scene requires an ISceneService");
|
||||
}
|
||||
WorkflowStepIoResolver resolver;
|
||||
const std::string deltaKey = resolver.GetRequiredInputKey(step, "delta");
|
||||
const auto* delta = context.TryGet<double>(deltaKey);
|
||||
if (!delta) {
|
||||
throw std::runtime_error("frame.scene missing delta input");
|
||||
}
|
||||
sceneService_->UpdateScene(static_cast<float>(*delta));
|
||||
if (logger_) {
|
||||
logger_->Trace("WorkflowFrameSceneStep", "Execute",
|
||||
"delta=" + std::to_string(*delta),
|
||||
"Scene updated");
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
24
src/services/impl/workflow_frame_scene_step.hpp
Normal file
24
src/services/impl/workflow_frame_scene_step.hpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "../interfaces/i_workflow_step.hpp"
|
||||
#include "../interfaces/i_logger.hpp"
|
||||
#include "../interfaces/i_scene_service.hpp"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace sdl3cpp::services::impl {
|
||||
|
||||
class WorkflowFrameSceneStep final : public IWorkflowStep {
|
||||
public:
|
||||
WorkflowFrameSceneStep(std::shared_ptr<ISceneService> sceneService,
|
||||
std::shared_ptr<ILogger> logger);
|
||||
|
||||
std::string GetPluginId() const override;
|
||||
void Execute(const WorkflowStepDefinition& step, WorkflowContext& context) override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<ISceneService> sceneService_;
|
||||
std::shared_ptr<ILogger> logger_;
|
||||
};
|
||||
|
||||
} // namespace sdl3cpp::services::impl
|
||||
Reference in New Issue
Block a user