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 +124 -124
- package/bin/README.emcc.md +41 -41
- package/bin/processPartitionVertices.js +4 -4
- package/dist/bimplus-renderer.js +1 -1
- package/eslint.config.mjs +38 -38
- package/karma-files-config.js +159 -158
- package/karma-modelviewer-ddt.conf.js +66 -66
- package/karma-shared-config.js +91 -91
- package/openAllFiles.ps1 +16 -16
- package/package.json +162 -162
- package/types/bimplus-renderer.d.ts +350 -350
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'
|
package/bin/README.emcc.md
CHANGED
|
@@ -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(
|
|
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
|
|
12
|
+
return Module.ready
|
|
12
13
|
}
|
|
13
|
-
|
|
14
14
|
);
|
|
15
15
|
})();
|
|
16
16
|
export default Module;
|