diff --git a/direct/src/interval/cMetaInterval.cxx b/direct/src/interval/cMetaInterval.cxx index 051cecd814..99ae107f05 100644 --- a/direct/src/interval/cMetaInterval.cxx +++ b/direct/src/interval/cMetaInterval.cxx @@ -883,11 +883,15 @@ do_event_forward(CMetaInterval::PlaybackEvent *event, ai = find(new_active.begin(), new_active.end(), event->_begin_event); if (ai != new_active.end()) { new_active.erase(ai); + // This interval was new this frame; we must invoke it as + // an instant event. + enqueue_event(event->_n, ET_instant, is_initial); } else { ai = find(_active.begin(), _active.end(), event->_begin_event); if (ai != _active.end()) { _active.erase(ai); + enqueue_event(event->_n, ET_finalize, is_initial); } else { // Hmm, this event wasn't on either list. Maybe there was a @@ -960,11 +964,15 @@ do_event_reverse(CMetaInterval::PlaybackEvent *event, ai = find(new_active.begin(), new_active.end(), event); if (ai != new_active.end()) { new_active.erase(ai); + // This interval was new this frame; we invoke it as an + // instant event. + enqueue_event(event->_n, ET_reverse_instant, is_initial); } else { ai = find(_active.begin(), _active.end(), event); if (ai != _active.end()) { _active.erase(ai); + enqueue_event(event->_n, ET_reverse_finalize, is_initial); } else { // Hmm, this event wasn't on either list. Maybe there was a