Skip to content

Commit 95c5bea

Browse files
committed
Update to Bevy 0.16 RC 3
1 parent 8fd737a commit 95c5bea

32 files changed

+106
-89
lines changed

Cargo.toml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bevy_enhanced_input"
3-
version = "0.9.0"
3+
version = "0.10.0-rc.3"
44
authors = ["Hennadii Chernyshchyk <[email protected]>"]
55
edition = "2024"
66
description = "Input manager for Bevy, inspired by Unreal Engine Enhanced Input"
@@ -12,17 +12,24 @@ license = "MIT OR Apache-2.0"
1212
include = ["/src", "/LICENSE*"]
1313

1414
[dependencies]
15-
bevy_enhanced_input_macros = { path = "macros", version = "0.9.0" }
16-
bevy = { version = "0.15", default-features = false, features = ["serialize"] }
15+
bevy_enhanced_input_macros = { path = "macros", version = "0.10.0-rc.3" }
16+
bevy = { version = "0.16.0-rc.3", default-features = false, features = [
17+
"serialize",
18+
] }
19+
log = "0.4" # Directly depend on `log` like other `no_std` Bevy crates, since `bevy_log` currently requires `std`.
20+
variadics_please = "1.0"
1721
serde = { version = "1.0", default-features = false, features = ["derive"] }
1822
bitflags = { version = "2.6", features = ["serde"] }
1923

2024
[dev-dependencies]
21-
bevy = { version = "0.15", default-features = false, features = [
25+
bevy = { version = "0.16.0-rc.3", default-features = false, features = [
2226
"bevy_gilrs",
23-
"bevy_ui",
2427
"bevy_gizmos",
28+
"bevy_log",
29+
"bevy_ui_picking_backend",
30+
"bevy_ui",
2531
"bevy_window",
32+
"default_font",
2633
"x11",
2734
] }
2835
ron = "0.9"

examples/all_conditions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn spawn(mut commands: Commands) {
3333
}
3434

3535
fn binding(trigger: Trigger<Binding<Dummy>>, mut actions: Query<&mut Actions<Dummy>>) {
36-
let mut actions = actions.get_mut(trigger.entity()).unwrap();
36+
let mut actions = actions.get_mut(trigger.target()).unwrap();
3737
actions
3838
.bind::<PressAction>()
3939
.to(PressAction::KEY)

examples/context_layering.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ fn spawn(mut commands: Commands) {
4444
}
4545

4646
fn regular_binding(trigger: Trigger<Binding<Player>>, mut players: Query<&mut Actions<Player>>) {
47-
let mut actions = players.get_mut(trigger.entity()).unwrap();
47+
let mut actions = players.get_mut(trigger.target()).unwrap();
4848
actions
4949
.bind::<Move>()
5050
.to(Cardinal::wasd_keys())
@@ -58,7 +58,7 @@ fn regular_binding(trigger: Trigger<Binding<Player>>, mut players: Query<&mut Ac
5858
}
5959

6060
fn swimming_binding(trigger: Trigger<Binding<Swimming>>, mut players: Query<&mut Actions<Player>>) {
61-
let mut actions = players.get_mut(trigger.entity()).unwrap();
61+
let mut actions = players.get_mut(trigger.target()).unwrap();
6262
// `Player` has lower priority, so `Dive` and `ExitWater` consume inputs first,
6363
// preventing `Rotate` and `EnterWater` from being triggered.
6464
// The consuming behavior can be configured in the `InputAction` trait.
@@ -67,12 +67,12 @@ fn swimming_binding(trigger: Trigger<Binding<Swimming>>, mut players: Query<&mut
6767
}
6868

6969
fn apply_movement(trigger: Trigger<Fired<Move>>, mut players: Query<&mut Transform>) {
70-
let mut transform = players.get_mut(trigger.entity()).unwrap();
70+
let mut transform = players.get_mut(trigger.target()).unwrap();
7171
transform.translation += trigger.value.extend(0.0);
7272
}
7373

7474
fn rotate(trigger: Trigger<Started<Rotate>>, mut players: Query<&mut Transform>) {
75-
let mut transform = players.get_mut(trigger.entity()).unwrap();
75+
let mut transform = players.get_mut(trigger.target()).unwrap();
7676
transform.rotate_z(FRAC_PI_4);
7777
}
7878

@@ -82,21 +82,21 @@ fn enter_water(
8282
mut players: Query<&mut PlayerColor>,
8383
) {
8484
// Change color for visibility.
85-
let mut color = players.get_mut(trigger.entity()).unwrap();
85+
let mut color = players.get_mut(trigger.target()).unwrap();
8686
**color = INDIGO_600.into();
8787

8888
commands
89-
.entity(trigger.entity())
89+
.entity(trigger.target())
9090
.insert(Actions::<Swimming>::default());
9191
}
9292

9393
fn start_diving(trigger: Trigger<Started<Dive>>, mut players: Query<&mut Visibility>) {
94-
let mut visibility = players.get_mut(trigger.entity()).unwrap();
94+
let mut visibility = players.get_mut(trigger.target()).unwrap();
9595
*visibility = Visibility::Hidden;
9696
}
9797

9898
fn end_diving(trigger: Trigger<Completed<Dive>>, mut players: Query<&mut Visibility>) {
99-
let mut visibility = players.get_mut(trigger.entity()).unwrap();
99+
let mut visibility = players.get_mut(trigger.target()).unwrap();
100100
*visibility = Visibility::Visible;
101101
}
102102

@@ -105,11 +105,11 @@ fn exit_water(
105105
mut commands: Commands,
106106
mut players: Query<&mut PlayerColor>,
107107
) {
108-
let mut color = players.get_mut(trigger.entity()).unwrap();
108+
let mut color = players.get_mut(trigger.target()).unwrap();
109109
**color = Default::default();
110110

111111
commands
112-
.entity(trigger.entity())
112+
.entity(trigger.target())
113113
.remove::<Actions<Swimming>>();
114114
}
115115

examples/context_switch.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn spawn(mut commands: Commands) {
4242
}
4343

4444
fn foot_binding(trigger: Trigger<Binding<OnFoot>>, mut players: Query<&mut Actions<OnFoot>>) {
45-
let mut actions = players.get_mut(trigger.entity()).unwrap();
45+
let mut actions = players.get_mut(trigger.target()).unwrap();
4646
actions
4747
.bind::<Move>()
4848
.to(Cardinal::wasd_keys())
@@ -56,7 +56,7 @@ fn foot_binding(trigger: Trigger<Binding<OnFoot>>, mut players: Query<&mut Actio
5656
}
5757

5858
fn car_binding(trigger: Trigger<Binding<InCar>>, mut players: Query<&mut Actions<InCar>>) {
59-
let mut actions = players.get_mut(trigger.entity()).unwrap();
59+
let mut actions = players.get_mut(trigger.target()).unwrap();
6060
actions
6161
.bind::<Move>()
6262
.to(Cardinal::wasd_keys())
@@ -69,12 +69,12 @@ fn car_binding(trigger: Trigger<Binding<InCar>>, mut players: Query<&mut Actions
6969
}
7070

7171
fn apply_movement(trigger: Trigger<Fired<Move>>, mut players: Query<&mut Transform>) {
72-
let mut transform = players.get_mut(trigger.entity()).unwrap();
72+
let mut transform = players.get_mut(trigger.target()).unwrap();
7373
transform.translation += trigger.value.extend(0.0);
7474
}
7575

7676
fn rotate(trigger: Trigger<Started<Rotate>>, mut players: Query<&mut Transform>) {
77-
let mut transform = players.get_mut(trigger.entity()).unwrap();
77+
let mut transform = players.get_mut(trigger.target()).unwrap();
7878
transform.rotate_z(FRAC_PI_4);
7979
}
8080

@@ -84,11 +84,11 @@ fn enter_car(
8484
mut players: Query<&mut PlayerColor>,
8585
) {
8686
// Change color for visibility.
87-
let mut color = players.get_mut(trigger.entity()).unwrap();
87+
let mut color = players.get_mut(trigger.target()).unwrap();
8888
**color = FUCHSIA_400.into();
8989

9090
commands
91-
.entity(trigger.entity())
91+
.entity(trigger.target())
9292
.remove::<Actions<OnFoot>>()
9393
.insert(Actions::<InCar>::default());
9494
}
@@ -98,11 +98,11 @@ fn exit_car(
9898
mut commands: Commands,
9999
mut players: Query<&mut PlayerColor>,
100100
) {
101-
let mut color = players.get_mut(trigger.entity()).unwrap();
101+
let mut color = players.get_mut(trigger.target()).unwrap();
102102
**color = Default::default();
103103

104104
commands
105-
.entity(trigger.entity())
105+
.entity(trigger.target())
106106
.remove::<Actions<InCar>>()
107107
.insert(Actions::<OnFoot>::default());
108108
}

examples/keybinding_menu.rs

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@ impl Plugin for KeybindingMenuPlugin {
2626
(
2727
update_button_text,
2828
(
29-
cancel_binding
30-
.never_param_warn()
31-
.run_if(input_just_pressed(KeyCode::Escape)),
32-
bind.never_param_warn(),
29+
cancel_binding.run_if(input_just_pressed(KeyCode::Escape)),
30+
bind,
3331
)
3432
.chain(),
3533
),
@@ -62,11 +60,11 @@ fn setup(mut commands: Commands) {
6260

6361
// We use separate root node to let dialogs cover the whole UI.
6462
commands
65-
.spawn((Node {
63+
.spawn(Node {
6664
width: Val::Percent(100.0),
6765
height: Val::Percent(100.0),
6866
..Default::default()
69-
},))
67+
})
7068
.with_children(|parent| {
7169
parent
7270
.spawn(Node {
@@ -124,7 +122,7 @@ struct SettingsField(&'static str);
124122
/// Number of input columns.
125123
const INPUTS_PER_ACTION: usize = 3;
126124

127-
fn setup_actions(parent: &mut ChildBuilder, settings: &KeyboardSettings) -> Entity {
125+
fn setup_actions(parent: &mut ChildSpawnerCommands, settings: &KeyboardSettings) -> Entity {
128126
parent
129127
.spawn(Node {
130128
display: Display::Grid,
@@ -172,7 +170,7 @@ fn setup_actions(parent: &mut ChildBuilder, settings: &KeyboardSettings) -> Enti
172170
}
173171

174172
fn setup_action_row(
175-
parent: &mut ChildBuilder,
173+
parent: &mut ChildSpawnerCommands,
176174
name: &'static str,
177175
inputs: &[Input],
178176
field: SettingsField,
@@ -210,7 +208,7 @@ fn delete_binding(
210208
mut input_buttons: Query<(&Name, &mut InputButton)>,
211209
delete_buttons: Query<&DeleteButton>,
212210
) {
213-
let delete_button = delete_buttons.get(trigger.entity()).unwrap();
211+
let delete_button = delete_buttons.get(trigger.target()).unwrap();
214212
let (name, mut input_button) = input_buttons
215213
.get_mut(delete_button.button_entity)
216214
.expect("delete button should point to an input button");
@@ -221,16 +219,16 @@ fn delete_binding(
221219
fn show_binding_dialog(
222220
trigger: Trigger<Pointer<Click>>,
223221
mut commands: Commands,
224-
root_entity: Single<Entity, (With<Node>, Without<Parent>)>,
222+
root_entity: Single<Entity, (With<Node>, Without<ChildOf>)>,
225223
names: Query<&Name>,
226224
) {
227-
let name = names.get(trigger.entity()).unwrap();
225+
let name = names.get(trigger.target()).unwrap();
228226
info!("starting binding for '{name}'");
229227

230228
commands.entity(*root_entity).with_children(|parent| {
231229
parent
232230
.spawn(BindingDialog {
233-
button_entity: trigger.entity(),
231+
button_entity: trigger.target(),
234232
})
235233
.with_children(|parent| {
236234
parent
@@ -264,7 +262,7 @@ fn bind(
264262
mut key_events: EventReader<KeyboardInput>,
265263
mut mouse_button_events: EventReader<MouseButtonInput>,
266264
dialog: Single<(Entity, &BindingDialog)>,
267-
root_entity: Single<Entity, (With<Node>, Without<Parent>)>,
265+
root_entity: Single<Entity, (With<Node>, Without<ChildOf>)>,
268266
mut buttons: Query<(Entity, &Name, &mut InputButton)>,
269267
) {
270268
let keys = key_events
@@ -337,12 +335,12 @@ fn bind(
337335
button.input = Some(input);
338336
}
339337

340-
commands.entity(dialog_entity).despawn_recursive();
338+
commands.entity(dialog_entity).despawn();
341339
}
342340

343341
fn cancel_binding(mut commands: Commands, dialog_entity: Single<Entity, With<BindingDialog>>) {
344342
info!("cancelling binding");
345-
commands.entity(*dialog_entity).despawn_recursive();
343+
commands.entity(*dialog_entity).despawn();
346344
}
347345

348346
fn replace_binding(
@@ -364,7 +362,7 @@ fn replace_binding(
364362
button.input = input;
365363

366364
info!("reassigning binding to '{name}'");
367-
commands.entity(dialog_entity).despawn_recursive();
365+
commands.entity(dialog_entity).despawn();
368366
}
369367

370368
fn cancel_replace_binding(
@@ -373,7 +371,7 @@ fn cancel_replace_binding(
373371
dialog_entity: Single<Entity, With<ConflictDialog>>,
374372
) {
375373
info!("cancelling replace binding");
376-
commands.entity(*dialog_entity).despawn_recursive();
374+
commands.entity(*dialog_entity).despawn();
377375
}
378376

379377
fn apply(
@@ -432,13 +430,13 @@ fn update_button_background(
432430
#[derive(Component, Default)]
433431
#[require(
434432
Button,
435-
Node(|| Node {
433+
Node {
436434
justify_content: JustifyContent::Center,
437435
align_items: AlignItems::Center,
438436
width: Val::Px(160.0),
439437
height: Val::Px(35.0),
440438
..Default::default()
441-
}),
439+
},
442440
)]
443441
struct SettingsButton;
444442

@@ -454,13 +452,13 @@ struct InputButton {
454452
#[derive(Component)]
455453
#[require(
456454
Button,
457-
Node(|| Node {
455+
Node {
458456
justify_content: JustifyContent::Center,
459457
align_items: AlignItems::Center,
460458
width: Val::Px(35.0),
461459
height: Val::Px(35.0),
462460
..Default::default()
463-
}),
461+
},
464462
)]
465463
struct DeleteButton {
466464
/// Entity with [`InputButton`].
@@ -469,16 +467,16 @@ struct DeleteButton {
469467

470468
#[derive(Component, Default)]
471469
#[require(
472-
Node(|| Node {
470+
Node {
473471
position_type: PositionType::Absolute,
474472
width: Val::Percent(100.0),
475473
height: Val::Percent(100.0),
476474
align_items: AlignItems::Center,
477475
justify_content: JustifyContent::Center,
478476
..Default::default()
479-
}),
480-
FocusPolicy(|| FocusPolicy::Block),
481-
BackgroundColor(|| BackgroundColor(Color::srgba(1.0, 1.0, 1.0, 0.3))),
477+
},
478+
FocusPolicy::Block,
479+
BackgroundColor(Color::srgba(1.0, 1.0, 1.0, 0.3)),
482480
)]
483481
struct Dialog;
484482

examples/local_multiplayer.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fn binding(
6262
gamepads: Res<Gamepads>,
6363
mut players: Query<(&Player, &mut Actions<Player>)>,
6464
) {
65-
let (&player, mut actions) = players.get_mut(trigger.entity()).unwrap();
65+
let (&player, mut actions) = players.get_mut(trigger.target()).unwrap();
6666

6767
// By default actions read inputs from all gamepads,
6868
// but for local multiplayer we need assign specific
@@ -101,12 +101,12 @@ fn binding(
101101
}
102102

103103
fn apply_movement(trigger: Trigger<Fired<Move>>, mut players: Query<&mut Transform>) {
104-
let mut transform = players.get_mut(trigger.entity()).unwrap();
104+
let mut transform = players.get_mut(trigger.target()).unwrap();
105105
transform.translation += trigger.value.extend(0.0);
106106
}
107107

108108
fn rotate(trigger: Trigger<Started<Rotate>>, mut players: Query<&mut Transform>) {
109-
let mut transform = players.get_mut(trigger.entity()).unwrap();
109+
let mut transform = players.get_mut(trigger.target()).unwrap();
110110
transform.rotate_z(FRAC_PI_4);
111111
}
112112

examples/simple.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn spawn(mut commands: Commands) {
4343
// It's also possible to create bindings before the insertion,
4444
// but this way you can conveniently reload bindings when settings change.
4545
fn binding(trigger: Trigger<Binding<Player>>, mut players: Query<&mut Actions<Player>>) {
46-
let mut actions = players.get_mut(trigger.entity()).unwrap();
46+
let mut actions = players.get_mut(trigger.target()).unwrap();
4747

4848
// Bindings like WASD or sticks are very common,
4949
// so we provide built-ins to assign all keys/axes at once.
@@ -66,13 +66,13 @@ fn binding(trigger: Trigger<Binding<Player>>, mut players: Query<&mut Actions<Pl
6666
}
6767

6868
fn apply_movement(trigger: Trigger<Fired<Move>>, mut players: Query<&mut Transform>) {
69-
let mut transform = players.get_mut(trigger.entity()).unwrap();
69+
let mut transform = players.get_mut(trigger.target()).unwrap();
7070
// The value has already been preprocessed by defined modifiers.
7171
transform.translation += trigger.value.extend(0.0);
7272
}
7373

7474
fn rotate(trigger: Trigger<Started<Rotate>>, mut players: Query<&mut Transform>) {
75-
let mut transform = players.get_mut(trigger.entity()).unwrap();
75+
let mut transform = players.get_mut(trigger.target()).unwrap();
7676
transform.rotate_z(FRAC_PI_4);
7777
}
7878

0 commit comments

Comments
 (0)