62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
// 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<USurvivalAudioSettings>();
|
|
}
|
|
|
|
USoundClass* USurvivalAudioSettings::Resolve(const TSoftObjectPtr<USoundClass>& Asset, TStrongObjectPtr<USoundClass>& 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);
|
|
}
|