Jump a ring or collection layer to a moment this many seconds behind the live head.
A lagged layer keeps following its lag from there, so a lag that varies carries on from the new moment. Layers fed by an image ignore it.
51{
53 return;
54 }
55
56 auto& target =
m_state->layers.at(layer);
57 if (!target.ring && !target.collection) {
58 return;
59 }
60
61 if (target.lag) {
62 const double elapsed = std::max(
63 static_cast<double>(
m_state->ticks) /
m_state->frame_rate - target.delay, 0.0);
64 target.lag_offset = seconds - (*target.lag)(elapsed);
65 } else if (target.ring) {
66 target.position = static_cast<double>(target.ring->get_write_head())
67 - seconds * target.ring->get_frame_rate();
68 target.entered = true;
69 } else {
70 const double rate = target.collection_rate > 0.0 ? target.collection_rate :
m_state->frame_rate;
71 target.position =
static_cast<double>(target.collection->get_write_head()) - seconds *
rate;
72 target.entered = true;
73 }
74}
std::shared_ptr< State > m_state