diff --git a/Assets/Cryville/Crtr/Game.cs b/Assets/Cryville/Crtr/Game.cs index ec9310f..dbf085f 100644 --- a/Assets/Cryville/Crtr/Game.cs +++ b/Assets/Cryville/Crtr/Game.cs @@ -76,14 +76,30 @@ namespace Cryville.Crtr { #if UNITY_ANDROID Cryville.Audio.OpenSL.OutputClient.CallbackFunction = audioCallback; #endif - AudioManager = EngineBuilder.Create(); - Logger.Log("main", 1, "Audio", "Using audio API: {0}", AudioManager.GetType().Namespace); - AudioClient = AudioManager.GetDefaultDevice(DataFlow.Out).Connect(); - AudioClient.Init(AudioClient.DefaultFormat); - AudioClient.Source = AudioSequencer = new SimpleSequencerSource(); - AudioSession = AudioSequencer.NewSession(); - AudioSequencer.Playing = true; - AudioClient.Start(); + while (true) { + try { + AudioManager = EngineBuilder.Create(); + if (AudioManager == null) { + Popup.Create("Cannot initialize audio engine"); + Logger.Log("main", 5, "Audio", "Cannot initialize audio engine"); + } + else { + Logger.Log("main", 1, "Audio", "Using audio API: {0}", AudioManager.GetType().Namespace); + AudioClient = AudioManager.GetDefaultDevice(DataFlow.Out).Connect(); + AudioClient.Init(AudioClient.DefaultFormat); + AudioClient.Source = AudioSequencer = new SimpleSequencerSource(); + AudioSession = AudioSequencer.NewSession(); + AudioSequencer.Playing = true; + AudioClient.Start(); + } + break; + } + catch (Exception ex) { + Logger.Log("main", 4, "Audio", "An error occured when initializing the audio engine: {0}", ex); + Logger.Log("main", 3, "Audio", "Trying to use fallback audio engines"); + EngineBuilder.Engines.Remove(AudioManager.GetType()); + } + } ChartPlayer.motionRegistry = new Dictionary { { "pt" , new MotionRegistry(typeof(VecPt)) },