I just did some actual testing and came up with a better solution that
actually works. Drop it in 'gameclock.py', import it, and then you can
gameclock.pause(), gameclock.unpause(), and gameclock.toggle_pause()
at will. I also included gameclock().dt(), because I like to treat
delta_t as a read-only global.
import pyglet.clock, time
class GameClock(pyglet.clock.Clock):
def __init__(self):
self.dt = 0.0
self.paused = False
self.pause_start = 0
self.total_pause_time = 0
super(GameClock, self).__init__(time_function=self.game_time)
def tick(self,poll=False):
self.dt = super(GameClock,self).tick(poll)
if self.dt > 0.2: self.dt = 0 #sanity check
if self.paused: self.dt = 0
def game_time(self):
if self.paused:
return self.pause_start - self.total_pause_time
else:
return time.time() - self.total_pause_time
def pause(self):
if not self.paused: self.toggle_pause
def unpause(self):
if self.paused: self.toggle_pause()
def toggle_pause(self):
self.paused = not self.paused
if self.paused: self.total_pause_time += time.time() -
self.pause_start
else: self.pause_start = time.time()
#convenience functions
def dt(): return pyglet.clock.get_default().dt
def toggle_pause(): pyglet.clock.get_default().toggle_pause()
def pause(): pyglet.clock.get_default().pause()
def unpause(): pyglet.clock.get_default().unpause()
pyglet.clock.set_default(GameClock())
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pyglet-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pyglet-users?hl=en
-~----------~----~----~----~------~----~------~--~---