public void OnSceneGUI()
{
bool flag = GUIUtility.hotControl == this.m_HandleControlID;
CharacterController characterController = (CharacterController)this.target;
Color color = Handles.color;
if (characterController.enabled)
{
Handles.color = Handles.s_ColliderHandleColor;
}
else
{
Handles.color = Handles.s_ColliderHandleColorDisabled;
}
bool enabled = GUI.enabled;
if (!Event.current.shift && !flag)
{
GUI.enabled = false;
Handles.color = new Color(1f, 0f, 0f, 0.001f);
}
float num = characterController.height * characterController.transform.lossyScale.y;
float num2 = characterController.radius * Mathf.Max(characterController.transform.lossyScale.x, characterController.transform.lossyScale.z);
num = Mathf.Max(num, num2 * 2f);
Matrix4x4 matrix = Matrix4x4.TRS(characterController.transform.TransformPoint(characterController.center), Quaternion.identity, Vector3.one);
int hotControl = GUIUtility.hotControl;
Vector3 vector = Vector3.up * num * 0.5f;
float num3 = CharacterControllerEditor.SizeHandle(vector, Vector3.up, matrix, true);
if (!GUI.changed)
{
num3 = CharacterControllerEditor.SizeHandle(-vector, Vector3.down, matrix, true);
}
if (GUI.changed)
{
Undo.RecordObject(characterController, "Character Controller Resize");
float num4 = num / characterController.height;
characterController.height += num3 / num4;
}
num3 = CharacterControllerEditor.SizeHandle(Vector3.left * num2, Vector3.left, matrix, true);
if (!GUI.changed)
{
num3 = CharacterControllerEditor.SizeHandle(-Vector3.left * num2, -Vector3.left, matrix, true);
}
if (!GUI.changed)
{
num3 = CharacterControllerEditor.SizeHandle(Vector3.forward * num2, Vector3.forward, matrix, true);
}
if (!GUI.changed)
{
num3 = CharacterControllerEditor.SizeHandle(-Vector3.forward * num2, -Vector3.forward, matrix, true);
}
if (GUI.changed)
{
Undo.RecordObject(characterController, "Character Controller Resize");
float num5 = num2 / characterController.radius;
characterController.radius += num3 / num5;
}
if (hotControl != GUIUtility.hotControl && GUIUtility.hotControl != 0)
{
this.m_HandleControlID = GUIUtility.hotControl;
}
if (GUI.changed)
{
characterController.radius = Mathf.Max(characterController.radius, 1E-05f);
characterController.height = Mathf.Max(characterController.height, 1E-05f);
}
Handles.color = color;
GUI.enabled = enabled;
}