UnityEditor.HandleUtility.DistanceToDiamondInternal C# (CSharp) Method

DistanceToDiamondInternal() static private method

static private DistanceToDiamondInternal ( Vector3 position, Quaternion rotation, float size, Vector2 mousePosition ) : float
position Vector3
rotation UnityEngine.Quaternion
size float
mousePosition Vector2
return float
        internal static float DistanceToDiamondInternal(Vector3 position, Quaternion rotation, float size, Vector2 mousePosition)
        {
            Vector3 vector = (Vector3) (rotation * new Vector3(size, 0f, 0f));
            Vector3 vector2 = (Vector3) (rotation * new Vector3(0f, size, 0f));
            points[0] = (Vector3) WorldToGUIPoint(position + vector);
            points[1] = (Vector3) WorldToGUIPoint(position - vector2);
            points[2] = (Vector3) WorldToGUIPoint(position - vector);
            points[3] = (Vector3) WorldToGUIPoint(position + vector2);
            points[4] = points[0];
            Vector2 p = mousePosition;
            bool flag = false;
            int index = 4;
            for (int i = 0; i < 5; i++)
            {
                if (((points[i].y > p.y) != (points[index].y > p.y)) && (p.x < ((((points[index].x - points[i].x) * (p.y - points[i].y)) / (points[index].y - points[i].y)) + points[i].x)))
                {
                    flag = !flag;
                }
                index = i;
            }
            if (!flag)
            {
                float num4 = -1f;
                index = 1;
                for (int j = 0; j < 4; j++)
                {
                    float num3 = DistancePointToLineSegment(p, points[j], points[index++]);
                    if ((num3 < num4) || (num4 < 0f))
                    {
                        num4 = num3;
                    }
                }
                return num4;
            }
            return 0f;
        }

Usage Example

示例#1
0
		internal static float DistanceToDiamond(Vector3 position, Quaternion rotation, float size)
		{
			return HandleUtility.DistanceToDiamondInternal(position, rotation, size, Event.current.mousePosition);
		}