public static void SetPositionDelta(Vector3 newPosition, Vector3 oldPosition) { if (s_MouseDownState == null) { return; } s_PreviousHandlePosition = newPosition; if (!s_LockHandle) { Tools.UpdateHandlePosition(newPosition); } Vector3 positionDelta = newPosition - oldPosition; for (int i = 0; i < s_MouseDownState.Length; i++) { var cur = s_MouseDownState[i]; Undo.RecordObject((cur.rectTransform != null ? (Object)cur.rectTransform : (Object)cur.transform), "Move"); } if (s_MouseDownState.Length > 0) { s_MouseDownState[0].SetPositionDelta(positionDelta, true); Vector3 firstDelta = s_MouseDownState[0].transform.position - s_MouseDownState[0].position; for (int i = 1; i < s_MouseDownState.Length; i++) { s_MouseDownState[i].SetPositionDelta(firstDelta, false); } } }