public GradientSlotControlView(GradientInputMaterialSlot slot)
        {
            m_Slot = slot;
            AddStyleSheetPath("Styles/Controls/GradientSlotControlView");

            m_GradientObject          = ScriptableObject.CreateInstance <GradientObject>();
            m_GradientObject.gradient = new Gradient();
            m_SerializedObject        = new SerializedObject(m_GradientObject);

            m_GradientObject.gradient.SetKeys(m_Slot.value.colorKeys, m_Slot.value.alphaKeys);
            m_GradientObject.gradient.mode = m_Slot.value.mode;

            var gradientField = new GradientField()
            {
                value = m_GradientObject.gradient
            };

            gradientField.OnValueChanged(OnValueChanged);
            Add(gradientField);
        }
Exemplo n.º 2
0
        public GradientControlView(string label, AbstractMaterialNode node, PropertyInfo propertyInfo)
        {
            m_Node         = node;
            m_PropertyInfo = propertyInfo;
            AddStyleSheetPath("Styles/Controls/GradientControlView");

            if (propertyInfo.PropertyType != typeof(Gradient))
            {
                throw new ArgumentException("Property must be of type Gradient.", "propertyInfo");
            }
            new GUIContent(label ?? ObjectNames.NicifyVariableName(propertyInfo.Name));

            m_GradientObject          = ScriptableObject.CreateInstance <GradientObject>();
            m_GradientObject.gradient = new Gradient();
            m_SerializedObject        = new SerializedObject(m_GradientObject);

            var gradient = (Gradient)m_PropertyInfo.GetValue(m_Node, null);

            m_GradientObject.gradient.SetKeys(gradient.colorKeys, gradient.alphaKeys);
            m_GradientObject.gradient.mode = gradient.mode;

            var gradientPanel = new VisualElement {
                name = "gradientPanel"
            };

            if (!string.IsNullOrEmpty(label))
            {
                gradientPanel.Add(new Label(label));
            }

            var gradientField = new GradientField()
            {
                value = m_GradientObject.gradient
            };

            gradientField.OnValueChanged(OnValueChanged);
            gradientPanel.Add(gradientField);

            Add(gradientPanel);
        }