Skip to content

Commit 591bfdd

Browse files
Reset events metadata when drained
Required to ensure Event readers continue functioning correctly
1 parent e0b64fd commit 591bfdd

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

crates/bevy_ecs/src/event.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,13 @@ impl<T: Component> Events<T> {
218218
BufferState::B => self.events_a.drain(..).chain(self.events_b.drain(..)),
219219
};
220220

221+
// We must reset these values to 0 as all events have been drained
222+
self.a_start_event_count = 0;
223+
self.b_start_event_count = 0;
224+
self.event_count = 0;
225+
// Reset to A for consistency with Self::default()
226+
self.state = BufferState::A;
227+
221228
event_instances.map(|instance| {
222229
trace!("Events::drain_with_id -> {}", instance.event_id);
223230
(instance.event, instance.event_id)

examples/ecs/event_consumer.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ fn event_trigger_system(time: Res<Time>, mut my_events: EventWriter<MyEvent>) {
5151
}
5252

5353
// reads events as soon as they come in
54-
// FIXME: stops responding after the first time events are consumed
5554
fn event_listener_system(mut events: EventReader<MyEvent>) {
5655
for _ in events.iter() {
5756
info!("I heard an event!");

0 commit comments

Comments
 (0)