Skip to content

Commit 0f23ccd

Browse files
committed
new behavior only applies if TimePlugin is installed
1 parent 62ba0c6 commit 0f23ccd

File tree

3 files changed

+16
-24
lines changed

3 files changed

+16
-24
lines changed

crates/bevy_app/src/app.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::{First, FixedUpdate, Main, MainSchedulePlugin, Plugin, Plugins, StateTransition};
22
pub use bevy_derive::AppLabel;
33
use bevy_ecs::{
4-
event::EventUpdateSignal,
54
prelude::*,
65
schedule::{
76
apply_state_transition, common_conditions::run_once as run_once_condition,
@@ -191,6 +190,8 @@ impl Default for App {
191190
app.init_resource::<AppTypeRegistry>();
192191

193192
app.add_plugins(MainSchedulePlugin);
193+
app.add_systems(FixedUpdate, bevy_ecs::event::event_queue_update_system);
194+
194195
app.add_event::<AppExit>();
195196

196197
#[cfg(feature = "bevy_ci_testing")]
@@ -486,18 +487,11 @@ impl App {
486487
T: Event,
487488
{
488489
if !self.world.contains_resource::<Events<T>>() {
489-
self.init_resource::<Events<T>>()
490-
.init_resource::<EventUpdateSignal<T>>()
491-
.add_systems(
492-
First,
493-
bevy_ecs::event::event_update_system::<T>
494-
.run_if(bevy_ecs::event::event_update_condition::<T>),
495-
)
496-
.add_systems(
497-
FixedUpdate,
498-
bevy_ecs::event::event_queue_update_system::<T>
499-
.run_if(bevy_ecs::event::event_update_condition::<T>),
500-
);
490+
self.init_resource::<Events<T>>().add_systems(
491+
First,
492+
bevy_ecs::event::event_update_system::<T>
493+
.run_if(bevy_ecs::event::event_update_condition::<T>),
494+
);
501495
}
502496
self
503497
}

crates/bevy_ecs/src/event.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -750,25 +750,19 @@ impl<'a, E: Event> ExactSizeIterator for EventIteratorWithId<'a, E> {
750750
}
751751

752752
#[doc(hidden)]
753-
#[derive(Resource)]
754-
pub struct EventUpdateSignal<T>(bool, PhantomData<T>);
755-
756-
impl<T> Default for EventUpdateSignal<T> {
757-
fn default() -> Self {
758-
Self(false, PhantomData)
759-
}
760-
}
753+
#[derive(Resource, Default)]
754+
pub struct EventUpdateSignal(bool);
761755

762756
/// A system that queues a call to [`Events::update`].
763-
pub fn event_queue_update_system<T: Event>(signal: Option<ResMut<EventUpdateSignal<T>>>) {
757+
pub fn event_queue_update_system(signal: Option<ResMut<EventUpdateSignal>>) {
764758
if let Some(mut s) = signal {
765759
s.0 = true;
766760
}
767761
}
768762

769763
/// A system that calls [`Events::update`].
770764
pub fn event_update_system<T: Event>(
771-
signal: Option<ResMut<EventUpdateSignal<T>>>,
765+
signal: Option<ResMut<EventUpdateSignal>>,
772766
mut events: ResMut<Events<T>>,
773767
) {
774768
if let Some(mut s) = signal {

crates/bevy_time/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ pub use time::*;
1919
pub use timer::*;
2020
pub use virt::*;
2121

22-
use bevy_ecs::system::{Res, ResMut};
22+
use bevy_ecs::{
23+
event::EventUpdateSignal,
24+
system::{Res, ResMut},
25+
};
2326
use bevy_utils::{tracing::warn, Duration, Instant};
2427
pub use crossbeam_channel::TrySendError;
2528
use crossbeam_channel::{Receiver, Sender};
@@ -49,6 +52,7 @@ impl Plugin for TimePlugin {
4952
.init_resource::<Time<Virtual>>()
5053
.init_resource::<Time<Fixed>>()
5154
.init_resource::<TimeUpdateStrategy>()
55+
.init_resource::<EventUpdateSignal>()
5256
.register_type::<Time>()
5357
.register_type::<Time<Real>>()
5458
.register_type::<Time<Virtual>>()

0 commit comments

Comments
 (0)