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
-~----------~----~----~----~------~----~------~--~---

Reply via email to