4 namespace UnityEngine.Experimental.Rendering.UI
6 public class DebugUIHandlerEnumField : DebugUIHandlerWidget
9 public Text valueLabel;
10 protected DebugUI.EnumField m_Field;
12 internal override void SetWidget(DebugUI.Widget widget)
14 base.SetWidget(widget);
15 m_Field = CastWidget<DebugUI.EnumField>();
16 nameLabel.text = m_Field.displayName;
20 public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
22 nameLabel.color = colorSelected;
23 valueLabel.color = colorSelected;
27 public override void OnDeselection()
29 nameLabel.color = colorDefault;
30 valueLabel.color = colorDefault;
33 public override void OnAction()
38 public override void OnIncrement(bool fast)
40 if (m_Field.enumValues.Length == 0)
43 var array = m_Field.enumValues;
44 int index = m_Field.currentIndex;
46 if (index == array.Length - 1)
54 //check if quickSeparators have not been constructed
55 //it is the case when not constructed with autoenum
56 var separators = m_Field.quickSeparators;
57 if(separators == null)
59 m_Field.InitQuickSeparators();
60 separators = m_Field.quickSeparators;
64 for (; idxSup < separators.Length && index + 1 > separators[idxSup]; ++idxSup) ;
65 if(idxSup == separators.Length)
71 index = separators[idxSup];
80 m_Field.SetValue(array[index]);
81 m_Field.currentIndex = index;
85 public override void OnDecrement(bool fast)
87 if (m_Field.enumValues.Length == 0)
90 var array = m_Field.enumValues;
91 int index = m_Field.currentIndex;
97 //check if quickSeparators have not been constructed
98 //it is thecase when not constructed with autoenum
99 var separators = m_Field.quickSeparators;
100 if (separators == null)
102 m_Field.InitQuickSeparators();
103 separators = m_Field.quickSeparators;
106 index = separators[separators.Length - 1];
110 index = array.Length - 1;
117 //check if quickSeparators have not been constructed
118 //it is the case when not constructed with autoenum
119 var separators = m_Field.quickSeparators;
120 if (separators == null)
122 m_Field.InitQuickSeparators();
123 separators = m_Field.quickSeparators;
126 int idxInf = separators.Length - 1;
127 for (; idxInf > 0 && index <= separators[idxInf]; --idxInf) ;
128 index = separators[idxInf];
136 m_Field.SetValue(array[index]);
137 m_Field.currentIndex = index;
141 protected virtual void UpdateValueLabel()
143 int index = m_Field.currentIndex;
145 // Fallback just in case, we may be handling sub/sectionned enums here
149 valueLabel.text = "< " + m_Field.enumNames[index].text + " >";