diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-10-03 07:14:42 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-08 12:48:19 +0100 |
commit | 06567dc188c9302c5f2a4f9f86e8157051448f03 (patch) | |
tree | 5280b867bbedb6fd067e3675cd1016c6d4643d81 /src/render/geometry | |
parent | 7433513f5f08d02b9ed6233c4159f8f32f0db556 (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.cpp | 27 | ||||
-rw-r--r-- | src/render/geometry/skeleton_p.h | 4 |
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; } |