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

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");
}
}