using System.Collections.Generic; using EasingFunction = System.Func; namespace MoonWorks.Audio { internal enum AudioTweenProperty { Pan, Pitch, Volume, FilterFrequency, Reverb } internal class AudioTween { public System.WeakReference SoundInstanceReference; public AudioTweenProperty Property; public EasingFunction EasingFunction; public float Time; public float StartValue; public float EndValue; public float DelayTime; public float Duration; } internal class AudioTweenPool { private Queue Tweens = new Queue(); public AudioTween Obtain() { if (Tweens.Count > 0) { var tween = Tweens.Dequeue(); return tween; } else { return new AudioTween(); } } public void Free(AudioTween tween) { Tweens.Enqueue(tween); } } }