forked from luva3178/se.su.dsv.mediastudio.livelinkunity
46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Reflection;
|
|
|
|
namespace Klak.Ndi.Editor {
|
|
|
|
// Simple string label with GUIContent
|
|
struct Label
|
|
{
|
|
GUIContent _guiContent;
|
|
|
|
public static implicit operator GUIContent(Label label)
|
|
=> label._guiContent;
|
|
|
|
public static implicit operator Label(string text)
|
|
=> new Label { _guiContent = new GUIContent(text) };
|
|
}
|
|
|
|
// Auto-scanning serialized property wrapper
|
|
struct AutoProperty
|
|
{
|
|
SerializedProperty _prop;
|
|
|
|
public SerializedProperty Target => _prop;
|
|
|
|
public AutoProperty(SerializedProperty prop)
|
|
=> _prop = prop;
|
|
|
|
public static implicit operator
|
|
SerializedProperty(AutoProperty prop) => prop._prop;
|
|
|
|
public static void Scan<T>(T target) where T : UnityEditor.Editor
|
|
{
|
|
var so = target.serializedObject;
|
|
|
|
var flags = BindingFlags.Public | BindingFlags.NonPublic;
|
|
flags |= BindingFlags.Instance;
|
|
|
|
foreach (var f in typeof(T).GetFields(flags))
|
|
if (f.FieldType == typeof(AutoProperty))
|
|
f.SetValue(target, new AutoProperty(so.FindProperty(f.Name)));
|
|
}
|
|
}
|
|
|
|
} // namespace Klak.Ndi.Editor
|