For those that don't like to read, you can get the new version of the Farseer Physics Engine here.
Well, Silverlight 2.0 Beta 1 is finally here and we can't have a new Silverlight without a new Farseer. Literally! Turns out some things changed that broke the Farseer Physics Engine. Thanks to Bill Reiss for finding and fixing the issues.)
You can find the release notes with all the changes in the documents included with the downloads. I'm also posting them below for convenience.
Have Fun!
Release Notes For FarseerPhysics 1.0.0.5
(Italic items indicate possible breaking change. Sorry for the trouble.)
- Renamed delegate Body.OnChangedHandler to Body.UpdatedEventHandler
- May require name fix in your code.
- Renamed Body.OnUpdated to Body.Updated
- May require name fix in your code.
- This was done to conform to naming guidelines for .Net frameworks.
- Renamed Event Body.OnDisposed to Body.Disposed
- See above for fix-up guide and reason.
- Renamed Geom. CollisionHandlerDelegate to Geom.CollisionEventHandler
- May require name fix in your code.
- Conforming to .Net framework naming guidlines
- Renamed Geom.CollisionHandler to Geom.Collision
- May require name fix in your code.
- Conforming to .Net framework naming guidelines
- Renamed GeomList.GeomAddedRemovedDelegate to GeomList.ContentsChangedEventHandler
- May require name fix in your code.
- Conforming to .Net framework naming guidelines
- Renamed GeomList.GeomAddedHandler to GeomList.Added
- May require name fix in your code.
- Conforming to .Net framework naming guidelines
- Renamed GeomList.GeomRemovedHandler to GeomList.Removed
- May require name fix in your code.
- Conforming to .Net framework naming guidelines
- Made name changes similar to GeomList to BodyList, ControllerList, and JointList
- Modified FluidDragController
- Previously, the FluidDragController used an AABB to describe where the ‘fluid’ drag should take affect. In order to make the fluid drag controller more flexible and able to use ‘shapes’ other than an AABB, I changed it to use an ‘IFluidContainer’ interface instead. (see below)
- Probably not many using this as it’s new and undocumented
- Added LinkedList, LinkedList.Node and Stack collection classes to new namespace Collections.Generic.
- These were added for the Silverlight version of the engine since they do not exist in the new Silvelight 2.0 beta.
- The XNA version will still use the native .Net version of these collections.
- Thanks to Bill Reiss for adding these classes and fixing up the SelectiveSweep and SweepAndPrune broad phase colliders to use them.
- Added IFluidContainer interface
- This interface defines 2 methods
- Intersect(AABB aabb) determines a sort of broad phase intersection
- Contains(ref Vector2 vector) determines if a point is contained by the FluidContainer
- Any class that implements these 2 methods can be used by the FluidDragController.
- Added AABBFluidContainer
- Implements the IFluidContainer interface for AABBs.
- Added WaveController
- Implements IFluidContainer
- Controls the generation of 2D rolling waves
- Added new ‘Controllers’ namespace
- I expect to develop more and more controllers and felt a namespace was in order.
- Springs, the Base Controller class, and Controller Factory will remain in the Dynamics namespace. The Controllers namepace is more for higher level things like waves and water physics.
- Added “Enabled” bit to controllers so they can be turned on and off
- Added the following methods to the Calculator class
- Note:These were provided by ‘sickbattery’ from the codeplex forums. I have not had a chance to test them so let me know if you find any issues with them
- public static float VectorToRadians(Vector2 vector)
- public static Vector2 RadiansToVector(float radians)
- public static void RadiansToVector(float radians, ref Vector2 vector)
- public static void RotateVector(ref Vector2 vector, float radians)
- public static Vector2 LinearBezierCurve(Vector2 start, Vector2 end, float t)
- public static Vector2 QuadraticBezierCurve(Vector2 start, Vector2 curve, Vector2 end, float t)
- public static Vector2 QuadraticBezierCurve(Vector2 start, Vector2 curve, Vector2 end, float t, ref float radians)
- public static Vector2 CubicBezierCurve2(Vector2 start, Vector2 startPoitsTo, Vector2 end, Vector2 endPointsTo, float t)
- public static Vector2 CubicBezierCurve2(Vector2 start, Vector2 startPoitsTo, Vector2 end, Vector2 endPointsTo, float t, ref float radians)
- public static Vector2 CubicBezierCurve2(Vector2 start, float startPointDirection, float startPointLength, Vector2 end, float endPointDirection, float endPointLength, float t, ref float radians)
- public static Vector2 CubicBezierCurve(Vector2 start, Vector2 curve1, Vector2 curve2, Vector2 end, float t)
- public static Vector2 CubicBezierCurve(Vector2 start, Vector2 curve1, Vector2 curve2, Vector2 end, float t, ref float radians)
- public static Vector2 InterpolateNormal(Vector2 vector1, Vector2 vector2, float t)
- public static void InterpolateNormal(Vector2 vector1, Vector2 vector2, float t, out Vector2 vector)
- public static void InterpolateNormal(ref Vector2 vector1, Vector2 vector2, float t)
- public static float InterpolateRotation(float radians1, float radians2, float t)
- Added Body.ClearImpulse()
- This is similar to ClearForce() and ClearTorque()
- When you create a pool of bodies this helps “Reset” the body when it is released to the pool.
- Added Body.ResetDynamics()
- This method will reset position and motion properties of the body.
- Useful when creating pools of re-usable bodies. It would be used when releasing bodies back into a pool.