public override void OnGUI(Rect rect)
{
if (this.m_LookDevView != null)
{
GUILayout.BeginVertical(new GUILayoutOption[0]);
EditorGUIUtility.labelWidth = 130f;
EditorGUIUtility.fieldWidth = 35f;
this.DrawHeader(styles.sMultiView);
for (int i = 0; i < 5; i++)
{
EditorGUI.BeginChangeCheck();
bool flag = GUILayout.Toggle(this.m_LookDevView.config.lookDevMode == i, styles.sMultiViewMode[i], styles.sMenuItem, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
this.m_LookDevView.UpdateLookDevModeToggle((LookDevMode) i, flag);
this.m_LookDevView.Repaint();
GUIUtility.ExitGUI();
}
}
this.DrawSeparator();
this.DrawHeader(styles.sCamera);
if (GUILayout.Button(styles.sResetCamera, styles.sMenuItem, new GUILayoutOption[0]))
{
this.m_LookDevView.Frame();
}
this.m_LookDevView.config.enableToneMap = GUILayout.Toggle(this.m_LookDevView.config.enableToneMap, styles.sEnableToneMap, styles.sMenuItem, new GUILayoutOption[0]);
EditorGUI.BeginChangeCheck();
float num2 = EditorGUILayout.IntSlider(styles.sExposureRange, (int) this.m_LookDevView.config.exposureRange, 1, 0x20, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(this.m_LookDevView.config, "Change exposure range");
this.m_LookDevView.config.exposureRange = num2;
}
this.DrawSeparator();
this.DrawHeader(styles.sLighting);
EditorGUI.BeginChangeCheck();
GUILayout.BeginHorizontal(new GUILayoutOption[0]);
this.m_LookDevView.config.enableShadowCubemap = GUILayout.Toggle(this.m_LookDevView.config.enableShadowCubemap, styles.sEnableShadows, styles.sMenuItem, new GUILayoutOption[0]);
GUILayout.EndHorizontal();
if (EditorGUI.EndChangeCheck())
{
this.m_LookDevView.Repaint();
}
EditorGUI.BeginChangeCheck();
float num3 = EditorGUILayout.Slider(styles.sShadowDistance, this.m_LookDevView.config.shadowDistance, 0f, 1000f, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(this.m_LookDevView.config, "Change shadow distance");
this.m_LookDevView.config.shadowDistance = num3;
}
this.DrawSeparator();
this.DrawHeader(styles.sAnimation);
GUILayout.BeginHorizontal(new GUILayoutOption[0]);
this.m_LookDevView.config.rotateObjectMode = GUILayout.Toggle(this.m_LookDevView.config.rotateObjectMode, styles.sRotateObjectMode, styles.sMenuItem, new GUILayoutOption[0]);
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal(new GUILayoutOption[0]);
this.m_LookDevView.config.rotateEnvMode = GUILayout.Toggle(this.m_LookDevView.config.rotateEnvMode, styles.sRotateEnvMode, styles.sMenuItem, new GUILayoutOption[0]);
GUILayout.EndHorizontal();
EditorGUI.BeginChangeCheck();
float num4 = EditorGUILayout.Slider(styles.sObjRotationSpeed, this.m_LookDevView.config.objRotationSpeed, -5f, 5f, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(this.m_LookDevView.config, "Change rotation speed");
this.m_LookDevView.config.objRotationSpeed = num4;
}
EditorGUI.BeginChangeCheck();
float num5 = EditorGUILayout.Slider(styles.sEnvRotationSpeed, this.m_LookDevView.config.envRotationSpeed, -5f, 5f, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(this.m_LookDevView.config, "Change env speed");
this.m_LookDevView.config.envRotationSpeed = num5;
}
this.DrawSeparator();
this.DrawHeader(styles.sViewport);
if (GUILayout.Button(styles.sResetView, styles.sMenuItem, new GUILayoutOption[0]))
{
this.m_LookDevView.ResetView();
}
this.DrawSeparator();
this.DrawHeader(styles.sEnvLibrary);
using (new EditorGUI.DisabledScope(!this.m_LookDevView.envLibrary.dirty))
{
if (GUILayout.Button(styles.sSaveCurrentLibrary, styles.sMenuItem, new GUILayoutOption[0]) && this.m_LookDevView.SaveLookDevLibrary())
{
this.m_LookDevView.envLibrary.dirty = false;
}
}
if (GUILayout.Button(styles.sCreateNewLibrary, styles.sMenuItem, new GUILayoutOption[0]))
{
string str = EditorUtility.SaveFilePanelInProject("Save New Environment Library", "New Env Library", "asset", "");
if (!string.IsNullOrEmpty(str))
{
this.m_LookDevView.CreateNewLibrary(str);
}
}
EditorGUI.BeginChangeCheck();
LookDevEnvironmentLibrary library = EditorGUILayout.ObjectField(this.m_LookDevView.userEnvLibrary, typeof(LookDevEnvironmentLibrary), false, new GUILayoutOption[0]) as LookDevEnvironmentLibrary;
if (EditorGUI.EndChangeCheck())
{
this.m_LookDevView.envLibrary = library;
}
this.DrawSeparator();
this.DrawHeader(styles.sMisc);
this.m_LookDevView.config.showBalls = GUILayout.Toggle(this.m_LookDevView.config.showBalls, styles.sShowBalls, styles.sMenuItem, new GUILayoutOption[0]);
this.m_LookDevView.config.showControlWindows = GUILayout.Toggle(this.m_LookDevView.config.showControlWindows, styles.sShowControlWindows, styles.sMenuItem, new GUILayoutOption[0]);
EditorGUI.BeginChangeCheck();
bool flag2 = GUILayout.Toggle(this.m_LookDevView.config.allowDifferentObjects, styles.sAllowDifferentObjects, styles.sMenuItem, new GUILayoutOption[0]);
if (EditorGUI.EndChangeCheck())
{
this.m_LookDevView.config.allowDifferentObjects = flag2;
}
if (GUILayout.Button(styles.sResyncObjects, styles.sMenuItem, new GUILayoutOption[0]))
{
this.m_LookDevView.config.ResynchronizeObjects();
}
GUILayout.EndVertical();
if (Event.current.type == EventType.MouseMove)
{
Event.current.Use();
}
if ((Event.current.type == EventType.KeyDown) && (Event.current.keyCode == KeyCode.Escape))
{
base.editorWindow.Close();
GUIUtility.ExitGUI();
}
}
}