UnityGame/Library/PackageCache/com.unity.collab-proxy/Editor/PlasticSCM/AssetsUtils/RefreshAsset.cs
2024-10-27 10:53:47 +03:00

67 lines
1.9 KiB
C#

using UnityEditor.PackageManager;
using UnityEditor;
using AssetPostprocessor = Unity.PlasticSCM.Editor.AssetUtils.Processor.AssetPostprocessor;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor.AssetUtils
{
internal static class RefreshAsset
{
internal static void BeforeLongAssetOperation()
{
AssetDatabase.DisallowAutoRefresh();
}
internal static void AfterLongAssetOperation()
{
AssetDatabase.AllowAutoRefresh();
UnityAssetDatabaseAndPackageManagerAsync();
}
internal static void UnityAssetDatabase()
{
RefreshUnityAssetDatabase();
}
internal static void UnityAssetDatabaseAndPackageManagerAsync()
{
// 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();
mCooldownRefreshAssetsAction.Ping();
}
internal static void VersionControlCache()
{
ClearVersionControlCaches();
ProjectWindow.Repaint();
RepaintInspector.All();
}
static void ClearVersionControlCaches()
{
UnityEditor.VersionControl.Provider.ClearCache();
if (PlasticPlugin.AssetStatusCache != null)
PlasticPlugin.AssetStatusCache.Clear();
}
static void RefreshUnityAssetDatabase()
{
AssetDatabase.Refresh(ImportAssetOptions.Default);
ClearVersionControlCaches();
AssetPostprocessor.SetIsRepaintNeededAfterAssetDatabaseRefresh();
}
static CooldownWindowDelayer mCooldownRefreshAssetsAction = new CooldownWindowDelayer(
RefreshUnityAssetDatabase,
UnityConstants.REFRESH_ASSET_DATABASE_DELAYED_INTERVAL);
}
}