Phase 5 step 2
This commit is contained in:
@@ -1,24 +1,26 @@
|
||||
#include "RenderStateComposer.h"
|
||||
|
||||
RenderStateCompositionResult RenderStateComposer::BuildFrameState(const RenderStateCompositionInput& input) const
|
||||
RenderStateCompositionResult RenderStateComposer::BuildFrameState(const LayeredRenderStateInput& input) const
|
||||
{
|
||||
RenderStateCompositionResult result;
|
||||
if (!input.baseLayerStates)
|
||||
const std::vector<RuntimeRenderState>* layerStates =
|
||||
input.committedLiveLayerStates ? input.committedLiveLayerStates : input.basePersistedLayerStates;
|
||||
if (!layerStates)
|
||||
return result;
|
||||
|
||||
result.layerStates = *input.baseLayerStates;
|
||||
result.layerStates = *layerStates;
|
||||
result.hasLayerStates = !result.layerStates.empty();
|
||||
if (input.liveState)
|
||||
if (input.transientAutomationOverlay)
|
||||
{
|
||||
RuntimeLiveStateApplyOptions options;
|
||||
options.allowCommit = input.allowLiveCommits;
|
||||
options.smoothing = input.liveSmoothing;
|
||||
options.commitDelay = input.liveCommitDelay;
|
||||
options.allowCommit = input.allowTransientAutomationCommits;
|
||||
options.smoothing = input.transientAutomationSmoothing;
|
||||
options.commitDelay = input.transientAutomationCommitDelay;
|
||||
options.now = input.now;
|
||||
input.liveState->ApplyToLayerStates(
|
||||
input.transientAutomationOverlay->ApplyToLayerStates(
|
||||
result.layerStates,
|
||||
options,
|
||||
input.collectLiveCommitRequests ? &result.commitRequests : nullptr);
|
||||
input.collectTransientAutomationCommitRequests ? &result.commitRequests : nullptr);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
|
||||
struct RenderStateCompositionInput
|
||||
struct LayeredRenderStateInput
|
||||
{
|
||||
const std::vector<RuntimeRenderState>* baseLayerStates = nullptr;
|
||||
RuntimeLiveState* liveState = nullptr;
|
||||
bool allowLiveCommits = false;
|
||||
bool collectLiveCommitRequests = true;
|
||||
double liveSmoothing = 0.0;
|
||||
std::chrono::milliseconds liveCommitDelay = std::chrono::milliseconds(150);
|
||||
const std::vector<RuntimeRenderState>* basePersistedLayerStates = nullptr;
|
||||
const std::vector<RuntimeRenderState>* 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();
|
||||
};
|
||||
|
||||
@@ -26,5 +27,5 @@ struct RenderStateCompositionResult
|
||||
class RenderStateComposer
|
||||
{
|
||||
public:
|
||||
RenderStateCompositionResult BuildFrameState(const RenderStateCompositionInput& input) const;
|
||||
RenderStateCompositionResult BuildFrameState(const LayeredRenderStateInput& input) const;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user