package src { //flash import flash.display.Sprite; import flash.events.Event; import org.papervision3d.core.proto.CameraObject3D; import org.papervision3d.objects.DisplayObject3D; //papervision import org.papervision3d.view.Viewport3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.cameras.Camera3D; //cast3d import cast3d.utils.manipulators.Manipulator; import cast3d.utils.manipulators.ppv2.TrackBall; import cast3d.core.Cast3d; import cast3d.core.events.LoadEvent; import cast3d.loader.Xc3Loader; import cast3d.utils.controls.*; // Papervision3d dependencies import org.papervision3d.cameras.FrustumCamera3D; import org.papervision3d.scenes.Scene3D; import cast3d.geom.Camera3d; /** * ... * @author Brad Roodt */ public class SimpleCast extends Sprite { private var manipulator:TrackBall; private var view:Viewport3D; private var render:BasicRenderEngine; private var scene:Scene3D; private var camera:Camera3D; private var loader:Xc3Loader; private var animator:Cast3d; public function SimpleCast() { initPV3D(); initCast3D(); loadData(); } private function initPV3D():void { view = new Viewport3D(0, 0, true, false, false, false); addChild(view); scene = new Scene3D(); camera = new Camera3D(); camera.zoom = 10; render = new BasicRenderEngine(); } private function initCast3D(): void { animator = new Cast3d(scene, camera); animator.animationType = Cast3d.ANIMATION_TYPE_BYFRAME; animator.fps = 22; animator.autoRewind = true; } private function loadData(): void { loader = new Xc3Loader("models/buggy/buggy.x3c"); loader.resourcePath = "models/buggy/data"; loader.addEventListener(LoadEvent.LOAD_COMPLETE, cast3dLoadComplete); loader.addEventListener(LoadEvent.LOAD_ERROR, cast3dLoadError); loader.load(animator.source); } private function cast3dLoadComplete(e:LoadEvent):void { manipulator = new TrackBall(animator, stage, view.viewportWidth, view.viewportHeight, Manipulator.Z_UP, Manipulator.X_S,Manipulator.Z_S,Manipulator.Y_S ); addEventListener(Event.ENTER_FRAME, enterFrameRenderCycle); trace("loaded"); } private function cast3dLoadError(e:LoadEvent):void { trace("error"); } private function enterFrameRenderCycle(e:Event):void { animator.render(); render.renderScene(scene, camera, view); } } }