jsketcher/web/app/cad/craft/e0/e0Plugin.js
2019-02-24 17:51:44 -08:00

49 lines
1.2 KiB
JavaScript

/**
* This is an internal alternative to native engine. It overrides basic 3d part design operations
*/
import * as craftMethods from './craftMethods';
import operationHandler from './operationHandler';
export function activate(ctx) {
loadWasm(ctx);
ctx.services.operation.handlers.push(operationHandler);
ctx.services.craftEngine = {
...craftMethods
}
}
function instantiateEngine(importObject, callback) {
const url = './wasm/e0/main.wasm';
WebAssembly.instantiateStreaming(fetch(url), importObject).then(results => {
callback(results.instance);
});
}
function loadWasm(ctx) {
ctx.services.lifecycle.startAsyncInitializingJob('e0:loader');
window.Module = {
// locateFile: function(file) {
// return SERVER_PATH + file;
// },
onRuntimeInitialized: function() {
ctx.services.lifecycle.finishAsyncInitializingJob('e0:loader');
},
instantiateWasm: function (importObject, fncReceiveInstance) {
instantiateEngine(importObject, fncReceiveInstance);
return {};
}
};
let mainScript = document.createElement('script');
mainScript.setAttribute('src', './wasm/e0/main.js');
mainScript.setAttribute('async', 'async');
document.head.appendChild(mainScript);
}