Confused :/
I expected this to move horizontally across the screen and rotate about its
local axis.

Basically look the same as if I did
c.roll(1);
instead of
pivot.roll(1);

Is ObjectContainer3D the same as Papervisions DisplayObject3D?
How do you group some primitives and have them rotate about some 3d point?

package
{
    import away3dlite.cameras.Camera3D;
    import away3dlite.containers.ObjectContainer3D;
    import away3dlite.containers.Scene3D;
    import away3dlite.containers.View3D;
    import away3dlite.primitives.Cylinder;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Vector3D;

    public class Test extends Sprite
    {
        private var camera:Camera3D;
        private var view:View3D;
        private var scene:Scene3D;
        private var pivot:ObjectContainer3D;

        public function Test():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            initEngine();
            initObjects();
            initListeners();

        }

        private function initEngine():void
        {
            scene = new Scene3D();
            camera = new Camera3D();
            //camera.y = -500;
            camera.z = -1000;
            //camera.rotationX = -45;

            view = new View3D();
            view.camera = camera;
            view.scene = scene;

            addChild(view);

            //addChild(new AwayStats(view));

            //var camC:CameraControllerAWL = new CameraControllerAWL(view,
camera, new Vector3D(0, 0, 0));
        }


        private function initObjects():void
        {
            pivot = new ObjectContainer3D();
            scene.addChild(pivot);

            c = new Cylinder();
            pivot.addChild(c);
        }

        private function initListeners():void
        {
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(Event.RESIZE, onResize);
            onResize();

        }

        private var ang:Number=0
        private var c:Cylinder;
        private function onEnterFrame(event:Event):void
        {
            ang++;
            //just moving pivot left right
            pivot.x = Math.sin(ang * Math.PI / 180) * 250;

            pivot.roll(1);
        //    c.roll(1);

            //render scene
            view.render();
        }


        /**
         * stage listener for resize events
         */
        private function onResize(event:Event = null):void
        {
            view.x = stage.stageWidth / 2;
            view.y = stage.stageHeight / 2;
        }
    }

}

Reply via email to