diff options
author | Gary Martin <gary@garycmartin.com> | 2010-10-06 17:56:32 (GMT) |
---|---|---|
committer | Gary Martin <gary@garycmartin.com> | 2010-10-06 17:56:32 (GMT) |
commit | 6be1dada2fde0e8e06220c9c509338c350123f0d (patch) | |
tree | 11843e9e6241b55e9b2666b9f46d7b851f0932e4 /physics.py | |
parent | a45bd81c6e7bf30d7c598c291578960a2f9b2db8 (diff) |
Watch for focus events so that pygame run loop is more gracefully idle when in background.
Diffstat (limited to 'physics.py')
-rw-r--r-- | physics.py | 46 |
1 files changed, 24 insertions, 22 deletions
@@ -78,32 +78,34 @@ class PhysicsGame: self.show_fake_cursor = True def run(self): + self.in_focus = True while True: for event in pygame.event.get(): self.currentTool.handleEvents(event) - # Drive motors - if self.world.run_physics: - for body in self.world.world.GetBodyList(): - if type(body.userData) == type({}): - if body.userData.has_key('rollMotor'): - diff = body.userData['rollMotor']['targetVelocity'] - body.GetAngularVelocity() - body.ApplyTorque(body.userData['rollMotor']['strength'] * diff * body.getMassData().I) - - # Update & Draw World - self.world.update() - self.screen.fill((255, 255, 255)) # 255 for white - self.world.draw() - - # Draw output from tools - self.currentTool.draw() - - # Show Sugar like cursor for UI consistancy - if self.show_fake_cursor: - self.screen.blit(self.cursor_picture, pygame.mouse.get_pos()) - - # Flip Display - pygame.display.flip() + if self.in_focus: + # Drive motors + if self.world.run_physics: + for body in self.world.world.GetBodyList(): + if type(body.userData) == type({}): + if body.userData.has_key('rollMotor'): + diff = body.userData['rollMotor']['targetVelocity'] - body.GetAngularVelocity() + body.ApplyTorque(body.userData['rollMotor']['strength'] * diff * body.getMassData().I) + + # Update & Draw World + self.world.update() + self.screen.fill((255, 255, 255)) # 255 for white + self.world.draw() + + # Draw output from tools + self.currentTool.draw() + + # Show Sugar like cursor for UI consistancy + if self.show_fake_cursor: + self.screen.blit(self.cursor_picture, pygame.mouse.get_pos()) + + # Flip Display + pygame.display.flip() # Stay under 30 FPS to help keep the rest of the platform responsive self.clock.tick(30) # Originally 50 |