ROADMAP.md

This commit is contained in:
2026-01-09 21:54:51 +00:00
parent cecc7efd1c
commit fbd2b20798
2 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
#include "workflow_frame_render_step.hpp"
#include "workflow_step_io_resolver.hpp"
#include <stdexcept>
namespace sdl3cpp::services::impl {
WorkflowFrameRenderStep::WorkflowFrameRenderStep(std::shared_ptr<IRenderCoordinatorService> renderService,
std::shared_ptr<ILogger> logger)
: renderService_(std::move(renderService)),
logger_(std::move(logger)) {}
std::string WorkflowFrameRenderStep::GetPluginId() const {
return "frame.render";
}
void WorkflowFrameRenderStep::Execute(const WorkflowStepDefinition& step, WorkflowContext& context) {
if (!renderService_) {
throw std::runtime_error("frame.render requires an IRenderCoordinatorService");
}
WorkflowStepIoResolver resolver;
const std::string elapsedKey = resolver.GetRequiredInputKey(step, "elapsed");
const auto* elapsed = context.TryGet<double>(elapsedKey);
if (!elapsed) {
throw std::runtime_error("frame.render missing elapsed input");
}
renderService_->RenderFrame(static_cast<float>(*elapsed));
if (logger_) {
logger_->Trace("WorkflowFrameRenderStep", "Execute",
"elapsed=" + std::to_string(*elapsed),
"Render frame complete");
}
}
} // namespace sdl3cpp::services::impl

View File

@@ -0,0 +1,24 @@
#pragma once
#include "../interfaces/i_workflow_step.hpp"
#include "../interfaces/i_logger.hpp"
#include "../interfaces/i_render_coordinator_service.hpp"
#include <memory>
namespace sdl3cpp::services::impl {
class WorkflowFrameRenderStep final : public IWorkflowStep {
public:
WorkflowFrameRenderStep(std::shared_ptr<IRenderCoordinatorService> renderService,
std::shared_ptr<ILogger> logger);
std::string GetPluginId() const override;
void Execute(const WorkflowStepDefinition& step, WorkflowContext& context) override;
private:
std::shared_ptr<IRenderCoordinatorService> renderService_;
std::shared_ptr<ILogger> logger_;
};
} // namespace sdl3cpp::services::impl