bimplus-renderer 1.8.20-glb-gltf-obj-support-06 → 1.8.20-glb-gltf-obj-support-07

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,124 +1,124 @@
1
- bim+ renderer
2
- =========
3
-
4
- bim+ renderer is a javascript renderer core based on three js.
5
-
6
- Quick Links
7
- -----------
8
-
9
- https://nemetschekprime.atlassian.net/wiki/spaces/bimpluspublic/pages/1090127443/Bimplus+Renderer+Reference
10
-
11
- How to build
12
- ------------
13
-
14
- ### Install nodejs
15
- [http://www.nodejs.org/](http://www.nodejs.org/)
16
-
17
- ### Install local npm modules
18
- Open up a normal command line (admin is not needed) and go to the renderer folder
19
-
20
- npm install
21
-
22
- (whenever package.json has changed, you might to do this again)
23
-
24
- ### Install emscripten SDK
25
- [https://emscripten.org/](https://emscripten.org/)
26
- Install the emscripten toolchain to cross compile the performance critical parts written
27
- in c/c++ to web assembly
28
-
29
- ### Build renderer
30
- Library building process is using UMD (Universal Module Definition) output format so
31
- it's compatible with both cjs and amd module formats. The same library can be use in the
32
- client or on the server. Build process is using babel so it's possible to use new ES2015
33
- code in source codes.
34
-
35
- Library can be build in several ways as a dev or prod version.
36
- To run a dev build with source maps run:
37
-
38
- npm run build
39
-
40
- To build a prod version - uglified, minified run:
41
-
42
- npm run build-prod
43
-
44
- Pulish new release to npm (Hint: Before doing this npm login needs to be done and the package version adjusted) :
45
-
46
- npm run npm-publish
47
-
48
- Check content of npm package (result is bimplus-renderer@(version).tar.gz)
49
-
50
- npm run npm-pack
51
-
52
- ### Develop/Debug renderer
53
- goto your renderer folder
54
-
55
- npm link
56
-
57
- goto your application folder which uses the renderer
58
-
59
- npm link bimplus-renderer
60
-
61
- Do you changes in the renderer and build
62
-
63
- npm run build
64
-
65
- or
66
-
67
- grunt run build-prod
68
-
69
- Your app will automatically get the changes done in the renderer
70
-
71
- After developing it might be wise to unlink:
72
- goto your renderer folder
73
-
74
- npm unlink
75
-
76
- goto your application folder which uses the renderer
77
-
78
- npm unlink bimplus-renderer
79
- npm install
80
-
81
- ### Unit testing
82
- With every build output is copied also to the test folder.
83
- To run the unit tests go to the test subfolder and run
84
-
85
- npm install
86
- npm run test
87
-
88
- ### Documentation
89
- Bimplus WebSDK uses npm documentation plugin for easy documentation generation.
90
- To generate a documentation please install documentation plugin via npm :
91
-
92
- npm install -g documentation
93
-
94
- To create documentation in html format go to your renderer folder and run :
95
-
96
- npm run build-doc
97
-
98
- Documentation output will be in renderer/documentation folder
99
-
100
- To create documentation in markdown format go to your renderer folder and run :
101
-
102
- npm run build-docMd
103
-
104
- Documentation output will be in renderer/documentation/Bimplus_Renderer_doc.md file.
105
-
106
- To create a markdown suitable for Confluence run script:
107
-
108
- npm run build-docConf
109
-
110
- Please note that python must be installed !!
111
- This script will convert generated markdown into Confluence format. See console
112
- output for converted file name. Default place is in ./documentation in file :
113
- Bimplus_Renderer_doc_confluence.md
114
-
115
-
116
- Content of the confluence file can be inserted into Confluence page :
117
- - start confluence page editation mode
118
- - choose Insert more content / {} Markup option from toolbar
119
- - in popup window choose to Insert Markdown format
120
- - copy content of the converted confluence markdown file into the field in Confluence
121
- - save it (Please note that page links doesn't work in page preview mode)
122
-
123
- ### Typescript definitions
124
- - typescript definition file is located in subfolder 'types'
1
+ bim+ renderer
2
+ =========
3
+
4
+ bim+ renderer is a javascript renderer core based on three js.
5
+
6
+ Quick Links
7
+ -----------
8
+
9
+ https://nemetschekprime.atlassian.net/wiki/spaces/bimpluspublic/pages/1090127443/Bimplus+Renderer+Reference
10
+
11
+ How to build
12
+ ------------
13
+
14
+ ### Install nodejs
15
+ [http://www.nodejs.org/](http://www.nodejs.org/)
16
+
17
+ ### Install local npm modules
18
+ Open up a normal command line (admin is not needed) and go to the renderer folder
19
+
20
+ npm install
21
+
22
+ (whenever package.json has changed, you might to do this again)
23
+
24
+ ### Install emscripten SDK
25
+ [https://emscripten.org/](https://emscripten.org/)
26
+ Install the emscripten toolchain to cross compile the performance critical parts written
27
+ in c/c++ to web assembly
28
+
29
+ ### Build renderer
30
+ Library building process is using UMD (Universal Module Definition) output format so
31
+ it's compatible with both cjs and amd module formats. The same library can be use in the
32
+ client or on the server. Build process is using babel so it's possible to use new ES2015
33
+ code in source codes.
34
+
35
+ Library can be build in several ways as a dev or prod version.
36
+ To run a dev build with source maps run:
37
+
38
+ npm run build
39
+
40
+ To build a prod version - uglified, minified run:
41
+
42
+ npm run build-prod
43
+
44
+ Pulish new release to npm (Hint: Before doing this npm login needs to be done and the package version adjusted) :
45
+
46
+ npm run npm-publish
47
+
48
+ Check content of npm package (result is bimplus-renderer@(version).tar.gz)
49
+
50
+ npm run npm-pack
51
+
52
+ ### Develop/Debug renderer
53
+ goto your renderer folder
54
+
55
+ npm link
56
+
57
+ goto your application folder which uses the renderer
58
+
59
+ npm link bimplus-renderer
60
+
61
+ Do you changes in the renderer and build
62
+
63
+ npm run build
64
+
65
+ or
66
+
67
+ grunt run build-prod
68
+
69
+ Your app will automatically get the changes done in the renderer
70
+
71
+ After developing it might be wise to unlink:
72
+ goto your renderer folder
73
+
74
+ npm unlink
75
+
76
+ goto your application folder which uses the renderer
77
+
78
+ npm unlink bimplus-renderer
79
+ npm install
80
+
81
+ ### Unit testing
82
+ With every build output is copied also to the test folder.
83
+ To run the unit tests go to the test subfolder and run
84
+
85
+ npm install
86
+ npm run test
87
+
88
+ ### Documentation
89
+ Bimplus WebSDK uses npm documentation plugin for easy documentation generation.
90
+ To generate a documentation please install documentation plugin via npm :
91
+
92
+ npm install -g documentation
93
+
94
+ To create documentation in html format go to your renderer folder and run :
95
+
96
+ npm run build-doc
97
+
98
+ Documentation output will be in renderer/documentation folder
99
+
100
+ To create documentation in markdown format go to your renderer folder and run :
101
+
102
+ npm run build-docMd
103
+
104
+ Documentation output will be in renderer/documentation/Bimplus_Renderer_doc.md file.
105
+
106
+ To create a markdown suitable for Confluence run script:
107
+
108
+ npm run build-docConf
109
+
110
+ Please note that python must be installed !!
111
+ This script will convert generated markdown into Confluence format. See console
112
+ output for converted file name. Default place is in ./documentation in file :
113
+ Bimplus_Renderer_doc_confluence.md
114
+
115
+
116
+ Content of the confluence file can be inserted into Confluence page :
117
+ - start confluence page editation mode
118
+ - choose Insert more content / {} Markup option from toolbar
119
+ - in popup window choose to Insert Markdown format
120
+ - copy content of the converted confluence markdown file into the field in Confluence
121
+ - save it (Please note that page links doesn't work in page preview mode)
122
+
123
+ ### Typescript definitions
124
+ - typescript definition file is located in subfolder 'types'
@@ -1,41 +1,41 @@
1
- emcc for webassemblies
2
- ======================
3
-
4
- Python installation
5
- -------------------
6
- Installation of python. On windows the best way is to open a powershell and type python. When python isn't installed a window is opened and python can be installed from webstore
7
-
8
- After finished installation check installed python version in cmd or powershell
9
-
10
- PS H:\> python --version
11
- Python 3.8.6
12
-
13
- Installation Emscripten
14
- -----------------------
15
- Install the emcc sdk.
16
- Good description could be found here
17
-
18
- https://www.tutorialspoint.com/webassembly/webassembly_installation.htm
19
-
20
- Create some folder like C:\wa or C:\wa-emcc and clone the sdk inside this folder
21
-
22
- Building Bimplus-Render
23
- -----------------------
24
- Add path information to systemvariables (Used installation folder for emcc like D:\wa-emcc\)
25
-
26
- D:\wa-emcc\emsdk
27
- D:\wa-emcc\emsdk\upstream\emscripten
28
- D:\wa-emcc\emsdk\node\12.18.1_64bit\bin
29
- D:\wa-emcc\emsdk\python\3.7.4-pywin32_64bit
30
- D:\wa-emcc\emsdk\java\8.152_64bit\bin;
31
-
32
- ### Output of emcc is generated in bin folder
33
- The
34
-
35
- bin\
36
-
37
- folder is needed for
38
-
39
- npm run build
40
-
41
- so we have excluded this file from .gitignore
1
+ emcc for webassemblies
2
+ ======================
3
+
4
+ Python installation
5
+ -------------------
6
+ Installation of python. On windows the best way is to open a powershell and type python. When python isn't installed a window is opened and python can be installed from webstore
7
+
8
+ After finished installation check installed python version in cmd or powershell
9
+
10
+ PS H:\> python --version
11
+ Python 3.8.6
12
+
13
+ Installation Emscripten
14
+ -----------------------
15
+ Install the emcc sdk.
16
+ Good description could be found here
17
+
18
+ https://www.tutorialspoint.com/webassembly/webassembly_installation.htm
19
+
20
+ Create some folder like C:\wa or C:\wa-emcc and clone the sdk inside this folder
21
+
22
+ Building Bimplus-Render
23
+ -----------------------
24
+ Add path information to systemvariables (Used installation folder for emcc like D:\wa-emcc\)
25
+
26
+ D:\wa-emcc\emsdk
27
+ D:\wa-emcc\emsdk\upstream\emscripten
28
+ D:\wa-emcc\emsdk\node\12.18.1_64bit\bin
29
+ D:\wa-emcc\emsdk\python\3.7.4-pywin32_64bit
30
+ D:\wa-emcc\emsdk\java\8.152_64bit\bin;
31
+
32
+ ### Output of emcc is generated in bin folder
33
+ The
34
+
35
+ bin\
36
+
37
+ folder is needed for
38
+
39
+ npm run build
40
+
41
+ so we have excluded this file from .gitignore
@@ -3,14 +3,14 @@ var Module = (() => {
3
3
  var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
4
4
 
5
5
  return (
6
- function(moduleArg = {}) {
6
+ function(Module) {
7
+ Module = Module || {};
7
8
 
8
- var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,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";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["b"];updateMemoryViews();addOnInit(wasmExports["c"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var wasmImports={a:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["c"])();var _inplace_transform_vertices=Module["_inplace_transform_vertices"]=(a0,a1,a2,a3)=>(_inplace_transform_vertices=Module["_inplace_transform_vertices"]=wasmExports["d"])(a0,a1,a2,a3);var _process_vertices=Module["_process_vertices"]=(a0,a1,a2,a3,a4,a5)=>(_process_vertices=Module["_process_vertices"]=wasmExports["e"])(a0,a1,a2,a3,a4,a5);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["f"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["g"])(a0);var stackSave=()=>(stackSave=wasmExports["h"])();var stackRestore=a0=>(stackRestore=wasmExports["i"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["j"])(a0);function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}Module["ccall"]=ccall;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
9
+ var Module=typeof Module!="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,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";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["b"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["k"];addOnInit(Module["asm"]["c"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function getCFunc(ident){var func=Module["_"+ident];return func}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret}var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["c"]).apply(null,arguments)};var _inplace_transform_vertices=Module["_inplace_transform_vertices"]=function(){return(_inplace_transform_vertices=Module["_inplace_transform_vertices"]=Module["asm"]["d"]).apply(null,arguments)};var _process_vertices=Module["_process_vertices"]=function(){return(_process_vertices=Module["_process_vertices"]=Module["asm"]["e"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["f"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["g"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["h"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["i"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["j"]).apply(null,arguments)};Module["ccall"]=ccall;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
9
10
 
10
11
 
11
- return moduleArg.ready
12
+ return Module.ready
12
13
  }
13
-
14
14
  );
15
15
  })();
16
16
  export default Module;