module-project-validator/Editor/Hierarchy/EditorProjectValidatorHierarchy.cs

32 lines
No EOL
1.2 KiB
C#

using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Module.ProjectValidator.Editor
{
[InitializeOnLoad]
internal static class EditorProjectValidatorHierarchy
{
static EditorProjectValidatorHierarchy()
{
EditorApplication.hierarchyWindowItemOnGUI -= OnHierarchyWindowItemOnGUI;
EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemOnGUI;
EditorSceneManager.sceneOpened -= OnSceneOpened;
EditorSceneManager.sceneOpened += OnSceneOpened;
}
private static void OnHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
{
if (Report.HasActive && Report.Active.TryGetSeverityFor(instanceID, out var instance) && instance.Severity != EValidatorSeverity.Valid)
EditorIconUtility.Draw(new Rect(selectionRect.x, selectionRect.y, selectionRect.height, selectionRect.height), instance.Severity, instance.IsRedirect);
}
private static void OnSceneOpened(Scene scene, OpenSceneMode mode)
{
if (Report.HasActive && ProjectValidatorUtility.IsValidForRun())
Report.Active.RebuildInstanceMapping();
}
}
}