Basic static/moving circle collisions. (Fixes issue #5)
[python-bulletml.git] / bulletml-runner
index 8bfd338..25fa50b 100755 (executable)
@@ -8,6 +8,7 @@ import pygame
 
 import bulletml
 import bulletml.bulletyaml
+from bulletml.collision import collides
 
 try:
     import yaml
@@ -37,9 +38,8 @@ def main(argv):
     while True:
         filename = argv[file_idx % len(argv)]
         doc = bulletml.BulletML.FromDocument(open(filename, "rU"))
-        actions = [act([], 0.5) for act in doc.top]
-        source = bulletml.Bullet(
-            x=150, y=150, target=target, actions=actions, rank=0.5)
+        source = bulletml.Bullet.FromDocument(
+            doc, x=150, y=150, target=target, rank=0.5)
                                          
         active = set([source])
         source.vanished = True
@@ -72,7 +72,7 @@ def main(argv):
                     elif event.key == pygame.K_RETURN:
                         newfile = True
                     elif event.key == pygame.K_s:
-                        actions = [act([], 0.5) for act in doc.top]
+                        actions = [act([], 0.5) for act in doc.actions]
                         source = bulletml.Bullet(
                             x=150, y=150, target=target,
                             actions=actions, rank=0.5)
@@ -83,10 +83,10 @@ def main(argv):
             target.y /= 2
 
             if not paused or go:
-
+                lactive = list(active)
                 start = time.time()
                 count = len(active)
-                for obj in list(active):
+                for obj in lactive:
                     new = obj.step()
                     total += len(new)
                     active.update(new)
@@ -94,6 +94,7 @@ def main(argv):
                         or not (-50 < obj.x < 350)
                         or not (-50 < obj.y < 350)):
                         active.remove(obj)
+                    collides(obj, lactive[0])
                 elapsed = time.time() - start
 
                 frames += 1