DragonECS-Unity/src/Connectors/Editor/AutoEntityCreatorEditor.cs

58 lines
1.8 KiB
C#
Raw Normal View History

2024-03-06 21:37:21 +08:00
#if UNITY_EDITOR
2024-03-09 22:36:35 +08:00
using DCFApixels.DragonECS.Unity.Internal;
2024-03-06 21:37:21 +08:00
using UnityEditor;
using UnityEngine;
namespace DCFApixels.DragonECS.Unity.Editors
{
[CustomEditor(typeof(AutoEntityCreator))]
[CanEditMultipleObjects]
public class AutoEntityCreatorEditor : Editor
{
2024-03-09 22:36:35 +08:00
private AutoEntityCreator Target => (AutoEntityCreator)target;
2024-03-06 21:37:21 +08:00
public override void OnInspectorGUI()
{
2024-03-09 09:56:45 +08:00
EditorGUI.BeginChangeCheck();
var iterator = serializedObject.GetIterator();
iterator.NextVisible(true);
while (iterator.NextVisible(false))
{
EditorGUILayout.PropertyField(iterator, true);
}
if (EditorGUI.EndChangeCheck())
{
serializedObject.ApplyModifiedProperties();
}
2024-03-09 22:36:35 +08:00
DrawControlButtons();
}
private void DrawControlButtons()
{
float height = EcsGUI.EntityBarHeight;
Rect rect = GUILayoutUtility.GetRect(EditorGUIUtility.currentViewWidth, height);
EditorGUI.DrawRect(rect, new Color(0f, 0f, 0f, 0.1f));
rect = RectUtility.AddPadding(rect, 2f, 0f);
var (left, autosetCascadeRect) = RectUtility.HorizontalSliceRight(rect, height);
var (_, autosetRect) = RectUtility.HorizontalSliceRight(left, height);
2024-03-09 09:56:45 +08:00
2024-03-09 22:36:35 +08:00
if (EcsGUI.AutosetCascadeButton(autosetCascadeRect))
{
foreach (AutoEntityCreator target in targets)
{
target.AutosetCascade_Editor();
}
}
2024-03-09 09:56:45 +08:00
2024-03-09 22:36:35 +08:00
if (EcsGUI.AutosetButton(autosetRect))
2024-03-06 21:37:21 +08:00
{
2024-03-09 22:36:35 +08:00
foreach (AutoEntityCreator target in targets)
2024-03-06 21:37:21 +08:00
{
2024-03-09 22:36:35 +08:00
target.Autoset_Editor();
2024-03-06 21:37:21 +08:00
}
}
}
}
}
#endif