lock wearables when adjust-wearables page is opened

This commit is contained in:
Seth Alves 2019-03-21 16:12:38 -07:00
parent 4fe94a4b32
commit fa36f12145
2 changed files with 10 additions and 24 deletions

View file

@ -384,8 +384,7 @@ bool Avatar::applyGrabChanges() {
if (success) { if (success) {
std::shared_ptr<Avatar> myAvatar = std::dynamic_pointer_cast<Avatar>(myAvatarSN); std::shared_ptr<Avatar> myAvatar = std::dynamic_pointer_cast<Avatar>(myAvatarSN);
if (myAvatar) { if (myAvatar) {
EntityItemProperties properties = entity->getProperties(); myAvatar->sendPacket(entity->getID());
myAvatar->sendPacket(entity->getID(), properties);
} }
} }
} }

View file

@ -16,7 +16,6 @@
(function() { // BEGIN LOCAL_SCOPE (function() { // BEGIN LOCAL_SCOPE
// var request = Script.require('request').request;
var AVATARAPP_QML_SOURCE = "hifi/AvatarApp.qml"; var AVATARAPP_QML_SOURCE = "hifi/AvatarApp.qml";
Script.include("/~/system/libraries/controllers.js"); Script.include("/~/system/libraries/controllers.js");
@ -24,7 +23,6 @@ Script.include("/~/system/libraries/controllers.js");
var ENTRY_AVATAR_URL = "avatarUrl"; var ENTRY_AVATAR_URL = "avatarUrl";
var ENTRY_AVATAR_ENTITIES = "avatarEntites"; var ENTRY_AVATAR_ENTITIES = "avatarEntites";
var ENTRY_AVATAR_SCALE = "avatarScale"; var ENTRY_AVATAR_SCALE = "avatarScale";
// var ENTRY_VERSION = "version";
function executeLater(callback) { function executeLater(callback) {
Script.setTimeout(callback, 300); Script.setTimeout(callback, 300);
@ -79,7 +77,7 @@ function updateAvatarWearables(avatar, callback, wearablesOverride) {
avatar[ENTRY_AVATAR_ENTITIES] = wearables; avatar[ENTRY_AVATAR_ENTITIES] = wearables;
sendToQml({'method' : 'wearablesUpdated', 'wearables' : wearables}); sendToQml({'method' : 'wearablesUpdated', 'wearables' : wearables});
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
if(callback) if(callback)
callback(); callback();
@ -174,7 +172,6 @@ function onAnimGraphUrlChanged(url) {
} }
} }
var selectedAvatarEntityGrabbable = false;
var selectedAvatarEntityID = null; var selectedAvatarEntityID = null;
var grabbedAvatarEntityChangeNotifier = null; var grabbedAvatarEntityChangeNotifier = null;
@ -240,7 +237,7 @@ function fromQml(message) { // messages are {method, params}, like json-rpc. See
AvatarBookmarks.loadBookmark(message.name); AvatarBookmarks.loadBookmark(message.name);
Entities.addingWearable.connect(onAddingWearable); Entities.addingWearable.connect(onAddingWearable);
Entities.deletingWearable.connect(onDeletingWearable); Entities.deletingWearable.connect(onDeletingWearable);
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
break; break;
case 'deleteAvatar': case 'deleteAvatar':
AvatarBookmarks.removeBookmark(message.name); AvatarBookmarks.removeBookmark(message.name);
@ -265,6 +262,7 @@ function fromQml(message) { // messages are {method, params}, like json-rpc. See
case 'adjustWearablesOpened': case 'adjustWearablesOpened':
currentAvatarWearablesBackup = getMyAvatarWearables(); currentAvatarWearablesBackup = getMyAvatarWearables();
adjustWearables.setOpened(true); adjustWearables.setOpened(true);
lockWearables();
Entities.mousePressOnEntity.connect(onSelectedEntity); Entities.mousePressOnEntity.connect(onSelectedEntity);
Messages.subscribe('Hifi-Object-Manipulation'); Messages.subscribe('Hifi-Object-Manipulation');
@ -409,10 +407,10 @@ function isGrabbable(entityID) {
function setGrabbable(entityID, grabbable) { function setGrabbable(entityID, grabbable) {
var properties = Entities.getEntityProperties(entityID, ['avatarEntity', 'grab.grabbable']); var properties = Entities.getEntityProperties(entityID, ['avatarEntity', 'grab.grabbable']);
if (properties.avatarEntity && properties.grab.grabable != grabbable) { if (properties.avatarEntity && properties.grab.grabbable != grabbable) {
var editProps = { grab: { grabbable: grabbable }}; var editProps = { grab: { grabbable: grabbable }};
Entities.editEntity(entityID, editProps); Entities.editEntity(entityID, editProps);
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
} }
} }
@ -422,18 +420,7 @@ function ensureWearableSelected(entityID) {
Script.clearInterval(grabbedAvatarEntityChangeNotifier); Script.clearInterval(grabbedAvatarEntityChangeNotifier);
grabbedAvatarEntityChangeNotifier = null; grabbedAvatarEntityChangeNotifier = null;
} }
if(selectedAvatarEntityID !== null) {
setGrabbable(selectedAvatarEntityID, selectedAvatarEntityGrabbable);
}
selectedAvatarEntityID = entityID; selectedAvatarEntityID = entityID;
selectedAvatarEntityGrabbable = isGrabbable(entityID);
if(selectedAvatarEntityID !== null) {
setGrabbable(selectedAvatarEntityID, true);
}
return true; return true;
} }
@ -457,14 +444,14 @@ function onAddingWearable(entityID) {
updateAvatarWearables(currentAvatar, function() { updateAvatarWearables(currentAvatar, function() {
sendToQml({'method' : 'updateAvatarInBookmarks'}); sendToQml({'method' : 'updateAvatarInBookmarks'});
}); });
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
} }
function onDeletingWearable(entityID) { function onDeletingWearable(entityID) {
updateAvatarWearables(currentAvatar, function() { updateAvatarWearables(currentAvatar, function() {
sendToQml({'method' : 'updateAvatarInBookmarks'}); sendToQml({'method' : 'updateAvatarInBookmarks'});
}); });
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
} }
function handleWearableMessages(channel, message, sender) { function handleWearableMessages(channel, message, sender) {
@ -647,8 +634,8 @@ function onTabletScreenChanged(type, url) {
onAvatarAppScreen = onAvatarAppScreenNow; onAvatarAppScreen = onAvatarAppScreenNow;
if(onAvatarAppScreenNow) { if(onAvatarAppScreenNow) {
sendToQml({ method : 'initialize', data : { jointNames : MyAvatar.getJointNames() }}); sendToQml({ 'method' : 'initialize', 'data' : { jointNames : MyAvatar.getJointNames() }});
sendToQml({ method : 'wearablesLockedChanged', wearablesLocked : getWearablesLocked()}); sendToQml({ 'method' : 'wearablesLockedChanged', 'wearablesLocked' : getWearablesLocked()});
} }
} }