private static Vector3 PivotHandleGUI(Rect rect, Vector3 pivot, Quaternion rotation)
{
int controlID = GUIUtility.GetControlID(RectTool.s_PivotHandleHash, FocusType.Passive);
EventType typeForControl = Event.current.GetTypeForControl(controlID);
if (GUI.color.a > 0f || GUIUtility.hotControl == controlID)
{
EventType eventType = typeForControl;
EditorGUI.BeginChangeCheck();
Vector3 a = Handles.Slider2D(controlID, pivot, rotation * Vector3.forward, rotation * Vector3.right, rotation * Vector3.up, HandleUtility.GetHandleSize(pivot) * 0.1f, new Handles.DrawCapFunction(RectHandles.PivotCap), Vector2.zero);
if (eventType == EventType.MouseDown && GUIUtility.hotControl == controlID)
{
RectTransformSnapping.CalculatePivotSnapValues(rect, pivot, rotation);
}
if (EditorGUI.EndChangeCheck())
{
Vector2 vector = Quaternion.Inverse(rotation) * (a - pivot);
vector.x /= rect.width;
vector.y /= rect.height;
Vector2 vector2 = new Vector2(-rect.x / rect.width, -rect.y / rect.height);
Vector2 vector3 = vector2 + vector;
Vector2 snapDistance = HandleUtility.GetHandleSize(pivot) * 0.05f * new Vector2(1f / rect.width, 1f / rect.height);
vector3 = RectTransformSnapping.SnapToGuides(vector3, snapDistance);
vector = vector3 - vector2;
vector.x *= rect.width;
vector.y *= rect.height;
pivot += rotation * vector;
}
}
ManipulationToolUtility.DetectDraggingBasedOnMouseDownUp("ChangingPivot", typeForControl);
return(pivot);
}