forked from Shardstone/trail-into-darkness
changed directory structure
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Jovian.InspectorTools {
|
||||
public class OnValueChangedAttribute : PropertyAttribute {
|
||||
public readonly string methodName;
|
||||
public OnValueChangedAttribute(string methodName) {
|
||||
this.methodName = methodName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
namespace Jovian.InspectorTools.Internal {
|
||||
|
||||
[CustomPropertyDrawer(typeof(OnValueChangedAttribute))]
|
||||
public class OnValueChangedAttributeDrawer : PropertyDrawer {
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
|
||||
EditorGUI.BeginChangeCheck();
|
||||
EditorGUI.PropertyField(position, property, label);
|
||||
if(EditorGUI.EndChangeCheck()) {
|
||||
property.serializedObject.ApplyModifiedProperties();
|
||||
|
||||
Object target = property.serializedObject.targetObject;
|
||||
string methodName = ((OnValueChangedAttribute)attribute).methodName;
|
||||
MethodInfo methodInfo = target.GetType().GetMethod(methodName);
|
||||
if (methodInfo != null) {
|
||||
methodInfo.Invoke(target, null);
|
||||
}
|
||||
else {
|
||||
Debug.LogError($"No method named '{methodName}' found on {target}", target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user