From 0783345c23701149b807d2063410e329ba1fbed6 Mon Sep 17 00:00:00 2001 From: yum Date: Mon, 16 Feb 2026 16:55:50 -0800 Subject: Fold: add translate node --- Scripts/Fold/Editor/FoldEditorWindow.cs | 23 +++++++++++++++++++++++ Scripts/Fold/Editor/FoldPipelineBuilder.cs | 12 ++++++++++++ 2 files changed, 35 insertions(+) (limited to 'Scripts') 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), @@ -394,6 +396,27 @@ public class ScaleOp : DeformOperation builder.Scale(k, t); } +[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 { 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 -- cgit v1.2.3