#pragma once #include "RuntimeLiveState.h" #include #include struct LayeredRenderStateInput { const std::vector* basePersistedLayerStates = nullptr; const std::vector* committedLiveLayerStates = nullptr; RuntimeLiveState* transientAutomationOverlay = nullptr; bool allowTransientAutomationCommits = false; bool collectTransientAutomationCommitRequests = true; double transientAutomationSmoothing = 0.0; std::chrono::milliseconds transientAutomationCommitDelay = std::chrono::milliseconds(150); std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now(); }; struct RenderStateCompositionResult { std::vector layerStates; std::vector commitRequests; bool hasLayerStates = false; }; class RenderStateComposer { public: RenderStateCompositionResult BuildFrameState(const LayeredRenderStateInput& input) const; };