コード例 #1
0
        internal void DestroySoundInstances(AudioListenerComponent listener)
        {
            var deferRemoval = new List <SoundInstance>();

            foreach (var instance in InstanceToListener.Keys)
            {
                deferRemoval.Add(instance);
            }

            foreach (var soundInstance in deferRemoval)
            {
                DestroySoundInstance(soundInstance);
            }

            for (var i = 0; i < FastInstances.Count; i++)
            {
                var instance = FastInstances[i];
                if (instance.Listener == listener.Listener)
                {
                    //Decrement the loop counter to iterate this index again, since later elements will get moved down during the remove operation.
                    FastInstances.RemoveAt(i--);
                    instance.Dispose();
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Dispose and removes all the controller sound instances.
        /// </summary>
        internal void DestroyAllSoundInstances()
        {
            foreach (var instance in InstanceToListener)
            {
                instance.Key.Dispose();
            }
            InstanceToListener.Clear();

            foreach (var soundInstance in FastInstances)
            {
                soundInstance.Dispose();
            }
            FastInstances.Clear();
        }
コード例 #3
0
        internal void DestroySoundInstances(AudioListenerComponent listener)
        {
            foreach (var instance in InstanceToListener.Keys)
            {
                instance.Dispose();
                listener.AttachedInstances.Remove(instance);
            }
            InstanceToListener.Clear();

            for (var i = 0; i < FastInstances.Count; i++)
            {
                var instance = FastInstances[i];
                if (instance.Listener == listener.Listener)
                {
                    //Decrement the loop counter to iterate this index again, since later elements will get moved down during the remove operation.
                    FastInstances.RemoveAt(i--);
                    DestroySoundInstance(instance);
                }
            }
        }