BITFALL/Assets/MagicaCloth2/Scripts/Editor/EditorExtension/DrawIconInHierarchy.cs

63 lines
1.8 KiB
C#

// Magica Cloth 2.
// Copyright (c) 2023 MagicaSoft.
// https://magicasoft.jp
using UnityEditor;
using UnityEngine;
namespace MagicaCloth2
{
/// <summary>
/// ヒエラルキーへアイコンの表示
/// </summary>
[InitializeOnLoad]
public class DrawIconInHierarchy
{
const int iconSize = 16;
static DrawIconInHierarchy()
{
EditorApplication.hierarchyWindowItemOnGUI += DrawIcon;
}
static void DrawIcon(int instanceId, Rect rect)
{
rect.width = iconSize;
GameObject obj = UnityEditor.EditorUtility.InstanceIDToObject(instanceId) as GameObject;
if (obj == null)
return;
rect.x += EditorStyles.label.CalcSize(obj.name).x;
rect.y += -1;
rect.x += iconSize + 4;
foreach (var component in obj.GetComponents<ClothBehaviour>())
{
if (component is MagicaSphereCollider
|| component is MagicaCapsuleCollider
|| component is MagicaPlaneCollider
|| component is MagicaCloth
|| component is MagicaWindZone
|| component is MagicaSettings
)
{
var icon = AssetPreview.GetMiniThumbnail(component);
GUI.Label(rect, icon);
rect.x += iconSize;
}
}
}
}
/// <summary>
/// テキストのサイズを取得
/// </summary>
public static class GUIStyleExtensions
{
public static Vector2 CalcSize(this GUIStyle self, string text)
{
var content = new GUIContent(text);
var size = self.CalcSize(content);
return size;
}
}
}