Files
video-shader-toys/src/app/ShaderRuntimeContentController.cpp
Aiden 56883439a6
All checks were successful
CI / React UI Build (push) Successful in 12s
CI / Native Windows Build And Tests (push) Successful in 2m14s
CI / Windows Release Package (push) Has been skipped
clean split
2026-05-30 21:22:03 +10:00

68 lines
1.9 KiB
C++

#include "ShaderRuntimeContentController.h"
#include "../control/RuntimeControlCommand.h"
#include "../control/RuntimeStateJson.h"
#include <utility>
namespace RenderCadenceCompositor
{
ShaderRuntimeContentController::ShaderRuntimeContentController(RenderLayerPublisher publisher) :
mRuntimeLayers(std::move(publisher))
{
}
ShaderRuntimeContentController::~ShaderRuntimeContentController()
{
Stop();
}
void ShaderRuntimeContentController::Initialize(AppConfig& config)
{
mRuntimeLayers.Initialize(
config.shaderLibrary,
static_cast<unsigned>(config.maxTemporalHistoryFrames),
config.runtimeShaderId);
mStartupShaderId = config.runtimeShaderId;
}
void ShaderRuntimeContentController::Start()
{
mRuntimeLayers.StartStartupBuild(mStartupShaderId);
}
void ShaderRuntimeContentController::Stop()
{
mRuntimeLayers.Stop();
}
ControlActionResult ShaderRuntimeContentController::HandlePost(const std::string& path, const std::string& body)
{
if (path == "/api/layers/add")
return mRuntimeLayers.HandleAddLayer(body);
if (path == "/api/layers/remove")
return mRuntimeLayers.HandleRemoveLayer(body);
RuntimeControlCommand command;
std::string error;
if (!ParseRuntimeControlCommand(path, body, command, error))
return ControlActionResult{ false, error };
return mRuntimeLayers.HandleControlCommand(command);
}
void ShaderRuntimeContentController::WriteRuntimeJson(JsonWriter& writer, const CadenceTelemetrySnapshot& telemetry) const
{
WriteShaderRuntimeJson(writer, mRuntimeLayers.Snapshot(telemetry));
}
void ShaderRuntimeContentController::WriteCatalogJson(JsonWriter& writer) const
{
WriteShaderCatalogJson(writer, mRuntimeLayers.ShaderCatalog());
}
void ShaderRuntimeContentController::WriteLayersJson(JsonWriter& writer, const CadenceTelemetrySnapshot& telemetry) const
{
WriteRuntimeShaderLayersJson(writer, mRuntimeLayers.ShaderCatalog(), mRuntimeLayers.Snapshot(telemetry));
}
}