I think it is time for a new status update on the ongoing porting work and future of Farseer Physics Engine.
We were 4 guys updating the source code and we got to the point where we had a working version of Box2D ported to C#. In the middle of it all Erin (the Box2D owner) switched source control to google code and implemented some HUGE changes. Unfortunately 3
of my team members had other things to do and opted out, so things are not going too fast at the moment. I've been able to keep up with Erin in that I recently updated the source code to revision 17 and the simulation seems like it is working (still some known
Erin has been very busy with fixing the latest bugs. Today (Monday 21 September) Erin fixed 3 more bugs and added a new test to the testbed. I will be updating to revision 21 (that contains those 4 changes) on Tuesday - So everything is still going well.
Just to give you an idea of the latest changes and what they do, I've compiled a list:
Broad phase based on Dynamic Tree
The broad phase looks finished and it is working very well. It is a lot simpler than the previous one and it is just as fast. The algorithm is based on a tree structure of AABBs and is easy to extend. The broadphase is decoupled from the dynamic tree implementation
so you are able to use the dynamic tree algorithm for other stuff in your game.
Automatic mass generation
Erin removed the manual call to SetMassFromShape() and made it automatic. You no longer have to worry about calling that method after creating a shape and that makes for leaner and more readable code. It was actually one of the main things I was going to
do to the code, but I'm happy that it got solved upstream instead.
Erin added more tests that works both as functionality tests and implementation demos. They test the output of the engine to make sure everything is correct and they show you how to do common tasks. The newest test is the Breakable test that shows you how
to combine shapes and break them apart.
I've fixed some bugs in the port thanks to Tim Dodd and his work on the Dynamic Tree class. Right now performance is very low and a lot of bugs still exists in the TOI and Distance classes. There are also some bugs with copying of shapes that cause most
of the tests to show the wrong results. Feel free to help me out with those bugs (they are marked with TODO's in the code) - Any help I can get will be much appreciated.
As for Farseer Physics Engine 2.x - I will be releasing an update that fixes some bugs and improves performance. All my attention is on 3.0 at the moment but I hope that the next weekend will be spent on 2.x.