Original Post
So, I came up with the following, and was wondering if had already been done? I believe it to work, although someone may find it doesnt work for all cases :)
Here is what Im doing;

1. First test if ray hits the plane
2. if so, then test the dot between p and each corner, to a vector perpendicular to that corners edge
Here is what Im doing;

1. First test if ray hits the plane
2. if so, then test the dot between p and each corner, to a vector perpendicular to that corners edge
int RayTriangleIntersection2( const fsRay& r, const fsVec3& a, const fsVec3& b, const fsVec3& c, fsVec3& P, float &t ){ fsPlane plane( a, b, c ); if( (t = RayPlaneIntersection( plane, r )) > 0.0f ) { P = r.GetOrigin() + ( t*r.GetDirection() ); if( Dot(Cross( c-a, plane.GetNormal() ), P-a ) > 0.0f ) { if( Dot(Cross( a-b, plane.GetNormal() ), P-b ) > 0.0f ) { if( Dot(Cross( b-c, plane.GetNormal() ), P-c ) > 0.0f ) { return 1; } } } } return 0;}