Simplifying Farseer

I mentioned in the last post that the next version of the Farseer Physics Engine will not be backward compatible with the previous versions.

I apologize if this causes any headaches.  I made the decision to break compatibility in favor of simplicity of the object architecture.

The previous version of the engine had 3 main objects: The Body which handled the dynamics, the Geometry that handled the collision, and the RigidBody, which was designed to tie the Body and Geometry together.

For the new version, the RigidBody is gone!  I decided it was not necessary and really just added to the complexity of the object model. The new version of Farseer has just a Body object and Geometry object.  A Body object knows nothing about collisions. The Geometry object does.  With the new version of Farseer, one to many Geometry objects can be attached to a Body (with offsets if desired) to give the Body a geometrical awareness in the simulation space.

I also mentioned in the last post that I created some "Factory" objects for creating Bodies, Geometries, Joints..etc...  Below is a code snippet of how the new version of Farseer works.

//declare variables
PhysicsSimulator physicsSimulator;

Body rectangleBody;
Gometry rectangleGeometry;
//in the constuctor
physicsSimulator = new PhysicsSimulator(new Vector2(0, 0));
//create the body and geometry objects using factories
rectangleBody = physicsSimulator.BodyFactory.CreateRectangleBody(128, 128, 1);
rectangleGeometry = physicsSimulator.GeometryFactory.CreateRectangleGeometry(rectangleBody,128, 128);

And that's it.  You may be asking where the Geometry was added to the Body.  Well, that was done in the factory!

I'm out of time...  before I go, here are a couple screenies of a couple more demos I've done for the Samples framework. (ignore the framerate, my screen caputure tool affects that... need to build screenshots into the framework)

CropperCapture[7] CropperCapture[10] CropperCapture[8] CropperCapture[9]