A game about forced loneliness, made by TACStudios
at master 2.0 kB view raw
1using System; 2using UnityEditor.Graphing; 3using UnityEngine; 4using UnityEditor.ShaderGraph; 5using UnityEditor.ShaderGraph.Drawing.Controls; 6using Object = UnityEngine.Object; 7 8using UnityEditor.UIElements; 9using UnityEngine.UIElements; 10using UnityEngine.UIElements.StyleSheets; 11 12namespace UnityEditor.ShaderGraph.Drawing.Slots 13{ 14 class GradientSlotControlView : VisualElement 15 { 16 GradientInputMaterialSlot m_Slot; 17 18 [SerializeField] 19 GradientObject m_GradientObject; 20 21 [SerializeField] 22 SerializedObject m_SerializedObject; 23 24 public GradientSlotControlView(GradientInputMaterialSlot slot) 25 { 26 m_Slot = slot; 27 styleSheets.Add(Resources.Load<StyleSheet>("Styles/Controls/GradientSlotControlView")); 28 29 m_GradientObject = ScriptableObject.CreateInstance<GradientObject>(); 30 m_GradientObject.gradient = new Gradient(); 31 m_SerializedObject = new SerializedObject(m_GradientObject); 32 33 m_GradientObject.gradient.SetKeys(m_Slot.value.colorKeys, m_Slot.value.alphaKeys); 34 m_GradientObject.gradient.mode = m_Slot.value.mode; 35 36 var gradientField = new GradientField() { value = m_GradientObject.gradient, colorSpace = ColorSpace.Linear, hdr = true }; 37 gradientField.RegisterValueChangedCallback(OnValueChanged); 38 Add(gradientField); 39 } 40 41 void OnValueChanged(ChangeEvent<Gradient> evt) 42 { 43 m_SerializedObject.Update(); 44 if (!evt.newValue.Equals(m_Slot.value)) 45 { 46 m_Slot.owner.owner.owner.RegisterCompleteObjectUndo("Change Gradient"); 47 48 m_GradientObject.gradient.SetKeys(evt.newValue.colorKeys, evt.newValue.alphaKeys); 49 m_GradientObject.gradient.mode = evt.newValue.mode; 50 m_SerializedObject.ApplyModifiedProperties(); 51 52 m_Slot.value = m_GradientObject.gradient; 53 m_Slot.owner.Dirty(ModificationScope.Node); 54 } 55 } 56 } 57}