12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.UIElements;
- using UnityEditor.Experimental.GraphView;
- using UnityEngine.UIElements;
- using GraphProcessor;
- using NodeGraphProcessor.Examples;
- [NodeCustomEditor(typeof(Comparison))]
- public class ComparisonView : BaseNodeView
- {
- public override void Enable()
- {
- Comparison comparisonNode = nodeTarget as Comparison;
- DrawDefaultInspector();
-
- var inputA = new FloatField("In A") { value = comparisonNode.inA };
- var inputB = new FloatField("In B") { value = comparisonNode.inB };
- inputA.RegisterValueChangedCallback(v => {
- owner.RegisterCompleteObjectUndo("Change InA value");
- comparisonNode.inA = v.newValue;
- });
- inputB.RegisterValueChangedCallback(v => {
- owner.RegisterCompleteObjectUndo("Change InB value");
- comparisonNode.inB = v.newValue;
- });
- nodeTarget.onAfterEdgeConnected += UpdateVisibleFields;
- nodeTarget.onAfterEdgeDisconnected += UpdateVisibleFields;
- UpdateVisibleFields(null);
- void UpdateVisibleFields(SerializableEdge _)
- {
- var inA = nodeTarget.GetPort(nameof(comparisonNode.inA), null);
- var inB = nodeTarget.GetPort(nameof(comparisonNode.inB), null);
- controlsContainer.Add(inputA);
- controlsContainer.Add(inputB);
- if (inA.GetEdges().Count > 0)
- controlsContainer.Remove(inputA);
- if (inB.GetEdges().Count > 0)
- controlsContainer.Remove(inputB);
- }
- }
- }
|