private void OnSoundControllerListChanged(object o, AudioEmitterComponent.ControllerCollectionChangedEventArgs args)
        {
            AssociatedData associatedData = null;

            throw new NotImplementedException();
            //if (!ComponentDatas.TryGetValue(args.Entity, 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);
                }
            }
        }
Ejemplo n.º 2
0
        private void OnSoundControllerListChanged(object o, AudioEmitterComponent.ControllerCollectionChangedEventArgs args)
        {
            AssociatedData associatedData;

            if (!ComponentDatas.TryGetValue(args.EmitterComponent, out associatedData))
            {
                return;
            }

            // A new Sound have been associated to the AudioEmitterComponenent or an old Sound have been deleted.
            // We need to create/destroy the corresponding SoundInstances.

            var listeners = audioSystem.Listeners.Keys;

            foreach (var listener in listeners)
            {
                if (args.Action == NotifyCollectionChangedAction.Add)
                {
                    args.Controller.CreateSoundInstance(listener);
                }
                else if (args.Action == NotifyCollectionChangedAction.Remove)
                {
                    args.Controller.DestroySoundInstances(listener);
                }
            }
        }