Finally got my Matrix4 * Vec3 function working so that I can use my view and projection matrix to get a screen coordinate for a specific point in 3D space. This will be useful for dialogue boxes and clipping faces in front of the player when in 3rd person.
Matrices Are Hard
This is what happens when you accidentally screw up your translation matrices