Enables sequencer ipos for effect plugins and audio-tracks

to be locked to frames instead of the range from 0-100.
Comes very handy on long timelines...
This commit is contained in:
Peter Schlaile
2006-02-05 19:13:44 +00:00
parent 1ce9e196f7
commit 42d67ebd4f

View File

@@ -1986,9 +1986,15 @@ void do_seq_ipo(Sequence *seq)
/* seq_ipo has an exception: calc both fields immediately */
if(seq->ipo) {
ctime= frame_to_float(G.scene->r.cfra - seq->startdisp);
div= (seq->enddisp - seq->startdisp)/100.0f;
if(div==0.0) return;
if((seq->flag & SEQ_IPO_FRAME_LOCKED) != 0) {
ctime = frame_to_float(G.scene->r.cfra);
div = 1.0;
} else {
ctime= frame_to_float(G.scene->r.cfra
- seq->startdisp);
div= (seq->enddisp - seq->startdisp)/100.0f;
if(div==0.0) return;
}
/* 2nd field */
calc_ipo(seq->ipo, (ctime+0.5f)/div);
@@ -2099,8 +2105,10 @@ void do_all_data_ipos()
if (ed) {
seq= ed->seqbasep->first;
while(seq) {
if ((seq->type == SEQ_SOUND) && (seq->ipo) &&
(seq->startdisp<=G.scene->r.cfra+2) && (seq->enddisp>G.scene->r.cfra))
if ((seq->type == SEQ_RAM_SOUND
|| seq->type == SEQ_HD_SOUND) && (seq->ipo) &&
(seq->startdisp<=G.scene->r.cfra+2) &&
(seq->enddisp>G.scene->r.cfra))
do_seq_ipo(seq);
seq= seq->next;
}