Ei kuvausta
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.

TilemapEditorToolbarStrip.cs 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using UnityEditor.Toolbars;
  2. using UnityEngine.UIElements;
  3. namespace UnityEditor.Tilemaps
  4. {
  5. /// <summary>
  6. /// A VisualElement displaying a Toolbar showing EditorTools for GridPainting.
  7. /// </summary>
  8. /// <description>
  9. /// This shows the EditorTools available for the active Brush.
  10. /// </description>
  11. [EditorToolbarElement(k_ToolbarId)]
  12. internal class TilemapEditorToolbarStrip : VisualElement
  13. {
  14. private static readonly string ussClassName = "unity-tilepalette-toolbar-strip";
  15. internal const string k_ToolbarId = "Tools/Tile Palette Tools";
  16. private static readonly string k_Name = L10n.Tr("Tile Palette Tools");
  17. private bool isUpdating;
  18. /// <summary>
  19. /// Constructor for TilemapEditorToolbarStrip.
  20. /// </summary>
  21. public TilemapEditorToolbarStrip()
  22. {
  23. name = k_Name;
  24. AddToClassList(ussClassName);
  25. TilePaletteOverlayUtility.SetStyleSheet(this);
  26. RegisterCallback<AttachToPanelEvent>(OnAttachedToPanel);
  27. RegisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
  28. }
  29. void OnAttachedToPanel(AttachToPanelEvent evt)
  30. {
  31. TilemapEditorToolPreferences.tilemapEditorToolsChanged += OnTilemapEditorToolsChanged;
  32. GridPaintingState.brushToolsChanged += OnTilemapEditorToolsChanged;
  33. OnTilemapEditorToolsChanged();
  34. }
  35. void OnDetachFromPanel(DetachFromPanelEvent evt)
  36. {
  37. RemoveTilemapEditorTools();
  38. GridPaintingState.brushToolsChanged -= OnTilemapEditorToolsChanged;
  39. TilemapEditorToolPreferences.tilemapEditorToolsChanged -= OnTilemapEditorToolsChanged;
  40. }
  41. private void OnTilemapEditorToolsChanged()
  42. {
  43. UpdateTilemapEditorTools();
  44. }
  45. private void UpdateTilemapEditorTools()
  46. {
  47. if (isUpdating)
  48. return;
  49. isUpdating = true;
  50. RemoveTilemapEditorTools();
  51. var tools = TilemapEditorTool.tilemapEditorTools;
  52. foreach (var tool in tools)
  53. {
  54. var button = new TilemapEditorToolButton(tool as TilemapEditorTool);
  55. Add(button);
  56. button.SetEnabled(true);
  57. }
  58. EditorToolbarUtility.SetupChildrenAsButtonStrip(this);
  59. isUpdating = false;
  60. }
  61. private void RemoveTilemapEditorTools()
  62. {
  63. Clear();
  64. }
  65. }
  66. }