void OnGUI() { scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); var defaultGUIColor = GUI.color; var defaultGUIBackgrounColor = GUI.backgroundColor; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginVertical(); // Quick start buttons DrawLine(); GUI.backgroundColor = Color.green; if (GUILayout.Button("Start Selected")) { for (var i = 0; i < data.entries.Count; i++) { var entry = data.entries[i]; if (!entry.selected) { continue; } StartEntry(data.entries[i]); } } GUI.backgroundColor = defaultGUIBackgrounColor; DrawLine(); GUI.backgroundColor = Color.red; if (GUILayout.Button("Stop All")) { BuildUtils.StopAll(); } GUI.backgroundColor = defaultGUIBackgrounColor; DrawLine(); if (GUILayout.Button("Add Entry")) { data.entries.Add(new Entry()); } DrawLine(); GUILayout.Space(10.0f); // Draw entries for (int i = 0; i < data.entries.Count; i++) { GUILayout.Space(5.0f); var entry = data.entries[i]; GUILayout.BeginHorizontal(GUILayout.ExpandHeight(false)); { GUILayout.Space(5.0f); GUI.backgroundColor = entry.selected ? Color.green : defaultGUIBackgrounColor; if (GUILayout.Button("S", GUILayout.Width(20))) { entry.selected = !entry.selected; } GUI.backgroundColor = defaultGUIBackgrounColor; entry.name = (BuildUtils.GameLoopMode)EditorGUILayout.EnumPopup(entry.name); GUILayout.Label("Count:", GUILayout.Width(40)); entry.count = EditorGUILayout.IntField(entry.count, GUILayout.Width(40), GUILayout.ExpandWidth(false)); GUI.backgroundColor = Color.yellow; if (GUILayout.Button("Start", GUILayout.Width(50))) { StartEntry(entry); } GUI.backgroundColor = defaultGUIBackgrounColor; GUI.backgroundColor = entry.runInEditor ? Color.yellow : GUI.backgroundColor; GUI.backgroundColor = defaultGUIBackgrounColor; var runInEditor = GUILayout.Toggle(entry.runInEditor, "Editor", new GUIStyle("Button"), GUILayout.Width(50)); if (runInEditor != entry.runInEditor) { for (var j = 0; j < data.entries.Count; j++) { data.entries[j].runInEditor = false; } entry.runInEditor = runInEditor; } GUILayout.Space(5.0f); } GUILayout.EndHorizontal(); } GUILayout.FlexibleSpace(); GUILayout.Space(10.0f); DrawLine(); // Remove All Entries button GUILayout.BeginHorizontal(); { GUI.backgroundColor = Color.red; if (GUILayout.Button("Remove All Entries")) { data.entries.Clear(); } GUI.backgroundColor = defaultGUIBackgrounColor; } GUILayout.EndHorizontal(); GUILayout.Space(10.0f); EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); }