Author: ArcRiley
Date: 2008-02-24 19:56:31 -0500 (Sun, 24 Feb 2008)
New Revision: 978

Added:
   trunk/pysoy/examples/planar_blocks.py
Modified:
   trunk/pysoy/examples/collide_blocks.py
Log:
changed collide_blocks back, added planar_blocks with gravity/etc


Modified: trunk/pysoy/examples/collide_blocks.py
===================================================================
--- trunk/pysoy/examples/collide_blocks.py      2008-02-25 00:29:15 UTC (rev 
977)
+++ trunk/pysoy/examples/collide_blocks.py      2008-02-25 00:56:31 UTC (rev 
978)
@@ -3,11 +3,10 @@
 import blocks
 from time import sleep
 
-sce = soy.scenes.Planar()
-#sce = soy.scenes.Scene()
+sce = soy.scenes.Scene()
 cam = soy.bodies.Camera(sce)
 #cam.shape=soy.shapes.Sphere(2)
-cam.position = (0.0, 0.0, 10.0)
+cam.position = (0.0, 0.0, 15.0)
 lig = soy.bodies.lights.Light(sce)
 lig.position = (-10.0,10.0,2.0)
 #m = soy.bodies.fields.Monopole(sce)

Copied: trunk/pysoy/examples/planar_blocks.py (from rev 974, 
trunk/pysoy/examples/collide_blocks.py)
===================================================================
--- trunk/pysoy/examples/planar_blocks.py                               (rev 0)
+++ trunk/pysoy/examples/planar_blocks.py       2008-02-25 00:56:31 UTC (rev 
978)
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+import soy
+import blocks
+from time import sleep
+
+sce = soy.scenes.Planar(offset=-3.0)
+sce.gravity = (0,-9,0)
+#sce = soy.scenes.Scene()
+cam = soy.bodies.Camera(sce)
+#cam.shape=soy.shapes.Sphere(2)
+cam.position = (0.0, 1.0, 15.0)
+lig = soy.bodies.lights.Light(sce)
+lig.position = (-10.0,10.0,2.0)
+#m = soy.bodies.fields.Monopole(sce)
+#m.shape=soy.shapes.Sphere(15)
+#m.multiplier=.01
+bks = blocks.blocks(sce)
+fps = soy.textures.Print()
+
+scr = soy.Screen()
+win = soy.Window(scr, 'Collision Blocks', background=soy.colors.gray)
+pro = soy.widgets.Projector(win, camera=cam)
+can = soy.widgets.Canvas(win, texture=fps)
+
+def wireframeToggle() :
+  if cam.wireframe :
+    cam.wireframe = False
+  else :
+    cam.wireframe = True
+
+def fullscreenToggle() :
+  if scr.fullscreen :
+    scr.fullscreen = None
+  else :
+    scr.fullscreen = win
+
+def moreLight() :
+  lig.diffuse = lig.diffuse + 1.0
+  print lig.diffuse  
+
+def lessLight() :
+  lig.diffuse = lig.diffuse - 1.0
+  print lig.diffuse  
+
+key = soy.controllers.Keyboard(win)
+key['Q'] = soy.actions.Force(bks['Pearl'], -100,    0,    0)
+key['R'] = soy.actions.Force(bks['Pearl'],    0,  100,    0)
+key['S'] = soy.actions.Force(bks['Pearl'],  100,    0,    0)
+key['T'] = soy.actions.Force(bks['Pearl'],    0, -100,    0)
+key['U'] = soy.actions.Force(bks['Pearl'],    0,    0, -100)
+key['V'] = soy.actions.Force(bks['Pearl'],    0,    0,  100)
+key['q'] = soy.actions.Quit()
+key[ 1 ] = soy.actions.Quit() # 9 = esc key
+key['f'] = fullscreenToggle
+key['w'] = wireframeToggle
+key['['] = lessLight
+key[']'] = moreLight
+wcn = soy.controllers.Window(win)
+wcn['close'] = soy.actions.Quit()
+
+if __name__ == '__main__' :
+  while True:
+    sleep(.1)
+    if cam.fps: # TypeError: 
+                #   int() argument must be a string or a number, not 'NoneType'
+      fps.text = '%sfps' % str(int(cam.fps)).zfill(4)
+    for bk in bks :
+      p = bks[bk].position
+      v = bks[bk].velocity
+      v = [v[0], v[1], v[2]]
+      if abs(p[0]) > 5 and ((p[0]>0 and v[0]>0) or (p[0]<0 and v[0]< 0)) : 
+        v[0] = v[0]*-1
+      if abs(p[1]) > 5 and ((p[1]>0 and v[1]>0) or (p[1]<0 and v[1]< 0)) : 
+        v[1] = v[1]*-1
+      if abs(p[2]) > 5 and ((p[2]>0 and v[2]>0) or (p[2]<0 and v[2]< 0)) : 
+        v[2] = v[2]*-1
+      bks[bk].velocity = v
+

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to