diff --git a/src/Audio/AudioDevice.cs b/src/Audio/AudioDevice.cs index 85d4d09..a0e4bf7 100644 --- a/src/Audio/AudioDevice.cs +++ b/src/Audio/AudioDevice.cs @@ -193,6 +193,16 @@ namespace MoonWorks.Audio } } + internal void ClearTweens( + WeakReference soundReference, + AudioTweenProperty property + ) { + lock (StateLock) + { + AudioTweenManager.ClearTweens(soundReference, property); + } + } + internal void WakeThread() { WakeSignal.Set(); diff --git a/src/Audio/AudioTweenManager.cs b/src/Audio/AudioTweenManager.cs index f74f43f..2f5932c 100644 --- a/src/Audio/AudioTweenManager.cs +++ b/src/Audio/AudioTweenManager.cs @@ -102,6 +102,11 @@ namespace MoonWorks.Audio } } + public void ClearTweens(WeakReference soundReference, AudioTweenProperty property) + { + AudioTweens.Remove((soundReference, property)); + } + private void AddTween( AudioTween audioTween ) { diff --git a/src/Audio/SoundInstance.cs b/src/Audio/SoundInstance.cs index 8788942..d219a04 100644 --- a/src/Audio/SoundInstance.cs +++ b/src/Audio/SoundInstance.cs @@ -301,11 +301,10 @@ namespace MoonWorks.Audio ReverbEffect = reverbEffect; } - // TODO: since we're using setters now, could just get rid of the property setters - public void SetPan(float targetValue) { Pan = targetValue; + Device.ClearTweens(weakReference, AudioTweenProperty.Pan); } public void SetPan(float targetValue, float duration, EasingFunction easingFunction) @@ -321,6 +320,7 @@ namespace MoonWorks.Audio public void SetPitch(float targetValue) { Pitch = targetValue; + Device.ClearTweens(weakReference, AudioTweenProperty.Pitch); } public void SetPitch(float targetValue, float duration, EasingFunction easingFunction) @@ -336,6 +336,7 @@ namespace MoonWorks.Audio public void SetVolume(float targetValue) { Volume = targetValue; + Device.ClearTweens(weakReference, AudioTweenProperty.Volume); } public void SetVolume(float targetValue, float duration, EasingFunction easingFunction) @@ -351,6 +352,7 @@ namespace MoonWorks.Audio public void SetFilterFrequency(float targetValue) { FilterFrequency = targetValue; + Device.ClearTweens(weakReference, AudioTweenProperty.FilterFrequency); } public void SetFilterFrequency(float targetValue, float duration, EasingFunction easingFunction) @@ -371,6 +373,7 @@ namespace MoonWorks.Audio public void SetReverb(float targetValue) { Reverb = targetValue; + Device.ClearTweens(weakReference, AudioTweenProperty.Reverb); } public void SetReverb(float targetValue, float duration, EasingFunction easingFunction)