1
This commit is contained in:
61
Packages/Editor/IntervalUpdateInspector.cs
Normal file
61
Packages/Editor/IntervalUpdateInspector.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEngine.UIElements;
|
||||
using UnityEditor.UIElements;
|
||||
|
||||
namespace BITKit.Editors
|
||||
{
|
||||
[CustomPropertyDrawer(typeof(IntervalUpdate))]
|
||||
public class IntervalUpdateInspector : PropertyDrawer
|
||||
{
|
||||
public override VisualElement CreatePropertyGUI(SerializedProperty property)
|
||||
{
|
||||
IntervalUpdate intervalUpdate = null;
|
||||
try
|
||||
{
|
||||
intervalUpdate = property.serializedObject
|
||||
.GetType()
|
||||
.GetProperty(property.name)?
|
||||
.GetValue(property.serializedObject) as IntervalUpdate;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Debug.LogException(e);
|
||||
}
|
||||
|
||||
// Create property container element.
|
||||
var container = new VisualElement();
|
||||
// Create property fields.
|
||||
var enable = new Toggle("Enabled");
|
||||
var updateInterval = new PropertyField(property.FindPropertyRelative(nameof(IntervalUpdate.updateInterval)));
|
||||
|
||||
enable.BindProperty(property.FindPropertyRelative(nameof(IntervalUpdate.enable)));
|
||||
// Add fields to the container.
|
||||
container.Add(enable);
|
||||
container.Add(updateInterval);
|
||||
|
||||
#if UNITY_EDITOR
|
||||
enable.RegisterValueChangedCallback(x =>
|
||||
{
|
||||
if (UnityEditor.EditorApplication.isPlaying)
|
||||
{
|
||||
intervalUpdate?.SetActive(x.newValue);
|
||||
}
|
||||
});
|
||||
#endif
|
||||
|
||||
return container;
|
||||
}
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var enabled = property.FindPropertyRelative("enable");
|
||||
var updateInterval = property.FindPropertyRelative("updateInterval");
|
||||
EditorGUI.BeginProperty(position, label, property);
|
||||
EditorGUI.PropertyField(position, enabled, label);
|
||||
EditorGUI.PropertyField(position, updateInterval, label);
|
||||
EditorGUI.EndProperty();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user