package{ import flash.events.KeyboardEvent; import flash.events.Event; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.ui.Keyboard; import flash.ui.Mouse; import flash.display.MovieClip; import flash.display.Sprite; import org.papervision3d.cameras.FreeCamera3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.scenes.Scene3D; import org.papervision3d.lights.*; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.view.Viewport3D; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.MovieAssetMaterial; import org.papervision3d.core.proto.CameraObject3D; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.parsers.DAE; public class planes extends Sprite { private var viewport: Viewport3D; private var scene: Scene3D; public var current_camera: CameraObject3D; public var default_camera: Camera3D; //private var camera: Camera3D; //private var wireframeMaterial: WireframeMaterial; private var plane: Plane; private var plane2: Plane; private var plane3: Plane; private var plane4: Plane; private var renderer: BasicRenderEngine; public var wdown:Boolean = false; public var adown:Boolean = false; public var sdown:Boolean = false; public var ddown:Boolean = false; public var camera:FreeCamera3D; public function planes():void { default_camera = new Camera3D(); current_camera = default_camera; scene = new Scene3D(); viewport = new Viewport3D(0,0,true); addChild(viewport); camera = new FreeCamera3D(1, 500); camera.moveUp(400); current_camera = camera; //viewport = new BasicRenderEngine(width, height, scaleToStage, interactive); //viewport = new Viewport3D(800, 600, false, true); //addChild(viewport); //instantiates a Scene3D instance //scene = new Scene3D(); //instantiates a Camera3D instance //camera = new Camera3D(); //camera = new FreeCamera3D(1, 500); //camera.moveUp(400); //renderer draws the scene to the stage renderer = new BasicRenderEngine(); var tiledMat:BitmapFileMaterial = new BitmapFileMaterial("images/ground_tex.jpg"); //tiledMat.tiled = true; //tiledMat.maxU = 100; //tiledMat.maxV = 100; for (var x:Number = 0; x <4; x++) { for (var y:Number = 0; y <4; y++) { var p:Plane = new Plane( tiledMat, 1000, 1000, 8, 8); p.pitch(90); p.x = (x * 1000)-2000; p.z = (y * 1000)-2000; scene.addChild(p); } } //WireframeMaterial, doubleSided draws the color on both sides of the geometry normals var mat:BitmapFileMaterial = new BitmapFileMaterial("images/lci.png"); mat.doubleSided = true; //wireframeMaterial = new WireframeMaterial(0x333333); //wireframeMaterial.doubleSided = true; //plane = new Plane(material applied to object, width, height, wSegments, hSegments); plane = new Plane(mat, 500, 500, 3, 3); plane.x = -400; plane.y = 350; plane.z = -700; scene.addChild(plane); plane2 = new Plane(mat, 500, 500, 3, 3); plane2.x = 180; plane2.y = 350; plane2.z = -520; scene.addChild(plane2); plane3 = new Plane(mat, 500, 500, 3, 3); plane3.x = -300; plane3.y = 350; plane3.z = -120; scene.addChild(plane3); plane4 = new Plane(mat, 500, 500, 3, 3); plane4.x = 450; plane4.y = 350; plane4.z = -20; scene.addChild(plane4); //set up enterFrame event addEventListener(Event.ENTER_FRAME, onEnterFrame); //define enterFrame Method, render the PV3D Scene and animate the primitive function onEnterFrame(e:Event):void { if (wdown) { camera.moveForward(60); } if (sdown) { camera.moveBackward(60); } if (adown) { camera.yaw( -8); } if (ddown) { camera.yaw( 8); } //plane.rotationY += 2; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); renderer.renderScene(scene, camera, viewport); } } public function onKeyDown( event:KeyboardEvent ):void { // The keycodes for the W,A,S & D keys are: // W: 87 // A: 65 // S: 83 // D: 68 // ------- switch(event.keyCode) { case 87: wdown = true; break; case 65: adown = true; break; case 83: sdown = true; break; case 68: ddown = true; break; } } public function onKeyUp( event:KeyboardEvent ):void { switch(event.keyCode) { case 87: wdown = false; break; case 65: adown = false; break; case 83: sdown = false; break; case 68: ddown = false; break; } } } }