51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
/*
|
||
* DynamicParameterInitializer.cpp
|
||
*
|
||
* Created on: 29 нояб. 2023 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#include "DynamicParameter.hh"
|
||
|
||
#include "../../systemic/ApplyParameter.hpp"
|
||
|
||
bool application::schematic::DynamicParameter::input( Environment & env ) {
|
||
|
||
return ( parameter = systemic::getSetting<Settable>( env.cparams, provider, links.preset ) );
|
||
|
||
}
|
||
|
||
void application::schematic::DynamicParameter::build( Environment & env ) {
|
||
|
||
Settable * dp = memories::instance_object<Settable>(env.static_object_ma);
|
||
|
||
typedef systemic::ApplyParameter<Settable> ApplySettable;
|
||
typedef systemic::IValueType<float> ParameterInterface;
|
||
typedef systemic::IFunctor<void> Action;
|
||
|
||
ApplySettable * ap = memories::instance_object<ApplySettable>(env.static_object_ma, *dp, parameter);
|
||
|
||
(*ap)();
|
||
|
||
if( links.value ) {
|
||
|
||
env.signals.create( links.value, dp->value() );
|
||
|
||
}
|
||
|
||
if( links.set ) {
|
||
|
||
env.rholder.share<ParameterInterface>( *dp, links.set );
|
||
|
||
}
|
||
|
||
if( links.reset ) {
|
||
|
||
env.rholder.share<Action>( *ap, links.reset );
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|