summaryrefslogtreecommitdiff
path: root/tools/timeline_editor/README.md
blob: aed140e5d007b746a02393b7f5b2c47aabe7167f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Timeline Editor

Interactive web-based editor for `demo.seq` timeline files.

## Features

✅ **Implemented:**
- 📂 Load/save `demo.seq` files
- 📊 Visual Gantt-style timeline
- 🎯 Drag & drop sequences along timeline
- 🎯 Drag & drop effects along timeline
- ⏱️ Edit timing (start/end times)
- ⚙️ Edit priorities
- ⚙️ Edit effect class names and constructor arguments
- 🔍 Zoom in/out (10% - 200%)
- 📋 Real-time statistics
- 🗑️ Delete sequences/effects
- ➕ Add new sequences

## Usage

1. **Open the editor:**
   ```bash
   open tools/timeline_editor/index.html
   ```
   Or double-click `index.html` in Finder.

2. **Load a timeline:**
   - Click "📂 Load demo.seq"
   - Select your `assets/demo.seq` file

3. **Edit the timeline:**
   - **Drag sequences/effects** to move them along the timeline
   - **Click an item** to select it and view properties
   - **Edit properties** in the panel below
   - **Click "Apply"** to save property changes

4. **Save your changes:**
   - Click "💾 Save demo.seq"
   - Choose where to save the modified file

5. **Zoom controls:**
   - Use the zoom slider to adjust timeline scale
   - Higher zoom = more pixels per second

## Keyboard Shortcuts

- **Delete key**: Delete selected item (when implemented)
- **Escape**: Deselect current item

## File Format

The editor parses and generates `.seq` files with this format:

```
SEQUENCE <start_time> <priority>
  EFFECT <ClassName> <start_time> <end_time> <priority> [args...]
  EFFECT <ClassName> <start_time> <end_time> <priority> [args...]
```

Example:
```
SEQUENCE 0.0 0
  EFFECT FlashEffect 0.0 1.0 0
  EFFECT FadeEffect 0.5 2.0 1

SEQUENCE 3.0 1
  EFFECT HeptagonEffect 0.0 0.5 0
```

## Color Coding

- **Blue boxes**: Sequences (container for effects)
- **Gray boxes**: Effects (visual elements)
- **Green highlight**: Selected sequence
- **Orange highlight**: Selected effect

## Tips

- **Sequences** have absolute start times
- **Effects** have start/end times **relative to their sequence**
- Priority determines rendering order (higher = rendered later = on top)
- Effect constructor arguments are passed as-is to the C++ code

## Limitations

- No preview rendering (this is intentional - it's just a timeline editor)
- No automatic overlap detection yet
- No undo/redo (coming soon)
- Cannot add effects to sequences (manually edit properties for now)

## Future Enhancements

- [ ] Undo/redo functionality
- [ ] Add effect button
- [ ] Overlap detection warnings
- [ ] Snap-to-grid
- [ ] Timeline playback indicator
- [ ] Multiple file comparison
- [ ] Export to different formats

## Technical Details

- Pure HTML/CSS/JavaScript (no dependencies)
- No backend required
- Works offline
- All processing happens in the browser
- Files are saved via browser download API

## Integration

After editing in the timeline editor:

1. Save the modified `demo.seq`
2. Copy it to `assets/demo.seq`
3. Rebuild the project: `cmake --build build`
4. The new timeline will be compiled into the demo

No code changes needed - the `seq_compiler` automatically processes the updated file.