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