From 19c3f1516f4bc4b572bf4eea8ed4d9dc4879e0be Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 9 Oct 2018 00:17:19 +0300 Subject: [PATCH 1/3] relax 'isWearable' conditions to treat entities like 'ghost.json' as wearables --- interface/src/avatar/MyAvatar.cpp | 2 -- scripts/system/avatarapp.js | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b347963cf1..f683e518e9 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1765,8 +1765,6 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { bool isWearableEntity(const EntityItemPointer& entity) { return entity->isVisible() - && (entity->getParentJointIndex() != INVALID_JOINT_INDEX - || (entity->getType() == EntityTypes::Model && (std::static_pointer_cast(entity))->getRelayParentJoints())) && (entity->getParentID() == DependencyManager::get()->getSessionUUID() || entity->getParentID() == AVATAR_SELF_ID); } diff --git a/scripts/system/avatarapp.js b/scripts/system/avatarapp.js index 10ccb66d96..858671badf 100644 --- a/scripts/system/avatarapp.js +++ b/scripts/system/avatarapp.js @@ -28,9 +28,8 @@ function executeLater(callback) { Script.setTimeout(callback, 300); } -var INVALID_JOINT_INDEX = -1 function isWearable(avatarEntity) { - return avatarEntity.properties.visible === true && (avatarEntity.properties.parentJointIndex !== INVALID_JOINT_INDEX || avatarEntity.properties.relayParentJoints === true) && + return avatarEntity.properties.visible === true && (avatarEntity.properties.parentID === MyAvatar.sessionUUID || avatarEntity.properties.parentID === MyAvatar.SELF_ID); } From 7d470cf1610a37228e30b4a5103d873458da9b6b Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 9 Oct 2018 01:59:41 +0300 Subject: [PATCH 2/3] FB18859 - Avatar App Bug when material entity is added as avatar entity --- .../qml/hifi/avatarapp/AdjustWearables.qml | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml index 5fff14e4a1..9fc3e51f2a 100644 --- a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml +++ b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml @@ -49,16 +49,32 @@ Rectangle { refresh(avatar); } + function extractTitleFromUrl(url) { + for (var j = (url.length - 1); j >= 0; --j) { + if (url[j] === '/') { + return url.substring(j + 1); + } + } + return url; + } + function refresh(avatar) { wearablesCombobox.model.clear(); wearablesCombobox.currentIndex = -1; for (var i = 0; i < avatar.wearables.count; ++i) { var wearable = avatar.wearables.get(i).properties; - for (var j = (wearable.modelURL.length - 1); j >= 0; --j) { - if (wearable.modelURL[j] === '/') { - wearable.text = wearable.modelURL.substring(j + 1); - break; + if (wearable.modelURL) { + wearable.text = extractTitleFromUrl(wearable.modelURL); + } else if (wearable.materialURL) { + var materialUrlOrJson = ''; + if (wearable.materialURL !== 'materialData') { + materialUrlOrJson = extractTitleFromUrl(wearable.materialURL); + } else if (wearable.materialData) { + materialUrlOrJson = JSON.stringify(JSON.parse(wearable.materialData)) + } + if(materialUrlOrJson) { + wearable.text = 'Material: ' + materialUrlOrJson; } } wearablesCombobox.model.append(wearable); From 6e66f289fe96db9a051200461154afacede1b5a5 Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Tue, 9 Oct 2018 23:08:14 +0300 Subject: [PATCH 3/3] take 'materialData?materialName' cases into account --- interface/resources/qml/hifi/avatarapp/AdjustWearables.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml index 9fc3e51f2a..a6c90197d7 100644 --- a/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml +++ b/interface/resources/qml/hifi/avatarapp/AdjustWearables.qml @@ -68,7 +68,7 @@ Rectangle { wearable.text = extractTitleFromUrl(wearable.modelURL); } else if (wearable.materialURL) { var materialUrlOrJson = ''; - if (wearable.materialURL !== 'materialData') { + if (!wearable.materialURL.startsWith('materialData')) { materialUrlOrJson = extractTitleFromUrl(wearable.materialURL); } else if (wearable.materialData) { materialUrlOrJson = JSON.stringify(JSON.parse(wearable.materialData))