diff --git a/hardware/hardware_manager.cpp b/hardware/hardware_manager.cpp index a2443aa1..0254dce2 100644 --- a/hardware/hardware_manager.cpp +++ b/hardware/hardware_manager.cpp @@ -202,6 +202,9 @@ void hardware_link::update( double const Deltatime, state_snapshot const &Snapsh m_lastframeerrors = counters; m_session.add_frame_errors( delta ); + // the session answers a subscription with an immediate snapshot, so it needs the current state first + m_session.set_snapshot( Snapshot ); + for( auto const &packet : packets ) { m_session.handle_packet( packet ); diff --git a/hardware/protocol/protocol_session.h b/hardware/protocol/protocol_session.h index 04beee51..f46cf90b 100644 --- a/hardware/protocol/protocol_session.h +++ b/hardware/protocol/protocol_session.h @@ -49,6 +49,8 @@ public: void reset(); // consumes one decoded frame void handle_packet( decoded_packet const &Packet ); + // publishes the state of the current simulation frame, before the received frames are processed + void set_snapshot( state_snapshot const &Snapshot ) { m_snapshot = Snapshot; } // periodic work: heartbeats, subscription updates, timeouts void update( double const Deltatime, state_snapshot const &Snapshot ); // copies the current condition into the debug report