package {
//import caurina.transitions.Tweener;
import flash.events.*;
import flash.display.*;
import flash.net.*;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.objects.parsers.Max3DS;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.shaders.FlatShader;
import org.papervision3d.materials.shaders.ShadedMaterial;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.utils.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.events.*;
import org.papervision3d.materials.*;
import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.*;
public class Gwiazda extends BasicView
{
private var model:DisplayObject3D;
private var rotX:Number = 0.1;
private var rotY:Number = 0.1;
private var camPitch:Number = 90;
private var camYaw:Number = 270;
private var easeOut:Number = 0.1;
private var light:PointLight3D;
private var plane:Plane;
private var materialBitmap:BitmapMaterial;
public function Gwiazda()
{
//super(1003,600,true,true);
//super(640,480,false,true);
viewport.buttonMode=true;
viewport.interactive=true;
init();
startRendering();
}
private function onCompleteLoader(e:Event):void
{
var bitmap:Bitmap = e.target.content as Bitmap
materialBitmap = new BitmapMaterial(bitmap.bitmapData);
light = new PointLight3D(true);
light.z = 0;
light.y = 300;
scene.addChild(light);
var flatShader:FlatShader = new FlatShader(light,0xFFFFFF,0x000000,100)
var shadeMaterial:ShadedMaterial = new ShadedMaterial(materialBitmap,flatShader);
var materials:MaterialsList = new MaterialsList();
materials.addMaterial(shadeMaterial, "mat1");
viewport.interactive=true;
model = new Max3DS();
model.addEventListener(FileLoadEvent.LOAD_COMPLETE,modelLoaded);
Max3DS(model).load("image/Kwadrat.3DS",materials,"image/");
model.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
model.addEventListener(MouseEvent.CLICK,onEClick);
model.scale=4;
}
private function init():void
{trace("init");
var loaderMaterial:Loader = new Loader();
loaderMaterial.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteLoader);
loaderMaterial.load(new URLRequest("image/zielony.jpg"));
trace("init2");
}
private function onClick(e:InteractiveScene3DEvent):void
{
trace("CLICK");
}
private function onEClick(e:MouseEvent):void
{
trace("ECLICK");
}
private function modelLoaded(e:FileLoadEvent):void
{
scene.addChild(model);
trace("Used materials by this model11: " + model.materials);
//viewport.interactive=true;
model.getMaterialByName("mat1").interactive = true;
model.getMaterialByName("mat1").addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
model.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onClick);
}
override protected function onRenderTick(e:Event=null):void
{
var xDist:Number = mouseX - stage.stageWidth * 0.5-300;
var yDist:Number = mouseY - stage.stageHeight * 0.5
camPitch += ((yDist * rotX) - camPitch + 90) * easeOut;
camYaw += ((xDist * rotY) - camYaw + 270) * easeOut;
camera.orbit(camPitch, camYaw);
super.onRenderTick();
}
}
}