8 #include "sequenceplayer.h"
9 #include "sequenceplayeradapter.h"
10 #include "sequenceplayercurveoutput.h"
11 #include "sequencetrackcurve.h"
14 #include <nap/logger.h>
15 #include <parametervec.h>
16 #include <parameternumeric.h>
30 virtual void setValue() = 0;
39 template<
typename CURVE_TYPE,
typename PARAMETER_TYPE,
typename PARAMETER_VALUE_TYPE>
49 : mParameter(static_cast<PARAMETER_TYPE&>(*output.mParameter.get())), mOutput(output) {
55 mSetFunction = &SequencePlayerCurveAdapter::storeParameterValue;
59 mSetFunction = &SequencePlayerCurveAdapter::setParameterValue;
62 mStoredValue = mParameter.mValue;
79 void tick(
double time)
override
81 for(
const auto &segment: mTrack->
mSegments)
83 if(time >= segment->mStartTime && time < segment->mStartTime + segment->mDuration)
90 CURVE_TYPE source_value = source.
getValue((time - source.mStartTime) / source.mDuration);
93 auto value =
static_cast<PARAMETER_VALUE_TYPE
>(
97 (*this.*mSetFunction)(value);
109 void setValue()
override
111 std::unique_lock<std::mutex> l(mMutex);
112 mParameter.setValue(mStoredValue);
120 void setParameterValue(PARAMETER_VALUE_TYPE& value)
122 mParameter.setValue(value);
130 void storeParameterValue(PARAMETER_VALUE_TYPE& value)
132 std::unique_lock<std::mutex> l(mMutex);
133 mStoredValue =
value;
137 PARAMETER_TYPE& mParameter;
138 const SequenceTrackCurve<CURVE_TYPE>* mTrack;
139 bool mUseMainThread{};
142 PARAMETER_VALUE_TYPE mStoredValue;
Definition: sequencetracksegmentcurve.h:19
Definition: sequenceplayercurveoutput.h:25
Definition: sequenceplayeradapter.h:26
Definition: sequenceplayercurveadapter.h:26
Definition: sequencetrack.h:22
SequencePlayerCurveAdapter(const SequenceTrack &track, SequencePlayerCurveOutput &output)
Definition: sequenceplayercurveadapter.h:48
T getValue(float pos) const
T mMaximum
Property: 'Maximum' maximum value of track.
Definition: sequencetrackcurve.h:44
friend class SequencePlayerCurveOutput
Definition: sequenceplayercurveadapter.h:28
std::vector< ResourcePtr< SequenceTrackSegment > > mSegments
Property: 'Segments' Vector holding track segments.
Definition: sequencetrack.h:33
void removeAdapter(SequencePlayerCurveAdapterBase *curveAdapter)
T mMinimum
Property: 'Minimum' minimum value of track.
Definition: sequencetrackcurve.h:45
Definition: templateapp.h:17
bool mUseMainThread
Property: 'Use Main Thread' update in main thread or player thread.
Definition: sequenceplayercurveoutput.h:33
Definition: sequenceplayercurveadapter.h:40
void tick(double time) override
Definition: sequenceplayercurveadapter.h:79
void registerAdapter(SequencePlayerCurveAdapterBase *curveAdapter)
void destroy() override
Definition: sequenceplayercurveadapter.h:69