public static void UpdateAudio(this CustomAudioJob customAudioJob, AudioManager.AudioJob audioJob) { try { customAudioJob.UpdateAudioJob(audioJob); } catch (Exception) { audioJob.Stop(); } }
public void LoadSaveDelayed(AudioManager audioManager) { audioManager.audioJobs.Clear(); audioManager.updateAudioJobs.Clear(); audioManager.serializableCustomUpdateAudioJobs = this.customAudioJobs; audioManager.serializableUpdateAudioOnGameObject = this.audioJobOnGameObjects; Dictionary <string, AudioJob.AudioJobSave> savedAudioJobs = this.audioJobSaves; foreach (var kv in savedAudioJobs) { audioManager.audioJobs[kv.Key] = kv.Value.LoadAudioJob(); } foreach (var kv in audioManager.serializableCustomUpdateAudioJobs) { string id = kv.Key; SerializableReference customAudioJobReference = kv.Value; customAudioJobReference.Reference.MatchAction( saveableObject => { CustomAudioJob customAudioJob = saveableObject as CustomAudioJob; if (customAudioJob != null) { audioManager.updateAudioJobs[id] = customAudioJob.UpdateAudio; } else { audioManager.debug.LogError($"Failed to cast audioJob {id} as CustomAudioJob"); } }, serializableSaveObject => audioManager.audioJobs[id].Stop() ); } foreach (var kv in audioManager.serializableUpdateAudioOnGameObject) { string id = kv.Key; SerializableReference updateAudioOnGameObjectReference = kv.Value; updateAudioOnGameObjectReference.Reference.MatchAction( saveableObject => { AudioJobOnGameObject audioJobOnGameObject = saveableObject as AudioJobOnGameObject; if (audioJobOnGameObject != null) { audioManager.updateAudioJobs[id] = audioJobOnGameObject.UpdateAudio; } else { audioManager.debug.LogError($"Failed to cast audioJob {id} as AudioJobOnGameObject"); } }, serializableSaveObject => audioManager.audioJobs[id].Stop() ); } }