-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Remove SystemId and one-shot systems #24031
Copy link
Copy link
Closed as not planned
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-UsabilityA targeted quality-of-life change that makes Bevy easier to useA targeted quality-of-life change that makes Bevy easier to useD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!S-Needs-DesignThis issue requires design work to think about how it would best be accomplishedThis issue requires design work to think about how it would best be accomplishedX-Needs-SMEThis type of work requires an SME to approve it.This type of work requires an SME to approve it.
Metadata
Metadata
Assignees
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-UsabilityA targeted quality-of-life change that makes Bevy easier to useA targeted quality-of-life change that makes Bevy easier to useD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!S-Needs-DesignThis issue requires design work to think about how it would best be accomplishedThis issue requires design work to think about how it would best be accomplishedX-Needs-SMEThis type of work requires an SME to approve it.This type of work requires an SME to approve it.
Type
Projects
Status
Done
What problem does this solve or what need does it fill?
SystemIdwas introduced by #8963 to allow users to run one off systems outside of the usual schedules. However since the introduction of observers the need for them has become increasingly obsolete to my mind.The only advantage of registered systems over observers is that registered systems can: directly return a value (but only when using
World), take owned data as input, and you can filter which ones you're using via queries.Being able to return a value, while nice, doesn't feel any more useful for long term storage than simply making a change to the ecs that you were probably going to make down the line anyways.
Using owned inputs only really makes a difference if you're using constants, or if you're only using one system and the data can't be cloned.
However I'm not convinced that these benefits justify the api space over simply using observers
What solution would you like?
I am in favour of removing
SystemIdand all of it's associated methods entirely, however I know @chescock has their own thoughts on keepingrun_system_cachedso I'll let them state their case.Along with this I would suggest some method that allows observers to be selectively run.
But this may want to be hidden in some way to prevent new users from getting confused