diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2018-12-10 10:17:25 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-12-12 05:40:40 +0000 |
commit | e3fbebe61111dfe670ffe19c96e313157df7331f (patch) | |
tree | 2b61cb59a84e4d31350cb1049bd71efc7a95941e /tests/auto/render/objectpicker | |
parent | c9ce0deeb8f2bb79c446e41584f753f1b1bfe17f (diff) |
QObjectPicker and QPickingSettings NearestPriorityPick picking mode
Add a new priority property on QObjectPicker and a new QPickingSettings mode.
This will select the result with the highest priority if there are several results
on a given ray. If we have several results with identical properties, the result
with the closest distance is selected.
[ChangeLog][Qt3DRender] QObjectPicker: add a priority based result selection
Change-Id: I7af12db6e163c3c2d9dad696e6d9f9bbbee064ed
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'tests/auto/render/objectpicker')
-rw-r--r-- | tests/auto/render/objectpicker/tst_objectpicker.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/render/objectpicker/tst_objectpicker.cpp b/tests/auto/render/objectpicker/tst_objectpicker.cpp index c1b06ccd8..644849102 100644 --- a/tests/auto/render/objectpicker/tst_objectpicker.cpp +++ b/tests/auto/render/objectpicker/tst_objectpicker.cpp @@ -47,6 +47,7 @@ private Q_SLOTS: Qt3DRender::Render::ObjectPicker objectPicker; Qt3DRender::QObjectPicker picker; picker.setHoverEnabled(true); + picker.setPriority(883); // WHEN simulateInitialization(&picker, &objectPicker); @@ -54,6 +55,7 @@ private Q_SLOTS: // THEN QVERIFY(!objectPicker.peerId().isNull()); QCOMPARE(objectPicker.isHoverEnabled(), true); + QCOMPARE(objectPicker.priority(), 883); } void checkInitialAndCleanedUpState() @@ -64,10 +66,14 @@ private Q_SLOTS: // THEN QVERIFY(objectPicker.peerId().isNull()); QCOMPARE(objectPicker.isHoverEnabled(), false); + QCOMPARE(objectPicker.isDragEnabled(), false); + QCOMPARE(objectPicker.priority(), 0); // GIVEN Qt3DRender::QObjectPicker picker; picker.setHoverEnabled(true); + picker.setDragEnabled(true); + picker.setPriority(1584); // WHEN simulateInitialization(&picker, &objectPicker); @@ -75,6 +81,8 @@ private Q_SLOTS: // THEN QCOMPARE(objectPicker.isHoverEnabled(), false); + QCOMPARE(objectPicker.isDragEnabled(), false); + QCOMPARE(objectPicker.priority(), 0); } void checkPropertyChanges() @@ -95,6 +103,34 @@ private Q_SLOTS: QCOMPARE(objectPicker.isHoverEnabled(), true); QVERIFY(renderer.dirtyBits() != 0); } + { + Qt3DRender::Render::ObjectPicker objectPicker; + objectPicker.setRenderer(&renderer); + + // WHEN + Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + updateChange->setValue(true); + updateChange->setPropertyName("dragEnabled"); + objectPicker.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(objectPicker.isDragEnabled(), true); + QVERIFY(renderer.dirtyBits() != 0); + } + { + Qt3DRender::Render::ObjectPicker objectPicker; + objectPicker.setRenderer(&renderer); + + // WHEN + Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + updateChange->setValue(15); + updateChange->setPropertyName("priority"); + objectPicker.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(objectPicker.priority(), 15); + QVERIFY(renderer.dirtyBits() != 0); + } } void checkBackendPropertyNotifications() |