summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/objectpicker
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-12-10 10:17:25 +0100
committerPaul Lemire <paul.lemire@kdab.com>2018-12-12 05:40:40 +0000
commite3fbebe61111dfe670ffe19c96e313157df7331f (patch)
tree2b61cb59a84e4d31350cb1049bd71efc7a95941e /tests/auto/render/objectpicker
parentc9ce0deeb8f2bb79c446e41584f753f1b1bfe17f (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.cpp36
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()