Example #1
0
        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();
        }
Example #2
0
 internal static AssetList GetVCAssets(string path)
 {
     VersionControl.Task op = Provider.Status(path);
     op.Wait();
     return(op.assetList);
 }