Thanks for the tip :) On Sat, Dec 4, 2010 at 4:36 PM, richardolsson <[email protected]> wrote:
> The object needs to know that the matrix has changed. This has been > solved similarly to how the filters array works on display objects in > the standard Flash library, i.e. you need to reset the transform > property: > > mtx = myObject.transform; > mtx.rawData = someData; > myObject.transform = mtx; > > The last line will do a notifySceneTransformChange() internally. > > Also, for the issues that you are having with the rawData, Michael, > this probably stems from the fact that everytime you use the rawData > getter, a new Vector is created and populated by the Matrix3D class. > This should mean that (mtx.rawData == mtx.rawData) is false, but I'm > not sure. It definitely means though that you cannot just change an > item in a vector returned by rawData and expect that by reference the > internal value inside the matrix has also changed. I'm not sure about > the reason for this -- it really looks like a design flaw on Adobe's > end and everyone's always complaining about it. :) > > So I bet if you do trace(matrix2.rawData[0]) in your example above, it > will not be 0.3 (but probably 1.0 assuming that this is a default > identity matrix.) > > This again is because every time you invoke the rawData getter, you > get a new vector and changing that one will not propagate that change > to the matrix and any subsequent calls to rawData() will continue to > get the current matrix data. > > Make it into a habit to always get the raw data into a local vector > variable, perform your changes on that and only reset it once it's > done. > > var raw : Vector.<Number> = mtx.rawData; > raw[0] = 1; > raw[5] = 1; > raw[10] = 1; > raw[15] = 1; > mtx.rawData = raw; > > > Cheers > /R > > > On Dec 3, 11:03 am, John Brookes <[email protected]> wrote: > > Its not just working on matrix components though. > > Same again in render loop > > > > c.transform.prependRotation(1, Vector3D.Y_AXIS); > > //c.updateMe() > > > > If you don't do the update me, the cube will move 1 degree and stop. Even > > though its matrix continues to change. With the > > > > public function updateMe():void > > { > > notifySceneTransformChange(); > > > > } > > > > dropped into object3D it rotates. > -- Michael Ivanov ,Programmer Neurotech Solutions Ltd. Flex|Air |3D|Unity| www.neurotechresearch.com http://blog.alladvanced.net http://www.meetup.com/GO3D-Games-Opensource-3D/ Tel:054-4962254 [email protected] [email protected]
