Ejemplo n.º 1
0
        static VisualElement BuildFieldEnumEditor(EnumConstantNodeModel enumConstant, Action <Enum> onNewEnumValue)
        {
            var enumEditor = new EnumField(enumConstant.EnumValue);

            enumEditor.RegisterValueChangedCallback(evt =>
            {
                onNewEnumValue(evt.newValue);
            });
            return(enumEditor);
        }
Ejemplo n.º 2
0
        public static VisualElement BuildEnumEditor(this IConstantEditorBuilder builder, EnumConstantNodeModel enumConstant)
        {
            void TriggerOnValueChange(Enum newEnumValue)
            {
                var oldValue = enumConstant.value;
                var newValue = enumConstant.value;

                newValue.Value = Convert.ToInt32(newEnumValue);
                builder.TriggerOnValueChanged(oldValue, newValue);
            }

            Type          enumType = enumConstant.EnumType.Resolve(enumConstant.GraphModel.Stencil);
            VisualElement editor   = enumType == typeof(KeyCode)
                ? BuildSearcherEnumEditor(enumConstant.EnumValue, enumType, TriggerOnValueChange)
                : BuildFieldEnumEditor(enumConstant, TriggerOnValueChange);

            editor.SetEnabled(!enumConstant.IsLocked);
            return(editor);
        }
Ejemplo n.º 3
0
        public static VisualElement BuildEnumEditor(this IConstantEditorBuilder builder, EnumConstantNodeModel enumConstant)
        {
            var enumEditor = new Button {
                text = enumConstant.EnumValue.ToString()
            };                                                                        // TODO use a bindable element

            enumEditor.clickable.clickedWithEventInfo += e =>
            {
                SearcherService.ShowEnumValues("Pick a value", enumConstant.EnumType.Resolve(enumConstant.GraphModel.Stencil), e.originalMousePosition, (v, i) =>
                {
                    enumConstant.value.Value = Convert.ToInt32(v);
                    enumEditor.text          = v.ToString();
                    builder.OnValueChanged?.Invoke(null);
                });
            };
            enumEditor.SetEnabled(!enumConstant.IsLocked);
            return(enumEditor);
        }