Files
charlie huguenard 7b12ccaeae [Metasound] Get history of output changes instead of last value
#preflight 64513fbb4d593c0b42b03cc8
#rb phil.popp

[CL 25320519 by charlie huguenard in ue5-main branch]
2023-05-03 13:43:51 -04:00

58 lines
990 B
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MetasoundDataReference.h"
#include "Templates/UniquePtr.h"
namespace Metasound
{
class IOutputStorage
{
public:
virtual ~IOutputStorage() = default;
virtual FName GetDataTypeName() const = 0;
virtual TUniquePtr<IOutputStorage> Clone() const = 0;
};
template<typename DataType>
class TOutputStorage final : public IOutputStorage
{
public:
explicit TOutputStorage(const DataType& InData)
: Data(InData)
{}
virtual FName GetDataTypeName() const override
{
static FName TypeName = GetMetasoundDataTypeName<DataType>();
return TypeName;
}
virtual TUniquePtr<IOutputStorage> Clone() const override
{
return MakeUnique<TOutputStorage<DataType>>(Data);
}
void Set(const DataType& Value)
{
Data = Value;
}
void Set(DataType&& Value)
{
Data = MoveTemp(Value);
}
const DataType& Get() const
{
return Data;
}
private:
DataType Data;
};
}