58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
#pragma once
|
|
#include "CoreMinimal.h"
|
|
|
|
class FChannelInterface;
|
|
class FMixerTrack;
|
|
|
|
enum class EChannelNodeType
|
|
{
|
|
NoneType,
|
|
MixerNode,
|
|
NullNode,
|
|
};
|
|
|
|
class FChannelNode
|
|
{
|
|
public:
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FChannelNodeMulticastDelegate, FChannelNode*)
|
|
DECLARE_DELEGATE_OneParam(FChannelNodeDelegate, FChannelNode*)
|
|
|
|
FChannelNode(FChannelInterface* InOwner, EChannelNodeType InNodeType) : Owner(InOwner), NodeType(InNodeType)
|
|
{
|
|
|
|
}
|
|
virtual ~FChannelNode() { OnChannelNodeDestroyed.Broadcast(this); }
|
|
virtual FString GetName() { return ""; }
|
|
|
|
virtual const TArray<float*>& GetChannelHeaders() = 0;
|
|
|
|
FChannelInterface* Owner;
|
|
EChannelNodeType NodeType;
|
|
static FChannelNodeMulticastDelegate OnChannelNodeDestroyed;
|
|
};
|
|
|
|
class FMixerChannelNode : public FChannelNode
|
|
{
|
|
public:
|
|
FMixerChannelNode(FChannelInterface* InOwner, FMixerTrack* InTrack, int32 InNodeIndex);
|
|
virtual FString GetName() override;
|
|
|
|
virtual const TArray<float*>& GetChannelHeaders() override;
|
|
FMixerTrack* GetTrack() const { return Track; }
|
|
private:
|
|
FMixerTrack* Track;
|
|
TArray<float*> ChannelHeaders;
|
|
int32 NodeIndex;
|
|
};
|
|
|
|
class FNullChannelNode : public FChannelNode
|
|
{
|
|
static FNullChannelNode Instance;
|
|
public:
|
|
FNullChannelNode() : FChannelNode(nullptr, EChannelNodeType::NullNode) {}
|
|
static FNullChannelNode* Get() { return &Instance; }
|
|
virtual FString GetName() override { return "NullChannelNode"; }
|
|
|
|
virtual const TArray<float*>& GetChannelHeaders() override;
|
|
};
|