diff --git a/Plugins/Depra.Sound.dll b/Plugins/Depra.Sound.dll index 3a839b6..a8732b5 100644 Binary files a/Plugins/Depra.Sound.dll and b/Plugins/Depra.Sound.dll differ diff --git a/Runtime/Source/AudioSourceProxy.cs b/Runtime/Source/AudioSourceProxy.cs index c929ae6..a695cc5 100644 --- a/Runtime/Source/AudioSourceProxy.cs +++ b/Runtime/Source/AudioSourceProxy.cs @@ -34,8 +34,8 @@ event Action IAudioSource.Stopped void IAudioSource.Stop() => _source.Stop(); void IAudioSource.Play(IAudioTrack track) => _source.Play(track); + void IAudioSource.Play(IAudioClip clip, IEnumerable parameters) => _source.Play(clip, parameters); - void IAudioSource.Write(IAudioSourceParameter parameter) => _source.Write(parameter); IAudioSourceParameter IAudioSource.Read(Type parameterType) => _source.Read(parameterType); IEnumerable IAudioSource.EnumerateParameters() => _source.EnumerateParameters(); } diff --git a/Runtime/Source/OneTimeAudioSource.cs b/Runtime/Source/OneTimeAudioSource.cs index 5cc791e..e4dc6bf 100644 --- a/Runtime/Source/OneTimeAudioSource.cs +++ b/Runtime/Source/OneTimeAudioSource.cs @@ -49,6 +49,14 @@ public void Play(IAudioTrack track) _selfDestroyCoroutine = StartCoroutine(SelfDestroy(threshold)); } + public void Play(IAudioClip clip, IEnumerable parameters) + { + TryStopSelfDestroy(); + _source.Play(clip, parameters); + var threshold = clip.Duration + _threshold; + _selfDestroyCoroutine = StartCoroutine(SelfDestroy(threshold)); + } + private IEnumerator SelfDestroy(float duration) { yield return new WaitForSeconds(duration); @@ -65,7 +73,6 @@ private void TryStopSelfDestroy() } } - void IAudioSource.Write(IAudioSourceParameter parameter) => _source.Write(parameter); IAudioSourceParameter IAudioSource.Read(Type parameterType) => _source.Read(parameterType); IEnumerable IAudioSource.EnumerateParameters() => _source.EnumerateParameters(); } diff --git a/Runtime/Source/SceneAudioSourceRef.cs b/Runtime/Source/SceneAudioSourceRef.cs index 17a6161..bb49792 100644 --- a/Runtime/Source/SceneAudioSourceRef.cs +++ b/Runtime/Source/SceneAudioSourceRef.cs @@ -33,8 +33,8 @@ event Action IAudioSource.Stopped void IAudioSource.Stop() => Source?.Stop(); void IAudioSource.Play(IAudioTrack track) => Source?.Play(track); + void IAudioSource.Play(IAudioClip clip, IEnumerable parameters) => Source?.Play(clip, parameters); - void IAudioSource.Write(IAudioSourceParameter parameter) => Source.Write(parameter); IAudioSourceParameter IAudioSource.Read(Type parameterType) => Source.Read(parameterType); IEnumerable IAudioSource.EnumerateParameters() => Source.EnumerateParameters(); } diff --git a/Runtime/Source/UnityAudioSource.cs b/Runtime/Source/UnityAudioSource.cs index 70b8a94..b5fb20a 100644 --- a/Runtime/Source/UnityAudioSource.cs +++ b/Runtime/Source/UnityAudioSource.cs @@ -98,9 +98,6 @@ public void Write(IAudioSourceParameter parameter) _ => new NullParameter() }; - public TParameter Read() where TParameter : IAudioSourceParameter => - (TParameter) Read(typeof(TParameter)); - private void OnFinished() => Stopped?.Invoke(AudioStopReason.FINISHED); private IEnumerable SupportedTypes() => new[] @@ -114,6 +111,12 @@ private IEnumerable SupportedTypes() => new[] typeof(RuntimePositionParameter) }; + void IAudioSource.Play(IAudioClip clip, IEnumerable parameters) + { + Guard.AgainstUnsupportedType(clip.GetType(), SUPPORTED_TRACK); + Play((UnityAudioClip) clip, parameters); + } + IEnumerable IAudioSource.EnumerateParameters() => SupportedTypes().Select(Read); } } \ No newline at end of file diff --git a/package.json b/package.json index 5222ac3..4048874 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.depra.sound.unity", - "version": "0.0.26-pre.2", + "version": "0.0.26-pre.3", "displayName": "Depra.Sound", "description": "", "unity": "2021.3",