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_render_step.cpp
Normal file
35
src/services/impl/workflow_frame_render_step.cpp
Normal 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
|
||||
24
src/services/impl/workflow_frame_render_step.hpp
Normal file
24
src/services/impl/workflow_frame_render_step.hpp
Normal 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
|
||||
Reference in New Issue
Block a user