arenos-nexus/Arenos Nexus/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Editor/AssetsUtils/RefreshAsset.cs
Daniel 2e704cae70 init
Init Commit Unity
2025-09-25 22:01:28 +02:00

79 lines
2.5 KiB
C#

using UnityEditor;
using UnityEditor.PackageManager;
using Unity.PlasticSCM.Editor.AssetUtils.Processor;
using Unity.PlasticSCM.Editor.AssetsOverlays.Cache;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor.AssetUtils
{
internal static class RefreshAsset
{
internal static void BeforeLongAssetOperation()
{
AssetDatabase.DisallowAutoRefresh();
}
internal static void AfterLongAssetOperation(IAssetStatusCache assetStatusCache)
{
AfterLongAssetOperation(assetStatusCache, true);
}
internal static void AfterLongAssetOperation(
IAssetStatusCache assetStatusCache,
bool isPackagesReimportNeeded)
{
AssetDatabase.AllowAutoRefresh();
if (isPackagesReimportNeeded)
{
UnityAssetDatabaseAndPackageManagerAsync(assetStatusCache);
return;
}
RefreshUnityAssetDatabase(assetStatusCache);
}
internal static void UnityAssetDatabase(IAssetStatusCache assetStatusCache)
{
RefreshUnityAssetDatabase(assetStatusCache);
}
internal static void UnityAssetDatabaseAndPackageManagerAsync(
IAssetStatusCache assetStatusCache)
{
// Client.Resolve() will resolve any pending packages added or removed from the project
// VCS-1004718 - This is important so the domain gets reloaded first if needed
Client.Resolve();
new DelayedActionBySecondsRunner(
() => RefreshUnityAssetDatabase(assetStatusCache),
UnityConstants.REFRESH_ASSET_DATABASE_DELAYED_INTERVAL)
.Run();
}
internal static void VersionControlCache(IAssetStatusCache assetStatusCache)
{
ClearVersionControlCaches(assetStatusCache);
RepaintEditor.AllWindowsWithOverlays();
}
static void ClearVersionControlCaches(IAssetStatusCache assetStatusCache)
{
UnityEditor.VersionControl.Provider.ClearCache();
if (assetStatusCache != null)
assetStatusCache.Clear();
}
static void RefreshUnityAssetDatabase(IAssetStatusCache assetStatusCache)
{
AssetDatabase.Refresh(ImportAssetOptions.Default);
ClearVersionControlCaches(assetStatusCache);
UVCSAssetPostprocessor.SetIsRepaintNeededAfterAssetDatabaseRefresh();
}
}
}