diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dcece932e5..5d4f031ebb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5503,6 +5503,8 @@ void Application::clearDomainOctreeDetails() { DependencyManager::get()->clearUnusedResources(); DependencyManager::get()->clearUnusedResources(); DependencyManager::get()->clearUnusedResources(); + + getMyAvatar()->setAvatarEntityDataChanged(true); } void Application::clearDomainAvatars() { diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 0dfcf93a65..6b2795fc90 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -951,11 +951,7 @@ void MyAvatar::saveData() { } settings.endArray(); - if (_avatarEntityData.size() == 0) { - // HACK: manually remove empty 'avatarEntityData' else deleted avatarEntityData may show up in settings file - settings.remove("avatarEntityData"); - } - + settings.remove("avatarEntityData"); settings.beginWriteArray("avatarEntityData"); int avatarEntityIndex = 0; auto hmdInterface = DependencyManager::get(); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 6bf9cc1666..d00af4dd1e 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -198,6 +198,11 @@ void Avatar::setTargetScale(float targetScale) { } } +void Avatar::setAvatarEntityDataChanged(bool value) { + AvatarData::setAvatarEntityDataChanged(value); + _avatarEntityDataHashes.clear(); +} + void Avatar::updateAvatarEntities() { PerformanceTimer perfTimer("attachments"); // - if queueEditEntityMessage sees clientOnly flag it does _myAvatar->updateAvatarEntity() diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index a5ec307c50..8069c6b604 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -265,6 +265,8 @@ public: virtual float getModelScale() const { return _modelScale; } virtual void setModelScale(float scale) { _modelScale = scale; } + virtual void setAvatarEntityDataChanged(bool value) override; + public slots: // FIXME - these should be migrated to use Pose data instead diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 4dabbb3ff5..bf3bb20ef9 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -603,7 +603,7 @@ public: Q_INVOKABLE AvatarEntityMap getAvatarEntityData() const; Q_INVOKABLE void setAvatarEntityData(const AvatarEntityMap& avatarEntityData); - void setAvatarEntityDataChanged(bool value) { _avatarEntityDataChanged = value; } + virtual void setAvatarEntityDataChanged(bool value) { _avatarEntityDataChanged = value; } void insertDetachedEntityID(const QUuid entityID); AvatarEntityIDs getAndClearRecentlyDetachedIDs();