1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
using System;
using System.Collections.Generic;
using UnityEngine;
[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();
}
|