Init
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "SPluginHostChannelInterface.h"
|
||||
|
||||
#include "SChannelNode.h"
|
||||
#include "SlateOptMacros.h"
|
||||
#include "SScrollBox.h"
|
||||
#include "SSpacer.h"
|
||||
#include "STextBlock.h"
|
||||
#include "AudioBuffer/ChannelInterface.h"
|
||||
#include "PluginHost/PluginHost.h"
|
||||
#include "Widgets/SBoxPanel.h"
|
||||
|
||||
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
||||
|
||||
void SPluginHostChannelInterface::Construct(const FArguments& InArgs, FPluginHost* InPluginHost)
|
||||
{
|
||||
PluginHost = InPluginHost;
|
||||
const FChannelInterface* ChannelInterface = PluginHost->ChannelInterface;
|
||||
|
||||
InPluginHost->UpdateChannelNodeName();
|
||||
|
||||
const auto& InputNodes = ChannelInterface->InputChannelNodes;
|
||||
const auto& OutputNodes = ChannelInterface->OutputChannelNodes;
|
||||
|
||||
TSharedPtr<SVerticalBox> InputNodesBox;
|
||||
TSharedPtr<SVerticalBox> OutputNodesBox;
|
||||
ChildSlot
|
||||
[
|
||||
SNew(SScrollBox)
|
||||
+SScrollBox::Slot()
|
||||
.AutoSize()
|
||||
[
|
||||
SNew(STextBlock)
|
||||
.Text(FText::FromString("Input: "))
|
||||
]
|
||||
+SScrollBox::Slot()
|
||||
.AutoSize()
|
||||
[
|
||||
SAssignNew(InputNodesBox, SVerticalBox)
|
||||
]
|
||||
+SScrollBox::Slot()
|
||||
.AutoSize()
|
||||
[
|
||||
SNew(SSpacer)
|
||||
.Size(FVector2D(1, 3))
|
||||
]
|
||||
+SScrollBox::Slot()
|
||||
.AutoSize()
|
||||
[
|
||||
SNew(STextBlock)
|
||||
.Text(FText::FromString("Output: "))
|
||||
]
|
||||
+SScrollBox::Slot()
|
||||
.AutoSize()
|
||||
[
|
||||
SAssignNew(OutputNodesBox, SVerticalBox)
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
if (InputNodes.Num() > 0)
|
||||
{
|
||||
const TSharedRef<SChannelNode> DefaultInputNodeWidget = BuildChannelNode(InputNodes[0], SChannelNode::EChannelNodeType::InputNode, 0).ToSharedRef();
|
||||
DefaultInputNodeWidget->SetEnabled(false);
|
||||
InputNodesBox->AddSlot()
|
||||
[
|
||||
DefaultInputNodeWidget
|
||||
];
|
||||
}
|
||||
for (int32 i = 1; i < InputNodes.Num(); ++i)
|
||||
{
|
||||
InputNodesBox->AddSlot()
|
||||
[
|
||||
BuildChannelNode(InputNodes[i], SChannelNode::EChannelNodeType::InputNode, i * 2).ToSharedRef()
|
||||
];
|
||||
}
|
||||
|
||||
if (OutputNodes.Num() > 0)
|
||||
{
|
||||
TSharedRef<SChannelNode> DefaultOutputNodeWidget = BuildChannelNode(OutputNodes[0], SChannelNode::EChannelNodeType::OutputNode, 0).ToSharedRef();
|
||||
DefaultOutputNodeWidget->SetEnabled(false);
|
||||
OutputNodesBox->AddSlot()
|
||||
[
|
||||
DefaultOutputNodeWidget
|
||||
];
|
||||
}
|
||||
for (int32 i = 1; i < OutputNodes.Num(); ++i)
|
||||
{
|
||||
OutputNodesBox->AddSlot()
|
||||
[
|
||||
BuildChannelNode(OutputNodes[i], SChannelNode::EChannelNodeType::OutputNode, i * 2).ToSharedRef()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
TSharedPtr<SChannelNode> SPluginHostChannelInterface::BuildChannelNode(FChannelNode* ChannelNode, SChannelNode::EChannelNodeType ChannelNodeType, int32 NodeNameIndex)
|
||||
{
|
||||
return SNew(SChannelNode, ChannelNode, PluginHost->ChannelInterface, NodeNameIndex)
|
||||
.ChannelNodeType(ChannelNodeType);
|
||||
}
|
||||
|
||||
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
||||
Reference in New Issue
Block a user