3 namespace UnityEngine.Experimental.Rendering.UI
5 public class DebugUIHandlerVector4 : DebugUIHandlerWidget
8 public UIFoldout valueToggle;
10 public DebugUIHandlerIndirectFloatField fieldX;
11 public DebugUIHandlerIndirectFloatField fieldY;
12 public DebugUIHandlerIndirectFloatField fieldZ;
13 public DebugUIHandlerIndirectFloatField fieldW;
15 DebugUI.Vector4Field m_Field;
16 DebugUIHandlerContainer m_Container;
18 internal override void SetWidget(DebugUI.Widget widget)
20 base.SetWidget(widget);
21 m_Field = CastWidget<DebugUI.Vector4Field>();
22 m_Container = GetComponent<DebugUIHandlerContainer>();
23 nameLabel.text = m_Field.displayName;
25 fieldX.getter = () => m_Field.GetValue().x;
26 fieldX.setter = x => SetValue(x, x: true);
27 fieldX.nextUIHandler = fieldY;
28 SetupSettings(fieldX);
30 fieldY.getter = () => m_Field.GetValue().y;
31 fieldY.setter = x => SetValue(x, y: true);
32 fieldY.previousUIHandler = fieldX;
33 fieldY.nextUIHandler = fieldZ;
34 SetupSettings(fieldY);
36 fieldZ.getter = () => m_Field.GetValue().z;
37 fieldZ.setter = x => SetValue(x, z: true);
38 fieldZ.previousUIHandler = fieldY;
39 fieldZ.nextUIHandler = fieldW;
40 SetupSettings(fieldZ);
42 fieldW.getter = () => m_Field.GetValue().w;
43 fieldW.setter = x => SetValue(x, w: true);
44 fieldW.previousUIHandler = fieldZ;
45 SetupSettings(fieldW);
48 void SetValue(float v, bool x = false, bool y = false, bool z = false, bool w = false)
50 var vec = m_Field.GetValue();
55 m_Field.SetValue(vec);
58 void SetupSettings(DebugUIHandlerIndirectFloatField field)
60 field.parentUIHandler = this;
61 field.incStepGetter = () => m_Field.incStep;
62 field.incStepMultGetter = () => m_Field.incStepMult;
63 field.decimalsGetter = () => m_Field.decimals;
67 public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous)
69 if (fromNext || valueToggle.isOn == false)
71 nameLabel.color = colorSelected;
73 else if (valueToggle.isOn)
75 if (m_Container.IsDirectChild(previous))
77 nameLabel.color = colorSelected;
81 var lastItem = m_Container.GetLastItem();
82 DebugManager.instance.ChangeSelection(lastItem, false);
89 public override void OnDeselection()
91 nameLabel.color = colorDefault;
94 public override void OnIncrement(bool fast)
96 valueToggle.isOn = true;
99 public override void OnDecrement(bool fast)
101 valueToggle.isOn = false;
104 public override void OnAction()
106 valueToggle.isOn = !valueToggle.isOn;
109 public override DebugUIHandlerWidget Next()
111 if (!valueToggle.isOn || m_Container == null)
114 var firstChild = m_Container.GetFirstItem();
116 if (firstChild == null)