(function() { var MIN_DISTANCE = 1; var wasNearHead = false; var phoneyBoxPosition = null; this.startNearGrab = function(entityID, args) { print("starting PhoneyNearGrab!!"); // var hand = args[0]; wasNearHead = false; phoneyBoxPosition = null; Entities.findEntities(MyAvatar.position, 32000).forEach(function(entity) { if (Entities.getEntityProperties(entity, 'name').name === 'PhoneyBox') { phoneyBoxPosition = Entities.getEntityProperties(entity, 'position').position; print("PhoneyBox found at " + JSON.stringify(phoneyBoxPosition)); } }); }; this.continueNearGrab = function(entityID, args) { print("doing continueNearGrab for PhoneyBox."); // var hand = args[0]; if (phoneyBoxPosition === null) { return; } var avatarHeadPosition = MyAvatar.getJointPosition(MyAvatar.getJointIndex('Head')); var phoneyPosition = Entities.getEntityProperties(entityID, 'position').position; var isNearHead = Vec3.distance(avatarHeadPosition, phoneyPosition) < MIN_DISTANCE; print("isNearHead = " + (isNearHead ? "true" : "false")); if (isNearHead === wasNearHead) { print("isNearHead === wasNearHead"); return; } print("isNearHead !== wasNearHead"); wasNearHead = isNearHead; if (isNearHead) { MyAvatar.customListenPosition = phoneyBoxPosition; MyAvatar.audioListenerMode = MyAvatar.audioListenerModeCustom; print('Calling in from ' + JSON.stringify(phoneyBoxPosition)); } else { MyAvatar.audioListenerMode = MyAvatar.audioListenerModeHead; print('Stopped listening.'); } }; this.releaseGrab = function(entityID, args) { // var hand = args[0]; print("releaseGrab happend here!!"); //phoneyBoxPosition = null; if (wasNearHead) { MyAvatar.audioListenerMode = MyAvatar.audioListenerModeHead; wasNearHead = null; } }; this.unload = function(entityID) { if (wasNearHead) { MyAvatar.audioListenerMode = MyAvatar.audioListenerModeHead; } }; });