summaryrefslogtreecommitdiffstats
path: root/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Scripts')
-rwxr-xr-xScripts/Fold/Editor/FoldEditorWindow.cs23
-rwxr-xr-xScripts/Fold/Editor/FoldPipelineBuilder.cs12
2 files changed, 35 insertions, 0 deletions
diff --git a/Scripts/Fold/Editor/FoldEditorWindow.cs b/Scripts/Fold/Editor/FoldEditorWindow.cs
index b174b54..e2a94e1 100755
--- a/Scripts/Fold/Editor/FoldEditorWindow.cs
+++ b/Scripts/Fold/Editor/FoldEditorWindow.cs
@@ -210,6 +210,7 @@ public class FoldEditorWindow : EditorWindow
menu.AddItem(new GUIContent("Axis Align"), false, () => AddOperation(new AxisAlignOp()));
menu.AddSeparator("");
menu.AddItem(new GUIContent("Scale"), false, () => AddOperation(new ScaleOp()));
+ menu.AddItem(new GUIContent("Translate"), false, () => AddOperation(new TranslateOp()));
menu.AddItem(new GUIContent("Norm Conversion"), false, () => AddOperation(new NormConversionOp()));
menu.AddItem(new GUIContent("Seal"), false, () => AddOperation(new SealOp()));
menu.AddSeparator("");
@@ -272,6 +273,7 @@ public class FoldEditorWindow : EditorWindow
FoldPipelineBuilder.Opcodes.PlaneToHemiOctahedron => new PlaneToHemiOctahedronOp(slot),
FoldPipelineBuilder.Opcodes.HemiOctahedronToPlane => new HemiOctahedronToPlaneOp(slot),
FoldPipelineBuilder.Opcodes.Scale => new ScaleOp(slot),
+ FoldPipelineBuilder.Opcodes.Translate => new TranslateOp(slot),
FoldPipelineBuilder.Opcodes.PointAlign => new PointAlignOp(slot),
FoldPipelineBuilder.Opcodes.AxisAlign => new AxisAlignOp(slot),
FoldPipelineBuilder.Opcodes.NormConversion => new NormConversionOp(slot),
@@ -395,6 +397,27 @@ public class ScaleOp : DeformOperation
}
[System.Serializable]
+public class TranslateOp : DeformOperation
+{
+ public Vector3 offset = Vector3.zero;
+ public float t = 1f;
+
+ public TranslateOp() { }
+ public TranslateOp(FoldSlot slot) { offset = slot.vec0; t = slot.float0; }
+
+ public override string GetDisplayName() => "Translate";
+
+ public override void DrawParameters()
+ {
+ offset = EditorGUILayout.Vector3Field("Offset", offset);
+ t = EditorGUILayout.Slider("Interpolation (t)", t, 0f, 1f);
+ }
+
+ public override void ApplyTo(FoldPipelineBuilder builder) =>
+ builder.Translate(offset, t);
+}
+
+[System.Serializable]
public class HemiOctahedronToPlaneOp : DeformOperation
{
public Vector3 p = Vector3.zero;
diff --git a/Scripts/Fold/Editor/FoldPipelineBuilder.cs b/Scripts/Fold/Editor/FoldPipelineBuilder.cs
index 85a7a4f..2dc2291 100755
--- a/Scripts/Fold/Editor/FoldPipelineBuilder.cs
+++ b/Scripts/Fold/Editor/FoldPipelineBuilder.cs
@@ -59,6 +59,7 @@ public class FoldPipelineBuilder
public const int PlaneToHemiOctahedron = 9;
public const int HemiOctahedronToPlane = 10;
public const int Scale = 11;
+ public const int Translate = 12;
}
FoldPipelineBuilder() { }
@@ -121,6 +122,17 @@ public class FoldPipelineBuilder
return this;
}
+ public FoldPipelineBuilder Translate(Vector3 offset, float t)
+ {
+ slots.Add(new FoldSlot
+ {
+ opcode = Opcodes.Translate,
+ vec0 = offset,
+ float0 = t
+ });
+ return this;
+ }
+
public FoldPipelineBuilder HemiOctahedronToPlane(Vector3 p, Vector3 r, Vector3 s, float t)
{
slots.Add(new FoldSlot