Expand description
Live stream (<out>/live/stream/, format version 4): after every live event the composed display cloud (point keys and
the owner zone of every point) is diffed against what the viewer shows and only the changes are written. Every shown
point owns a dense u32 slot id assigned here, so the viewer writes straight into its GPU buffers at index = id.
packs/e_<seq:04>.bin (little endian, no header) holds three sections in this order: n_add records of 20 B
(u32 id | f32 x y z | u8 r g b | u8 zone), n_move records of 20 B (u32 id | f32 x y z | u8 r g b | u8 pad=0, new position and colour), n_remove records of
4 B (u32 id). manifest.json (rewritten atomically after every event) lists the events with their counts and capacity
(max id + 1 used so far). A key that stays keeps its id (moved when its position changed by more than POSITION_EPS or its colour changed);
a key that leaves frees its id; a new key takes the lowest free id or capacity++. An id freed in an event is not handed
out in the same event. A zone change is a remove plus an add with a new id. Files are never overwritten.
Re-exports§
pub use crate::live::KeyHasher;pub use crate::live::POSITION_EPS;
Structs§
- Diff
Stream - Writer of the live diff stream: a thin file writer over
KeyedDiff. - Event
Stats - What one
DiffStream::write_eventdid. - Heartbeat
- Progress heartbeat
<dir>/status.jsonof a running session (rewritten atomically; tiny). - Live
Stream - Live stream settings.
Constants§
- ADD_
BYTES - Bytes of an add record.
- FORMAT_
VERSION - Manifest format version.
- MOVE_
BYTES - Bytes of a move record.
- REMOVE_
BYTES - Bytes of a remove record.