package
{

        import com.greensock.TweenLite;
        import com.greensock.easing.*
    import away3d.core.base.Vertex;
    import away3d.materials.BitmapMaterial;
        import away3d.materials.ColorMaterial;
        import away3d.materials.WireColorMaterial;
    import away3d.primitives.BezierPatch;
    import away3d.primitives.data.PatchData;
        import away3d.containers.ObjectContainer3D;
        import away3d.core.base.Vertex;
        import flash.display.BitmapData;
        import flash.display.Sprite;

        /**
        $(CBI)* ...
        $(CBI)* @author by Özgür Çimen (c) [email protected]
        $(CBI)*/
        public class warppatch extends ObjectContainer3D
        {
                private var _patchVerts : Array;
        private var _patchMesh : BezierPatch;
                private var _texture : BitmapData;
        private var _material : BitmapMaterial;
        private var _nodes : Array;
        private var _uvs : Array;
        private var _patchInfo : Array;
        private var _segments : int = 10;
                private var _patchData : PatchData;

                private var wvertex :Array = [];

                public function warppatch(ar:Array)

                {
                        wvertex = ar;

                        createPatch();
                }
                 public function createPatch() : void {
            _nodes = new Array();


                        var array : Array = [];
                        for (var i : int = 0 ; i <  wvertex.length; i ++ )
                        {
                                array[i] = i ;

                        }


                        _nodes["patch"] = array;


            _patchVerts = wvertex;
            _uvs = new Array();
            _uvs["patch"] = new Array();
            _uvs["patch"][BezierPatch.N] = new Array( [1, 1, 0, 0] )


            var orientation:int =  BezierPatch.N

            var mat:WireColorMaterial = new
WireColorMaterial(0x0080C0);
            _patchInfo = new Array({ key:"patch",
orientation:orientation, segmentsW:_segments, segmentsH:_segments });

            _patchData = new PatchData(_nodes, _patchVerts, _uvs,
_patchInfo, 1);

            _patchMesh = new BezierPatch(_patchData,
{ name:"PatchMesh" , material:mat,  bothsides:true, ownCanvas:true} );

                        addChild(_patchMesh);

        }


                public function  setWarpNodePos(_node:int,_x:Number, _y :Number,
_z:Number = 0):void
                {
                        _patchVerts[_node].x = _x;
                        _patchVerts[_node].y = _y;
                        _patchVerts[_node].z = _z;


                }
                public function update():void
                {
                        //warpVerts()
                        trace(_patchMesh.patchData.vertices[6].x);
                        _patchMesh.refreshPatch();
                }

                private function warpVerts() : void
                {


            var target:Number = _patchVerts[9].z <= 0 ? 1000: -1000
        TweenLite.to([5], 1, {z:target, ease: Quad.easeInOut,
onComplete:warpVerts});
            TweenLite.to(_patchVerts[6], 1, {z:target, ease:
Quad.easeInOut, onComplete:warpVerts});
            TweenLite.to(_patchVerts[9], 1, {z:target, ease:
Quad.easeInOut, onComplete:warpVerts});
            TweenLite.to(_patchVerts[10], 1, {z:target, ease:
Quad.easeInOut, onComplete:warpVerts});

        }

        }
}



Reply via email to