mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Fix some mistakes
This commit is contained in:
parent
f91771eb99
commit
b07277643e
@ -643,11 +643,6 @@ namespace NewHorizons.Builder.Props
|
||||
modules.Add(new SlideRotationModule());
|
||||
}
|
||||
|
||||
if (loaders.Count == 0)
|
||||
{
|
||||
Slide.WriteModules(modules, ref slide._modulesList, ref slide._modulesData, ref slide.lengths);
|
||||
}
|
||||
|
||||
var count = loaders.Count;
|
||||
foreach (var loader in loaders)
|
||||
{
|
||||
|
||||
@ -19,6 +19,8 @@ namespace NewHorizons.Handlers
|
||||
private static AudioLibrary.AudioEntry[] _defaultLibraryEntries;
|
||||
private static AudioLibrary _library;
|
||||
|
||||
private static bool _isSetUp;
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
_customAudioTypes = new Dictionary<string, AudioType>();
|
||||
@ -28,7 +30,11 @@ namespace NewHorizons.Handlers
|
||||
PostInit
|
||||
);
|
||||
|
||||
SceneManager.sceneUnloaded += SceneManager_sceneUnloaded;
|
||||
if (!_isSetUp)
|
||||
{
|
||||
_isSetUp = true;
|
||||
SceneManager.sceneUnloaded += SceneManager_sceneUnloaded;
|
||||
}
|
||||
}
|
||||
|
||||
private static void SceneManager_sceneUnloaded(Scene arg0)
|
||||
@ -115,8 +121,9 @@ namespace NewHorizons.Handlers
|
||||
|
||||
_customAudioTypes.Add(id, audioType);
|
||||
|
||||
_library.audioEntries = _library.audioEntries.Append(new AudioLibrary.AudioEntry(audioType, audioClips)).ToArray(); // concat custom entries
|
||||
Locator.GetAudioManager()._audioLibraryDict = _library.BuildAudioEntryDictionary();
|
||||
var entry = new AudioLibrary.AudioEntry(audioType, audioClips);
|
||||
_library.audioEntries = _library.audioEntries.Append(entry).ToArray();
|
||||
Locator.GetAudioManager()._audioLibraryDict.Add((int)audioType, entry);
|
||||
|
||||
return audioType;
|
||||
}
|
||||
|
||||
@ -73,6 +73,8 @@ public static class AudioUtilities
|
||||
_loadedAudioClips.Clear();
|
||||
}
|
||||
|
||||
public static Action allLoadersComplete;
|
||||
|
||||
public class AsyncAudioLoader
|
||||
{
|
||||
public class AudioLoadedEvent : UnityEvent<AudioClip> { }
|
||||
@ -101,6 +103,8 @@ public static class AudioUtilities
|
||||
{
|
||||
public static SingletonAudioLoader Instance { get; private set; }
|
||||
|
||||
public int loadingCount = 0;
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
@ -110,10 +114,12 @@ public static class AudioUtilities
|
||||
private void OnSceneUnloaded(Scene _)
|
||||
{
|
||||
StopAllCoroutines();
|
||||
loadingCount = 0;
|
||||
}
|
||||
|
||||
public void Load(AsyncAudioLoader loader)
|
||||
{
|
||||
loadingCount++;
|
||||
StartCoroutine(GetAudioClip(loader));
|
||||
}
|
||||
|
||||
@ -128,85 +134,93 @@ public static class AudioUtilities
|
||||
{
|
||||
NHLogger.LogVerbose($"Already loaded audio at path: {path}");
|
||||
loader.audioLoadedEvent?.Invoke(_loadedAudioClips[path]);
|
||||
yield break;
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(path);
|
||||
|
||||
UnityEngine.AudioType audioType;
|
||||
|
||||
switch (extension)
|
||||
{
|
||||
case ".wav":
|
||||
audioType = UnityEngine.AudioType.WAV;
|
||||
break;
|
||||
case ".ogg":
|
||||
audioType = UnityEngine.AudioType.OGGVORBIS;
|
||||
break;
|
||||
case ".mp3":
|
||||
audioType = UnityEngine.AudioType.MPEG;
|
||||
break;
|
||||
default:
|
||||
throw new Exception($"Couldn't load Audio at {path} : Invalid audio file extension ({extension}) must be .wav or .ogg or .mp3");
|
||||
}
|
||||
|
||||
path = $"file:///{path.Replace("+", "%2B")}";
|
||||
|
||||
if (audioType == UnityEngine.AudioType.MPEG)
|
||||
{
|
||||
DownloadHandlerAudioClip dh = new DownloadHandlerAudioClip(path, UnityEngine.AudioType.MPEG);
|
||||
dh.compressed = true;
|
||||
using UnityWebRequest www = new UnityWebRequest(path, "GET", dh, null);
|
||||
yield return www.SendWebRequest();
|
||||
|
||||
// Could have loaded in the meantime
|
||||
if (_loadedAudioClips.ContainsKey(path))
|
||||
{
|
||||
NHLogger.LogVerbose($"Already loaded audio at {path}");
|
||||
loader.audioLoadedEvent?.Invoke(_loadedAudioClips[path]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (www.isNetworkError || www.isHttpError)
|
||||
{
|
||||
NHLogger.LogError($"Couldn't load Audio at {path} : {www.error}");
|
||||
loader.audioLoadedEvent?.Invoke(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var audioClip = dh.audioClip;
|
||||
audioClip.name = Path.GetFileNameWithoutExtension(path);
|
||||
_loadedAudioClips.Add(path, audioClip);
|
||||
loader.audioLoadedEvent?.Invoke(audioClip);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(path, audioType);
|
||||
yield return www.SendWebRequest();
|
||||
var extension = Path.GetExtension(path);
|
||||
|
||||
// Could have loaded in the meantime
|
||||
if (_loadedAudioClips.ContainsKey(path))
|
||||
UnityEngine.AudioType audioType;
|
||||
|
||||
switch (extension)
|
||||
{
|
||||
NHLogger.LogVerbose($"Already loaded audio at {path}");
|
||||
loader.audioLoadedEvent?.Invoke(_loadedAudioClips[path]);
|
||||
case ".wav":
|
||||
audioType = UnityEngine.AudioType.WAV;
|
||||
break;
|
||||
case ".ogg":
|
||||
audioType = UnityEngine.AudioType.OGGVORBIS;
|
||||
break;
|
||||
case ".mp3":
|
||||
audioType = UnityEngine.AudioType.MPEG;
|
||||
break;
|
||||
default:
|
||||
throw new Exception($"Couldn't load Audio at {path} : Invalid audio file extension ({extension}) must be .wav or .ogg or .mp3");
|
||||
}
|
||||
else
|
||||
|
||||
path = $"file:///{path.Replace("+", "%2B")}";
|
||||
|
||||
if (audioType == UnityEngine.AudioType.MPEG)
|
||||
{
|
||||
if (www.isNetworkError || www.isHttpError)
|
||||
DownloadHandlerAudioClip dh = new DownloadHandlerAudioClip(path, UnityEngine.AudioType.MPEG);
|
||||
dh.compressed = true;
|
||||
using UnityWebRequest www = new UnityWebRequest(path, "GET", dh, null);
|
||||
yield return www.SendWebRequest();
|
||||
|
||||
// Could have loaded in the meantime
|
||||
if (_loadedAudioClips.ContainsKey(path))
|
||||
{
|
||||
NHLogger.LogError($"Couldn't load Audio at {path} : {www.error}");
|
||||
loader.audioLoadedEvent?.Invoke(null);
|
||||
NHLogger.LogVerbose($"Already loaded audio at {path}");
|
||||
loader.audioLoadedEvent?.Invoke(_loadedAudioClips[path]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var audioClip = DownloadHandlerAudioClip.GetContent(www);
|
||||
audioClip.name = Path.GetFileNameWithoutExtension(path);
|
||||
_loadedAudioClips.Add(path, audioClip);
|
||||
loader.audioLoadedEvent?.Invoke(audioClip);
|
||||
if (www.isNetworkError || www.isHttpError)
|
||||
{
|
||||
NHLogger.LogError($"Couldn't load Audio at {path} : {www.error}");
|
||||
loader.audioLoadedEvent?.Invoke(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var audioClip = dh.audioClip;
|
||||
audioClip.name = Path.GetFileNameWithoutExtension(path);
|
||||
_loadedAudioClips.Add(path, audioClip);
|
||||
loader.audioLoadedEvent?.Invoke(audioClip);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(path, audioType);
|
||||
yield return www.SendWebRequest();
|
||||
|
||||
// Could have loaded in the meantime
|
||||
if (_loadedAudioClips.ContainsKey(path))
|
||||
{
|
||||
NHLogger.LogVerbose($"Already loaded audio at {path}");
|
||||
loader.audioLoadedEvent?.Invoke(_loadedAudioClips[path]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (www.isNetworkError || www.isHttpError)
|
||||
{
|
||||
NHLogger.LogError($"Couldn't load Audio at {path} : {www.error}");
|
||||
loader.audioLoadedEvent?.Invoke(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var audioClip = DownloadHandlerAudioClip.GetContent(www);
|
||||
audioClip.name = Path.GetFileNameWithoutExtension(path);
|
||||
_loadedAudioClips.Add(path, audioClip);
|
||||
loader.audioLoadedEvent?.Invoke(audioClip);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
loadingCount--;
|
||||
|
||||
if (loadingCount == 0)
|
||||
{
|
||||
allLoadersComplete?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user