From 756a602d7e8c4af37ce2432155f5510650845e41 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Thu, 19 May 2022 18:18:26 -0400 Subject: [PATCH] Support MP3 --- NewHorizons/Utility/AudioUtilities.cs | 49 +++++++++++++++++++++------ 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/NewHorizons/Utility/AudioUtilities.cs b/NewHorizons/Utility/AudioUtilities.cs index 129cbdc4..66684c22 100644 --- a/NewHorizons/Utility/AudioUtilities.cs +++ b/NewHorizons/Utility/AudioUtilities.cs @@ -49,25 +49,54 @@ namespace NewHorizons.Utility case ("ogg"): audioType = UnityEngine.AudioType.OGGVORBIS; break; + case ("mp3"): + Logger.LogWarning($".mp3 files take up a lot of memory! Please use .wav or .ogg instead."); + audioType = UnityEngine.AudioType.MPEG; + break; default: Logger.LogError($"Invalid audio file extension ({extension}) must be .wav or .ogg"); return null; } - using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(filePath, audioType)) + if (audioType == UnityEngine.AudioType.MPEG) { - var result = www.SendWebRequest(); - - while (!result.isDone) { await Task.Delay(100); } - - if (www.isNetworkError) + string fileProtocolPath = $"file://{filePath}"; + DownloadHandlerAudioClip dh = new DownloadHandlerAudioClip(fileProtocolPath, UnityEngine.AudioType.MPEG); + dh.compressed = true; + using (UnityWebRequest www = new UnityWebRequest(fileProtocolPath, "GET", dh, null)) { - Debug.Log(www.error); - return null; + var result = www.SendWebRequest(); + + while (!result.isDone) { await Task.Delay(100); } + + if (www.isNetworkError) + { + Debug.Log(www.error); + return null; + } + else + { + return dh.audioClip; + } } - else + } + else + { + using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(filePath, audioType)) { - return DownloadHandlerAudioClip.GetContent(www); + var result = www.SendWebRequest(); + + while (!result.isDone) { await Task.Delay(100); } + + if (www.isNetworkError) + { + Debug.Log(www.error); + return null; + } + else + { + return DownloadHandlerAudioClip.GetContent(www); + } } } }