コード例 #1
0
        void BuildVector1PropertyView(Vector1ShaderProperty floatProperty)
        {
            VisualElement[] rows = null;

            switch (floatProperty.floatType)
            {
            case FloatType.Slider:
            {
                float min = Mathf.Min(floatProperty.value, floatProperty.rangeValues.x);
                float max = Mathf.Max(floatProperty.value, floatProperty.rangeValues.y);
                floatProperty.rangeValues = new Vector2(min, max);

                var defaultField = new FloatField {
                    value = floatProperty.value
                };
                var minField = new FloatField {
                    value = floatProperty.rangeValues.x
                };
                var maxField = new FloatField {
                    value = floatProperty.rangeValues.y
                };

                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        var value           = (float)evt.newValue;
                        floatProperty.value = value;
                        this.MarkDirtyRepaint();
                    });
                defaultField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        m_Graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        float minValue            = Mathf.Min(floatProperty.value, floatProperty.rangeValues.x);
                        float maxValue            = Mathf.Max(floatProperty.value, floatProperty.rangeValues.y);
                        floatProperty.rangeValues = new Vector2(minValue, maxValue);
                        minField.value            = minValue;
                        maxField.value            = maxValue;
                        DirtyNodes();
                    });
                minField.RegisterValueChangedCallback(evt =>
                    {
                        m_Graph.owner.RegisterCompleteObjectUndo("Change Range Property Minimum");
                        float newValue            = (float)evt.newValue;
                        floatProperty.rangeValues = new Vector2(newValue, floatProperty.rangeValues.y);
                        DirtyNodes();
                    });
                minField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        floatProperty.value = Mathf.Max(Mathf.Min(floatProperty.value, floatProperty.rangeValues.y), floatProperty.rangeValues.x);
                        defaultField.value  = floatProperty.value;
                        DirtyNodes();
                    });
                maxField.RegisterValueChangedCallback(evt =>
                    {
                        m_Graph.owner.RegisterCompleteObjectUndo("Change Range Property Maximum");
                        float newValue            = (float)evt.newValue;
                        floatProperty.rangeValues = new Vector2(floatProperty.rangeValues.x, newValue);
                        DirtyNodes();
                    });
                maxField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        floatProperty.value = Mathf.Max(Mathf.Min(floatProperty.value, floatProperty.rangeValues.y), floatProperty.rangeValues.x);
                        defaultField.value  = floatProperty.value;
                        DirtyNodes();
                    });
                rows    = new VisualElement[4];
                rows[0] = CreateRow("Default", defaultField);
                rows[2] = CreateRow("Min", minField);
                rows[3] = CreateRow("Max", maxField);
            }
            break;

            case FloatType.Integer:
            {
                floatProperty.value = (int)floatProperty.value;
                var defaultField = new IntegerField {
                    value = (int)floatProperty.value
                };
                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        m_Graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        var value           = (int)evt.newValue;
                        floatProperty.value = value;
                        DirtyNodes();
                    });
                rows    = new VisualElement[2];
                rows[0] = CreateRow("Default", defaultField);
            }
            break;

            default:
            {
                var defaultField = new FloatField {
                    value = floatProperty.value
                };
                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        m_Graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        var value           = (float)evt.newValue;
                        floatProperty.value = value;
                        DirtyNodes();
                    });
                rows    = new VisualElement[2];
                rows[0] = CreateRow("Default", defaultField);
            }
            break;
            }

            if (!m_Graph.isSubGraph)
            {
                var modeField = new EnumField(floatProperty.floatType);
                modeField.RegisterValueChangedCallback(evt =>
                {
                    m_Graph.owner.RegisterCompleteObjectUndo("Change Vector1 Mode");
                    var value = (FloatType)evt.newValue;
                    floatProperty.floatType = value;
                    if (rows != null)
                    {
                        RemoveElements(rows);
                    }
                    BuildVector1PropertyView(floatProperty);
                    this.MarkDirtyRepaint();
                });
                rows[1] = CreateRow("Mode", modeField);
            }

            if (rows == null)
            {
                return;
            }

            for (int i = 0; i < rows.Length; i++)
            {
                Add(rows[i]);
            }
        }
        void BuildVector1PropertyField(Vector1ShaderProperty property)
        {
            switch (property.floatType)
            {
            case FloatType.Slider:
            {
                float min = Mathf.Min(property.value, property.rangeValues.x);
                float max = Mathf.Max(property.value, property.rangeValues.y);
                property.rangeValues = new Vector2(min, max);

                var defaultField = new FloatField {
                    value = property.value
                };
                var minField = new FloatField {
                    value = property.rangeValues.x
                };
                var maxField = new FloatField {
                    value = property.rangeValues.y
                };

                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        property.value = (float)evt.newValue;
                        this.MarkDirtyRepaint();
                    });
                defaultField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        float minValue       = Mathf.Min(property.value, property.rangeValues.x);
                        float maxValue       = Mathf.Max(property.value, property.rangeValues.y);
                        property.rangeValues = new Vector2(minValue, maxValue);
                        minField.value       = minValue;
                        maxField.value       = maxValue;
                        DirtyNodes();
                    });
                minField.RegisterValueChangedCallback(evt =>
                    {
                        graph.owner.RegisterCompleteObjectUndo("Change Range Property Minimum");
                        property.rangeValues = new Vector2((float)evt.newValue, property.rangeValues.y);
                        DirtyNodes();
                    });
                minField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        property.value     = Mathf.Max(Mathf.Min(property.value, property.rangeValues.y), property.rangeValues.x);
                        defaultField.value = property.value;
                        DirtyNodes();
                    });
                maxField.RegisterValueChangedCallback(evt =>
                    {
                        graph.owner.RegisterCompleteObjectUndo("Change Range Property Maximum");
                        property.rangeValues = new Vector2(property.rangeValues.x, (float)evt.newValue);
                        DirtyNodes();
                    });
                maxField.Q("unity-text-input").RegisterCallback <FocusOutEvent>(evt =>
                    {
                        property.value     = Mathf.Max(Mathf.Min(property.value, property.rangeValues.y), property.rangeValues.x);
                        defaultField.value = property.value;
                        DirtyNodes();
                    });

                AddRow("Default", defaultField);
                AddRow("Min", minField);
                AddRow("Max", maxField);
            }
            break;

            case FloatType.Integer:
            {
                property.value = (int)property.value;
                var defaultField = new IntegerField {
                    value = (int)property.value
                };
                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        property.value = (int)evt.newValue;
                        DirtyNodes();
                    });
                AddRow("Default", defaultField);
            }
            break;

            default:
            {
                var defaultField = new FloatField {
                    value = property.value
                };
                defaultField.RegisterValueChangedCallback(evt =>
                    {
                        graph.owner.RegisterCompleteObjectUndo("Change Property Value");
                        property.value = (float)evt.newValue;
                        DirtyNodes();
                    });
                AddRow("Default", defaultField);
            }
            break;
            }

            if (!graph.isSubGraph)
            {
                var modeField = new EnumField(property.floatType);
                modeField.RegisterValueChangedCallback(evt =>
                {
                    graph.owner.RegisterCompleteObjectUndo("Change Vector1 Mode");
                    property.floatType = (FloatType)evt.newValue;
                    Rebuild();
                });
                AddRow("Mode", modeField);
            }
        }