From 44fe949dab2b1c3a4f949b1711c88f52d8e9f2fc Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 6 Jan 2026 16:38:26 -0800 Subject: Fold: fix noodles --- Scripts/Fold/Editor/FoldGraphView.cs | 123 +++++------------------------------ 1 file changed, 15 insertions(+), 108 deletions(-) (limited to 'Scripts/Fold') diff --git a/Scripts/Fold/Editor/FoldGraphView.cs b/Scripts/Fold/Editor/FoldGraphView.cs index 3b0b295..947e6fa 100644 --- a/Scripts/Fold/Editor/FoldGraphView.cs +++ b/Scripts/Fold/Editor/FoldGraphView.cs @@ -163,39 +163,12 @@ public class AxisAlignNodeView : FoldOperationNodeView ppPort = AddPort(Direction.Input, Port.Capacity.Single, "pp", typeof(Vector4)); rPort = AddPort(Direction.Input, Port.Capacity.Single, "r", typeof(Vector4)); tPort = AddPort(Direction.Input, Port.Capacity.Single, "t", typeof(float)); - - mainContainer.Add(CreateVectorField("Origin", () => DataTyped.po, v => DataTyped.po = v)); - mainContainer.Add(CreateVectorField("Pivot", () => DataTyped.pp, v => DataTyped.pp = v)); - mainContainer.Add(CreateVectorField("Radial Axis", () => DataTyped.r, v => DataTyped.r = v)); - mainContainer.Add(CreateFloatField("Strength", () => DataTyped.t, v => DataTyped.t = v)); } public override FoldNodeSerialized Serialize() { return DataTyped.Serialize(graphView); } - - Vector4Field CreateVectorField(string label, Func getter, Action setter) - { - var field = new Vector4Field(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } - - FloatField CreateFloatField(string label, Func getter, Action setter) - { - var field = new FloatField(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } } public class PlaneToTubeNodeView : FoldOperationNodeView @@ -210,36 +183,9 @@ public class PlaneToTubeNodeView : FoldOperationNodeView AddPort(Direction.Input, Port.Capacity.Single, "r", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "s", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "t", typeof(float)); - - mainContainer.Add(CreateVectorField("Origin", () => DataTyped.p, v => DataTyped.p = v)); - mainContainer.Add(CreateVectorField("Radial Axis", () => DataTyped.r, v => DataTyped.r = v)); - mainContainer.Add(CreateVectorField("Tangent Axis", () => DataTyped.s, v => DataTyped.s = v)); - mainContainer.Add(CreateFloatField("Strength", () => DataTyped.t, v => DataTyped.t = v)); } public override FoldNodeSerialized Serialize() => DataTyped.Serialize(graphView); - - Vector4Field CreateVectorField(string label, Func getter, Action setter) - { - var field = new Vector4Field(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } - - FloatField CreateFloatField(string label, Func getter, Action setter) - { - var field = new FloatField(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } } public class PointAlignNodeView : FoldOperationNodeView @@ -254,36 +200,9 @@ public class PointAlignNodeView : FoldOperationNodeView AddPort(Direction.Input, Port.Capacity.Single, "pp", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "r", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "t", typeof(float)); - - mainContainer.Add(CreateVectorField("Origin", () => DataTyped.po, v => DataTyped.po = v)); - mainContainer.Add(CreateVectorField("Pivot", () => DataTyped.pp, v => DataTyped.pp = v)); - mainContainer.Add(CreateVectorField("Radial Axis", () => DataTyped.r, v => DataTyped.r = v)); - mainContainer.Add(CreateFloatField("Strength", () => DataTyped.t, v => DataTyped.t = v)); } public override FoldNodeSerialized Serialize() => DataTyped.Serialize(graphView); - - Vector4Field CreateVectorField(string label, Func getter, Action setter) - { - var field = new Vector4Field(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } - - FloatField CreateFloatField(string label, Func getter, Action setter) - { - var field = new FloatField(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } } public class TubeToPlaneNodeView : FoldOperationNodeView @@ -298,36 +217,9 @@ public class TubeToPlaneNodeView : FoldOperationNodeView AddPort(Direction.Input, Port.Capacity.Single, "r", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "s", typeof(Vector4)); AddPort(Direction.Input, Port.Capacity.Single, "t", typeof(float)); - - mainContainer.Add(CreateVectorField("Origin", () => DataTyped.p, v => DataTyped.p = v)); - mainContainer.Add(CreateVectorField("Radial Axis", () => DataTyped.r, v => DataTyped.r = v)); - mainContainer.Add(CreateVectorField("Tangent Axis", () => DataTyped.s, v => DataTyped.s = v)); - mainContainer.Add(CreateFloatField("Strength", () => DataTyped.t, v => DataTyped.t = v)); } public override FoldNodeSerialized Serialize() => DataTyped.Serialize(graphView); - - Vector4Field CreateVectorField(string label, Func getter, Action setter) - { - var field = new Vector4Field(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } - - FloatField CreateFloatField(string label, Func getter, Action setter) - { - var field = new FloatField(label) { value = getter() }; - field.RegisterValueChangedCallback(evt => - { - setter(evt.newValue); - graphView.MarkDirty(); - }); - return field; - } } public class KeyframeNodeView : FoldNodeView @@ -461,6 +353,21 @@ public class FoldGraphView : GraphView GridBackground gridBackground; + public override List GetCompatiblePorts(Port startPort, NodeAdapter nodeAdapter) + { + return ports.ToList().Where(p => + p.node != startPort.node && + p.direction != startPort.direction && + IsTypeCompatible(startPort.portType, p.portType)).ToList(); + } + + bool IsTypeCompatible(Type a, Type b) + { + if (a == null || b == null) + return true; + return a.IsAssignableFrom(b) || b.IsAssignableFrom(a); + } + GraphViewChange OnGraphViewChanged(GraphViewChange change) { if (suppressGraphChanges) -- cgit v1.2.3