UnityEditor.HandleUtility.ClosestPointToPolyLine C# (CSharp) Method

ClosestPointToPolyLine() public static method

Get the point on a polyline (in 3D space) which is closest to the current mouse position.

public static ClosestPointToPolyLine ( ) : Vector3
return Vector3
        public static Vector3 ClosestPointToPolyLine(params Vector3[] vertices)
        {
            float num = DistanceToLine(vertices[0], vertices[1]);
            int index = 0;
            for (int i = 2; i < vertices.Length; i++)
            {
                float num4 = DistanceToLine(vertices[i - 1], vertices[i]);
                if (num4 < num)
                {
                    num = num4;
                    index = i - 1;
                }
            }
            Vector3 world = vertices[index];
            Vector3 vector2 = vertices[index + 1];
            Vector2 vector3 = Event.current.mousePosition - WorldToGUIPoint(world);
            Vector2 vector4 = WorldToGUIPoint(vector2) - WorldToGUIPoint(world);
            float magnitude = vector4.magnitude;
            float num6 = Vector3.Dot((Vector3) vector4, (Vector3) vector3);
            if (magnitude > 1E-06f)
            {
                num6 /= magnitude * magnitude;
            }
            num6 = Mathf.Clamp01(num6);
            return Vector3.Lerp(world, vector2, num6);
        }

Usage Example

示例#1
0
		public static Vector3 ClosestPointToArc(Vector3 center, Vector3 normal, Vector3 from, float angle, float radius)
		{
			Vector3[] array = new Vector3[60];
			Handles.SetDiscSectionPoints(array, center, normal, from, angle, radius);
			return HandleUtility.ClosestPointToPolyLine(array);
		}