Compare commits
2 Commits
0f4aa54612
...
298012455a
Author | SHA1 | Date | |
---|---|---|---|
298012455a | |||
b60183c448 |
19
src/lib.rs
19
src/lib.rs
|
@ -130,7 +130,7 @@ pub struct Sound {
|
||||||
pub paused: bool,
|
pub paused: bool,
|
||||||
pub restart: bool,
|
pub restart: bool,
|
||||||
#[reflect(ignore)]
|
#[reflect(ignore)]
|
||||||
pub generator: Option<syz::BufferGenerator>,
|
pub generator: Option<syz::Generator>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Sound {
|
impl Default for Sound {
|
||||||
|
@ -194,7 +194,6 @@ fn update_listener(
|
||||||
fn add_source_handle(
|
fn add_source_handle(
|
||||||
context: Res<syz::Context>,
|
context: Res<syz::Context>,
|
||||||
mut query: Query<(
|
mut query: Query<(
|
||||||
Entity,
|
|
||||||
&mut Source,
|
&mut Source,
|
||||||
Option<&PannerStrategy>,
|
Option<&PannerStrategy>,
|
||||||
Option<&GlobalTransform>,
|
Option<&GlobalTransform>,
|
||||||
|
@ -202,7 +201,7 @@ fn add_source_handle(
|
||||||
Option<&ScalarPan>,
|
Option<&ScalarPan>,
|
||||||
)>,
|
)>,
|
||||||
) {
|
) {
|
||||||
for (entity, mut source, panner_strategy, transform, angular_pan, scalar_pan) in &mut query {
|
for (mut source, panner_strategy, transform, angular_pan, scalar_pan) in &mut query {
|
||||||
if source.handle.is_none() {
|
if source.handle.is_none() {
|
||||||
let panner_strategy = panner_strategy.cloned().unwrap_or_default();
|
let panner_strategy = panner_strategy.cloned().unwrap_or_default();
|
||||||
let handle: syz::Source = if let Some(transform) = transform {
|
let handle: syz::Source = if let Some(transform) = transform {
|
||||||
|
@ -285,7 +284,7 @@ fn add_generator(
|
||||||
handle
|
handle
|
||||||
.add_generator(&generator)
|
.add_generator(&generator)
|
||||||
.expect("Unable to add generator");
|
.expect("Unable to add generator");
|
||||||
sound.generator = Some(generator);
|
sound.generator = Some(generator.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -357,7 +356,6 @@ fn change_panner_strategy(
|
||||||
fn update_source_properties(
|
fn update_source_properties(
|
||||||
context: Res<syz::Context>,
|
context: Res<syz::Context>,
|
||||||
mut query: Query<(
|
mut query: Query<(
|
||||||
Entity,
|
|
||||||
&mut Source,
|
&mut Source,
|
||||||
Option<&DistanceModel>,
|
Option<&DistanceModel>,
|
||||||
Option<&DistanceRef>,
|
Option<&DistanceRef>,
|
||||||
|
@ -371,7 +369,6 @@ fn update_source_properties(
|
||||||
)>,
|
)>,
|
||||||
) {
|
) {
|
||||||
for (
|
for (
|
||||||
entity,
|
|
||||||
mut source,
|
mut source,
|
||||||
distance_model,
|
distance_model,
|
||||||
distance_ref,
|
distance_ref,
|
||||||
|
@ -503,11 +500,16 @@ fn update_sound_properties(mut query: Query<&mut Sound>) {
|
||||||
assert!(pitch > 0. && pitch <= 2.);
|
assert!(pitch > 0. && pitch <= 2.);
|
||||||
if sound.restart {
|
if sound.restart {
|
||||||
if let Some(generator) = sound.generator.as_mut() {
|
if let Some(generator) = sound.generator.as_mut() {
|
||||||
|
if let Some(generator) = generator
|
||||||
|
.cast_to::<syz::BufferGenerator>()
|
||||||
|
.expect("Failed to cast")
|
||||||
|
{
|
||||||
generator
|
generator
|
||||||
.playback_position()
|
.playback_position()
|
||||||
.set(0.)
|
.set(0.)
|
||||||
.expect("Failed to restart");
|
.expect("Failed to restart");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
sound.restart = false;
|
sound.restart = false;
|
||||||
}
|
}
|
||||||
if let Some(generator) = sound.generator.as_mut() {
|
if let Some(generator) = sound.generator.as_mut() {
|
||||||
|
@ -516,12 +518,17 @@ fn update_sound_properties(mut query: Query<&mut Sound>) {
|
||||||
.pitch_bend()
|
.pitch_bend()
|
||||||
.set(pitch)
|
.set(pitch)
|
||||||
.expect("Failed to set pitch");
|
.expect("Failed to set pitch");
|
||||||
|
if let Some(generator) = generator
|
||||||
|
.cast_to::<syz::BufferGenerator>()
|
||||||
|
.expect("Failed to cast")
|
||||||
|
{
|
||||||
generator
|
generator
|
||||||
.looping()
|
.looping()
|
||||||
.set(looping)
|
.set(looping)
|
||||||
.expect("Failed to set looping");
|
.expect("Failed to set looping");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_source_playback_state(query: Query<&Source>) {
|
fn update_source_playback_state(query: Query<&Source>) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user