diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-30 09:14:31 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-01 07:04:15 +0100 |
commit | 07ef673479309ea6bfd57026be0fdb2ccdda0a9b (patch) | |
tree | e07cf06119ffa26914315e8ea9baa8d7d238e323 /src/input/backend | |
parent | bf34cec2c4e184c7b5dad23435bec45983b6b796 (diff) |
Update QAxisAccumulator to use direct sync
Change-Id: Ie68ace96dd3367533508c44e5c5ab8c199b81ce9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/backend')
-rw-r--r-- | src/input/backend/axisaccumulator.cpp | 42 | ||||
-rw-r--r-- | src/input/backend/axisaccumulator_p.h | 7 |
2 files changed, 17 insertions, 32 deletions
diff --git a/src/input/backend/axisaccumulator.cpp b/src/input/backend/axisaccumulator.cpp index edc282bec..fc66e02c9 100644 --- a/src/input/backend/axisaccumulator.cpp +++ b/src/input/backend/axisaccumulator.cpp @@ -40,7 +40,7 @@ #include "axisaccumulator_p.h" #include <Qt3DCore/qpropertyupdatedchange.h> - +#include <Qt3DInput/qaxis.h> #include <Qt3DInput/private/inputmanagers_p.h> #include <Qt3DInput/private/qaxisaccumulator_p.h> @@ -50,7 +50,7 @@ namespace Qt3DInput { namespace Input { AxisAccumulator::AxisAccumulator() - : Qt3DCore::QBackendNode(ReadWrite) + : BackendNode(ReadWrite) , m_sourceAxisId() , m_sourceAxisType(QAxisAccumulator::Velocity) , m_scale(1.0f) @@ -59,17 +59,6 @@ AxisAccumulator::AxisAccumulator() { } -void AxisAccumulator::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) -{ - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAxisAccumulatorData>>(change); - const auto &data = typedChange->data; - m_sourceAxisId = data.sourceAxisId; - m_sourceAxisType = data.sourceAxisType; - m_scale = data.scale; - m_value = 0.0f; - m_velocity = 0.0f; -} - void AxisAccumulator::cleanup() { QBackendNode::setEnabled(false); @@ -107,24 +96,21 @@ void AxisAccumulator::setVelocity(float velocity) } } -void AxisAccumulator::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) +void AxisAccumulator::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { - switch (e->type()) { - case Qt3DCore::PropertyUpdated: { - const auto change = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e); - if (change->propertyName() == QByteArrayLiteral("sourceAxis")) - m_sourceAxisId = change->value().value<Qt3DCore::QNodeId>(); - else if (change->propertyName() == QByteArrayLiteral("sourceAxisType")) - m_sourceAxisType = change->value().value<QAxisAccumulator::SourceAxisType>(); - else if (change->propertyName() == QByteArrayLiteral("scale")) - m_scale = change->value().toFloat(); - break; - } + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + const QAxisAccumulator *node = qobject_cast<const QAxisAccumulator *>(frontEnd); + if (!node) + return; - default: - break; + m_sourceAxisId = Qt3DCore::qIdForNode(node->sourceAxis()); + m_sourceAxisType = node->sourceAxisType(); + m_scale = node->scale(); + + if (firstTime) { + m_value = 0.f; + m_velocity = 0.f; } - QBackendNode::sceneChangeEvent(e); } void AxisAccumulator::stepIntegration(AxisManager *axisManager, float dt) diff --git a/src/input/backend/axisaccumulator_p.h b/src/input/backend/axisaccumulator_p.h index bb1a35812..2f5a7de63 100644 --- a/src/input/backend/axisaccumulator_p.h +++ b/src/input/backend/axisaccumulator_p.h @@ -52,6 +52,7 @@ // #include <Qt3DInput/qaxisaccumulator.h> +#include <Qt3DInput/private/backendnode_p.h> #include <Qt3DCore/qbackendnode.h> #include <Qt3DCore/qnodeid.h> @@ -62,7 +63,7 @@ namespace Input { class AxisManager; -class Q_AUTOTEST_EXPORT AxisAccumulator : public Qt3DCore::QBackendNode +class Q_AUTOTEST_EXPORT AxisAccumulator : public BackendNode { public: AxisAccumulator(); @@ -78,13 +79,11 @@ public: float velocity() const Q_DECL_NOTHROW { return m_velocity; } void setVelocity(float velocity); - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; void stepIntegration(AxisManager *axisManager, float dt); private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; - Qt3DCore::QNodeId m_sourceAxisId; QAxisAccumulator::SourceAxisType m_sourceAxisType; float m_scale; |