/* globals Vec3, Quat, Uuid, Camera, MyAvatar, Entities, Overlays, Script, Tablet, AvatarList, AvatarManager, Picks, PickType require ScriptDiscoveryService */ // // attachAvatarApp.js // // Created by KasenVR on 2 August 2020. // Copyright 2020 Vircadia contributors. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // var APP_NAME = "Avatar Attach App"; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var accountChildIcon = 'data:image/svg+xml;utf8,';; var button = tablet.addButton({ text: "ATTACH", icon: accountChildIcon, activeIcon: accountChildIcon.replace('white', 'black') }); Script.scriptEnding.connect(function(){ tablet.removeButton(button); button = null; }); button.clicked.connect(togglePlatform); var platformID; function togglePlatform() { function getNearbyAvatars(origin, sessionUUIDs) { var cleanAvatars = sessionUUIDs.filter(function (id) { if (id == null) { return false; } var idString = id.toString(); if (idString.indexOf(MyAvatar.sessionUUID) === -1) { return true; } else { return false; } }); return cleanAvatars.map(function(id) { var avi = AvatarList.getAvatar(id); avi.$distance = Vec3.distance(origin, avi.position); return avi; }).sort(function(a, b) { return a.$distance < b.$distance ? -1 : a.$distance > b.$distance ? 1 : 0; }); }; var nearest = getNearbyAvatars(MyAvatar.position, AvatarList.getAvatarIdentifiers())[0]; var platformScale = { x: 0.604 * MyAvatar.scale, y: 0.036 * MyAvatar.scale, z: 0.604 * MyAvatar.scale }; if(platformID) { Entities.deleteEntity(platformID); platformID = null; MyAvatar.setParentID("null"); } else if (nearest != null) { platformID = Entities.addEntity({ type: "Model", modelURL: Script.resolvePath("./assets/Halo.fbx"), position: MyAvatar.position, rotation: Quat.IDENTITY, dimensions: platformScale, collisionMask: 8, collisionless: false, shapeType: "box", parentID: nearest.sessionUUID, parentJointIndex: 0, }, "avatar"); // Make it a client entity! We want it to show up/load in other worlds without rez rights. MyAvatar.setParentID(platformID); } }