63 lines
1.8 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|