mirror of
https://github.com/overte-org/overte.git
synced 2025-07-22 23:14:08 +02:00
Display Clara model preparation progress
This commit is contained in:
parent
b41f8c754d
commit
37da800a14
2 changed files with 83 additions and 6 deletions
|
@ -14,12 +14,16 @@
|
||||||
|
|
||||||
// Event bridge messages.
|
// Event bridge messages.
|
||||||
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
|
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
|
||||||
|
var CLARA_IO_STATUS = "CLARA.IO STATUS";
|
||||||
|
var CLARA_IO_CANCEL_DOWNLOAD = "CLARA.IO CANCEL DOWNLOAD";
|
||||||
|
var CLARA_IO_CANCELLED_DOWNLOAD = "CLARA.IO CANCELLED DOWNLOAD";
|
||||||
var GOTO_DIRECTORY = "GOTO_DIRECTORY";
|
var GOTO_DIRECTORY = "GOTO_DIRECTORY";
|
||||||
var QUERY_CAN_WRITE_ASSETS = "QUERY_CAN_WRITE_ASSETS";
|
var QUERY_CAN_WRITE_ASSETS = "QUERY_CAN_WRITE_ASSETS";
|
||||||
var CAN_WRITE_ASSETS = "CAN_WRITE_ASSETS";
|
var CAN_WRITE_ASSETS = "CAN_WRITE_ASSETS";
|
||||||
var WARN_USER_NO_PERMISSIONS = "WARN_USER_NO_PERMISSIONS";
|
var WARN_USER_NO_PERMISSIONS = "WARN_USER_NO_PERMISSIONS";
|
||||||
|
|
||||||
var canWriteAssets = false;
|
var canWriteAssets = false;
|
||||||
|
var xmlHttpRequest = null;
|
||||||
|
|
||||||
function injectCommonCode(isDirectoryPage) {
|
function injectCommonCode(isDirectoryPage) {
|
||||||
|
|
||||||
|
@ -154,7 +158,7 @@
|
||||||
var uuid = location.href.match(/\/view\/([a-z0-9\-]*)/)[1];
|
var uuid = location.href.match(/\/view\/([a-z0-9\-]*)/)[1];
|
||||||
var url = XMLHTTPREQUEST_URL.replace("{uuid}", uuid);
|
var url = XMLHTTPREQUEST_URL.replace("{uuid}", uuid);
|
||||||
|
|
||||||
var xmlHttpRequest = new XMLHttpRequest();
|
xmlHttpRequest = new XMLHttpRequest();
|
||||||
var responseTextIndex = 0;
|
var responseTextIndex = 0;
|
||||||
var statusMessage = "";
|
var statusMessage = "";
|
||||||
var zipFileURL = "";
|
var zipFileURL = "";
|
||||||
|
@ -170,6 +174,7 @@
|
||||||
if (data.hasOwnProperty("message") && data.message !== null) {
|
if (data.hasOwnProperty("message") && data.message !== null) {
|
||||||
statusMessage = data.message;
|
statusMessage = data.message;
|
||||||
console.log("Clara.io FBX: " + statusMessage);
|
console.log("Clara.io FBX: " + statusMessage);
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract zip file URL.
|
// Extract zip file URL.
|
||||||
|
@ -186,21 +191,28 @@
|
||||||
xmlHttpRequest.onload = function () {
|
xmlHttpRequest.onload = function () {
|
||||||
var HTTP_OK = 200;
|
var HTTP_OK = 200;
|
||||||
if (this.status !== HTTP_OK) {
|
if (this.status !== HTTP_OK) {
|
||||||
console.log("ERROR: Clara.io FBX: Zip file request terminated with " + this.status + " "
|
statusMessage = "Zip file request terminated with " + this.status + " " + this.statusText;
|
||||||
+ this.statusText);
|
console.log("ERROR: Clara.io FBX: " + statusMessage);
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zipFileURL == "") {
|
if (zipFileURL === "") {
|
||||||
console.log("ERROR: Clara.io FBX: Zip file URL not found");
|
statusMessage = "Download file URL not provided";
|
||||||
|
console.log("ERROR: Clara.io FBX: " + statusMessage);
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
EventBridge.emitWebEvent(CLARA_IO_DOWNLOAD + " " + zipFileURL);
|
EventBridge.emitWebEvent(CLARA_IO_DOWNLOAD + " " + zipFileURL);
|
||||||
console.log("Clara.io FBX: File download initiated for " + zipFileURL);
|
console.log("Clara.io FBX: File download initiated for " + zipFileURL);
|
||||||
|
|
||||||
|
xmlHttpRequest = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Clara.io FBX: Request zip file for " + uuid);
|
console.log("Clara.io FBX: Request zip file for " + uuid);
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " Initiating download");
|
||||||
|
|
||||||
xmlHttpRequest.open("POST", url, true);
|
xmlHttpRequest.open("POST", url, true);
|
||||||
xmlHttpRequest.setRequestHeader("Accept", "text/event-stream");
|
xmlHttpRequest.setRequestHeader("Accept", "text/event-stream");
|
||||||
xmlHttpRequest.send();
|
xmlHttpRequest.send();
|
||||||
|
@ -248,12 +260,25 @@
|
||||||
EventBridge.emitWebEvent(QUERY_CAN_WRITE_ASSETS);
|
EventBridge.emitWebEvent(QUERY_CAN_WRITE_ASSETS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cancelClaraDownload() {
|
||||||
|
if (xmlHttpRequest) {
|
||||||
|
xmlHttpRequest.abort();
|
||||||
|
xmlHttpRequest = null;
|
||||||
|
console.log("Clara.io FBX: File download cancelled");
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_CANCELLED_DOWNLOAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function onLoad() {
|
function onLoad() {
|
||||||
|
|
||||||
EventBridge.scriptEventReceived.connect(function (message) {
|
EventBridge.scriptEventReceived.connect(function (message) {
|
||||||
if (message.slice(0, CAN_WRITE_ASSETS.length) === CAN_WRITE_ASSETS) {
|
if (message.slice(0, CAN_WRITE_ASSETS.length) === CAN_WRITE_ASSETS) {
|
||||||
canWriteAssets = message.slice(-4) === "true";
|
canWriteAssets = message.slice(-4) === "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (message.slice(0, CLARA_IO_CANCEL_DOWNLOAD.length) === CLARA_IO_CANCEL_DOWNLOAD) {
|
||||||
|
cancelClaraDownload();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var DIRECTORY = 0;
|
var DIRECTORY = 0;
|
||||||
|
|
|
@ -15,17 +15,29 @@ Script.include("../libraries/WebTablet.js");
|
||||||
|
|
||||||
var toolIconUrl = Script.resolvePath("../assets/images/tools/");
|
var toolIconUrl = Script.resolvePath("../assets/images/tools/");
|
||||||
|
|
||||||
var MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace";
|
//var MARKETPLACE_URL = "https://metaverse.highfidelity.com/marketplace";
|
||||||
|
var MARKETPLACE_URL = "https://clara.io/library?gameCheck=true&public=true";
|
||||||
var MARKETPLACE_URL_INITIAL = MARKETPLACE_URL + "?"; // Append "?" to signal injected script that it's the initial page.
|
var MARKETPLACE_URL_INITIAL = MARKETPLACE_URL + "?"; // Append "?" to signal injected script that it's the initial page.
|
||||||
var MARKETPLACES_URL = Script.resolvePath("../html/marketplaces.html");
|
var MARKETPLACES_URL = Script.resolvePath("../html/marketplaces.html");
|
||||||
var MARKETPLACES_INJECT_SCRIPT_URL = Script.resolvePath("../html/js/marketplacesInject.js");
|
var MARKETPLACES_INJECT_SCRIPT_URL = Script.resolvePath("../html/js/marketplacesInject.js");
|
||||||
|
|
||||||
// Event bridge messages.
|
// Event bridge messages.
|
||||||
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
|
var CLARA_IO_DOWNLOAD = "CLARA.IO DOWNLOAD";
|
||||||
|
var CLARA_IO_STATUS = "CLARA.IO STATUS";
|
||||||
|
var CLARA_IO_CANCEL_DOWNLOAD = "CLARA.IO CANCEL DOWNLOAD";
|
||||||
|
var CLARA_IO_CANCELLED_DOWNLOAD = "CLARA.IO CANCELLED DOWNLOAD";
|
||||||
var GOTO_DIRECTORY = "GOTO_DIRECTORY";
|
var GOTO_DIRECTORY = "GOTO_DIRECTORY";
|
||||||
var QUERY_CAN_WRITE_ASSETS = "QUERY_CAN_WRITE_ASSETS";
|
var QUERY_CAN_WRITE_ASSETS = "QUERY_CAN_WRITE_ASSETS";
|
||||||
var CAN_WRITE_ASSETS = "CAN_WRITE_ASSETS";
|
var CAN_WRITE_ASSETS = "CAN_WRITE_ASSETS";
|
||||||
var WARN_USER_NO_PERMISSIONS = "WARN_USER_NO_PERMISSIONS";
|
var WARN_USER_NO_PERMISSIONS = "WARN_USER_NO_PERMISSIONS";
|
||||||
|
|
||||||
|
var CLARA_DOWNLOAD_TITLE = "Preparing Download";
|
||||||
|
var messageBox = null;
|
||||||
|
var isDownloadBeingCancelled = false;
|
||||||
|
|
||||||
|
var CANCEL_BUTTON = 4194304; // QMessageBox::Cancel
|
||||||
|
var NO_BUTTON = 0; // QMessageBox::NoButton
|
||||||
|
|
||||||
var NO_PERMISSIONS_ERROR_MESSAGE = "Cannot download model because you can't write to \nthe domain's Asset Server.";
|
var NO_PERMISSIONS_ERROR_MESSAGE = "Cannot download model because you can't write to \nthe domain's Asset Server.";
|
||||||
|
|
||||||
var marketplaceWindow = new OverlayWebWindow({
|
var marketplaceWindow = new OverlayWebWindow({
|
||||||
|
@ -36,18 +48,58 @@ var marketplaceWindow = new OverlayWebWindow({
|
||||||
visible: false
|
visible: false
|
||||||
});
|
});
|
||||||
marketplaceWindow.setScriptURL(MARKETPLACES_INJECT_SCRIPT_URL);
|
marketplaceWindow.setScriptURL(MARKETPLACES_INJECT_SCRIPT_URL);
|
||||||
|
|
||||||
marketplaceWindow.webEventReceived.connect(function (message) {
|
marketplaceWindow.webEventReceived.connect(function (message) {
|
||||||
if (message === GOTO_DIRECTORY) {
|
if (message === GOTO_DIRECTORY) {
|
||||||
marketplaceWindow.setURL(MARKETPLACES_URL);
|
marketplaceWindow.setURL(MARKETPLACES_URL);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (message === QUERY_CAN_WRITE_ASSETS) {
|
if (message === QUERY_CAN_WRITE_ASSETS) {
|
||||||
marketplaceWindow.emitScriptEvent(CAN_WRITE_ASSETS + " " + Entities.canWriteAssets());
|
marketplaceWindow.emitScriptEvent(CAN_WRITE_ASSETS + " " + Entities.canWriteAssets());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (message === WARN_USER_NO_PERMISSIONS) {
|
if (message === WARN_USER_NO_PERMISSIONS) {
|
||||||
Window.alert(NO_PERMISSIONS_ERROR_MESSAGE);
|
Window.alert(NO_PERMISSIONS_ERROR_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.slice(0, CLARA_IO_STATUS.length) === CLARA_IO_STATUS) {
|
||||||
|
if (isDownloadBeingCancelled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var text = message.slice(CLARA_IO_STATUS.length);
|
||||||
|
if (messageBox === null) {
|
||||||
|
messageBox = Window.openMessageBox(CLARA_DOWNLOAD_TITLE, text, CANCEL_BUTTON, NO_BUTTON);
|
||||||
|
} else {
|
||||||
|
Window.updateMessageBox(messageBox, CLARA_DOWNLOAD_TITLE, text, CANCEL_BUTTON, NO_BUTTON);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.slice(0, CLARA_IO_DOWNLOAD.length) === CLARA_IO_DOWNLOAD) {
|
||||||
|
if (messageBox) {
|
||||||
|
Window.closeMessageBox(messageBox);
|
||||||
|
messageBox = null;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message === CLARA_IO_CANCELLED_DOWNLOAD) {
|
||||||
|
isDownloadBeingCancelled = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function onMessageBoxClosed(id, button) {
|
||||||
|
if (id === messageBox && button === CANCEL_BUTTON) {
|
||||||
|
isDownloadBeingCancelled = true;
|
||||||
|
messageBox = null;
|
||||||
|
marketplaceWindow.emitScriptEvent(CLARA_IO_CANCEL_DOWNLOAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Window.messageBoxClosed.connect(onMessageBoxClosed);
|
||||||
|
|
||||||
var toolHeight = 50;
|
var toolHeight = 50;
|
||||||
var toolWidth = 50;
|
var toolWidth = 50;
|
||||||
var TOOLBAR_MARGIN_Y = 0;
|
var TOOLBAR_MARGIN_Y = 0;
|
||||||
|
|
Loading…
Reference in a new issue