From 7a3648ef4e884429dbe4bb60ab5a0a838bc5abfc Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Thu, 16 Feb 2017 17:38:52 +0000 Subject: Introduce QAbstractAnimationClip and rename QAnimationClip Introduced an abstract base class for types of animation clip. Also renamed QAnimationClip to QAnimationClipLoader since it loads data from files. Also renamed corresponding backend type and fixed up unit tests accordingly. Task-number: QTBUG-58898 Change-Id: I01a96e108cbbcd12e01913693e96610598965018 Reviewed-by: Kevin Ottens --- src/animation/frontend/qabstractclipblendnode.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/animation/frontend/qabstractclipblendnode.cpp') diff --git a/src/animation/frontend/qabstractclipblendnode.cpp b/src/animation/frontend/qabstractclipblendnode.cpp index 4154b4223..10e3b9ef5 100644 --- a/src/animation/frontend/qabstractclipblendnode.cpp +++ b/src/animation/frontend/qabstractclipblendnode.cpp @@ -38,7 +38,7 @@ #include "qabstractclipblendnode_p.h" #include #include -#include +#include QT_BEGIN_NAMESPACE @@ -63,7 +63,7 @@ QAbstractClipBlendNode::~QAbstractClipBlendNode() { } -void QAbstractClipBlendNode::addClip(QAnimationClip *clip) +void QAbstractClipBlendNode::addClip(QAbstractAnimationClip *clip) { Q_D(QAbstractClipBlendNode); if (!d->m_clips.contains(clip)) { @@ -87,7 +87,7 @@ void QAbstractClipBlendNode::addClip(QAnimationClip *clip) } } -void QAbstractClipBlendNode::removeClip(QAnimationClip *clip) +void QAbstractClipBlendNode::removeClip(QAbstractAnimationClip *clip) { Q_D(QAbstractClipBlendNode); if (d->m_changeArbiter != nullptr) { @@ -100,7 +100,7 @@ void QAbstractClipBlendNode::removeClip(QAnimationClip *clip) d->unregisterDestructionHelper(clip); } -QVector QAbstractClipBlendNode::clips() const +QVector QAbstractClipBlendNode::clips() const { Q_D(const QAbstractClipBlendNode); return d->m_clips; -- cgit v1.2.3 From 9a5139a2b59ac27afa190caa46ba22138f9dfa6c Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Fri, 24 Mar 2017 13:21:25 +0000 Subject: Remove clips property from QAbstractClipBlendNode and friends No longer needed as concrete subclasses each provide their own specific APIs for managing clips or sub trees. Change-Id: I8e090bcf18ad9bf0d19e36128d7556aaa6cd6edf Reviewed-by: Sean Harmer --- src/animation/frontend/qabstractclipblendnode.cpp | 59 ----------------------- 1 file changed, 59 deletions(-) (limited to 'src/animation/frontend/qabstractclipblendnode.cpp') diff --git a/src/animation/frontend/qabstractclipblendnode.cpp b/src/animation/frontend/qabstractclipblendnode.cpp index 10e3b9ef5..9cc6f3de6 100644 --- a/src/animation/frontend/qabstractclipblendnode.cpp +++ b/src/animation/frontend/qabstractclipblendnode.cpp @@ -36,9 +36,6 @@ #include "qabstractclipblendnode.h" #include "qabstractclipblendnode_p.h" -#include -#include -#include QT_BEGIN_NAMESPACE @@ -63,62 +60,6 @@ QAbstractClipBlendNode::~QAbstractClipBlendNode() { } -void QAbstractClipBlendNode::addClip(QAbstractAnimationClip *clip) -{ - Q_D(QAbstractClipBlendNode); - if (!d->m_clips.contains(clip)) { - d->m_clips.push_back(clip); - - // Ensures proper bookkeeping - d->registerDestructionHelper(clip, &QAbstractClipBlendNode::removeClip, d->m_clips); - - // We need to add it as a child of the current node if it has been declared inline - // Or not previously added as a child of the current node so that - // 1) The backend gets notified about it's creation - // 2) When the current node is destroyed, it gets destroyed as well - if (!clip->parent()) - clip->setParent(this); - - if (d->m_changeArbiter != nullptr) { - const auto change = Qt3DCore::QPropertyNodeAddedChangePtr::create(id(), clip); - change->setPropertyName("clip"); - d->notifyObservers(change); - } - } -} - -void QAbstractClipBlendNode::removeClip(QAbstractAnimationClip *clip) -{ - Q_D(QAbstractClipBlendNode); - if (d->m_changeArbiter != nullptr) { - const auto change = Qt3DCore::QPropertyNodeRemovedChangePtr::create(id(), clip); - change->setPropertyName("clip"); - d->notifyObservers(change); - } - d->m_clips.removeOne(clip); - // Remove bookkeeping connection - d->unregisterDestructionHelper(clip); -} - -QVector QAbstractClipBlendNode::clips() const -{ - Q_D(const QAbstractClipBlendNode); - return d->m_clips; -} - -QAbstractClipBlendNode *QAbstractClipBlendNode::parentClipBlendNode() const -{ - QAbstractClipBlendNode *parentBlendClipNode = nullptr; - QNode *parentN = parentNode(); - while (parentN != nullptr) { - parentBlendClipNode = qobject_cast(parentN); - if (parentBlendClipNode != nullptr) - break; - parentN = parentN->parentNode(); - } - return parentBlendClipNode; -} - } // Qt3DAnimation QT_END_NAMESPACE -- cgit v1.2.3 From f8862fac6366853d4b204a1e3c9e948ae5ba309b Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Sat, 22 Apr 2017 11:49:20 +0100 Subject: Document QAbstractClipBlendNode Change-Id: I15a95fed8500824e0eb0a5294c4725e6263a247c Reviewed-by: Paul Lemire --- src/animation/frontend/qabstractclipblendnode.cpp | 71 +++++++++++++++++++++++ 1 file changed, 71 insertions(+) (limited to 'src/animation/frontend/qabstractclipblendnode.cpp') diff --git a/src/animation/frontend/qabstractclipblendnode.cpp b/src/animation/frontend/qabstractclipblendnode.cpp index 9cc6f3de6..9860e969f 100644 --- a/src/animation/frontend/qabstractclipblendnode.cpp +++ b/src/animation/frontend/qabstractclipblendnode.cpp @@ -46,11 +46,82 @@ QAbstractClipBlendNodePrivate::QAbstractClipBlendNodePrivate() { } +/*! + \qmltype AbstractClipBlendNode + \instantiates Qt3DAnimation::QAbstractClipBlendNode + \inqmlmodule Qt3D.Animation + \since 5.9 + + \brief AbstractClipBlendNode is the base class for types used to construct animation blend + trees. + + Animation blend trees are used with a BlendedClipAnimator to dynamically blend a set of + animation clips together. The way in which the blending of animation clips is performed is + controlled by the structure of the blend tree and the properties on the nodes it contains. + + The leaf nodes in a blend tree are containers for the input animation clips. These clips can be + baked clips read from file via AnimationClipLoader, or they can be clips that you build within + your application with AnimatitonClip and AnimationClipData. To include a clip in your blend + tree, wrap it in a ClipBlendValue node. + + The interior nodes of a blend tree represent blending operations that will be applied to their + arguments which hold the input clips or even entire sub-trees of other blend tree nodes. + + At present, the Qt 3D Animation module provides the following blend tree node types: + + \list + \li Qt3D.Animation.ClipBlendValue + \li Qt3D.Animation.LerpClipBlend + \li Qt3D.Animation.QAdditiveClipBlend + \endlist + + Additional node types representing other blending operations will be added in the future. + + \sa BlendedClipAnimator +*/ + +/*! + \class Qt3DAnimation::QAbstractClipBlendNode + \inherits Qt3DCore::QNode + + \inmodule Qt3DAnimation + \since 5.9 + + \brief QAbstractClipBlendNode is the base class for types used to construct animation blend + trees. + + Animation blend trees are used with a QBlendedClipAnimator to dynamically blend a set of + animation clips together. The way in which the blending of animation clips is performed is + controlled by the structure of the blend tree and the properties on the nodes it contains. + + The leaf nodes in a blend tree are containers for the input animation clips. These clips can be + baked clips read from file via QAnimationClipLoader, or they can be clips that you build within + your application with QAnimatitonClip and QAnimationClipData. To include a clip in your blend + tree, wrap it in a QClipBlendValue node. + + The interior nodes of a blend tree represent blending operations that will be applied to their + arguments which hold the input clips or even entire sub-trees of other blend tree nodes. + + At present, the Qt 3D Animation module provides the following blend tree node types: + + \list + \li Qt3DAnimation::QClipBlendValue + \li Qt3DAnimation::QLerpClipBlend + \li Qt3DAnimation::QAdditiveClipBlend + \endlist + + Additional node types representing other blending operations will be added in the future. + + \sa QBlendedClipAnimator +*/ + +/*! \internal */ QAbstractClipBlendNode::QAbstractClipBlendNode(Qt3DCore::QNode *parent) : Qt3DCore::QNode(*new QAbstractClipBlendNodePrivate(), parent) { } +/*! \internal */ QAbstractClipBlendNode::QAbstractClipBlendNode(QAbstractClipBlendNodePrivate &dd, Qt3DCore::QNode *parent) : Qt3DCore::QNode(dd, parent) { -- cgit v1.2.3