summaryrefslogtreecommitdiffstats
path: root/src/animation/frontend/qclipanimator.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2017-01-25 10:41:32 +0000
committerSean Harmer <sean.harmer@kdab.com>2017-01-27 12:34:54 +0000
commit5bd08543817328b5155201890031c4655f7d3b73 (patch)
treef25d365f5a84d17afde93f63d279e3bc87d2dded /src/animation/frontend/qclipanimator.cpp
parentc1e425920331325f889053b921e66ea572234784 (diff)
Add channelMapper property to QClipAnimator
Change-Id: I50a07e51188ae31f58e57d1baf98e22792ce88db Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/animation/frontend/qclipanimator.cpp')
-rw-r--r--src/animation/frontend/qclipanimator.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/animation/frontend/qclipanimator.cpp b/src/animation/frontend/qclipanimator.cpp
index a4861422f..485f13091 100644
--- a/src/animation/frontend/qclipanimator.cpp
+++ b/src/animation/frontend/qclipanimator.cpp
@@ -40,6 +40,7 @@
#include "qclipanimator.h"
#include "qclipanimator_p.h"
#include <Qt3DAnimation/qanimationclip.h>
+#include <Qt3DAnimation/qchannelmapper.h>
QT_BEGIN_NAMESPACE
@@ -48,6 +49,7 @@ namespace Qt3DAnimation {
QClipAnimatorPrivate::QClipAnimatorPrivate()
: Qt3DCore::QComponentPrivate()
, m_clip(nullptr)
+ , m_mapper(nullptr)
, m_running(false)
{
}
@@ -78,6 +80,12 @@ bool QClipAnimator::isRunning() const
return d->m_running;
}
+QChannelMapper *QClipAnimator::channelMapper() const
+{
+ Q_D(const QClipAnimator);
+ return d->m_mapper;
+}
+
void QClipAnimator::setClip(QAnimationClip *clip)
{
Q_D(QClipAnimator);
@@ -107,12 +115,32 @@ void QClipAnimator::setRunning(bool running)
emit runningChanged(running);
}
+void QClipAnimator::setChannelMapper(QChannelMapper *mapping)
+{
+ Q_D(QClipAnimator);
+ if (d->m_mapper == mapping)
+ return;
+
+ if (d->m_mapper)
+ d->unregisterDestructionHelper(d->m_mapper);
+
+ if (mapping && !mapping->parent())
+ mapping->setParent(this);
+ d->m_mapper = mapping;
+
+ // Ensures proper bookkeeping
+ if (d->m_mapper)
+ d->registerDestructionHelper(d->m_mapper, &QClipAnimator::setChannelMapper, d->m_mapper);
+ emit channelMapperChanged(mapping);
+}
+
Qt3DCore::QNodeCreatedChangeBasePtr QClipAnimator::createNodeCreationChange() const
{
auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QClipAnimatorData>::create(this);
auto &data = creationChange->data;
Q_D(const QClipAnimator);
data.clipId = Qt3DCore::qIdForNode(d->m_clip);
+ data.mapperId = Qt3DCore::qIdForNode(d->m_mapper);
data.running = d->m_running;
return creationChange;
}