mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-04 03:13:09 +02:00
mark trait instances needing to be sent on mixer reconnect
This commit is contained in:
parent
78d7c321b8
commit
48680329ec
3 changed files with 19 additions and 1 deletions
|
@ -1895,6 +1895,16 @@ qint64 AvatarData::packTraitInstance(AvatarTraits::TraitType traitType, AvatarTr
|
||||||
return bytesWritten;
|
return bytesWritten;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AvatarData::prepareResetTraitInstances() {
|
||||||
|
if (_clientTraitsHandler) {
|
||||||
|
_avatarEntitiesLock.withReadLock([this]{
|
||||||
|
foreach (auto entityID, _avatarEntityData.keys()) {
|
||||||
|
_clientTraitsHandler->markInstancedTraitUpdated(AvatarTraits::AvatarEntity, entityID);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AvatarData::processTrait(AvatarTraits::TraitType traitType, QByteArray traitBinaryData) {
|
void AvatarData::processTrait(AvatarTraits::TraitType traitType, QByteArray traitBinaryData) {
|
||||||
if (traitType == AvatarTraits::SkeletonModelURL) {
|
if (traitType == AvatarTraits::SkeletonModelURL) {
|
||||||
// get the URL from the binary data
|
// get the URL from the binary data
|
||||||
|
@ -2792,7 +2802,7 @@ void AvatarData::setAvatarEntityData(const AvatarEntityMap& avatarEntityData) {
|
||||||
if (_clientTraitsHandler) {
|
if (_clientTraitsHandler) {
|
||||||
// if we have a client traits handler, flag any updated or created entities
|
// if we have a client traits handler, flag any updated or created entities
|
||||||
// so that we send changes for them next frame
|
// so that we send changes for them next frame
|
||||||
foreach (auto entityID, _avatarEntityData) {
|
foreach (auto entityID, _avatarEntityData.keys()) {
|
||||||
_clientTraitsHandler->markInstancedTraitUpdated(AvatarTraits::AvatarEntity, entityID);
|
_clientTraitsHandler->markInstancedTraitUpdated(AvatarTraits::AvatarEntity, entityID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -964,6 +964,8 @@ public:
|
||||||
qint64 packTraitInstance(AvatarTraits::TraitType traitType, AvatarTraits::TraitInstanceID instanceID,
|
qint64 packTraitInstance(AvatarTraits::TraitType traitType, AvatarTraits::TraitInstanceID instanceID,
|
||||||
ExtendedIODevice& destination, AvatarTraits::TraitVersion traitVersion = AvatarTraits::NULL_TRAIT_VERSION);
|
ExtendedIODevice& destination, AvatarTraits::TraitVersion traitVersion = AvatarTraits::NULL_TRAIT_VERSION);
|
||||||
|
|
||||||
|
void prepareResetTraitInstances();
|
||||||
|
|
||||||
void processTrait(AvatarTraits::TraitType traitType, QByteArray traitBinaryData);
|
void processTrait(AvatarTraits::TraitType traitType, QByteArray traitBinaryData);
|
||||||
void processTraitInstance(AvatarTraits::TraitType traitType,
|
void processTraitInstance(AvatarTraits::TraitType traitType,
|
||||||
AvatarTraits::TraitInstanceID instanceID, QByteArray traitBinaryData);
|
AvatarTraits::TraitInstanceID instanceID, QByteArray traitBinaryData);
|
||||||
|
|
|
@ -37,6 +37,12 @@ void ClientTraitsHandler::resetForNewMixer() {
|
||||||
|
|
||||||
// mark that all traits should be sent next time
|
// mark that all traits should be sent next time
|
||||||
_shouldPerformInitialSend = true;
|
_shouldPerformInitialSend = true;
|
||||||
|
|
||||||
|
// reset the trait statuses
|
||||||
|
_traitStatuses.reset();
|
||||||
|
|
||||||
|
// pre-fill the instanced statuses that we will need to send next frame
|
||||||
|
_owningAvatar->prepareResetTraitInstances();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientTraitsHandler::sendChangedTraitsToMixer() {
|
void ClientTraitsHandler::sendChangedTraitsToMixer() {
|
||||||
|
|
Loading…
Reference in a new issue