I put up a branch to show my work to add a pose to the element . This
will allow you to set a pose on the element (T_ge in the diagram) and
all components will have their own pose (T_ec in the diagram). So now
SceneElements and Represenations have a get/setPose. Representations
also have a getGlobalPose with is just the product of the element and
component pose (T_ge * T_ec).
Devices currently provide an input pose (T_di). Ryan is working on a a
pose filter that will transform the input pose (T_gd). With the filter,
input components provide an input pose in the global coordinate system
(T_gd * T_di).
Now, you can set the pose of the element to place it, however, if you
hook up a input, this pose will be overwritten by the input. So when you
are getting input T_ge = T_gd * T_di. This isn't completely true with a
VTC. The input to the VTC will be from the device (T_gd * T_di) and the
vtc will move the physics representation toward the input. Then the
physics representation sets the element pose, through the
DriveElementBehavior. So no more need for most TransferPoseBehaviors.
The physics element will set the element pose, so the next time any
component calls getGlobalPose, it will get the update pose.
Anyway, this ended up touching a lot of parts and I would appreciate any
feedback, and questions, especially if you don't understand my drawing.
The thing on the upper left is my impression of a Phantom Omni.
PS, to compile, disable unit tests, I haven't addressed these yet. And
the only example that is updated is the stapler demo. So look there for
how this looks in implementation.