diff options
Diffstat (limited to 'platform/javascript/js/engine/utils.js')
-rw-r--r-- | platform/javascript/js/engine/utils.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/platform/javascript/js/engine/utils.js b/platform/javascript/js/engine/utils.js new file mode 100644 index 0000000000..fbab9ba9f9 --- /dev/null +++ b/platform/javascript/js/engine/utils.js @@ -0,0 +1,57 @@ +var Utils = { // eslint-disable-line no-unused-vars + + createLocateRewrite: function(execName) { + function rw(path) { + if (path.endsWith('.worker.js')) { + return execName + '.worker.js'; + } else if (path.endsWith('.audio.worklet.js')) { + return execName + '.audio.worklet.js'; + } else if (path.endsWith('.js')) { + return execName + '.js'; + } else if (path.endsWith('.wasm')) { + return execName + '.wasm'; + } + return path; + } + return rw; + }, + + createInstantiatePromise: function(wasmLoader) { + let loader = wasmLoader; + function instantiateWasm(imports, onSuccess) { + loader.then(function(xhr) { + WebAssembly.instantiate(xhr.response, imports).then(function(result) { + onSuccess(result['instance'], result['module']); + }); + }); + loader = null; + return {}; + }; + + return instantiateWasm; + }, + + findCanvas: function() { + var nodes = document.getElementsByTagName('canvas'); + if (nodes.length && nodes[0] instanceof HTMLCanvasElement) { + return nodes[0]; + } + return null; + }, + + isWebGLAvailable: function(majorVersion = 1) { + + var testContext = false; + try { + var testCanvas = document.createElement('canvas'); + if (majorVersion === 1) { + testContext = testCanvas.getContext('webgl') || testCanvas.getContext('experimental-webgl'); + } else if (majorVersion === 2) { + testContext = testCanvas.getContext('webgl2') || testCanvas.getContext('experimental-webgl2'); + } + } catch (e) { + // Not available + } + return !!testContext; + } +}; |