mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 14:58:03 +02:00
Merge branch 'master' of github.com:highfidelity/hifi into fix-linux-asan
This commit is contained in:
commit
4c5090e8ac
4 changed files with 30 additions and 10 deletions
|
@ -331,7 +331,13 @@ void AvatarMixer::manageIdentityData(const SharedNodePointer& node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sendIdentity) {
|
if (sendIdentity) {
|
||||||
sendIdentityPacket(nodeData, node); // Tell node whose name changed about its new session display name or avatar.
|
|
||||||
|
// since this packet includes a change to either the skeleton model URL or the display name
|
||||||
|
// it needs a new sequence number
|
||||||
|
nodeData->getAvatar().pushIdentitySequenceNumber();
|
||||||
|
|
||||||
|
// tell node whose name changed about its new session display name or avatar.
|
||||||
|
sendIdentityPacket(nodeData, node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1496,13 +1496,13 @@ void AvatarData::processAvatarIdentity(const QByteArray& identityData, bool& ide
|
||||||
udt::SequenceNumber incomingSequenceNumber(incomingSequenceNumberType);
|
udt::SequenceNumber incomingSequenceNumber(incomingSequenceNumberType);
|
||||||
|
|
||||||
if (!_hasProcessedFirstIdentity) {
|
if (!_hasProcessedFirstIdentity) {
|
||||||
_lastSequenceNumber = incomingSequenceNumber - 1;
|
_identitySequenceNumber = 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 > _lastSequenceNumber) {
|
if (incomingSequenceNumber > _identitySequenceNumber) {
|
||||||
Identity identity;
|
Identity identity;
|
||||||
|
|
||||||
packetStream >> identity.skeletonModelURL
|
packetStream >> identity.skeletonModelURL
|
||||||
|
@ -1512,7 +1512,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
|
||||||
_lastSequenceNumber = incomingSequenceNumber;
|
_identitySequenceNumber = incomingSequenceNumber;
|
||||||
|
|
||||||
if (_firstSkeletonCheck || (identity.skeletonModelURL != cannonicalSkeletonModelURL(emptyURL))) {
|
if (_firstSkeletonCheck || (identity.skeletonModelURL != cannonicalSkeletonModelURL(emptyURL))) {
|
||||||
setSkeletonModelURL(identity.skeletonModelURL);
|
setSkeletonModelURL(identity.skeletonModelURL);
|
||||||
|
@ -1555,7 +1555,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) _lastSequenceNumber
|
<< (udt::SequenceNumber::Type) _identitySequenceNumber
|
||||||
<< "is >=" << (udt::SequenceNumber::Type) incomingSequenceNumber;
|
<< "is >=" << (udt::SequenceNumber::Type) incomingSequenceNumber;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1571,7 +1571,7 @@ QByteArray AvatarData::identityByteArray() const {
|
||||||
|
|
||||||
_avatarEntitiesLock.withReadLock([&] {
|
_avatarEntitiesLock.withReadLock([&] {
|
||||||
identityStream << getSessionUUID()
|
identityStream << getSessionUUID()
|
||||||
<< (udt::SequenceNumber::Type) _lastSequenceNumber
|
<< (udt::SequenceNumber::Type) _identitySequenceNumber
|
||||||
<< urlToSend
|
<< urlToSend
|
||||||
<< _attachmentData
|
<< _attachmentData
|
||||||
<< _displayName
|
<< _displayName
|
||||||
|
@ -1755,7 +1755,7 @@ void AvatarData::sendIdentityPacket() {
|
||||||
|
|
||||||
if (_identityDataChanged) {
|
if (_identityDataChanged) {
|
||||||
// if the identity data has changed, push the sequence number forwards
|
// if the identity data has changed, push the sequence number forwards
|
||||||
++_lastSequenceNumber;
|
++_identitySequenceNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray identityData = identityByteArray();
|
QByteArray identityData = identityByteArray();
|
||||||
|
|
|
@ -625,6 +625,8 @@ public:
|
||||||
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() { _identityDataChanged = true; }
|
void markIdentityDataChanged() { _identityDataChanged = true; }
|
||||||
|
|
||||||
|
void pushIdentitySequenceNumber() { ++_identitySequenceNumber; };
|
||||||
|
|
||||||
float getDensity() const { return _density; }
|
float getDensity() const { return _density; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -781,7 +783,7 @@ protected:
|
||||||
float _audioAverageLoudness { 0.0f };
|
float _audioAverageLoudness { 0.0f };
|
||||||
|
|
||||||
bool _identityDataChanged { false };
|
bool _identityDataChanged { false };
|
||||||
udt::SequenceNumber _lastSequenceNumber { 0 };
|
udt::SequenceNumber _identitySequenceNumber { 0 };
|
||||||
bool _hasProcessedFirstIdentity { false };
|
bool _hasProcessedFirstIdentity { false };
|
||||||
float _density;
|
float _density;
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
|
|
||||||
#include <QThreadPool>
|
#include <QThreadPool>
|
||||||
|
|
||||||
|
#include <Gzip.h>
|
||||||
|
|
||||||
#include "ModelNetworkingLogging.h"
|
#include "ModelNetworkingLogging.h"
|
||||||
#include <Trace.h>
|
#include <Trace.h>
|
||||||
#include <StatTracker.h>
|
#include <StatTracker.h>
|
||||||
|
@ -171,7 +173,9 @@ void GeometryReader::run() {
|
||||||
|
|
||||||
QString urlname = _url.path().toLower();
|
QString urlname = _url.path().toLower();
|
||||||
if (!urlname.isEmpty() && !_url.path().isEmpty() &&
|
if (!urlname.isEmpty() && !_url.path().isEmpty() &&
|
||||||
(_url.path().toLower().endsWith(".fbx") || _url.path().toLower().endsWith(".obj"))) {
|
(_url.path().toLower().endsWith(".fbx") ||
|
||||||
|
_url.path().toLower().endsWith(".obj") ||
|
||||||
|
_url.path().toLower().endsWith(".obj.gz"))) {
|
||||||
FBXGeometry::Pointer fbxGeometry;
|
FBXGeometry::Pointer fbxGeometry;
|
||||||
|
|
||||||
if (_url.path().toLower().endsWith(".fbx")) {
|
if (_url.path().toLower().endsWith(".fbx")) {
|
||||||
|
@ -181,6 +185,14 @@ void GeometryReader::run() {
|
||||||
}
|
}
|
||||||
} else if (_url.path().toLower().endsWith(".obj")) {
|
} else if (_url.path().toLower().endsWith(".obj")) {
|
||||||
fbxGeometry.reset(OBJReader().readOBJ(_data, _mapping, _combineParts, _url));
|
fbxGeometry.reset(OBJReader().readOBJ(_data, _mapping, _combineParts, _url));
|
||||||
|
} else if (_url.path().toLower().endsWith(".obj.gz")) {
|
||||||
|
QByteArray uncompressedData;
|
||||||
|
if (gunzip(_data, uncompressedData)){
|
||||||
|
fbxGeometry.reset(OBJReader().readOBJ(uncompressedData, _mapping, _combineParts, _url));
|
||||||
|
} else {
|
||||||
|
throw QString("failed to decompress .obj.gz" );
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw QString("unsupported format");
|
throw QString("unsupported format");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue