Right. Well the basic archetecture is running now.
You can access the source be downloading
http://homepages.inf.ed.ac.uk/s0570397/joode-src.tar.gz
OR
you can get it from…
At the moment I have only uploaded the source, I did not want to spend hours uploading to their CVS repository if we are gonna switch Jeff willing, sourceforge do not suppor the -r command so its incredibly tedious uploading files.
To test the functionality I have currently put a dependancy on Xith3D. So you will need those packages in your runpath and you will need to set you java.library.path system variable with the -D VM option before you will be able to run the jaw dropping demo:
net.java.dev.joode.test.step.SphereCollisionTest
Under the bonnet I have struggled to get this working. I have implemented two stepping algorithms, x1 and x2. x2 is the highly optimized stepping algotihm but it does not work, and x1 only works when it uses the SlowLCP implementation (although that is the best option for it to use, you will see the options at the top of the source for that class)
I have only implemented the unoptimized version of the LCP algorithm, though I do beleive that is working.
The Space architecture is in place currently, but only simple space exists.
The geom architecture is in place, but only spheres are in place
The collision architecture is in place, but only a SphereSphere, and a GeomSpace collider is implemented.
The Joint implementation is messy but in place, but only collision (i.e. Contact) joints exist.
Bodies and dynamics are working.
Mass is partially implemented (the core is there but loads of minor methods are missing).
So I dunno if people want to get started yet, or to wait until we get java.net. The damn package names are all wrong >:(
If you want to get eased into development then I suggest implementing some geoms. There are fairly straightforward and you can copy the style of the Sphere class easily. Slightly more advanced would be to implement extra Joints. Or better yet get rid of all the crazy virtual tables and suchlike, they are this crazy way ODE used to store all joint information in one data area. I think it is fairly easy to turn all the virtual functions into abstract methods of a joint superclass.
Hardcore people might want to try and tackly the stepIsland_x2 method or the LCPFast (and abstract the LCP class so it can be switched)
The stepIsland_x1 method shows how easy it can be to translate ODE source when using the RealPointer class. It was necissary becuase the code got so painfully obscure, though simple ports of functioanlity perhaps won’t need to use this class.
All the diverse math functions have been lumped into a class called MathUtils. Almost all math methods I could find have been cut and pasted into there (and then hidden from the compiler in comment) so if a math method is missing, its source is probably hidden in that file. I have heavily overloaded some of the methods so it might look a bit bizairre how to use some of the methods but I will clarify that when required.
To Joode!