From 9d3e9f6a786cfa1e79a36552cadf33f85642c21b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 1 Dec 2019 16:35:05 +1300 Subject: [PATCH] Add new Avatar.getAvatarEntityData() method for API --- assignment-client/src/avatars/ScriptableAvatar.cpp | 13 ++++++++++++- assignment-client/src/avatars/ScriptableAvatar.h | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/avatars/ScriptableAvatar.cpp b/assignment-client/src/avatars/ScriptableAvatar.cpp index 25860863cf..75aa321c28 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.cpp +++ b/assignment-client/src/avatars/ScriptableAvatar.cpp @@ -279,7 +279,18 @@ void ScriptableAvatar::setJointMappingsFromNetworkReply() { networkReply->deleteLater(); } +AvatarEntityMap ScriptableAvatar::getAvatarEntityData() const { + auto data = getAvatarEntityDataInternal(true); + return data; +} + AvatarEntityMap ScriptableAvatar::getAvatarEntityDataNonDefault() const { + auto data = getAvatarEntityDataInternal(false); + return data; + +} + +AvatarEntityMap ScriptableAvatar::getAvatarEntityDataInternal(bool allProperties) const { // DANGER: Now that we store the AvatarEntityData in packed format this call is potentially Very Expensive! // Avoid calling this method if possible. AvatarEntityMap data; @@ -290,7 +301,7 @@ AvatarEntityMap ScriptableAvatar::getAvatarEntityDataNonDefault() const { EntityItemPointer entity = itr.second; EntityItemProperties properties = entity->getProperties(); QByteArray blob; - EntityItemProperties::propertiesToBlob(_scriptEngine, sessionID, properties, blob); + EntityItemProperties::propertiesToBlob(_scriptEngine, sessionID, properties, blob, allProperties); data[id] = blob; } }); diff --git a/assignment-client/src/avatars/ScriptableAvatar.h b/assignment-client/src/avatars/ScriptableAvatar.h index 3eae702257..500c3f44fb 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.h +++ b/assignment-client/src/avatars/ScriptableAvatar.h @@ -178,9 +178,12 @@ public: * var avatarEntityData = Avatar.getAvatarEntityData(); * print("Avatar entities: " + JSON.stringify(avatarEntityData)); */ + Q_INVOKABLE AvatarEntityMap getAvatarEntityData() const override; AvatarEntityMap getAvatarEntityDataNonDefault() const override; + AvatarEntityMap getAvatarEntityDataInternal(bool allProperties) const; + /**jsdoc * Sets all avatar entities from an object. *

Warning: Potentially an expensive call. Do not use if possible.