Skip to content

Commit 04789b4

Browse files
hymmRay Redondo
authored andcommitted
Move schedule name into Schedule (bevyengine#9600)
# Objective - Move schedule name into `Schedule` to allow the schedule name to be used for errors and tracing in Schedule methods - Fixes bevyengine#9510 ## Solution - Move label onto `Schedule` and adjust api's on `World` and `Schedule` to not pass explicit label where it makes sense to. - add name to errors and tracing. - `Schedule::new` now takes a label so either add the label or use `Schedule::default` which uses a default label. `default` is mostly used in doc examples and tests. --- ## Changelog - move label onto `Schedule` to improve error message and logging for schedules. ## Migration Guide `Schedule::new` and `App::add_schedule` ```rust // old let schedule = Schedule::new(); app.add_schedule(MyLabel, schedule); // new let schedule = Schedule::new(MyLabel); app.add_schedule(schedule); ``` if you aren't using a label and are using the schedule struct directly you can use the default constructor. ```rust // old let schedule = Schedule::new(); schedule.run(world); // new let schedule = Schedule::default(); schedule.run(world); ``` `Schedules:insert` ```rust // old let schedule = Schedule::new(); schedules.insert(MyLabel, schedule); // new let schedule = Schedule::new(MyLabel); schedules.insert(schedule); ``` `World::add_schedule` ```rust // old let schedule = Schedule::new(); world.add_schedule(MyLabel, schedule); // new let schedule = Schedule::new(MyLabel); world.add_schedule(schedule); ```
1 parent 196e575 commit 04789b4

File tree

23 files changed

+131
-116
lines changed

23 files changed

+131
-116
lines changed

benches/benches/bevy_ecs/components/archetype_updates.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct A<const N: u16>(f32);
77
fn setup(system_count: usize) -> (World, Schedule) {
88
let mut world = World::new();
99
fn empty() {}
10-
let mut schedule = Schedule::new();
10+
let mut schedule = Schedule::default();
1111
for _ in 0..system_count {
1212
schedule.add_systems(empty);
1313
}

benches/benches/bevy_ecs/empty_archetypes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fn par_for_each(
7777

7878
fn setup(parallel: bool, setup: impl FnOnce(&mut Schedule)) -> (World, Schedule) {
7979
let mut world = World::new();
80-
let mut schedule = Schedule::new();
80+
let mut schedule = Schedule::default();
8181
if parallel {
8282
world.insert_resource(ComputeTaskPool(TaskPool::default()));
8383
}

benches/benches/bevy_ecs/scheduling/run_condition.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub fn run_condition_yes(criterion: &mut Criterion) {
1818
group.measurement_time(std::time::Duration::from_secs(3));
1919
fn empty() {}
2020
for amount in 0..21 {
21-
let mut schedule = Schedule::new();
21+
let mut schedule = Schedule::default();
2222
schedule.add_systems(empty.run_if(yes));
2323
for _ in 0..amount {
2424
schedule.add_systems((empty, empty, empty, empty, empty).distributive_run_if(yes));
@@ -41,7 +41,7 @@ pub fn run_condition_no(criterion: &mut Criterion) {
4141
group.measurement_time(std::time::Duration::from_secs(3));
4242
fn empty() {}
4343
for amount in 0..21 {
44-
let mut schedule = Schedule::new();
44+
let mut schedule = Schedule::default();
4545
schedule.add_systems(empty.run_if(no));
4646
for _ in 0..amount {
4747
schedule.add_systems((empty, empty, empty, empty, empty).distributive_run_if(no));
@@ -71,7 +71,7 @@ pub fn run_condition_yes_with_query(criterion: &mut Criterion) {
7171
query.single().0
7272
}
7373
for amount in 0..21 {
74-
let mut schedule = Schedule::new();
74+
let mut schedule = Schedule::default();
7575
schedule.add_systems(empty.run_if(yes_with_query));
7676
for _ in 0..amount {
7777
schedule.add_systems(
@@ -100,7 +100,7 @@ pub fn run_condition_yes_with_resource(criterion: &mut Criterion) {
100100
res.0
101101
}
102102
for amount in 0..21 {
103-
let mut schedule = Schedule::new();
103+
let mut schedule = Schedule::default();
104104
schedule.add_systems(empty.run_if(yes_with_resource));
105105
for _ in 0..amount {
106106
schedule.add_systems(

benches/benches/bevy_ecs/scheduling/running_systems.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub fn empty_systems(criterion: &mut Criterion) {
2121
group.measurement_time(std::time::Duration::from_secs(3));
2222
fn empty() {}
2323
for amount in 0..5 {
24-
let mut schedule = Schedule::new();
24+
let mut schedule = Schedule::default();
2525
for _ in 0..amount {
2626
schedule.add_systems(empty);
2727
}
@@ -33,7 +33,7 @@ pub fn empty_systems(criterion: &mut Criterion) {
3333
});
3434
}
3535
for amount in 1..21 {
36-
let mut schedule = Schedule::new();
36+
let mut schedule = Schedule::default();
3737
for _ in 0..amount {
3838
schedule.add_systems((empty, empty, empty, empty, empty));
3939
}
@@ -73,7 +73,7 @@ pub fn busy_systems(criterion: &mut Criterion) {
7373
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0), C(0.0), D(0.0))));
7474
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0), C(0.0), E(0.0))));
7575
for system_amount in 0..5 {
76-
let mut schedule = Schedule::new();
76+
let mut schedule = Schedule::default();
7777
schedule.add_systems((ab, cd, ce));
7878
for _ in 0..system_amount {
7979
schedule.add_systems((ab, cd, ce));
@@ -124,7 +124,7 @@ pub fn contrived(criterion: &mut Criterion) {
124124
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0))));
125125
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (C(0.0), D(0.0))));
126126
for system_amount in 0..5 {
127-
let mut schedule = Schedule::new();
127+
let mut schedule = Schedule::default();
128128
schedule.add_systems((s_0, s_1, s_2));
129129
for _ in 0..system_amount {
130130
schedule.add_systems((s_0, s_1, s_2));

benches/benches/bevy_ecs/scheduling/schedule.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ pub fn schedule(c: &mut Criterion) {
4646

4747
world.spawn_batch((0..10000).map(|_| (A(0.0), B(0.0), C(0.0), E(0.0))));
4848

49-
let mut schedule = Schedule::new();
49+
let mut schedule = Schedule::default();
5050
schedule.add_systems((ab, cd, ce));
5151
schedule.run(&mut world);
5252

crates/bevy_app/src/app.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -384,9 +384,9 @@ impl App {
384384
if let Some(schedule) = schedules.get_mut(&schedule) {
385385
schedule.add_systems(systems);
386386
} else {
387-
let mut new_schedule = Schedule::new();
387+
let mut new_schedule = Schedule::new(schedule);
388388
new_schedule.add_systems(systems);
389-
schedules.insert(schedule, new_schedule);
389+
schedules.insert(new_schedule);
390390
}
391391

392392
self
@@ -403,9 +403,9 @@ impl App {
403403
if let Some(schedule) = schedules.get_mut(&schedule) {
404404
schedule.configure_set(set);
405405
} else {
406-
let mut new_schedule = Schedule::new();
406+
let mut new_schedule = Schedule::new(schedule);
407407
new_schedule.configure_set(set);
408-
schedules.insert(schedule, new_schedule);
408+
schedules.insert(new_schedule);
409409
}
410410
self
411411
}
@@ -421,9 +421,9 @@ impl App {
421421
if let Some(schedule) = schedules.get_mut(&schedule) {
422422
schedule.configure_sets(sets);
423423
} else {
424-
let mut new_schedule = Schedule::new();
424+
let mut new_schedule = Schedule::new(schedule);
425425
new_schedule.configure_sets(sets);
426-
schedules.insert(schedule, new_schedule);
426+
schedules.insert(new_schedule);
427427
}
428428
self
429429
}
@@ -798,9 +798,9 @@ impl App {
798798
/// # Warning
799799
/// This method will overwrite any existing schedule at that label.
800800
/// To avoid this behavior, use the `init_schedule` method instead.
801-
pub fn add_schedule(&mut self, label: impl ScheduleLabel, schedule: Schedule) -> &mut Self {
801+
pub fn add_schedule(&mut self, schedule: Schedule) -> &mut Self {
802802
let mut schedules = self.world.resource_mut::<Schedules>();
803-
schedules.insert(label, schedule);
803+
schedules.insert(schedule);
804804

805805
self
806806
}
@@ -811,7 +811,7 @@ impl App {
811811
pub fn init_schedule(&mut self, label: impl ScheduleLabel) -> &mut Self {
812812
let mut schedules = self.world.resource_mut::<Schedules>();
813813
if !schedules.contains(&label) {
814-
schedules.insert(label, Schedule::new());
814+
schedules.insert(Schedule::new(label));
815815
}
816816
self
817817
}
@@ -841,7 +841,7 @@ impl App {
841841
let mut schedules = self.world.resource_mut::<Schedules>();
842842

843843
if schedules.get(&label).is_none() {
844-
schedules.insert(label.dyn_clone(), Schedule::new());
844+
schedules.insert(Schedule::new(label.dyn_clone()));
845845
}
846846

847847
let schedule = schedules.get_mut(&label).unwrap();

crates/bevy_app/src/main_schedule.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,13 @@ pub struct MainSchedulePlugin;
161161
impl Plugin for MainSchedulePlugin {
162162
fn build(&self, app: &mut App) {
163163
// simple "facilitator" schedules benefit from simpler single threaded scheduling
164-
let mut main_schedule = Schedule::new();
164+
let mut main_schedule = Schedule::new(Main);
165165
main_schedule.set_executor_kind(ExecutorKind::SingleThreaded);
166-
let mut fixed_update_loop_schedule = Schedule::new();
166+
let mut fixed_update_loop_schedule = Schedule::new(RunFixedUpdateLoop);
167167
fixed_update_loop_schedule.set_executor_kind(ExecutorKind::SingleThreaded);
168168

169-
app.add_schedule(Main, main_schedule)
170-
.add_schedule(RunFixedUpdateLoop, fixed_update_loop_schedule)
169+
app.add_schedule(main_schedule)
170+
.add_schedule(fixed_update_loop_schedule)
171171
.init_resource::<MainScheduleOrder>()
172172
.add_systems(Main, Main::run_main);
173173
}

crates/bevy_ecs/src/change_detection.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ pub trait DetectChangesMut: DetectChanges {
149149
/// # score_changed.initialize(&mut world);
150150
/// # score_changed.run((), &mut world);
151151
/// #
152-
/// # let mut schedule = Schedule::new();
152+
/// # let mut schedule = Schedule::default();
153153
/// # schedule.add_systems(reset_score);
154154
/// #
155155
/// # // first time `reset_score` runs, the score is changed.
@@ -214,7 +214,7 @@ pub trait DetectChangesMut: DetectChanges {
214214
/// # score_changed_event.initialize(&mut world);
215215
/// # score_changed_event.run((), &mut world);
216216
/// #
217-
/// # let mut schedule = Schedule::new();
217+
/// # let mut schedule = Schedule::default();
218218
/// # schedule.add_systems(reset_score);
219219
/// #
220220
/// # // first time `reset_score` runs, the score is changed.

crates/bevy_ecs/src/event.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,7 @@ mod tests {
10341034
world.send_event(TestEvent { i: 3 });
10351035
world.send_event(TestEvent { i: 4 });
10361036

1037-
let mut schedule = Schedule::new();
1037+
let mut schedule = Schedule::default();
10381038
schedule.add_systems(|mut events: EventReader<TestEvent>| {
10391039
let mut iter = events.iter();
10401040

crates/bevy_ecs/src/query/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ mod tests {
789789
}
790790
}
791791

792-
let mut schedule = Schedule::new();
792+
let mut schedule = Schedule::default();
793793
schedule.add_systems((propagate_system, modify_system).chain());
794794
schedule.run(&mut world);
795795
world.clear_trackers();

0 commit comments

Comments
 (0)