No Description
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.

TilePaletteBrushesButton.cs 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using UnityEditor.Toolbars;
  3. using UnityEngine;
  4. using UnityEngine.UIElements;
  5. namespace UnityEditor.Tilemaps
  6. {
  7. /// <summary>
  8. /// Dropdown Button for selecting the Active Brush for Grid Painting.
  9. /// </summary>
  10. [EditorToolbarElement(k_ToolbarId)]
  11. [UxmlElement]
  12. public sealed partial class TilePaletteBrushesButton : EditorToolbarDropdown
  13. {
  14. /// <summary>
  15. /// Factory for TilePaletteBrushesButton.
  16. /// </summary>
  17. [Obsolete("TilePaletteBrushesButtonFactory is deprecated and will be removed. Use UxmlElementAttribute instead.", false)]
  18. public class TilePaletteBrushesButtonFactory : UxmlFactory<TilePaletteBrushesButton, TilePaletteBrushesButtonUxmlTraits> {}
  19. /// <summary>
  20. /// UxmlTraits for TilePaletteBrushesButton.
  21. /// </summary>
  22. [Obsolete("TilePaletteBrushesButtonUxmlTraits is deprecated and will be removed. Use UxmlElementAttribute instead.", false)]
  23. public class TilePaletteBrushesButtonUxmlTraits : UxmlTraits {}
  24. private new static readonly string ussClassName = "unity-tilepalette-brushes-button";
  25. internal const string k_ToolbarId = "Tile Palette/Brushes Button";
  26. private const string k_IconPath = "Packages/com.unity.2d.tilemap/Editor/Icons/Tilemap.DefaultBrush.png";
  27. private Texture2D m_DefaultIcon;
  28. /// <summary>
  29. /// Initializes and returns an instance of TilePaletteBrushesButton.
  30. /// </summary>
  31. public TilePaletteBrushesButton()
  32. {
  33. AddToClassList(ussClassName);
  34. TilePaletteOverlayUtility.SetStyleSheet(this);
  35. m_DefaultIcon = EditorGUIUtility.LoadIcon(k_IconPath);
  36. icon = m_DefaultIcon;
  37. RegisterCallback<AttachToPanelEvent>(OnAttachedToPanel);
  38. RegisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
  39. clicked += OnClicked;
  40. }
  41. private void OnAttachedToPanel(AttachToPanelEvent evt)
  42. {
  43. GridPaintingState.brushChanged += OnBrushChanged;
  44. UpdateBrush();
  45. }
  46. private void OnBrushChanged(GridBrushBase obj)
  47. {
  48. UpdateBrush();
  49. }
  50. private void OnDetachFromPanel(DetachFromPanelEvent evt)
  51. {
  52. GridPaintingState.brushChanged -= OnBrushChanged;
  53. }
  54. private void UpdateBrush()
  55. {
  56. var defaultTooltip = TilePaletteBrushesLabel.kNullBrushName;
  57. var defaultIcon = m_DefaultIcon;
  58. tooltip = GridPaintingState.gridBrush != null ? GridPaintingState.gridBrush.name : defaultTooltip;
  59. icon = GridPaintingState.activeBrushEditor != null && GridPaintingState.activeBrushEditor.icon != null ? GridPaintingState.activeBrushEditor.icon : defaultIcon;
  60. }
  61. private void OnClicked()
  62. {
  63. IGenericMenu menu = new TilePaletteBrushesDropdownMenu();
  64. menu.DropDown(worldBound, this, true);
  65. }
  66. }
  67. }