/// <summary> /// Preload all audio from <see cref="AudioClips"/> /// </summary> private static void LoadAudioClips() { // Load default paths first foreach (AudioClips audio in Enum.GetValues(typeof(AudioClips))) { // Reflection magic! MemberInfo memberInfo = typeof(AudioClips).GetMember(audio.ToString()).FirstOrDefault(); AudioClipAttr audioClipAttr = (AudioClipAttr)Attribute.GetCustomAttribute(memberInfo, typeof(AudioClipAttr)); AudioInfo audioInfo = new AudioInfo(); audioInfo.path = audioClipAttr.path; audioInfo.loop = audioClipAttr.loop; audioInfo.stream = false; audioInfo.audio = null; _audioMap.Add(audioClipAttr.key, audio); _audioCache.Add(audio, audioInfo); } // Override default paths via settings // TODO: Implement // Load AudioClip objects // Note: No file existence check up until this step, aka no fallbacks foreach (AudioInfo audioInfo in _audioCache.Values.ToList()) { audioInfo.audio = LoadAudioClip(SysPath.GetDataPath(audioInfo.path), audioInfo.stream); } }
/// <summary> /// Loads an <see cref="AudioInfo"/> ready to be used by a <see cref="IAudioPlayer"/> /// </summary> /// <returns> /// A prepared <see cref="AudioInfo"/> /// </returns> /// <param name='path'> /// Path to audio file /// </param> /// <param name='loop'> /// Whether or not the <see cref="IAudioPlayer"/> should loop the audio /// </param> /// <param name='stream'> /// Whether or not the <see cref="AudioClip"/> should be fully loaded into memory or streamed from disk /// </param> public static AudioInfo LoadAudio(string path, bool loop, bool stream) { AudioInfo audioInfo = new AudioInfo(); audioInfo.path = path; audioInfo.loop = loop; audioInfo.stream = stream; audioInfo.audio = LoadAudioClip(path, stream); return audioInfo; }