126 lines
3.9 KiB
JavaScript
126 lines
3.9 KiB
JavaScript
//
|
|
// create-wearable.js
|
|
//
|
|
// Makes an object in a domain a store demo copy
|
|
//
|
|
// Created by Liv Erickson on 11/6/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 is a tool that can be used to turn a wearable into a display copy
|
|
// Requires lock access
|
|
//
|
|
/* globals Selection */
|
|
(function() {
|
|
var APP_NAME = "WEARABLE";
|
|
var APP_URL = Script.resolvePath("wearableCreator.html");
|
|
var APP_ICON = Script.resolvePath("./dress2.svg");
|
|
|
|
var SERVER_URL = "https://raw.githubusercontent.com/highfidelity/hifi-content/avatar-shopping-mvp/DomainContent/AvatarStore/wearableServer.js";
|
|
var CLIENT_URL = "https://raw.githubusercontent.com/highfidelity/hifi-content/avatar-shopping-mvp/DomainContent/AvatarStore/desktopAttacher.js";
|
|
var TIMEOUT = 2000;
|
|
|
|
var previousID = 0;
|
|
var listName = "contextOverlayHighlightList";
|
|
var listType = "entity";
|
|
|
|
var tablet = Tablet.getTablet('com.highfidelity.interface.tablet.system');
|
|
|
|
function handleMousePress(entityID) {
|
|
if (previousID !== entityID) {
|
|
Selection.addToSelectedItemsList(listName, listType, entityID);
|
|
previousID = entityID;
|
|
}
|
|
tablet.emitScriptEvent(entityID);
|
|
}
|
|
|
|
function handleMouseLeave(entityID) {
|
|
if (previousID !== 0) {
|
|
Selection.removeFromSelectedItemsList("contextOverlayHighlightList", listType, previousID);
|
|
previousID = 0;
|
|
}
|
|
}
|
|
|
|
var baseUserdata = {
|
|
Attachment: {
|
|
action: "attach",
|
|
joint: "",
|
|
attached : false,
|
|
options: {
|
|
translation: {
|
|
x: 0,
|
|
y: 0,
|
|
z: 0
|
|
},
|
|
scale: 1
|
|
}
|
|
},
|
|
grabbableKey: {
|
|
cloneable: false,
|
|
grabbable: true
|
|
}
|
|
};
|
|
|
|
var button = tablet.addButton({
|
|
text: APP_NAME,
|
|
icon: APP_ICON
|
|
});
|
|
|
|
|
|
function maybeExited() {
|
|
Entities.clickReleaseOnEntity.disconnect(handleMousePress);
|
|
Entities.hoverLeaveEntity.disconnect(handleMouseLeave);
|
|
tablet.screenChanged.disconnect(maybeExited);
|
|
}
|
|
|
|
function clicked() {
|
|
tablet.gotoWebScreen(APP_URL);
|
|
Entities.clickReleaseOnEntity.connect(handleMousePress);
|
|
Entities.hoverLeaveEntity.connect(handleMouseLeave);
|
|
Script.setTimeout(function() {
|
|
tablet.screenChanged.connect(maybeExited);
|
|
}, TIMEOUT);
|
|
}
|
|
button.clicked.connect(clicked);
|
|
|
|
function onWebEventReceived(event) {
|
|
if (typeof(event) === "string") {
|
|
event = JSON.parse(event);
|
|
}
|
|
if (event.type === "submit" && event.app === "WEAR") {
|
|
var entityID = event.entityID;
|
|
var joint = event.joint;
|
|
var marketplaceID = event.marketplaceID;
|
|
print(event.name);
|
|
var name = event.name;
|
|
|
|
var newUserDataProperties = baseUserdata;
|
|
newUserDataProperties.marketplaceID = marketplaceID;
|
|
newUserDataProperties.Attachment.joint = joint;
|
|
|
|
Entities.editEntity(entityID, {locked: false});
|
|
Entities.editEntity(entityID, {name: name});
|
|
|
|
Entities.editEntity(entityID, {
|
|
userData: JSON.stringify(newUserDataProperties),
|
|
script: CLIENT_URL,
|
|
serverScripts: SERVER_URL
|
|
});
|
|
|
|
Script.setTimeout(function() {
|
|
Entities.editEntity(entityID, {locked: true});
|
|
}, TIMEOUT);
|
|
}
|
|
}
|
|
|
|
tablet.webEventReceived.connect(onWebEventReceived);
|
|
|
|
function cleanup() {
|
|
tablet.removeButton(button);
|
|
}
|
|
|
|
Script.scriptEnding.connect(cleanup);
|
|
}());
|
|
|