コード例 #1
0
        public virtual IEnumerable <string> Search(ISearchContext context, string query, Action <IEnumerable <string> > asyncItemsReceived)
        {
            if (!searchSessions.ContainsKey(context.guid))
            {
                return new string[] {}
            }
            ;

            var searchSession = searchSessions[context.guid];

            if (asyncItemsReceived != null)
            {
                searchSession.onAsyncItemsReceived = asyncItemsReceived;
            }

            if (context.requiredTypeNames != null && context.requiredTypeNames.Any())
            {
                searchSession.context.filterType = Utils.GetTypeFromName(context.requiredTypeNames.First());
            }
            else
            {
                searchSession.context.filterType = null;
            }
            searchSession.context.searchText = query;
            searchSession.context.options   |= SearchFlags.Packages;
            var items = SearchService.GetItems(searchSession.context);

            return(items.Select(item => ToPath(item)));
        }
コード例 #2
0
        protected override IEnumerable <SearchItem> FetchItems()
        {
            yield return(SearchItem.none);

            foreach (var item in SearchService.GetItems(context))
            {
                if (filterCallback != null && !filterCallback(item))
                {
                    continue;
                }
                yield return(item);
            }
        }
コード例 #3
0
        public virtual IEnumerable <string> Search(ISearchContext context, string query, Action <IEnumerable <string> > asyncItemsReceived)
        {
            if (!searchSessions.ContainsKey(context.guid))
            {
                return new string[] {}
            }
            ;

            var searchSession        = searchSessions[context.guid];
            var projectSearchContext = (ProjectSearchContext)context;

            if (asyncItemsReceived != null)
            {
                searchSession.onAsyncItemsReceived = asyncItemsReceived;
            }

            if (context.requiredTypeNames != null && context.requiredTypeNames.Any())
            {
                searchSession.context.filterType = Utils.GetTypeFromName(context.requiredTypeNames.First());
            }
            else
            {
                searchSession.context.filterType = null;
            }

            searchSession.context.searchText = query;
            searchSession.context.options   &= ~SearchFlags.Packages;
            if (projectSearchContext.searchFilter != null)
            {
                searchSession.context.userData = projectSearchContext.searchFilter;
                if (projectSearchContext.searchFilter.searchArea == SearchFilter.SearchArea.InAssetsOnly)
                {
                    searchSession.context.searchText = $"a:assets {query}";
                }
                else if (projectSearchContext.searchFilter.searchArea == SearchFilter.SearchArea.InPackagesOnly)
                {
                    searchSession.context.options   |= SearchFlags.Packages;
                    searchSession.context.searchText = $"a:packages {query}";
                }
                else if (projectSearchContext.searchFilter.searchArea == SearchFilter.SearchArea.AllAssets)
                {
                    searchSession.context.options |= SearchFlags.Packages;
                }
            }

            var items = SearchService.GetItems(searchSession.context);

            return(items.Select(item => ToPath(item)));
        }
コード例 #4
0
 protected override IEnumerable <SearchItem> FetchItems()
 {
     if (!viewState.excludeClearItem)
     {
         yield return(SearchItem.clear);
     }
     foreach (var item in SearchService.GetItems(context))
     {
         if (filterCallback != null && !filterCallback(item))
         {
             continue;
         }
         yield return(item);
     }
 }
コード例 #5
0
        public override void BeginSearch(ISearchContext context, string query)
        {
            if (!searchSessions.ContainsKey(context.guid))
            {
                return;
            }
            base.BeginSearch(context, query);

            var searchSession = searchSessions[context.guid];

            if (searchSession.context.searchText == query)
            {
                return;
            }

            searchSession.context.searchText = query;
            if (context.requiredTypeNames != null && context.requiredTypeNames.Any())
            {
                searchSession.context.filterType = Utils.GetTypeFromName(context.requiredTypeNames.First());
            }
            else
            {
                searchSession.context.filterType = typeof(GameObject);
            }

            if (!m_SearchItemsBySession.ContainsKey(context.guid))
            {
                m_SearchItemsBySession.Add(context.guid, new HashSet <int>());
            }
            var searchItemsSet = m_SearchItemsBySession[context.guid];

            searchItemsSet.Clear();

            foreach (var id in SearchService.GetItems(searchSession.context, SearchFlags.Synchronous).Select(item => Convert.ToInt32(item.id)))
            {
                searchItemsSet.Add(id);
            }
        }
コード例 #6
0
 private void RefreshResults()
 {
     SetItems(SearchService.GetItems(m_SearchContext));
 }