summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-05-20 08:54:07 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-05-20 09:54:02 +0300
commitb6da9160b2d81283ec9fc082c08987ecc95650da (patch)
treebc2cab637d9a8b23bab4218cd7183ebbbcb4160e /src/datavisualization/engine/abstract3drenderer.cpp
parent0004b7598d5826bf5e1e4fb7256b13dbc220ec47 (diff)
Do not draw custom items outside axis ranges
Task-number: QTRD-3057 Change-Id: Icb8904fa0a1c009985ac21ee6fa51eefda81d9cc Change-Id: Icb8904fa0a1c009985ac21ee6fa51eefda81d9cc Reviewed-by: Titta Heikkala <titta.heikkala@digia.com> Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 82952a26..684db1a5 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -573,6 +573,7 @@ CustomRenderItem *Abstract3DRenderer::addCustomItem(QCustom3DItem *item)
newItem->setItemPointer(item); // Store pointer for render item updates
newItem->setMesh(item->meshFile());
newItem->setScaling(item->scaling());
+ newItem->setPosition(item->position());
newItem->setRotation(item->rotation());
QImage textureImage = item->d_ptr->textureImage();
newItem->setBlendNeeded(textureImage.hasAlphaChannel());
@@ -614,6 +615,7 @@ void Abstract3DRenderer::updateCustomItem(CustomRenderItem *renderItem)
}
if (item->d_ptr->m_dirtyBits.positionDirty) {
QVector3D translation = convertPositionToTranslation(item->position());
+ renderItem->setPosition(item->position());
renderItem->setTranslation(translation);
item->d_ptr->m_dirtyBits.positionDirty = false;
}
@@ -651,7 +653,14 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
// Draw custom items
foreach (CustomRenderItem *item, m_customRenderCache) {
- if (!item->isVisible())
+ // Check that the render item is visible and within axis ranges, and skip drawing if not
+ if (!item->isVisible()
+ || item->position().x() < m_axisCacheX.min()
+ || item->position().x() > m_axisCacheX.max()
+ || item->position().z() < m_axisCacheZ.min()
+ || item->position().z() > m_axisCacheZ.max()
+ || item->position().y() < m_axisCacheY.min()
+ || item->position().y() > m_axisCacheY.max())
continue;
QMatrix4x4 modelMatrix;