A game about forced loneliness, made by TACStudios
1using System.Collections.Generic; 2 3using Codice; 4using Codice.Client.BaseCommands; 5using Codice.Client.Commands.WkTree; 6using PlasticGui.WorkspaceWindow; 7 8namespace Unity.PlasticSCM.Editor.AssetsOverlays.Cache 9{ 10 internal class LocalStatusCache 11 { 12 internal AssetStatus GetStatus(string fullPath) 13 { 14 AssetStatus result; 15 16 if (mStatusByPathCache.TryGetValue(fullPath, out result)) 17 return result; 18 19 result = CalculateStatus( 20 fullPath, 21 FilterManager.Get().GetIgnoredFilter(), 22 FilterManager.Get().GetHiddenChangesFilter()); 23 24 mStatusByPathCache.Add(fullPath, result); 25 26 return result; 27 } 28 29 internal void Clear() 30 { 31 mStatusByPathCache.Clear(); 32 } 33 34 static AssetStatus CalculateStatus( 35 string fullPath, 36 IgnoredFilesFilter ignoredFilter, 37 HiddenChangesFilesFilter hiddenChangesFilter) 38 { 39 WorkspaceTreeNode treeNode = PlasticGui.Plastic.API.GetWorkspaceTreeNode(fullPath); 40 41 if (CheckWorkspaceTreeNodeStatus.IsPrivate(treeNode)) 42 { 43 return ignoredFilter.IsIgnored(fullPath) ? 44 AssetStatus.Ignored : AssetStatus.Private; 45 } 46 47 if (CheckWorkspaceTreeNodeStatus.IsAdded(treeNode)) 48 return AssetStatus.Added; 49 50 AssetStatus result = AssetStatus.Controlled; 51 52 if (CheckWorkspaceTreeNodeStatus.IsCheckedOut(treeNode) && 53 !CheckWorkspaceTreeNodeStatus.IsDirectory(treeNode)) 54 result |= AssetStatus.Checkout; 55 56 if (hiddenChangesFilter.IsHiddenChanged(fullPath)) 57 result |= AssetStatus.HiddenChanged; 58 59 return result; 60 } 61 62 Dictionary<string, AssetStatus> mStatusByPathCache = 63 BuildPathDictionary.ForPlatform<AssetStatus>(); 64 } 65}