Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/physics.py
diff options
context:
space:
mode:
authorSai Vineet <saivineet89@gmail.com>2013-12-12 18:22:33 (GMT)
committer Sai Vineet <saivineet89@gmail.com>2013-12-12 19:58:20 (GMT)
commitff78ca3953a25b31db0c633c1a96bbe6c7131e7f (patch)
treee3495ed376d8df8916e1b3811e8e974fa1a9ba86 /physics.py
parentac756b85b64222ee5b9fd0fe5cfad0d4d16f5542 (diff)
Add Erase Trace Points button
Also refactored the tracing code.
Diffstat (limited to 'physics.py')
-rw-r--r--physics.py71
1 files changed, 46 insertions, 25 deletions
diff --git a/physics.py b/physics.py
index b0cad5e..c5f161e 100644
--- a/physics.py
+++ b/physics.py
@@ -50,6 +50,7 @@ from helpers import *
class PhysicsGame:
def __init__(self, activity):
+ self.activity = activity
# Get everything set up
self.clock = pygame.time.Clock()
self.canvas = activity.canvas
@@ -69,8 +70,9 @@ class PhysicsGame:
self.pygame_started = False
self.full_pos_list = []
- self.tracked_bodies = []
- self.body_colors = []
+ self.tracked_bodies = 0
+
+ self.trackinfo = {}
def switch_off_fake_pygame_cursor_cb(self, panel, event):
self.show_fake_cursor = False
@@ -135,31 +137,50 @@ class PhysicsGame:
if self.in_focus:
# Drive motors
if self.world.run_physics:
+ bodies_present = len(self.world.world.GetBodyList())
+ clear_all_active = self.activity.clear_all.get_sensitive()
+ if (bodies_present > 1) and clear_all_active is False:
+ self.activity.clear_all.set_sensitive(True)
+ elif (bodies_present > 1) is False and \
+ clear_all_active is True:
+ self.activity.clear_all.set_sensitive(False)
+
+ poslist = self.full_pos_list
+ clear_trace_active = self.activity.clear_trace.get_sensitive()
+ if poslist:
+ if not poslist[0]:
+ if clear_trace_active:
+ self.activity.clear_trace.set_sensitive(False)
+ else:
+ if clear_trace_active is False:
+ self.activity.clear_trace.set_sensitive(True)
+
+
+ for key, info in self.trackinfo.iteritems():
+ body = info[1] # Format - [host_body, tracker, color]
+ trackdex = body.userData['track_index']
+ def to_screen(pos):
+ px = self.world.meter_to_screen(
+ pos[0])
+ py = self.world.meter_to_screen(
+ pos[1])
+ py = self.world.renderer.get_surface() \
+ .get_height() - py
+ return (px, py)
+
+ x = body.position.x
+ y = body.position.y
+ tupled_pos = to_screen((x, y))
+ posx = tupled_pos[0]
+ posy = tupled_pos[1]
+ try:
+ self.full_pos_list[trackdex].append(posx)
+ self.full_pos_list[trackdex].append(posy)
+ except IndexError:
+ self.full_pos_list.append([posx, posy])
+
for body in self.world.world.GetBodyList():
if type(body.userData) == type({}):
- if body.userData.has_key('track_index'):
- trackdex = body.userData['track_index']
-
- def to_screen(pos):
- px = self.world.meter_to_screen(
- pos[0])
- py = self.world.meter_to_screen(
- pos[1])
- py = self.world.renderer.get_surface() \
- .get_height() - py
- return (px, py)
-
- x = body.position.x
- y = body.position.y
- tupled_pos = to_screen((x, y))
- posx = tupled_pos[0]
- posy = tupled_pos[1]
- try:
- self.full_pos_list[trackdex].append(posx)
- self.full_pos_list[trackdex].append(posy)
- except IndexError:
- self.full_pos_list.append([posx, posy])
-
if body.userData.has_key('rollMotor'):
diff = body.userData['rollMotor'] \
['targetVelocity'] \