Пример #1
0
        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));
                }
            }
        }
Пример #2
0
        XRSettingsManager(string path, SettingsScope scopes = SettingsScope.Project) : base(path, scopes)
        {
            m_HasCompletedRequest = false;
            m_XRPackages.Clear();
            m_PackageListRequest = Client.SearchAll();

            EditorApplication.update += UpdatePackageManagerQuery;
        }
Пример #3
0
        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)
            });
        }
Пример #4
0
        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;
        }
Пример #5
0
        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;
        }