설명 없음
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TilePaletteBrushPickItemElement.cs 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using UnityEditor.Tilemaps.External;
  3. using UnityEngine;
  4. using UnityEngine.UIElements;
  5. namespace UnityEditor.Tilemaps
  6. {
  7. internal class TilePaletteBrushPickItemElement : VisualElement
  8. {
  9. private static string kUssClassName = "unity-tilepalette-brushpick-item";
  10. private static string kIconUssClassName = "unity-tilepalette-brushpick-item__icon";
  11. private static string kInvalidBrushText =
  12. L10n.Tr("Invalid Brush. Has the Brush script been removed from the project?");
  13. private GridBrushBase m_Brush;
  14. private Image m_Image;
  15. private VisualElement m_Icon;
  16. private RenameableLabel m_BrushName;
  17. public Action pointerUpEvent;
  18. public Action<string> renameEvent;
  19. public TilePaletteBrushPickItemElement(bool hasName)
  20. {
  21. AddToClassList(kUssClassName);
  22. m_Image = new Image();
  23. m_Image.RegisterCallback<PointerUpEvent>(evt => pointerUpEvent?.Invoke());
  24. Add(m_Image);
  25. m_Icon = new VisualElement();
  26. m_Icon.AddToClassList(kIconUssClassName);
  27. m_Image.Add(m_Icon);
  28. if (hasName)
  29. {
  30. m_BrushName = new RenameableLabel();
  31. Add(m_BrushName);
  32. m_BrushName.renameEnding += BrushNameOnRenameEnding;
  33. }
  34. }
  35. private void BrushNameOnRenameEnding(RenameableLabel label, bool isCancelled)
  36. {
  37. if (isCancelled)
  38. return;
  39. renameEvent?.Invoke(label.text);
  40. }
  41. private void SetAssetPreview()
  42. {
  43. if (m_Brush == null)
  44. {
  45. m_Image.image = null;
  46. return;
  47. }
  48. var id = m_Brush.GetInstanceID();
  49. var assetPreview = AssetPreview.GetAssetPreview(m_Brush);
  50. if (assetPreview == null
  51. || AssetPreview.IsLoadingAssetPreview(id)
  52. || !AssetPreview.HasAssetPreview(id, 0))
  53. {
  54. schedule.Execute(SetAssetPreview).StartingIn(300);
  55. }
  56. else
  57. {
  58. m_Image.image = assetPreview;
  59. }
  60. }
  61. public void SetBrush(GridBrushBase brush)
  62. {
  63. if (brush == null)
  64. {
  65. m_Image.image = null;
  66. m_Icon.style.backgroundImage = EditorGUIUtility.LoadIconRequired("console.warnicon.sml");
  67. m_Icon.tooltip = kInvalidBrushText;
  68. if (m_BrushName != null)
  69. {
  70. m_BrushName.visible = false;
  71. m_BrushName.text = null;
  72. m_BrushName.tooltip = null;
  73. }
  74. }
  75. else
  76. {
  77. m_Brush = brush;
  78. SetAssetPreview();
  79. m_Icon.style.backgroundImage = GridPaletteBrushes.GetBrushIcon(brush.GetType());
  80. m_Icon.tooltip = ObjectNames.NicifyVariableName(brush.GetType().Name);
  81. if (m_BrushName != null)
  82. {
  83. m_BrushName.visible = visible;
  84. m_BrushName.text = brush.name;
  85. m_BrushName.tooltip = brush.name;
  86. }
  87. }
  88. }
  89. public void SetSize(int size)
  90. {
  91. m_Image.style.width = size;
  92. m_Image.style.height = size;
  93. }
  94. public void ToggleRename()
  95. {
  96. if (m_BrushName.isRenaming)
  97. m_BrushName.CancelRename();
  98. else
  99. m_BrushName.BeginRename();
  100. }
  101. }
  102. internal class TilePaletteBrushPickTypeElement : VisualElement
  103. {
  104. private static string kUssClassName = "unity-tilepalette-brushpick-type";
  105. private static string kIconUssClassName = "unity-tilepalette-brushpick-type__icon";
  106. private static string kInvalidBrushText =
  107. L10n.Tr("Invalid Brush. Has the Brush script been removed from the project?");
  108. private VisualElement m_Icon;
  109. private Label m_Label;
  110. public Action pointerUpEvent;
  111. public Action<string> renameEvent;
  112. public TilePaletteBrushPickTypeElement()
  113. {
  114. AddToClassList(kUssClassName);
  115. m_Icon = new VisualElement();
  116. m_Icon.AddToClassList(kIconUssClassName);
  117. Add(m_Icon);
  118. m_Label = new Label();
  119. Add(m_Label);
  120. }
  121. public void SetBrush(GridBrushBase brush)
  122. {
  123. if (brush == null)
  124. {
  125. m_Icon.style.backgroundImage = EditorGUIUtility.LoadIconRequired("console.warnicon.sml");
  126. m_Icon.tooltip = kInvalidBrushText;
  127. m_Label.text = null;
  128. }
  129. else
  130. {
  131. var name = ObjectNames.NicifyVariableName(brush.GetType().Name);
  132. m_Icon.style.backgroundImage = GridPaletteBrushes.GetBrushIcon(brush.GetType());
  133. m_Icon.tooltip = name;
  134. m_Label.text = name;
  135. }
  136. }
  137. }
  138. }