using System.Linq; namespace UnityEngine.Rendering.UI { /// /// DebugUIHandler for object popup widget. /// public class DebugUIHandlerObjectPopupField : DebugUIHandlerField { int m_Index; /// /// Sets the widget and updates the label /// /// The internal override void SetWidget(DebugUI.Widget widget) { base.SetWidget(widget); m_Index = 0; } private void ChangeSelectedObject() { if (m_Field == null) return; var elements = m_Field.getObjects(); if (elements == null) return; var elementsArray = elements.ToArray(); var count = elementsArray.Count(); if (m_Index >= count) { m_Index = 0; } else if (m_Index < 0) { m_Index = count - 1; } var newSelectedValue = elementsArray[m_Index]; m_Field.SetValue(newSelectedValue); UpdateValueLabel(); } /// /// OnIncrement implementation. /// /// True if incrementing fast. public override void OnIncrement(bool fast) { m_Index++; ChangeSelectedObject(); } /// /// OnDecrement implementation. /// /// Trye if decrementing fast. public override void OnDecrement(bool fast) { m_Index--; ChangeSelectedObject(); } /// /// Update the label of the widget. /// public override void UpdateValueLabel() { var selectedObject = m_Field.GetValue(); string text = (selectedObject != null) ? selectedObject.name : "Empty"; SetLabelText(text); } } }