From 87cd4d590109597dff967f94cb5452cba9318d33 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 6 Sep 2002 00:43:05 +0000 Subject: [PATCH] tweaks for intervals --- direct/src/extensions/CInterval-extensions.py | 16 +++++++++++++--- direct/src/interval/cInterval.I | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/direct/src/extensions/CInterval-extensions.py b/direct/src/extensions/CInterval-extensions.py index d0794dd085..622e4f350e 100644 --- a/direct/src/extensions/CInterval-extensions.py +++ b/direct/src/extensions/CInterval-extensions.py @@ -21,13 +21,23 @@ def pause(self): self.interrupt() - # Kill task - taskMgr.remove(self.getName() + '-play') + # Kill old task(s), including those from a similarly-named but + # different interval. + taskName = self.getName() + '-play' + oldTasks = taskMgr.getTasksNamed(taskName) + for task in oldTasks: + if hasattr(task, "interval"): + task.interval.interrupt() + taskMgr.remove(task) return self.getT() def resume(self): # Spawn task - taskMgr.add(self.__playTask, self.getName() + '-play') + import Task + taskName = self.getName() + '-play' + task = Task.Task(self.__playTask) + task.interval = self + taskMgr.add(task, taskName) def finish(self): # Nowadays, finish() will implicitly set the interval to its diff --git a/direct/src/interval/cInterval.I b/direct/src/interval/cInterval.I index 58b58ce118..6e70fe3bdb 100644 --- a/direct/src/interval/cInterval.I +++ b/direct/src/interval/cInterval.I @@ -143,7 +143,7 @@ recompute() const { //////////////////////////////////////////////////////////////////// INLINE void CInterval:: check_stopped(const char *method_name) const { - if (_state != S_initial && _state != S_final) { + if (_state == S_started) { interval_cat.warning() << get_name() << "." << method_name << "() called in state " << _state << ".\n";