perf(replay): only add systems if recorder exists

This commit is contained in:
Ryan 2025-03-11 17:40:55 -04:00
parent ca1162e99a
commit f77aea28d1
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3

View File

@ -22,50 +22,41 @@ pub struct RecordPlugin {
impl Plugin for RecordPlugin { impl Plugin for RecordPlugin {
fn build(&self, app: &mut bevy_app::App) { fn build(&self, app: &mut bevy_app::App) {
if let Some(recorder) = self.recorder.lock().take() { if let Some(recorder) = self.recorder.lock().take() {
app.insert_resource(recorder); app.insert_resource(recorder)
.add_systems(First, record_login_packets.before(process_packet_events))
.add_systems(First, record_configuration_packets)
.add_systems(First, record_game_packets.before(send_packet_events));
} }
app.add_systems(First, record_login_packets.before(process_packet_events))
.add_systems(First, record_configuration_packets)
.add_systems(First, record_game_packets.before(send_packet_events));
} }
} }
fn record_login_packets( fn record_login_packets(mut recorder: ResMut<Recorder>, mut events: EventReader<LoginPacketEvent>) {
recorder: Option<ResMut<Recorder>>, for event in events.read() {
mut events: EventReader<LoginPacketEvent>, if recorder.should_ignore_compression
) { && let ClientboundLoginPacket::LoginCompression(_) = *event.packet
if let Some(mut recorder) = recorder { {
for event in events.read() { continue;
if recorder.should_ignore_compression }
&& let ClientboundLoginPacket::LoginCompression(_) = *event.packet
{
continue;
}
if let Err(error) = recorder.save_packet(event.packet.as_ref()) { if let Err(error) = recorder.save_packet(event.packet.as_ref()) {
error!("failed to record login packet: {error:?}"); error!("failed to record login packet: {error:?}");
}
} }
} }
} }
fn record_configuration_packets( fn record_configuration_packets(
recorder: Option<ResMut<Recorder>>, mut recorder: ResMut<Recorder>,
mut events: EventReader<ConfigurationEvent>, mut events: EventReader<ConfigurationEvent>,
) { ) {
if let Some(mut recorder) = recorder { for event in events.read() {
for event in events.read() { if let Err(error) = recorder.save_packet(&event.packet) {
if let Err(error) = recorder.save_packet(&event.packet) { error!("failed to record configuration packet: {error:?}");
error!("failed to record configuration packet: {error:?}");
}
} }
} }
} }
fn record_game_packets(recorder: Option<ResMut<Recorder>>, query: Query<&RawConnection>) { fn record_game_packets(mut recorder: ResMut<Recorder>, query: Query<&RawConnection>) {
if let Some(mut recorder) = recorder for raw_conn in query.iter() {
&& let Ok(raw_conn) = query.get_single()
{
let queue = raw_conn.incoming_packet_queue(); let queue = raw_conn.incoming_packet_queue();
for raw_packet in queue.lock().iter() { for raw_packet in queue.lock().iter() {
if let Err(error) = recorder.save_raw_packet(raw_packet) { if let Err(error) = recorder.save_raw_packet(raw_packet) {