With my system, I'm working with heavy object pooling based on copying template objects.
So, I create a template object which may potentially have some Bodies/Shapes/Fixtures and Joints included.
When this object is requested again, the GameObjectFactory copies these Bodies and Joints into a new object. When returned, this object is not yet in use, and does not have a position.
The caller that requested the object will set its position at some indeterminate future point in time.
I seem to have two issues thus far:
(1) The Bodies/Joints from the template object are registered with the world (is there a way to avoid this while still using the provided Factories?)
(2) Changing the position of the requested Game Object manually (which, in turn, filters down to the Bodies), majorly screws up the Joints as there's no way to change Joint positions as far as I can tell. A Fixed Prismatic joint, for example, remains at
0,0 and this screws up the positioning of the Body.
If there are any misunderstanding on my part, please let me know.