Decorative Registry
The Decorative Registry tracks non-interactive background elements for scene persistence.
Overview
Decorative elements include:
- Generator outputs (sunburst, waves, etc.)
- Freehand drawings
- Background patterns
- Non-selectable visual elements
Why Decorative Registry?
- Decorative elements need recreation on scene load
- Generator outputs are procedural (params, not pixels)
- Separating decorative from interactive enables efficient scene switching
- Workers can regenerate decorative elements without blocking UI
Registering Elements
app.decorativeRegistry.register(item, 'sunburst', {
generator: 'drawSunburst',
params: { rayCount: 16, colors: ['#FF6B6B'] }
});
Entry Types
Generator Output
{
type: 'generator',
name: 'drawSunburst',
params: { rayCount: 16 }
}
Freehand Path
{
type: 'path',
segments: [[100, 100], [150, 120], ...],
strokeColor: '#FF0000',
strokeWidth: 5
}
Querying
// Get all decorative elements
const elements = app.decorativeRegistry.getAll();
// Get by type
const generators = app.decorativeRegistry.getByType('generator');
const paths = app.decorativeRegistry.getByType('path');
Regeneration
Rebuild decorative elements (e.g., after canvas resize):
await app.decorativeRegistry.regenerate();
Scene Integration
When saving/loading scenes:
// Export decorative state
const decorative = app.decorativeRegistry.exportForSave();
// Import decorative state
app.decorativeRegistry.importFromSave(decorative);
Cleanup
// Remove specific element
app.decorativeRegistry.remove(id);
// Clear all
app.decorativeRegistry.clear();
Difference from Item Registry
| Aspect | Item Registry | Decorative Registry |
|---|---|---|
| Selectable | Yes | No |
| Interactive | Yes | No |
| Persistence | JSON export | Params for regeneration |
| Examples | Text, shapes | Patterns, generators |