Feature Complete!

A milestone of sorts. All new features for this release are done!

Here are a few of the things I finished up this week.

Breakable joints are done!

I've added a "Tag" property to both the Body and Geometry object. This is similar to ODE's "UserData" object. It's also similar to the Tag object hanging of Forms in .Net. It allows the user to attach any type of object they please. This could be helpful in conjunction with a collision callback. The simplest example I can think of would be to use the Tag object to hold a name/description of some sort.

All Add/Remove calls now queue up the request and actually do the adding and removal at the beginning of the Update().

Next in line is the cleanup/refactoring of the factory objects. (for the formal OO coders out there, the factory objects in Farseer are not true Factory patterns, the name just fit)

Here's the task list for those keeping score.

  • Limited Angle Joint (Joint limits for the RevoluteJoint)
  • Pin Joint with softness (60% complete)
  • Slider Joint with softness
  • Max Contacts To Detect, Max Contacts To Resolve, Resolve Deepest First (just some ideas I have about handling contacts)
  • Rewrite/Cleanup Collide method
    • Replace collide event with callback/boolean return value (will allow the application to essentially cancel a collision)
  • Breakable Joints and Springs
  • Queue-up Added and Removed items and remove them when it's safe to do so.
  • Joint API (just some general clean-up of the Joint objects)
  • User Data Object (Tag property)
  • Factory Objects
    • Make static classes
    • Overload as follows (If the simulator is passed in the object will automatically be added to the simulator prior to being returned. Just as a convenience)
      • Method(x, y, z)
      • Method(simulator, x, y, z)
  • General code clean-up
  • Docs!
  • New LOGO! 
  • Website (bare-bones for now)
  • RELEASE!!!!!!!
  • Move on to my ultimate goal: Make some cool physics based games.