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);
}
}
}