using System.Collections.Generic; using Wwise.Wooduan.Tools; namespace Wwise.Wooduan.Core { public class PCKManager { public static bool Enabled; private static readonly Dictionary _loadedPackageList = new Dictionary(); /// /// Load a audio package by name. /// public static void LoadPackage(string packageName) { if (!Enabled && packageName != "Init") return; if (!packageName.EndsWith(".pck")) packageName += ".pck"; var result = AkSoundEngine.LoadFilePackage(packageName, out uint id); if (result == AKRESULT.AK_Success) { AkWooduanHelper.DebugToConsole(AudioLogVerbosity.Notification, AudioObjectType.AudioPackage, AudioTriggerSource.Initialization, AudioAction.Load, packageName); _loadedPackageList[packageName] = id; } else AkWooduanHelper.DebugToConsole(AudioLogVerbosity.Error, AudioObjectType.AudioPackage, AudioTriggerSource.Initialization, AudioAction.Load, packageName, null, result.ToString()); } /// /// Reload a single audio package by name. /// public static void ReloadPackage(string packageName) { if (!Enabled) return; if (!_loadedPackageList.ContainsKey(packageName)) return; if (!packageName.EndsWith(".pck")) packageName += ".pck"; // unload file package only works with uint parameter var result = AkSoundEngine.UnloadFilePackage(_loadedPackageList[packageName]); if (result == AKRESULT.AK_Success) LoadPackage(packageName); } /// /// Reload all audio packages related to voice. /// public static void ReloadVoicePackages() { if (!Enabled) return; foreach (var package in _loadedPackageList.Keys) { if (package.StartsWith("Voice")) ReloadPackage(package); } } /// /// Reload all audio packages. /// public static void ReloadAllPackages() { if (!Enabled) return; AkSoundEngine.UnloadAllFilePackages(); foreach (var package in _loadedPackageList.Keys) { LoadPackage(package); } } } }