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

    [SWF(width=450, height=350, backgroundColor=0x000000)]

    //モデルの表示
    public class MqoSample extends Sprite {
        private var container:Sprite;         //コンテナ
        private var scene    :Scene3D;        //シーン
        private var camera   :Camera3D;       //カメラ
        private var model :  Metasequoia_1_7;
        private var valx      : Number = 0;
        private var valy      : Number = 0;

        //コンストラクタ
        public function MqoSample():void {
            //ステージの設定
            stage.quality  ="MEDIUM";
            stage.scaleMode="noScale";
            stage.align    =StageAlign.TOP_LEFT;

            //定期処理イベントの指定
            this.addEventListener(Event.ENTER_FRAME, loop3D);

            init3D();
        }

        private function init3D():void
        {
            //コンテナの生成
            container=new Sprite();
            addChild(container);
            container.x=stage.stageWidth /2;
            container.y=stage.stageHeight/2;

            //シーンの生成
            scene=new Scene3D(container);

            //カメラの生成
            camera=new Camera3D();
            camera.x=20;
            camera.y=20;
            camera.z=120;

            //モデルの読み込み
            model = new Metasequoia_1_7();
            model.load("myfighter.mqo");
            scene.addChild(model);
        }

        //定期処理
        private function loop3D(evt:Event):void {

            //マウス座標でオブジェクトを回転
            valx += this.container.mouseX / 50;
            valy += this.container.mouseY / 50;
            model.rotationY = valx;
            model.rotationX = valy;

            //レンダリング
            scene.renderCamera(camera);
        }
    }
}