mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 07:23:00 +02:00
cap number of avatar entities
This commit is contained in:
parent
d2315c15a1
commit
66a315cb9c
1 changed files with 17 additions and 2 deletions
|
@ -2200,14 +2200,24 @@ void AvatarData::setAttachmentsVariant(const QVariantList& variant) {
|
||||||
setAttachmentData(newAttachments);
|
setAttachmentData(newAttachments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int MAX_NUM_AVATAR_ENTITIES = 42;
|
||||||
|
|
||||||
void AvatarData::updateAvatarEntity(const QUuid& entityID, const QByteArray& entityData) {
|
void AvatarData::updateAvatarEntity(const QUuid& entityID, const QByteArray& entityData) {
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
QMetaObject::invokeMethod(this, "updateAvatarEntity", Q_ARG(const QUuid&, entityID), Q_ARG(QByteArray, entityData));
|
QMetaObject::invokeMethod(this, "updateAvatarEntity", Q_ARG(const QUuid&, entityID), Q_ARG(QByteArray, entityData));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_avatarEntitiesLock.withWriteLock([&] {
|
_avatarEntitiesLock.withWriteLock([&] {
|
||||||
_avatarEntityData.insert(entityID, entityData);
|
AvatarEntityMap::iterator itr = _avatarEntityData.find(entityID);
|
||||||
_avatarEntityDataLocallyEdited = true;
|
if (itr == _avatarEntityData.end()) {
|
||||||
|
if (_avatarEntityData.size() < MAX_NUM_AVATAR_ENTITIES) {
|
||||||
|
_avatarEntityData.insert(entityID, entityData);
|
||||||
|
_avatarEntityDataLocallyEdited = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
itr.value() = entityData;
|
||||||
|
_avatarEntityDataLocallyEdited = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2238,6 +2248,11 @@ AvatarEntityMap AvatarData::getAvatarEntityData() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AvatarData::setAvatarEntityData(const AvatarEntityMap& avatarEntityData) {
|
void AvatarData::setAvatarEntityData(const AvatarEntityMap& avatarEntityData) {
|
||||||
|
if (avatarEntityData.size() > MAX_NUM_AVATAR_ENTITIES) {
|
||||||
|
// the data is suspect
|
||||||
|
qCDebug(avatars) << "discard suspect AvatarEntityData with size =" << avatarEntityData.size();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
QMetaObject::invokeMethod(this, "setAvatarEntityData", Q_ARG(const AvatarEntityMap&, avatarEntityData));
|
QMetaObject::invokeMethod(this, "setAvatarEntityData", Q_ARG(const AvatarEntityMap&, avatarEntityData));
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue