You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
2 months ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEditor;
|
||
|
using UnityEngine;
|
||
|
using Object = UnityEngine.Object;
|
||
|
|
||
|
namespace AV.UITK
|
||
|
{
|
||
|
public static partial class FluentUITK
|
||
|
{
|
||
|
static Dictionary<string, Texture2D> editorIconsCache = new Dictionary<string, Texture2D>();
|
||
|
|
||
|
public static Texture2D GetObjectIcon(Object obj, Type type = null)
|
||
|
{
|
||
|
Texture2D icon = null;
|
||
|
#if UNITY_EDITOR
|
||
|
icon = EditorGUIUtility.ObjectContent(obj, type ?? obj.GetType()).image as Texture2D;
|
||
|
#endif
|
||
|
return icon;
|
||
|
}
|
||
|
|
||
|
public static Texture2D GetTypeIcon<T>() => GetTypeIcon(typeof(T));
|
||
|
public static Texture2D GetTypeIcon(Type type)
|
||
|
{
|
||
|
return GetObjectIcon(null, type);
|
||
|
}
|
||
|
|
||
|
public static Texture2D GetEditorIcon(string iconName)
|
||
|
{
|
||
|
if (!editorIconsCache.TryGetValue(iconName, out var icon))
|
||
|
{
|
||
|
#if UNITY_EDITOR
|
||
|
icon = EditorGUIUtility.IconContent(iconName).image as Texture2D;
|
||
|
editorIconsCache.Add(iconName, icon);
|
||
|
#endif
|
||
|
}
|
||
|
return icon;
|
||
|
}
|
||
|
}
|
||
|
}
|