Fixed trigger
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "RuntimeParameterUtils.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <utility>
|
||||
|
||||
namespace RenderCadenceCompositor
|
||||
@@ -156,8 +157,18 @@ bool RuntimeLayerModel::UpdateParameter(const std::string& layerId, const std::s
|
||||
}
|
||||
|
||||
ShaderParameterValue normalizedValue;
|
||||
if (!NormalizeAndValidateParameterValue(*definition, value, normalizedValue, error))
|
||||
if (definition->type == ShaderParameterType::Trigger)
|
||||
{
|
||||
const auto currentIt = layer->parameterValues.find(parameterId);
|
||||
const double previousCount = currentIt == layer->parameterValues.end() || currentIt->second.numberValues.empty()
|
||||
? 0.0
|
||||
: currentIt->second.numberValues.front();
|
||||
normalizedValue.numberValues = { previousCount + 1.0, RuntimeElapsedSeconds() };
|
||||
}
|
||||
else if (!NormalizeAndValidateParameterValue(*definition, value, normalizedValue, error))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
layer->parameterValues[parameterId] = normalizedValue;
|
||||
if (layer->renderReady)
|
||||
@@ -360,4 +371,9 @@ RuntimeLayerReadModel RuntimeLayerModel::ToReadModel(const Layer& layer)
|
||||
readModel.parameterValues = layer.parameterValues;
|
||||
return readModel;
|
||||
}
|
||||
|
||||
double RuntimeLayerModel::RuntimeElapsedSeconds() const
|
||||
{
|
||||
return std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::steady_clock::now() - mStartTime).count();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user