void UAkGameplayStatics::UnloadBankByName(const FString& BankName) { FAkAudioDevice * AudioDevice = FAkAudioDevice::Get(); if( AudioDevice ) { if(AudioDevice->GetAkBankManager() != NULL ) { for ( TObjectIterator<UAkAudioBank> Iter; Iter; ++Iter ) { if( Iter->GetName() == BankName ) { Iter->Unload(); return; } } // Bank not found in the assets, unload it by name anyway AudioDevice->UnloadBank(BankName); } else { AudioDevice->UnloadBank(BankName); } } }
void UAkGameplayStatics::LoadBankByName(const FString& BankName) { FAkAudioDevice * AudioDevice = FAkAudioDevice::Get(); if( AudioDevice ) { if(AudioDevice->GetAkBankManager() != NULL ) { for ( TObjectIterator<UAkAudioBank> Iter; Iter; ++Iter ) { if( Iter->GetName() == BankName ) { Iter->Load(); return; } } // Bank not found in the assets, load it by name anyway AkUInt32 bankID; AudioDevice->LoadBank(BankName, AK_DEFAULT_POOL_ID, bankID); } else { AkUInt32 bankID; AudioDevice->LoadBank(BankName, AK_DEFAULT_POOL_ID, bankID); } } }
void UAkGameplayStatics::LoadBanks(const TArray<UAkAudioBank *>& SoundBanks, bool SynchronizeSoundBanks) { if( SynchronizeSoundBanks ) { TSet<UAkAudioBank*> BanksToUnload; TSet<UAkAudioBank*> BanksToLoad; TSet<UAkAudioBank*> InputBankSet(SoundBanks); FAkAudioDevice * AkAudioDevice = FAkAudioDevice::Get(); if( AkAudioDevice ) { FAkBankManager* BankManager = AkAudioDevice->GetAkBankManager(); if( BankManager ) { FScopeLock Lock(&BankManager->m_BankManagerCriticalSection); const TSet<UAkAudioBank *>* LoadedBanks = BankManager->GetLoadedBankList(); // We load what's in the input set, but not in the already loaded set BanksToLoad = InputBankSet.Difference(*LoadedBanks); // We unload what's in the loaded set but not in the input set BanksToUnload = LoadedBanks->Difference(InputBankSet); } else { UE_LOG(LogScript, Warning, TEXT("UAkGameplayStatics::LoadBanks: Bank Manager unused, and CleanUpBanks set to true!")); } } for(TSet<UAkAudioBank*>::TConstIterator LoadIter(BanksToLoad); LoadIter; ++LoadIter) { if( *LoadIter != NULL ) { (*LoadIter)->Load(); } } for(TSet<UAkAudioBank*>::TConstIterator UnloadIter(BanksToUnload); UnloadIter; ++UnloadIter) { if( *UnloadIter != NULL ) { (*UnloadIter)->Unload(); } } } else { for(TArray<UAkAudioBank*>::TConstIterator LoadIter(SoundBanks); LoadIter; ++LoadIter) { if( *LoadIter != NULL ) { (*LoadIter)->Load(); } } } }