public static void DisplayResult(List <GameObject> results, SearchFilter filter = null, bool dock = true) { // Window setup #if UNITY_2019_OR_NEWER OutputWindow window = dock ? CreateWindow <OutputWindow>(typeof(SearchWindow)) : CreateWindow <OutputWindow>(); #else ResultsWindow window = CreateInstance <ResultsWindow>(); #endif window.minSize = new Vector2(400, 200); window.titleContent.text = "Search Results"; // Filter if (filter == null) { filter = CreateInstance <SearchFilter>(); // new empty filter group } else { filter = filter.DeepCopy(); // copy filter group to preserve settings } window.Filter = filter; // Results List <SelectionEntry> selection = new List <SelectionEntry>(); foreach (GameObject result in results) { selection.Add(new SelectionEntry(result)); } window.SelectionEntries = selection; window.Show(); }
void OnGUI() { if (GUILayout.Button("Search")) { if (filter != null) { List <GameObject> results = GetAllGameObjects(); filter.Filter(results); ResultsWindow.DisplayResult(results, filter, dockOutputWindow); } } #if UNITY_2019_OR_NEWER dockOutputWindow = EditorGUILayout.ToggleLeft("Dock results window", dockOutputWindow); #else GUI.enabled = false; dockOutputWindow = EditorGUILayout.ToggleLeft("Dock results window (available in 2019 or newer)", dockOutputWindow); GUI.enabled = true; #endif using (var scope = new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Filter"); filter = (SearchFilter)EditorGUILayout.ObjectField(filter, typeof(SearchFilter), true); if (filter != null) { SearchFilterGroup filterGroup = (filter as SearchFilterGroup); if (filterGroup == null) { filterGroup = CreateInstance <SearchFilterGroup>(); filterGroup.AddSearchFilter(filter); filter = filterGroup; } } else { filter = CreateInstance <SearchFilterGroup>(); } } if (filter != null) { using (var scrollScope = new GUILayout.ScrollViewScope(scrollPos)) { scrollPos = scrollScope.scrollPosition; filterEditor = Editor.CreateEditor(filter); filterEditor.OnInspectorGUI(); } } }