summaryrefslogtreecommitdiffstats
path: root/Scripts/Fold/Editor/FoldGraph.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Scripts/Fold/Editor/FoldGraph.cs')
-rw-r--r--Scripts/Fold/Editor/FoldGraph.cs152
1 files changed, 149 insertions, 3 deletions
diff --git a/Scripts/Fold/Editor/FoldGraph.cs b/Scripts/Fold/Editor/FoldGraph.cs
index f1fc290..ca985f4 100644
--- a/Scripts/Fold/Editor/FoldGraph.cs
+++ b/Scripts/Fold/Editor/FoldGraph.cs
@@ -1,5 +1,151 @@
+using System;
+using System.Collections.Generic;
using UnityEngine;
-using GraphProcessor;
-[System.Serializable]
-public class FoldGraph : BaseGraph {}
+[Serializable]
+public class FoldEdge
+{
+ public string outputNodeGuid;
+ public string outputPortName;
+ public string inputNodeGuid;
+ public string inputPortName;
+}
+
+[Serializable]
+public abstract class FoldNodeData
+{
+ public string guid = Guid.NewGuid().ToString();
+ public Vector2 position;
+ public virtual string Title => GetType().Name;
+}
+
+[Serializable]
+public abstract class FoldOperationData : FoldNodeData
+{
+ 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 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),
+ };
+ }
+}
+
+[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),
+ };
+ }
+}
+
+[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),
+ };
+ }
+}
+
+[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 class FoldGraph : ScriptableObject
+{
+ [SerializeReference] public List<FoldNodeData> nodes = new();
+ public List<FoldEdge> edges = new();
+}