From dd93055d89d83237f02126c7b5739cc8d9d936d5 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Fri, 10 Aug 2018 16:15:30 -0700 Subject: [PATCH] Convert and load attachments when rig is ready --- interface/src/avatar/MyAvatar.cpp | 14 +++++++++----- libraries/avatars/src/AvatarData.h | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 7067c1c791..837f67d9af 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -139,6 +139,12 @@ MyAvatar::MyAvatar(QThread* thread) : auto geometry = getSkeletonModel()->getFBXGeometry(); qApp->loadAvatarScripts(geometry.scripts); _shouldLoadScripts = false; + } + // Load and convert old attachments to avatar entities + if (_oldAttachmentData.size() > 0) { + setAttachmentData(_oldAttachmentData); + _oldAttachmentData.clear(); + _attachmentData.clear(); } }); connect(_skeletonModel.get(), &Model::rigReady, this, &Avatar::rigReady); @@ -1249,7 +1255,6 @@ void MyAvatar::loadData() { useFullAvatarURL(_fullAvatarURLFromPreferences, _fullAvatarModelName); - QVector attachmentData; int attachmentCount = settings.beginReadArray("attachmentData"); for (int i = 0; i < attachmentCount; i++) { settings.setArrayIndex(i); @@ -1266,10 +1271,10 @@ void MyAvatar::loadData() { attachment.rotation = glm::quat(eulers); attachment.scale = loadSetting(settings, "scale", 1.0f); attachment.isSoft = settings.value("isSoft").toBool(); - attachmentData.append(attachment); + // old attachments are stored and loaded/converted later when rig is ready + _oldAttachmentData.append(attachment); } settings.endArray(); - setAttachmentData(attachmentData); int avatarEntityCount = settings.beginReadArray("avatarEntityData"); for (int i = 0; i < avatarEntityCount; i++) { @@ -2107,8 +2112,7 @@ void MyAvatar::attachmentDataToEntityProperties(const AttachmentData& data, Enti QString url = data.modelURL.toString(); properties.setName(QFileInfo(url).baseName()); properties.setType(EntityTypes::Model); - properties.setParentID(getID()); - properties.setOwningAvatarID(getID()); + properties.setParentID(AVATAR_SELF_ID); properties.setLocalPosition(data.translation); properties.setLocalRotation(data.rotation); if (!data.isSoft) { diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 147d303871..e873f88aaa 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -1317,6 +1317,7 @@ protected: bool _firstSkeletonCheck { true }; QUrl _skeletonFBXURL; QVector _attachmentData; + QVector _oldAttachmentData; QString _displayName; QString _sessionDisplayName { }; bool _lookAtSnappingEnabled { true };