public static float CalcLineTranslation(Vector2 src, Vector2 dest, Vector3 srcPosition, Vector3 constraintDir)
{
srcPosition = Handles.matrix.MultiplyPoint(srcPosition);
constraintDir = Handles.matrix.MultiplyVector(constraintDir);
float num = 1f;
Vector3 forward = Camera.current.transform.forward;
if (Vector3.Dot(constraintDir, forward) < 0f)
{
num = -1f;
}
Vector3 vector = constraintDir;
vector.y = -vector.y;
Camera current = Camera.current;
Vector2 vector2 = EditorGUIUtility.PixelsToPoints(current.WorldToScreenPoint(srcPosition));
Vector2 vector3 = EditorGUIUtility.PixelsToPoints(current.WorldToScreenPoint(srcPosition + constraintDir * num));
Vector2 x = dest;
Vector2 x2 = src;
float result;
if (vector2 == vector3)
{
result = 0f;
}
else
{
x.y = -x.y;
x2.y = -x2.y;
float parametrization = HandleUtility.GetParametrization(x2, vector2, vector3);
float parametrization2 = HandleUtility.GetParametrization(x, vector2, vector3);
float num2 = (parametrization2 - parametrization) * num;
result = num2;
}
return result;
}