12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using System.IO;
- using UnityEditor;
- using Codice.CM.Common;
- namespace Unity.PlasticSCM.Editor.AssetsOverlays.Cache
- {
- internal interface IAssetStatusCache
- {
- AssetStatus GetStatusForPath(string fullPath);
- AssetStatus GetStatusForGuid(string guid);
- LockStatusData GetLockStatusData(string guid);
- LockStatusData GetLockStatusDataForPath(string path);
- void Clear();
- }
- internal class AssetStatusCache : IAssetStatusCache
- {
- internal AssetStatusCache(
- WorkspaceInfo wkInfo,
- bool isGluonMode)
- {
- mLocalStatusCache = new LocalStatusCache(wkInfo);
- mRemoteStatusCache = new RemoteStatusCache(
- wkInfo,
- isGluonMode,
- ProjectWindow.Repaint);
- mLockStatusCache = new LockStatusCache(
- wkInfo,
- ProjectWindow.Repaint);
- }
- AssetStatus IAssetStatusCache.GetStatusForPath(string fullPath)
- {
- AssetStatus localStatus = mLocalStatusCache.GetStatus(fullPath);
- if (!ClassifyAssetStatus.IsControlled(localStatus))
- return localStatus;
- AssetStatus remoteStatus = mRemoteStatusCache.GetStatus(fullPath);
- AssetStatus lockStatus = mLockStatusCache.GetStatus(fullPath);
- return localStatus | remoteStatus | lockStatus;
- }
- AssetStatus IAssetStatusCache.GetStatusForGuid(string guid)
- {
- string fullPath = GetAssetPath(guid);
- if (string.IsNullOrEmpty(fullPath))
- return AssetStatus.None;
- return ((IAssetStatusCache)this).GetStatusForPath(fullPath);
- }
- LockStatusData IAssetStatusCache.GetLockStatusDataForPath(string path)
- {
- if (string.IsNullOrEmpty(path))
- return null;
- return mLockStatusCache.GetLockStatusData(path);
- }
- LockStatusData IAssetStatusCache.GetLockStatusData(string guid)
- {
- string fullPath = GetAssetPath(guid);
- return ((IAssetStatusCache)this).GetLockStatusDataForPath(fullPath);
- }
- void IAssetStatusCache.Clear()
- {
- mLocalStatusCache.Clear();
- mRemoteStatusCache.Clear();
- mLockStatusCache.Clear();
- }
- static string GetAssetPath(string guid)
- {
- string assetPath = AssetDatabase.GUIDToAssetPath(guid);
- if (string.IsNullOrEmpty(assetPath))
- return null;
- return Path.GetFullPath(assetPath);
- }
- readonly LocalStatusCache mLocalStatusCache;
- readonly RemoteStatusCache mRemoteStatusCache;
- readonly LockStatusCache mLockStatusCache;
- }
- }
|