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.
74 lines
2.8 KiB
74 lines
2.8 KiB
using System; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEngine.UIElements; |
|
|
|
namespace UnityEditor.Searcher |
|
{ |
|
[CustomEditor(typeof(SearcherExampleComponent))] |
|
class SearcherExampleComponentEditor : Editor |
|
{ |
|
Rect m_ButtonRect; |
|
|
|
public override void OnInspectorGUI() |
|
{ |
|
var root = new SearcherItem("Root"); |
|
var children = new List<SearcherItem>(); |
|
for (var i = 0; i < 10; ++i) |
|
children.Add(new SearcherItem("B-" + i)); |
|
|
|
var child = new SearcherItem("Child","", children); |
|
root.AddChild(child); |
|
|
|
{ |
|
EditorGUILayout.BeginHorizontal(); |
|
EditorGUILayout.PrefixLabel("Mouse Position"); |
|
if (EditorGUILayout.DropdownButton(new GUIContent("Button"), FocusType.Passive, GUI.skin.button)) |
|
{ |
|
var editorWindow = EditorWindow.focusedWindow; |
|
var localMousePosition = Event.current.mousePosition; |
|
var worldMousePosition = editorWindow.rootVisualElement.LocalToWorld(localMousePosition); |
|
|
|
SearcherWindow.Show( |
|
editorWindow, |
|
new List<SearcherItem> { root }, |
|
"Mouse Position", |
|
item => { |
|
Debug.Log("Searcher item selected: " + (item?.Name ?? "<none>")); |
|
return true; |
|
}, |
|
worldMousePosition); |
|
} |
|
EditorGUILayout.EndHorizontal(); |
|
} |
|
|
|
{ |
|
EditorGUILayout.BeginHorizontal(); |
|
EditorGUILayout.PrefixLabel("Button Center"); |
|
|
|
var selected = EditorGUILayout.DropdownButton(new GUIContent("Button"), FocusType.Passive, GUI.skin.button); |
|
if (Event.current.type == EventType.Repaint) |
|
m_ButtonRect = GUILayoutUtility.GetLastRect(); |
|
|
|
if (selected) |
|
{ |
|
var editorWindow = EditorWindow.focusedWindow; |
|
var localButtonCenter = m_ButtonRect.center; |
|
var worldButtonCenter = editorWindow.rootVisualElement.LocalToWorld(localButtonCenter); |
|
|
|
SearcherWindow.Show( |
|
editorWindow, |
|
new List<SearcherItem> { root }, |
|
"Button Center", |
|
item => { |
|
Debug.Log("Searcher item selected: " + (item?.Name ?? "<none>")); |
|
return true; |
|
}, |
|
worldButtonCenter); |
|
} |
|
|
|
EditorGUILayout.EndHorizontal(); |
|
} |
|
} |
|
} |
|
}
|
|
|