From b7df5c73728b02392c092e262a146847238c9fbe Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Wed, 7 Jan 2026 17:13:36 +0100 Subject: [PATCH] add Expression Presets for easy "frame remapping" --- src/core/Expressions/expressionpresets.cpp | 2 ++ src/core/Expressions/presets/frameRemapLoop.fexpr | 13 +++++++++++++ .../Expressions/presets/frameRemapLoopBounce.fexpr | 13 +++++++++++++ src/core/coreresources.qrc | 2 ++ 4 files changed, 30 insertions(+) create mode 100644 src/core/Expressions/presets/frameRemapLoop.fexpr create mode 100644 src/core/Expressions/presets/frameRemapLoopBounce.fexpr diff --git a/src/core/Expressions/expressionpresets.cpp b/src/core/Expressions/expressionpresets.cpp index dcf8c9059..de61d91be 100644 --- a/src/core/Expressions/expressionpresets.cpp +++ b/src/core/Expressions/expressionpresets.cpp @@ -372,6 +372,8 @@ void ExpressionPresets::firstRun() QStringList presets; presets << "copyX.fexpr"; presets << "copyY.fexpr"; + presets << "frameRemapLoop.fexpr"; + presets << "frameRemapLoopBounce.fexpr"; presets << "noise.fexpr"; presets << "orbitX.fexpr"; presets << "orbitY.fexpr"; diff --git a/src/core/Expressions/presets/frameRemapLoop.fexpr b/src/core/Expressions/presets/frameRemapLoop.fexpr new file mode 100644 index 000000000..3a885a2c8 --- /dev/null +++ b/src/core/Expressions/presets/frameRemapLoop.fexpr @@ -0,0 +1,13 @@ +[General] +author=pgilfernandez +bindings="frame = $frame;\n" +categories= +definitions= +description="Loop a linked scene with FRAME REMAPPING activated:\n1) create a scene you want to loop\n2) link that scene into another one\n3) select the linked scene object and choose FRAME REMAPPING\n4) select FRAME parameter and apply this preset to it\n5) change the LOOP_FPS value to your original loop scene size" +highlighters= +id=graphics.friction.frameRemapLoop +license= +script="loop_fps = 120; // change with your loop frame count\ntime = frame % loop_fps;\nreturn time" +title=Frame Remap Loop +url= +version=1 diff --git a/src/core/Expressions/presets/frameRemapLoopBounce.fexpr b/src/core/Expressions/presets/frameRemapLoopBounce.fexpr new file mode 100644 index 000000000..da26073b3 --- /dev/null +++ b/src/core/Expressions/presets/frameRemapLoopBounce.fexpr @@ -0,0 +1,13 @@ +[General] +author=pgilfernandez +bindings="frame = $frame;\n" +categories= +definitions= +description="Bounce loop a linked scene with FRAME REMAPPING activated:\n1) create a scene you want to loop\n2) link that scene into another one\n3) select the linked scene object and choose FRAME REMAPPING\n4) select FRAME parameter and apply this preset to it\n5) change the LOOP_FPS value to your original loop scene size" +highlighters= +id=graphics.friction.frameRemapLoopBounce +license= +script="loop_fps = 120; // change with your loop frame count\nperiod = loop_fps * 2;\nt = frame % period;\nreturn t < loop_fps ? t : (period - t);" +title=Frame Remap Loop (bounce) +url= +version=1 diff --git a/src/core/coreresources.qrc b/src/core/coreresources.qrc index fd0764dd2..86053b83a 100755 --- a/src/core/coreresources.qrc +++ b/src/core/coreresources.qrc @@ -26,6 +26,8 @@ Expressions/presets/lerp.fexpr Expressions/presets/copyX.fexpr Expressions/presets/copyY.fexpr + Expressions/presets/frameRemapLoop.fexpr + Expressions/presets/frameRemapLoopBounce.fexpr Expressions/presets/noise.fexpr Expressions/presets/orbitX.fexpr Expressions/presets/orbitY.fexpr