summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChip Collier <gregory.collier@kdab.com>2017-07-21 11:02:35 +0200
committerSean Harmer <sean.harmer@kdab.com>2017-07-24 09:02:37 +0000
commit721c44edfdedb0360181f8160144709867ed8749 (patch)
tree59f63b8a52a71632fac358b928daef35fb57a0ff /src
parente256972b2f1be3a0ccf2a0fa31424171ba856e01 (diff)
Add clock property to QAbstractClipAnimator
Introduces "clock" property to QAbstractClipAnimator and updates associated tests. Updated backend animator nodes and associated evaluation jobs. Change-Id: Id18cabdd710b9b7253772642f21f63043d316a42 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/animation/backend/animationutils_p.h5
-rw-r--r--src/animation/backend/blendedclipanimator.cpp10
-rw-r--r--src/animation/backend/blendedclipanimator_p.h3
-rw-r--r--src/animation/backend/clipanimator.cpp11
-rw-r--r--src/animation/backend/clipanimator_p.h3
-rw-r--r--src/animation/backend/clock.cpp1
-rw-r--r--src/animation/backend/clock_p.h1
-rw-r--r--src/animation/backend/evaluateblendclipanimatorjob.cpp4
-rw-r--r--src/animation/backend/evaluateclipanimatorjob.cpp4
-rw-r--r--src/animation/backend/handler.cpp1
-rw-r--r--src/animation/backend/handler_p.h3
-rw-r--r--src/animation/backend/managers_p.h11
-rw-r--r--src/animation/frontend/qabstractclipanimator.cpp26
-rw-r--r--src/animation/frontend/qabstractclipanimator.h5
-rw-r--r--src/animation/frontend/qabstractclipanimator_p.h3
-rw-r--r--src/animation/frontend/qanimationaspect.cpp6
-rw-r--r--src/animation/frontend/qclipanimator.cpp2
17 files changed, 93 insertions, 6 deletions
diff --git a/src/animation/backend/animationutils_p.h b/src/animation/backend/animationutils_p.h
index 6f00fc632..bcc50fce2 100644
--- a/src/animation/backend/animationutils_p.h
+++ b/src/animation/backend/animationutils_p.h
@@ -49,6 +49,7 @@
//
#include <Qt3DAnimation/private/qt3danimation_global_p.h>
+#include <Qt3DAnimation/private/clock_p.h>
#include <Qt3DAnimation/qanimationcallback.h>
#include <Qt3DCore/qnodeid.h>
#include <Qt3DCore/qscenechange.h>
@@ -114,11 +115,11 @@ struct AnimationCallbackAndValue
};
template<typename Animator>
-AnimatorEvaluationData evaluationDataForAnimator(Animator animator, qint64 globalTime)
+AnimatorEvaluationData evaluationDataForAnimator(Animator animator, Clock* clock, qint64 globalTime)
{
AnimatorEvaluationData data;
data.loopCount = animator->loops();
- data.playbackRate = 1.0; // should be a property on the animator
+ data.playbackRate = clock != nullptr ? clock->playbackRate() : 1.0;
// Convert global time from nsec to sec
data.startTime = double(animator->startTime()) / 1.0e9;
data.globalTime = double(globalTime) / 1.0e9;
diff --git a/src/animation/backend/blendedclipanimator.cpp b/src/animation/backend/blendedclipanimator.cpp
index 46b3b87fa..ec0a5027a 100644
--- a/src/animation/backend/blendedclipanimator.cpp
+++ b/src/animation/backend/blendedclipanimator.cpp
@@ -60,6 +60,7 @@ void BlendedClipAnimator::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeB
const QBlendedClipAnimatorData &data = typedChange->data;
m_blendTreeRootId = data.blendTreeRootId;
m_mapperId = data.mapperId;
+ m_clockId = data.clockId;
m_running = data.running;
m_loops = data.loops;
setDirty(Handler::BlendedClipAnimatorDirty);
@@ -71,6 +72,7 @@ void BlendedClipAnimator::cleanup()
m_handler = nullptr;
m_blendTreeRootId = Qt3DCore::QNodeId();
m_mapperId = Qt3DCore::QNodeId();
+ m_clockId = Qt3DCore::QNodeId();
m_running = false;
m_startGlobalTime = 0;
m_currentLoop = 0;
@@ -89,6 +91,12 @@ void BlendedClipAnimator::setMapperId(Qt3DCore::QNodeId mapperId)
setDirty(Handler::BlendedClipAnimatorDirty);
}
+void BlendedClipAnimator::setClockId(Qt3DCore::QNodeId clockId)
+{
+ m_clockId = clockId;
+ setDirty(Handler::BlendedClipAnimatorDirty);
+}
+
void BlendedClipAnimator::setRunning(bool running)
{
m_running = running;
@@ -130,6 +138,8 @@ void BlendedClipAnimator::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
setBlendTreeRootId(change->value().value<Qt3DCore::QNodeId>());
else if (change->propertyName() == QByteArrayLiteral("channelMapper"))
setMapperId(change->value().value<Qt3DCore::QNodeId>());
+ else if (change->propertyName() == QByteArrayLiteral("clock"))
+ setClockId(change->value().value<Qt3DCore::QNodeId>());
else if (change->propertyName() == QByteArrayLiteral("running"))
setRunning(change->value().toBool());
else if (change->propertyName() == QByteArrayLiteral("loops"))
diff --git a/src/animation/backend/blendedclipanimator_p.h b/src/animation/backend/blendedclipanimator_p.h
index e6311bc59..e15a892bb 100644
--- a/src/animation/backend/blendedclipanimator_p.h
+++ b/src/animation/backend/blendedclipanimator_p.h
@@ -68,6 +68,7 @@ public:
Qt3DCore::QNodeId blendTreeRootId() const;
Qt3DCore::QNodeId mapperId() const { return m_mapperId; }
+ Qt3DCore::QNodeId clockId() const { return m_clockId; }
bool isRunning() const { return m_running; }
// Called by BuildBlendTreeJob
@@ -75,6 +76,7 @@ public:
void setBlendTreeRootId(Qt3DCore::QNodeId blendTreeRootId);
void setMapperId(Qt3DCore::QNodeId mapperId);
+ void setClockId(Qt3DCore::QNodeId clockId);
void setRunning(bool running);
void setStartTime(qint64 globalTime) { m_startGlobalTime = globalTime; }
@@ -96,6 +98,7 @@ private:
void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL;
Qt3DCore::QNodeId m_blendTreeRootId;
Qt3DCore::QNodeId m_mapperId;
+ Qt3DCore::QNodeId m_clockId;
bool m_running;
qint64 m_startGlobalTime;
diff --git a/src/animation/backend/clipanimator.cpp b/src/animation/backend/clipanimator.cpp
index ea31698d0..9a5cce2e2 100644
--- a/src/animation/backend/clipanimator.cpp
+++ b/src/animation/backend/clipanimator.cpp
@@ -53,6 +53,7 @@ ClipAnimator::ClipAnimator()
: BackendNode(ReadWrite)
, m_clipId()
, m_mapperId()
+ , m_clockId()
, m_running(false)
, m_loops(1)
, m_startGlobalTime(0)
@@ -67,6 +68,7 @@ void ClipAnimator::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr
const auto &data = typedChange->data;
m_clipId = data.clipId;
m_mapperId = data.mapperId;
+ m_clockId = data.clockId;
m_running = data.running;
m_loops = data.loops;
setDirty(Handler::ClipAnimatorDirty);
@@ -84,6 +86,12 @@ void ClipAnimator::setMapperId(Qt3DCore::QNodeId mapperId)
setDirty(Handler::ClipAnimatorDirty);
}
+void ClipAnimator::setClockId(Qt3DCore::QNodeId clockId)
+{
+ m_clockId = clockId;
+ setDirty(Handler::ClipAnimatorDirty);
+}
+
void ClipAnimator::setRunning(bool running)
{
m_running = running;
@@ -98,6 +106,7 @@ void ClipAnimator::cleanup()
m_handler = nullptr;
m_clipId = Qt3DCore::QNodeId();
m_mapperId = Qt3DCore::QNodeId();
+ m_clockId = Qt3DCore::QNodeId();
m_running = false;
m_loops = 1;
}
@@ -111,6 +120,8 @@ void ClipAnimator::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
setClipId(change->value().value<Qt3DCore::QNodeId>());
else if (change->propertyName() == QByteArrayLiteral("channelMapper"))
setMapperId(change->value().value<Qt3DCore::QNodeId>());
+ else if (change->propertyName() == QByteArrayLiteral("clock"))
+ setClockId(change->value().value<Qt3DCore::QNodeId>());
else if (change->propertyName() == QByteArrayLiteral("running"))
setRunning(change->value().toBool());
else if (change->propertyName() == QByteArrayLiteral("loops"))
diff --git a/src/animation/backend/clipanimator_p.h b/src/animation/backend/clipanimator_p.h
index f0f631a5c..628a15e24 100644
--- a/src/animation/backend/clipanimator_p.h
+++ b/src/animation/backend/clipanimator_p.h
@@ -70,6 +70,8 @@ public:
Qt3DCore::QNodeId clipId() const { return m_clipId; }
void setMapperId(Qt3DCore::QNodeId mapperId);
Qt3DCore::QNodeId mapperId() const { return m_mapperId; }
+ void setClockId(Qt3DCore::QNodeId clockId);
+ Qt3DCore::QNodeId clockId() const { return m_clockId; }
void setRunning(bool running);
bool isRunning() const { return m_running; }
@@ -98,6 +100,7 @@ private:
Qt3DCore::QNodeId m_clipId;
Qt3DCore::QNodeId m_mapperId;
+ Qt3DCore::QNodeId m_clockId;
bool m_running;
int m_loops;
diff --git a/src/animation/backend/clock.cpp b/src/animation/backend/clock.cpp
index 870c79078..13d82f2e5 100644
--- a/src/animation/backend/clock.cpp
+++ b/src/animation/backend/clock.cpp
@@ -37,6 +37,7 @@
#include "clock_p.h"
#include <Qt3DAnimation/qclock.h>
#include <Qt3DAnimation/private/qclock_p.h>
+#include <Qt3DAnimation/private/animationutils_p.h>
#include <Qt3DCore/qpropertyupdatedchange.h>
#include <Qt3DCore/private/qpropertyupdatedchangebase_p.h>
diff --git a/src/animation/backend/clock_p.h b/src/animation/backend/clock_p.h
index a8dd86890..9ae8c60a9 100644
--- a/src/animation/backend/clock_p.h
+++ b/src/animation/backend/clock_p.h
@@ -49,7 +49,6 @@
//
#include <Qt3DAnimation/private/backendnode_p.h>
-#include <Qt3DAnimation/private/animationutils_p.h>
#include <Qt3DCore/qnodeid.h>
QT_BEGIN_NAMESPACE
diff --git a/src/animation/backend/evaluateblendclipanimatorjob.cpp b/src/animation/backend/evaluateblendclipanimatorjob.cpp
index e0f52765f..be05f7ec0 100644
--- a/src/animation/backend/evaluateblendclipanimatorjob.cpp
+++ b/src/animation/backend/evaluateblendclipanimatorjob.cpp
@@ -72,9 +72,11 @@ void EvaluateBlendClipAnimatorJob::run()
Q_ASSERT(blendTreeRootNode);
const double duration = blendTreeRootNode->duration();
+ Clock *clock = m_handler->clockManager()->lookupResource(blendedClipAnimator->clockId());
+
// Calculate the phase given the blend tree duration and global time
const qint64 globalTime = m_handler->simulationTime();
- const AnimatorEvaluationData animatorData = evaluationDataForAnimator(blendedClipAnimator, globalTime);
+ const AnimatorEvaluationData animatorData = evaluationDataForAnimator(blendedClipAnimator, clock, globalTime);
int currentLoop = 0;
const double phase = phaseFromGlobalTime(animatorData.globalTime,
animatorData.startTime,
diff --git a/src/animation/backend/evaluateclipanimatorjob.cpp b/src/animation/backend/evaluateclipanimatorjob.cpp
index e9f3d1da8..6dab51d63 100644
--- a/src/animation/backend/evaluateclipanimatorjob.cpp
+++ b/src/animation/backend/evaluateclipanimatorjob.cpp
@@ -62,11 +62,13 @@ void EvaluateClipAnimatorJob::run()
ClipAnimator *clipAnimator = m_handler->clipAnimatorManager()->data(m_clipAnimatorHandle);
Q_ASSERT(clipAnimator);
+ Clock *clock = m_handler->clockManager()->lookupResource(clipAnimator->clockId());
+
// Evaluate the fcurves
AnimationClip *clip = m_handler->animationClipLoaderManager()->lookupResource(clipAnimator->clipId());
Q_ASSERT(clip);
// Prepare for evaluation (convert global time to local time ....)
- const AnimatorEvaluationData animatorEvaluationData = evaluationDataForAnimator(clipAnimator, globalTime);
+ const AnimatorEvaluationData animatorEvaluationData = evaluationDataForAnimator(clipAnimator, clock, globalTime);
const ClipEvaluationData preEvaluationDataForClip = evaluationDataForClip(clip, animatorEvaluationData);
const ClipResults channelResults = evaluateClipAtLocalTime(clip, preEvaluationDataForClip.localTime);
diff --git a/src/animation/backend/handler.cpp b/src/animation/backend/handler.cpp
index 33bc8c9f4..8ced81cd1 100644
--- a/src/animation/backend/handler.cpp
+++ b/src/animation/backend/handler.cpp
@@ -52,6 +52,7 @@ namespace Animation {
Handler::Handler()
: m_animationClipLoaderManager(new AnimationClipLoaderManager)
+ , m_clockManager(new ClockManager)
, m_clipAnimatorManager(new ClipAnimatorManager)
, m_blendedClipAnimatorManager(new BlendedClipAnimatorManager)
, m_channelMappingManager(new ChannelMappingManager)
diff --git a/src/animation/backend/handler_p.h b/src/animation/backend/handler_p.h
index 97adfdc13..864d62cba 100644
--- a/src/animation/backend/handler_p.h
+++ b/src/animation/backend/handler_p.h
@@ -65,6 +65,7 @@ namespace Animation {
class AnimationClip;
class AnimationClipLoaderManager;
+class ClockManager;
class ClipAnimator;
class ClipAnimatorManager;
class BlendedClipAnimator;
@@ -108,6 +109,7 @@ public:
QVector<HBlendedClipAnimator> runningBlenndedClipAnimators() const { return m_runningBlendedClipAnimators; }
AnimationClipLoaderManager *animationClipLoaderManager() const Q_DECL_NOTHROW { return m_animationClipLoaderManager.data(); }
+ ClockManager *clockManager() const Q_DECL_NOTHROW { return m_clockManager.data(); }
ClipAnimatorManager *clipAnimatorManager() const Q_DECL_NOTHROW { return m_clipAnimatorManager.data(); }
BlendedClipAnimatorManager *blendedClipAnimatorManager() const Q_DECL_NOTHROW { return m_blendedClipAnimatorManager.data(); }
ChannelMappingManager *channelMappingManager() const Q_DECL_NOTHROW { return m_channelMappingManager.data(); }
@@ -121,6 +123,7 @@ public:
private:
QScopedPointer<AnimationClipLoaderManager> m_animationClipLoaderManager;
+ QScopedPointer<ClockManager> m_clockManager;
QScopedPointer<ClipAnimatorManager> m_clipAnimatorManager;
QScopedPointer<BlendedClipAnimatorManager> m_blendedClipAnimatorManager;
QScopedPointer<ChannelMappingManager> m_channelMappingManager;
diff --git a/src/animation/backend/managers_p.h b/src/animation/backend/managers_p.h
index f99ed0698..589e5ec3b 100644
--- a/src/animation/backend/managers_p.h
+++ b/src/animation/backend/managers_p.h
@@ -54,6 +54,7 @@
#include <QtGlobal>
#include <Qt3DAnimation/private/handle_types_p.h>
#include <Qt3DAnimation/private/animationclip_p.h>
+#include <Qt3DAnimation/private/clock_p.h>
#include <Qt3DAnimation/private/blendedclipanimator_p.h>
#include <Qt3DAnimation/private/clipanimator_p.h>
#include <Qt3DAnimation/private/channelmapping_p.h>
@@ -77,6 +78,16 @@ public:
AnimationClipLoaderManager() {}
};
+class ClockManager : public Qt3DCore::QResourceManager<
+ Clock,
+ Qt3DCore::QNodeId,
+ 16,
+ Qt3DCore::ArrayAllocatingPolicy>
+{
+public:
+ ClockManager() {}
+};
+
class ClipAnimatorManager : public Qt3DCore::QResourceManager<
ClipAnimator,
Qt3DCore::QNodeId,
diff --git a/src/animation/frontend/qabstractclipanimator.cpp b/src/animation/frontend/qabstractclipanimator.cpp
index 9484aea44..d72085b6e 100644
--- a/src/animation/frontend/qabstractclipanimator.cpp
+++ b/src/animation/frontend/qabstractclipanimator.cpp
@@ -40,6 +40,7 @@
#include "qabstractclipanimator.h"
#include "qabstractclipanimator_p.h"
#include <Qt3DAnimation/qchannelmapper.h>
+#include <Qt3DAnimation/qclock.h>
QT_BEGIN_NAMESPACE
@@ -48,6 +49,7 @@ namespace Qt3DAnimation {
QAbstractClipAnimatorPrivate::QAbstractClipAnimatorPrivate()
: Qt3DCore::QComponentPrivate()
, m_mapper(nullptr)
+ , m_clock(nullptr)
, m_running(false)
, m_loops(1)
{
@@ -174,6 +176,12 @@ int QAbstractClipAnimator::loopCount() const
return d->m_loops;
}
+QClock *QAbstractClipAnimator::clock() const
+{
+ Q_D(const QAbstractClipAnimator);
+ return d->m_clock;
+}
+
void QAbstractClipAnimator::setRunning(bool running)
{
Q_D(QAbstractClipAnimator);
@@ -213,6 +221,24 @@ void QAbstractClipAnimator::setLoopCount(int loops)
emit loopCountChanged(loops);
}
+void QAbstractClipAnimator::setClock(QClock *clock)
+{
+ Q_D(QAbstractClipAnimator);
+ if (d->m_clock == clock)
+ return;
+
+ if (d->m_clock)
+ d->unregisterDestructionHelper(d->m_clock);
+
+ if (clock && !clock->parent())
+ clock->setParent(this);
+ d->m_clock = clock;
+
+ if (d->m_clock)
+ d->registerDestructionHelper(d->m_clock, &QAbstractClipAnimator::setClock, d->m_clock);
+ emit clockChanged(clock);
+}
+
/*!
Starts the animation.
*/
diff --git a/src/animation/frontend/qabstractclipanimator.h b/src/animation/frontend/qabstractclipanimator.h
index bd38fd68b..8fdb114f3 100644
--- a/src/animation/frontend/qabstractclipanimator.h
+++ b/src/animation/frontend/qabstractclipanimator.h
@@ -49,6 +49,7 @@ namespace Qt3DAnimation {
class QAnimationClip;
class QChannelMapper;
+class QClock;
class QAbstractClipAnimatorPrivate;
class QT3DANIMATIONSHARED_EXPORT QAbstractClipAnimator : public Qt3DCore::QComponent
@@ -57,6 +58,7 @@ class QT3DANIMATIONSHARED_EXPORT QAbstractClipAnimator : public Qt3DCore::QCompo
Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged)
Q_PROPERTY(int loops READ loopCount WRITE setLoopCount NOTIFY loopCountChanged)
Q_PROPERTY(Qt3DAnimation::QChannelMapper *channelMapper READ channelMapper WRITE setChannelMapper NOTIFY channelMapperChanged)
+ Q_PROPERTY(Qt3DAnimation::QClock *clock READ clock WRITE setClock NOTIFY clockChanged)
public:
enum Loops { Infinite = -1 };
@@ -67,11 +69,13 @@ public:
bool isRunning() const;
Qt3DAnimation::QChannelMapper *channelMapper() const;
int loopCount() const;
+ Qt3DAnimation::QClock *clock() const;
public Q_SLOTS:
void setRunning(bool running);
void setChannelMapper(Qt3DAnimation::QChannelMapper *channelMapper);
void setLoopCount(int loops);
+ void setClock(Qt3DAnimation::QClock *clock);
void start();
void stop();
@@ -80,6 +84,7 @@ Q_SIGNALS:
void runningChanged(bool running);
void channelMapperChanged(Qt3DAnimation::QChannelMapper *channelMapper);
void loopCountChanged(int loops);
+ void clockChanged(Qt3DAnimation::QClock *clock);
protected:
explicit QAbstractClipAnimator(Qt3DCore::QNode *parent = nullptr);
diff --git a/src/animation/frontend/qabstractclipanimator_p.h b/src/animation/frontend/qabstractclipanimator_p.h
index 58553c8c1..4b0ef3339 100644
--- a/src/animation/frontend/qabstractclipanimator_p.h
+++ b/src/animation/frontend/qabstractclipanimator_p.h
@@ -58,6 +58,7 @@ QT_BEGIN_NAMESPACE
namespace Qt3DAnimation {
class QChannelMapper;
+class QClock;
class QAbstractClipAnimatorPrivate : public Qt3DCore::QComponentPrivate
{
@@ -67,6 +68,7 @@ public:
Q_DECLARE_PUBLIC(QAbstractClipAnimator)
Qt3DAnimation::QChannelMapper *m_mapper;
+ Qt3DAnimation::QClock *m_clock;
bool m_running;
int m_loops;
};
@@ -74,6 +76,7 @@ public:
struct QAbstractClipAnimatorData
{
Qt3DCore::QNodeId mapperId;
+ Qt3DCore::QNodeId clockId;
bool running;
int loops;
};
diff --git a/src/animation/frontend/qanimationaspect.cpp b/src/animation/frontend/qanimationaspect.cpp
index 00f97d5b6..bb786afff 100644
--- a/src/animation/frontend/qanimationaspect.cpp
+++ b/src/animation/frontend/qanimationaspect.cpp
@@ -40,6 +40,7 @@
#include "qanimationaspect.h"
#include "qanimationaspect_p.h"
#include <Qt3DAnimation/qabstractanimationclip.h>
+#include <Qt3DAnimation/qclock.h>
#include <Qt3DAnimation/qblendedclipanimator.h>
#include <Qt3DAnimation/qclipanimator.h>
#include <Qt3DAnimation/qchannelmapping.h>
@@ -95,7 +96,10 @@ QAnimationAspect::QAnimationAspect(QAnimationAspectPrivate &dd, QObject *parent)
registerBackendType<QAbstractAnimationClip>(
QSharedPointer<Animation::NodeFunctor<Animation::AnimationClip, Animation::AnimationClipLoaderManager>>::create(d->m_handler.data(),
- d->m_handler->animationClipLoaderManager()));
+ d->m_handler->animationClipLoaderManager()));
+ registerBackendType<QClock>(
+ QSharedPointer<Animation::NodeFunctor<Animation::Clock, Animation::ClockManager>>::create(d->m_handler.data(),
+ d->m_handler->clockManager()));
registerBackendType<QClipAnimator>(
QSharedPointer<Animation::NodeFunctor<Animation::ClipAnimator, Animation::ClipAnimatorManager>>::create(d->m_handler.data(),
d->m_handler->clipAnimatorManager()));
diff --git a/src/animation/frontend/qclipanimator.cpp b/src/animation/frontend/qclipanimator.cpp
index 3359a70ea..4fe21828f 100644
--- a/src/animation/frontend/qclipanimator.cpp
+++ b/src/animation/frontend/qclipanimator.cpp
@@ -41,6 +41,7 @@
#include "qclipanimator_p.h"
#include <Qt3DAnimation/qabstractanimationclip.h>
#include <Qt3DAnimation/qchannelmapper.h>
+#include <Qt3DAnimation/qclock.h>
#include <Qt3DAnimation/private/qanimationcallbacktrigger_p.h>
QT_BEGIN_NAMESPACE
@@ -161,6 +162,7 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClipAnimator::createNodeCreationChange() co
Q_D(const QClipAnimator);
data.clipId = Qt3DCore::qIdForNode(d->m_clip);
data.mapperId = Qt3DCore::qIdForNode(d->m_mapper);
+ data.clockId = Qt3DCore::qIdForNode(d->m_clock);
data.running = d->m_running;
data.loops = d->m_loops;
return creationChange;