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();
        }
예제 #2
0
        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();
                }
            }
        }