ToneCurveNode() : base() { title = "Tone Curve"; AddInputPort <Vector4>("Color"); AddOutputPort <Vector4>("Color"); RefreshPorts(); m_RCurveField = new CurveField() { ranges = new Rect(0f, 0f, 1f, 1f) }; m_GCurveField = new CurveField() { ranges = new Rect(0f, 0f, 1f, 1f) }; m_BCurveField = new CurveField() { ranges = new Rect(0f, 0f, 1f, 1f) }; m_ACurveField = new CurveField() { ranges = new Rect(0f, 0f, 1f, 1f) }; m_GCurveField.SetEnabled(false); m_BCurveField.SetEnabled(false); m_RCurveField.OnValueChanged(e => m_GCurveField.value = e.newValue); m_RCurveField.OnValueChanged(e => m_BCurveField.value = e.newValue); extensionContainer.Add(m_RCurveField); extensionContainer.Add(m_GCurveField); extensionContainer.Add(m_BCurveField); extensionContainer.Add(m_ACurveField); RefreshExpandedState(); }
internal override void Apply(VisualElement container) { /// <sample> // Get a reference to the field from UXML and assign it its value. var uxmlField = container.Q <CurveField>("the-uxml-field"); uxmlField.value = new AnimationCurve(new Keyframe[] { new Keyframe(0, 0), new Keyframe(5, 8), new Keyframe(10, 4) }); // Create a new field, disable it, and give it a style class. var csharpField = new CurveField("C# Field"); csharpField.SetEnabled(false); csharpField.AddToClassList("some-styled-field"); csharpField.value = uxmlField.value; container.Add(csharpField); // Mirror value of uxml field into the C# field. uxmlField.RegisterCallback <ChangeEvent <AnimationCurve> >((evt) => { csharpField.value = evt.newValue; }); /// </sample> }