diff options
Diffstat (limited to 'src/render/backend/rendertarget.cpp')
-rw-r--r-- | src/render/backend/rendertarget.cpp | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/src/render/backend/rendertarget.cpp b/src/render/backend/rendertarget.cpp index b0565a26b..206f64e4e 100644 --- a/src/render/backend/rendertarget.cpp +++ b/src/render/backend/rendertarget.cpp @@ -58,11 +58,21 @@ RenderTarget::RenderTarget() { } -void RenderTarget::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) +void RenderTarget::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QRenderTargetData>>(change); - const auto &data = typedChange->data; - m_renderOutputs = data.outputIds; + const QRenderTarget *node = qobject_cast<const QRenderTarget *>(frontEnd); + if (!node) + return; + + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + + auto outputIds = qIdsForNodes(node->outputs()); + std::sort(std::begin(outputIds), std::end(outputIds)); + + if (m_renderOutputs != outputIds) { + m_renderOutputs = outputIds; + markDirty(AbstractRenderer::AllDirty); + } } void RenderTarget::cleanup() @@ -87,33 +97,6 @@ QVector<Qt3DCore::QNodeId> RenderTarget::renderOutputs() const return m_renderOutputs; } -void RenderTarget::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) -{ - switch (e->type()) { - case Qt3DCore::PropertyValueAdded: { - const auto change = qSharedPointerCast<QPropertyNodeAddedChange>(e); - if (change->propertyName() == QByteArrayLiteral("output")) { - appendRenderOutput(change->addedNodeId()); - markDirty(AbstractRenderer::AllDirty); - } - break; - } - - case Qt3DCore::PropertyValueRemoved: { - const auto change = qSharedPointerCast<QPropertyNodeRemovedChange>(e); - if (change->propertyName() == QByteArrayLiteral("output")) { - removeRenderOutput(change->removedNodeId()); - markDirty(AbstractRenderer::AllDirty); - } - break; - } - - default: - break; - } - BackendNode::sceneChangeEvent(e); -} - } // namespace Render } // namespace Qt3DRender |