You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.0 KiB
51 lines
2.0 KiB
using System;
|
|
|
|
namespace UnityEditor.Rendering
|
|
{
|
|
/// <summary>
|
|
/// Set of utilities for Material reimporting.
|
|
/// </summary>
|
|
public static class AssetReimportUtils
|
|
{
|
|
/// <summary>
|
|
/// Re-imports a given type of asset, and sends an analytic with the elapsed time
|
|
/// </summary>
|
|
/// <param name="duration">The elapsed time</param>
|
|
/// <param name="numberOfAssetsReimported">The number of assets that have been re-imported</param>
|
|
/// <param name="importNeedDelegate">A delegate if you want to skip some asset to be re-imported</param>
|
|
/// <typeparam name="TAsset">The asset type that will be re-imported</typeparam>
|
|
public static void ReimportAll<TAsset>(out double duration, out uint numberOfAssetsReimported, Func<string, bool> importNeedDelegate = null)
|
|
{
|
|
numberOfAssetsReimported = 0;
|
|
duration = 0.0;
|
|
using (TimedScope.FromRef(ref duration))
|
|
{
|
|
string[] distinctGuids = AssetDatabase
|
|
.FindAssets($"t:{typeof(TAsset).Name}", null);
|
|
|
|
try
|
|
{
|
|
AssetDatabase.StartAssetEditing();
|
|
|
|
for (int i = 0, total = distinctGuids.Length; i < total; ++i)
|
|
{
|
|
var path = AssetDatabase.GUIDToAssetPath(distinctGuids[i]);
|
|
EditorUtility.DisplayProgressBar($"{typeof(TAsset).Name} Upgrader re-import", $"({i} of {total}) {path}", (float)i / (float)total);
|
|
if (importNeedDelegate?.Invoke(path) ?? true)
|
|
{
|
|
AssetDatabase.ImportAsset(path);
|
|
numberOfAssetsReimported++;
|
|
}
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
// Ensure the AssetDatabase knows we're finished editing
|
|
AssetDatabase.StopAssetEditing();
|
|
}
|
|
}
|
|
|
|
EditorUtility.ClearProgressBar();
|
|
}
|
|
}
|
|
}
|