Ingen beskrivning
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.

URPRenderGraphPropertyDrawer.cs 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using UnityEditor.UIElements;
  2. using UnityEngine.Rendering;
  3. using UnityEngine.Rendering.Universal;
  4. using UnityEngine.UIElements;
  5. namespace UnityEditor.Rendering.Universal
  6. {
  7. [CustomPropertyDrawer(typeof(RenderGraphSettings))]
  8. class RenderGraphPropertyDrawer : PropertyDrawer
  9. {
  10. VisualElement m_Root;
  11. private const string k_EnableRenderCompatibilityPropertyName = "m_EnableRenderCompatibilityMode";
  12. private const string k_EnableRenderCompatibilityModeLabel = "Compatibility Mode (Render Graph Disabled)";
  13. 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.";
  14. bool m_EnableCompatibilityModeValue;
  15. /// <inheritdoc/>
  16. public override VisualElement CreatePropertyGUI(SerializedProperty property)
  17. {
  18. m_Root = new VisualElement();
  19. var enableCompatilityModeProp = property.FindPropertyRelative(k_EnableRenderCompatibilityPropertyName);
  20. var enableCompatibilityMode = new PropertyField(enableCompatilityModeProp, k_EnableRenderCompatibilityModeLabel);
  21. // UITK raises ValueChangeCallback at various times, so we need to track the actual value
  22. m_EnableCompatibilityModeValue = enableCompatilityModeProp.boolValue;
  23. m_Root.Add(enableCompatibilityMode);
  24. enableCompatibilityMode.RegisterValueChangeCallback((onchanged) =>
  25. {
  26. m_Root.Q<HelpBox>("HelpBoxWarning").style.display = (onchanged.changedProperty.boolValue) ? DisplayStyle.Flex : DisplayStyle.None;
  27. bool newValue = onchanged.changedProperty.boolValue;
  28. if (m_EnableCompatibilityModeValue != newValue)
  29. {
  30. m_EnableCompatibilityModeValue = newValue;
  31. GraphicsSettings.GetRenderPipelineSettings<RenderGraphSettings>()?.NotifyValueChanged(onchanged.changedProperty.name);
  32. }
  33. });
  34. m_Root.Add(new HelpBox(k_EnableRenderCompatibilityModeHelpBoxLabel, HelpBoxMessageType.Warning)
  35. {
  36. name = "HelpBoxWarning"
  37. });
  38. return m_Root;
  39. }
  40. }
  41. }