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,19 +22,15 @@ 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))
app.add_systems(First, record_login_packets.before(process_packet_events))
.add_systems(First, record_configuration_packets) .add_systems(First, record_configuration_packets)
.add_systems(First, record_game_packets.before(send_packet_events)); .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>>,
mut events: EventReader<LoginPacketEvent>,
) {
if let Some(mut recorder) = recorder {
for event in events.read() { for event in events.read() {
if recorder.should_ignore_compression if recorder.should_ignore_compression
&& let ClientboundLoginPacket::LoginCompression(_) = *event.packet && let ClientboundLoginPacket::LoginCompression(_) = *event.packet
@ -46,26 +42,21 @@ fn record_login_packets(
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) {