package {    
    
    /**
     * 
     * Auteur: Vincent Helwig
     * Date: 30.09.2008
     * Website: http://www.tsoin.com
     * Description: Away3D - Création d’un cube
     * 
     **/

    import away3d.cameras.Camera3D;
    import away3d.containers.ObjectContainer3D;
    import away3d.containers.Scene3D;
    import away3d.containers.View3D;
    import away3d.materials.WireColorMaterial;
    import away3d.primitives.Cube;
    
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;
    
    import net.hires.utils.Stats;
    
    [SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]
    
    public class Away3D_002 extends Sprite    {
        
        private var scene:Scene3D;
        private var camera:Camera3D;
        private var view:View3D;
        private var objectContainer:ObjectContainer3D;
        private var cube:Cube;
        
        public function Away3D_002() {
            addEventListener(Event.ADDED_TO_STAGE, init);
            var __stats:Stats = new Stats();
            __stats.width = 75;
            __stats.x = 525;
            addChild( __stats );
        }
        
        private function init(event:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            
            setupScene();
            
            stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        }
        
        private function setupScene():void {
            
            scene = new Scene3D();
            camera = new Camera3D({zoom: 10, focus: 50, x:0, y:0, z:-300});
            
            view = new View3D({scene:scene, camera:camera});
            view.x = stage.stageWidth / 2;
            view.y = stage.stageHeight / 2;
            addChild(view);

            cube = new Cube({ width:100, height: 100});
            cube.material = new WireColorMaterial(0x000000, { wirecolor:0x789789});
            scene.addChild( cube );
            
        }
        
        private function onEnterFrame(event:Event):void {
            view.render();
        }
        
        private function onMouseMove(event:Event):void {
            cube.rotationX = ( stage.mouseY * 180 ) / stage.stageHeight - 90;
            cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth - 90;
        }

    }
    
}