53 lines
1.9 KiB
C#
53 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using UnityEngine.Rendering.PostProcessing;
|
|
|
|
namespace UnityEditor.Rendering.PostProcessing
|
|
{
|
|
/// <summary>
|
|
/// A default effect editor that gathers all parameters and list them vertically in the
|
|
/// inspector.
|
|
/// </summary>
|
|
public class DefaultPostProcessEffectEditor : PostProcessEffectBaseEditor
|
|
{
|
|
List<SerializedParameterOverride> m_Parameters;
|
|
|
|
/// <summary>
|
|
/// Called when the editor is initialized.
|
|
/// </summary>
|
|
public override void OnEnable()
|
|
{
|
|
m_Parameters = new List<SerializedParameterOverride>();
|
|
|
|
var fields = target.GetType()
|
|
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
|
|
.Where(t => t.FieldType.IsSubclassOf(typeof(ParameterOverride)) && t.Name != "enabled")
|
|
.Where(t =>
|
|
(t.IsPublic && t.GetCustomAttributes(typeof(NonSerializedAttribute), false).Length == 0)
|
|
|| (t.GetCustomAttributes(typeof(UnityEngine.SerializeField), false).Length > 0)
|
|
)
|
|
.ToList();
|
|
|
|
foreach (var field in fields)
|
|
{
|
|
var property = serializedObject.FindProperty(field.Name);
|
|
var attributes = field.GetCustomAttributes(false).Cast<Attribute>().ToArray();
|
|
var parameter = new SerializedParameterOverride(property, attributes);
|
|
m_Parameters.Add(parameter);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called every time the inspector is being redrawn. This is where you should add your UI
|
|
/// drawing code.
|
|
/// </summary>
|
|
public override void OnInspectorGUI()
|
|
{
|
|
foreach (var parameter in m_Parameters)
|
|
PropertyField(parameter);
|
|
}
|
|
}
|
|
}
|