Files
taptap2024_GJ_chidouren/Packages/com.xfkj.xffsm@357f537fea/Editor/GUI/Window/FSMSelectParamWindow.cs

84 lines
2.1 KiB
C#
Raw Normal View History

2024-10-16 00:03:41 +08:00
using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;
namespace XFFSM
{
public class FSMSelectParamWindow : PopupWindowContent
{
#region
private float width;
private FSMConditionData condition;
private RuntimeFSMController controller;
// 搜索框
private SearchField searchField;
private Rect searchRect;
const float searchHeight = 25f;
// 标签
private Rect labelRect;
const float labelHeight = 30f;
// 参数列表
private FSMParamListTree paramTree;
private TreeViewState paramState;
private Rect paramRect;
#endregion
public FSMSelectParamWindow(float width,FSMConditionData condition,RuntimeFSMController controller)
{
this.width = width;
this.condition = condition;
this.controller = controller;
}
public override Vector2 GetWindowSize()
{
return new Vector2(this.width,120);
}
public override void OnGUI(Rect rect)
{
if (paramTree == null)
{
if (paramState == null)
{
paramState = new TreeViewState();
}
paramTree = new FSMParamListTree(paramState, controller, condition);
paramTree.Reload();
}
// 搜索框
if (searchField == null) {
searchField = new SearchField();
}
searchRect.Set(rect.x + 5, rect.y + 5, rect.width - 10, searchHeight);
paramTree.searchString = searchField.OnGUI(searchRect, paramTree.searchString);
// 标签
labelRect.Set(rect.x, rect.y + searchHeight, rect.width, labelHeight);
EditorGUI.LabelField(labelRect, condition.parameterName, GUI.skin.GetStyle("AC BoldHeader"));
// 参数列表
paramRect.Set(rect.x, rect.y + searchHeight + labelHeight - 5, rect.width, rect.height - searchHeight - labelHeight);
paramTree.OnGUI(paramRect);
}
}
}