diff options
Diffstat (limited to 'src/render/shadergraph/qshadergraph.cpp')
-rw-r--r-- | src/render/shadergraph/qshadergraph.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/render/shadergraph/qshadergraph.cpp b/src/render/shadergraph/qshadergraph.cpp index c2f3c343e..285aff116 100644 --- a/src/render/shadergraph/qshadergraph.cpp +++ b/src/render/shadergraph/qshadergraph.cpp @@ -242,16 +242,6 @@ QVector<QShaderGraph::Statement> QShaderGraph::createStatements(const QStringLis return res; }(); - const QVector<Edge> enabledEdges = [this, intersectsEnabledLayers] { - auto res = QVector<Edge>(); - std::copy_if(m_edges.cbegin(), m_edges.cend(), - std::back_inserter(res), - [intersectsEnabledLayers] (const Edge &edge) { - return intersectsEnabledLayers(edge.layers); - }); - return res; - }(); - const QHash<QUuid, Statement> idHash = [enabledNodes] { auto nextVarId = 0; auto res = QHash<QUuid, Statement>(); @@ -260,6 +250,18 @@ QVector<QShaderGraph::Statement> QShaderGraph::createStatements(const QStringLis return res; }(); + const QVector<Edge> enabledEdges = [this, intersectsEnabledLayers, &idHash] { + auto res = QVector<Edge>(); + std::copy_if(m_edges.cbegin(), m_edges.cend(), + std::back_inserter(res), + [intersectsEnabledLayers, &idHash] (const Edge &edge) { + return intersectsEnabledLayers(edge.layers) + && idHash.contains(edge.sourceNodeUuid) + && idHash.contains(edge.targetNodeUuid); + }); + return res; + }(); + auto result = QVector<Statement>(); QVector<Edge> currentEdges = enabledEdges; QVector<QUuid> currentUuids = [enabledNodes, enabledEdges] { |