diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index 5fdbd4cc9a..f86dc7f766 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -165,8 +165,10 @@ int AvatarMixerClientData::parseData(ReceivedMessage& message, const SlaveShared _avatar->setHasPriority(currentlyHasPriority); } bool isInScreenshareZone = findContainingZone.isInScreenshareZone; - if (isInScreenshareZone != _avatar->isInScreenshareZone()) { + if (isInScreenshareZone != _avatar->isInScreenshareZone() + || findContainingZone.screenshareZoneid != _avatar->getScreenshareZone()) { _avatar->setInScreenshareZone(isInScreenshareZone); + _avatar->setScreenshareZone(findContainingZone.screenshareZoneid); const QUuid& zoneId = isInScreenshareZone ? findContainingZone.screenshareZoneid : QUuid(); auto nodeList = DependencyManager::get(); auto packet = NLPacket::create(PacketType::AvatarZonePresence, 2 * NUM_BYTES_RFC4122_UUID, true); diff --git a/assignment-client/src/avatars/MixerAvatar.h b/assignment-client/src/avatars/MixerAvatar.h index 57daef021d..09a3522067 100644 --- a/assignment-client/src/avatars/MixerAvatar.h +++ b/assignment-client/src/avatars/MixerAvatar.h @@ -45,6 +45,8 @@ public: bool isInScreenshareZone() const { return _inScreenshareZone; } void setInScreenshareZone(bool value = true) { _inScreenshareZone = value; } + const QUuid& getScreenshareZone() const { return _screenshareZone; } + void setScreenshareZone(QUuid zone) { _screenshareZone = zone; } private: bool _needsHeroCheck { false }; @@ -69,6 +71,7 @@ private: bool _certifyFailed { false }; bool _needsIdentityUpdate { false }; bool _inScreenshareZone { false }; + QUuid _screenshareZone; bool generateFSTHash(); bool validateFSTHash(const QString& publicKey) const;