ShaderAst: Add node editor window

This commit is contained in:
Lynix
2020-05-26 19:22:31 +02:00
parent b1b9030359
commit 09e08255fb
24 changed files with 558 additions and 337 deletions

View File

@@ -2,6 +2,7 @@
#include <Nazara/Renderer/GlslWriter.hpp>
#include <ShaderNode/ShaderGraph.hpp>
#include <ShaderNode/Widgets/InputEditor.hpp>
#include <ShaderNode/Widgets/NodeEditor.hpp>
#include <ShaderNode/Widgets/TextureEditor.hpp>
#include <nodes/FlowView>
#include <QtWidgets/QDockWidget>
@@ -19,20 +20,44 @@ m_shaderGraph(graph)
QtNodes::FlowView* flowView = new QtNodes::FlowView(scene);
setCentralWidget(flowView);
QDockWidget* inputDock = new QDockWidget(tr("&Inputs"));
InputEditor* inputEditor = new InputEditor(m_shaderGraph);
QDockWidget* inputDock = new QDockWidget(tr("Inputs"));
inputDock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
inputDock->setWidget(inputEditor);
addDockWidget(Qt::LeftDockWidgetArea, inputDock);
QDockWidget* textureDock = new QDockWidget(tr("&Textures"));
TextureEditor* textureEditor = new TextureEditor(m_shaderGraph);
QDockWidget* textureDock = new QDockWidget(tr("Textures"));
textureDock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
textureDock->setWidget(textureEditor);
addDockWidget(Qt::LeftDockWidgetArea, textureDock);
m_nodeEditor = new NodeEditor;
QDockWidget* nodeEditorDock = new QDockWidget(tr("Node editor"));
nodeEditorDock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
nodeEditorDock->setWidget(m_nodeEditor);
addDockWidget(Qt::RightDockWidgetArea, nodeEditorDock);
m_onSelectedNodeUpdate.Connect(m_shaderGraph.OnSelectedNodeUpdate, [&](ShaderGraph*, ShaderNode* node)
{
if (node)
{
m_nodeEditor->UpdateContent(node->caption(), [node](QVBoxLayout* layout)
{
node->BuildNodeEdition(layout);
});
}
else
m_nodeEditor->Clear();
});
BuildMenu();
}