DrawClothIconInHierarchy.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Magica Cloth.
  2. // Copyright (c) MagicaSoft, 2020-2022.
  3. // https://magicasoft.jp
  4. using UnityEditor;
  5. using UnityEngine;
  6. namespace MagicaCloth
  7. {
  8. /// <summary>
  9. /// ヒエラルキーへアイコンの表示
  10. /// </summary>
  11. [InitializeOnLoad]
  12. public class DrawClothIconInHierarchy
  13. {
  14. const int iconSize = 16;
  15. static DrawClothIconInHierarchy()
  16. {
  17. EditorApplication.hierarchyWindowItemOnGUI += DrawIcon;
  18. }
  19. static void DrawIcon(int instanceId, Rect rect)
  20. {
  21. rect.width = iconSize;
  22. GameObject obj = UnityEditor.EditorUtility.InstanceIDToObject(instanceId) as GameObject;
  23. if (obj == null)
  24. return;
  25. rect.x += EditorStyles.label.CalcSize(obj.name).x;
  26. rect.y += 1;
  27. rect.x += iconSize + 4;
  28. //rect.x += iconSize + 28;
  29. foreach (var component in obj.GetComponents<Component>())
  30. {
  31. if (component is MagicaRenderDeformer
  32. || component is MagicaVirtualDeformer
  33. || component is MagicaBoneCloth
  34. || component is MagicaMeshCloth
  35. || component is MagicaMeshSpring
  36. || component is MagicaSphereCollider
  37. || component is MagicaCapsuleCollider
  38. || component is MagicaPlaneCollider
  39. || component is MagicaPhysicsManager
  40. || component is MagicaBoneSpring
  41. || component is MagicaDirectionalWind
  42. || component is MagicaAreaWind
  43. || component is MagicaAvatar
  44. || component is MagicaAvatarParts
  45. )
  46. {
  47. var icon = AssetPreview.GetMiniThumbnail(component);
  48. GUI.Label(rect, icon);
  49. rect.x += iconSize;
  50. }
  51. }
  52. }
  53. }
  54. /// <summary>
  55. /// テキストのサイズを取得
  56. /// </summary>
  57. public static class GUIStyleExtensions
  58. {
  59. public static Vector2 CalcSize(this GUIStyle self, string text)
  60. {
  61. var content = new GUIContent(text);
  62. var size = self.CalcSize(content);
  63. return size;
  64. }
  65. }
  66. }