Compare commits
2 Commits
ba45547038
...
ed38b30843
Author | SHA1 | Date | |
---|---|---|---|
ed38b30843 | |||
fe63521737 |
56
src/lib.rs
56
src/lib.rs
|
@ -294,19 +294,56 @@ fn add_generator(
|
|||
|
||||
fn add_sound_without_source(
|
||||
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>,
|
||||
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 target = entity;
|
||||
while let Ok(parent) = parents.get(target) {
|
||||
if sources.get(**parent).is_ok() {
|
||||
has_source = true;
|
||||
break;
|
||||
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) {
|
||||
if sources.get(**parent).is_ok() {
|
||||
has_source = true;
|
||||
break;
|
||||
}
|
||||
target = **parent;
|
||||
}
|
||||
target = **parent;
|
||||
}
|
||||
if !has_source {
|
||||
commands.entity(entity).insert(Source::default());
|
||||
|
@ -754,6 +791,9 @@ impl Plugin for SynthizerPlugin {
|
|||
update_sound_playback_state.label(SynthizerSystems::UpdateState),
|
||||
)
|
||||
.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),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user