// Project Lab - NHTV Igad #include "UnrealProject.h" #include "SoundEffect.h" #include "Prefs.h" #include "DefaultGameInstance.h" // Sets default values ASoundEffect::ASoundEffect() { PrimaryActorTick.bCanEverTick = true; bReplicates = true; RootComponent = m_audio = CreateDefaultSubobject(TEXT("Audio")); } void ASoundEffect::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME_CONDITION(ASoundEffect, m_audio, COND_InitialOnly); } // Called when the game starts or when spawned void ASoundEffect::BeginPlay() { Super::BeginPlay(); m_audio->OnAudioFinished.AddDynamic(this, &ASoundEffect::OnAudioFinished); if (!m_audio->Sound) Destroy(); // Initial volume float volume = Cast(GetGameInstance())->GetPrefs()->sfxVolume; m_audio->SetVolumeMultiplier(volume); m_audio->Play(); } // Called every frame void ASoundEffect::Tick( float DeltaTime ) { Super::Tick( DeltaTime ); // Update volume settings float volume = Cast(GetGameInstance())->GetPrefs()->sfxVolume; m_audio->SetVolumeMultiplier(volume); } void ASoundEffect::OnAudioFinished() { Destroy(); } void ASoundEffect::Init(USoundBase* sound) { m_audio->SetSound(sound); }