package {
    
    import flash.display.*;
    import flash.events.*;
    
    import org.cornflex.pv3d.Mouse2D;
    import org.papervision3d.cameras.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.scenes.*;

    [SWF(width="427", height="371")]

    public class main extends Sprite
    {        
        private var container:Sprite;
        private var scene:Scene3D;
        private var camera:FreeCamera3D;        
        private var mouse2D:Mouse2D;
        
        public function main()
        {            
            stage.quality = StageQuality.MEDIUM;
            stage.scaleMode = "noScale";
            stage.align = "TL";
            stage.addEventListener(Event.RESIZE, centerScene);
                                                            
            init3D();                    
            this.addEventListener( Event.ENTER_FRAME, loop3D );                    
        }
        
        public function init3D():void
        {    
            container = new Sprite();        
            container.x = (stage.stageWidth)/2;
            container.y = (stage.stageHeight)/2;                    
            addChild( container );
            
            mouse2D = new Mouse2D(container, 10);
    
            scene = new Scene3D( container );
    
            camera = new FreeCamera3D();
            camera.z = 0; 
            camera.focus = 180;
            
            var material:BitmapFileMaterial = new BitmapFileMaterial("http://www.cornflex.org/files/sphericVR/textures/car.jpg");
            material.smooth = true;

            var sphere:Ase = new Ase(material, "http://www.cornflex.org/files/sphericVR/ase/sphere.ase", 0.08);
                 
            scene.addChild( sphere );
    
        }
        
        public function loop3D(event:Event):void
        {                        
            camera.rotationX = mouse2D.displaceX;
            camera.rotationY = -mouse2D.displaceY;                                    
            scene.renderCamera( camera );
        }    
        
        private function centerScene(event:Event):void 
        {
            container.x = (stage.stageWidth)/2;
            container.y = (stage.stageHeight)/2;                        
        }                                
            
        
    }
}