A game about forced loneliness, made by TACStudios
at master 2.5 kB view raw
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}