From 317f8527bc1c0aedb234ecae331aeec18aeaf9bd Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 6 Jan 2026 18:18:05 -0800 Subject: Fold: big rewrite --- Scripts/Fold/Editor/FoldGraph.cs | 112 +++++---------------------------------- 1 file changed, 14 insertions(+), 98 deletions(-) (limited to 'Scripts/Fold/Editor/FoldGraph.cs') diff --git a/Scripts/Fold/Editor/FoldGraph.cs b/Scripts/Fold/Editor/FoldGraph.cs index ca985f4..5782dc7 100644 --- a/Scripts/Fold/Editor/FoldGraph.cs +++ b/Scripts/Fold/Editor/FoldGraph.cs @@ -5,10 +5,7 @@ using UnityEngine; [Serializable] public class FoldEdge { - public string outputNodeGuid; - public string outputPortName; - public string inputNodeGuid; - public string inputPortName; + public string outputNodeGuid, outputPortName, inputNodeGuid, inputPortName; } [Serializable] @@ -22,126 +19,45 @@ public abstract class FoldNodeData [Serializable] public abstract class FoldOperationData : FoldNodeData { + public abstract IEnumerable<(string name, Type type)> GetInputPorts(); public abstract FoldNodeSerialized Serialize(FoldGraphView graphView); } -[Serializable] -public class FloatValueNodeData : FoldNodeData -{ - public float value; - public override string Title => "Float"; -} - -[Serializable] -public class VectorValueNodeData : FoldNodeData -{ - public Vector4 value; - public override string Title => "Vector"; -} - -[Serializable] -public class GameObjectNodeData : FoldNodeData -{ - public GameObject output; - public override string Title => "GameObject"; -} +[Serializable] public class FloatValueNodeData : FoldNodeData { public float value; public override string Title => "Float"; } +[Serializable] public class VectorValueNodeData : FoldNodeData { public Vector4 value; public override string Title => "Vector"; } +[Serializable] public class GameObjectNodeData : FoldNodeData { public GameObject output; public override string Title => "GameObject"; } +[Serializable] public class KeyframeNodeData : FoldNodeData { public override string Title => "Keyframe"; } [Serializable] public class AxisAlignNodeData : FoldOperationData { - public Vector4 po; - public Vector4 pp; - public Vector4 r; - public float t; - public override string Title => "Axis Align"; - - public override FoldNodeSerialized Serialize(FoldGraphView graphView) - { - return new FoldNodeSerialized - { - opcode = 4, - float0 = graphView.GetInputValue(guid, "t", t), - vec0 = graphView.GetInputValue(guid, "po", po), - vec1 = graphView.GetInputValue(guid, "pp", pp), - vec2 = graphView.GetInputValue(guid, "r", r), - }; - } + public override IEnumerable<(string, Type)> GetInputPorts() { yield return ("po", typeof(Vector4)); yield return ("pp", typeof(Vector4)); yield return ("r", typeof(Vector4)); yield return ("t", typeof(float)); } + public override FoldNodeSerialized Serialize(FoldGraphView gv) => new() { opcode = 4, float0 = gv.GetInputValue(guid, "t", 0f), vec0 = gv.GetInputValue(guid, "po", Vector4.zero), vec1 = gv.GetInputValue(guid, "pp", Vector4.zero), vec2 = gv.GetInputValue(guid, "r", Vector4.zero) }; } [Serializable] public class PlaneToTubeNodeData : FoldOperationData { - public Vector4 p; - public Vector4 r; - public Vector4 s; - public float t; - public override string Title => "Plane to Tube"; - - public override FoldNodeSerialized Serialize(FoldGraphView graphView) - { - return new FoldNodeSerialized - { - opcode = 2, - float0 = graphView.GetInputValue(guid, "t", t), - vec0 = graphView.GetInputValue(guid, "p", p), - vec1 = graphView.GetInputValue(guid, "r", r), - vec2 = graphView.GetInputValue(guid, "s", s), - }; - } + public override IEnumerable<(string, Type)> GetInputPorts() { yield return ("p", typeof(Vector4)); yield return ("r", typeof(Vector4)); yield return ("s", typeof(Vector4)); yield return ("t", typeof(float)); } + public override FoldNodeSerialized Serialize(FoldGraphView gv) => new() { opcode = 2, float0 = gv.GetInputValue(guid, "t", 0f), vec0 = gv.GetInputValue(guid, "p", Vector4.zero), vec1 = gv.GetInputValue(guid, "r", Vector4.zero), vec2 = gv.GetInputValue(guid, "s", Vector4.zero) }; } [Serializable] public class PointAlignNodeData : FoldOperationData { - public Vector4 po; - public Vector4 pp; - public Vector4 r; - public float t; - public override string Title => "Point Align"; - - public override FoldNodeSerialized Serialize(FoldGraphView graphView) - { - return new FoldNodeSerialized - { - opcode = 3, - float0 = graphView.GetInputValue(guid, "t", t), - vec0 = graphView.GetInputValue(guid, "po", po), - vec1 = graphView.GetInputValue(guid, "pp", pp), - vec2 = graphView.GetInputValue(guid, "r", r), - }; - } + public override IEnumerable<(string, Type)> GetInputPorts() { yield return ("po", typeof(Vector4)); yield return ("pp", typeof(Vector4)); yield return ("r", typeof(Vector4)); yield return ("t", typeof(float)); } + public override FoldNodeSerialized Serialize(FoldGraphView gv) => new() { opcode = 3, float0 = gv.GetInputValue(guid, "t", 0f), vec0 = gv.GetInputValue(guid, "po", Vector4.zero), vec1 = gv.GetInputValue(guid, "pp", Vector4.zero), vec2 = gv.GetInputValue(guid, "r", Vector4.zero) }; } [Serializable] public class TubeToPlaneNodeData : FoldOperationData { - public Vector4 p; - public Vector4 r; - public Vector4 s; - public float t; - public override string Title => "Tube to Plane"; - - public override FoldNodeSerialized Serialize(FoldGraphView graphView) - { - return new FoldNodeSerialized - { - opcode = 1, - float0 = graphView.GetInputValue(guid, "t", t), - vec0 = graphView.GetInputValue(guid, "p", p), - vec1 = graphView.GetInputValue(guid, "r", r), - vec2 = graphView.GetInputValue(guid, "s", s), - }; - } -} - -[Serializable] -public class KeyframeNodeData : FoldNodeData -{ - public override string Title => "Keyframe"; + public override IEnumerable<(string, Type)> GetInputPorts() { yield return ("p", typeof(Vector4)); yield return ("r", typeof(Vector4)); yield return ("s", typeof(Vector4)); yield return ("t", typeof(float)); } + public override FoldNodeSerialized Serialize(FoldGraphView gv) => new() { opcode = 1, float0 = gv.GetInputValue(guid, "t", 0f), vec0 = gv.GetInputValue(guid, "p", Vector4.zero), vec1 = gv.GetInputValue(guid, "r", Vector4.zero), vec2 = gv.GetInputValue(guid, "s", Vector4.zero) }; } public class FoldGraph : ScriptableObject -- cgit v1.2.3