private static IEnumerable <SearchItem> SearchPackages(SearchContext context, SearchProvider provider) { if (string.IsNullOrEmpty(context.searchQuery)) { yield break; } s_ListRequest = s_ListRequest ?? PackageManager.Client.List(true); s_SearchRequest = s_SearchRequest ?? PackageManager.Client.SearchAll(); if (s_SearchRequest == null || s_ListRequest == null) { yield break; } while (!s_SearchRequest.IsCompleted || !s_ListRequest.IsCompleted) { yield return(null); } if (s_SearchRequest.Result == null || s_ListRequest.Result == null) { yield break; } foreach (var p in s_SearchRequest.Result) { if (p.keywords.Contains(context.searchQuery) || SearchUtils.MatchSearchGroups(context, p.description.ToLowerInvariant(), true) || SearchUtils.MatchSearchGroups(context, p.name.ToLowerInvariant(), true)) { yield return(provider.CreateItem(context, p.packageId, String.IsNullOrEmpty(p.resolvedPath) ? 0 : 1, FormatLabel(p), FormatDescription(p), null, p)); } } }
XRSettingsManager(string path, SettingsScope scopes = SettingsScope.Project) : base(path, scopes) { m_HasCompletedRequest = false; m_XRPackages.Clear(); m_PackageListRequest = Client.SearchAll(); EditorApplication.update += UpdatePackageManagerQuery; }
internal static SearchProvider CreateProvider() { return(new SearchProvider(type, displayName) { priority = 90, filterId = "pkg:", isExplicitProvider = true, onEnable = () => { }, onDisable = () => { s_ListRequest = null; s_SearchRequest = null; }, fetchItems = (context, items, provider) => SearchPackages(context, provider), fetchThumbnail = (item, context) => (item.thumbnail = item.score == 0 ? Icons.packageUpdate : Icons.packageInstalled) }); }
void UpdatePackageManagerQuery() { Repaint(); EditorApplication.update -= UpdatePackageManagerQuery; if (m_PackageRepositoryListRequest == null) { return; } if (!m_PackageRepositoryListRequest.IsCompleted || !m_LocalPackageListRequest.IsCompleted) { EditorApplication.update += UpdatePackageManagerQuery; return; } m_HasCompletedRequest = true; m_HasInstalledProviders = false; if (m_PackageRepositoryListRequest.Status != StatusCode.Success) { m_HasProviders = false; m_PackageRepositoryListRequest = null; return; } foreach (var pinfo in m_LocalPackageListRequest.Result) { var xrp = from keyword in pinfo.keywords where String.Compare("xreditorsubsystem", keyword, true) == 0 select keyword; if (xrp.Any()) { XRPackageInformation xrpinfo = new XRPackageInformation(); xrpinfo.uninstalledPackageInfo = pinfo; xrpinfo.isInstalled = true; xrpinfo.isLocalOnly = true; m_HasInstalledProviders = true; m_XRPackages.Add(pinfo.name, xrpinfo); } } foreach (var pinfo in m_PackageRepositoryListRequest.Result) { if (m_XRPackages.ContainsKey(pinfo.name)) { XRPackageInformation xrpinfo; if (m_XRPackages.TryGetValue(pinfo.name, out xrpinfo)) { xrpinfo.isLocalOnly = false; m_XRPackages[pinfo.name] = xrpinfo; } continue; } var xrp = from keyword in pinfo.keywords where String.Compare("xreditorsubsystem", keyword, true) == 0 select keyword; if (xrp.Any()) { XRPackageInformation xrpinfo = new XRPackageInformation(); xrpinfo.uninstalledPackageInfo = pinfo; xrpinfo.isInstalled = false; m_XRPackages.Add(pinfo.name, xrpinfo); } } List <XRLoaderInfo> onDiskLoaderInfos = new List <XRLoaderInfo>(); XRLoaderInfo.GetAllKnownLoaderInfos(onDiskLoaderInfos); m_HasKNownLocalLoaders = onDiskLoaderInfos.Any(); m_HasProviders = m_XRPackages.Any(); m_PackageRepositoryListRequest = null; }
void UpdatePackageManagerQuery() { Repaint(); EditorApplication.update -= UpdatePackageManagerQuery; if (m_PackageListRequest == null) { return; } if (!m_PackageListRequest.IsCompleted) { EditorApplication.update += UpdatePackageManagerQuery; return; } m_HasCompletedRequest = true; m_HasInstalledProviders = false; if (m_PackageListRequest.Status != StatusCode.Success) { m_HasProviders = false; m_PackageListRequest = null; return; } foreach (var pinfo in m_PackageListRequest.Result) { var xrp = from keyword in pinfo.keywords where String.Compare("xreditorsubsystem", keyword, true) == 0 select keyword; if (xrp.Any()) { string tempPath = $"Packages/{pinfo.name}/package.json"; try { XRPackageInformation xrpinfo = new XRPackageInformation(); xrpinfo.uninstalledPackageInfo = pinfo; xrpinfo.isInstalled = false; var packagePath = Path.GetFullPath(tempPath); if (File.Exists(packagePath)) { xrpinfo.isInstalled = true; m_HasInstalledProviders = true; } m_XRPackages.Add(pinfo.name, xrpinfo); } catch (Exception) { // DO NOTHING... } } } m_HasProviders = m_XRPackages.Any(); m_PackageListRequest = null; }