summaryrefslogtreecommitdiffstats
path: root/src/animation
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-09-20 07:55:19 +0100
committerMike Krus <mike.krus@kdab.com>2019-09-20 11:09:58 +0100
commitd17f9ebe8db0ee7e365535523739f6cc5f36fdce (patch)
treec535c95bf76af4c07e908ff4eae3fe1bfe6af324 /src/animation
parenteaf652cff66d43457174ce8b7e5104f38894c8e8 (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.cpp31
-rw-r--r--src/animation/backend/additiveclipblend_p.h4
-rw-r--r--src/animation/frontend/qanimationaspect.cpp2
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>(