summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-01-02 15:15:49 -0800
committeryum <yum.food.vr@gmail.com>2026-01-02 15:16:57 -0800
commit55ab58068067b2feca35e27ad18349f3597b1a3d (patch)
tree199f13cfa50588b9c0d44aef7511f73c99c766f3
parent1591d5d8eb702883460535d0d5968abf22433da5 (diff)
Fold: add Serialize() method to fold nodes
-rw-r--r--Scripts/Fold/Editor/BaseFoldNode.cs9
-rw-r--r--Scripts/Fold/Editor/FoldGraphView.cs11
-rw-r--r--Scripts/Fold/Editor/FoldNodeSerialized.cs15
-rw-r--r--Scripts/Fold/Editor/KeyframeNode.cs5
-rw-r--r--Scripts/Fold/Editor/KeyframeNodeView.cs2
-rw-r--r--Scripts/Fold/Editor/PointAlignNode.cs17
6 files changed, 48 insertions, 11 deletions
diff --git a/Scripts/Fold/Editor/BaseFoldNode.cs b/Scripts/Fold/Editor/BaseFoldNode.cs
index c779092..203a89a 100644
--- a/Scripts/Fold/Editor/BaseFoldNode.cs
+++ b/Scripts/Fold/Editor/BaseFoldNode.cs
@@ -1,4 +1,11 @@
using GraphProcessor;
-public class BaseFoldNode : BaseNode {}
+public abstract class BaseFoldNode : BaseNode
+{
+ [Input(name = "Input")]
+ public BaseFoldNode input;
+
+ // Generate a generic representation of the node. This is used for animation.
+ public abstract FoldNodeSerialized Serialize();
+}
diff --git a/Scripts/Fold/Editor/FoldGraphView.cs b/Scripts/Fold/Editor/FoldGraphView.cs
index f77e97b..b8911c1 100644
--- a/Scripts/Fold/Editor/FoldGraphView.cs
+++ b/Scripts/Fold/Editor/FoldGraphView.cs
@@ -11,8 +11,15 @@ public class FoldGraphView : BaseGraphView
public override IEnumerable<(string path, Type type)> FilterCreateNodeMenuEntries()
{
- return NodeProvider.GetNodeMenuEntries(graph)
- .Where(entry => typeof(BaseFoldNode).IsAssignableFrom(entry.type));
+ return NodeProvider.GetNodeMenuEntries(graph)
+ .Where(entry =>
+ typeof(BaseFoldNode).IsAssignableFrom(entry.type) ||
+ typeof(KeyframeNode).IsAssignableFrom(entry.type) ||
+ // Whitelist a few built in nodes that we use.
+ typeof(FloatNode).IsAssignableFrom(entry.type) ||
+ typeof(GameObjectNode).IsAssignableFrom(entry.type) ||
+ typeof(VectorNode).IsAssignableFrom(entry.type)
+ );
}
}
diff --git a/Scripts/Fold/Editor/FoldNodeSerialized.cs b/Scripts/Fold/Editor/FoldNodeSerialized.cs
new file mode 100644
index 0000000..4836811
--- /dev/null
+++ b/Scripts/Fold/Editor/FoldNodeSerialized.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+
+public class FoldNodeSerialized
+{
+ public float float0;
+ public float float1;
+ public float float2;
+ public float float3;
+
+ public Vector4 vec0;
+ public Vector4 vec1;
+ public Vector4 vec2;
+ public Vector4 vec3;
+};
+
diff --git a/Scripts/Fold/Editor/KeyframeNode.cs b/Scripts/Fold/Editor/KeyframeNode.cs
index d82bf51..7e4c828 100644
--- a/Scripts/Fold/Editor/KeyframeNode.cs
+++ b/Scripts/Fold/Editor/KeyframeNode.cs
@@ -11,5 +11,10 @@ public class KeyframeNode : BaseFoldNode
public BaseFoldNode foldData;
public override string name => "Keyframe";
+
+ public override FoldNodeSerialized Serialize()
+ {
+ return new FoldNodeSerialized();
+ }
}
diff --git a/Scripts/Fold/Editor/KeyframeNodeView.cs b/Scripts/Fold/Editor/KeyframeNodeView.cs
index f2530ec..fd90c75 100644
--- a/Scripts/Fold/Editor/KeyframeNodeView.cs
+++ b/Scripts/Fold/Editor/KeyframeNodeView.cs
@@ -58,4 +58,4 @@ public class KeyframeNodeView : BaseNodeView
generateButton.SetEnabled(hasGoConn && hasFoldConn && go?.GetComponent<MeshRenderer>() != null);
}
-} \ No newline at end of file
+}
diff --git a/Scripts/Fold/Editor/PointAlignNode.cs b/Scripts/Fold/Editor/PointAlignNode.cs
index d9f560f..7ab094b 100644
--- a/Scripts/Fold/Editor/PointAlignNode.cs
+++ b/Scripts/Fold/Editor/PointAlignNode.cs
@@ -4,15 +4,18 @@ using UnityEngine;
[System.Serializable, NodeMenuItem("Fold/PointAlign")]
public class PointAlignNode : BaseFoldNode
{
- [Input(name = "Input")]
- public BaseFoldNode input;
+ // Origin point.
+ [Input(name = "po")]
+ public Vector4 po;
- [Input(name = "po")]
- public float po;
+ [Output(name = "Out")]
+ public PointAlignNode output;
- [Output(name = "Out")]
- public PointAlignNode output;
+ public override string name => "Point Align";
- public override string name => "Point Align";
+ public override FoldNodeSerialized Serialize()
+ {
+ return new FoldNodeSerialized { vec0 = po };
+ }
}