mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 17:17:58 +02:00
fix repeated pushing of avatar identity seq nums
This commit is contained in:
parent
50b56ec761
commit
ddb6db9f6a
2 changed files with 18 additions and 11 deletions
|
@ -1495,15 +1495,18 @@ void AvatarData::processAvatarIdentity(const QByteArray& identityData, bool& ide
|
||||||
udt::SequenceNumber incomingSequenceNumber(incomingSequenceNumberType);
|
udt::SequenceNumber incomingSequenceNumber(incomingSequenceNumberType);
|
||||||
|
|
||||||
if (!_hasProcessedFirstIdentity) {
|
if (!_hasProcessedFirstIdentity) {
|
||||||
_identitySequenceNumber = incomingSequenceNumber - 1;
|
_lastIncomingSequenceNumber = incomingSequenceNumber - 1;
|
||||||
_hasProcessedFirstIdentity = true;
|
_hasProcessedFirstIdentity = true;
|
||||||
qCDebug(avatars) << "Processing first identity packet for" << avatarSessionID << "-"
|
qCDebug(avatars) << "Processing first identity packet for" << avatarSessionID << "-"
|
||||||
<< (udt::SequenceNumber::Type) incomingSequenceNumber;
|
<< (udt::SequenceNumber::Type) incomingSequenceNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (incomingSequenceNumber > _identitySequenceNumber) {
|
if (incomingSequenceNumber > _lastIncomingSequenceNumber) {
|
||||||
Identity identity;
|
Identity identity;
|
||||||
|
|
||||||
|
qCDebug(avatars) << "Processing an identity packet from" << avatarSessionID
|
||||||
|
<< "-" << (udt::SequenceNumber::Type) incomingSequenceNumber;
|
||||||
|
|
||||||
packetStream >> identity.skeletonModelURL
|
packetStream >> identity.skeletonModelURL
|
||||||
>> identity.attachmentData
|
>> identity.attachmentData
|
||||||
>> identity.displayName
|
>> identity.displayName
|
||||||
|
@ -1511,7 +1514,7 @@ void AvatarData::processAvatarIdentity(const QByteArray& identityData, bool& ide
|
||||||
>> identity.avatarEntityData;
|
>> identity.avatarEntityData;
|
||||||
|
|
||||||
// set the store identity sequence number to match the incoming identity
|
// set the store identity sequence number to match the incoming identity
|
||||||
_identitySequenceNumber = incomingSequenceNumber;
|
_lastIncomingSequenceNumber = incomingSequenceNumber;
|
||||||
|
|
||||||
if (_firstSkeletonCheck || (identity.skeletonModelURL != cannonicalSkeletonModelURL(emptyURL))) {
|
if (_firstSkeletonCheck || (identity.skeletonModelURL != cannonicalSkeletonModelURL(emptyURL))) {
|
||||||
setSkeletonModelURL(identity.skeletonModelURL);
|
setSkeletonModelURL(identity.skeletonModelURL);
|
||||||
|
@ -1554,7 +1557,7 @@ void AvatarData::processAvatarIdentity(const QByteArray& identityData, bool& ide
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
qCDebug(avatars) << "Refusing to process identity for" << uuidStringWithoutCurlyBraces(avatarSessionID) << "since"
|
qCDebug(avatars) << "Refusing to process identity for" << uuidStringWithoutCurlyBraces(avatarSessionID) << "since"
|
||||||
<< (udt::SequenceNumber::Type) _identitySequenceNumber
|
<< (udt::SequenceNumber::Type) _lastIncomingSequenceNumber
|
||||||
<< "is later than" << (udt::SequenceNumber::Type) incomingSequenceNumber;
|
<< "is later than" << (udt::SequenceNumber::Type) incomingSequenceNumber;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1566,7 +1569,7 @@ QByteArray AvatarData::identityByteArray() const {
|
||||||
|
|
||||||
_avatarEntitiesLock.withReadLock([&] {
|
_avatarEntitiesLock.withReadLock([&] {
|
||||||
identityStream << getSessionUUID()
|
identityStream << getSessionUUID()
|
||||||
<< (udt::SequenceNumber::Type) _identitySequenceNumber
|
<< (udt::SequenceNumber::Type) _lastOutgoingSequenceNumber
|
||||||
<< urlToSend
|
<< urlToSend
|
||||||
<< _attachmentData
|
<< _attachmentData
|
||||||
<< _displayName
|
<< _displayName
|
||||||
|
@ -1747,6 +1750,12 @@ void AvatarData::sendAvatarDataPacket() {
|
||||||
|
|
||||||
void AvatarData::sendIdentityPacket() {
|
void AvatarData::sendIdentityPacket() {
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
|
if (_identityDataChanged) {
|
||||||
|
// if the identity data has changed, push the sequence number forwards
|
||||||
|
++_lastOutgoingSequenceNumber;
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray identityData = identityByteArray();
|
QByteArray identityData = identityByteArray();
|
||||||
|
|
||||||
auto packetList = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true);
|
auto packetList = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true);
|
||||||
|
@ -1757,7 +1766,7 @@ void AvatarData::sendIdentityPacket() {
|
||||||
},
|
},
|
||||||
[&](const SharedNodePointer& node) {
|
[&](const SharedNodePointer& node) {
|
||||||
nodeList->sendPacketList(std::move(packetList), *node);
|
nodeList->sendPacketList(std::move(packetList), *node);
|
||||||
});
|
});
|
||||||
|
|
||||||
_avatarEntityDataLocallyEdited = false;
|
_avatarEntityDataLocallyEdited = false;
|
||||||
_identityDataChanged = false;
|
_identityDataChanged = false;
|
||||||
|
|
|
@ -621,10 +621,7 @@ public:
|
||||||
static float _avatarSortCoefficientAge;
|
static float _avatarSortCoefficientAge;
|
||||||
|
|
||||||
bool getIdentityDataChanged() const { return _identityDataChanged; } // has the identity data changed since the last time sendIdentityPacket() was called
|
bool getIdentityDataChanged() const { return _identityDataChanged; } // has the identity data changed since the last time sendIdentityPacket() was called
|
||||||
void markIdentityDataChanged() {
|
void markIdentityDataChanged() { _identityDataChanged = true; }
|
||||||
_identityDataChanged = true;
|
|
||||||
++_identitySequenceNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
float getDensity() const { return _density; }
|
float getDensity() const { return _density; }
|
||||||
|
|
||||||
|
@ -783,7 +780,8 @@ protected:
|
||||||
float _audioAverageLoudness { 0.0f };
|
float _audioAverageLoudness { 0.0f };
|
||||||
|
|
||||||
bool _identityDataChanged { false };
|
bool _identityDataChanged { false };
|
||||||
udt::SequenceNumber _identitySequenceNumber { 0 };
|
udt::SequenceNumber _lastIncomingSequenceNumber { 0 };
|
||||||
|
udt::SequenceNumber _lastOutgoingSequenceNumber { 0 };
|
||||||
bool _hasProcessedFirstIdentity { false };
|
bool _hasProcessedFirstIdentity { false };
|
||||||
float _density;
|
float _density;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue