50 lines
2.3 KiB
C#
50 lines
2.3 KiB
C#
using UnityEditor.UIElements;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace UnityEditor.Rendering.Universal
|
|
{
|
|
[CustomPropertyDrawer(typeof(RenderGraphSettings))]
|
|
class RenderGraphPropertyDrawer : PropertyDrawer
|
|
{
|
|
VisualElement m_Root;
|
|
|
|
private const string k_EnableRenderCompatibilityPropertyName = "m_EnableRenderCompatibilityMode";
|
|
private const string k_EnableRenderCompatibilityModeLabel = "Compatibility Mode (Render Graph Disabled)";
|
|
private const string k_EnableRenderCompatibilityModeHelpBoxLabel = "Unity no longer develops or improves the rendering path that does not use Render Graph API. Use the Render Graph API when developing new graphics features.";
|
|
|
|
bool m_EnableCompatibilityModeValue;
|
|
|
|
/// <inheritdoc/>
|
|
public override VisualElement CreatePropertyGUI(SerializedProperty property)
|
|
{
|
|
m_Root = new VisualElement();
|
|
var enableCompatilityModeProp = property.FindPropertyRelative(k_EnableRenderCompatibilityPropertyName);
|
|
var enableCompatibilityMode = new PropertyField(enableCompatilityModeProp, k_EnableRenderCompatibilityModeLabel);
|
|
|
|
// UITK raises ValueChangeCallback at various times, so we need to track the actual value
|
|
m_EnableCompatibilityModeValue = enableCompatilityModeProp.boolValue;
|
|
|
|
m_Root.Add(enableCompatibilityMode);
|
|
enableCompatibilityMode.RegisterValueChangeCallback((onchanged) =>
|
|
{
|
|
m_Root.Q<HelpBox>("HelpBoxWarning").style.display = (onchanged.changedProperty.boolValue) ? DisplayStyle.Flex : DisplayStyle.None;
|
|
|
|
bool newValue = onchanged.changedProperty.boolValue;
|
|
if (m_EnableCompatibilityModeValue != newValue)
|
|
{
|
|
m_EnableCompatibilityModeValue = newValue;
|
|
GraphicsSettings.GetRenderPipelineSettings<RenderGraphSettings>()?.NotifyValueChanged(onchanged.changedProperty.name);
|
|
}
|
|
});
|
|
|
|
m_Root.Add(new HelpBox(k_EnableRenderCompatibilityModeHelpBoxLabel, HelpBoxMessageType.Warning)
|
|
{
|
|
name = "HelpBoxWarning"
|
|
});
|
|
return m_Root;
|
|
}
|
|
}
|
|
}
|