summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qpickingsettings.cpp
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2016-08-12 15:14:12 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-08-13 15:38:13 +0000
commitc5cf2134956eeb1c7466b502e408192b095fe914 (patch)
tree044c41f2985e45836bcf0f72c35acdda6af122eb /src/render/frontend/qpickingsettings.cpp
parent1dc8378aeddc337bfc770f9644b6e2f6343ce7fa (diff)
Enable picking of back facing triangles
Added faceOrientationPickingMode to picking settings, and propagate to ray picking code. Enum can be set to front (default), back or both. Removed use of TriangleBoundingVolume and copied intersection code to avoid changing too much of a call chain that should IMHO be refactored out. Change-Id: I2834f3b1a4147f23e0f52453c8d50c146bc29e10 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qpickingsettings.cpp')
-rw-r--r--src/render/frontend/qpickingsettings.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/render/frontend/qpickingsettings.cpp b/src/render/frontend/qpickingsettings.cpp
index 0e152f5f1..2805ec5a8 100644
--- a/src/render/frontend/qpickingsettings.cpp
+++ b/src/render/frontend/qpickingsettings.cpp
@@ -57,6 +57,7 @@ QPickingSettingsPrivate::QPickingSettingsPrivate()
: Qt3DCore::QNodePrivate()
, m_pickMethod(QPickingSettings::BoundingVolumePicking)
, m_pickResultMode(QPickingSettings::NearestPick)
+ , m_faceOrientationPickingMode(QPickingSettings::FrontFace)
{
}
@@ -100,6 +101,15 @@ QPickingSettings::PickResultMode QPickingSettings::pickResultMode() const
}
/*!
+ * \return the back facing picking flag
+ */
+QPickingSettings::FaceOrientationPickingMode QPickingSettings::faceOrientationPickingMode() const
+{
+ Q_D(const QPickingSettings);
+ return d->m_faceOrientationPickingMode;
+}
+
+/*!
* \enum Qt3DRender::QPickingSettings::PickMethod
*
* Specifies which parameters of Qt3DRender::QPickingSettings are used.
@@ -145,6 +155,20 @@ void QPickingSettings::setPickResultMode(QPickingSettings::PickResultMode pickRe
emit pickResultModeChanged(pickResultMode);
}
+/*!
+ * Sets whether back facing faces are picked or not
+ * \param faceOrientationPickingMode
+ */
+void QPickingSettings::setFaceOrientationPickingMode(QPickingSettings::FaceOrientationPickingMode faceOrientationPickingMode)
+{
+ Q_D(QPickingSettings);
+ if (d->m_faceOrientationPickingMode == faceOrientationPickingMode)
+ return;
+
+ d->m_faceOrientationPickingMode = faceOrientationPickingMode;
+ emit faceOrientationPickingModeChanged(faceOrientationPickingMode);
+}
+
} // namespace Qt3Drender
QT_END_NAMESPACE