From 557399c79057db14ceba77d677ae8b032d612f4d Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Wed, 4 Dec 2013 13:24:16 +0000 Subject: interval parameter for echo trails --- rotord/src/nodes_channels.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'rotord/src') diff --git a/rotord/src/nodes_channels.h b/rotord/src/nodes_channels.h index 4fdcd01..8fca6a0 100644 --- a/rotord/src/nodes_channels.h +++ b/rotord/src/nodes_channels.h @@ -420,6 +420,7 @@ namespace Rotor { //calls base class constructor first create_parameter("number","number","number of echoes","Number echoes",25.0f); create_parameter("fadeto","number","amount that echoes fade out","Fadout amount",1.0f,0.0f,1.0f); + create_parameter("interval","number","number of frames between echoes","",1.0f,0.0f,1.0f); create_attribute("mode","blend mode for echoes","Blend mode","screen",{"screen","wrap","min","max"}); title="Echo trails"; description="Draw trail frames additively that fade off over time"; @@ -439,17 +440,15 @@ namespace Rotor { //clear cache and start over images.clear(); lastframe=-1; - //calculate frame interval - //interval=(int)(((duration/number)*frame.framerate)+0.5); - //total=interval*number; } } + int interval=(int)parameters["interval"]->value; int thisframe=((Time_spec)frame).frame(); //iterate cache and throw out any obsolete frames auto i = std::begin(images); while (i != std::end(images)) { // check if the image is in the range we need - if (thisframe-(*i).first>(int)parameters["number"]->value||thisframe-(*i).first<0) { + if ((thisframe-(*i).first>((int)parameters["number"]->value)*interval)||thisframe-(*i).first<0) { delete (*i).second; i = images.erase(i); } @@ -466,7 +465,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;i++){ + for (int i=1;i<(int)parameters["number"]->value*interval;i+=interval){ //check echo frame isn't at negative time int absframe=thisframe-i; if (absframe>-1){ @@ -521,7 +520,7 @@ namespace Rotor { } Echo_trails* clone(map &_settings) { return new Echo_trails(_settings);}; protected: - int interval,total,lastframe; //number of frames between displayed echoes + int total,lastframe; //number of frames between displayed echoes unordered_map images; }; class RGB_levels: public Image_node { -- cgit v1.2.3