Files
UnrealEngineUWP/Engine/Source/Runtime/AudioExtensions/Private/IAudioParameterTransmitter.cpp
rob gay 08f64dc10a [MetaSounds] Param loop virtualization fixes
- Split default param transmitter to SoundCueTransmitter & ParameterTransmitterBase to avoid generating transmitters for SoundBase child classes that don't support/require one (ex. SoundWaves)
- Move param transmitter to sharedptrs to avoid a bunch of unnecessary copy/clone logic when virtualizing loops
- Remove DefaultParameters field on ActiveSound in favor of shared impl in FParameterTransmitterBase that caches current state of parameters
- Fix for move that clears out active sound's current parameters when sound could have multiple wave instances that need said parameters
#rb phil.popp
#jira UE-164898
#preflight 6334a0a1ee7b13756dcd20ea

[CL 22240385 by rob gay in ue5-main branch]
2022-09-28 22:19:31 -04:00

47 lines
1.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "IAudioParameterTransmitter.h"
#include "UObject/Object.h"
namespace Audio
{
const FName IParameterTransmitter::RouterName = "ParameterTransmitter";
TArray<UObject*> ILegacyParameterTransmitter::GetReferencedObjects() const
{
return { };
}
FParameterTransmitterBase::FParameterTransmitterBase(TArray<FAudioParameter>&& InDefaultParams)
: AudioParameters(MoveTemp(InDefaultParams))
{
}
bool FParameterTransmitterBase::GetParameter(FName InName, FAudioParameter& OutValue) const
{
if (const FAudioParameter* Param = FAudioParameter::FindParam(AudioParameters, InName))
{
OutValue = *Param;
return true;
}
return false;
}
const TArray<FAudioParameter>& FParameterTransmitterBase::GetParameters() const
{
return AudioParameters;
}
bool FParameterTransmitterBase::Reset()
{
AudioParameters.Reset();
return true;
}
bool FParameterTransmitterBase::SetParameters(TArray<FAudioParameter>&& InParameters)
{
FAudioParameter::Merge(MoveTemp(InParameters), AudioParameters);
return true;
}
} // namespace Audio