diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Containers.cs b/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Containers.cs
index 884778140b7..ce2aad6b1bd 100644
--- a/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Containers.cs
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Containers.cs
@@ -252,7 +252,40 @@ public void SetColumnVisibility(int index, bool visible)
newVisibleColumns.Sort();
}
header.state.visibleColumns = newVisibleColumns.ToArray();
+
+ var cols = header.state.columns;
+ for (int i = 0; i < cols.Length; i++)
+ cols[i].width = 50f;
+ header.ResizeToFit();
}
+#else
+ var columns = VisibleColumns;
+ if (index < 0 || index > columns.Length)
+ return;
+
+ columns[index] = visible;
+#endif
+ }
+
+ ///
+ /// Get column visibility.
+ ///
+ /// Index of the column.
+ /// True if the column is visible.
+ public bool GetColumnVisibility(int index)
+ {
+#if UNITY_EDITOR
+ var header = Header;
+ if (index < 0 || index >= m_ColumnCount)
+ return false;
+
+ return header.IsColumnVisible(index + 1);
+#else
+ var columns = VisibleColumns;
+ if (index < 0 || index > columns.Length)
+ return false;
+
+ return columns[index];
#endif
}
@@ -315,6 +348,41 @@ UnityEditor.IMGUI.Controls.MultiColumnHeaderState.Column CreateColumn(string nam
return m_Header;
}
}
+#else
+ bool[] m_Header = null;
+
+ ///
+ /// The visible columns
+ ///
+ public bool[] VisibleColumns
+ {
+ get
+ {
+ if (m_Header != null)
+ return m_Header;
+
+ int columnCount = 0;
+ if (children.Count != 0)
+ {
+ columnCount = ((Container)children[0]).children.Count;
+ for (int i = 1; i < children.Count; i++)
+ {
+ if (((Container)children[i]).children.Count != columnCount)
+ {
+ Debug.LogError("All rows must have the same number of children.");
+ return null;
+ }
+ }
+ }
+
+ m_Header = new bool[columnCount];
+ for (int i = 0; i < columnCount; i++)
+ m_Header[i] = true;
+
+ return m_Header;
+ }
+ }
+#endif
///
/// Method called when a children is added.
@@ -337,7 +405,6 @@ protected override void OnItemRemoved(ObservableList sender, ListChanged
base.OnItemRemoved(sender, e);
m_Header = null;
}
-#endif
}
}
}
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUI Canvas.prefab b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUI Canvas.prefab
index 7df630b35aa..314a81bbff0 100644
--- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUI Canvas.prefab
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUI Canvas.prefab
@@ -172,4 +172,4 @@ MonoBehaviour:
prefab: {fileID: 224284813447651300, guid: 38a07789c9e87004dad98c2909f58369, type: 3}
- type: UnityEngine.Rendering.DebugUI+Table+Row, Unity.RenderPipelines.Core.Runtime,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
- prefab: {fileID: 224053494956566916, guid: 1c87ab2ce8b8b304d98fbe9a734b1f74, type: 3}
+ prefab: {fileID: 224053494956566916, guid: 2d019437ff89b8d44949727731cd9357, type: 3}
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerColor.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerColor.cs
index 83284a783e8..641a7b81040 100644
--- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerColor.cs
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerColor.cs
@@ -141,7 +141,7 @@ public override void OnAction()
valueToggle.isOn = !valueToggle.isOn;
}
- void UpdateColor()
+ internal void UpdateColor()
{
if (colorImage != null)
colorImage.color = m_Field.GetValue();
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs
new file mode 100644
index 00000000000..473eaa55554
--- /dev/null
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs
@@ -0,0 +1,81 @@
+using UnityEngine.UI;
+
+namespace UnityEngine.Rendering.UI
+{
+ ///
+ /// DebugUIHandler for row widget.
+ ///
+ public class DebugUIHandlerRow : DebugUIHandlerFoldout
+ {
+ float m_Timer;
+
+ ///
+ /// OnEnable implementation.
+ ///
+ protected override void OnEnable()
+ {
+ m_Timer = 0f;
+ }
+
+ ///
+ /// Update implementation.
+ ///
+ protected void Update()
+ {
+ var row = CastWidget();
+ var table = row.parent as DebugUI.Table;
+
+ float refreshRate = 0.1f;
+ bool refreshRow = m_Timer >= refreshRate;
+ if (refreshRow)
+ m_Timer -= refreshRate;
+ m_Timer += Time.deltaTime;
+
+ for (int i = 0; i < row.children.Count; i++)
+ {
+ var child = gameObject.transform.GetChild(1).GetChild(i).gameObject;
+ var active = table.GetColumnVisibility(i);
+ child.SetActive(active);
+ if (active && refreshRow)
+ {
+ if (child.TryGetComponent(out var color))
+ color.UpdateColor();
+ if (child.TryGetComponent(out var toggle))
+ toggle.UpdateValueLabel();
+ }
+ }
+
+ // Update previous and next ui handlers to pass over hidden volumes
+ var item = gameObject.transform.GetChild(1).GetChild(0).gameObject;
+ var itemWidget = item.GetComponent();
+ DebugUIHandlerWidget previous = null;
+ for (int i = 0; i < row.children.Count; i++)
+ {
+ itemWidget.previousUIHandler = previous;
+ if (table.GetColumnVisibility(i))
+ previous = itemWidget;
+
+ bool found = false;
+ for (int j = i + 1; j < row.children.Count; j++)
+ {
+ if (table.GetColumnVisibility(j))
+ {
+ var child = gameObject.transform.GetChild(1).GetChild(j).gameObject;
+ var childWidget = child.GetComponent();
+ itemWidget.nextUIHandler = childWidget;
+ item = child;
+ itemWidget = childWidget;
+ i = j - 1;
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ {
+ itemWidget.nextUIHandler = null;
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs.meta b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs.meta
new file mode 100644
index 00000000000..9a6c6a430a2
--- /dev/null
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRow.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4822e5675c12bf14d93b254d27ec8bd7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggle.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggle.cs
index 67b0fa4dac8..7feef12ef9f 100644
--- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggle.cs
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggle.cs
@@ -59,7 +59,7 @@ public override void OnAction()
///
/// Update the label.
///
- protected virtual void UpdateValueLabel()
+ internal protected virtual void UpdateValueLabel()
{
if (valueToggle != null)
valueToggle.isOn = m_Field.GetValue();
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggleHistory.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggleHistory.cs
index 217e290fea4..b2b2e5a499f 100644
--- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggleHistory.cs
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerToggleHistory.cs
@@ -36,7 +36,7 @@ internal override void SetWidget(DebugUI.Widget widget)
///
/// Update the label.
///
- protected override void UpdateValueLabel()
+ internal protected override void UpdateValueLabel()
{
base.UpdateValueLabel();
DebugUI.HistoryBoolField field = m_Field as DebugUI.HistoryBoolField;
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab
new file mode 100644
index 00000000000..e7db2990da6
--- /dev/null
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab
@@ -0,0 +1,545 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1117777935091328
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224404899962668226}
+ - component: {fileID: 222292134107675628}
+ - component: {fileID: 114934813895219466}
+ m_Layer: 5
+ m_Name: Arrow Closed
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224404899962668226
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1117777935091328}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 224398617048880834}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 11, y: 11}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &222292134107675628
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1117777935091328}
+ m_CullTransparentMesh: 0
+--- !u!114 &114934813895219466
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1117777935091328}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 7a0568d5e3330b84687e307992be3030, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1157130882260826
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224091637017424492}
+ - component: {fileID: 114246251359002098}
+ - component: {fileID: 114721609938004740}
+ - component: {fileID: 222580990534994246}
+ - component: {fileID: 114267363758275858}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &224091637017424492
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157130882260826}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 224053494956566916}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 590, y: -50}
+ m_SizeDelta: {x: 590, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &114246251359002098
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157130882260826}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 25
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 0
+ m_Spacing: 1
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &114721609938004740
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157130882260826}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalFit: 0
+ m_VerticalFit: 1
+--- !u!222 &222580990534994246
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157130882260826}
+ m_CullTransparentMesh: 0
+--- !u!114 &114267363758275858
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1157130882260826}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.2509804}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 127279d577f25ac4ea17dae3782e5074, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1675372956212332
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224861680556189892}
+ - component: {fileID: 222407094714348334}
+ - component: {fileID: 114534572167021932}
+ m_Layer: 5
+ m_Name: Arrow Opened
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &224861680556189892
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675372956212332}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 224398617048880834}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 11, y: 11}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &222407094714348334
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675372956212332}
+ m_CullTransparentMesh: 0
+--- !u!114 &114534572167021932
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1675372956212332}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: a674720496c1ed248a5b7ea3e22a11fd, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1741108581676328
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224398617048880834}
+ - component: {fileID: 114589844970474540}
+ m_Layer: 5
+ m_Name: Header
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224398617048880834
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1741108581676328}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 224861680556189892}
+ - {fileID: 224404899962668226}
+ - {fileID: 224133929923872250}
+ m_Father: {fileID: 224053494956566916}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 590, y: 26}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &114589844970474540
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1741108581676328}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e4786b5477cac0a42855b21fdaa2242f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 0
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 0}
+ toggleTransition: 0
+ graphic: {fileID: 0}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_IsOn: 0
+ content: {fileID: 1157130882260826}
+ arrowOpened: {fileID: 1675372956212332}
+ arrowClosed: {fileID: 1117777935091328}
+--- !u!1 &1880654171993120
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224053494956566916}
+ - component: {fileID: 114903677526224182}
+ - component: {fileID: 114617406789257194}
+ - component: {fileID: 114488953024160460}
+ - component: {fileID: 114624457690215086}
+ m_Layer: 0
+ m_Name: DebugUI Row
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224053494956566916
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880654171993120}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 224398617048880834}
+ - {fileID: 224091637017424492}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 295, y: 0}
+ m_SizeDelta: {x: 590, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &114903677526224182
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880654171993120}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 0
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &114617406789257194
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880654171993120}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalFit: 0
+ m_VerticalFit: 1
+--- !u!114 &114488953024160460
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880654171993120}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2bd470ffc0c0fe54faddbf8d466bf519, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ contentHolder: {fileID: 224091637017424492}
+--- !u!114 &114624457690215086
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1880654171993120}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4822e5675c12bf14d93b254d27ec8bd7, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ colorDefault: {r: 0.8, g: 0.8, b: 0.8, a: 1}
+ colorSelected: {r: 0.25, g: 0.65, b: 0.8, a: 1}
+ nameLabel: {fileID: 114398791307483412}
+ valueToggle: {fileID: 114589844970474540}
+--- !u!1 &1887383709356810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 224133929923872250}
+ - component: {fileID: 222546040197109316}
+ - component: {fileID: 114398791307483412}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &224133929923872250
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1887383709356810}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 224398617048880834}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 10, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &222546040197109316
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1887383709356810}
+ m_CullTransparentMesh: 0
+--- !u!114 &114398791307483412
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1887383709356810}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.8, g: 0.8, b: 0.8, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 12800000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3}
+ m_FontSize: 16
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 0
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Foldout
+
+'
diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab.meta b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab.meta
new file mode 100644
index 00000000000..cb1351582a1
--- /dev/null
+++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUI Row.prefab.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2d019437ff89b8d44949727731cd9357
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 100100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md
index 2a786a8694d..49a7e0de93b 100644
--- a/com.unity.render-pipelines.high-definition/CHANGELOG.md
+++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md
@@ -560,6 +560,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fix spelling and grammatical errors in material samples
- Fixed unneeded cookie texture allocation for cone stop lights.
- Fixed scalarization code for contact shadows.
+- Fixed volume debug in playmode
### Changed
- Improve MIP selection for decals on Transparents
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs
index d292bea79d2..34bc9598dba 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs
@@ -1267,11 +1267,17 @@ DebugUI.Widget makeWidget(string name, VolumeParameter param)
var inst = (VolumeComponent)ScriptableObject.CreateInstance(type);
// First row for volume info
+ float timer = 0.0f, refreshRate = 0.2f;
var row = new DebugUI.Table.Row()
{
displayName = "Volume Info",
children = { new DebugUI.Value() { displayName = "Interpolated Value",
getter = () => {
+ // This getter is called first at each render
+ // It is used to update the volumes
+ if (Time.time - timer < refreshRate)
+ return "";
+ timer = Time.deltaTime;
if (data.volumeDebugSettings.selectedCameraIndex != 0)
{
var newVolumes = data.volumeDebugSettings.GetVolumes();
@@ -1290,6 +1296,7 @@ DebugUI.Widget makeWidget(string name, VolumeParameter param)
}
} }
};
+ row.opened = true;
foreach (var volume in volumes)
{
diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/VolumeDebug.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/VolumeDebug.cs
index 42dbe8f99c8..9923bb4d42f 100644
--- a/com.unity.render-pipelines.high-definition/Runtime/Debug/VolumeDebug.cs
+++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/VolumeDebug.cs
@@ -100,7 +100,8 @@ public Vector3 selectedCameraPosition
if (anchor == null) // means the hdcamera has not been initialized
{
// So we have to update the stack manually
- anchor = cam.GetComponent().volumeAnchorOverride;
+ if (cam.TryGetComponent(out var data))
+ anchor = data.volumeAnchorOverride;
if (anchor == null) anchor = cam.transform;
var stack = selectedCameraVolumeStack;
if (stack != null)
@@ -134,7 +135,9 @@ static public List componentTypes
}
}
- /// List of Volume component types.
+ /// Returns the name of a component from its VolumeComponentMenu.
+ /// A volume component.
+ /// The component display name.
static public string ComponentDisplayName(Type component)
{
Attribute attrib = component.GetCustomAttribute(typeof(VolumeComponentMenu), false);
@@ -254,9 +257,14 @@ public Volume[] GetVolumes()
VolumeParameter[,] states = new VolumeParameter[volumes.Length, fields.Length];
for (int i = 0; i < volumes.Length; i++)
{
+ var profile = volumes[i].HasInstantiatedProfile() ? volumes[i].profile : volumes[i].sharedProfile;
+ if (!profile.TryGet(selectedComponentType, out VolumeComponent component))
+ continue;
+
for (int j = 0; j < fields.Length; j++)
{
- states[i, j] = GetParameter(volumes[i], fields[j]);
+ var param = GetParameter(component, fields[j]);;
+ states[i, j] = param.overrideState ? param : null;
}
}
return states;
@@ -294,7 +302,7 @@ public bool RefreshVolumes(Volume[] newVolumes)
var newStates = GetStates();
if (savedStates == null || ChangedStates(newStates))
{
- savedStates = (VolumeParameter[,])newStates.Clone();
+ savedStates = newStates;
ret = true;
}
}
@@ -306,7 +314,7 @@ public bool RefreshVolumes(Volume[] newVolumes)
return ret;
}
- /// Get the weight of a volume computed form the
+ /// Get the weight of a volume computed from the
/// The volume to compute weight for.
/// The weight of the volume.
public float GetVolumeWeight(Volume volume)
@@ -328,6 +336,9 @@ public float GetVolumeWeight(Volume volume)
return 0f;
}
+ /// Determines if a volume as an influence on the interpolated value
+ /// The volume.
+ /// True if the given volume as an influence.
public bool VolumeHasInfluence(Volume volume)
{
if (weights == null)