using UnityEngine; 
 | 
using UnityEngine.PostProcessing; 
 | 
  
 | 
namespace UnityEditor.PostProcessing 
 | 
{ 
 | 
    using Settings = ScreenSpaceReflectionModel.Settings; 
 | 
  
 | 
    [PostProcessingModelEditor(typeof(ScreenSpaceReflectionModel))] 
 | 
    public class ScreenSpaceReflectionModelEditor : PostProcessingModelEditor 
 | 
    { 
 | 
        struct IntensitySettings 
 | 
        { 
 | 
            public SerializedProperty reflectionMultiplier; 
 | 
            public SerializedProperty fadeDistance; 
 | 
            public SerializedProperty fresnelFade; 
 | 
            public SerializedProperty fresnelFadePower; 
 | 
        } 
 | 
  
 | 
        struct ReflectionSettings 
 | 
        { 
 | 
            public SerializedProperty blendType; 
 | 
            public SerializedProperty reflectionQuality; 
 | 
            public SerializedProperty maxDistance; 
 | 
            public SerializedProperty iterationCount; 
 | 
            public SerializedProperty stepSize; 
 | 
            public SerializedProperty widthModifier; 
 | 
            public SerializedProperty reflectionBlur; 
 | 
            public SerializedProperty reflectBackfaces; 
 | 
        } 
 | 
  
 | 
        struct ScreenEdgeMask 
 | 
        { 
 | 
            public SerializedProperty intensity; 
 | 
        } 
 | 
  
 | 
        IntensitySettings m_Intensity; 
 | 
        ReflectionSettings m_Reflection; 
 | 
        ScreenEdgeMask m_ScreenEdgeMask; 
 | 
  
 | 
        public override void OnEnable() 
 | 
        { 
 | 
            m_Intensity = new IntensitySettings 
 | 
            { 
 | 
                reflectionMultiplier = FindSetting((Settings x) => x.intensity.reflectionMultiplier), 
 | 
                fadeDistance = FindSetting((Settings x) => x.intensity.fadeDistance), 
 | 
                fresnelFade = FindSetting((Settings x) => x.intensity.fresnelFade), 
 | 
                fresnelFadePower = FindSetting((Settings x) => x.intensity.fresnelFadePower) 
 | 
            }; 
 | 
  
 | 
            m_Reflection = new ReflectionSettings 
 | 
            { 
 | 
                blendType = FindSetting((Settings x) => x.reflection.blendType), 
 | 
                reflectionQuality = FindSetting((Settings x) => x.reflection.reflectionQuality), 
 | 
                maxDistance = FindSetting((Settings x) => x.reflection.maxDistance), 
 | 
                iterationCount = FindSetting((Settings x) => x.reflection.iterationCount), 
 | 
                stepSize = FindSetting((Settings x) => x.reflection.stepSize), 
 | 
                widthModifier = FindSetting((Settings x) => x.reflection.widthModifier), 
 | 
                reflectionBlur = FindSetting((Settings x) => x.reflection.reflectionBlur), 
 | 
                reflectBackfaces = FindSetting((Settings x) => x.reflection.reflectBackfaces) 
 | 
            }; 
 | 
  
 | 
            m_ScreenEdgeMask = new ScreenEdgeMask 
 | 
            { 
 | 
                intensity = FindSetting((Settings x) => x.screenEdgeMask.intensity) 
 | 
            }; 
 | 
        } 
 | 
  
 | 
        public override void OnInspectorGUI() 
 | 
        { 
 | 
            EditorGUILayout.HelpBox("This effect only works with the deferred rendering path.", MessageType.Info); 
 | 
  
 | 
            EditorGUILayout.LabelField("Reflection", EditorStyles.boldLabel); 
 | 
            EditorGUI.indentLevel++; 
 | 
            EditorGUILayout.PropertyField(m_Reflection.blendType); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.reflectionQuality); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.maxDistance); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.iterationCount); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.stepSize); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.widthModifier); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.reflectionBlur); 
 | 
            EditorGUILayout.PropertyField(m_Reflection.reflectBackfaces); 
 | 
            EditorGUI.indentLevel--; 
 | 
  
 | 
            EditorGUILayout.Space(); 
 | 
            EditorGUILayout.LabelField("Intensity", EditorStyles.boldLabel); 
 | 
            EditorGUI.indentLevel++; 
 | 
            EditorGUILayout.PropertyField(m_Intensity.reflectionMultiplier); 
 | 
            EditorGUILayout.PropertyField(m_Intensity.fadeDistance); 
 | 
            EditorGUILayout.PropertyField(m_Intensity.fresnelFade); 
 | 
            EditorGUILayout.PropertyField(m_Intensity.fresnelFadePower); 
 | 
            EditorGUI.indentLevel--; 
 | 
  
 | 
            EditorGUILayout.Space(); 
 | 
            EditorGUILayout.LabelField("Screen Edge Mask", EditorStyles.boldLabel); 
 | 
            EditorGUI.indentLevel++; 
 | 
            EditorGUILayout.PropertyField(m_ScreenEdgeMask.intensity); 
 | 
            EditorGUI.indentLevel--; 
 | 
        } 
 | 
    } 
 | 
} 
 |