using System.Linq; using UnityEngine.Rendering; namespace UnityEditor.Rendering { /// /// Default Volume Profile Editor. /// [CustomEditor(typeof(VolumeProfile))] [SupportedOnRenderPipeline] public sealed class VolumeProfileEditor : Editor { /// /// The VolumeComponentListEditor for this Volume Profile editor. /// public VolumeComponentListEditor componentList { get; private set; } void OnEnable() { componentList = new VolumeComponentListEditor(this); if (VolumeManager.instance.isInitialized) Init(); } void Init() { var volumeProfile = target as VolumeProfile; if (volumeProfile == VolumeManager.instance.globalDefaultProfile) { componentList.SetIsGlobalDefaultVolumeProfile(true); VolumeProfileUtils.EnsureAllOverridesForDefaultProfile(volumeProfile); } componentList.Init(volumeProfile, serializedObject); } void OnDisable() { componentList?.Clear(); } /// public override void OnInspectorGUI() { if (componentList == null || componentList.asset == null) { if (!VolumeManager.instance.isInitialized) { EditorGUILayout.HelpBox("Volume Profiles require an active Scriptable Render Pipeline, but nothing has been rendered. Make sure Scene or Game View is in focus and no debug modes are active.", MessageType.Warning); return; // Defer initialization until VolumeManager is initialized } Init(); } serializedObject.Update(); componentList.OnGUI(); EditorGUILayout.Space(); if (componentList.hasHiddenVolumeComponents) EditorGUILayout.HelpBox("There are Volume Components that are hidden in this asset because they are incompatible with the current active Render Pipeline. Change the active Render Pipeline to see them.", MessageType.Info); serializedObject.ApplyModifiedProperties(); } } }