void AddField(Vector4 initialValue, int index, string subLabel) { var dummy = new VisualElement { name = "dummy" }; var label = new Label(subLabel); dummy.Add(label); Add(dummy); var field = new IntegerField { userData = index, value = (int)initialValue[index] }; var dragger = new FieldMouseDragger <int>(field); dragger.SetDragZone(label); field.Q("unity-text-input").RegisterCallback <KeyDownEvent>(evt => { // Record Undo for input field edit if (m_UndoGroup == -1) { m_UndoGroup = Undo.GetCurrentGroup(); m_Node.owner.owner.RegisterCompleteObjectUndo("Change " + m_Node.name); } // Handle scaping input field edit if (evt.keyCode == KeyCode.Escape && m_UndoGroup > -1) { Undo.RevertAllDownToGroup(m_UndoGroup); m_UndoGroup = -1; evt.StopPropagation(); } // Dont record Undo again until input field is unfocused m_UndoGroup++; this.MarkDirtyRepaint(); }); // Called after KeyDownEvent field.RegisterValueChangedCallback(evt => { // Only true when setting value via FieldMouseDragger // Undo recorded once per dragger release if (m_UndoGroup == -1) { m_Node.owner.owner.RegisterCompleteObjectUndo("Change " + m_Node.name); } var value = m_Get(); if (value[index] != (float)evt.newValue) { value[index] = (float)evt.newValue; m_Set(value); m_Node.Dirty(ModificationScope.Node); } }); // Reset UndoGroup when done editing input field & update title field.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt => { m_Node.owner.owner.isDirty = true; m_UndoGroup = -1; }); Add(field); }
FloatField AddField(VisualElement panel, string label, int index, Vector3 initValiue) { var field = new FloatField { userData = index, value = initValiue[index] }; if (label != "") { var l = new Label(label); panel.Add(l); var dragger = new FieldMouseDragger <double>(field); dragger.SetDragZone(l); } field.RegisterCallback <MouseDownEvent>(Repaint); field.RegisterCallback <MouseMoveEvent>(Repaint); field.OnValueChanged(evt => { var value = (Vector3)m_PropertyInfo.GetValue(m_Node, null); value[index] = (float)evt.newValue; m_PropertyInfo.SetValue(m_Node, value, null); m_UndoGroup = -1; UpdateSlider(m_SliderPanel, index, value); this.MarkDirtyRepaint(); }); field.RegisterCallback <InputEvent>(evt => { if (m_UndoGroup == -1) { m_UndoGroup = Undo.GetCurrentGroup(); m_Node.owner.owner.RegisterCompleteObjectUndo("Change " + m_Node.name); } float newValue; if (!float.TryParse(evt.newData, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out newValue)) { newValue = 0f; } var value = (Vector3)m_PropertyInfo.GetValue(m_Node, null); value[index] = newValue; m_PropertyInfo.SetValue(m_Node, value, null); this.MarkDirtyRepaint(); }); field.RegisterCallback <KeyDownEvent>(evt => { if (evt.keyCode == KeyCode.Escape && m_UndoGroup > -1) { Undo.RevertAllDownToGroup(m_UndoGroup); m_UndoGroup = -1; m_Value = (Vector3)m_PropertyInfo.GetValue(m_Node, null); UpdateSlider(m_SliderPanel, index, m_Value); evt.StopPropagation(); } this.MarkDirtyRepaint(); }); panel.Add(field); return(field); }
void AddField(Vector4 initialValue, int index, string subLabel) { var dummy = new VisualElement { name = "dummy" }; var label = new Label(subLabel); dummy.Add(label); Add(dummy); var field = new FloatField { userData = index, value = initialValue[index] }; var dragger = new FieldMouseDragger <double>(field); dragger.SetDragZone(label); field.OnValueChanged(evt => { var value = m_Get(); value[index] = (float)evt.newValue; m_Set(value); m_Node.Dirty(ModificationScope.Node); m_UndoGroup = -1; }); field.RegisterCallback <InputEvent>(evt => { if (m_UndoGroup == -1) { m_UndoGroup = Undo.GetCurrentGroup(); m_Node.owner.owner.RegisterCompleteObjectUndo("Change " + m_Node.name); } float newValue; if (!float.TryParse(evt.newData, out newValue)) { newValue = 0f; } var value = m_Get(); if (Math.Abs(value[index] - newValue) > 1e-9) { value[index] = newValue; m_Set(value); m_Node.Dirty(ModificationScope.Node); } }); field.RegisterCallback <KeyDownEvent>(evt => { if (evt.keyCode == KeyCode.Escape && m_UndoGroup > -1) { Undo.RevertAllDownToGroup(m_UndoGroup); m_UndoGroup = -1; evt.StopPropagation(); } Dirty(ChangeType.Repaint); }); Add(field); }
void AddField(int index, string subLabel) { var dummy = new VisualElement { name = "dummy" }; var label = new Label(subLabel); dummy.Add(label); Add(dummy); var field = new FloatField { userData = index, value = m_Value[index] }; var dragger = new FieldMouseDragger <double>(field); dragger.SetDragZone(label); field.RegisterCallback <MouseDownEvent>(Repaint); field.RegisterCallback <MouseMoveEvent>(Repaint); field.OnValueChanged(evt => { var value = GetValue(); value[index] = (float)evt.newValue; SetValue(value); m_UndoGroup = -1; this.MarkDirtyRepaint(); }); field.RegisterCallback <InputEvent>(evt => { if (m_UndoGroup == -1) { m_UndoGroup = Undo.GetCurrentGroup(); m_Node.owner.owner.RegisterCompleteObjectUndo("Change " + m_Node.name); } float newValue; if (!float.TryParse(evt.newData, out newValue)) { newValue = 0f; } var value = GetValue(); value[index] = newValue; SetValue(value); this.MarkDirtyRepaint(); }); field.RegisterCallback <KeyDownEvent>(evt => { if (evt.keyCode == KeyCode.Escape && m_UndoGroup > -1) { Undo.RevertAllDownToGroup(m_UndoGroup); m_UndoGroup = -1; m_Value = GetValue(); evt.StopPropagation(); } this.MarkDirtyRepaint(); }); Add(field); }
void AddField(Vector4 initialValue, int index, string subLabel) { var dummy = new VisualElement { name = "dummy" }; var label = new Label(subLabel); dummy.Add(label); Add(dummy); var field = new FloatField { userData = index, value = initialValue[index] }; var dragger = new FieldMouseDragger <float>(field); dragger.SetDragZone(label); field.RegisterValueChangedCallback(evt => { var value = _get(); value[index] = (float)evt.newValue; _set(value); _nodeEditor.SetDirty(); _undoGroup = -1; }); field.RegisterCallback <InputEvent>(evt => { if (_undoGroup == -1) { _undoGroup = Undo.GetCurrentGroup(); _nodeEditor.Owner.LogicGraphEditorObject.RegisterCompleteObjectUndo("Change " + _nodeEditor.NodeType()); } if (!float.TryParse(evt.newData, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, out var newValue)) { newValue = 0f; } var value = _get(); if (Math.Abs(value[index] - newValue) > 1e-9) { value[index] = newValue; _set(value); _nodeEditor.SetDirty(); } }); field.RegisterCallback <KeyDownEvent>(evt => { if (evt.keyCode == KeyCode.Escape && _undoGroup > -1) { Undo.RevertAllDownToGroup(_undoGroup); _undoGroup = -1; evt.StopPropagation(); } MarkDirtyRepaint(); }); Add(field); }