// Quickly show the AssetUsageDetector window and initiate a search
        public static void ShowAndSearch(AssetUsageDetector.Parameters searchParameters, bool?shouldSearchChildren = null)
        {
            if (searchParameters == null)
            {
                Debug.LogError("searchParameters can't be null!");
                return;
            }

            ShowAndSearchInternal(searchParameters.objectsToSearch, searchParameters, shouldSearchChildren);
        }
        public SearchResult(bool success, List <SearchResultGroup> result, SceneSetup[] initialSceneSetup, AssetUsageDetector searchHandler, AssetUsageDetector.Parameters searchParameters)
        {
            if (result == null)
            {
                result = new List <SearchResultGroup>(0);
            }

            this.success            = success;
            this.result             = result;
            this.initialSceneSetup  = initialSceneSetup;
            this.searchHandler      = searchHandler;
            this.m_searchParameters = searchParameters;
        }
        private static void ShowAndSearchInternal(IEnumerable <Object> searchObjects, AssetUsageDetector.Parameters searchParameters, bool?shouldSearchChildren)
        {
            if (mainWindow != null && !mainWindow.ReturnToSetupPhase(true, true))
            {
                Debug.LogError("Need to reset the previous search first!");
                return;
            }

            OpenActiveWindow();

            mainWindow.objectsToSearch.Clear();
            if (searchObjects != null)
            {
                foreach (Object obj in searchObjects)
                {
                    mainWindow.objectsToSearch.Add(new ObjectToSearch(obj, shouldSearchChildren));
                }
            }

            if (searchParameters != null)
            {
                mainWindow.ParseSceneSearchMode(searchParameters.searchInScenes);
                mainWindow.searchInAssetsFolder           = searchParameters.searchInAssetsFolder;
                mainWindow.dontSearchInSourceAssets       = searchParameters.dontSearchInSourceAssets;
                mainWindow.searchInProjectSettings        = searchParameters.searchInProjectSettings;
                mainWindow.searchDepthLimit               = searchParameters.searchDepthLimit;
                mainWindow.fieldModifiers                 = searchParameters.fieldModifiers;
                mainWindow.propertyModifiers              = searchParameters.propertyModifiers;
                mainWindow.searchNonSerializableVariables = searchParameters.searchNonSerializableVariables;
                mainWindow.lazySceneSearch                = searchParameters.lazySceneSearch;
                mainWindow.noAssetDatabaseChanges         = searchParameters.noAssetDatabaseChanges;
                mainWindow.showDetailedProgressBar        = searchParameters.showDetailedProgressBar;

                mainWindow.searchInAssetsSubset.Clear();
                if (searchParameters.searchInAssetsSubset != null)
                {
                    foreach (Object obj in searchParameters.searchInAssetsSubset)
                    {
                        mainWindow.searchInAssetsSubset.Add(obj);
                    }
                }

                mainWindow.excludedAssets.Clear();
                if (searchParameters.excludedAssetsFromSearch != null)
                {
                    foreach (Object obj in searchParameters.excludedAssetsFromSearch)
                    {
                        mainWindow.excludedAssets.Add(obj);
                    }
                }

                mainWindow.excludedScenes.Clear();
                if (searchParameters.excludedScenesFromSearch != null)
                {
                    foreach (Object obj in searchParameters.excludedScenesFromSearch)
                    {
                        mainWindow.excludedScenes.Add(obj);
                    }
                }
            }

            mainWindow.InitiateSearch();
            mainWindow.Repaint();
        }