From 4d2048c6f6779a8e917f158b542586f24ec2ed63 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sun, 20 Sep 2015 13:12:13 -0700 Subject: [PATCH] Let other users see your default avatar. Fixes https://app.asana.com/0/26225263936266/51001490412567 --- libraries/avatars/src/AvatarData.cpp | 5 +++-- libraries/avatars/src/AvatarData.h | 2 +- libraries/avatars/src/AvatarHashMap.cpp | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index e1bb6ae8a0..104b592c1a 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -73,7 +73,7 @@ AvatarData::~AvatarData() { // We cannot have a file-level variable (const or otherwise) in the header if it uses PathUtils, because that references Application, which will not yet initialized. // Thus we have a static class getter, referencing a static class var. QUrl AvatarData::_defaultFullAvatarModelUrl = {}; // In C++, if this initialization were in the header, every file would have it's own copy, even for class vars. -const QUrl AvatarData::defaultFullAvatarModelUrl() { +const QUrl& AvatarData::defaultFullAvatarModelUrl() { if (_defaultFullAvatarModelUrl.isEmpty()) { _defaultFullAvatarModelUrl = QUrl::fromLocalFile(PathUtils::resourcesPath() + "meshes/defaultAvatar_full.fst"); } @@ -966,8 +966,9 @@ bool AvatarData::hasIdentityChangedAfterParsing(NLPacket& packet) { QByteArray AvatarData::identityByteArray() { QByteArray identityData; QDataStream identityStream(&identityData, QIODevice::Append); + const QUrl& urlToSend = (_skeletonModelURL == AvatarData::defaultFullAvatarModelUrl()) ? QUrl("") : _skeletonModelURL; - identityStream << QUuid() << _faceModelURL << _skeletonModelURL << _attachmentData << _displayName; + identityStream << QUuid() << _faceModelURL << urlToSend << _attachmentData << _displayName; return identityData; } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 81d252c622..a934b98037 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -166,7 +166,7 @@ public: AvatarData(); virtual ~AvatarData(); - static const QUrl defaultFullAvatarModelUrl(); + static const QUrl& defaultFullAvatarModelUrl(); virtual bool isMyAvatar() const { return false; } diff --git a/libraries/avatars/src/AvatarHashMap.cpp b/libraries/avatars/src/AvatarHashMap.cpp index 4378e818ec..520bb34887 100644 --- a/libraries/avatars/src/AvatarHashMap.cpp +++ b/libraries/avatars/src/AvatarHashMap.cpp @@ -99,8 +99,8 @@ void AvatarHashMap::processAvatarIdentityPacket(QSharedPointer packet, avatar->setFaceModelURL(faceMeshURL); } - if (avatar->getSkeletonModelURL() != skeletonURL) { - avatar->setSkeletonModelURL(skeletonURL); + if (avatar->getSkeletonModelURL().isEmpty() || (avatar->getSkeletonModelURL() != skeletonURL)) { + avatar->setSkeletonModelURL(skeletonURL); // Will expand "" to default and so will not continuously fire } if (avatar->getAttachmentData() != attachmentData) {