summaryrefslogtreecommitdiffstats
path: root/src/render/geometry
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-10-03 07:14:42 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-08 12:48:19 +0100
commit06567dc188c9302c5f2a4f9f86e8157051448f03 (patch)
tree5280b867bbedb6fd067e3675cd1016c6d4643d81 /src/render/geometry
parent7433513f5f08d02b9ed6233c4159f8f32f0db556 (diff)
Update LoadSkeletonJob to use direct sync
Change-Id: I5622f9784628b7217f6e37c700ac314b7264f439 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/geometry')
-rw-r--r--src/render/geometry/skeleton.cpp27
-rw-r--r--src/render/geometry/skeleton_p.h4
2 files changed, 5 insertions, 26 deletions
diff --git a/src/render/geometry/skeleton.cpp b/src/render/geometry/skeleton.cpp
index 14892922a..2fb74d1c1 100644
--- a/src/render/geometry/skeleton.cpp
+++ b/src/render/geometry/skeleton.cpp
@@ -119,9 +119,9 @@ void Skeleton::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
}
m_createJoints = loaderNode->isCreateJointsEnabled();
- if ((loaderNode->rootJoint() && loaderNode->rootJoint()->id() != m_rootJointId) ||
- (!loaderNode->rootJoint() && !m_rootJointId.isNull())) {
- m_rootJointId = loaderNode->rootJoint() ? loaderNode->rootJoint()->id() : Qt3DCore::QNodeId{};
+ auto newJointId = Qt3DCore::qIdForNode(loaderNode->rootJoint());
+ if (newJointId != m_rootJointId) {
+ m_rootJointId = newJointId;
// If using a QSkeletonLoader to create frontend QJoints, when those joints are
// set on the skeleton, we end up here. In order to allow the subsequent call
@@ -156,25 +156,6 @@ void Skeleton::setStatus(QSkeletonLoader::Status status)
}
}
-void Skeleton::notifyJointCount()
-{
- Qt3DCore::QPropertyUpdatedChangePtr e = Qt3DCore::QPropertyUpdatedChangePtr::create(peerId());
- e->setDeliveryFlags(Qt3DCore::QSceneChange::DeliverToAll);
- e->setPropertyName("jointCount");
- e->setValue(jointCount());
- 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;
@@ -204,8 +185,6 @@ void Skeleton::loadSkeleton()
else
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 d1c6befe9..6bddbb93b 100644
--- a/src/render/geometry/skeleton_p.h
+++ b/src/render/geometry/skeleton_p.h
@@ -94,9 +94,9 @@ public:
QString name() const { return m_name; }
int jointCount() const { return m_skeletonData.joints.size(); }
- void notifyJointCount();
- void notifyJointNamesAndPoses();
QVector<JointInfo> joints() const { return m_skeletonData.joints; }
+ QVector<QString> jointNames() const { return m_skeletonData.jointNames; }
+ QVector<Qt3DCore::Sqt> localPoses() const { return m_skeletonData.localPoses; }
Qt3DCore::QNodeId rootJointId() const { return m_rootJointId; }