diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-05 00:15:00 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-05 00:15:00 +0100 |
| commit | 873fa985bb4b3ec3841fa77adc16a99184cb9507 (patch) | |
| tree | de047f4045c81314327c20d85c00e552640874d2 /src/generated | |
| parent | 458b00d254f5e3b1fece6e57462769ce43c96a72 (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')
| -rw-r--r-- | src/generated/timeline.cc | 26 |
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); } } |
