summaryrefslogtreecommitdiffstats
path: root/src/render/backend/rendertargetoutput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backend/rendertargetoutput.cpp')
-rw-r--r--src/render/backend/rendertargetoutput.cpp65
1 files changed, 32 insertions, 33 deletions
diff --git a/src/render/backend/rendertargetoutput.cpp b/src/render/backend/rendertargetoutput.cpp
index cba92596d..edfc7132e 100644
--- a/src/render/backend/rendertargetoutput.cpp
+++ b/src/render/backend/rendertargetoutput.cpp
@@ -55,15 +55,39 @@ RenderTargetOutput::RenderTargetOutput()
{
}
-void RenderTargetOutput::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+void RenderTargetOutput::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QRenderTargetOutputData>>(change);
- const auto &data = typedChange->data;
- m_attachmentData.m_point = data.attachmentPoint;
- m_attachmentData.m_mipLevel = data.mipLevel;
- m_attachmentData.m_layer = data.layer;
- m_attachmentData.m_face = data.face;
- m_attachmentData.m_textureUuid = data.textureId;
+ const QRenderTargetOutput *node = qobject_cast<const QRenderTargetOutput *>(frontEnd);
+ if (!node)
+ return;
+
+ const bool oldEnabled = isEnabled();
+ BackendNode::syncFromFrontEnd(frontEnd, firstTime);
+
+ if (node->attachmentPoint() != m_attachmentData.m_point) {
+ m_attachmentData.m_point = node->attachmentPoint();
+ markDirty(AbstractRenderer::AllDirty);
+ }
+ if (node->mipLevel() != m_attachmentData.m_mipLevel) {
+ m_attachmentData.m_mipLevel = node->mipLevel();
+ markDirty(AbstractRenderer::AllDirty);
+ }
+ if (node->layer() != m_attachmentData.m_layer) {
+ m_attachmentData.m_layer = node->layer();
+ markDirty(AbstractRenderer::AllDirty);
+ }
+ if (node->face() != m_attachmentData.m_face) {
+ m_attachmentData.m_face = node->face();
+ markDirty(AbstractRenderer::AllDirty);
+ }
+ const auto textureId = Qt3DCore::qIdForNode(node->texture());
+ if (textureId != m_attachmentData.m_textureUuid) {
+ m_attachmentData.m_textureUuid = textureId;
+ markDirty(AbstractRenderer::AllDirty);
+ }
+
+ if (oldEnabled != isEnabled())
+ markDirty(AbstractRenderer::AllDirty);
}
Qt3DCore::QNodeId RenderTargetOutput::textureUuid() const
@@ -96,31 +120,6 @@ QRenderTargetOutput::AttachmentPoint RenderTargetOutput::point() const
return m_attachmentData.m_point;
}
-void RenderTargetOutput::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
-{
- QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e);
- if (e->type() == PropertyUpdated) {
- if (propertyChange->propertyName() == QByteArrayLiteral("type")) {
- m_attachmentData.m_point = static_cast<QRenderTargetOutput::AttachmentPoint>(propertyChange->value().toInt());
- }
- else if (propertyChange->propertyName() == QByteArrayLiteral("texture")) {
- m_attachmentData.m_textureUuid = propertyChange->value().value<QNodeId>();
- }
- else if (propertyChange->propertyName() == QByteArrayLiteral("mipLevel")) {
- m_attachmentData.m_mipLevel = propertyChange->value().toInt();
- }
- else if (propertyChange->propertyName() == QByteArrayLiteral("layer")) {
- m_attachmentData.m_layer = propertyChange->value().toInt();
- }
- else if (propertyChange->propertyName() == QByteArrayLiteral("face")) {
- m_attachmentData.m_face = static_cast<QAbstractTexture::CubeMapFace>(propertyChange->value().toInt());
- }
- markDirty(AbstractRenderer::AllDirty);
- }
-
- BackendNode::sceneChangeEvent(e);
-}
-
Qt3DRender::Render::Attachment *RenderTargetOutput::attachment()
{
return &m_attachmentData;