mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 17:35:34 -04:00
don't add zero-length intervals to the ivalMgr
This commit is contained in:
parent
daedc5239b
commit
4b198f45f5
@ -251,14 +251,18 @@ class MetaInterval(CMetaInterval):
|
||||
CMetaInterval.setT(self, t)
|
||||
|
||||
def start(self, startT = 0.0, endT = -1.0, playRate = 1.0):
|
||||
self.__updateIvals()
|
||||
self.setupPlay(startT, endT, playRate, 0)
|
||||
self.__manager.addInterval(self)
|
||||
if self.getDuration() == 0.0:
|
||||
self.privInstant()
|
||||
else:
|
||||
self.setupPlay(startT, endT, playRate, 0)
|
||||
self.__manager.addInterval(self)
|
||||
|
||||
def loop(self, startT = 0.0, endT = -1.0, playRate = 1.0):
|
||||
self.__updateIvals()
|
||||
self.setupPlay(startT, endT, playRate, 1)
|
||||
self.__manager.addInterval(self)
|
||||
if self.getDuration() == 0.0:
|
||||
self.privInstant()
|
||||
else:
|
||||
self.setupPlay(startT, endT, playRate, 1)
|
||||
self.__manager.addInterval(self)
|
||||
|
||||
def pause(self):
|
||||
if self.getState() == CInterval.SStarted:
|
||||
@ -268,11 +272,13 @@ class MetaInterval(CMetaInterval):
|
||||
return self.getT()
|
||||
|
||||
def resume(self, t0 = None):
|
||||
self.__updateIvals()
|
||||
if t0 != None:
|
||||
self.setT(t0)
|
||||
self.setupResume()
|
||||
self.__manager.addInterval(self)
|
||||
if self.getDuration() == 0.0:
|
||||
self.privInstant()
|
||||
else:
|
||||
if t0 != None:
|
||||
self.setT(t0)
|
||||
self.setupResume()
|
||||
self.__manager.addInterval(self)
|
||||
|
||||
def finish(self):
|
||||
self.__updateIvals()
|
||||
|
@ -91,8 +91,12 @@ set_t(double t) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CInterval::
|
||||
start(double start_t, double end_t, double play_rate) {
|
||||
setup_play(start_t, end_t, play_rate, false);
|
||||
_manager->add_c_interval(this, false);
|
||||
if (get_duration() == 0.0) {
|
||||
priv_instant();
|
||||
} else {
|
||||
setup_play(start_t, end_t, play_rate, false);
|
||||
_manager->add_c_interval(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -109,8 +113,13 @@ start(double start_t, double end_t, double play_rate) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CInterval::
|
||||
loop(double start_t, double end_t, double play_rate) {
|
||||
setup_play(start_t, end_t, play_rate, true);
|
||||
_manager->add_c_interval(this, false);
|
||||
if (get_duration() == 0.0) {
|
||||
// A zero-length interval can't really loop.
|
||||
priv_instant();
|
||||
} else {
|
||||
setup_play(start_t, end_t, play_rate, true);
|
||||
_manager->add_c_interval(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -140,8 +149,10 @@ pause() {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CInterval::
|
||||
resume() {
|
||||
setup_resume();
|
||||
_manager->add_c_interval(this, false);
|
||||
if (get_duration() != 0.0) {
|
||||
setup_resume();
|
||||
_manager->add_c_interval(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -152,9 +163,11 @@ resume() {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CInterval::
|
||||
resume(double start_t) {
|
||||
set_t(start_t);
|
||||
setup_resume();
|
||||
_manager->add_c_interval(this, false);
|
||||
if (get_duration() != 0.0) {
|
||||
set_t(start_t);
|
||||
setup_resume();
|
||||
_manager->add_c_interval(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user