diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-20 07:55:19 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-09-20 11:09:58 +0100 |
commit | d17f9ebe8db0ee7e365535523739f6cc5f36fdce (patch) | |
tree | c535c95bf76af4c07e908ff4eae3fe1bfe6af324 /src/animation | |
parent | eaf652cff66d43457174ce8b7e5104f38894c8e8 (diff) |
Update QAdditiveClipBlend to use direct sync
Change-Id: If1349879cd05ce8616152ef4f5395c76b961ab74
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/animation')
-rw-r--r-- | src/animation/backend/additiveclipblend.cpp | 31 | ||||
-rw-r--r-- | src/animation/backend/additiveclipblend_p.h | 4 | ||||
-rw-r--r-- | src/animation/frontend/qanimationaspect.cpp | 2 |
3 files changed, 11 insertions, 26 deletions
diff --git a/src/animation/backend/additiveclipblend.cpp b/src/animation/backend/additiveclipblend.cpp index ac8b849e2..b89a1bbb2 100644 --- a/src/animation/backend/additiveclipblend.cpp +++ b/src/animation/backend/additiveclipblend.cpp @@ -35,10 +35,8 @@ ****************************************************************************/ #include "additiveclipblend_p.h" -#include <Qt3DAnimation/qclipblendnodecreatedchange.h> #include <Qt3DAnimation/qadditiveclipblend.h> #include <Qt3DAnimation/private/qadditiveclipblend_p.h> -#include <Qt3DCore/qpropertyupdatedchange.h> QT_BEGIN_NAMESPACE @@ -58,17 +56,16 @@ AdditiveClipBlend::~AdditiveClipBlend() { } -void AdditiveClipBlend::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) +void AdditiveClipBlend::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { - if (e->type() == Qt3DCore::PropertyUpdated) { - Qt3DCore::QPropertyUpdatedChangePtr change = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e); - if (change->propertyName() == QByteArrayLiteral("additiveFactor")) - m_additiveFactor = change->value().toFloat(); - else if (change->propertyName() == QByteArrayLiteral("baseClip")) - m_baseClipId = change->value().value<Qt3DCore::QNodeId>(); - else if (change->propertyName() == QByteArrayLiteral("additiveClip")) - m_additiveClipId = change->value().value<Qt3DCore::QNodeId>(); - } + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + const QAdditiveClipBlend *node = qobject_cast<const QAdditiveClipBlend *>(frontEnd); + if (!node) + return; + + m_additiveFactor = node->additiveFactor(); + m_baseClipId = Qt3DCore::qIdForNode(node->baseClip()); + m_additiveClipId = Qt3DCore::qIdForNode(node->additiveClip()); } ClipResults AdditiveClipBlend::doBlend(const QVector<ClipResults> &blendData) const @@ -84,16 +81,6 @@ ClipResults AdditiveClipBlend::doBlend(const QVector<ClipResults> &blendData) co return blendResults; } -void AdditiveClipBlend::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) -{ - ClipBlendNode::initializeFromPeer(change); - const auto creationChangeData = qSharedPointerCast<Qt3DAnimation::QClipBlendNodeCreatedChange<Qt3DAnimation::QAdditiveClipBlendData>>(change); - const Qt3DAnimation::QAdditiveClipBlendData cloneData = creationChangeData->data; - m_baseClipId = cloneData.baseClipId; - m_additiveClipId = cloneData.additiveClipId; - m_additiveFactor = cloneData.additiveFactor; -} - } // Animation } // Qt3DAnimation diff --git a/src/animation/backend/additiveclipblend_p.h b/src/animation/backend/additiveclipblend_p.h index 0cf74ad56..48e882303 100644 --- a/src/animation/backend/additiveclipblend_p.h +++ b/src/animation/backend/additiveclipblend_p.h @@ -71,7 +71,7 @@ public: inline float additiveFactor() const { return m_additiveFactor; } void setAdditiveFactor(float additiveFactor) { m_additiveFactor = additiveFactor; } // For unit tests - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) final; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) final; inline QVector<Qt3DCore::QNodeId> allDependencyIds() const override { @@ -94,8 +94,6 @@ protected: ClipResults doBlend(const QVector<ClipResults> &blendData) const final; private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; - Qt3DCore::QNodeId m_baseClipId; Qt3DCore::QNodeId m_additiveClipId; float m_additiveFactor; diff --git a/src/animation/frontend/qanimationaspect.cpp b/src/animation/frontend/qanimationaspect.cpp index 9b722fd4c..e3480ca2e 100644 --- a/src/animation/frontend/qanimationaspect.cpp +++ b/src/animation/frontend/qanimationaspect.cpp @@ -125,7 +125,7 @@ QAnimationAspect::QAnimationAspect(QAnimationAspectPrivate &dd, QObject *parent) registerBackendType<QLerpClipBlend>( QSharedPointer<Animation::ClipBlendNodeFunctor<Animation::LerpClipBlend, Animation::ClipAnimatorManager>>::create(d->m_handler.data(), d->m_handler->clipBlendNodeManager())); - registerBackendType<QAdditiveClipBlend>( + registerBackendType<QAdditiveClipBlend, true>( QSharedPointer<Animation::ClipBlendNodeFunctor<Animation::AdditiveClipBlend, Animation::ClipAnimatorManager>>::create(d->m_handler.data(), d->m_handler->clipBlendNodeManager())); registerBackendType<QClipBlendValue>( |