| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|