content/hifi-content/liv/dev/wearable_packaging/marketplace-packager.js
2022-02-14 02:04:11 +01:00

129 lines
No EOL
4.1 KiB
JavaScript

(function(){
var APP_NAME = "WEARPKGR";
var APP_URL = Script.resolvePath("app.html?" + Date.now());
var APP_ICON;
var prevID = 0;
var listName = "contextOverlayHighlightList";
var listType = "entity";
var entityIDToExport = "";
var tablet = Tablet.getTablet('com.highfidelity.interface.tablet.system');
function handleMousePress(entityID) {
print("Clicked: " + entityID);
if (prevID !== entityID) {
Selection.addToSelectedItemsList(listName, listType, entityID);
prevID = entityID;
}
tablet.emitScriptEvent(entityID);
}
function handleMouseLeave(entityID) {
if (prevID !== 0) {
Selection.removeFromSelectedItemsList("contextOverlayHighlightList", listType, prevID);
prevID = 0;
}
}
var baseUserdata = {
"Attachment": {
"action": "attach",
"joint": "Hips",
"attached" : false,
"options": {
"translation": {
"x": 0,
"y": 0,
"z": 0
},
"scale": 1
}
},
"grabbableKey": {
"cloneable": false,
"grabbable": true
}
};
var exportProperties = {
type: "Model",
clientOnly: 1,
parentID: "{00000000-0000-0000-0000-000000000001}",
owningAvatarID: "{00000000-0000-0000-0000-000000000000}",
visible: 1,
collidesWith: ""
};
var button = tablet.addButton({
text: APP_NAME
});
function maybeExited() {
print("Exited app page");
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);
}, 2000);
}
button.clicked.connect(clicked);
function onFileSaveChanged(filename){
Window.saveFileChanged.disconnect(onFileSaveChanged);
if (filename !== "") {
var success = Clipboard.exportEntities(filename, [entityIDToExport]);
if (!success) {
print("Export failed on entity " + entityIDToExport);
}
}
Entities.deleteEntity(entityIDToExport);
}
function onWebEventReceived(event){
if (typeof(event) === "string") {
event = JSON.parse(event);
}
if (event.type === "submit") {
var entityID = event.entityID;
var joint = event.joint;
var newExportProperties = exportProperties;
var newUserDataProperties = baseUserdata;
var properties = Entities.getEntityProperties(entityID, ['modelURL', 'dimensions', 'script']);
newUserDataProperties["Attachment"].joint = joint;
print(JSON.stringify(newUserDataProperties));
newExportProperties.modelURL = properties.modelURL;
newExportProperties.dimensions = properties.dimensions;
newExportProperties.script = properties.script;
newExportProperties.userdata = newUserDataProperties;
entityIDToExport = Entities.addEntity(newExportProperties, 1);
Window.saveFileChanged.connect(onFileSaveChanged);
Window.saveAsync("Select Where to Save", "", "*.json");
Script.setTimeout(function(){
Entities.deleteEntity(entityIDToExport);
}, 20000);
}
}
tablet.webEventReceived.connect(onWebEventReceived);
function cleanup(){
tablet.removeButton(button);
}
Script.scriptEnding.connect(cleanup);
}());