You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
165 lines
3.7 KiB
C++
165 lines
3.7 KiB
C++
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
|
||
|
|
#include "AudioParameterInterface.h"
|
||
|
|
#include "IAudioProxyInitializer.h"
|
||
|
|
|
||
|
|
|
||
|
|
namespace AudioParameterPrivate
|
||
|
|
{
|
||
|
|
template <typename T>
|
||
|
|
void SetOrMergeArray(const TArray<T>& InArray, TArray<T>& OutArray, bool bInMerge)
|
||
|
|
{
|
||
|
|
if (bInMerge)
|
||
|
|
{
|
||
|
|
OutArray.Append(InArray);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
OutArray = InArray;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void FAudioParameter::Merge(const FAudioParameter& InParameter, bool bInTakeName, bool bInTakeType, bool bInMergeArrayTypes)
|
||
|
|
{
|
||
|
|
if (bInTakeName)
|
||
|
|
{
|
||
|
|
ParamName = InParameter.ParamName;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (bInTakeType)
|
||
|
|
{
|
||
|
|
ParamType = InParameter.ParamType;
|
||
|
|
}
|
||
|
|
|
||
|
|
switch (InParameter.ParamType)
|
||
|
|
{
|
||
|
|
case EAudioParameterType::Boolean:
|
||
|
|
{
|
||
|
|
BoolParam = InParameter.BoolParam;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::BooleanArray:
|
||
|
|
{
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayBoolParam, ArrayBoolParam, bInMergeArrayTypes);
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::Float:
|
||
|
|
{
|
||
|
|
FloatParam = InParameter.FloatParam;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::FloatArray:
|
||
|
|
{
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayFloatParam, ArrayFloatParam, bInMergeArrayTypes);
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::Integer:
|
||
|
|
case EAudioParameterType::NoneArray:
|
||
|
|
{
|
||
|
|
if (bInMergeArrayTypes)
|
||
|
|
{
|
||
|
|
IntParam += InParameter.IntParam;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
IntParam = InParameter.IntParam;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::IntegerArray:
|
||
|
|
{
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayIntParam, ArrayIntParam, bInMergeArrayTypes);
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::None:
|
||
|
|
{
|
||
|
|
FloatParam = InParameter.FloatParam;
|
||
|
|
BoolParam = InParameter.BoolParam;
|
||
|
|
IntParam = InParameter.IntParam;
|
||
|
|
ObjectParam = InParameter.ObjectParam;
|
||
|
|
StringParam = InParameter.StringParam;
|
||
|
|
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayBoolParam, ArrayBoolParam, bInMergeArrayTypes);
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayFloatParam, ArrayFloatParam, bInMergeArrayTypes);
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayIntParam, ArrayIntParam, bInMergeArrayTypes);
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayObjectParam, ArrayObjectParam, bInMergeArrayTypes);
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayStringParam, ArrayStringParam, bInMergeArrayTypes);
|
||
|
|
|
||
|
|
if (!bInMergeArrayTypes)
|
||
|
|
{
|
||
|
|
ObjectProxies.Reset();
|
||
|
|
}
|
||
|
|
|
||
|
|
for (const Audio::IProxyDataPtr& ProxyPtr : InParameter.ObjectProxies)
|
||
|
|
{
|
||
|
|
if (ensure(ProxyPtr.IsValid()))
|
||
|
|
{
|
||
|
|
ObjectProxies.Emplace(ProxyPtr->Clone());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::Object:
|
||
|
|
{
|
||
|
|
ObjectParam = InParameter.ObjectParam;
|
||
|
|
|
||
|
|
ObjectProxies.Reset();
|
||
|
|
for (const Audio::IProxyDataPtr& ProxyPtr : InParameter.ObjectProxies)
|
||
|
|
{
|
||
|
|
if (ensure(ProxyPtr.IsValid()))
|
||
|
|
{
|
||
|
|
ObjectProxies.Emplace(ProxyPtr->Clone());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::ObjectArray:
|
||
|
|
{
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayObjectParam, ArrayObjectParam, bInMergeArrayTypes);
|
||
|
|
|
||
|
|
if (!bInMergeArrayTypes)
|
||
|
|
{
|
||
|
|
ObjectProxies.Reset();
|
||
|
|
}
|
||
|
|
|
||
|
|
for (const Audio::IProxyDataPtr& ProxyPtr : InParameter.ObjectProxies)
|
||
|
|
{
|
||
|
|
if (ensure(ProxyPtr.IsValid()))
|
||
|
|
{
|
||
|
|
ObjectProxies.Emplace(ProxyPtr->Clone());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::String:
|
||
|
|
{
|
||
|
|
StringParam = InParameter.StringParam;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case EAudioParameterType::StringArray:
|
||
|
|
{
|
||
|
|
AudioParameterPrivate::SetOrMergeArray(InParameter.ArrayStringParam, ArrayStringParam, bInMergeArrayTypes);
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
UAudioParameterInterface::UAudioParameterInterface(FObjectInitializer const& InObjectInitializer)
|
||
|
|
: UInterface(InObjectInitializer)
|
||
|
|
{
|
||
|
|
}
|