private static FindNearestPivot ( |
||
transforms | ||
screenPosition | Vector2 | |
리턴 | Vector3 |
private static Vector3 FindNearestPivot(Transform[] transforms, Vector2 screenPosition)
{
bool flag = false;
Vector3 zero = Vector3.zero;
foreach (Transform transform in transforms)
{
Vector3 vector2 = ScreenToWorld(screenPosition, transform);
if (flag)
{
Vector3 vector3 = zero - vector2;
Vector3 vector4 = transform.position - vector2;
if (vector3.magnitude <= vector4.magnitude)
{
continue;
}
}
zero = transform.position;
flag = true;
}
return zero;
}
private static void UpdateVertexSnappingOffset() { Event current = Event.current; Tools.vertexDragging = true; Transform[] transforms = Selection.GetTransforms((SelectionMode)14); HandleUtility.ignoreRaySnapObjects = null; Vector3 vector = VertexSnapping.FindNearestPivot(transforms, current.mousePosition); Vector3 vector2; bool flag = HandleUtility.FindNearestVertex(current.mousePosition, transforms, out vector2); float magnitude = (HandleUtility.WorldToGUIPoint(vector2) - current.mousePosition).magnitude; float magnitude2 = (HandleUtility.WorldToGUIPoint(vector) - current.mousePosition).magnitude; Vector3 a; if (flag && magnitude < magnitude2) { a = vector2; } else { a = vector; } Tools.handleOffset = Vector3.zero; Tools.handleOffset = a - Tools.handlePosition; }