package jiglib.plugin.flare3d { import flare.basic.Scene3D; import flare.core.Mesh3D; import flare.materials.Material; import flare.primitives.Cube; import flare.primitives.Plane; import flare.primitives.Sphere; import flash.geom.Vector3D; import jiglib.geometry.JBox; import jiglib.geometry.JPlane; import jiglib.geometry.JSphere; import jiglib.math.JMatrix3D; import jiglib.math.JNumber3D; import jiglib.physics.PhysicsSystem; import jiglib.physics.RigidBody; import jiglib.plugin.AbstractPhysics; /** * @author Chribbe */ public class Flare3DPhysics extends AbstractPhysics { private var scene:Scene3D; public function Flare3DPhysics(scene:Scene3D, speed:Number = 1) { super(speed); this.scene = scene; engine.setGravity(JNumber3D.getScaleVector(Vector3D.Y_AXIS, -10)); } public function getMesh(body:RigidBody):Mesh3D { if(body.skin!=null){ return Flare3DMesh(body.skin).mesh as Mesh3D; }else { return null; } } public function createSphere(name:String,material:Material,radius:Number = 5, segments:int = 12):RigidBody { var sphere:Sphere = new Sphere(name,radius,segments,material); scene.addChild(sphere); sphere.resetTransforms(); var jsphere:JSphere = new JSphere(new Flare3DMesh(sphere), radius); addBody(jsphere); return jsphere; } public function createCube(name:String,material:Material, width:Number = 10, depth:Number = 10, height:Number = 10):RigidBody { var cube:Cube = new Cube(name, width, height, depth,1,material); scene.addChild(cube); var jbox:JBox = new JBox(new Flare3DMesh(cube), width, depth, height); addBody(jbox); return jbox; } public function createGround(name:String,material:Material, size:Number, level:Number):RigidBody { var ground:Plane = new Plane(name,size,size,10,material,"+xz"); scene.addChild(ground); ground.setPriority(-200); var jGround:JPlane = new JPlane(new Flare3DMesh(ground), new Vector3D(0, 1, 0)); addBody(jGround); jGround.moveTo(new Vector3D(0,level,0)); jGround.updateObject3D(); return jGround; } } }