summaryrefslogtreecommitdiffstats
path: root/Scripts/Fold/Editor/FoldGraph.cs
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-01-06 18:18:05 -0800
committeryum <yum.food.vr@gmail.com>2026-01-06 18:18:05 -0800
commit317f8527bc1c0aedb234ecae331aeec18aeaf9bd (patch)
treebc44dc70287d856b7f4c5a732db3e8ebcb123f8e /Scripts/Fold/Editor/FoldGraph.cs
parentb1bfb0400c65b2602670bb22eea50a8b9db285a8 (diff)
Fold: big rewrite
Diffstat (limited to 'Scripts/Fold/Editor/FoldGraph.cs')
-rw-r--r--Scripts/Fold/Editor/FoldGraph.cs112
1 files changed, 14 insertions, 98 deletions
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