diff options
Diffstat (limited to 'rotord')
| -rw-r--r-- | rotord/src/nodes_channels.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/rotord/src/nodes_channels.h b/rotord/src/nodes_channels.h index 8fca6a0..20fc86c 100644 --- a/rotord/src/nodes_channels.h +++ b/rotord/src/nodes_channels.h @@ -444,6 +444,7 @@ namespace Rotor { } int interval=(int)parameters["interval"]->value; int thisframe=((Time_spec)frame).frame(); + int duration=(int)parameters["number"]->value*interval; //iterate cache and throw out any obsolete frames auto i = std::begin(images); while (i != std::end(images)) { @@ -465,7 +466,7 @@ namespace Rotor { image=*(in); images[thisframe]=new Image(frame.w,frame.h); apply_LUT(image,*(images[thisframe])); - for (int i=1;i<(int)parameters["number"]->value*interval;i+=interval){ + for (int i=1;i<duration;i+=interval){ //check echo frame isn't at negative time int absframe=thisframe-i; if (absframe>-1){ @@ -478,7 +479,8 @@ namespace Rotor { else images[absframe]->clear(); } if (fless(1.0f,parameters["fadeto"]->value)){ - float amount=(((parameters["number"]->value-i)/parameters["number"]->value)*(1.0f-parameters["fadeto"]->value))+(1.0f-parameters["fadeto"]->value); + float fadetime=((float)i)/((float)duration); //0 to 1 + float amount=1.0f-(fadetime*(1.0f-parameters["fadeto"]->value)); Image *temp=*images[absframe]*amount; if (attributes["mode"]->value=="screen") { image+=*temp; |
