public static void Barycentric2(Vector3 a, Vector3 b, Vector3 c, Vector3 p, out Vector2 uv)
{
float num;
float num2;
float num3;
uv = new Vector2();
var vector = Vector3.Cross(b - a, c - a);
var num4 = Math.Abs(vector.X);
var num5 = Math.Abs(vector.Y);
var num6 = Math.Abs(vector.Z);
if ((num4 >= num5) && (num4 >= num6))
{
num = TriArea2D(p.Y, p.Z, b.Y, b.Z, c.Y, c.Z);
num2 = TriArea2D(p.Y, p.Z, c.Y, c.Z, a.Y, a.Z);
num3 = 1f / vector.X;
}
else if ((num5 >= num4) && (num5 >= num6))
{
num = TriArea2D(p.X, p.Z, b.X, b.Z, c.X, c.Z);
num2 = TriArea2D(p.X, p.Z, c.X, c.Z, a.X, a.Z);
num3 = 1f / -vector.Y;
}
else
{
num = TriArea2D(p.X, p.Y, b.X, b.Y, c.X, c.Y);
num2 = TriArea2D(p.X, p.Y, c.X, c.Y, a.X, a.Y);
num3 = 1f / vector.Z;
}
uv.X = num * num3;
uv.Y = num2 * num3;
}