UnityEditor.SearchableEditorWindow.CreateFilter C# (CSharp) Method

CreateFilter() static private method

static private CreateFilter ( string searchString, SearchMode searchMode ) : SearchFilter
searchString string
searchMode SearchMode
return SearchFilter
        internal static SearchFilter CreateFilter(string searchString, SearchMode searchMode)
        {
            SearchFilter filter = new SearchFilter();
            if (!string.IsNullOrEmpty(searchString))
            {
                switch (searchMode)
                {
                    case SearchMode.All:
                        if (!SearchUtility.ParseSearchString(searchString, filter))
                        {
                            filter.nameFilter = searchString;
                            filter.classNames = new string[] { searchString };
                            filter.assetLabels = new string[] { searchString };
                            filter.assetBundleNames = new string[] { searchString };
                            filter.showAllHits = true;
                        }
                        return filter;

                    case SearchMode.Name:
                        filter.nameFilter = searchString;
                        return filter;

                    case SearchMode.Type:
                        filter.classNames = new string[] { searchString };
                        return filter;

                    case SearchMode.Label:
                        filter.assetLabels = new string[] { searchString };
                        return filter;

                    case SearchMode.AssetBundleName:
                        filter.assetBundleNames = new string[] { searchString };
                        return filter;
                }
            }
            return filter;
        }

Usage Example

示例#1
0
        // Returns number of rows in search result
        int InitializeSearchResults(HierarchyProperty property, int minAllowedDepth)
        {
            // Search setup
            const bool kShowItemHasChildren = false;
            const int  kItemDepth           = 0;
            int        currentSceneHandle   = -1;
            int        row           = 0;
            var        searchFilter  = SearchableEditorWindow.CreateFilter(searchString, (SearchableEditorWindow.SearchMode)m_SearchMode);
            var        searchContext = (SearchService.HierarchySearchContext)m_SearchSessionHandler.context;

            searchContext.filter       = searchFilter;
            searchContext.rootProperty = property;

            m_SearchSessionHandler.BeginSearch(searchString);

            var headerRows = new List <int>();

            while (property.NextWithDepthCheck(null, minAllowedDepth))
            {
                if (!SearchService.Scene.Filter(m_SearchString, property, searchContext))
                {
                    property.SetFilteredVisibility(false);
                    continue;
                }

                property.SetFilteredVisibility(true);
                var item = EnsureCreatedItem(row);
                // Add scene headers when encountering a new scene (and it's not a header in itself)
                if (AddSceneHeaderToSearchIfNeeded(item, property, ref currentSceneHandle))
                {
                    row++;
                    headerRows.Add(row);

                    if (IsSceneHeader(property))
                    {
                        continue;                  // no need to add it
                    }
                    item = EnsureCreatedItem(row); // prepare for item below
                }
                InitTreeViewItem(item, property, kShowItemHasChildren, kItemDepth);
                row++;
            }

            m_SearchSessionHandler.EndSearch();

            int numRows = row;

            // Now sort scene section
            if (headerRows.Count > 0)
            {
                int currentSortStart = headerRows[0];
                for (int i = 1; i < headerRows.Count; i++)
                {
                    int count = headerRows[i] - currentSortStart - 1;
                    m_ListOfRows.Sort(currentSortStart, count, new TreeViewItemAlphaNumericSort());
                    currentSortStart = headerRows[i];
                }

                // last section
                m_ListOfRows.Sort(currentSortStart, numRows - currentSortStart, new TreeViewItemAlphaNumericSort());
            }


            return(numRows);
        }
All Usage Examples Of UnityEditor.SearchableEditorWindow::CreateFilter