private float PaintField(float value, ref bool enabled, DrawMode mode)
{
bool flag;
float num;
GUIContent modeString = this.GetModeString(mode);
GUILayout.BeginHorizontal(new GUILayoutOption[0]);
GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false) };
enabled = GUILayout.Toggle(enabled, s_PaintIcon, "MiniButton", options);
using (new EditorGUI.DisabledScope(!enabled))
{
EditorGUI.BeginChangeCheck();
flag = EditorGUILayout.Toggle(GUIContent.none, value < float.MaxValue, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
if (flag)
{
value = 0f;
}
else
{
value = float.MaxValue;
}
this.drawMode = mode;
}
GUILayout.Space(-162f);
using (new EditorGUI.DisabledScope(!flag))
{
num = value;
int keyboardControl = GUIUtility.keyboardControl;
EditorGUI.BeginChangeCheck();
if (flag)
{
num = EditorGUILayout.FloatField(modeString, value, new GUILayoutOption[0]);
}
else
{
EditorGUILayout.FloatField(modeString, 0f, new GUILayoutOption[0]);
}
if (num < 0f)
{
num = 0f;
}
if (EditorGUI.EndChangeCheck() || (keyboardControl != GUIUtility.keyboardControl))
{
this.drawMode = mode;
}
}
}
if (flag)
{
float num3 = this.m_MinVisualizedValue[(int) mode];
float num4 = this.m_MaxVisualizedValue[(int) mode];
if ((num4 - num3) > 0f)
{
this.DrawColorBox(null, this.GetGradientColor((value - num3) / (num4 - num3)));
}
else
{
this.DrawColorBox(null, this.GetGradientColor((value > num3) ? ((float) 1) : ((float) 0)));
}
}
else
{
this.DrawColorBox(null, Color.black);
}
GUILayout.EndHorizontal();
return num;
}