private static Quaternion RotationHandlesGUI(Rect rect, Vector3 pivot, Quaternion rotation)
{
Vector3 eulerAngles = rotation.eulerAngles;
for (int i = 0; i <= 2; i += 2)
{
for (int j = 0; j <= 2; j += 2)
{
Vector3 rectPointInWorld = RectTool.GetRectPointInWorld(rect, pivot, rotation, i, j);
float handleSize = 0.05f * HandleUtility.GetHandleSize(rectPointInWorld);
int controlID = GUIUtility.GetControlID(RectTool.s_RotationHandlesHash, FocusType.Passive);
if (GUI.color.a > 0f || GUIUtility.hotControl == controlID)
{
EditorGUI.BeginChangeCheck();
Vector3 outwardsDir = rotation * Vector3.right * (float)(i - 1);
Vector3 outwardsDir2 = rotation * Vector3.up * (float)(j - 1);
float num = RectHandles.RotationSlider(controlID, rectPointInWorld, eulerAngles.z, pivot, rotation * Vector3.forward, outwardsDir, outwardsDir2, handleSize, null, Vector2.zero);
if (EditorGUI.EndChangeCheck())
{
if (Event.current.shift)
{
num = Mathf.Round((num - eulerAngles.z) / 15f) * 15f + eulerAngles.z;
}
eulerAngles.z = num;
rotation = Quaternion.Euler(eulerAngles);
}
}
}
}
return(rotation);
}