UnityEditor.MathUtils.IntersectRayTriangle C# (CSharp) Method

IntersectRayTriangle() public static method

public static IntersectRayTriangle ( Ray ray, Vector3 v0, Vector3 v1, Vector3 v2, bool bidirectional ) : object
ray UnityEngine.Ray
v0 Vector3
v1 Vector3
v2 Vector3
bidirectional bool
return object
        public static object IntersectRayTriangle(Ray ray, Vector3 v0, Vector3 v1, Vector3 v2, bool bidirectional)
        {
            Vector3 lhs = v1 - v0;
            Vector3 rhs = v2 - v0;
            Vector3 vector3 = Vector3.Cross(lhs, rhs);
            float num = Vector3.Dot(-ray.direction, vector3);
            if (num <= 0f)
            {
                return null;
            }
            Vector3 vector4 = ray.origin - v0;
            float num2 = Vector3.Dot(vector4, vector3);
            if ((num2 < 0f) && !bidirectional)
            {
                return null;
            }
            Vector3 vector5 = Vector3.Cross(-ray.direction, vector4);
            float y = Vector3.Dot(rhs, vector5);
            if ((y < 0f) || (y > num))
            {
                return null;
            }
            float z = -Vector3.Dot(lhs, vector5);
            if ((z < 0f) || ((y + z) > num))
            {
                return null;
            }
            float num5 = 1f / num;
            num2 *= num5;
            y *= num5;
            z *= num5;
            float x = (1f - y) - z;
            return new RaycastHit { 
                point = ray.origin + ((Vector3) (num2 * ray.direction)),
                distance = num2,
                barycentricCoordinate = new Vector3(x, y, z),
                normal = Vector3.Normalize(vector3)
            };
        }