UnityGame/Library/PackageCache/com.unity.searcher/Samples~/Editor/SearcherExampleComponentEditor.cs
2024-10-27 10:53:47 +03:00

75 lines
2.8 KiB
C#

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();
}
}
}
}