Files
UnrealEngineUWP/Engine/Source/Editor/AudioEditor/Private/AudioEditorSettings.cpp
miro salminen 9304e121df Niagara Audio - Attenuation is ignored when previewing outside of PIE
#rb ryan.mangin

[CL 28871764 by miro salminen in ue5-main branch]
2023-10-18 04:30:13 -04:00

60 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AudioEditorSettings.h"
#include "AudioDeviceManager.h"
#include "AudioDevice.h"
struct FPropertyChangedEvent;
void UAudioEditorSettings::PostInitProperties()
{
Super::PostInitProperties();
ApplyAttenuationForAllAudioDevices();
FAudioDeviceManagerDelegates::OnAudioDeviceCreated.AddUObject(this, &UAudioEditorSettings::ApplyAttenuationForAudioDevice);
}
void UAudioEditorSettings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
if (PropertyChangedEvent.Property && PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UAudioEditorSettings, bUseAudioAttenuation))
{
ApplyAttenuationForAllAudioDevices();
}
}
void UAudioEditorSettings::SetUseAudioAttenuation(bool bInUseAudioAttenuation)
{
bUseAudioAttenuation = bInUseAudioAttenuation;
SaveConfig();
ApplyAttenuationForAllAudioDevices();
}
void UAudioEditorSettings::ApplyAttenuationForAllAudioDevices()
{
if (FAudioDeviceManager* AudioDeviceManager = FAudioDeviceManager::Get())
{
TArray<FAudioDevice*> AudioDevices = AudioDeviceManager->GetAudioDevices();
for (FAudioDevice* Device : AudioDevices)
{
if (Device)
{
Device->SetUseAttenuationForNonGameWorlds(bUseAudioAttenuation);
}
}
}
}
void UAudioEditorSettings::ApplyAttenuationForAudioDevice(Audio::FDeviceId InDeviceID)
{
if (FAudioDeviceManager* AudioDeviceManager = FAudioDeviceManager::Get())
{
FAudioDeviceHandle Device = AudioDeviceManager->GetAudioDevice(InDeviceID);
if (Device.IsValid())
{
Device->SetUseAttenuationForNonGameWorlds(bUseAudioAttenuation);
}
}
}