Add Disabled/Enabled state scoped components#24142
Conversation
|
Marked as X-Needs-SME because there's been some controversy around best practices with disabling components, and how effective our existing implementation is (query-matching observers would help a lot). I'm personally a bit reluctant to promote them further until that situation is improved. |
|
I understand the issues surrounding entity disabling, however I'm not certain why this pr is blocked on those issues since it doesn't touch on them. Merging this doesn't make fixing any of those issues any harder or easier. This is something I do need in order to refactor jackdaws ui and having to wait an entire release cycle to do so because of issues not affected by this pr is quite frustrating. |
|
The argument here is "attractive nuisance" and "this would make it harder to remove entity disabling because it breaks more users". I see your point though. |
alice-i-cecile
left a comment
There was a problem hiding this comment.
This is correctly implemented and useful. I'm going to approve and merge this, in the hopes that it will be an impetus for improving the underlying functionality.
Cherry-pick clean upstream changes from bevyengine/bevy through 15b23b4 while leaving the destructive rewritten full upstream range unmerged. Included upstream PRs: - bevyengine#22447: update intel_tex_2 for the mipmap generator example - bevyengine#23069: update getrandom dev dependency to 0.4 - bevyengine#24142: add Disabled/Enabled state-scoped components - bevyengine#22488: move window/input-focus/custom-cursor feature ownership out of default_app - bevyengine#24144: filter tuple fields when generating BSN props - bevyengine#24138: fix UI overflow clip margin resolution - bevyengine#24139: add Rect::translate - bevyengine#24146: use array_windows for fixed-size slice windows - bevyengine#21830: document physical-pixel viewport requirements Skipped CI-only cache/action bumps because they do not improve the engine or Fun runtime surface. Validation: git diff --cached --check; cargo fmt --check -p bevy_camera -p bevy_gizmos -p bevy_input_focus -p bevy_math -p bevy_mesh -p bevy_scene -p bevy_scene_macros -p bevy_state -p bevy_ui; cargo test -p bevy_math rect_translate --lib; cargo test -p bevy_ui overflow_clip_margin --lib; cargo test -p bevy_scene scene_component_name_reference --lib; cargo check -p bevy_camera -p bevy_gizmos -p bevy_input_focus -p bevy_math -p bevy_mesh -p bevy_scene -p bevy_state -p bevy_ui; cargo check -p bevy --no-default-features --features default_app; cargo check -p bevy --no-default-features --features ui_api; downstream cargo check -p fun_render; downstream cargo check -p game_client
Objective
Fixes #19087
Solution
Add
DisableWhenDisableOnEnterDisableOnExitEnableWhenEnableOnEnterEnableOnExitTesting
This is the exact same code copied over from
DespawnWhen/DespawnOnEnter/DespawnOnExit, so it should work. If tests are needed lmk and I'll add themShowcase