diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-05-20 08:54:07 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-05-20 09:54:02 +0300 |
commit | b6da9160b2d81283ec9fc082c08987ecc95650da (patch) | |
tree | bc2cab637d9a8b23bab4218cd7183ebbbcb4160e /src/datavisualization/engine/abstract3drenderer.cpp | |
parent | 0004b7598d5826bf5e1e4fb7256b13dbc220ec47 (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.cpp | 11 |
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; |