summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-09-30 12:18:32 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-01 07:04:33 +0100
commit5bc3eec77b7052626bac91efd05026c92b0108b5 (patch)
treeefc9b9f9987860c552e200b79fa08c1d7f764ffc /src
parent040d50f0e3c44739bb546ac96da251b03d7ac271 (diff)
Update Axis Input classes to use direct sync
Change-Id: I22b0bb0fdf966cba536676e360dae5c9701e9ecb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/input/backend/abstractaxisinput.cpp24
-rw-r--r--src/input/backend/abstractaxisinput_p.h7
-rw-r--r--src/input/backend/analogaxisinput.cpp23
-rw-r--r--src/input/backend/analogaxisinput_p.h4
-rw-r--r--src/input/backend/buttonaxisinput.cpp35
-rw-r--r--src/input/backend/buttonaxisinput_p.h3
-rw-r--r--src/input/frontend/qinputaspect.cpp4
7 files changed, 32 insertions, 68 deletions
diff --git a/src/input/backend/abstractaxisinput.cpp b/src/input/backend/abstractaxisinput.cpp
index aae165a7e..de957c73a 100644
--- a/src/input/backend/abstractaxisinput.cpp
+++ b/src/input/backend/abstractaxisinput.cpp
@@ -54,32 +54,24 @@ namespace Qt3DInput {
namespace Input {
AbstractAxisInput::AbstractAxisInput()
- : Qt3DCore::QBackendNode()
+ : BackendNode()
{
}
-void AbstractAxisInput::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
-{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAbstractAxisInputData>>(change);
- const auto &data = typedChange->data;
- m_sourceDevice = data.sourceDeviceId;
-}
-
void AbstractAxisInput::cleanup()
{
QBackendNode::setEnabled(false);
m_sourceDevice = Qt3DCore::QNodeId();
}
-void AbstractAxisInput::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
+void AbstractAxisInput::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- if (e->type() == Qt3DCore::PropertyUpdated) {
- Qt3DCore::QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e);
- if (propertyChange->propertyName() == QByteArrayLiteral("sourceDevice")) {
- m_sourceDevice = propertyChange->value().value<Qt3DCore::QNodeId>();
- }
- }
- QBackendNode::sceneChangeEvent(e);
+ BackendNode::syncFromFrontEnd(frontEnd, firstTime);
+ const QAbstractAxisInput *node = qobject_cast<const QAbstractAxisInput *>(frontEnd);
+ if (!node)
+ return;
+
+ m_sourceDevice = Qt3DCore::qIdForNode(node->sourceDevice());
}
} // Input
diff --git a/src/input/backend/abstractaxisinput_p.h b/src/input/backend/abstractaxisinput_p.h
index 765e2214f..07a063908 100644
--- a/src/input/backend/abstractaxisinput_p.h
+++ b/src/input/backend/abstractaxisinput_p.h
@@ -51,7 +51,7 @@
// We mean it.
//
-#include <Qt3DCore/qbackendnode.h>
+#include <Qt3DInput/private/backendnode_p.h>
#include <Qt3DCore/qnodeid.h>
QT_BEGIN_NAMESPACE
@@ -64,19 +64,18 @@ namespace Input {
class InputHandler;
-class Q_AUTOTEST_EXPORT AbstractAxisInput : public Qt3DCore::QBackendNode
+class Q_AUTOTEST_EXPORT AbstractAxisInput : public BackendNode
{
public:
virtual void cleanup();
inline Qt3DCore::QNodeId sourceDevice() const { return m_sourceDevice; }
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
virtual float process(InputHandler *inputHandler, qint64 currentTime) = 0;
protected:
AbstractAxisInput();
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) override;
Qt3DCore::QNodeId m_sourceDevice;
};
diff --git a/src/input/backend/analogaxisinput.cpp b/src/input/backend/analogaxisinput.cpp
index 4a801baec..845bfad85 100644
--- a/src/input/backend/analogaxisinput.cpp
+++ b/src/input/backend/analogaxisinput.cpp
@@ -59,29 +59,20 @@ AnalogAxisInput::AnalogAxisInput()
{
}
-void AnalogAxisInput::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
-{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAnalogAxisInputData>>(change);
- const auto &data = typedChange->data;
- m_axis = data.axis;
- AbstractAxisInput::initializeFromPeer(change);
-}
-
void AnalogAxisInput::cleanup()
{
m_axis = 0;
AbstractAxisInput::cleanup();
}
-void AnalogAxisInput::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
+void AnalogAxisInput::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- if (e->type() == Qt3DCore::PropertyUpdated) {
- Qt3DCore::QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e);
- if (propertyChange->propertyName() == QByteArrayLiteral("axis")) {
- m_axis = propertyChange->value().toInt();
- }
- }
- AbstractAxisInput::sceneChangeEvent(e);
+ AbstractAxisInput::syncFromFrontEnd(frontEnd, firstTime);
+ const QAnalogAxisInput *node = qobject_cast<const QAnalogAxisInput *>(frontEnd);
+ if (!node)
+ return;
+
+ m_axis = node->axis();
}
float AnalogAxisInput::process(InputHandler *inputHandler, qint64 currentTime)
diff --git a/src/input/backend/analogaxisinput_p.h b/src/input/backend/analogaxisinput_p.h
index cd43e7d23..f13a2a2e1 100644
--- a/src/input/backend/analogaxisinput_p.h
+++ b/src/input/backend/analogaxisinput_p.h
@@ -66,13 +66,11 @@ public:
void cleanup() final;
inline int axis() const { return m_axis; }
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) final;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) final;
float process(InputHandler *inputHandler, qint64 currentTime) override;
private:
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final;
-
int m_axis;
};
diff --git a/src/input/backend/buttonaxisinput.cpp b/src/input/backend/buttonaxisinput.cpp
index fef8f6d41..ef67ce1fc 100644
--- a/src/input/backend/buttonaxisinput.cpp
+++ b/src/input/backend/buttonaxisinput.cpp
@@ -63,17 +63,6 @@ ButtonAxisInput::ButtonAxisInput()
{
}
-void ButtonAxisInput::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
-{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QButtonAxisInputData>>(change);
- const auto &data = typedChange->data;
- m_buttons = data.buttons;
- m_scale = data.scale;
- m_acceleration = data.acceleration;
- m_deceleration = data.deceleration;
- AbstractAxisInput::initializeFromPeer(change);
-}
-
void ButtonAxisInput::cleanup()
{
m_scale = 0.0f;
@@ -101,21 +90,17 @@ void ButtonAxisInput::updateSpeedRatio(qint64 currentTime, ButtonAxisInput::Upda
m_lastUpdateTime = currentTime;
}
-void ButtonAxisInput::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
+void ButtonAxisInput::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- if (e->type() == Qt3DCore::PropertyUpdated) {
- Qt3DCore::QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e);
- if (propertyChange->propertyName() == QByteArrayLiteral("scale")) {
- m_scale = propertyChange->value().toFloat();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("buttons")) {
- m_buttons = propertyChange->value().value<QVector<int>>();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("acceleration")) {
- m_acceleration = propertyChange->value().toFloat();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("deceleration")) {
- m_deceleration = propertyChange->value().toFloat();
- }
- }
- AbstractAxisInput::sceneChangeEvent(e);
+ AbstractAxisInput::syncFromFrontEnd(frontEnd, firstTime);
+ const QButtonAxisInput *node = qobject_cast<const QButtonAxisInput *>(frontEnd);
+ if (!node)
+ return;
+
+ m_scale = node->scale();
+ m_buttons = node->buttons();
+ m_acceleration = node->acceleration();
+ m_deceleration = node->deceleration();
}
namespace {
diff --git a/src/input/backend/buttonaxisinput_p.h b/src/input/backend/buttonaxisinput_p.h
index f47a9b5cc..761b9e92a 100644
--- a/src/input/backend/buttonaxisinput_p.h
+++ b/src/input/backend/buttonaxisinput_p.h
@@ -78,13 +78,12 @@ public:
inline float speedRatio() const { return m_speedRatio; }
inline qint64 lastUpdateTime() const { return m_lastUpdateTime; }
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) final;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) final;
float process(InputHandler *inputHandler, qint64 currentTime) override;
private:
void updateSpeedRatio(qint64 currentTime, UpdateType type);
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final;
QVector<int> m_buttons;
float m_scale;
diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp
index 197f487a7..da49e70e6 100644
--- a/src/input/frontend/qinputaspect.cpp
+++ b/src/input/frontend/qinputaspect.cpp
@@ -151,8 +151,8 @@ QInputAspect::QInputAspect(QInputAspectPrivate &dd, QObject *parent)
registerBackendType<QMouseHandler, true>(QBackendNodeMapperPtr(new Input::MouseHandlerFunctor(d_func()->m_inputHandler.data())));
registerBackendType<QAxis, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::Axis, Input::AxisManager>(d_func()->m_inputHandler->axisManager())));
registerBackendType<QAxisAccumulator, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::AxisAccumulator, Input::AxisAccumulatorManager>(d_func()->m_inputHandler->axisAccumulatorManager())));
- registerBackendType<QAnalogAxisInput>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::AnalogAxisInput, Input::AnalogAxisInputManager>(d_func()->m_inputHandler->analogAxisInputManager())));
- registerBackendType<QButtonAxisInput>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::ButtonAxisInput, Input::ButtonAxisInputManager>(d_func()->m_inputHandler->buttonAxisInputManager())));
+ registerBackendType<QAnalogAxisInput, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::AnalogAxisInput, Input::AnalogAxisInputManager>(d_func()->m_inputHandler->analogAxisInputManager())));
+ registerBackendType<QButtonAxisInput, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::ButtonAxisInput, Input::ButtonAxisInputManager>(d_func()->m_inputHandler->buttonAxisInputManager())));
registerBackendType<QAxisSetting, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::AxisSetting, Input::AxisSettingManager>(d_func()->m_inputHandler->axisSettingManager())));
registerBackendType<Qt3DInput::QAction, true>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::Action, Input::ActionManager>(d_func()->m_inputHandler->actionManager())));
registerBackendType<QActionInput>(QBackendNodeMapperPtr(new Input::InputNodeFunctor<Input::ActionInput, Input::ActionInputManager>(d_func()->m_inputHandler->actionInputManager())));