123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using UnityEditor.Overlays;
- using UnityEditor.Toolbars;
- using UnityEditor.UIElements;
- using UnityEngine;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.Tilemaps
- {
- [Overlay(typeof(SceneView), k_OverlayId, k_DisplayName)]
- internal class SceneViewTilemapFocusOverlay : ToolbarOverlay, ITransientOverlay
- {
- internal const string k_OverlayId = "Scene View/Tilemap Focus";
- private const string k_DisplayName = "Tilemap Focus";
-
- public SceneViewTilemapFocusOverlay() : base(new[] {"Tile Palette/Focus Label", "Tile Palette/Focus Dropdown"})
- {}
-
- public bool visible =>
- GridPaintingState.defaultBrush != null && GridPaintingState.scenePaintTarget != null &&
- GridPaintPaletteWindow.isActive;
- }
-
- [EditorToolbarElement("Tile Palette/Focus Label")]
- sealed class TilePaletteFocusLabel : VisualElement
- {
- const string k_ToolSettingsClass = "unity-tool-settings";
-
- readonly TextElement m_Label;
-
- private static string k_LabelText = L10n.Tr("Focus On");
-
- public TilePaletteFocusLabel()
- {
- name = "Focus Label";
- AddToClassList(k_ToolSettingsClass);
-
- m_Label = new TextElement();
- m_Label.AddToClassList(EditorToolbar.elementLabelClassName);
- m_Label.text = k_LabelText;
- Add(m_Label);
- }
- }
-
- [EditorToolbarElement("Tile Palette/Focus Dropdown")]
- sealed class TilePaletteFocusDropdown : EditorToolbarDropdown
- {
- const string k_DropdownIconClass = "unity-toolbar-dropdown-label-icon";
- const string k_ToolSettingsClass = "unity-tool-settings";
-
- readonly TextElement m_Label;
- readonly VisualElement m_Icon;
-
- readonly GUIContent m_None;
- readonly GUIContent m_Tilemap;
- readonly GUIContent m_Grid;
-
- public TilePaletteFocusDropdown()
- {
- name = "Focus Dropdown";
- AddToClassList(k_ToolSettingsClass);
-
- m_None = EditorGUIUtility.TrTextContentWithIcon("None",
- "Focus Mode is not active.",
- "ToolHandlePivot");
- m_Tilemap = EditorGUIUtility.TrTextContentWithIcon("Tilemap",
- "Focuses on the active Tilemap. Filters out all other Renderers.",
- "ToolHandlePivot");
- m_Grid = EditorGUIUtility.TrTextContentWithIcon("Grid",
- "Focuses on all Renderers with the active Grid. Filters out all other Renderers.",
- "ToolHandlePivot");
-
- clicked += OpenContextMenu;
-
- FocusModeChanged();
- }
-
- void OpenContextMenu()
- {
- var menu = new GenericMenu();
- var focusMode = GridPaintPaletteWindow.focusMode;
- menu.AddItem(m_None, focusMode == GridPaintPaletteWindow.TilemapFocusMode.None, () => SetFocusMode(GridPaintPaletteWindow.TilemapFocusMode.None));
- menu.AddItem(m_Tilemap, focusMode == GridPaintPaletteWindow.TilemapFocusMode.Tilemap, () => SetFocusMode(GridPaintPaletteWindow.TilemapFocusMode.Tilemap));
- menu.AddItem(m_Grid, focusMode == GridPaintPaletteWindow.TilemapFocusMode.Grid, () => SetFocusMode(GridPaintPaletteWindow.TilemapFocusMode.Grid));
- menu.DropDown(worldBound);
- }
-
- void SetFocusMode(GridPaintPaletteWindow.TilemapFocusMode mode)
- {
- GridPaintPaletteWindow.instances[0].SetFocusMode(mode);
- FocusModeChanged();
- }
-
- void FocusModeChanged()
- {
- var content = m_None;
- switch (GridPaintPaletteWindow.focusMode)
- {
- case GridPaintPaletteWindow.TilemapFocusMode.Tilemap:
- content = m_Tilemap;
- break;
- case GridPaintPaletteWindow.TilemapFocusMode.Grid:
- content = m_Grid;
- break;
- }
- text = content.text;
- tooltip = content.tooltip;
- icon = EditorGUIUtility.LoadIconRequired("TilemapRenderer Icon");
- }
- }
- }
|