Dragon88 requested that I elaborate on my side project, and I am happy to oblige.....
Well, this is actually the first time that I've attempted to code a modular physics system, so hopefully it doesn't show[wink] In our new project, every collidable object has a "CollisionMesh" object which essentially outlines the areas of the object that can be collided with. The CollisionMesh is formed from one or more "Polygon2D" objects, which in turn are formed by a series of "Line2D" objects, which are made by two "Vector2D" objects.
In order to test for a collision, each vertex of the CollisionMesh is tested to see if it's inside the other CollisionMesh polygon we're testing against. In order to do this, I used the Crossings Test to determine if any of the vertices are inside.
This is a pretty simple task, as all that is required is for you to cast a long ray from the vertex you are testing in any direction, and see how many sides of the CollisionMesh it intersects. If the number of intersections is odd, then the point is inside the polygon, and if the number is even, you are outside the polygon, as seen in my handy diagram below:
There are also a few other functions used to determine which "Line2D" you collided with in order to find its normal vector and whatnot, but thats basically how everything works. I'm considering cleaning up the code and posting it in here, because I remember having a hell of a time getting any sort of collision detection working when I was first learning.
In my next entry, I'll detail how my (crappy) messaging system works! Peace Out!