// Fill out your copyright notice in the Description page of Project Settings. #include "SurvivalAudioSettings.h" #include "Sound/SoundClass.h" FName USurvivalAudioSettings::GetCategoryName() const { return TEXT("Game"); } USurvivalAudioSettings* USurvivalAudioSettings::Get() { // GetMutableDefault et non GetDefault : les champs Cached* sont remplis a la // demande, donc les accesseurs ne peuvent pas etre const. Ce ne sont ni des // UPROPERTY ni des donnees serialisees -- muter un CDO n'est un probleme que // pour ce qui part sur le disque. return GetMutableDefault(); } USoundClass* USurvivalAudioSettings::Resolve(const TSoftObjectPtr& Asset, TStrongObjectPtr& Cache) { if (Cache.IsValid()) { return Cache.Get(); } if (Asset.IsNull()) { return nullptr; } // Synchrone assume : une SoundClass est un objet minuscule, et le chargement // n'a lieu qu'une fois par lancement. // // Reset et pas une affectation : c'est ce Reset qui pose l'ancre GC, et la // raison pour laquelle ces caches ne sont pas des UPROPERTY (voir le header). Cache.Reset(Asset.LoadSynchronous()); return Cache.Get(); } USoundClass* USurvivalAudioSettings::GetMasterSoundClass() { return Resolve(MasterSoundClass, CachedMasterSoundClass); } USoundClass* USurvivalAudioSettings::GetMusicSoundClass() { return Resolve(MusicSoundClass, CachedMusicSoundClass); } USoundClass* USurvivalAudioSettings::GetEffectsSoundClass() { return Resolve(EffectsSoundClass, CachedEffectsSoundClass); } USoundClass* USurvivalAudioSettings::GetUiSoundClass() { return Resolve(UiSoundClass, CachedUiSoundClass); }