From 4fe94a4b32404ab0e096d2274fa53046fcbcb7a4 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 21 Mar 2019 14:16:18 -0700 Subject: [PATCH] when new wearables are added or removed, rerun getWearablesLocked() and update UI --- scripts/system/avatarapp.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/system/avatarapp.js b/scripts/system/avatarapp.js index 429053bb8b..eb44bc7fbd 100644 --- a/scripts/system/avatarapp.js +++ b/scripts/system/avatarapp.js @@ -79,6 +79,7 @@ function updateAvatarWearables(avatar, callback, wearablesOverride) { avatar[ENTRY_AVATAR_ENTITIES] = wearables; sendToQml({'method' : 'wearablesUpdated', 'wearables' : wearables}); + sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); if(callback) callback(); @@ -239,6 +240,7 @@ function fromQml(message) { // messages are {method, params}, like json-rpc. See AvatarBookmarks.loadBookmark(message.name); Entities.addingWearable.connect(onAddingWearable); Entities.deletingWearable.connect(onDeletingWearable); + sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); break; case 'deleteAvatar': AvatarBookmarks.removeBookmark(message.name); @@ -406,9 +408,11 @@ function isGrabbable(entityID) { } function setGrabbable(entityID, grabbable) { - var properties = Entities.getEntityProperties(entityID, ['avatarEntity']); - if (properties.avatarEntity) { - Entities.editEntity(entityID, { grab: { grabbable: grabbable }}); + var properties = Entities.getEntityProperties(entityID, ['avatarEntity', 'grab.grabbable']); + if (properties.avatarEntity && properties.grab.grabable != grabbable) { + var editProps = { grab: { grabbable: grabbable }}; + Entities.editEntity(entityID, editProps); + sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); } } @@ -453,12 +457,14 @@ function onAddingWearable(entityID) { updateAvatarWearables(currentAvatar, function() { sendToQml({'method' : 'updateAvatarInBookmarks'}); }); + sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); } function onDeletingWearable(entityID) { updateAvatarWearables(currentAvatar, function() { sendToQml({'method' : 'updateAvatarInBookmarks'}); }); + sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); } function handleWearableMessages(channel, message, sender) {