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