Files
Unreal_EmberWild/Source/Survival_projet/Private/SurvivalAudioSettings.cpp
T
2026-08-06 13:27:21 +02:00

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);
}