Firstborn/Library/PackageCache/com.unity.postprocessing@3.2.2/PostProcessing/Editor/BaseEditor.cs

60 lines
1.7 KiB
C#
Raw Normal View History

2023-03-28 13:24:16 -04:00
using System;
using System.Linq.Expressions;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
namespace UnityEditor.Rendering.PostProcessing
{
/// <summary>
/// Small wrapper on top of <see cref="Editor"/> to ease the access of the underlying component
/// and its serialized fields.
/// </summary>
/// <typeparam name="T">The type of the target component to make an editor for</typeparam>
/// <example>
/// <code>
/// public class MyMonoBehaviour : MonoBehaviour
/// {
/// public float myProperty = 1.0f;
/// }
///
/// [CustomEditor(typeof(MyMonoBehaviour))]
/// public sealed class MyMonoBehaviourEditor : BaseEditor&lt;MyMonoBehaviour&gt;
/// {
/// SerializedProperty m_MyProperty;
///
/// void OnEnable()
/// {
/// m_MyProperty = FindProperty(x => x.myProperty);
/// }
///
/// public override void OnInspectorGUI()
/// {
/// EditorGUILayout.PropertyField(m_MyProperty);
/// }
/// }
/// </code>
/// </example>
public class BaseEditor<T> : Editor
where T : MonoBehaviour
{
/// <summary>
/// The target component.
/// </summary>
protected T m_Target
{
get { return (T)target; }
}
/// <summary>
///
/// </summary>
/// <typeparam name="TValue"></typeparam>
/// <param name="expr"></param>
/// <returns></returns>
protected SerializedProperty FindProperty<TValue>(Expression<Func<T, TValue>> expr)
{
return serializedObject.FindProperty(RuntimeUtilities.GetFieldPath(expr));
}
}
}