Compare commits

...

2 Commits

View File

@ -294,13 +294,49 @@ fn add_generator(
fn add_sound_without_source( fn add_sound_without_source(
mut commands: Commands, mut commands: Commands,
query: Query<Entity, (Added<Sound>, Without<Source>)>, query: Query<
(
Entity,
Option<&PannerStrategy>,
Option<&AngularPan>,
Option<&ScalarPan>,
Option<&DistanceModel>,
Option<&DistanceRef>,
Option<&DistanceMax>,
Option<&Rolloff>,
Option<&ClosenessBoost>,
Option<&ClosenessBoostDistance>,
),
(Added<Sound>, Without<Source>),
>,
parents: Query<&Parent>, parents: Query<&Parent>,
sources: Query<&Source>, sources: Query<&Source>,
) { ) {
for entity in &query { for (
entity,
panner_strategy,
scalar_pan,
angular_pan,
distance_model,
distance_ref,
distance_max,
rolloff,
closeness_boost,
closeness_boost_distance,
) in &query
{
let mut has_source = false; let mut has_source = false;
let mut target = entity; let mut target = entity;
if panner_strategy.is_none()
&& angular_pan.is_none()
&& scalar_pan.is_none()
&& distance_model.is_none()
&& distance_ref.is_none()
&& distance_max.is_none()
&& rolloff.is_none()
&& closeness_boost.is_none()
&& closeness_boost_distance.is_none()
{
while let Ok(parent) = parents.get(target) { while let Ok(parent) = parents.get(target) {
if sources.get(**parent).is_ok() { if sources.get(**parent).is_ok() {
has_source = true; has_source = true;
@ -308,6 +344,7 @@ fn add_sound_without_source(
} }
target = **parent; target = **parent;
} }
}
if !has_source { if !has_source {
commands.entity(entity).insert(Source::default()); commands.entity(entity).insert(Source::default());
} }
@ -754,6 +791,9 @@ impl Plugin for SynthizerPlugin {
update_sound_playback_state.label(SynthizerSystems::UpdateState), update_sound_playback_state.label(SynthizerSystems::UpdateState),
) )
.add_system_to_stage(CoreStage::PostUpdate, remove_sound) .add_system_to_stage(CoreStage::PostUpdate, remove_sound)
.add_system_to_stage(CoreStage::PreUpdate, events); .add_system_to_stage(
CoreStage::PostUpdate,
events.after(SynthizerSystems::UpdateState),
);
} }
} }