You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
3.4 KiB

using UnityEngine;
using UnityEditor;
namespace UnityStandardAssets.CinematicEffects
{
[CanEditMultipleObjects]
[CustomEditor(typeof(AmbientOcclusion))]
public class AmbientOcclusionEditor : Editor
{
SerializedProperty _intensity;
SerializedProperty _radius;
SerializedProperty _sampleCount;
SerializedProperty _sampleCountValue;
SerializedProperty _downsampling;
SerializedProperty _occlusionSource;
SerializedProperty _ambientOnly;
SerializedProperty _debug;
static GUIContent _textValue = new GUIContent("Value");
static string _textNoGBuffer =
"G-buffer is currently unavailable. " +
"Change Renderring Path in camera settings to Deferred.";
static string _textNoAmbientOnly =
"The ambient-only mode is currently disabled; " +
"it requires G-buffer source and HDR rendering.";
static string _textGBufferNote =
"Forward opaque objects don't go in the G-buffer. " +
"This may lead to artifacts.";
void OnEnable()
{
_intensity = serializedObject.FindProperty("settings.intensity");
_radius = serializedObject.FindProperty("settings.radius");
_sampleCount = serializedObject.FindProperty("settings.sampleCount");
_sampleCountValue = serializedObject.FindProperty("settings.sampleCountValue");
_downsampling = serializedObject.FindProperty("settings.downsampling");
_occlusionSource = serializedObject.FindProperty("settings.occlusionSource");
_ambientOnly = serializedObject.FindProperty("settings.ambientOnly");
_debug = serializedObject.FindProperty("settings.debug");
}
public override void OnInspectorGUI()
{
var targetInstance = (AmbientOcclusion)target;
serializedObject.Update();
EditorGUILayout.PropertyField(_intensity);
EditorGUILayout.PropertyField(_radius);
EditorGUILayout.PropertyField(_sampleCount);
if (_sampleCount.hasMultipleDifferentValues ||
_sampleCount.enumValueIndex == (int)AmbientOcclusion.SampleCount.Variable)
{
EditorGUI.indentLevel++;
EditorGUILayout.PropertyField(_sampleCountValue, _textValue);
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(_downsampling);
EditorGUILayout.PropertyField(_occlusionSource);
if (!_occlusionSource.hasMultipleDifferentValues &&
_occlusionSource.enumValueIndex == (int)AmbientOcclusion.OcclusionSource.GBuffer)
{
if (!targetInstance.isGBufferAvailable)
EditorGUILayout.HelpBox(_textNoGBuffer, MessageType.Warning);
else if (!_ambientOnly.hasMultipleDifferentValues && !_ambientOnly.boolValue)
EditorGUILayout.HelpBox(_textGBufferNote, MessageType.Info);
}
EditorGUILayout.PropertyField(_ambientOnly);
if (!_ambientOnly.hasMultipleDifferentValues &&
_ambientOnly.boolValue &&
!targetInstance.isAmbientOnlySupported)
{
EditorGUILayout.HelpBox(_textNoAmbientOnly, MessageType.Warning);
}
EditorGUILayout.PropertyField(_debug);
serializedObject.ApplyModifiedProperties();
}
}
}