CInterval-extensions.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """
  2. CInterval-extensions module: contains methods to extend functionality
  3. of the CInterval class
  4. """
  5. def play(self, t0 = 0.0, duration = None, scale = 1.0):
  6. """ play(t0, duration)
  7. """
  8. self.stop()
  9. if duration: # None or 0 implies full length
  10. self.setupPlay(t0, t0 + duration, scale)
  11. else:
  12. self.setupPlay(t0, -1, scale)
  13. self.__loop = 0
  14. # Spawn task
  15. taskMgr.add(self.__playTask, self.getName() + '-play')
  16. def loop(self, t0 = 0.0, duration = None, scale = 1.0):
  17. self.play(t0, duration, scale)
  18. self.__loop = 1
  19. return
  20. def stop(self):
  21. """ stop()
  22. """
  23. # Kill task
  24. taskMgr.remove(self.getName() + '-play')
  25. return self.getT()
  26. def setFinalT(self):
  27. # We have to define this at the Python level so we can
  28. # implicitly call stop().
  29. self.stop()
  30. self.finalize()
  31. def isPlaying(self):
  32. return taskMgr.hasTaskNamed(self.getName() + '-play')
  33. def __playTask(self, task):
  34. import Task
  35. loopCount = self.stepPlay()
  36. if loopCount == 0 or self.__loop:
  37. return Task.cont
  38. else:
  39. return Task.done