From 35f132d8582b2380b0f538783ef4885f8d8301ee Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Mon, 6 Mar 2023 13:59:53 -0600 Subject: [PATCH] feat: `Sound` components can now get audio from either buffers or generators. --- Cargo.toml | 2 +- examples/{game.rs => buffer.rs} | 2 +- examples/generator.rs | 55 +++++++++++++++++ src/lib.rs | 105 +++++++++++++++++++++----------- 4 files changed, 125 insertions(+), 39 deletions(-) rename examples/{game.rs => buffer.rs} (98%) create mode 100644 examples/generator.rs diff --git a/Cargo.toml b/Cargo.toml index 93afabe..64face3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://labs.lightsout.games/projects/bevy_synthizer" [dependencies] anyhow = "1" bevy = { version = "0.9", default-features = false, features = ["bevy_asset"] } -synthizer = "0.5" +synthizer = "0.5.6" [dev-dependencies] bevy = { version = "0.9", default-features = true } diff --git a/examples/game.rs b/examples/buffer.rs similarity index 98% rename from examples/game.rs rename to examples/buffer.rs index 0efa719..d1b93a0 100644 --- a/examples/game.rs +++ b/examples/buffer.rs @@ -45,7 +45,7 @@ fn load_and_create( TransformBundle::from(Transform::from_translation(Vec3::new(10., 0., 0.))), Source::default(), Sound { - buffer, + audio: buffer.into(), looping: true, ..default() }, diff --git a/examples/generator.rs b/examples/generator.rs new file mode 100644 index 0000000..1d7565e --- /dev/null +++ b/examples/generator.rs @@ -0,0 +1,55 @@ +use std::f32; + +use bevy::prelude::*; +use bevy_synthizer::*; + +#[derive(Component, Deref, DerefMut)] +struct RotationTimer(Timer); + +impl Default for RotationTimer { + fn default() -> Self { + Self(Timer::from_seconds(30., TimerMode::Repeating)) + } +} + +fn setup(mut commands: Commands, context: Res) { + commands.spawn(( + TransformBundle::default(), + Listener, + RotationTimer::default(), + )); + let generator: syz::Generator = syz::FastSineBankGenerator::new_sine(&context, 440.) + .expect("Failed to create generator") + .into(); + commands.spawn(( + TransformBundle::from(Transform::from_translation(Vec3::new(10., 0., 0.))), + Source::default(), + Sound { + audio: generator.into(), + looping: true, + ..default() + }, + )); +} + +fn rotate_listener(time: Res