Sorry for the late reply - Previously i should of said $.pos.controller.value
Generally calling $.pos will return its position in world space - crucially .pos can be queried and set. Where as $.transform.pos - although returning the same value is not settable.
Here is the ‘basic’ assumptions:
$.pos - can be assumed to return the objects position in world space it can be queried/set
$.transform.pos - ALWAYS returns the objects transform in world space. It can only be queried.
$.pos.controller.value - Returns the total value of the objects position in parent space. Controllers work in local space…generally…
Now what breaks this:
Position/Orientation basically do the inverse - i.e the parent space multiplied by the objects world space transform. If it has a parent calling $.pos will return the objects parents space relative to the world multiplied by the its current world space transform.
In coordsys context wont apply, so to get the objects ‘actual’ world transform you should call $.transform.pos. Else you could do some complex math like so:
$.pos = (inverse (transMatrix $a.parent.transform.pos) * (transMatrix $a.pos)).pos
My hunch is the relative offset may be easier to store… not sure.