You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb rob.gay #preflight 639b7297c16855964d7c0e69 [CL 23535307 by miles flanagan in ue5-main branch]
98 lines
2.9 KiB
C++
98 lines
2.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "Containers/Array.h"
|
|
#include "Containers/ArrayView.h"
|
|
#include "IAudioProxyInitializer.h"
|
|
#include "MetasoundDataReference.h"
|
|
#include "MetasoundDataTypeRegistrationMacro.h"
|
|
#include "MetasoundEnumRegistrationMacro.h"
|
|
#include "MetasoundPrimitives.h"
|
|
#include "WaveTable.h"
|
|
#include "WaveTableBank.h"
|
|
#include "WaveTableSampler.h"
|
|
|
|
namespace Metasound
|
|
{
|
|
class FWaveTableBankAsset;
|
|
using FWaveTableBankAssetReadRef = TDataReadReference<FWaveTableBankAsset>;
|
|
using FWaveTableReadRef = TDataReadReference<WaveTable::FWaveTable>;
|
|
using FWaveTableWriteRef = TDataWriteReference<WaveTable::FWaveTable>;
|
|
|
|
class METASOUNDENGINE_API FWaveTableBankAsset
|
|
{
|
|
FWaveTableBankAssetProxyPtr Proxy;
|
|
|
|
public:
|
|
FWaveTableBankAsset()
|
|
: Proxy(nullptr)
|
|
{
|
|
}
|
|
|
|
FWaveTableBankAsset(const FWaveTableBankAsset& InOther)
|
|
: Proxy(InOther.Proxy)
|
|
{
|
|
}
|
|
|
|
FWaveTableBankAsset& operator=(const FWaveTableBankAsset& InOther)
|
|
{
|
|
Proxy = InOther.Proxy;
|
|
return *this;
|
|
}
|
|
|
|
FWaveTableBankAsset& operator=(FWaveTableBankAsset&& InOther)
|
|
{
|
|
Proxy = MoveTemp(InOther.Proxy);
|
|
return *this;
|
|
}
|
|
|
|
FWaveTableBankAsset(const TSharedPtr<Audio::IProxyData>& InInitData)
|
|
{
|
|
if (InInitData.IsValid())
|
|
{
|
|
if (InInitData->CheckTypeCast<FWaveTableBankAssetProxy>())
|
|
{
|
|
Proxy = MakeShared<FWaveTableBankAssetProxy, ESPMode::ThreadSafe>(InInitData->GetAs<FWaveTableBankAssetProxy>());
|
|
}
|
|
}
|
|
}
|
|
|
|
bool IsValid() const
|
|
{
|
|
return Proxy.IsValid();
|
|
}
|
|
|
|
const FWaveTableBankAssetProxyPtr& GetProxy() const
|
|
{
|
|
return Proxy;
|
|
}
|
|
|
|
const FWaveTableBankAssetProxy* operator->() const
|
|
{
|
|
return Proxy.Get();
|
|
}
|
|
|
|
FWaveTableBankAssetProxy* operator->()
|
|
{
|
|
return Proxy.Get();
|
|
}
|
|
};
|
|
|
|
// Disable arrays of WaveTables (as of addition, not supported by UX). Must be defined prior to DataType declaration macro below.
|
|
template<>
|
|
struct TEnableAutoArrayTypeRegistration<WaveTable::FWaveTable>
|
|
{
|
|
static constexpr bool Value = false;
|
|
};
|
|
|
|
DECLARE_METASOUND_DATA_REFERENCE_TYPES(WaveTable::FWaveTable, METASOUNDENGINE_API, FWaveTableTypeInfo, FWaveTableReadRef, FWaveTableWriteRef)
|
|
DECLARE_METASOUND_DATA_REFERENCE_TYPES(FWaveTableBankAsset, METASOUNDENGINE_API, FWaveTableBankAssetTypeInfo, FWaveTableBankAssetReadRef, FWaveTableBankAssetWriteRef)
|
|
|
|
DECLARE_METASOUND_ENUM(WaveTable::FWaveTableSampler::ESingleSampleMode, WaveTable::FWaveTableSampler::ESingleSampleMode::Zero, METASOUNDENGINE_API,
|
|
FEnumWaveTableEnvelopeMode, FEnumWaveTableEnvelopeModeTypeInfo, FEnumWaveTableEnvelopeModeReadRef, FEnumWaveTableEnvelopeModeWriteRef);
|
|
|
|
DECLARE_METASOUND_ENUM(WaveTable::FWaveTableSampler::EInterpolationMode, WaveTable::FWaveTableSampler::EInterpolationMode::Linear, METASOUNDENGINE_API,
|
|
FEnumWaveTableInterpolationMode, FEnumWaveTableInterpModeTypeInfo, FEnumWaveTableInterpModeReadRef, FEnumWaveTableInterpModeWriteRef);
|
|
} // namespace Metasound
|
|
|