Currently Bodies can only be added to a world on creation.
Idealy they would be able to be created - then added to a world later. This
means the contstructor arguments must be stored locally. Unlike with Geom and
Space - I don't think they can easily be removed and added but can only be
created and destroyed. This isn't a large issue except that their values will
need to be cached locally on creation and destruction.
ODE itself creates bodies with a World parameter which is mandatory. ODE public API does not support moving Bodies from a world into another.
You could defer object creation at the Odejava lowlevel side and separate Body creation from body.setWorld(worldId), but then you hit the problem that setWorld cannot be called another time.
So inheritly I'd go with ODE's own way in these cases. It's not pretty but it's simple. I wouldn't try to abstrahate ODE's own pecularities, ideal solution is something that ODE does not support. It's API is pretty wierd from some places (imho).
Currently, people using the High level API must still include the low level Ode
class for use setting and getting attribute of some Odejava objects (such as
Body). Idealy these attributes would all have dedicated setters and getters.
This is not an API breaking change - legacy support can be kept (and possibly
deprecated). A fair deal of refactoring is needed however.
Yep, this would be good to do. Also there's some obsolete SWIG classes that need to be removed.