您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
79 行
2.4 KiB
79 行
2.4 KiB
using UnityEngine;
|
|
using UnityEngine.PostProcessing;
|
|
using System;
|
|
using System.Linq.Expressions;
|
|
|
|
namespace UnityEditor.PostProcessing
|
|
{
|
|
public class PostProcessingModelEditor
|
|
{
|
|
public PostProcessingModel target { get; internal set; }
|
|
public SerializedProperty serializedProperty { get; internal set; }
|
|
|
|
protected SerializedProperty m_SettingsProperty;
|
|
protected SerializedProperty m_EnabledProperty;
|
|
|
|
internal bool alwaysEnabled = false;
|
|
internal PostProcessingProfile profile;
|
|
internal PostProcessingInspector inspector;
|
|
|
|
internal void OnPreEnable()
|
|
{
|
|
m_SettingsProperty = serializedProperty.FindPropertyRelative("m_Settings");
|
|
m_EnabledProperty = serializedProperty.FindPropertyRelative("m_Enabled");
|
|
|
|
OnEnable();
|
|
}
|
|
|
|
public virtual void OnEnable()
|
|
{}
|
|
|
|
public virtual void OnDisable()
|
|
{}
|
|
|
|
internal void OnGUI()
|
|
{
|
|
GUILayout.Space(5);
|
|
|
|
var display = alwaysEnabled
|
|
? EditorGUIHelper.Header(serializedProperty.displayName, m_SettingsProperty, Reset)
|
|
: EditorGUIHelper.Header(serializedProperty.displayName, m_SettingsProperty, m_EnabledProperty, Reset);
|
|
|
|
if (display)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
using (new EditorGUI.DisabledGroupScope(!m_EnabledProperty.boolValue))
|
|
{
|
|
OnInspectorGUI();
|
|
}
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
|
|
void Reset()
|
|
{
|
|
var obj = serializedProperty.serializedObject;
|
|
Undo.RecordObject(obj.targetObject, "Reset");
|
|
target.Reset();
|
|
EditorUtility.SetDirty(obj.targetObject);
|
|
}
|
|
|
|
public virtual void OnInspectorGUI()
|
|
{}
|
|
|
|
public void Repaint()
|
|
{
|
|
inspector.Repaint();
|
|
}
|
|
|
|
protected SerializedProperty FindSetting<T, TValue>(Expression<Func<T, TValue>> expr)
|
|
{
|
|
return m_SettingsProperty.FindPropertyRelative(ReflectionUtils.GetFieldPath(expr));
|
|
}
|
|
|
|
protected SerializedProperty FindSetting<T, TValue>(SerializedProperty prop, Expression<Func<T, TValue>> expr)
|
|
{
|
|
return prop.FindPropertyRelative(ReflectionUtils.GetFieldPath(expr));
|
|
}
|
|
}
|
|
}
|