diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-30 12:18:32 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-01 07:04:33 +0100 |
commit | 5bc3eec77b7052626bac91efd05026c92b0108b5 (patch) | |
tree | efc9b9f9987860c552e200b79fa08c1d7f764ffc /src | |
parent | 040d50f0e3c44739bb546ac96da251b03d7ac271 (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.cpp | 24 | ||||
-rw-r--r-- | src/input/backend/abstractaxisinput_p.h | 7 | ||||
-rw-r--r-- | src/input/backend/analogaxisinput.cpp | 23 | ||||
-rw-r--r-- | src/input/backend/analogaxisinput_p.h | 4 | ||||
-rw-r--r-- | src/input/backend/buttonaxisinput.cpp | 35 | ||||
-rw-r--r-- | src/input/backend/buttonaxisinput_p.h | 3 | ||||
-rw-r--r-- | src/input/frontend/qinputaspect.cpp | 4 |
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()))); |