private void AutoScrollTowardsMouse()
{
const float triggerPaddingInPixels = 8f;
const float maximumRangeInPixels = 4f;
Rect visiblePosition = GUIHelper.VisibleRect();
Vector2 mousePosition = Event.current.mousePosition;
Rect mouseRect = new Rect(mousePosition.x - triggerPaddingInPixels, mousePosition.y - triggerPaddingInPixels, triggerPaddingInPixels * 2, triggerPaddingInPixels * 2);
if (!ContainsRect(visiblePosition, mouseRect)) {
if (mousePosition.y < visiblePosition.center.y)
mousePosition = new Vector2(mouseRect.xMin, mouseRect.yMin);
else
mousePosition = new Vector2(mouseRect.xMax, mouseRect.yMax);
mousePosition.x = Mathf.Max(mousePosition.x - maximumRangeInPixels, mouseRect.xMax);
mousePosition.y = Mathf.Min(mousePosition.y + maximumRangeInPixels, mouseRect.yMax);
GUI.ScrollTo(new Rect(mousePosition.x, mousePosition.y, 1, 1));
s_SimulateMouseDragControlID = _controlID;
var focusedWindow = EditorWindow.focusedWindow;
if (focusedWindow != null)
focusedWindow.Repaint();
}
}