// // detachAvatarEntity.js // // Created by Rebecca Stankus on 09/08/17. // Copyright 2017 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // // This script detaches an avatar entity from the parent joint when it is moved beyond a certain distance from its parent joint (function () { var _entityID, entityPosition, parentJointIndex, parentPosition, checkDetach; this.preload = function(entityID) { _entityID = entityID; var properties = Entities.getEntityProperties(_entityID, ["position", "parentJointIndex"]); entityPosition = properties.position; parentJointIndex = properties.parentJointIndex; parentPosition = MyAvatar.getJointPosition(parentJointIndex); }; // continuously check distance between parent joint and attachment entity. remove parent relationship when moved beyond a certain distance this.continueNearGrab = function(){ checkDetach = Script.setInterval(function() { entityPosition = Entities.getEntityProperties(_entityID, 'position').position; var distanceToParent = Vec3.distance(entityPosition, parentPosition); var detachDistance = 0.6; if (distanceToParent > detachDistance) { Entities.editEntity(_entityID, {parentID: "{00000000-0000-0000-0000-000000000000}"}); Script.clearInterval(checkDetach); } }, 100); }; this.releaseGrab = function(){ if (checkDetach){ try { Script.clearInterval(checkDetach); } catch (e) { print("Error stopping interval."); } } }; this.unload = function(){ if (checkDetach){ try { Script.clearInterval(checkDetach); } catch (e) { print("Error stopping interval."); } } }; });