private void OnSoundControllerListChanged(object o, AudioEmitterComponent.ControllerCollectionChangedEventArgs args) { AssociatedData associatedData; if (!ComponentDatas.TryGetValue(args.EmitterComponent, out associatedData)) { return; } // A new SoundEffect have been associated to the AudioEmitterComponenent or an old SoundEffect have been deleted. // We need to create/destroy the corresponding SoundEffectInstances. var listeners = audioSystem.Listeners.Keys; foreach (var listener in listeners) { var currentTuple = Tuple.Create(listener, args.Controller); if (args.Action == NotifyCollectionChangedAction.Add) { associatedData.ListenerControllerToSoundInstance[currentTuple] = args.Controller.CreateSoundInstance(); } else if (args.Action == NotifyCollectionChangedAction.Remove) { args.Controller.DestroySoundInstance(associatedData.ListenerControllerToSoundInstance[currentTuple]); associatedData.ListenerControllerToSoundInstance.Remove(currentTuple); } } }
public RenderLight GetRenderLight(LightComponent lightComponent) { ComponentDatas.TryGetValue(lightComponent, out var renderLight); return(renderLight); }