internal static void ListXrtkPackages() { var progress = 0f; EditorUtility.DisplayProgressBar("Searching upm packages...", "Searching...", progress++ / 100f); var request = Client.SearchAll(false); var xrtkPackages = new List <PackageInfo>(); EditorApplication.update += Progress; void Progress() { switch (request.Status) { case StatusCode.Success: xrtkPackages.AddRange(request.Result.Where(package => package.name.Contains("com.xrtk."))); break; case StatusCode.InProgress: EditorUtility.DisplayProgressBar("Searching upm packages...", "Searching...", progress += 0.0025f); if (progress > 1f) { progress = 0f; } break; default: // case StatusCode.Failure: if (request.Status >= StatusCode.Failure) { Debug.Log(request.Error.message); } break; } if (request.IsCompleted) { EditorUtility.ClearProgressBar(); EditorApplication.update -= Progress; PackagePickerWindow.ShowPackageWindow(xrtkPackages); } } }
internal static void ShowPackageWindow(List <PackageInfo> xrtkPackages) { if (window != null) { window.Close(); } if (xrtkPackages == null || xrtkPackages.Count == 0) { MixedRealityPackageSeed.ListXrtkPackages(); return; } Packages.Clear(); foreach (var package in xrtkPackages) { switch (package.name) { case string _ when package.name.Equals("com.xrtk.sdk"): Packages.Insert(0, new Tuple <PackageInfo, bool>(package, true)); break; default: Packages.Add(new Tuple <PackageInfo, bool>(package, true)); break; } } var height = MIN_VERTICAL_SIZE + ITEM_HEIGHT * xrtkPackages.Count; isNew = true; window = CreateInstance <PackagePickerWindow>(); window.minSize = new Vector2(MIN_HORIZONTAL_SIZE, height); window.maxSize = new Vector2(MIN_HORIZONTAL_SIZE, height); window.position = new Rect(0f, 0f, MIN_HORIZONTAL_SIZE, height); window.titleContent = new GUIContent("XRTK Packages"); window.ShowUtility(); }