From bf35b0817903692c36d8a2835936398000691633 Mon Sep 17 00:00:00 2001 From: Elisa Lupin-Jimenez Date: Wed, 16 Aug 2017 17:27:29 -0700 Subject: [PATCH] Emoji tablet app --- .../marketplace/emoji-tablet/emojiTablet.js | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js diff --git a/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js new file mode 100644 index 0000000000..c03a0225da --- /dev/null +++ b/unpublishedScripts/marketplace/emoji-tablet/emojiTablet.js @@ -0,0 +1,80 @@ +/// +/// emojiTablet.js +/// A tablet app for sending emojis to other users +/// +/// Author: Elisa Lupin-Jimenez +/// Copyright High Fidelity 2017 +/// +/// Licensed under the Apache 2.0 License +/// See accompanying license file or http://apache.org/ +/// +/// All assets are under CC Attribution Non-Commerical +/// http://creativecommons.org/licenses/ +/// + +// to avoid the caching block on updating JSONs +var DEBUG = true; + +if (DEBUG) { + var lib = Script.require("https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/emojiLib.js?" + Date.now()); +} else { + var lib = Script.require("./emojiLib.js"); +} + + +(function() { + + var APP_NAME = "EMOJIS"; + var APP_URL = "https://hifi-content.s3.amazonaws.com/elisalj/emoji_scripts/emojiTabletUI.html?" + Date.now(); + var APP_ICON = null; + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + + var button = tablet.addButton({ + //icon: APP_ICON, + text: APP_NAME + }); + + // Activates tablet UI when selected from menu + function onClicked() { + tablet.gotoWebScreen(APP_URL); + }; + button.clicked.connect(onClicked); + + // Gives position right in front of user's avatar + function getPositionToCreateEntity() { + var direction = Quat.getFront(MyAvatar.orientation); + var distance = 0.3; + var position = Vec3.sum(MyAvatar.position, Vec3.multiply(direction, distance)); + position.y += 0.5; + return position; + }; + + var emojiJSON = null; + + // Handles emoji button clicks to retrieve the link to the emoji JSON from emojiLib + function onWebEventReceived(event) { + var emojiName = (JSON.parse(event)).data; + var url = lib.getEmoji(emojiName, lib.emojiLib); + if (url != null) { + emojiJSON = Script.require(url); + create3DEmoji(emojiJSON, null); + } else { + print("Unable to create emoji"); + } + }; + tablet.webEventReceived.connect(onWebEventReceived); + + function create3DEmoji(emojiJSON, userName) { + print("Creating " + emojiJSON.name + " emoji"); + emojiJSON.position = getPositionToCreateEntity(emojiJSON.personified); + var newEmoji = Entities.addEntity(emojiJSON); + }; + + // When tablet UI is closed and app is removed from menu + function cleanup() { + tablet.removeButton(button); + }; + Script.scriptEnding.connect(cleanup); + +}()); +