summaryrefslogtreecommitdiff
path: root/src/generated/timeline.cc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-05 00:15:00 +0100
committerskal <pascal.massimino@gmail.com>2026-02-05 00:15:00 +0100
commit873fa985bb4b3ec3841fa77adc16a99184cb9507 (patch)
treede047f4045c81314327c20d85c00e552640874d2 /src/generated/timeline.cc
parent458b00d254f5e3b1fece6e57462769ce43c96a72 (diff)
feat: Replace explicit priorities with stack-based priority modifiers
Simplifies effect priority management by using relative modifiers instead of explicit numbers, making timeline reordering much more practical. ## New Priority System Effects now use priority modifiers after EFFECT keyword: - `+` increment priority by 1 (or start at 0 if first) - `=` keep same priority as previous effect - `-` decrement priority (or start at -1 if first, for background) Old syntax: ``` EFFECT FlashEffect 0.0 0.5 0 EFFECT FadeEffect 0.1 0.3 1 EFFECT BgCube 0.2 3 -1 ``` New syntax: ``` EFFECT - BgCube 0.2 3 # Priority -1 (background) EFFECT + FlashEffect 0.0 0.5 # Priority 0 EFFECT + FadeEffect 0.1 0.3 # Priority 1 ``` ## Benefits ✓ Reordering effects no longer requires renumbering all priorities ✓ Priority relationships are explicit and relative ✓ File order matches render order (easier to understand) ✓ Same-priority effects clearly marked with `=` ✓ Background layers (-1) clearly marked with `-` ✓ Reduces errors when reorganizing timelines ## Implementation - Updated seq_compiler to parse +/=/- modifiers - Tracks current priority per sequence - First effect sets base priority (0 or -1) - Subsequent effects modify relative to previous - Generated C++ code unchanged (still uses integer priorities) ## Changes to demo.seq - All effects updated to use new syntax - Effects reordered by priority within sequences - Priority gaps removed (were likely unintentional) - Comments updated to reflect new system ## Documentation - Updated SEQUENCE.md with new syntax - Added examples showing +, =, - usage - Explained priority calculation rules This makes timeline authoring significantly more maintainable, especially when experimenting with different effect orderings during development.
Diffstat (limited to 'src/generated/timeline.cc')
-rw-r--r--src/generated/timeline.cc26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/generated/timeline.cc b/src/generated/timeline.cc
index 381c403..0b69b09 100644
--- a/src/generated/timeline.cc
+++ b/src/generated/timeline.cc
@@ -12,35 +12,35 @@ void LoadTimeline(MainSequence& main_seq, WGPUDevice device, WGPUQueue queue, WG
seq->add_effect(std::make_shared<FlashCubeEffect>(device, queue, format), .2f, 1.500000f, -1);
seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.0f, 1.f, 0);
seq->add_effect(std::make_shared<FadeEffect>(device, queue, format), 0.1f, 1.f, 1);
- seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 2.000000f, 3);
+ seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 2.000000f, 2);
main_seq.add_sequence(seq, 0.000000f, 0);
}
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<FlashCubeEffect>(device, queue, format), 0.1f, 3.f, -1);
- seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.0f, 0.2f, 4);
+ seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.0f, 0.2f, 0);
main_seq.add_sequence(seq, 2.000000f, 0);
}
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<HeptagonEffect>(device, queue, format), 0.0f, .2f, 0);
- seq->add_effect(std::make_shared<FadeEffect>(device, queue, format), 0.1f, 1.0f, 5);
+ seq->add_effect(std::make_shared<FadeEffect>(device, queue, format), 0.1f, 1.0f, 1);
main_seq.add_sequence(seq, 3.500000f, 0);
}
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<ThemeModulationEffect>(device, queue, format), 0.000000f, 2.000000f, 0);
seq->add_effect(std::make_shared<HeptagonEffect>(device, queue, format), 0.000000f, 8.000000f, 1);
- seq->add_effect(std::make_shared<ChromaAberrationEffect>(device, queue, format), 0.000000f, 8.000000f, 3);
- seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 4);
+ seq->add_effect(std::make_shared<ChromaAberrationEffect>(device, queue, format), 0.000000f, 8.000000f, 2);
+ seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 3);
main_seq.add_sequence(seq, 16.000000f, 0);
}
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<ThemeModulationEffect>(device, queue, format), 0.000000f, 2.000000f, 0);
seq->add_effect(std::make_shared<HeptagonEffect>(device, queue, format), 0.2f, 2.0f, 1);
- seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 3);
- seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 1.000000f, 5);
+ seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 2);
+ seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 1.000000f, 3);
main_seq.add_sequence(seq, 24.000000f, 0);
}
{
@@ -56,13 +56,13 @@ void LoadTimeline(MainSequence& main_seq, WGPUDevice device, WGPUQueue queue, WG
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<ThemeModulationEffect>(device, queue, format), 0.000000f, 1.500000f, 0);
- seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 1.500000f, 5);
+ seq->add_effect(std::make_shared<SolarizeEffect>(device, queue, format), 0.000000f, 1.500000f, 1);
main_seq.add_sequence(seq, 31.000000f, 0);
}
{
auto seq = std::make_shared<Sequence>();
- seq->add_effect(std::make_shared<ParticlesEffect>(device, queue, format), 0.000000f, 2.000000f, 1);
- seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 1);
+ seq->add_effect(std::make_shared<ParticlesEffect>(device, queue, format), 0.000000f, 2.000000f, 0);
+ seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 0);
main_seq.add_sequence(seq, 3.000000f, 1);
}
{
@@ -110,9 +110,9 @@ void LoadTimeline(MainSequence& main_seq, WGPUDevice device, WGPUQueue queue, WG
{
auto seq = std::make_shared<Sequence>();
seq->add_effect(std::make_shared<FlashCubeEffect>(device, queue, format), .2f, 1.500000f, -1);
- seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 1);
- seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.0f, 0.2f, 4);
- seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.500000f, 0.2f, 4);
+ seq->add_effect(std::make_shared<GaussianBlurEffect>(device, queue, format), 0.000000f, 4.000000f, 0);
+ seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.0f, 0.2f, 1);
+ seq->add_effect(std::make_shared<FlashEffect>(device, queue, format), 0.500000f, 0.2f, 1);
main_seq.add_sequence(seq, 8.000000f, 10);
}
}