public EnumControlView(ControlAttribute attribute, AbstractNode node, ReflectionProperty property) { var viewCont = new VisualElement(); viewCont.AddToClassList("ControlField"); if (!string.IsNullOrEmpty(attribute.label)) { viewCont.Add(new Label(attribute.label) { name = DefaultControlView.ControlLabelName }); } #if UNITY_EDITOR var enumField = new EnumField((Enum)property.GetValue(node)) { name = DefaultControlView.ValueFieldName }; enumField.OnValueChanged(e => { node.owner.owner.RegisterCompleteObjectUndo("Enum Change"); property.SetValue(node, e.newValue); node.Dirty(ModificationScope.Node); }); viewCont.Add(enumField); #endif Add(viewCont); }
private void OnKeyDown(KeyDownEvent e) { if (e.keyCode == KeyCode.Space) { if (m_Options.Count == 1) { SetValue(0); e.StopPropagation(); } } else if (e.keyCode == KeyCode.Return) { m_Property.SetValue(m_Node, m_TextField.value); m_FieldContainer.Focus(); m_OnTextSet?.Invoke(); m_Node.Dirty(ModificationScope.Node); } }
private BaseField <T> AddControl <T>(AbstractNode node, BaseField <T> field, ReflectionProperty property) { field.value = (T)property.GetValue(node); field.RegisterValueChangedCallback(e => { node.owner.owner.RegisterCompleteObjectUndo(typeof(T).Name + " Change"); property.SetValue(node, e.newValue); node.Dirty(ModificationScope.Node); }); return(field); }
public override VisualElement InstantiateControl(AbstractNode node, PropertyInfo property) { var container = new VisualElement(); container.AddToClassList("ControlField"); AddLabel(container); var textField = new TextField(){name = "value-field" }; textField.multiline = multiline; textField.value = (string)property.GetValue(node); textField.OnValueChanged(e => { node.owner.owner.RegisterCompleteObjectUndo(property.Name + " Changed"); property.SetValue(node,e.newValue); node.Dirty(ModificationScope.Node); }); container.Add(textField); return container; }
public override VisualElement InstantiateControl(AbstractNode node, PropertyInfo property) { var container = new VisualElement(); container.AddToClassList("ControlField"); AddLabel(container); var toggleField = new Toggle() { name = "value-field" }; toggleField.value = (bool)property.GetValue(node); toggleField.OnToggle(() => { node.owner.owner.RegisterCompleteObjectUndo(property.Name + " Changed"); property.SetValue(node, toggleField.value); node.Dirty(ModificationScope.Node); }); container.Add(toggleField); return(container); }
public DefaultControlView(DefaultControlAttribute attribute, AbstractNode node, ReflectionProperty property) { var viewCont = new VisualElement(); viewCont.AddToClassList("ControlField"); if (!string.IsNullOrEmpty(attribute.label)) { viewCont.Add(new Label(attribute.label) { name = ControlLabelName }); } var propertyType = property.PropertyType; if (propertyType == typeof(bool)) { var toggle = new Toggle() { name = ValueFieldName }; toggle.value = (bool)property.GetValue(node); toggle.RegisterValueChangedCallback((e) => { node.owner.owner.RegisterCompleteObjectUndo("Boolean Change"); property.SetValue(node, e.newValue); node.Dirty(ModificationScope.Node); }); viewCont.Add(toggle); } #if UNITY_EDITOR else if (propertyType == typeof(float)) { viewCont.Add(AddControl(node, new FloatField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(double)) { viewCont.Add(AddControl(node, new DoubleField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(int)) { viewCont.Add(AddControl(node, new IntegerField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(Color)) { viewCont.Add(AddControl(node, new ColorField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(Bounds)) { viewCont.Add(AddControl(node, new BoundsField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(Rect)) { viewCont.Add(AddControl(node, new RectField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(string)) { viewCont.Add(AddControl(node, new TextField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(Gradient)) { viewCont.Add(AddControl(node, new GradientField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(AnimationCurve)) { viewCont.Add(AddControl(node, new CurveField() { name = ValueFieldName }, property)); } else if (propertyType == typeof(Vector2)) { viewCont.Add(new MultiFloatSlotControlView(node, new[] { "x", "y" }, () => (Vector2)property.GetValue(node), v => property.SetValue(node, (Vector2)v)) { name = ValueFieldName }); } else if (propertyType == typeof(Vector3)) { viewCont.Add(new MultiFloatSlotControlView(node, new[] { "x", "y", "z" }, () => (Vector3)property.GetValue(node), v => property.SetValue(node, (Vector3)v)) { name = ValueFieldName }); } else if (propertyType == typeof(Vector4)) { viewCont.Add(new MultiFloatSlotControlView(node, new[] { "x", "y", "z", "w" }, () => (Vector4)property.GetValue(node), v => property.SetValue(node, v)) { name = ValueFieldName }); } else if (propertyType == typeof(Quaternion)) { viewCont.Add(new MultiFloatSlotControlView(node, new[] { "x", "y", "z" }, () => ((Quaternion)property.GetValue(node)).eulerAngles, v => property.SetValue(node, Quaternion.Euler(v))) { name = ValueFieldName }); } #endif if (viewCont.childCount > 0) { Add(viewCont); } }