88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | 
 | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | using Codice.Client.Common.Threading; | ||
|  | using Codice.LogWrapper; | ||
|  | using PlasticGui; | ||
|  | using Unity.PlasticSCM.Editor.AssetsOverlays.Cache; | ||
|  | using Unity.PlasticSCM.Editor.AssetUtils; | ||
|  | 
 | ||
|  | namespace Unity.PlasticSCM.Editor.AssetsOverlays | ||
|  | { | ||
|  |     internal static class DrawProjectOverlay | ||
|  |     { | ||
|  |         internal static void Enable( | ||
|  |             string wkPath, | ||
|  |             IAssetStatusCache assetStatusCache) | ||
|  |         { | ||
|  |             if (mIsEnabled) | ||
|  |                 return; | ||
|  | 
 | ||
|  |             mLog.Debug("Enable"); | ||
|  | 
 | ||
|  |             mWkPath = wkPath; | ||
|  |             mAssetStatusCache = assetStatusCache; | ||
|  | 
 | ||
|  |             mIsEnabled = true; | ||
|  | 
 | ||
|  |             EditorApplication.projectWindowItemOnGUI += OnProjectWindowItemGUI; | ||
|  | 
 | ||
|  |             RepaintEditor.ProjectWindow(); | ||
|  |         } | ||
|  | 
 | ||
|  |         internal static void Disable() | ||
|  |         { | ||
|  |             mLog.Debug("Disable"); | ||
|  | 
 | ||
|  |             mIsEnabled = false; | ||
|  | 
 | ||
|  |             EditorApplication.projectWindowItemOnGUI -= OnProjectWindowItemGUI; | ||
|  | 
 | ||
|  |             RepaintEditor.ProjectWindow(); | ||
|  | 
 | ||
|  |             mWkPath = null; | ||
|  |             mAssetStatusCache = null; | ||
|  |         } | ||
|  | 
 | ||
|  |         static void OnProjectWindowItemGUI(string guid, Rect selectionRect) | ||
|  |         { | ||
|  |             try | ||
|  |             { | ||
|  |                 if (string.IsNullOrEmpty(guid)) | ||
|  |                     return; | ||
|  | 
 | ||
|  |                 if (Event.current.type != EventType.Repaint) | ||
|  |                     return; | ||
|  | 
 | ||
|  |                 string fullPath = AssetsPath.GetFullPathUnderWorkspace.ForGuid(mWkPath, guid); | ||
|  | 
 | ||
|  |                 if (fullPath == null) | ||
|  |                     return; | ||
|  | 
 | ||
|  |                 AssetStatus assetStatus = mAssetStatusCache.GetStatus(fullPath); | ||
|  | 
 | ||
|  |                 string tooltipText = AssetOverlay.GetTooltipText( | ||
|  |                     assetStatus, | ||
|  |                     mAssetStatusCache.GetLockStatusData(fullPath)); | ||
|  | 
 | ||
|  |                 DrawAssetOverlayIcon.ForStatus( | ||
|  |                     selectionRect, | ||
|  |                     assetStatus, | ||
|  |                     tooltipText); | ||
|  |             } | ||
|  |             catch (Exception ex) | ||
|  |             { | ||
|  |                 ExceptionsHandler.LogException(typeof(DrawProjectOverlay).Name, ex); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         static bool mIsEnabled; | ||
|  |         static IAssetStatusCache mAssetStatusCache; | ||
|  |         static string mWkPath; | ||
|  | 
 | ||
|  |         static readonly ILog mLog = PlasticApp.GetLogger("DrawProjectOverlay"); | ||
|  |     } | ||
|  | } |