diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2017-01-25 10:41:32 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-01-27 12:34:54 +0000 |
commit | 5bd08543817328b5155201890031c4655f7d3b73 (patch) | |
tree | f25d365f5a84d17afde93f63d279e3bc87d2dded /src/animation/frontend/qclipanimator.cpp | |
parent | c1e425920331325f889053b921e66ea572234784 (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.cpp | 28 |
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; } |