49 lines
1.6 KiB
C++
49 lines
1.6 KiB
C++
#pragma once
|
|
#include "CoreMinimal.h"
|
|
|
|
class FMixerTrack;
|
|
class FChannelNode;
|
|
|
|
class FChannelInterface
|
|
{
|
|
public:
|
|
FChannelInterface(int32 InputChannelNum, int32 OutputChannelNum);
|
|
|
|
void SetInputChannel(int32 NodeIndex, FChannelNode* Node);
|
|
void SetOutputChannel(int32 NodeIndex, FChannelNode* Node);
|
|
void SetInputChannel(const TArray<FChannelNode*>& Nodes, int32 Offset = 0);
|
|
void SetOutputChannel(const TArray<FChannelNode*>& Nodes, int32 Offset = 0);
|
|
|
|
int32 GetInputNodeIndex(FChannelNode* Node);
|
|
int32 GetOutputNodeIndex(FChannelNode* Node);
|
|
|
|
float** GetInputHeader() { return InputHeaders.GetData(); }
|
|
float** GetOutputHeader() { return OutputHeaders.GetData(); }
|
|
|
|
void SetInputChannelNodeName(int32 NodeIndex, int32 Channel, FName Name);
|
|
void SetOutputChannelNodeName(int32 NodeIndex, int32 Channel, FName Name);
|
|
TMap<int32, FName> GetInputChannelNodeName(int32 NodeIndex);
|
|
TMap<int32, FName> GetOutputChannelNodeName(int32 NodeIndex);
|
|
TMap<int32, FName> GetInputChannelNodeName(FChannelNode* Node);
|
|
TMap<int32, FName> GetOutputChannelNodeName(FChannelNode* Node);
|
|
|
|
void RemoveTrack(FMixerTrack* Track);
|
|
|
|
TArray<FChannelNode*> InputChannelNodes;
|
|
TArray<FChannelNode*> OutputChannelNodes;
|
|
private:
|
|
TMap<int32, TMap<int32, FName>> InputChannelNodeNames;
|
|
TMap<int32, TMap<int32, FName>> OutputChannelNodeNames;
|
|
TArray<float*> InputHeaders; // 缓存, 避免一直创建TArray对象
|
|
TArray<float*> OutputHeaders;
|
|
};
|
|
|
|
class FMixerChannelInterface : public FChannelInterface
|
|
{
|
|
public:
|
|
FMixerChannelInterface(FMixerTrack* InMixerTrack);
|
|
~FMixerChannelInterface();
|
|
private:
|
|
FMixerTrack* MixerTrack;
|
|
};
|