123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- using System;
- using UnityEngine;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.Tilemaps
- {
- internal class TilePaletteActiveTargetsDropdownMenu : IGenericMenu
- {
- private const float k_ActiveTargetDropdownWidth = 200f;
-
- private GridPaintTargetsDropdown m_Dropdown;
- private TilePaletteCreateTargetsDropdownMenu m_Menu;
-
- public TilePaletteActiveTargetsDropdownMenu()
- {
- var index =
- GridPaintingState.validTargets != null && GridPaintingState.scenePaintTarget != null
- ? Array.IndexOf(GridPaintingState.validTargets, GridPaintingState.scenePaintTarget)
- : -1;
- var menuData = new GridPaintTargetsDropdown.MenuItemProvider();
- m_Dropdown = new GridPaintTargetsDropdown(menuData, index, null, SelectTarget, HoverTarget, k_ActiveTargetDropdownWidth);
- }
-
- private void OnClose()
- {
- PopupWindow.Show(default, m_Dropdown);
- }
-
- public void AddItem(string itemName, bool isChecked, System.Action action)
- {
- }
-
- public void AddItem(string itemName, bool isChecked, System.Action<object> action, object data)
- {
- }
-
- public void AddDisabledItem(string itemName, bool isChecked)
- {
- }
-
- public void AddSeparator(string path)
- {
- }
-
- public void DropDown(Rect position, VisualElement targetElement = null, bool anchored = false)
- {
- PopupWindow.Show(position, m_Dropdown);
- }
-
- private static void SelectTarget(int i, object o)
- {
- if ((GridPaintingState.validTargets == null && i > 0)
- || (GridPaintingState.validTargets != null && i >= GridPaintingState.validTargets.Length))
- {
- return;
- }
-
- var obj = o as GameObject;
- var isPrefabInstance = TilePalettePrefabUtility.IsObjectPrefabInstance(obj);
- if (isPrefabInstance)
- {
- var editMode = (TilePaletteActiveTargetsProperties.PrefabEditModeSettings)EditorPrefs.GetInt(TilePaletteActiveTargetsProperties.targetEditModeEditorPref, 0);
- switch (editMode)
- {
- case TilePaletteActiveTargetsProperties.PrefabEditModeSettings.EnableDialog:
- {
- var option = EditorUtility.DisplayDialogComplex(TilePaletteActiveTargetsProperties.targetEditModeDialogTitle
- , TilePaletteActiveTargetsProperties.targetEditModeDialogMessage
- , TilePaletteActiveTargetsProperties.targetEditModeDialogYes
- , TilePaletteActiveTargetsProperties.targetEditModeDialogNo
- , TilePaletteActiveTargetsProperties.targetEditModeDialogChange);
- switch (option)
- {
- case 0:
- TilePalettePrefabUtility.GoToPrefabMode(obj);
- return;
- case 1:
- // Do nothing here for "No"
- break;
- case 2:
- var settingsWindow = SettingsWindow.Show(SettingsScope.User);
- settingsWindow.FilterProviders(TilePaletteActiveTargetsProperties.targetEditModeLookup);
- break;
- }
- }
- break;
- case TilePaletteActiveTargetsProperties.PrefabEditModeSettings.EditInPrefabMode:
- TilePalettePrefabUtility.GoToPrefabMode(obj);
- return;
- }
- }
-
- GridPaintingState.scenePaintTarget = obj;
- }
-
- private void HoverTarget(int index, Rect itemRect)
- {
- var targets = GridPaintingState.validTargets;
- var count = 0;
- if (targets != null)
- count = targets.Length;
-
- if (index < count)
- {
- if (m_Menu != null)
- {
- m_Menu.Close();
- m_Menu = null;
- }
- return;
- }
-
- if (!GridPaintCreateTargetsDropdown.IsOpen)
- {
- m_Menu = new TilePaletteCreateTargetsDropdownMenu(OnClose);
-
- var popupRect = itemRect;
- popupRect.x += itemRect.width;
- popupRect.y -= itemRect.height;
-
- m_Menu.DropDown(popupRect);
- }
- }
- }
- }
|