using UnityEngine; using UnityEditor.Experimental.GraphView; using UnityEngine.UIElements; namespace UnityEditor.ShaderGraph.Drawing { class GradientEdge : Edge { readonly CustomStyleProperty k_InputColorProperty = new CustomStyleProperty("--edge-input-color"); readonly CustomStyleProperty k_OutputColorProperty = new CustomStyleProperty("--edge-output-color"); Color m_InputColor; Color m_OutputColor; public Color inputColor { get { return m_InputColor; } } public Color outputColor { get { return m_OutputColor; } } public GradientEdge() { m_InputColor = defaultColor; m_OutputColor = defaultColor; RegisterCallback(OnCustomStyleResolved); } public void UpdateClasses(ConcreteSlotValueType outputType, ConcreteSlotValueType inputType) { ClearClassList(); AddToClassList("edge"); AddToClassList("from" + outputType); AddToClassList("to" + inputType); } private void OnCustomStyleResolved(CustomStyleResolvedEvent e) { Color inputValue; Color outputValue; ICustomStyle styles = e.customStyle; if (styles.TryGetValue(k_InputColorProperty, out inputValue)) m_InputColor = inputValue; if (styles.TryGetValue(k_OutputColorProperty, out outputValue)) m_OutputColor = outputValue; } } }