forked from qt-creator/qt-creator
Make 3D objects pickable
Mark 3D objects implicitly pickable upon initialization so that they receive mouse clicks without having to declare the pickable property in qml. Task-number: QDS-1124 Change-Id: Ib8ec5415097c1a9bf57b8965a3fca0c3665f3732 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -52,6 +52,23 @@ Quick3DNodeInstance::~Quick3DNodeInstance()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Quick3DNodeInstance::initialize(const ObjectNodeInstance::Pointer &objectNodeInstance,
|
||||||
|
InstanceContainer::NodeFlags flags)
|
||||||
|
{
|
||||||
|
ObjectNodeInstance::initialize(objectNodeInstance, flags);
|
||||||
|
|
||||||
|
#ifdef QUICK3D_MODULE
|
||||||
|
if (quick3DNode()) {
|
||||||
|
QQuick3DObject::Type nodeType = quick3DNode()->type();
|
||||||
|
if (nodeType == QQuick3DObject::Camera || nodeType == QQuick3DObject::Light
|
||||||
|
|| nodeType == QQuick3DObject::Model || nodeType == QQuick3DObject::Image
|
||||||
|
|| nodeType == QQuick3DObject::Text) {
|
||||||
|
setPropertyVariant("pickable", true); // allow 3D objects to receive mouse clicks
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
Qt5NodeInstanceServer *Quick3DNodeInstance::qt5NodeInstanceServer() const
|
Qt5NodeInstanceServer *Quick3DNodeInstance::qt5NodeInstanceServer() const
|
||||||
{
|
{
|
||||||
return qobject_cast<Qt5NodeInstanceServer *>(nodeInstanceServer());
|
return qobject_cast<Qt5NodeInstanceServer *>(nodeInstanceServer());
|
||||||
|
@@ -44,6 +44,8 @@ public:
|
|||||||
~Quick3DNodeInstance() override;
|
~Quick3DNodeInstance() override;
|
||||||
static Pointer create(QObject *objectToBeWrapped);
|
static Pointer create(QObject *objectToBeWrapped);
|
||||||
void setHideInEditor(bool b) override;
|
void setHideInEditor(bool b) override;
|
||||||
|
void initialize(const ObjectNodeInstance::Pointer &objectNodeInstance,
|
||||||
|
InstanceContainer::NodeFlags flags) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit Quick3DNodeInstance(QObject *node);
|
explicit Quick3DNodeInstance(QObject *node);
|
||||||
|
Reference in New Issue
Block a user