-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Move schedule name into Schedule
#9600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
alice-i-cecile
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very straightforward, but extremely useful for diagnostics.
crates/bevy_ecs/src/world/mod.rs
Outdated
| let Some((_, mut schedule)) = self | ||
| .get_resource_mut::<Schedules>() | ||
| .and_then(|mut s| s.remove_entry(label)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should remove_entry still return the label?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if remove_entry has any use. We already have remove, so we should just delete remove_entry if it doesn't. It's slightly useful in that you can get the owned Boxed label for free, but not sure that's worth the added api.
I should switch to using remove here, since we're not using the label.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair enough. If #7762 gets merged then we should definitely get rid of remove_entry, since there'd be no benefit to keeping the schedule label.
joseph-gio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have one concern about docs, but otherwise LGTM.
| /// Creates a schedule with a default label. Only use in situations where | ||
| /// where you don't care about the [`ScheduleLabel`]. Inserting a default schedule | ||
| /// into the world risks overwriting another schedule. For most situations you should use | ||
| /// [`Schedule::new`]. | ||
| impl Default for Schedule { | ||
| fn default() -> Self { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will this documentation be visible to users?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be yes. I'll verify before merging though.
|
Looks like merge conflict-y issues: can you rebase and fix this up? |
|
@hymm CI is still failing: looks like another use of |
Head branch was pushed to by a user without write access
# Objective - Make the default docs more useful like suggested in #9600 (comment) ## Solution - Move the documentation to the `fn default()` method instead of the `impl Default`. Allows you to view the docs directly on the function without having to go to the implementation. ### Before  ### After 
# 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); ```
# Objective - Make the default docs more useful like suggested in bevyengine#9600 (comment) ## Solution - Move the documentation to the `fn default()` method instead of the `impl Default`. Allows you to view the docs directly on the function without having to go to the implementation. ### Before  ### After 
# Objective Fixes #11411 ## Solution - Added a simple example how to create and configure custom schedules that are run by the `Main` schedule. - Spot checked some of the API docs used, fixed `App::add_schedule` docs that referred to a function argument that was removed by #9600. ## Open Questions - While spot checking the docs, I noticed that the `Schedule` label is stored in a field called `name` instead of `label`. This seems unintuitive since the term label is used everywhere else. Should we change that field name? It was introduced in #9600. If so, I do think this change would be out of scope for this PR that mainly adds the example.
# Objective Fixes bevyengine#11411 ## Solution - Added a simple example how to create and configure custom schedules that are run by the `Main` schedule. - Spot checked some of the API docs used, fixed `App::add_schedule` docs that referred to a function argument that was removed by bevyengine#9600. ## Open Questions - While spot checking the docs, I noticed that the `Schedule` label is stored in a field called `name` instead of `label`. This seems unintuitive since the term label is used everywhere else. Should we change that field name? It was introduced in bevyengine#9600. If so, I do think this change would be out of scope for this PR that mainly adds the example.


Objective
Scheduleto allow the schedule name to be used for errors and tracing in Schedule methodsSolution
Scheduleand adjust api's onWorldandScheduleto not pass explicit label where it makes sense to.Schedule::newnow takes a label so either add the label or useSchedule::defaultwhich uses a default label.defaultis mostly used in doc examples and tests.Changelog
Scheduleto improve error message and logging for schedules.Migration Guide
Schedule::newandApp::add_scheduleif you aren't inserting the schedule into the world and are using the schedule directly you can use the default constructor which reuses a default label.
Schedules:insertWorld::add_schedule