Add new Avatar.getAvatarEntityData() method for API

This commit is contained in:
David Rowe 2019-12-01 16:35:05 +13:00
parent c7f82a8264
commit 9d3e9f6a78
2 changed files with 15 additions and 1 deletions

View file

@ -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;
}
});

View file

@ -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.
* <p><strong>Warning:</strong> Potentially an expensive call. Do not use if possible.</p>