summaryrefslogtreecommitdiffstats
path: root/src/render/picking
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/picking')
-rw-r--r--src/render/picking/qpickevent.cpp97
-rw-r--r--src/render/picking/qpickevent.h26
-rw-r--r--src/render/picking/qpickevent_p.h6
-rw-r--r--src/render/picking/qpicktriangleevent.cpp22
-rw-r--r--src/render/picking/qpicktriangleevent.h2
5 files changed, 149 insertions, 4 deletions
diff --git a/src/render/picking/qpickevent.cpp b/src/render/picking/qpickevent.cpp
index ee9d6e867..c29c13cff 100644
--- a/src/render/picking/qpickevent.cpp
+++ b/src/render/picking/qpickevent.cpp
@@ -77,16 +77,34 @@ QPickEvent::QPickEvent()
\fn Qt3DRender::QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance)
Constructs a new QPickEvent with the given parameters: \a position, \a intersection, \a localIntersection and \a distance
*/
-QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance)
+// NOTE: remove in Qt6
+QPickEvent::QPickEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance)
: QObject(*new QPickEventPrivate())
{
Q_D(QPickEvent);
d->m_position = position;
d->m_distance = distance;
- d->m_worldIntersection = intersection;
+ d->m_worldIntersection = worldIntersection;
d->m_localIntersection = localIntersection;
}
+/*!
+ \fn Qt3DRender::QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance)
+ Constructs a new QPickEvent with the given parameters: \a position, \a intersection, \a localIntersection, \a distance, \a button, \a buttons and \a modifiers
+ */
+QPickEvent::QPickEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance, QPickEvent::Buttons button, int buttons, int modifiers)
+ : QObject(*new QPickEventPrivate())
+{
+ Q_D(QPickEvent);
+ d->m_position = position;
+ d->m_distance = distance;
+ d->m_worldIntersection = worldIntersection;
+ d->m_localIntersection = localIntersection;
+ d->m_button = button;
+ d->m_buttons = buttons;
+ d->m_modifiers = modifiers;
+}
+
/*! \internal */
QPickEvent::QPickEvent(QObjectPrivate &dd, QObject *parent)
: QObject(dd, parent)
@@ -200,6 +218,81 @@ QVector3D QPickEvent::localIntersection() const
return d->m_localIntersection;
}
+/*!
+ * \enum Qt3DRender::QPickEvent::Buttons
+ *
+ * \value LeftButton
+ * \value RightButton
+ * \value MiddleButton
+ * \value BackButton
+ * \value NoButton
+ */
+
+/*!
+ \qmlproperty bool Qt3D.Render::PickEvent::button
+ Specifies mouse button that caused the event
+*/
+/*!
+ \property Qt3DRender::QPickEvent::button
+ Specifies mouse button that caused the event
+ */
+/*!
+ * \brief QPickEvent::button
+ * \return mouse button that caused the event
+ */
+QPickEvent::Buttons QPickEvent::button() const
+{
+ Q_D(const QPickEvent);
+ return d->m_button;
+}
+
+/*!
+ \qmlproperty bool Qt3D.Render::PickEvent::buttons
+ Specifies state of the mouse buttons for the event
+*/
+/*!
+ \property Qt3DRender::QPickEvent::buttons
+ Specifies state of the mouse buttons for the event
+ */
+/*!
+ * \brief QPickEvent::buttons
+ * \return bitfield to be used to check for mouse buttons that may be accompanying the pick event.
+ */
+int QPickEvent::buttons() const
+{
+ Q_D(const QPickEvent);
+ return d->m_buttons;
+}
+
+/*!
+ * \enum Qt3DRender::QPickEvent::Modifiers
+ *
+ * \value NoModifier
+ * \value ShiftModifier
+ * \value ControlModifier
+ * \value AltModifier
+ * \value MetaModifier
+ * \value KeypadModifier
+ */
+
+/*!
+ \qmlproperty bool Qt3D.Render::PickEvent::modifiers
+ Specifies state of the mouse buttons for the event
+*/
+/*!
+ \property Qt3DRender::QPickEvent::modifiers
+ Specifies state of the mouse buttons for the event
+ */
+/*!
+ * \brief QPickEvent::modifiers
+ * \return bitfield to be used to check for keyboard modifiers that may be accompanying the pick event.
+ */
+int QPickEvent::modifiers() const
+{
+ Q_D(const QPickEvent);
+ return d->m_modifiers;
+}
+
} // Qt3DRender
QT_END_NAMESPACE
diff --git a/src/render/picking/qpickevent.h b/src/render/picking/qpickevent.h
index 431fe1927..cd925f7ea 100644
--- a/src/render/picking/qpickevent.h
+++ b/src/render/picking/qpickevent.h
@@ -62,9 +62,32 @@ class QT3DRENDERSHARED_EXPORT QPickEvent : public QObject
Q_PROPERTY(float distance READ distance CONSTANT)
Q_PROPERTY(QVector3D localIntersection READ localIntersection CONSTANT)
Q_PROPERTY(QVector3D worldIntersection READ worldIntersection CONSTANT)
+ Q_PROPERTY(Qt3DRender::QPickEvent::Buttons button READ button CONSTANT)
+ Q_PROPERTY(int buttons READ buttons CONSTANT)
+ Q_PROPERTY(int modifiers READ modifiers CONSTANT)
public:
+ enum Buttons {
+ LeftButton = Qt::LeftButton,
+ RightButton = Qt::RightButton,
+ MiddleButton = Qt::MiddleButton,
+ BackButton = Qt::BackButton,
+ NoButton = Qt::NoButton
+ };
+ Q_ENUM(Buttons)
+
+ enum Modifiers {
+ NoModifier = Qt::NoModifier,
+ ShiftModifier = Qt::ShiftModifier,
+ ControlModifier = Qt::ControlModifier,
+ AltModifier = Qt::AltModifier,
+ MetaModifier = Qt::MetaModifier,
+ KeypadModifier = Qt::KeypadModifier
+ };
+ Q_ENUM(Modifiers)
+
QPickEvent();
QPickEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance);
+ QPickEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance, Buttons button, int buttons, int modifiers);
~QPickEvent();
bool isAccepted() const;
@@ -77,6 +100,9 @@ public:
float distance() const;
QVector3D worldIntersection() const;
QVector3D localIntersection() const;
+ Buttons button() const;
+ int buttons() const;
+ int modifiers() const;
Q_SIGNALS:
void acceptedChanged(bool accepted);
diff --git a/src/render/picking/qpickevent_p.h b/src/render/picking/qpickevent_p.h
index fd9ed36a2..399795619 100644
--- a/src/render/picking/qpickevent_p.h
+++ b/src/render/picking/qpickevent_p.h
@@ -61,6 +61,9 @@ public:
: QObjectPrivate()
, m_accepted(true)
, m_distance(-1.f)
+ , m_button(QPickEvent::NoButton)
+ , m_buttons(QPickEvent::NoButton)
+ , m_modifiers(QPickEvent::NoModifier)
{
}
@@ -69,6 +72,9 @@ public:
QVector3D m_worldIntersection;
QVector3D m_localIntersection;
float m_distance;
+ QPickEvent::Buttons m_button;
+ int m_buttons;
+ int m_modifiers;
};
} // Qt3DRender
diff --git a/src/render/picking/qpicktriangleevent.cpp b/src/render/picking/qpicktriangleevent.cpp
index b636638e6..50cafb8d9 100644
--- a/src/render/picking/qpicktriangleevent.cpp
+++ b/src/render/picking/qpicktriangleevent.cpp
@@ -102,14 +102,15 @@ QPickTriangleEvent::QPickTriangleEvent()
* \a vertex2Index and
* \a vertex3Index
*/
-QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance,
+// NOTE: remove in Qt6
+QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance,
uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index)
: QPickEvent(*new QPickTriangleEventPrivate())
{
Q_D(QPickTriangleEvent);
d->m_position = position;
d->m_distance = distance;
- d->m_worldIntersection = intersection;
+ d->m_worldIntersection = worldIntersection;
d->m_localIntersection = localIntersection;
d->m_triangleIndex = triangleIndex;
d->m_vertex1Index = vertex1Index;
@@ -117,6 +118,23 @@ QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D
d->m_vertex3Index = vertex3Index;
}
+QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance, uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index, QPickEvent::Buttons button, int buttons, int modifiers)
+ : QPickEvent(*new QPickTriangleEventPrivate())
+{
+ Q_D(QPickTriangleEvent);
+ d->m_position = position;
+ d->m_distance = distance;
+ d->m_worldIntersection = worldIntersection;
+ d->m_localIntersection = localIntersection;
+ d->m_triangleIndex = triangleIndex;
+ d->m_vertex1Index = vertex1Index;
+ d->m_vertex2Index = vertex2Index;
+ d->m_vertex3Index = vertex3Index;
+ d->m_button = button;
+ d->m_buttons = buttons;
+ d->m_modifiers = modifiers;
+}
+
/*! \internal */
QPickTriangleEvent::~QPickTriangleEvent()
{
diff --git a/src/render/picking/qpicktriangleevent.h b/src/render/picking/qpicktriangleevent.h
index e60a81dd6..7cafa1aeb 100644
--- a/src/render/picking/qpicktriangleevent.h
+++ b/src/render/picking/qpicktriangleevent.h
@@ -58,6 +58,8 @@ public:
QPickTriangleEvent();
QPickTriangleEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance,
uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index);
+ QPickTriangleEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance,
+ uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index, Buttons button, int buttons, int modifiers);
~QPickTriangleEvent();
public: