DynamicOcclusionAbstractBaseEditor.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. namespace VLB
  5. {
  6. public class DynamicOcclusionAbstractBaseEditor<T> : EditorCommon where T : DynamicOcclusionAbstractBase
  7. {
  8. SerializedProperty updateRate, waitXFrames;
  9. protected TargetList<T> m_Targets;
  10. protected override void OnEnable()
  11. {
  12. base.OnEnable();
  13. updateRate = FindProperty((DynamicOcclusionDepthBuffer x) => x.updateRate);
  14. waitXFrames = FindProperty((DynamicOcclusionDepthBuffer x) => x.waitXFrames);
  15. m_Targets = new TargetList<T>(targets);
  16. }
  17. public override void OnInspectorGUI()
  18. {
  19. base.OnInspectorGUI();
  20. if (!Config.Instance.featureEnabledDynamicOcclusion)
  21. {
  22. EditorGUILayout.HelpBox(EditorStrings.DynOcclusion.HelpFeatureDisabled, MessageType.Warning);
  23. }
  24. }
  25. protected void DisplayCommonInspector()
  26. {
  27. if (FoldableHeader.Begin(this, EditorStrings.DynOcclusion.HeaderUpdateRate))
  28. {
  29. updateRate.CustomEnum<DynamicOcclusionUpdateRate>(EditorStrings.DynOcclusion.UpdateRate, EditorStrings.DynOcclusion.UpdateRateDescriptions);
  30. if (m_Targets.HasAtLeastOneTargetWith((T comp) => { return comp.updateRate.HasFlag(DynamicOcclusionUpdateRate.EveryXFrames); }))
  31. {
  32. EditorGUILayout.PropertyField(waitXFrames, EditorStrings.DynOcclusion.WaitXFrames);
  33. }
  34. EditorGUILayout.HelpBox(
  35. string.Format(EditorStrings.DynOcclusion.GetUpdateRateAdvice<T>(m_Targets[0].updateRate), m_Targets[0].waitXFrames),
  36. MessageType.Info);
  37. }
  38. FoldableHeader.End();
  39. serializedObject.ApplyModifiedProperties();
  40. }
  41. }
  42. }
  43. #endif