internal static float DistanceToDiamondInternal(Vector3 position, Quaternion rotation, float size, Vector2 mousePosition)
{
Vector3 b = rotation * new Vector3(size, 0f, 0f);
Vector3 b2 = rotation * new Vector3(0f, size, 0f);
HandleUtility.points[0] = HandleUtility.WorldToGUIPoint(position + b);
HandleUtility.points[1] = HandleUtility.WorldToGUIPoint(position - b2);
HandleUtility.points[2] = HandleUtility.WorldToGUIPoint(position - b);
HandleUtility.points[3] = HandleUtility.WorldToGUIPoint(position + b2);
HandleUtility.points[4] = HandleUtility.points[0];
Vector2 p = mousePosition;
bool flag = false;
int num = 4;
for (int i = 0; i < 5; i++)
{
if (HandleUtility.points[i].y > p.y != HandleUtility.points[num].y > p.y)
{
if (p.x < (HandleUtility.points[num].x - HandleUtility.points[i].x) * (p.y - HandleUtility.points[i].y) / (HandleUtility.points[num].y - HandleUtility.points[i].y) + HandleUtility.points[i].x)
{
flag = !flag;
}
}
num = i;
}
float result;
if (!flag)
{
float num2 = -1f;
num = 1;
for (int j = 0; j < 4; j++)
{
float num3 = HandleUtility.DistancePointToLineSegment(p, HandleUtility.points[j], HandleUtility.points[num++]);
if (num3 < num2 || num2 < 0f)
{
num2 = num3;
}
}
result = num2;
}
else
{
result = 0f;
}
return(result);
}