public static void ClosestPtPointRect(Vector3 p, Vector3 a, Vector3 b, Vector3 c, ref Vector3 q)
{
var vector = b - a;
var vector2 = c - a;
var vector3 = p - a;
q = a;
var num = Vector3.Dot(vector3, vector);
var num2 = Vector3.Dot(vector, vector);
if (num >= num2)
{
q += vector;
}
else if (num > 0f)
{
q = q + ((num / num2) * vector);
}
num = Vector3.Dot(vector3, vector2);
num2 = Vector3.Dot(vector2, vector2);
if (num >= num2)
{
q += vector2;
}
else if (num > 0f)
{
q = q + ((num / num2) * vector2);
}
}