Skip to content
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

Update to Bevy 0.14 #126

Merged
merged 5 commits into from
Jul 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## v0.20.0 - 04.07.2024
- Update to Bevy `0.14`

## v0.19.0 - 17.02.2024
- Update to Bevy `0.13`

Expand Down
8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "bevy_kira_audio"
version = "0.19.0"
version = "0.20.0"
authors = ["Niklas Eicker <[email protected]>"]
edition = "2021"
license = "MIT OR Apache-2.0"
Expand All @@ -22,7 +22,7 @@ wav = ["kira/wav"]
settings_loader = ["dep:ron", "dep:serde", "kira/serde"]

[dependencies]
bevy = { version = "0.13", default-features = false, features = ["bevy_asset"] }
bevy = { version = "0.14.0", default-features = false, features = ["bevy_asset"] }
anyhow = "1.0"
uuid = { version = "1", features = ["fast-rng"] }
kira = { version = "0.8", default-features = false, features = ["cpal"] }
Expand All @@ -32,7 +32,7 @@ parking_lot = "0.12"
thiserror = "1.0"

[dev-dependencies.bevy]
version = "0.13"
version = "0.14.0"
default-features = false
features = [
"bevy_asset",
Expand All @@ -49,7 +49,7 @@ features = [
"tonemapping_luts",
"ktx2",
"zstd",
"multi-threaded",
"multi_threaded"
]

[[example]]
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Sound can be played in channels. Each channel has controls to pause or stop play

## Usage

*Note: the Bevy feature `bevy_audio` is enabled by default and not compatible with this plugin. Make sure to not have the `bevy_audio` feature enabled if you want to use `bevy_kira_audio`. The same goes for Bevy's `vorbis` feature. See [Bevys' Cargo file][bevy_default_features] for a list of all default features of version `0.12` and list them manually in your Cargo file excluding the ones you do not want. Make sure to set `default-features` to `false` for the Bevy dependency. You can take a look at [bevy_game_template's cargo file as an example](https://github.com/NiklasEi/bevy_game_template/blob/main/Cargo.toml).*
*Note: the Bevy feature `bevy_audio` is enabled by default and not compatible with this plugin. Make sure to not have the `bevy_audio` feature enabled if you want to use `bevy_kira_audio`. The same goes for Bevy's `vorbis` feature. See [Bevys' Cargo file][bevy_default_features] for a list of all default features of version `0.14` and list them manually in your Cargo file excluding the ones you do not want. Make sure to set `default-features` to `false` for the Bevy dependency. You can take a look at [bevy_game_template's cargo file as an example](https://github.com/NiklasEi/bevy_game_template/blob/main/Cargo.toml).*


To play audio, you usually want to load audio files as assets. This requires `AssetLoaders`. `bevy_kira_audio` comes with loaders for most common audio formats. You can enable them with the features `ogg` (enabled by default), `mp3`, `wav`, or `flac`. The following example assumes that the feature `ogg` is enabled.
Expand Down Expand Up @@ -91,6 +91,7 @@ Compatibility of `bevy_kira_audio` versions:

| Bevy version | `bevy_kira_audio` version |
|:-------------|:--------------------------|
| `0.14` | `0.20` |
| `0.13` | `0.19` |
| `0.12` | `0.18` |
| `0.11` | `0.16` - `0.17` |
Expand Down Expand Up @@ -124,4 +125,4 @@ additional terms or conditions.


[kira]: https://github.com/tesselode/kira
[bevy_default_features]: https://github.com/bevyengine/bevy/blob/v0.13.0/Cargo.toml#L55-L80
[bevy_default_features]: https://github.com/bevyengine/bevy/blob/v0.14.0/Cargo.toml#L56-L86
2 changes: 1 addition & 1 deletion examples/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ fn main() {
App::new()
.add_plugins((DefaultPlugins, AudioPlugin))
.add_systems(Startup, play_loop)
.run()
.run();
}

// `Audio` is an alias for `AudioChannel<MainTrack>`, which is the default channel added by the audio plugin
Expand Down
2 changes: 1 addition & 1 deletion examples/channel_control.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fn main() {
.add_plugins((DefaultPlugins, AudioPlugin))
.add_systems(Startup, play_loop)
.add_systems(Update, channel_control)
.run()
.run();
}

fn channel_control(input: Res<ButtonInput<MouseButton>>, audio: Res<Audio>) {
Expand Down
2 changes: 1 addition & 1 deletion examples/dynamic_channels.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ fn main() {
.add_plugins((DefaultPlugins, AudioPlugin))
.add_systems(Startup, start_background_audio)
.add_systems(Update, plop)
.run()
.run();
}

fn start_background_audio(
Expand Down
2 changes: 1 addition & 1 deletion examples/instance_control.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fn main() {
.add_plugins((DefaultPlugins, AudioPlugin))
.add_systems(Startup, play_loop)
.add_systems(Update, instance_control)
.run()
.run();
}

fn instance_control(
Expand Down
82 changes: 41 additions & 41 deletions examples/multiple_channels.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ fn play_pause_button<T: Component + Default>(
mut channel_state: ResMut<ChannelAudioState<T>>,
time: Res<Time>,
mut last_action: ResMut<LastAction>,
mut interaction_query: Query<(&Interaction, &mut BackgroundColor), With<PlayPauseButton<T>>>,
mut interaction_query: Query<(&Interaction, &mut UiImage), With<PlayPauseButton<T>>>,
mut play_pause_text: Query<&mut Text, With<PlayPauseButton<T>>>,
) {
let (interaction, mut color) = interaction_query.single_mut();
*color = if channel_state.stopped {
DISABLED_BUTTON.into()
let (interaction, mut image) = interaction_query.single_mut();
image.color = if channel_state.stopped {
DISABLED_BUTTON
} else if interaction == &Interaction::Hovered {
HOVERED_BUTTON.into()
HOVERED_BUTTON
} else {
NORMAL_BUTTON.into()
NORMAL_BUTTON
};
let mut text = play_pause_text.single_mut();
text.sections.first_mut().unwrap().value = if channel_state.paused {
Expand Down Expand Up @@ -74,15 +74,15 @@ fn stop_button<T: Component + Default>(
time: Res<Time>,
mut last_action: ResMut<LastAction>,
mut channel_state: ResMut<ChannelAudioState<T>>,
mut interaction_query: Query<(&Interaction, &mut BackgroundColor), With<StopButton<T>>>,
mut interaction_query: Query<(&Interaction, &mut UiImage), With<StopButton<T>>>,
) {
let (interaction, mut color) = interaction_query.single_mut();
*color = if channel_state.stopped {
DISABLED_BUTTON.into()
let (interaction, mut image) = interaction_query.single_mut();
image.color = if channel_state.stopped {
DISABLED_BUTTON
} else if interaction == &Interaction::Hovered {
HOVERED_BUTTON.into()
HOVERED_BUTTON
} else {
NORMAL_BUTTON.into()
NORMAL_BUTTON
};
if channel_state.stopped {
return;
Expand All @@ -102,17 +102,17 @@ fn loop_button<T: Component + Default>(
mut last_action: ResMut<LastAction>,
mut channel_state: ResMut<ChannelAudioState<T>>,
audio_handles: Res<AudioHandles>,
mut interaction_query: Query<(&Interaction, &mut BackgroundColor), With<StartLoopButton<T>>>,
mut interaction_query: Query<(&Interaction, &mut UiImage), With<StartLoopButton<T>>>,
) {
let (interaction, mut color) = interaction_query.single_mut();
*color = if !channel_state.loop_started {
let (interaction, mut image) = interaction_query.single_mut();
image.color = if !channel_state.loop_started {
if interaction == &Interaction::Hovered {
HOVERED_BUTTON.into()
HOVERED_BUTTON
} else {
NORMAL_BUTTON.into()
NORMAL_BUTTON
}
} else {
DISABLED_BUTTON.into()
DISABLED_BUTTON
};
if channel_state.loop_started {
return;
Expand All @@ -133,13 +133,13 @@ fn play_sound_button<T: Component + Default>(
mut last_action: ResMut<LastAction>,
mut channel_state: ResMut<ChannelAudioState<T>>,
audio_handles: Res<AudioHandles>,
mut interaction_query: Query<(&Interaction, &mut BackgroundColor), With<PlaySoundButton<T>>>,
mut interaction_query: Query<(&Interaction, &mut UiImage), With<PlaySoundButton<T>>>,
) {
let (interaction, mut color) = interaction_query.single_mut();
*color = if interaction == &Interaction::Hovered {
HOVERED_BUTTON.into()
let (interaction, mut image) = interaction_query.single_mut();
image.color = if interaction == &Interaction::Hovered {
HOVERED_BUTTON
} else {
NORMAL_BUTTON.into()
NORMAL_BUTTON
};
if interaction == &Interaction::Pressed {
if !last_action.action(&time) {
Expand All @@ -156,13 +156,13 @@ fn volume_buttons<T: Component + Default>(
time: Res<Time>,
mut last_action: ResMut<LastAction>,
mut channel_state: ResMut<ChannelAudioState<T>>,
mut interaction_query: Query<(&Interaction, &mut BackgroundColor, &ChangeVolumeButton<T>)>,
mut interaction_query: Query<(&Interaction, &mut UiImage, &ChangeVolumeButton<T>)>,
) {
for (interaction, mut color, volume) in &mut interaction_query {
*color = if interaction == &Interaction::Hovered {
HOVERED_BUTTON.into()
for (interaction, mut image, volume) in &mut interaction_query {
image.color = if interaction == &Interaction::Hovered {
HOVERED_BUTTON
} else {
NORMAL_BUTTON.into()
NORMAL_BUTTON
};
if interaction == &Interaction::Pressed {
if !last_action.action(&time) {
Expand Down Expand Up @@ -252,9 +252,9 @@ impl<T> Default for ChannelAudioState<T> {
}
}

const NORMAL_BUTTON: Color = Color::rgb(0.15, 0.15, 0.15);
const HOVERED_BUTTON: Color = Color::rgb(0.25, 0.25, 0.25);
const DISABLED_BUTTON: Color = Color::rgb(0.5, 0.5, 0.5);
const NORMAL_BUTTON: Color = Color::linear_rgb(0.15, 0.15, 0.15);
const HOVERED_BUTTON: Color = Color::linear_rgb(0.25, 0.25, 0.25);
const DISABLED_BUTTON: Color = Color::linear_rgb(0.5, 0.5, 0.5);

fn prepare_audio_and_ui(mut commands: Commands, asset_server: ResMut<AssetServer>) {
let loop_handle = asset_server.load("sounds/loop.ogg");
Expand Down Expand Up @@ -327,7 +327,7 @@ fn build_button_row<T: Component + Default + Clone>(
value: format!("Channel {}", 4 - channel_index),
style: TextStyle {
font_size: 20.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
font: font.clone(),
},
}],
Expand All @@ -339,28 +339,28 @@ fn build_button_row<T: Component + Default + Clone>(
spawn_button(
parent,
"Sound",
DISABLED_BUTTON.into(),
DISABLED_BUTTON,
PlaySoundButton::<T>::default(),
font.clone(),
);
spawn_button(
parent,
"Loop",
DISABLED_BUTTON.into(),
DISABLED_BUTTON,
StartLoopButton::<T>::default(),
font.clone(),
);
spawn_button(
parent,
"Pause",
DISABLED_BUTTON.into(),
DISABLED_BUTTON,
PlayPauseButton::<T>::default(),
font.clone(),
);
spawn_button(
parent,
"Vol. up",
NORMAL_BUTTON.into(),
NORMAL_BUTTON,
ChangeVolumeButton::<T> {
louder: true,
_marker: PhantomData,
Expand All @@ -370,7 +370,7 @@ fn build_button_row<T: Component + Default + Clone>(
spawn_button(
parent,
"Vol. down",
NORMAL_BUTTON.into(),
NORMAL_BUTTON,
ChangeVolumeButton::<T> {
louder: false,
_marker: PhantomData,
Expand All @@ -380,7 +380,7 @@ fn build_button_row<T: Component + Default + Clone>(
spawn_button(
parent,
"Stop",
DISABLED_BUTTON.into(),
DISABLED_BUTTON,
StopButton::<T>::default(),
font.clone(),
);
Expand All @@ -390,7 +390,7 @@ fn build_button_row<T: Component + Default + Clone>(
fn spawn_button<T: Component + Clone>(
parent: &mut ChildBuilder,
text: &str,
background_color: BackgroundColor,
color: Color,
marker: T,
font: Handle<Font>,
) {
Expand All @@ -404,7 +404,7 @@ fn spawn_button<T: Component + Clone>(
align_items: AlignItems::Center,
..Default::default()
},
background_color,
image: UiImage::default().with_color(color),
..Default::default()
})
.insert(marker.clone())
Expand All @@ -416,7 +416,7 @@ fn spawn_button<T: Component + Clone>(
value: text.to_string(),
style: TextStyle {
font_size: 20.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
font: font.clone(),
},
}],
Expand Down
6 changes: 3 additions & 3 deletions examples/spatial.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fn main() {
.insert_resource(SpatialAudio { max_distance: 25. })
.add_plugins((DefaultPlugins, AudioPlugin, CameraPlugin))
.add_systems(Startup, setup)
.run()
.run();
}

fn setup(
Expand Down Expand Up @@ -73,7 +73,7 @@ fn setup(
style: TextStyle {
font: asset_server.load("fonts/monogram.ttf"),
font_size: 40.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
},
}],
..default()
Expand All @@ -88,7 +88,7 @@ fn setup(
mesh: meshes.add(Cuboid {
half_size: Vec3::new(25., 0., 25.),
}),
material: materials.add(Color::DARK_GREEN),
material: materials.add(StandardMaterial::from_color(LinearRgba::GREEN)),
..default()
});
}
Expand Down
10 changes: 5 additions & 5 deletions examples/status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ fn display_help_text(mut commands: Commands, asset_server: Res<AssetServer>) {
align_items: AlignItems::Center,
..Default::default()
},
background_color: Color::rgba(0., 0., 0., 0.).into(),
background_color: Color::linear_rgba(0., 0., 0., 0.).into(),
..Default::default()
})
.with_children(|parent| {
Expand All @@ -71,31 +71,31 @@ fn display_help_text(mut commands: Commands, asset_server: Res<AssetServer>) {
style: TextStyle {
font: monogram.clone(),
font_size: 40.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
},
},
TextSection {
value: "Press 'R' to resume\n".to_string(),
style: TextStyle {
font: monogram.clone(),
font_size: 40.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
},
},
TextSection {
value: "Press 'S' to stop\n\n".to_string(),
style: TextStyle {
font: monogram.clone(),
font_size: 40.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
},
},
TextSection {
value: "Check your console for the audio state".to_string(),
style: TextStyle {
font: monogram.clone(),
font_size: 40.0,
color: Color::rgb(0.9, 0.9, 0.9),
color: Color::linear_rgb(0.9, 0.9, 0.9),
},
},
],
Expand Down
2 changes: 1 addition & 1 deletion examples/stress_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ fn main() {
.add_plugins((DefaultPlugins, AudioPlugin))
.add_systems(Startup, prepare)
.add_systems(Update, (check, play))
.run()
.run();
}

#[derive(Resource)]
Expand Down
Loading
Loading