-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
adding a new system with only before and after dependencies can lead to hard to diagnose errors #7258
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
Comments
Agreed, I'd like both of these tools. |
Yep, both of these methods are useful. |
This will be fixed by #7466. |
not sure if this is completely fixed by #7466 from discord:
#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)]
struct AfterUpdate;
// ...
app.configure_set(AfterUpdate.after(CoreSet::UpdateFlush));
app.add_system(test.in_set(AfterUpdate));
// panics with SetsHaveOrderButIntersect("Update", "AfterUpdate") |
Cut from the milestone as we're nearing release. I'm not sure we can or should try to act on this further before gathering more feedback. |
This is fixed by #8079. The footgun doesn't exist anymore, since the schedule is always explicit. |
The |
Uh oh!
There was an error while loading. Please reload this page.
What problem does this solve or what need does it fill?
With stageless merged, doing something like this can lead to hard to a hard to fix error for beginners.
The way to fix this is to change it to
But this requires knowledge that the
transform_propagate
system is in the PostUpdate set. The only way you could know this is to either see this in some schedule debugger tool like bevy_mod_debug_dump or looking up the transform_propagate system in the source code.What solution would you like?
We can add a couple api's that would allow fixing this without knowledge of how a systems dependency is configured. These won't fix discovery of how to fix the problem, but will at least require less knowledge of how to configure it.
Allow the system to free float
Calling
no_default_set
would add the set to the schedule without a default set. This would allow the system to be only contrained by only the after constraint.Allow system to be added as a "sibling" of a set
in_sets_with
would inherit all the constraints that transform_propagation has. A discussion is probably worth having whether this is just the sets containing transform_propagation or also the run criteria and direct before and after constraints too.I think we want both of these as they have significantly different behavior.
What alternative(s) have you considered?
Better schedule visualization tools and good error message will help here too.
The text was updated successfully, but these errors were encountered: