forked from: Jiglib n PV simple test
forked from Jiglib n PV simple test (diff: 1)
Very basic JigLib & PV * hold down mouse to move
ActionScript3 source code
/**
* Copyright hacker_owxqkb_k ( http://wonderfl.net/user/hacker_owxqkb_k )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/zhrs
*/
// forked from JohnBrookes's Jiglib n PV simple test
/*Very basic JigLib & PV
* hold down mouse to move
*/
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import jiglib.geometry.JSphere;
import jiglib.math.JMatrix3D;
import jiglib.math.JNumber3D;
import jiglib.physics.RigidBody;
import jiglib.plugin.papervision3d.Papervision3DPhysics;
import jiglib.plugin.papervision3d.Pv3dMesh;
import org.papervision3d.core.math.Number3D;
import org.papervision3d.materials.special.ParticleMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.special.ParticleField;
import org.papervision3d.view.BasicView;
[SWF(backgroundColor="#000000")]
public class PVtestJG extends BasicView
{
private var physics:Papervision3DPhysics;
private var sphere2:RigidBody;
private var jmanualSphere:RigidBody;
private var jcamSphere:RigidBody;
private var mouseD:Boolean;
private var sphere:RigidBody;
public function PVtestJG():void
{
init();
singleRender();
addEventListener(Event.ENTER_FRAME, tick);
stage.addEventListener(MouseEvent.MOUSE_DOWN, moveSphere);
stage.addEventListener(MouseEvent.MOUSE_UP, function():void{mouseD=false});
}
private function moveSphere(e:MouseEvent):void
{
// sphere2.setVelocity(new JNumber3D( 0, -100, 0));
// jmanualSphere.setVelocity(new JNumber3D( 500, 0, 0));
mouseD = true;
}
private function init():void
{
camera.z = -200;
camera.target = null;
var stars:ParticleField = new ParticleField(new ParticleMaterial(0xfafafa ,1));
scene.addChild(stars);
physics = new Papervision3DPhysics(scene, 1);
physics.engine.setGravity(new JNumber3D(0, 0, 0));
sphere = physics.createSphere(new WireframeMaterial(0xffffff,1,4), 30, 6, 6);
sphere.mass = 50;
sphere2 = physics.createSphere(new WireframeMaterial(0x0000ff), 30, 6, 6);
sphere2.moveTo(new JNumber3D(0, 400, 20));
sphere2.restitution = 3;
var manualSphere:Sphere = new Sphere(new WireframeMaterial(0xff0000), 30, 6, 6);
scene.addChild(manualSphere);
jmanualSphere = new JSphere(new Pv3dMesh(manualSphere), 30);
jmanualSphere.moveTo(new JNumber3D( -400, 0, -20));
physics.addBody(jmanualSphere);
jcamSphere = new JSphere(new Pv3dMesh(camera), 30);
jcamSphere.moveTo(new JNumber3D( 0, -70, -500));
physics.addBody(jcamSphere);
jcamSphere.mass = 5;
jcamSphere.restitution = 6;
}
private function tick(e:Event):void
{
jcamSphere.addBodyTorque(new JNumber3D(viewport.mouseY - viewport.viewportHeight *0.5, viewport.mouseX - viewport.viewportWidth *0.5,0));
if (mouseD)
{
var forwardVector:Number3D = new Number3D(camera.transform.n13, camera.transform.n23, camera.transform.n33);
forwardVector.multiplyEq(50);
jcamSphere.setVelocity(new JNumber3D( forwardVector.x, forwardVector.y, forwardVector.z));
}
physics.step();
singleRender();
}
}
}