| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- """Contains the Timer class."""
- __all__ = ['Timer']
- from . import Task
- class Timer:
- id = 0
- def __init__(self, name=None):
- self.finalT = 0.0
- self.currT = 0.0
- if (name == None):
- name = 'default-timer-%d' % Timer.id
- Timer.id += 1
- self.name = name
- self.started = 0
- self.callback = None
- def start(self, t, name):
- if (self.started):
- self.stop()
- self.callback = None
- self.finalT = t
- self.name = name
- self.startT = globalClock.getFrameTime()
- self.currT = 0.0
- taskMgr.add(self.__timerTask, self.name + '-run')
- self.started = 1
- def startCallback(self, t, callback):
- if (self.started):
- self.stop()
- self.callback = callback
- self.finalT = t
- self.startT = globalClock.getFrameTime()
- self.currT = 0.0
- taskMgr.add(self.__timerTask, self.name + '-run')
- self.started = 1
- def stop(self):
- if (not self.started):
- return 0.0
- taskMgr.remove(self.name + '-run')
- self.started = 0
- return self.currT
- def resume(self):
- assert self.currT <= self.finalT
- assert self.started == 0
- self.start(self.finalT - self.currT, self.name)
- def restart(self):
- if (self.callback != None):
- self.startCallback(self.finalT, self.callback)
- else:
- self.start(self.finalT, self.name)
- def isStarted(self):
- return self.started
- def addT(self, t):
- self.finalT = self.finalT + t
- def setT(self, t):
- self.finalT = t
- def getT(self):
- return (self.finalT - self.currT)
- def __timerTask(self, task):
- t = globalClock.getFrameTime()
- te = t - self.startT
- self.currT = te
- if (te >= self.finalT):
- if (self.callback != None):
- self.callback()
- else:
- messenger.send(self.name)
- return Task.done
- return Task.cont
|