71 lines
2 KiB
C#
71 lines
2 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace Module.UIToolkit.Editor
|
|
{
|
|
internal static class EditorUIToolkitCustomization
|
|
{
|
|
private static StyleSheet _ussCollectionView;
|
|
|
|
[InitializeOnLoadMethod]
|
|
private static void Initialize()
|
|
{
|
|
EditorApplication.update -= EditorTick;
|
|
EditorApplication.update += EditorTick;
|
|
}
|
|
|
|
private static void EditorTick()
|
|
{
|
|
ApplyChanges();
|
|
}
|
|
|
|
private static void InitializeStyleSheets()
|
|
{
|
|
if (_ussCollectionView == null)
|
|
_ussCollectionView = FindStyleSheet("editor-collection-view");
|
|
}
|
|
|
|
internal static void ApplyChanges()
|
|
{
|
|
InitializeStyleSheets();
|
|
|
|
var settings = Settings.Load();
|
|
var windows = GetAllOpenEditorWindows();
|
|
|
|
for (var i = 0; i < windows.Length; i++)
|
|
{
|
|
var window = windows[i];
|
|
var ve = window.rootVisualElement;
|
|
|
|
if (ve == null)
|
|
continue;
|
|
|
|
if (_ussCollectionView != null)
|
|
{
|
|
if (settings.listViewDisableMaxHeight)
|
|
ve.styleSheets.Add(_ussCollectionView);
|
|
else
|
|
ve.styleSheets.Remove(_ussCollectionView);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static StyleSheet FindStyleSheet(string name)
|
|
{
|
|
var guids = AssetDatabase.FindAssets($"t:{nameof(StyleSheet)} {name}");
|
|
|
|
if (guids.Length == 0)
|
|
return null;
|
|
|
|
var path = AssetDatabase.GUIDToAssetPath(guids[0]);
|
|
return AssetDatabase.LoadAssetAtPath<StyleSheet>(path);
|
|
}
|
|
|
|
private static EditorWindow[] GetAllOpenEditorWindows()
|
|
{
|
|
return Resources.FindObjectsOfTypeAll<EditorWindow>();
|
|
}
|
|
}
|
|
}
|