mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 08:17:35 +02:00
Merge pull request #16069 from SimonWalton-HiFi/nonverified-avatar-more-robust
BUGZ-1247: Better handling of other-avatar verify-failed appearance
This commit is contained in:
commit
1569c4049f
7 changed files with 28 additions and 13 deletions
|
@ -157,11 +157,6 @@ qint64 AvatarMixerSlave::addChangedTraitsToBulkPacket(AvatarMixerClientData* lis
|
||||||
++simpleReceivedIt;
|
++simpleReceivedIt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bytesWritten > 0 && sendingAvatar->isCertifyFailed()) {
|
|
||||||
// Resend identity packet if certification failed:
|
|
||||||
sendingAvatar->setNeedsIdentityUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
// enumerate the received instanced trait versions
|
// enumerate the received instanced trait versions
|
||||||
auto instancedReceivedIt = lastReceivedVersions.instancedCBegin();
|
auto instancedReceivedIt = lastReceivedVersions.instancedCBegin();
|
||||||
while (instancedReceivedIt != lastReceivedVersions.instancedCEnd()) {
|
while (instancedReceivedIt != lastReceivedVersions.instancedCEnd()) {
|
||||||
|
|
|
@ -1866,6 +1866,9 @@ public:
|
||||||
// also clears internal reaction triggers
|
// also clears internal reaction triggers
|
||||||
void updateRigControllerParameters(Rig::ControllerParameters& params);
|
void updateRigControllerParameters(Rig::ControllerParameters& params);
|
||||||
|
|
||||||
|
// Don't substitute verify-fail:
|
||||||
|
virtual const QUrl& getSkeletonModelURL() const override { return _skeletonModelURL; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
|
|
|
@ -830,9 +830,14 @@ void Wallet::handleChallengeOwnershipPacket(QSharedPointer<ReceivedMessage> pack
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wallet::sendChallengeOwnershipResponses() {
|
void Wallet::sendChallengeOwnershipResponses() {
|
||||||
if (_pendingChallenges.size() == 0 || getSalt().length() == 0) {
|
if (_pendingChallenges.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (getSalt().length() == 0) {
|
||||||
|
qCDebug(commerce) << "Not responding to ownership challenge due to missing Wallet salt";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
EC_KEY* ec = readKeys(keyFilePath());
|
EC_KEY* ec = readKeys(keyFilePath());
|
||||||
|
|
|
@ -1511,7 +1511,7 @@ void Avatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
||||||
}
|
}
|
||||||
indicateLoadingStatus(LoadingStatus::LoadModel);
|
indicateLoadingStatus(LoadingStatus::LoadModel);
|
||||||
|
|
||||||
_skeletonModel->setURL(_skeletonModelURL);
|
_skeletonModel->setURL(getSkeletonModelURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Avatar::setModelURLFinished(bool success) {
|
void Avatar::setModelURLFinished(bool success) {
|
||||||
|
|
|
@ -1988,7 +1988,11 @@ void AvatarData::processAvatarIdentity(QDataStream& packetStream, bool& identity
|
||||||
if (flagValue != _verificationFailed) {
|
if (flagValue != _verificationFailed) {
|
||||||
_verificationFailed = flagValue;
|
_verificationFailed = flagValue;
|
||||||
identityChanged = true;
|
identityChanged = true;
|
||||||
}
|
setSkeletonModelURL(_skeletonModelURL);
|
||||||
|
if (_verificationFailed) {
|
||||||
|
qCDebug(avatars) << "Avatar" << getSessionDisplayName() << "marked as VERIFY-FAILED";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (identity.attachmentData != _attachmentData) {
|
if (identity.attachmentData != _attachmentData) {
|
||||||
setAttachmentData(identity.attachmentData);
|
setAttachmentData(identity.attachmentData);
|
||||||
|
@ -2016,6 +2020,18 @@ QUrl AvatarData::getWireSafeSkeletonModelURL() const {
|
||||||
return QUrl();
|
return QUrl();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const QString VERIFY_FAIL_MODEL { "/meshes/verifyFailed.fst" };
|
||||||
|
|
||||||
|
const QUrl& AvatarData::getSkeletonModelURL() const {
|
||||||
|
if (_verificationFailed) {
|
||||||
|
static QUrl VERIFY_FAIL_MODEL_URL = PathUtils::resourcesUrl(VERIFY_FAIL_MODEL);
|
||||||
|
return VERIFY_FAIL_MODEL_URL;
|
||||||
|
} else {
|
||||||
|
return _skeletonModelURL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray AvatarData::packSkeletonData() const {
|
QByteArray AvatarData::packSkeletonData() const {
|
||||||
// Send an avatar trait packet with the skeleton data before the mesh is loaded
|
// Send an avatar trait packet with the skeleton data before the mesh is loaded
|
||||||
int avatarDataSize = 0;
|
int avatarDataSize = 0;
|
||||||
|
|
|
@ -1205,7 +1205,7 @@ public:
|
||||||
QByteArray identityByteArray(bool setIsReplicated = false) const;
|
QByteArray identityByteArray(bool setIsReplicated = false) const;
|
||||||
|
|
||||||
QUrl getWireSafeSkeletonModelURL() const;
|
QUrl getWireSafeSkeletonModelURL() const;
|
||||||
const QUrl& getSkeletonModelURL() const { return _skeletonModelURL; }
|
virtual const QUrl& getSkeletonModelURL() const;
|
||||||
|
|
||||||
const QString& getDisplayName() const { return _displayName; }
|
const QString& getDisplayName() const { return _displayName; }
|
||||||
const QString& getSessionDisplayName() const { return _sessionDisplayName; }
|
const QString& getSessionDisplayName() const { return _sessionDisplayName; }
|
||||||
|
|
|
@ -330,10 +330,6 @@ void AvatarHashMap::processAvatarIdentityPacket(QSharedPointer<ReceivedMessage>
|
||||||
bool displayNameChanged = false;
|
bool displayNameChanged = false;
|
||||||
// In this case, the "sendingNode" is the Avatar Mixer.
|
// In this case, the "sendingNode" is the Avatar Mixer.
|
||||||
avatar->processAvatarIdentity(avatarIdentityStream, identityChanged, displayNameChanged);
|
avatar->processAvatarIdentity(avatarIdentityStream, identityChanged, displayNameChanged);
|
||||||
if (avatar->isCertifyFailed() && identityUUID != EMPTY) {
|
|
||||||
qCDebug(avatars) << "Avatar" << avatar->getSessionDisplayName() << "marked as VERIFY-FAILED";
|
|
||||||
avatar->setSkeletonModelURL(PathUtils::resourcesUrl(VERIFY_FAIL_MODEL));
|
|
||||||
}
|
|
||||||
_replicas.processAvatarIdentity(identityUUID, message->getMessage(), identityChanged, displayNameChanged);
|
_replicas.processAvatarIdentity(identityUUID, message->getMessage(), identityChanged, displayNameChanged);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue