Skip to content

Commit 60e4318

Browse files
committed
new behavior only applies if TimePlugin is installed
1 parent 7ebe350 commit 60e4318

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,
@@ -184,6 +183,8 @@ impl Default for App {
184183
app.init_resource::<AppTypeRegistry>();
185184

186185
app.add_plugins(MainSchedulePlugin);
186+
app.add_systems(FixedUpdate, bevy_ecs::event::event_queue_update_system);
187+
187188
app.add_event::<AppExit>();
188189

189190
#[cfg(feature = "bevy_ci_testing")]
@@ -448,18 +449,11 @@ impl App {
448449
T: Event,
449450
{
450451
if !self.world.contains_resource::<Events<T>>() {
451-
self.init_resource::<Events<T>>()
452-
.init_resource::<EventUpdateSignal<T>>()
453-
.add_systems(
454-
First,
455-
bevy_ecs::event::event_update_system::<T>
456-
.run_if(bevy_ecs::event::event_update_condition::<T>),
457-
)
458-
.add_systems(
459-
FixedUpdate,
460-
bevy_ecs::event::event_queue_update_system::<T>
461-
.run_if(bevy_ecs::event::event_update_condition::<T>),
462-
);
452+
self.init_resource::<Events<T>>().add_systems(
453+
First,
454+
bevy_ecs::event::event_update_system::<T>
455+
.run_if(bevy_ecs::event::event_update_condition::<T>),
456+
);
463457
}
464458
self
465459
}

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
@@ -15,7 +15,10 @@ pub use stopwatch::*;
1515
pub use time::*;
1616
pub use timer::*;
1717

18-
use bevy_ecs::system::{Res, ResMut};
18+
use bevy_ecs::{
19+
event::EventUpdateSignal,
20+
system::{Res, ResMut},
21+
};
1922
use bevy_utils::{tracing::warn, Duration, Instant};
2023
pub use crossbeam_channel::TrySendError;
2124
use crossbeam_channel::{Receiver, Sender};
@@ -48,6 +51,7 @@ impl Plugin for TimePlugin {
4851
.register_type::<Time>()
4952
.register_type::<Stopwatch>()
5053
.init_resource::<FixedTime>()
54+
.init_resource::<EventUpdateSignal>()
5155
.add_systems(First, time_system.in_set(TimeSystem))
5256
.add_systems(RunFixedUpdateLoop, run_fixed_update_schedule);
5357

0 commit comments

Comments
 (0)