|
|
- using UnityEngine;
- using UnityEngine.PostProcessing;
-
- namespace UnityEditor.PostProcessing
- {
- [CustomPropertyDrawer(typeof(GetSetAttribute))]
- sealed class GetSetDrawer : PropertyDrawer
- {
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
- {
- var attribute = (GetSetAttribute)base.attribute;
-
- EditorGUI.BeginChangeCheck();
- EditorGUI.PropertyField(position, property, label);
-
- if (EditorGUI.EndChangeCheck())
- {
- attribute.dirty = true;
- }
- else if (attribute.dirty)
- {
- var parent = ReflectionUtils.GetParentObject(property.propertyPath, property.serializedObject.targetObject);
-
- var type = parent.GetType();
- var info = type.GetProperty(attribute.name);
-
- if (info == null)
- Debug.LogError("Invalid property name \"" + attribute.name + "\"");
- else
- info.SetValue(parent, fieldInfo.GetValue(parent), null);
-
- attribute.dirty = false;
- }
- }
- }
- }
|