package {
    import flash.display.*;
    import flash.events.*;
 
    import org.papervision3d.scenes.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.materials.*;
 
    public class MultCubeObj1 extends Sprite
    {
        private var container : Sprite;
        private var scene     : MovieScene3D;
        private var camera    : Camera3D;
        private var rootNode  : DisplayObject3D;
        private var cubeObj1  : Cube;
        private var cubeObj2  : Cube;
        private var material1 : BitmapFileMaterial;
        private var material2 : BitmapFileMaterial;

        //---------------------------------------------Constructor
        public function MultCubeObj1():void
        {
            stage.frameRate = 60;
            stage.quality   = "MEDIUM";
            stage.scaleMode = "noScale";
            stage.align = StageAlign.TOP_LEFT;
 
            //コンテナ生成
            container = new Sprite();
            container.x = stage.stageWidth / 2;
            container.y = stage.stageHeight / 2;
            stage.addChild( container );
 
            //シーン生成
            scene = new MovieScene3D( container );
 
            //rootNode生成
            rootNode = new DisplayObject3D();
            scene.addChild( rootNode );
 
            //マテリアル1設定
            material1 = new BitmapFileMaterial( "zaku.jpg" );
            material1.doubleSided = true
            material1.smooth = true;
            //Cube1オブジェクト生成
            cubeObj1 = new Cube(material1, 800, 800, 800, 2, 2, 2);
            cubeObj1.x = -800;
            rootNode.addChild(cubeObj1);
 
            //マテリアル2設定
            material2 = new BitmapFileMaterial( "sla.jpg" );
            material2.doubleSided = true
            material2.smooth = true;
            //Cube2オブジェクト生成
            cubeObj2 = new Cube(material2, 800, 800, 800, 2, 2, 2);
            cubeObj2.x = 800;
            rootNode.addChild(cubeObj2);

            //camera設定
            camera = new Camera3D();
            camera.zoom = 1;
 
            stage.addEventListener(Event.ENTER_FRAME, loop);
            stage.addEventListener(Event.RESIZE, onStageResize);
        }

        //---------------------------------------------loop
        private function loop(e:Event):void{
            cubeObj1.rotationY=container.mouseX;
            cubeObj1.rotationX=container.mouseY;
            material1.updateBitmap();

            cubeObj2.rotationY=-container.mouseX;
            cubeObj2.rotationX=-container.mouseY;
            material2.updateBitmap();

            scene.renderCamera( camera );
        }

        //---------------------------------------------onStageResize
        private function onStageResize(e:Event):void{
             container.x = this.stage.stageWidth  / 2;
             container.y = this.stage.stageHeight / 2;
        }
    }
}