package { import flare.basic.Scene3D; import flare.basic.Viewer3D; import flare.core.Light3D; import flare.materials.FlatColorMaterial; import flare.primitives.Cube; import flare.primitives.Plane; import flare.primitives.ShadowPlane; import flare.primitives.Sphere; import flare.system.Device3D; import flash.display.Sprite; import flash.events.Event; import flash.geom.Vector3D; import flash.utils.getTimer; import jiglib.physics.RigidBody; import jiglib.plugin.flare3d.Flare3DPhysics; public class Flare3dJiglib extends Sprite { private var physics:Flare3DPhysics; private var scene:Scene3D; private var r:RigidBody; private var light:Light3D; public function Flare3dJiglib() { // create the scene. scene = new Viewer3D( this ) physics = new Flare3DPhysics(scene,2); physics.createGround("ground",new FlatColorMaterial("pink",0xff00ff),100,0); var cube:RigidBody = physics.createCube("cube",null); cube.y = 150; var sphere:RigidBody; sphere = physics.createSphere("s",null); sphere.y = 50; sphere.x = 6; //r.addBodyForce(new Vector3D(0,100,0),new Vector3D()); // create the light. light = new Light3D( "", Light3D.POINT_LIGHT ) // set the light as default light. Device3D.defaultLight = light // create the shadow plane. var plane:ShadowPlane = new ShadowPlane("", scene, light, 100, 100, 256, 256 ) plane.setPriority( 100 ) plane.alpha = 0.2; scene.addChild( plane ) plane.setPosition(0,0,0); scene.camera.setPosition( 0, 200,50 ) scene.camera.lookAt(0,0,0); addEventListener(Event.ENTER_FRAME,update); } private function update(e:Event):void { physics.step(); light.x = Math.sin( getTimer() / 1000 ) * 200 light.z = Math.cos( getTimer() / 1500 ) * 200 light.y = 250 } } }