private void loadedBankRegister(LoadedBank loadedBank, string bankPath, string bankName, bool loadSamples, FMOD.RESULT loadResult) { if (loadResult == FMOD.RESULT.OK) { loadedBank.RefCount = 1; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks.Add(bankName, loadedBank); } else if (loadResult == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED) { // someone loaded this bank directly using the studio API // TODO: will the null bank handle be an issue loadedBank.RefCount = 2; Instance.loadedBanks.Add(bankName, loadedBank); } else { throw new BankLoadException(bankPath, loadResult); } }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks[bankName] = loadedBank; } else { string bankPath = RuntimeUtils.GetBankPath(bankName); FMOD.RESULT loadResult; #if UNITY_ANDROID && !UNITY_EDITOR if (Settings.Instance.AndroidUseOBB) { #if UNITY_2018_1_OR_NEWER Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); #else using (var www = new WWW(bankPath)) { while (!www.isDone) { } if (!String.IsNullOrEmpty(www.error)) { throw new BankLoadException(bankPath, www.error); } else { LoadedBank loadedBank = new LoadedBank(); loadResult = Instance.studioSystem.loadBankMemory(www.bytes, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } #endif } else #elif UNITY_WEBGL && !UNITY_EDITOR if (true) { Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); } else #endif // (UNITY_ANDROID || UNITY_WEBGL) && !UNITY_EDITOR { LoadedBank loadedBank = new LoadedBank(); loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } }
public static bool AnyBankLoading() { bool flag = false; foreach (LoadedBank value in Instance.loadedBanks.Values) { LoadedBank current = value; current.Bank.getSampleLoadingState(out LOADING_STATE state); flag |= (state == LOADING_STATE.LOADING); } return(flag); }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks[bankName] = loadedBank; } else { string bankPath = RuntimeUtils.GetBankPath(bankName); FMOD.RESULT loadResult; #if UNITY_ANDROID && !UNITY_EDITOR if (!bankPath.StartsWith("file:///android_asset")) { using (var www = new WWW(bankPath)) { while (!www.isDone) { } if (!String.IsNullOrEmpty(www.error)) { throw new BankLoadException(bankPath, www.error); } else { LoadedBank loadedBank = new LoadedBank(); loadResult = Instance.studioSystem.loadBankMemory(www.bytes, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); //loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } } else #elif UNITY_WEBGL if (bankPath.Contains("://")) { Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); } else #endif { LoadedBank loadedBank = new LoadedBank(); loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks[bankName] = loadedBank; } else { string bankFolder = Instance.currentPlatform.GetBankFolder(); #if !UNITY_EDITOR if (!string.IsNullOrEmpty(Settings.Instance.TargetSubFolder)) { bankFolder = Path.Combine(bankFolder, Settings.Instance.TargetSubFolder); } #endif const string BankExtension = ".bank"; string bankPath; if (System.IO.Path.GetExtension(bankName) != BankExtension) { bankPath = string.Format("{0}/{1}{2}", bankFolder, bankName, BankExtension); } else { bankPath = string.Format("{0}/{1}", bankFolder, bankName); } #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_WEBGL) if (bankPath.Contains("://")) { Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); } else #endif // !UNITY_EDITOR && (UNITY_ANDROID || UNITY_WEBGL) { LoadedBank loadedBank = new LoadedBank(); FMOD.RESULT loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } }
public static void LoadBank(TextAsset asset, bool loadSamples = false) { string bankName = asset.name; if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else { LoadedBank loadedBank = new LoadedBank(); FMOD.RESULT loadResult = Instance.studioSystem.loadBankMemory(asset.bytes, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); if (loadResult == FMOD.RESULT.OK) { loadedBank.RefCount = 1; Instance.loadedBanks.Add(bankName, loadedBank); if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else if (loadResult == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED) { // someone loaded this bank directly using the studio API // TODO: will the null bank handle be an issue loadedBank.RefCount = 2; Instance.loadedBanks.Add(bankName, loadedBank); } else { throw new BankLoadException(bankName, loadResult); } } }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank value = Instance.loadedBanks[bankName]; value.RefCount++; if (loadSamples) { value.Bank.loadSampleData(); } Instance.loadedBanks[bankName] = value; } else { string bankPath = RuntimeUtils.GetBankPath(bankName); LoadedBank loadedBank = default(LoadedBank); RESULT loadResult = Instance.studioSystem.loadBankFile(bankPath, LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } }
IEnumerator loadFromWeb(string bankPath, string bankName, bool loadSamples) { byte[] loadWebResult; FMOD.RESULT loadResult; UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(bankPath); yield return(www.SendWebRequest()); loadWebResult = www.downloadHandler.data; LoadedBank loadedBank = new LoadedBank(); loadResult = Instance.studioSystem.loadBankMemory(loadWebResult, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); if (loadResult != FMOD.RESULT.OK) { UnityEngine.Debug.LogWarningFormat("[FMOD] loadFromWeb. Path = {0}, result = {1}.", bankPath, loadResult); } loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); Debug.LogFormat("[FMOD] Finished loading {0}", bankPath); }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else { LoadedBank loadedBank = new LoadedBank(); string bankPath = RuntimeUtils.GetBankPath(bankName); var loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); if (loadResult == FMOD.RESULT.OK) { loadedBank.RefCount = 1; Instance.loadedBanks.Add(bankName, loadedBank); if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else if (loadResult == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED) { // someone loaded this bank directly using the studio API // TODO: will the null bank handle be an issue loadedBank.RefCount = 2; Instance.loadedBanks.Add(bankName, loadedBank); } else { throw new BankLoadException(bankPath, loadResult); } } }
private void loadedBankRegister(LoadedBank loadedBank, string bankPath, string bankName, bool loadSamples, RESULT loadResult) { switch (loadResult) { case RESULT.OK: loadedBank.RefCount = 1; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks.Add(bankName, loadedBank); break; case RESULT.ERR_EVENT_ALREADY_LOADED: loadedBank.RefCount = 2; Instance.loadedBanks.Add(bankName, loadedBank); break; default: throw new BankLoadException(bankPath, loadResult); } }
public static void LoadBank(TextAsset asset, bool loadSamples = false) { string name = asset.name; if (Instance.loadedBanks.ContainsKey(name)) { LoadedBank loadedBank = Instance.loadedBanks[name]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else { LoadedBank value = default(LoadedBank); RESULT rESULT = Instance.studioSystem.loadBankMemory(asset.bytes, LOAD_BANK_FLAGS.NORMAL, out value.Bank); switch (rESULT) { case RESULT.OK: value.RefCount = 1; Instance.loadedBanks.Add(name, value); if (loadSamples) { value.Bank.loadSampleData(); } break; case RESULT.ERR_EVENT_ALREADY_LOADED: value.RefCount = 2; Instance.loadedBanks.Add(name, value); break; default: throw new BankLoadException(name, rESULT); } } }
void ExecuteSampleLoadRequestsIfReady() { if (sampleLoadRequests.Count > 0) { foreach (string bankName in sampleLoadRequests) { if (!loadedBanks.ContainsKey(bankName)) { // Not ready return; } } // All requested banks are loaded, so we can now load sample data foreach (string bankName in sampleLoadRequests) { LoadedBank loadedBank = loadedBanks[bankName]; CheckInitResult(loadedBank.Bank.loadSampleData(), string.Format("Loading sample data for bank: {0}", bankName)); } sampleLoadRequests.Clear(); } }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else { LoadedBank loadedBank = new LoadedBank(); string bankPath = RuntimeUtils.GetBankPath(bankName); FMOD.RESULT loadResult; #if UNITY_ANDROID && !UNITY_EDITOR if (!bankPath.StartsWith("file:///android_asset")) { using (var www = new WWW(bankPath)) { while (!www.isDone) { } if (!String.IsNullOrEmpty(www.error)) { throw new BankLoadException(bankPath, www.error); } else { loadResult = Instance.studioSystem.loadBankMemory(www.bytes, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); } } } else #endif { loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); } if (loadResult == FMOD.RESULT.OK) { loadedBank.RefCount = 1; Instance.loadedBanks.Add(bankName, loadedBank); if (loadSamples) { loadedBank.Bank.loadSampleData(); } } else if (loadResult == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED) { // someone loaded this bank directly using the studio API // TODO: will the null bank handle be an issue loadedBank.RefCount = 2; Instance.loadedBanks.Add(bankName, loadedBank); } else { throw new BankLoadException(bankPath, loadResult); } } }
public static void LoadBank(string bankName, bool loadSamples = false) { if (Instance.loadedBanks.ContainsKey(bankName)) { LoadedBank loadedBank = Instance.loadedBanks[bankName]; loadedBank.RefCount++; if (loadSamples) { loadedBank.Bank.loadSampleData(); } Instance.loadedBanks[bankName] = loadedBank; } else { string bankFolder = Instance.currentPlatform.GetBankFolder(); #if !UNITY_EDITOR if (!string.IsNullOrEmpty(Settings.Instance.TargetSubFolder)) { bankFolder = Path.Combine(bankFolder, Settings.Instance.TargetSubFolder); } #endif const string BankExtension = ".bank"; string bankPath; if (System.IO.Path.GetExtension(bankName) != BankExtension) { bankPath = string.Format("{0}/{1}{2}", bankFolder, bankName, BankExtension); } else { bankPath = string.Format("{0}/{1}", bankFolder, bankName); } #if UNITY_ANDROID && !UNITY_EDITOR if (Settings.Instance.AndroidUseOBB) { #if UNITY_2018_1_OR_NEWER Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); #else using (var www = new WWW(bankPath)) { while (!www.isDone) { } if (!String.IsNullOrEmpty(www.error)) { throw new BankLoadException(bankPath, www.error); } else { LoadedBank loadedBank = new LoadedBank(); FMOD.RESULT loadResult = Instance.studioSystem.loadBankMemory(www.bytes, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } #endif } else #elif UNITY_WEBGL && !UNITY_EDITOR if (true) { Instance.StartCoroutine(Instance.loadFromWeb(bankPath, bankName, loadSamples)); } else #endif // (UNITY_ANDROID || UNITY_WEBGL) && !UNITY_EDITOR { LoadedBank loadedBank = new LoadedBank(); FMOD.RESULT loadResult = Instance.studioSystem.loadBankFile(bankPath, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank); Instance.loadedBankRegister(loadedBank, bankPath, bankName, loadSamples, loadResult); } } }