From f6208a394cfeb0a3f31eacf443b73cce2e28b30c Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 17 Jul 2017 21:27:55 +0100 Subject: [PATCH] delete avatar entity when switching domains --- libraries/avatars/src/AvatarData.h | 1 + libraries/entities/src/EntityScriptingInterface.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index f64d9dc2d1..4a22d4e308 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -615,6 +615,7 @@ public: Q_INVOKABLE AvatarEntityMap getAvatarEntityData() const; Q_INVOKABLE void setAvatarEntityData(const AvatarEntityMap& avatarEntityData); void setAvatarEntityDataChanged(bool value) { _avatarEntityDataChanged = value; } + void insertDetachedEntityID(const QUuid entityID) { _avatarEntityDetached.insert(entityID); } AvatarEntityIDs getAndClearRecentlyDetachedIDs(); // thread safe diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index f22631d363..193a0135c6 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "EntityItemID.h" #include "EntitiesLogging.h" @@ -497,8 +498,11 @@ void EntityScriptingInterface::deleteEntity(QUuid id) { auto nodeList = DependencyManager::get(); const QUuid myNodeID = nodeList->getSessionUUID(); + auto avatarHashMap = DependencyManager::get(); + AvatarSharedPointer myAvatar = avatarHashMap->getAvatarBySessionID(myNodeID); if (entity->getClientOnly() && entity->getOwningAvatarID() != myNodeID) { // don't delete other avatar's avatarEntities + myAvatar->insertDetachedEntityID(id); shouldDelete = false; return; }