From cb9c410ee22f739b9e503ff40314bd18a9e293fd Mon Sep 17 00:00:00 2001 From: Mark Mine Date: Fri, 3 Aug 2001 19:14:28 +0000 Subject: [PATCH] *** empty log message *** --- direct/src/interval/Interval.py | 27 ++++++++++++++------------- direct/src/interval/MultiTrack.py | 11 ++++++----- direct/src/interval/Track.py | 15 +++++++++++---- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/direct/src/interval/Interval.py b/direct/src/interval/Interval.py index d93521c1cb..a498601b75 100644 --- a/direct/src/interval/Interval.py +++ b/direct/src/interval/Interval.py @@ -8,6 +8,7 @@ import Task # Interval events IVAL_NONE = 0 IVAL_INIT = 1 +IVAL_DONE = 2 class Interval(DirectObject): """Interval class: Base class for timeline functionality""" @@ -80,7 +81,7 @@ class Interval(DirectObject): def setFinalT(self): """ setFinalT() """ - self.setT(self.getDuration(), event=IVAL_NONE) + self.setT(self.getDuration(), event=IVAL_DONE) def play(self, t0=0.0, duration=0.0, scale=1.0): """ play(t0, duration) @@ -135,21 +136,21 @@ class Interval(DirectObject): t = self.clock.getFrameTime() te = self.offset + ((t - self.startT) * self.scale) if (te < self.endTime): - # If first call, init intervals - if (self.firstTime): - self.setT(te, event = IVAL_INIT) - self.firstTime = 0 - else: - self.setT(te) + if (self.firstTime): + # If first call, init intervals + self.setT(te, event = IVAL_INIT) + self.firstTime = 0 + else: + self.setT(te) return Task.cont else: te = self.endTime - # If first call, init intervals - if (self.firstTime): - self.setT(te, event = IVAL_INIT) - self.firstTime = 0 - else: - self.setT(te) + if (self.firstTime): + # If first call, init intervals + self.setT(te, event = IVAL_INIT) + self.firstTime = 0 + else: + self.setT(te, IVAL_DONE) messenger.send(self.name + "-loop") return Task.done diff --git a/direct/src/interval/MultiTrack.py b/direct/src/interval/MultiTrack.py index d96243c38e..ef47089a97 100644 --- a/direct/src/interval/MultiTrack.py +++ b/direct/src/interval/MultiTrack.py @@ -46,13 +46,14 @@ class MultiTrack(Interval): """ for track in self.tlist: # Compare time with track's end times - if (t > track.duration): + if (event == IVAL_INIT) or (event == IVAL_DONE): + # always call setT if INIT or DONE event + track.setT(t, event) + elif (t >= track.duration) and (self.prev_t < track.duration): # If t > track.duration, only call if just crossing over - # or this is an IVAL_INIT event - if (self.prev_t < track.duration) or (event == IVAL_INIT): - track.setT(t, event) + track.setT(t, event) else: - # Update track + # t within track, update track track.setT(t, event) # Print out representation of MultiTrack diff --git a/direct/src/interval/Track.py b/direct/src/interval/Track.py index 5ab716f679..f52dcb416c 100644 --- a/direct/src/interval/Track.py +++ b/direct/src/interval/Track.py @@ -182,7 +182,9 @@ class Track(Interval): for ival, itime, itype, tStart, tEnd in self.ilist: # Compare time with each ival's start/end times if (t < tStart): - if (self.prev_t > tStart): + if (event == IVAL_DONE): + ival.setT(ival.getDuration(), event) + elif (self.prev_t > tStart): # We just crossed the start of this interval # going backwards (e.g. via the slider) # Execute this interval at its start time @@ -191,17 +193,22 @@ class Track(Interval): break elif (t >= tStart) and (t <= tEnd): # Between start/end, record current interval - currentInterval = ival # Make sure event == IVAL_INIT if entering new interval if ((event == IVAL_NONE) and ((self.prev_t < tStart) or (ival != self.currentInterval))): event = IVAL_INIT # Evaluate interval at interval relative time - currentInterval.setT(t - tStart, event) + if (event == IVAL_DONE): + ival.setT(ival.getDuration(), event) + else: + ival.setT(t - tStart, event) + currentInterval = ival elif (t > tEnd): # Crossing over interval end - if (((event == IVAL_NONE) and (self.prev_t < tEnd)) or + if ((((event == IVAL_NONE) or (event == IVAL_DONE)) and + (self.prev_t < tEnd)) + or ((event == IVAL_INIT) and ival.getfOpenEnded())): # If we've just crossed the end of this interval # or its an INIT event after the interval's end