diff options
| author | yum <yum.food.vr@gmail.com> | 2026-02-16 16:55:50 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2026-02-16 16:55:50 -0800 |
| commit | 0783345c23701149b807d2063410e329ba1fbed6 (patch) | |
| tree | d1ee5739255fa137af0dea647ef5c79325a0816d /Scripts | |
| parent | 864c2ba12dc864d9cb55cb797ba8919bee5b5913 (diff) | |
Fold: add translate node
Diffstat (limited to 'Scripts')
| -rwxr-xr-x | Scripts/Fold/Editor/FoldEditorWindow.cs | 23 | ||||
| -rwxr-xr-x | Scripts/Fold/Editor/FoldPipelineBuilder.cs | 12 |
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 |
