123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #include "AkAcousticTexture.h"
- #include "Wwise/Stats/AkAudio.h"
- #if WITH_EDITORONLY_DATA
- #include "Wwise/WwiseProjectDatabase.h"
- #include "Wwise/WwiseResourceCooker.h"
- #include "AkAudioDevice.h"
- #endif
- void UAkAcousticTexture::Serialize(FArchive& Ar)
- {
- Super::Serialize(Ar);
- if (HasAnyFlags(RF_ClassDefaultObject))
- {
- return;
- }
- #if !UE_SERVER
- #if WITH_EDITORONLY_DATA
- if (Ar.IsCooking() && Ar.IsSaving() && !Ar.CookingTarget()->IsServerOnly())
- {
- FWwiseAcousticTextureCookedData CookedDataToArchive;
- if (auto* ResourceCooker = FWwiseResourceCooker::GetForArchive(Ar))
- {
- ResourceCooker->PrepareCookedData(CookedDataToArchive, GetValidatedInfo(AcousticTextureInfo));
- }
- CookedDataToArchive.Serialize(Ar);
- }
- #else
- AcousticTextureCookedData.Serialize(Ar);
- #endif
- #endif
- }
- #if WITH_EDITORONLY_DATA
- bool UAkAcousticTexture::ObjectIsInSoundBanks()
- {
- auto* ResourceCooker = FWwiseResourceCooker::GetDefault();
- if (UNLIKELY(!ResourceCooker))
- {
- UE_LOG(LogAkAudio, Error, TEXT("UAkAcousticTexture::GetWwiseRef: ResourceCooker not initialized"));
- return false;
- }
- auto ProjectDatabase = ResourceCooker->GetProjectDatabase();
- if (UNLIKELY(!ProjectDatabase))
- {
- UE_LOG(LogAkAudio, Error, TEXT("UAkAcousticTexture::GetWwiseRef: ProjectDatabase not initialized"));
- return false;
- }
- FWwiseObjectInfo* AudioTypeInfo = &AcousticTextureInfo;
- const FWwiseRefAcousticTexture AcousticTextureRef = FWwiseDataStructureScopeLock(*ProjectDatabase).GetAcousticTexture(
- GetValidatedInfo(AcousticTextureInfo));
- return AcousticTextureRef.IsValid();
- }
- void UAkAcousticTexture::FillInfo()
- {
- auto* ResourceCooker = FWwiseResourceCooker::GetDefault();
- if (UNLIKELY(!ResourceCooker))
- {
- UE_LOG(LogAkAudio, Error, TEXT("UAkAcousticTexture::FillInfo: ResourceCooker not initialized"));
- return;
- }
- auto ProjectDatabase = ResourceCooker->GetProjectDatabase();
- if (UNLIKELY(!ProjectDatabase))
- {
- UE_LOG(LogAkAudio, Error, TEXT("UAkAcousticTexture::FillInfo: ProjectDatabase not initialized"));
- return;
- }
- FWwiseObjectInfo* AudioTypeInfo = &AcousticTextureInfo;
- const FWwiseRefAcousticTexture AcousticTextureRef = FWwiseDataStructureScopeLock(*ProjectDatabase).GetAcousticTexture(
- GetValidatedInfo(AcousticTextureInfo));
- if (AcousticTextureRef.AcousticTextureName().IsNone() || !AcousticTextureRef.AcousticTextureGuid().IsValid() || AcousticTextureRef.AcousticTextureId() == AK_INVALID_UNIQUE_ID)
- {
- UE_LOG(LogAkAudio, Warning, TEXT("UAkAcousticTexture::FillInfo: Valid object not found in Project Database"));
- return;
- }
- AudioTypeInfo->WwiseName = AcousticTextureRef.AcousticTextureName();
- AudioTypeInfo->WwiseGuid = AcousticTextureRef.AcousticTextureGuid();
- AudioTypeInfo->WwiseShortId = AcousticTextureRef.AcousticTextureId();
- }
- void UAkAcousticTexture::GetAcousticTextureCookedData()
- {
- SCOPED_AKAUDIO_EVENT_2(TEXT("GetAcousticTextureCookedData"));
- if (IWwiseProjectDatabaseModule::IsInACookingCommandlet())
- {
- return;
- }
- auto* ProjectDatabase = FWwiseProjectDatabase::Get();
- if (!ProjectDatabase || !ProjectDatabase->IsProjectDatabaseParsed())
- {
- UE_LOG(LogAkAudio, VeryVerbose, TEXT("UAkAcousticTexture::GetAcousticTextureCookedData: Not loading '%s' because project database is not parsed."), *GetName())
- return;
- }
- auto* ResourceCooker = FWwiseResourceCooker::GetDefault();
- if (UNLIKELY(!ResourceCooker))
- {
- return;
- }
- ResourceCooker->PrepareCookedData(AcousticTextureCookedData, GetValidatedInfo(AcousticTextureInfo));
- }
- #endif
|