public static void UpgradeSelection(List <MaterialUpgrader> upgraders, string progressBarName, UpgradeFlags flags = UpgradeFlags.None) { var selection = Selection.objects; if (selection == null) { EditorUtility.DisplayDialog(DialogText.title, DialogText.noSelectionMessage, DialogText.ok); return; } List <Material> selectedMaterials = new List <Material>(selection.Length); for (int i = 0; i < selection.Length; ++i) { Material mat = selection[i] as Material; if (mat != null) { selectedMaterials.Add(mat); } } int selectedMaterialsCount = selectedMaterials.Count; if (selectedMaterialsCount == 0) { EditorUtility.DisplayDialog(DialogText.title, DialogText.noSelectionMessage, DialogText.ok); return; } if (!EditorUtility.DisplayDialog(DialogText.title, string.Format("The upgrade will overwrite {0} selected material{1}. ", selectedMaterialsCount, selectedMaterialsCount > 1 ? "s" : "") + DialogText.projectBackMessage, DialogText.proceed, DialogText.cancel)) { return; } VersionControl.Task task = VersionControl.Provider.Checkout(selectedMaterials.ToArray(), VersionControl.CheckoutMode.Both); string lastMaterialName = ""; for (int i = 0; i < selectedMaterialsCount; i++) { if (UnityEditor.EditorUtility.DisplayCancelableProgressBar(progressBarName, string.Format("({0} of {1}) {2}", i, selectedMaterialsCount, lastMaterialName), (float)i / (float)selectedMaterialsCount)) { break; } var material = selectedMaterials[i]; Upgrade(material, upgraders, flags); if (material != null) { lastMaterialName = material.name; } } UnityEditor.EditorUtility.ClearProgressBar(); }
internal static AssetList GetVCAssets(string path) { VersionControl.Task op = Provider.Status(path); op.Wait(); return(op.assetList); }