public void Configure(List <string> availablePackages) { this._ignore.Clear(); var allPackages = BuilderPackagesWindow.GetPackages(); foreach (var name in allPackages) { var p = BuilderPackage.GetPackage(name); if (p == null) { continue; } p.FillGuids(this._ignore); } if (this._ignore.Count == 0 || availablePackages == null || availablePackages.Count == 0) { return; } foreach (var name in availablePackages) { var p = BuilderPackage.GetPackage(name); if (p == null) { continue; } p.FillGuids(this._guids); foreach (var guid in this._guids) { this._ignore.Remove(guid); } this._guids.Clear(); } }
private bool PackagesGUI() { string title; if (_packagesExpanded || this.packages.Count == 0) { title = "Packages"; } else { title = "Packages: " + string.Join(", ", this.packages.ToArray()); } EditorGUILayout.BeginHorizontal(); _packagesExpanded = EditorGUILayout.Foldout(_packagesExpanded, title); if (GUILayout.Button("Manage Packages", GUILayout.ExpandWidth(false))) { BuilderPackagesWindow.OpenWindow(); } EditorGUILayout.EndHorizontal(); if (!_packagesExpanded) { return(false); } var allPackages = BuilderPackagesWindow.GetPackages(); bool dirty = false; foreach (var package in allPackages) { bool oldValue = this.packages.Contains(package); bool newValue = EditorGUILayout.ToggleLeft(package, oldValue); if (newValue != oldValue) { dirty = true; if (newValue) { this.packages.Add(package); } else { this.packages.Remove(package); } } } // missing packages int i = 0; while (i < this.packages.Count) { var package = this.packages[i]; if (Array.IndexOf(allPackages, package) < 0) { if (!EditorGUILayout.ToggleLeft("[" + package + "]", true)) { dirty = true; this.packages.RemoveAt(i); continue; } } i++; } return(dirty); }