diff options
author | Mike Krus <mike.krus@kdab.com> | 2017-02-17 23:14:27 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2017-05-26 09:58:37 +0000 |
commit | cd68b050998200584f2b6a5604a2538a27c77fbe (patch) | |
tree | 4db8138b0e4d27d57e1624c06530178580148d9d /tests/auto | |
parent | a441bd7d3d83284f68f1d8addedc93989a18cfeb (diff) |
Add support for line picking
PickingSettings can ask to get line as well as triangle picks.
Introduces a radius value to compensate for numerical precision
in ray-segment intersections.
Introduces QPickLineEvent with the details about the picking.
Job will perform line picking if appropriate. Hit encode the
type of picking and this is used to generate the right type of
event.
Task-number: QTBUG-58071
Change-Id: I834e6cc08044a8cfb28bba7443034e05267aedbf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/render/qrendersettings/tst_qrendersettings.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/render/qrendersettings/tst_qrendersettings.cpp b/tests/auto/render/qrendersettings/tst_qrendersettings.cpp index 1f0a9f066..6f182cbeb 100644 --- a/tests/auto/render/qrendersettings/tst_qrendersettings.cpp +++ b/tests/auto/render/qrendersettings/tst_qrendersettings.cpp @@ -184,6 +184,7 @@ private Q_SLOTS: pickingSettings->setPickMethod(Qt3DRender::QPickingSettings::TrianglePicking); pickingSettings->setPickResultMode(Qt3DRender::QPickingSettings::AllPicks); pickingSettings->setFaceOrientationPickingMode(Qt3DRender::QPickingSettings::FrontAndBackFace); + pickingSettings->setWorldSpaceTolerance(5.f); // WHEN QVector<Qt3DCore::QNodeCreatedChangeBasePtr> creationChanges; @@ -203,6 +204,7 @@ private Q_SLOTS: QCOMPARE(renderSettings.pickingSettings()->pickMethod(), cloneData.pickMethod); QCOMPARE(renderSettings.pickingSettings()->pickResultMode(), cloneData.pickResultMode); QCOMPARE(renderSettings.pickingSettings()->faceOrientationPickingMode(), cloneData.faceOrientationPickingMode); + QCOMPARE(renderSettings.pickingSettings()->worldSpaceTolerance(), cloneData.pickWorldSpaceTolerance); QCOMPARE(renderSettings.renderPolicy(), cloneData.renderPolicy); QCOMPARE(renderSettings.activeFrameGraph()->id(), cloneData.activeFrameGraphId); QCOMPARE(renderSettings.id(), creationChangeData->subjectId()); @@ -410,6 +412,41 @@ private Q_SLOTS: } + void checkWorldSpaceToleranceUpdate() + { + // GIVEN + TestArbiter arbiter; + Qt3DRender::QRenderSettings renderSettings; + Qt3DRender::QPickingSettings *pickingSettings = renderSettings.pickingSettings(); + + arbiter.setArbiterOnNode(&renderSettings); + + { + // WHEN + pickingSettings->setWorldSpaceTolerance(5.f); + QCoreApplication::processEvents(); + + // THEN + QCOMPARE(arbiter.events.size(), 1); + auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); + QCOMPARE(change->propertyName(), "pickWorldSpaceTolerance"); + QCOMPARE(change->value().toFloat(), pickingSettings->worldSpaceTolerance()); + QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + + arbiter.events.clear(); + } + + { + // WHEN + pickingSettings->setWorldSpaceTolerance(5.f); + QCoreApplication::processEvents(); + + // THEN + QCOMPARE(arbiter.events.size(), 0); + } + + } + }; QTEST_MAIN(tst_QRenderSettings) |