Skip to content

Commit 9386bd0

Browse files
feature gate picking backends (#15369)
# Objective Fixes #15306 ## Solution - Add feature gate on the module and the place where each one is used - Declare the features and make them default ## Testing - CI
1 parent 58f6fa9 commit 9386bd0

File tree

6 files changed

+22
-7
lines changed

6 files changed

+22
-7
lines changed

Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ default = [
6868
"bevy_core_pipeline",
6969
"bevy_pbr",
7070
"bevy_picking",
71+
"bevy_sprite_picking_backend",
72+
"bevy_ui_picking_backend",
7173
"bevy_gltf",
7274
"bevy_render",
7375
"bevy_sprite",
@@ -87,6 +89,12 @@ default = [
8789
"sysinfo_plugin",
8890
]
8991

92+
# Provides an implementation for picking sprites
93+
bevy_sprite_picking_backend = ["bevy_picking"]
94+
95+
# Provides an implementation for picking ui
96+
bevy_ui_picking_backend = ["bevy_picking"]
97+
9098
# Force dynamic linking, which improves iterative compile times
9199
dynamic_linking = ["dep:bevy_dylib", "bevy_internal/dynamic_linking"]
92100

@@ -141,6 +149,7 @@ bevy_sprite = [
141149
"bevy_render",
142150
"bevy_core_pipeline",
143151
"bevy_color",
152+
"bevy_sprite_picking_backend",
144153
]
145154

146155
# Provides text functionality
@@ -153,6 +162,7 @@ bevy_ui = [
153162
"bevy_text",
154163
"bevy_sprite",
155164
"bevy_color",
165+
"bevy_ui_picking_backend",
156166
]
157167

158168
# winit window and input backend
@@ -3459,12 +3469,14 @@ wasm = true
34593469
name = "sprite_picking"
34603470
path = "examples/picking/sprite_picking.rs"
34613471
doc-scrape-examples = true
3472+
required-features = ["bevy_sprite_picking_backend"]
34623473

34633474
[package.metadata.example.sprite_picking]
34643475
name = "Sprite Picking"
34653476
description = "Demonstrates picking sprites and sprite atlases"
34663477
category = "Picking"
34673478
wasm = true
3479+
required-features = ["bevy_sprite_picking_backend"]
34683480

34693481
[[example]]
34703482
name = "animation_masks"

crates/bevy_sprite/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ license = "MIT OR Apache-2.0"
99
keywords = ["bevy"]
1010

1111
[features]
12-
bevy_picking = ["dep:bevy_picking", "dep:bevy_window"]
12+
default = ["bevy_sprite_picking_backend"]
13+
bevy_sprite_picking_backend = ["bevy_picking", "bevy_window"]
1314
webgl = []
1415
webgpu = []
1516

crates/bevy_sprite/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
mod bundle;
1212
mod dynamic_texture_atlas_builder;
1313
mod mesh2d;
14-
#[cfg(feature = "bevy_picking")]
14+
#[cfg(feature = "bevy_sprite_picking_backend")]
1515
mod picking_backend;
1616
mod render;
1717
mod sprite;
@@ -134,7 +134,7 @@ impl Plugin for SpritePlugin {
134134
),
135135
);
136136

137-
#[cfg(feature = "bevy_picking")]
137+
#[cfg(feature = "bevy_sprite_picking_backend")]
138138
app.add_plugins(picking_backend::SpritePickingBackend);
139139

140140
if let Some(render_app) = app.get_sub_app_mut(RenderApp) {

crates/bevy_ui/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ nonmax = "0.5"
4040
smallvec = "1.11"
4141

4242
[features]
43+
default = ["bevy_ui_picking_backend"]
4344
serialize = ["serde", "smallvec/serde", "bevy_math/serialize"]
44-
bevy_picking = ["dep:bevy_picking"]
45-
45+
bevy_ui_picking_backend = ["bevy_picking"]
4646

4747
[lints]
4848
workspace = true

crates/bevy_ui/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub mod ui_material;
1717
pub mod update;
1818
pub mod widget;
1919

20-
#[cfg(feature = "bevy_picking")]
20+
#[cfg(feature = "bevy_ui_picking_backend")]
2121
pub mod picking_backend;
2222

2323
use bevy_derive::{Deref, DerefMut};
@@ -194,7 +194,7 @@ impl Plugin for UiPlugin {
194194

195195
build_ui_render(app);
196196

197-
#[cfg(feature = "bevy_picking")]
197+
#[cfg(feature = "bevy_ui_picking_backend")]
198198
app.add_plugins(picking_backend::UiPickingBackend);
199199
}
200200

docs/cargo_features.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ The default feature set enables most of the expected features of a game engine,
2626
|bevy_render|Provides rendering functionality|
2727
|bevy_scene|Provides scene functionality|
2828
|bevy_sprite|Provides sprite functionality|
29+
|bevy_sprite_picking_backend|Provides an implementation for picking sprites|
2930
|bevy_state|Enable built in global state machines|
3031
|bevy_text|Provides text functionality|
3132
|bevy_ui|A custom ECS-driven UI framework|
33+
|bevy_ui_picking_backend|Provides an implementation for picking ui|
3234
|bevy_winit|winit window and input backend|
3335
|default_font|Include a default font, containing only ASCII characters, at the cost of a 20kB binary size increase|
3436
|hdr|HDR image format support|

0 commit comments

Comments
 (0)