-
Notifications
You must be signed in to change notification settings - Fork 866
Expand file tree
/
Copy pathDebugUIHandlerObjectPopupField.cs
More file actions
79 lines (68 loc) · 2.09 KB
/
DebugUIHandlerObjectPopupField.cs
File metadata and controls
79 lines (68 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System.Linq;
namespace UnityEngine.Rendering.UI
{
/// <summary>
/// DebugUIHandler for object popup widget.
/// </summary>
public class DebugUIHandlerObjectPopupField : DebugUIHandlerField<DebugUI.ObjectPopupField>
{
int m_Index;
/// <summary>
/// Sets the widget and updates the label
/// </summary>
/// <param name="widget">The <see cref="DebugUI.Widget"/></param>
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.Length;
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();
}
/// <summary>
/// OnIncrement implementation.
/// </summary>
/// <param name="fast">True if incrementing fast.</param>
public override void OnIncrement(bool fast)
{
m_Index++;
ChangeSelectedObject();
}
/// <summary>
/// OnDecrement implementation.
/// </summary>
/// <param name="fast">Trye if decrementing fast.</param>
public override void OnDecrement(bool fast)
{
m_Index--;
ChangeSelectedObject();
}
/// <summary>
/// Update the label of the widget.
/// </summary>
public override void UpdateValueLabel()
{
var selectedObject = m_Field.GetValue();
string text = (selectedObject != null) ? selectedObject.name : "Empty";
SetLabelText(text);
}
}
}