[SWF(backgroundColor="#000000", width="600", height="400", frameRate="60")] public class Main extends Sprite { [Bindable] [Embed(source="../embeds/char.dae", mimeType="application/octet-stream")] private var ColladaData:Class;
//signature swf [Embed(source="/../embeds/signature.swf", symbol="Signature")] public var SignatureSwf:Class;
// tableTexture [Embed(source="/../embeds/table.jpg")] private var tableTex:Class;
//engine variables private var scene:Scene3D; private var camera:Camera3D; private var view:View3D; private var awayStats:AwayStats; private var cameraController:HoverController;
//signature variables private var Signature:Sprite; private var _signature:Bitmap; private var SignatureBitmap:Bitmap;
//light objects private var light:DirectionalLight; private var lightPicker:StaticLightPicker; private var direction:Vector3D;
//navigation variables private var move:Boolean = false; private var lastPanAngle:Number; private var lastTiltAngle:Number; private var lastMouseX:Number; private var lastMouseY:Number; private var tiltSpeed:Number = 4; private var panSpeed:Number = 4; private var distanceSpeed:Number = 4; private var tiltIncrement:Number = 0; private var panIncrement:Number = 0; private var distanceIncrement:Number = 0;
private var char:ObjectContainer3D;
/** * Constructor */ public function Main() { init(); }
/** * Global initialise function */ private function init():void { initEngine(); initLights(); initListeners();
initialize(); }
private function initialize():void { // create ground mesh var matground : TextureMaterial = new TextureMaterial(Cast.bitmapTexture(tableTex)); matground.shadowMethod = new FilteredShadowMapMethod(light); matground.lightPicker = lightPicker; matground.ambient = 0.5; matground.specular = 0.5; var mesh:Mesh = new Mesh(new PlaneGeometry(5000, 5000), matground); mesh.mouseEnabled = true; view.scene.addChild(mesh);
//Parsers.enableAllBundled(); var context:AssetLoaderContext = new AssetLoaderContext(); AssetLibrary.addEventListener(AssetEvent.ASSET_COMPLETE, loaded, false, 0, true); var loader:Loader3D = new Loader3D(); loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, complete, false, 0, true); loader.loadData(new ColladaData(), context, null, new DAEParser()); }
/** * Initialise the engine */ private function initEngine():void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT;
view = new View3D(); view.forceMouseMove = true; scene = view.scene; camera = view.camera; //setup controller to be used on the camera cameraController = new HoverController(camera, null, 180, 20, 500, 5);
// Chose global picking method ( chose one ). view.mousePicker = PickingType.RAYCAST_BEST_HIT; // Uses the CPU, guarantees accuracy with a little performance cost.
awayStats = new AwayStats(view); addChild(awayStats); }
/** * Initialise the lights */ private function initLights():void { //setup the lights for the scene light = new DirectionalLight( 1, -1, 1); light.ambient = 0.8; light.color = 0xffffff;
lightPicker = new StaticLightPicker([light]); scene.addChild(light); }
/** * Initialise the listeners */ private function initListeners():void { view.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); view.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); addEventListener(Event.ENTER_FRAME, onEnterFrame); stage.addEventListener(Event.RESIZE, onResize); onResize(); }
/** * Key down listener */ private function onKeyDown(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.UP: animator.play("default0"); animator.playbackSpeed = 1.5; break; case Keyboard.DOWN: animator.play("default0"); animator.playbackSpeed = 1.5; break; case Keyboard.LEFT: animator.play("default1"); animator.playbackSpeed = 1; break; case Keyboard.RIGHT: animator.play("default1"); animator.playbackSpeed = 1; break; } }
/** * Key up listener */ private function onKeyUp(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.UP: break; case Keyboard.DOWN: break; case Keyboard.LEFT: break; case Keyboard.RIGHT: break; } }