#
# NEED_PARMS pstart pend pfwd pback
#
# HELP: SYNOPSIS:
# HELP:     generic/movie/animate/bounce_start pstart pend pfwd pback
# HELP:
# HELP: DESCRIPTION:
# HELP:     Make the volumes animate in a bouncing fashion. That is:
# HELP:     - wait for pstart frames, 
# HELP:     - go up through the volumes, stepping volume every pfwd frames, 
# HELP:     - wait for pend frames, 
# HELP:     - go back to start stepping volume every pback frames.
#
CECHO ${$root.func.var.new("struct","animate",$root)}

CECHO ${$root.func.var.new("int","pstart",$root.animate)}
CECHO ${$root.func.var.new("int","istart",$root.animate)}
CECHO ${$root.func.var.new("int","pend",$root.animate)}
CECHO ${$root.func.var.new("int","iend",$root.animate)}
CECHO ${$root.func.var.new("int","pfwd",$root.animate)}
CECHO ${$root.func.var.new("int","ifwd",$root.animate)}
CECHO ${$root.func.var.new("int","pback",$root.animate)}
CECHO ${$root.func.var.new("int","iback",$root.animate)}

CECHO ${$root.func.var.new("int","i",$root.animate)}
CECHO ${$root.func.var.new("int","j",$root.animate)}

CECHO ${$root.func.var.new("int","numvols")}

! generic/multivol/countvol

VOL_SET *TOP*

CECHO ${$numvols=$root.mrc} 

CECHO ${$root.animate.i=0} 
CECHO ${$root.animate.j=0} 
CECHO ${$root.animate.pstart=$argv[1]}
CECHO ${$root.animate.pend=$argv[2]}
CECHO ${$root.animate.pfwd=$argv[3]}
CECHO ${$root.animate.pback=$argv[4]}

CECHO ${$root.animate.istart=$root.animate.pstart}
CECHO ${$root.animate.ifwd=$root.animate.istart+$root.animate.pfwd*($numvols-1)}
CECHO ${$root.animate.iend=$root.animate.ifwd+$root.animate.pend}
CECHO ${$root.animate.iback=$root.animate.iend+$root.animate.pback*($numvols-1)}

REG_COROUT ani_bounce 1 coroutine/animate/bounce
