summaryrefslogtreecommitdiffstats
path: root/src/render/geometry
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2017-08-22 17:04:34 +0100
committerSean Harmer <sean.harmer@kdab.com>2017-08-30 12:59:23 +0000
commitd0f45d9819c556bb5e3ec5bfd848db630f26638e (patch)
tree4fecb165af9068da8e108beb466dda813ed0d8e0 /src/render/geometry
parent9fc405b68e8dd60ed2cd957d85147017621b85f9 (diff)
Send joint names and local poses from render to animation aspect
This will allow the animation aspect to easily update the local poses of all joints in a skeleton without needing to be able to address any frontend QJoint objects. Change-Id: Id2137f2533702387dc68296aba1dd8627b0599d6 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/geometry')
-rw-r--r--src/render/geometry/skeleton.cpp11
-rw-r--r--src/render/geometry/skeleton_p.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/render/geometry/skeleton.cpp b/src/render/geometry/skeleton.cpp
index f672f867e..485069e2a 100644
--- a/src/render/geometry/skeleton.cpp
+++ b/src/render/geometry/skeleton.cpp
@@ -175,6 +175,16 @@ void Skeleton::notifyJointCount()
notifyObservers(e);
}
+void Skeleton::notifyJointNamesAndPoses()
+{
+ auto e = QPropertyUpdatedChangePtr::create(peerId());
+ JointNamesAndLocalPoses payload{m_skeletonData.jointNames, m_skeletonData.localPoses};
+ e->setDeliveryFlags(Qt3DCore::QSceneChange::BackendNodes);
+ e->setPropertyName("jointNamesAndLocalPoses");
+ e->setValue(QVariant::fromValue(payload));
+ notifyObservers(e);
+}
+
void Skeleton::loadSkeleton()
{
qCDebug(Jobs) << Q_FUNC_INFO << m_source;
@@ -205,6 +215,7 @@ void Skeleton::loadSkeleton()
setStatus(QSkeletonLoader::Ready);
}
notifyJointCount();
+ notifyJointNamesAndPoses();
qCDebug(Jobs) << "Loaded skeleton data:" << *this;
}
diff --git a/src/render/geometry/skeleton_p.h b/src/render/geometry/skeleton_p.h
index e1611d21a..8907987d9 100644
--- a/src/render/geometry/skeleton_p.h
+++ b/src/render/geometry/skeleton_p.h
@@ -95,6 +95,7 @@ public:
int jointCount() const { return m_skeletonData.joints.size(); }
void notifyJointCount();
+ void notifyJointNamesAndPoses();
QVector<JointInfo> joints() const { return m_skeletonData.joints; }
Qt3DCore::QNodeId rootJointId() const { return m_rootJointId; }