Author: ArcRiley Date: 2008-05-19 20:13:34 -0400 (Mon, 19 May 2008) New Revision: 1280
Added: trunk/pysoy/examples/SuperBlocks.py Log: '''New Example''' : * CollideBlocks, but with 64 blocks instead of just 8 Added: trunk/pysoy/examples/SuperBlocks.py =================================================================== --- trunk/pysoy/examples/SuperBlocks.py (rev 0) +++ trunk/pysoy/examples/SuperBlocks.py 2008-05-20 00:13:34 UTC (rev 1280) @@ -0,0 +1,210 @@ +#!/usr/bin/env python +import soy +import blocks +from time import sleep + +sce = soy.scenes.Scene() +cam = soy.bodies.Camera(sce) +cam.position = (0.0, 0.0, 15.0) +lig = soy.bodies.Light(sce) +lig.position = (-10.0,10.0,2.0) + +colors = { + 'Aventurine0' : (soy.materials.aventurine, + soy.materials.aventurine, (-7, 2, 0)), + 'Basalt0' : (soy.materials.basalt, + soy.materials.aventurine, (-5, 2, 0)), + 'Copper0' : (soy.materials.copper, + soy.materials.aventurine, (-3, 2, 0)), + 'CopperSulfate0' : (soy.materials.copperSulfate, + soy.materials.aventurine, (-1, 2, 0)), + 'DarkWood0' : (soy.materials.darkWood, + soy.materials.aventurine, ( 1, 2, 0)), + 'Pearl0' : (soy.materials.pearl, + soy.materials.aventurine, ( 3, 2, 0)), + 'Rhodonite0' : (soy.materials.rhodonite, + soy.materials.aventurine, ( 5, 2, 0)), + 'VelvetyRed0' : (soy.materials.velvetyRed, + soy.materials.aventurine, ( 7, 2, 0)), + + 'Aventurine1' : (soy.materials.aventurine, + soy.materials.basalt, (-7, 4, 0)), + 'Basalt1' : (soy.materials.basalt, + soy.materials.basalt, (-5, 4, 0)), + 'Copper1' : (soy.materials.copper, + soy.materials.basalt, (-3, 4, 0)), + 'CopperSulfate1' : (soy.materials.copperSulfate, + soy.materials.basalt, (-1, 4, 0)), + 'DarkWood1' : (soy.materials.darkWood, + soy.materials.basalt, ( 1, 4, 0)), + 'Pearl1' : (soy.materials.pearl, + soy.materials.basalt, ( 3, 4, 0)), + 'Rhodonite1' : (soy.materials.rhodonite, + soy.materials.basalt, ( 5, 4, 0)), + 'VelvetyRed1' : (soy.materials.velvetyRed, + soy.materials.basalt, ( 7, 4, 0)), + + 'Aventurine2' : (soy.materials.aventurine, + soy.materials.copper, (-7, 0, 0)), + 'Basalt2' : (soy.materials.basalt, + soy.materials.copper, (-5, 0, 0)), + 'Copper2' : (soy.materials.copper, + soy.materials.copper, (-3, 0, 0)), + 'CopperSulfate2' : (soy.materials.copperSulfate, + soy.materials.copper, (-1, 0, 0)), + 'DarkWood2' : (soy.materials.darkWood, + soy.materials.copper, ( 1, 0, 0)), + 'Pearl2' : (soy.materials.pearl, + soy.materials.copper, ( 3, 0, 0)), + 'Rhodonite2' : (soy.materials.rhodonite, + soy.materials.copper, ( 5, 0, 0)), + 'VelvetyRed2' : (soy.materials.velvetyRed, + soy.materials.copper, ( 7, 0, 0)), + + 'Aventurine3' : (soy.materials.aventurine, + soy.materials.copperSulfate, (-7, -2, 0)), + 'Basalt3' : (soy.materials.basalt, + soy.materials.copperSulfate, (-5, -2, 0)), + 'Copper3' : (soy.materials.copper, + soy.materials.copperSulfate, (-3, -2, 0)), + 'CopperSulfate3' : (soy.materials.copperSulfate, + soy.materials.copperSulfate, (-1, -2, 0)), + 'DarkWood3' : (soy.materials.darkWood, + soy.materials.copperSulfate, ( 1, -2, 0)), + 'Pearl3' : (soy.materials.pearl, + soy.materials.copperSulfate, ( 3, -2, 0)), + 'Rhodonite3' : (soy.materials.rhodonite, + soy.materials.copperSulfate, ( 5, -2, 0)), + 'VelvetyRed3' : (soy.materials.velvetyRed, + soy.materials.copperSulfate, ( 7, -2, 0)), + + 'Aventurine4' : (soy.materials.aventurine, + soy.materials.darkWood, (-7, 2, 3)), + 'Basalt4' : (soy.materials.basalt, + soy.materials.darkWood, (-5, 2, 3)), + 'Copper4' : (soy.materials.copper, + soy.materials.darkWood, (-3, 2, 3)), + 'CopperSulfate4' : (soy.materials.copperSulfate, + soy.materials.darkWood, (-1, 2, 3)), + 'DarkWood4' : (soy.materials.darkWood, + soy.materials.darkWood, ( 1, 2, 3)), + 'Pearl4' : (soy.materials.pearl, + soy.materials.darkWood, ( 3, 2, 3)), + 'Rhodonite4' : (soy.materials.rhodonite, + soy.materials.darkWood, ( 5, 2, 3)), + 'VelvetyRed4' : (soy.materials.velvetyRed, + soy.materials.darkWood, ( 7, 2, 3)), + + 'Aventurine5' : (soy.materials.aventurine, + soy.materials.pearl, (-7, 4, -5)), + 'Basalt5' : (soy.materials.basalt, + soy.materials.pearl, (-5, 4, -5)), + 'Copper5' : (soy.materials.copper, + soy.materials.pearl, (-3, 4, -5)), + 'CopperSulfate5' : (soy.materials.copperSulfate, + soy.materials.pearl, (-1, 4, -5)), + 'DarkWood5' : (soy.materials.darkWood, + soy.materials.pearl, ( 1, 4, -5)), + 'Pearl5' : (soy.materials.pearl, + soy.materials.pearl, ( 3, 4, -5)), + 'Rhodonite5' : (soy.materials.rhodonite, + soy.materials.pearl, ( 5, 4, -5)), + 'VelvetyRed5' : (soy.materials.velvetyRed, + soy.materials.pearl, ( 7, 4, -5)), + + 'Aventurine6' : (soy.materials.aventurine, + soy.materials.rhodonite, (-7, 0, -2)), + 'Basalt6' : (soy.materials.basalt, + soy.materials.rhodonite, (-5, 0, -2)), + 'Copper6' : (soy.materials.copper, + soy.materials.rhodonite, (-3, 0, -2)), + 'CopperSulfate6' : (soy.materials.copperSulfate, + soy.materials.rhodonite, (-1, 0, -2)), + 'DarkWood6' : (soy.materials.darkWood, + soy.materials.rhodonite, ( 1, 0, -2)), + 'Pearl6' : (soy.materials.pearl, + soy.materials.rhodonite, ( 3, 0, -2)), + 'Rhodonite6' : (soy.materials.rhodonite, + soy.materials.rhodonite, ( 5, 0, -2)), + 'VelvetyRed6' : (soy.materials.velvetyRed, + soy.materials.rhodonite, ( 7, 0, -2)), + + 'Aventurine7' : (soy.materials.aventurine, + soy.materials.velvetyRed, (-7, -2, 5)), + 'Basalt7' : (soy.materials.basalt, + soy.materials.velvetyRed, (-5, -2, 5)), + 'Copper7' : (soy.materials.copper, + soy.materials.velvetyRed, (-3, -2, 5)), + 'CopperSulfate7' : (soy.materials.copperSulfate, + soy.materials.velvetyRed, (-1, -2, 5)), + 'DarkWood7' : (soy.materials.darkWood, + soy.materials.velvetyRed, ( 1, -2, 5)), + 'Pearl7' : (soy.materials.pearl, + soy.materials.velvetyRed, ( 3, -2, 5)), + 'Rhodonite7' : (soy.materials.rhodonite, + soy.materials.velvetyRed, ( 5, -2, 5)), + 'VelvetyRed7' : (soy.materials.velvetyRed, + soy.materials.velvetyRed, ( 7, -2, 5)), +} + +bks = blocks.blocks(sce, colors) + +fps = soy.textures.Print() + +scr = soy.Screen() +win = soy.Window(scr, 'CollideBlocks', 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['Pearl0'], -100, 0, 0) +key['R'] = soy.actions.Force(bks['Pearl0'], 0, 100, 0) +key['S'] = soy.actions.Force(bks['Pearl0'], 100, 0, 0) +key['T'] = soy.actions.Force(bks['Pearl0'], 0, -100, 0) +key['U'] = soy.actions.Force(bks['Pearl0'], 0, 0, -100) +key['V'] = soy.actions.Force(bks['Pearl0'], 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) + 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 + Property changes on: trunk/pysoy/examples/SuperBlocks.py ___________________________________________________________________ Added: svn:executable + * _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn