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]

Reply via email to