@damienmortini/three 0.1.193 → 0.1.195

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.
@@ -1,102 +1,74 @@
1
- /**
2
- * @author Deepkolos / https://github.com/deepkolos
3
- */
4
-
1
+ /**
2
+ * @author Deepkolos / https://github.com/deepkolos
3
+ */
4
+
5
5
  export class WorkerPool {
6
-
7
- constructor( pool = 4 ) {
8
-
9
- this.pool = pool;
10
- this.queue = [];
11
- this.workers = [];
12
- this.workersResolve = [];
13
- this.workerStatus = 0;
14
-
15
- }
16
-
17
- _initWorker( workerId ) {
18
-
19
- if ( ! this.workers[ workerId ] ) {
20
-
21
- const worker = this.workerCreator();
22
- worker.addEventListener( 'message', this._onMessage.bind( this, workerId ) );
23
- this.workers[ workerId ] = worker;
24
-
25
- }
26
-
27
- }
28
-
29
- _getIdleWorker() {
30
-
31
- for ( let i = 0; i < this.pool; i ++ )
32
- if ( ! ( this.workerStatus & ( 1 << i ) ) ) return i;
33
-
34
- return - 1;
35
-
36
- }
37
-
38
- _onMessage( workerId, msg ) {
39
-
40
- const resolve = this.workersResolve[ workerId ];
41
- resolve && resolve( msg );
42
-
43
- if ( this.queue.length ) {
44
-
45
- const { resolve, msg, transfer } = this.queue.shift();
46
- this.workersResolve[ workerId ] = resolve;
47
- this.workers[ workerId ].postMessage( msg, transfer );
48
-
49
- } else {
50
-
51
- this.workerStatus ^= 1 << workerId;
52
-
53
- }
54
-
55
- }
56
-
57
- setWorkerCreator( workerCreator ) {
58
-
59
- this.workerCreator = workerCreator;
60
-
61
- }
62
-
63
- setWorkerLimit( pool ) {
64
-
65
- this.pool = pool;
66
-
67
- }
68
-
69
- postMessage( msg, transfer ) {
70
-
71
- return new Promise( ( resolve ) => {
72
-
73
- const workerId = this._getIdleWorker();
74
-
75
- if ( workerId !== - 1 ) {
76
-
77
- this._initWorker( workerId );
78
- this.workerStatus |= 1 << workerId;
79
- this.workersResolve[ workerId ] = resolve;
80
- this.workers[ workerId ].postMessage( msg, transfer );
81
-
82
- } else {
83
-
84
- this.queue.push( { resolve, msg, transfer } );
85
-
86
- }
87
-
88
- } );
89
-
90
- }
91
-
92
- dispose() {
93
-
94
- this.workers.forEach( ( worker ) => worker.terminate() );
95
- this.workersResolve.length = 0;
96
- this.workers.length = 0;
97
- this.queue.length = 0;
98
- this.workerStatus = 0;
99
-
100
- }
101
-
102
- }
6
+ constructor(pool = 4) {
7
+ this.pool = pool;
8
+ this.queue = [];
9
+ this.workers = [];
10
+ this.workersResolve = [];
11
+ this.workerStatus = 0;
12
+ }
13
+
14
+ _initWorker(workerId) {
15
+ if (!this.workers[workerId]) {
16
+ const worker = this.workerCreator();
17
+ worker.addEventListener('message', this._onMessage.bind(this, workerId));
18
+ this.workers[workerId] = worker;
19
+ }
20
+ }
21
+
22
+ _getIdleWorker() {
23
+ for (let i = 0; i < this.pool; i++)
24
+ if (!(this.workerStatus & (1 << i))) return i;
25
+
26
+ return -1;
27
+ }
28
+
29
+ _onMessage(workerId, msg) {
30
+ const resolve = this.workersResolve[workerId];
31
+ resolve && resolve(msg);
32
+
33
+ if (this.queue.length) {
34
+ const { resolve, msg, transfer } = this.queue.shift();
35
+ this.workersResolve[workerId] = resolve;
36
+ this.workers[workerId].postMessage(msg, transfer);
37
+ }
38
+ else {
39
+ this.workerStatus ^= 1 << workerId;
40
+ }
41
+ }
42
+
43
+ setWorkerCreator(workerCreator) {
44
+ this.workerCreator = workerCreator;
45
+ }
46
+
47
+ setWorkerLimit(pool) {
48
+ this.pool = pool;
49
+ }
50
+
51
+ postMessage(msg, transfer) {
52
+ return new Promise((resolve) => {
53
+ const workerId = this._getIdleWorker();
54
+
55
+ if (workerId !== -1) {
56
+ this._initWorker(workerId);
57
+ this.workerStatus |= 1 << workerId;
58
+ this.workersResolve[workerId] = resolve;
59
+ this.workers[workerId].postMessage(msg, transfer);
60
+ }
61
+ else {
62
+ this.queue.push({ resolve, msg, transfer });
63
+ }
64
+ });
65
+ }
66
+
67
+ dispose() {
68
+ this.workers.forEach(worker => worker.terminate());
69
+ this.workersResolve.length = 0;
70
+ this.workers.length = 0;
71
+ this.queue.length = 0;
72
+ this.workerStatus = 0;
73
+ }
74
+ }
@@ -1,10 +1,10 @@
1
- import { Mesh, OrthographicCamera, PlaneBufferGeometry, DataTexture, RGBAFormat, FloatType, WebGLRenderer, WebGLRenderTarget, Scene, NearestFilter, RGBFormat, HalfFloatType, MathUtils } from '../../../three/src/Three.js'
1
+ import Float16 from '@damienmortini/core/math/Float16.js';
2
+ import DatatextureShader from '@damienmortini/core/shader/DataTextureShader.js';
2
3
 
3
- import THREEShaderMaterial from '../material/THREEShaderMaterial.js'
4
- import DatatextureShader from '@damienmortini/core/shader/DataTextureShader.js'
5
- import Float16 from '@damienmortini/core/math/Float16.js'
4
+ import { DataTexture, FloatType, HalfFloatType, MathUtils, Mesh, NearestFilter, OrthographicCamera, PlaneBufferGeometry, RGBAFormat, RGBFormat, Scene, WebGLRenderer, WebGLRenderTarget } from '../../../three/src/Three.js';
5
+ import THREEShaderMaterial from '../material/THREEShaderMaterial.js';
6
6
 
7
- let DEBUG_RENDERER
7
+ let DEBUG_RENDERER;
8
8
 
9
9
  export default class THREEGPGPUSystem {
10
10
  constructor({
@@ -16,29 +16,29 @@ export default class THREEGPGPUSystem {
16
16
  format = RGBAFormat,
17
17
  debug = false,
18
18
  }) {
19
- this._renderer = renderer
20
- this._stride = stride
19
+ this._renderer = renderer;
20
+ this._stride = stride;
21
21
 
22
- const channels = format === RGBFormat ? 3 : 4
23
- const dataSize = data.length / channels / stride
24
- const width = MathUtils.ceilPowerOfTwo(Math.sqrt(dataSize))
25
- this._dataTextureWidth = width * stride
26
- this._dataTextureHeight = MathUtils.ceilPowerOfTwo(dataSize / width)
22
+ const channels = format === RGBFormat ? 3 : 4;
23
+ const dataSize = data.length / channels / stride;
24
+ const width = MathUtils.ceilPowerOfTwo(Math.sqrt(dataSize));
25
+ this._dataTextureWidth = width * stride;
26
+ this._dataTextureHeight = MathUtils.ceilPowerOfTwo(dataSize / width);
27
27
 
28
- this.debug = debug
28
+ this.debug = debug;
29
29
 
30
- const finalData = new Float32Array(this._dataTextureWidth * this._dataTextureHeight * channels)
31
- finalData.set(data)
32
- let dataTexture
30
+ const finalData = new Float32Array(this._dataTextureWidth * this._dataTextureHeight * channels);
31
+ finalData.set(data);
32
+ let dataTexture;
33
33
  // if (renderer.capabilities.isWebGL2) {
34
- dataTexture = new DataTexture(finalData, this._dataTextureWidth, this._dataTextureHeight, format, FloatType)
34
+ dataTexture = new DataTexture(finalData, this._dataTextureWidth, this._dataTextureHeight, format, FloatType);
35
35
  // } else {
36
36
  // dataTexture = new DataTexture(Float16.fromFloat32Array(finalData), this._dataTextureWidth, this._dataTextureHeight, format, HalfFloatType);
37
37
  // }
38
- dataTexture.needsUpdate = true
38
+ dataTexture.needsUpdate = true;
39
39
 
40
- this.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)
41
- this.scene = new Scene()
40
+ this.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
41
+ this.scene = new Scene();
42
42
 
43
43
  this._webglRenderTargetIn = new WebGLRenderTarget(this._dataTextureWidth, this._dataTextureHeight, {
44
44
  minFilter: NearestFilter,
@@ -47,9 +47,9 @@ export default class THREEGPGPUSystem {
47
47
  stencilBuffer: false,
48
48
  depthBuffer: false,
49
49
  type: renderer.capabilities.isWebGL2 ? FloatType : HalfFloatType, // Half float for iOS
50
- })
51
- this._webglRenderTargetIn.texture.generateMipmaps = false
52
- this._webglRenderTargetOut = this._webglRenderTargetIn.clone()
50
+ });
51
+ this._webglRenderTargetIn.texture.generateMipmaps = false;
52
+ this._webglRenderTargetOut = this._webglRenderTargetIn.clone();
53
53
 
54
54
  this._quad = new Mesh(new PlaneBufferGeometry(2, 2), new THREEShaderMaterial({
55
55
  uniforms: {
@@ -95,81 +95,81 @@ export default class THREEGPGPUSystem {
95
95
  }
96
96
  `],
97
97
  ],
98
- }))
99
- this.scene.add(this._quad)
98
+ }));
99
+ this.scene.add(this._quad);
100
100
  }
101
101
 
102
102
  get onBeforeRender() {
103
- return this._quad.onBeforeRender
103
+ return this._quad.onBeforeRender;
104
104
  }
105
105
 
106
106
  set onBeforeRender(value) {
107
- this._quad.onBeforeRender = value
107
+ this._quad.onBeforeRender = value;
108
108
  }
109
109
 
110
110
  get material() {
111
- return this._quad.material
111
+ return this._quad.material;
112
112
  }
113
113
 
114
114
  get dataTextureWidth() {
115
- return this._dataTextureWidth
115
+ return this._dataTextureWidth;
116
116
  }
117
117
 
118
118
  get dataTextureHeight() {
119
- return this._dataTextureHeight
119
+ return this._dataTextureHeight;
120
120
  }
121
121
 
122
122
  get dataTextureSize() {
123
- return [this._dataTextureWidth, this._dataTextureHeight]
123
+ return [this._dataTextureWidth, this._dataTextureHeight];
124
124
  }
125
125
 
126
126
  get dataTexture() {
127
- return this._quad.material.dataTexture
127
+ return this._quad.material.dataTexture;
128
128
  }
129
129
 
130
130
  get stride() {
131
- return this._stride
131
+ return this._stride;
132
132
  }
133
133
 
134
134
  get debug() {
135
- return this._debug
135
+ return this._debug;
136
136
  }
137
137
 
138
138
  set debug(value) {
139
- this._debug = value
139
+ this._debug = value;
140
140
  if (this._debug && !DEBUG_RENDERER) {
141
- DEBUG_RENDERER = new WebGLRenderer()
142
- document.body.appendChild(DEBUG_RENDERER.domElement)
143
- DEBUG_RENDERER.setSize(this._dataTextureWidth, this._dataTextureHeight, false)
144
- DEBUG_RENDERER.domElement.style.position = 'absolute'
145
- DEBUG_RENDERER.domElement.style.bottom = '0'
146
- DEBUG_RENDERER.domElement.style.left = '0'
147
- DEBUG_RENDERER.domElement.style.width = '100%'
148
- DEBUG_RENDERER.domElement.style.height = '25%'
149
- DEBUG_RENDERER.domElement.style.imageRendering = 'pixelated'
141
+ DEBUG_RENDERER = new WebGLRenderer();
142
+ document.body.appendChild(DEBUG_RENDERER.domElement);
143
+ DEBUG_RENDERER.setSize(this._dataTextureWidth, this._dataTextureHeight, false);
144
+ DEBUG_RENDERER.domElement.style.position = 'absolute';
145
+ DEBUG_RENDERER.domElement.style.bottom = '0';
146
+ DEBUG_RENDERER.domElement.style.left = '0';
147
+ DEBUG_RENDERER.domElement.style.width = '100%';
148
+ DEBUG_RENDERER.domElement.style.height = '25%';
149
+ DEBUG_RENDERER.domElement.style.imageRendering = 'pixelated';
150
150
  }
151
151
  if (DEBUG_RENDERER) {
152
- DEBUG_RENDERER.domElement.hidden = !this._debug
152
+ DEBUG_RENDERER.domElement.hidden = !this._debug;
153
153
  }
154
154
  }
155
155
 
156
156
  update() {
157
- const savedRendertarget = this._renderer.getRenderTarget()
157
+ const savedRendertarget = this._renderer.getRenderTarget();
158
158
 
159
- this._renderer.setRenderTarget(this._webglRenderTargetOut)
160
- this._renderer.render(this.scene, this.camera)
159
+ this._renderer.setRenderTarget(this._webglRenderTargetOut);
160
+ this._renderer.render(this.scene, this.camera);
161
161
 
162
162
  if (this.debug) {
163
- DEBUG_RENDERER.setRenderTarget(this._webglRenderTargetOut)
164
- DEBUG_RENDERER.render(this.scene, this.camera)
165
- DEBUG_RENDERER.setRenderTarget(null)
166
- DEBUG_RENDERER.render(this.scene, this.camera)
163
+ DEBUG_RENDERER.setRenderTarget(this._webglRenderTargetOut);
164
+ DEBUG_RENDERER.render(this.scene, this.camera);
165
+ DEBUG_RENDERER.setRenderTarget(null);
166
+ DEBUG_RENDERER.render(this.scene, this.camera);
167
167
  }
168
168
 
169
- [this._webglRenderTargetIn, this._webglRenderTargetOut] = [this._webglRenderTargetOut, this._webglRenderTargetIn]
169
+ [this._webglRenderTargetIn, this._webglRenderTargetOut] = [this._webglRenderTargetOut, this._webglRenderTargetIn];
170
170
 
171
- this._quad.material.dataTexture = this._webglRenderTargetIn.texture
171
+ this._quad.material.dataTexture = this._webglRenderTargetIn.texture;
172
172
 
173
- this._renderer.setRenderTarget(savedRendertarget)
173
+ this._renderer.setRenderTarget(savedRendertarget);
174
174
  }
175
175
  }
package/index.js CHANGED
@@ -1 +1 @@
1
- export { WebGLRenderTarget2D } from './renderer/WebGLRenderTarget2D.js'
1
+ export { WebGLRenderTarget2D } from './renderer/WebGLRenderTarget2D.js';
@@ -1,117 +1,122 @@
1
- import { Loader } from '@damienmortini/core/util/Loader.js'
2
- import { BasisTextureLoader } from '../examples/loaders/BasisTextureLoader.js'
3
- import { DRACOLoader } from '../examples/loaders/DRACOLoader.js'
4
- import { GLTFLoader } from '../examples/loaders/GLTFLoader.js'
5
- import { KTX2Loader } from '../examples/loaders/KTX2Loader.js'
6
- import { Mesh, Line, LineSegments, Vector3, WebGLRenderer, TextureLoader } from '../../../three/src/Three.js'
1
+ import { Loader } from '@damienmortini/core/util/Loader.js';
7
2
 
8
- let renderer
3
+ import { Line, LineSegments, Mesh, TextureLoader, Vector3, WebGLRenderer } from '../../../three/src/Three.js';
4
+ import { BasisTextureLoader } from '../examples/loaders/BasisTextureLoader.js';
5
+ import { DRACOLoader } from '../examples/loaders/DRACOLoader.js';
6
+ import { GLTFLoader } from '../examples/loaders/GLTFLoader.js';
7
+ import { KTX2Loader } from '../examples/loaders/KTX2Loader.js';
8
+
9
+ let renderer;
9
10
  const getEmptyRenderer = () => {
10
- if (renderer) return renderer
11
+ if (renderer) return renderer;
11
12
  if (window.WebGL2RenderingContext !== undefined && !/\bforcewebgl1\b/.test(window.location.search)) {
12
- const canvas = document.createElement('canvas')
13
+ const canvas = document.createElement('canvas');
13
14
  renderer = new WebGLRenderer({
14
15
  canvas: canvas,
15
16
  context: canvas.getContext('webgl2'),
16
- })
17
- } else {
18
- renderer = new WebGLRenderer()
17
+ });
18
+ }
19
+ else {
20
+ renderer = new WebGLRenderer();
19
21
  }
20
- return renderer
21
- }
22
+ return renderer;
23
+ };
22
24
 
23
25
  function computeSceneGeometry(data, scale, offset) {
24
- const hasOffset = offset.lengthSq() !== 0
26
+ const hasOffset = offset.lengthSq() !== 0;
25
27
  data.traverse((object3D) => {
26
28
  if (hasOffset) {
27
29
  if (object3D instanceof Mesh || object3D instanceof Line || object3D instanceof LineSegments) {
28
- object3D.geometry.translate(offset.x, offset.y, offset.z)
30
+ object3D.geometry.translate(offset.x, offset.y, offset.z);
29
31
  }
30
32
  }
31
33
  if (scale !== 1) {
32
34
  if (object3D instanceof Mesh || object3D instanceof Line || object3D instanceof LineSegments) {
33
- object3D.geometry.scale(scale, scale, scale)
35
+ object3D.geometry.scale(scale, scale, scale);
34
36
  }
35
- object3D.position.multiplyScalar(scale)
37
+ object3D.position.multiplyScalar(scale);
36
38
  }
37
- })
39
+ });
38
40
  }
39
41
 
40
- let gltfLoader
41
- let dracoLoader
42
- let basisLoader
43
- let ktx2Loader
42
+ let gltfLoader;
43
+ let dracoLoader;
44
+ let basisLoader;
45
+ let ktx2Loader;
44
46
 
45
- let meshOptimizerInitialized = false
47
+ let meshOptimizerInitialized = false;
46
48
 
47
49
  class THREELoader extends Loader {
48
50
  constructor() {
49
- super()
50
- this.dracoDecoderPath = 'node_modules/three/examples/js/libs/draco/'
51
- this.basisTranscoderPath = 'node_modules/three/examples/js/libs/basis/'
51
+ super();
52
+ this.dracoDecoderPath = 'node_modules/three/examples/js/libs/draco/';
53
+ this.basisTranscoderPath = 'node_modules/three/examples/js/libs/basis/';
52
54
 
53
- this.extensionTypeMap.set('gltf', 'model/gltf+json')
54
- this.extensionTypeMap.set('glb', 'model/gltf-binary')
55
- this.extensionTypeMap.set('basis', 'image/basis')
55
+ this.extensionTypeMap.set('gltf', 'model/gltf+json');
56
+ this.extensionTypeMap.set('glb', 'model/gltf-binary');
57
+ this.extensionTypeMap.set('basis', 'image/basis');
56
58
  }
57
59
 
58
60
  async _loadFile({ src, type, scale = 1, offset = new Vector3(), meshOptimizer = false }) {
59
61
  if (type.startsWith('model')) {
60
- const [, path, file] = /(.*[\/\\])(.*$)/.exec(src)
62
+ const [, path, file] = /(.*[\/\\])(.*$)/.exec(src);
61
63
 
62
64
  if (!gltfLoader) {
63
- gltfLoader = new GLTFLoader(undefined)
64
- dracoLoader = new DRACOLoader(undefined)
65
- dracoLoader.setWorkerLimit(2)
66
- gltfLoader.setDRACOLoader(dracoLoader)
67
- ktx2Loader = new KTX2Loader()
68
- gltfLoader.setKTX2Loader(ktx2Loader)
69
- ktx2Loader.detectSupport(getEmptyRenderer())
65
+ gltfLoader = new GLTFLoader(undefined);
66
+ dracoLoader = new DRACOLoader(undefined);
67
+ dracoLoader.setWorkerLimit(2);
68
+ gltfLoader.setDRACOLoader(dracoLoader);
69
+ ktx2Loader = new KTX2Loader();
70
+ gltfLoader.setKTX2Loader(ktx2Loader);
71
+ ktx2Loader.detectSupport(getEmptyRenderer());
70
72
  }
71
73
 
72
74
  if (meshOptimizer && !meshOptimizerInitialized) {
73
- await import('./meshoptimizerdecoder/meshopt_decoder.js')
74
- const { EXT_meshopt_compression } = await import('./meshoptimizerdecoder/THREE.EXT_meshopt_compression.js')
75
+ await import('./meshoptimizerdecoder/meshopt_decoder.js');
76
+ const { EXT_meshopt_compression } = await import('./meshoptimizerdecoder/THREE.EXT_meshopt_compression.js');
75
77
  gltfLoader.register(function (parser) {
76
- const res = new EXT_meshopt_compression(parser, MeshoptDecoder)
77
- res.name = 'MESHOPT_compression'
78
- return res
79
- })
80
- meshOptimizerInitialized = true
78
+ const res = new EXT_meshopt_compression(parser, MeshoptDecoder);
79
+ res.name = 'MESHOPT_compression';
80
+ return res;
81
+ });
82
+ meshOptimizerInitialized = true;
81
83
  }
82
84
 
83
- dracoLoader.setDecoderPath(`${this.baseURI}${this.dracoDecoderPath}`)
84
- ktx2Loader.setTranscoderPath(`${this.baseURI}${this.basisTranscoderPath}`)
85
- gltfLoader.setPath(path)
85
+ dracoLoader.setDecoderPath(`${this.baseURI}${this.dracoDecoderPath}`);
86
+ ktx2Loader.setTranscoderPath(`${this.baseURI}${this.basisTranscoderPath}`);
87
+ gltfLoader.setPath(path);
86
88
 
87
89
  return new Promise((resolve) => {
88
90
  gltfLoader.load(file, (data) => {
89
- computeSceneGeometry(data.scene, scale, offset)
90
- resolve(data)
91
- })
92
- })
93
- } else if (type === 'image/basis') {
91
+ computeSceneGeometry(data.scene, scale, offset);
92
+ resolve(data);
93
+ });
94
+ });
95
+ }
96
+ else if (type === 'image/basis') {
94
97
  if (!basisLoader) {
95
- basisLoader = new BasisTextureLoader(undefined)
96
- basisLoader.setWorkerLimit(2)
97
- basisLoader.detectSupport(getEmptyRenderer())
98
+ basisLoader = new BasisTextureLoader(undefined);
99
+ basisLoader.setWorkerLimit(2);
100
+ basisLoader.detectSupport(getEmptyRenderer());
98
101
  }
99
- basisLoader.setTranscoderPath(`${this.baseURI}${this.basisTranscoderPath}`)
102
+ basisLoader.setTranscoderPath(`${this.baseURI}${this.basisTranscoderPath}`);
100
103
  return new Promise((resolve) => {
101
104
  basisLoader.load(src, (texture) => {
102
- resolve(texture)
103
- })
104
- })
105
- } else if (type.startsWith('image') || type.startsWith('video')) {
105
+ resolve(texture);
106
+ });
107
+ });
108
+ }
109
+ else if (type.startsWith('image') || type.startsWith('video')) {
106
110
  return new Promise((resolve) => {
107
111
  new TextureLoader().load(src, (texture) => {
108
- resolve(texture)
109
- })
110
- })
111
- } else {
112
- return super._loadFile({ src, type })
112
+ resolve(texture);
113
+ });
114
+ });
115
+ }
116
+ else {
117
+ return super._loadFile({ src, type });
113
118
  }
114
119
  }
115
120
  }
116
121
 
117
- export default new THREELoader()
122
+ export default new THREELoader();
@@ -2,40 +2,41 @@
2
2
  /* loader.register(function (parser) { return new EXT_meshopt_compression(parser, MeshoptDecoder); }); */
3
3
  const EXT_meshopt_compression = (function () {
4
4
  function EXT_meshopt_compression(parser, decoder) {
5
- this.name = 'EXT_meshopt_compression'
6
- this._parser = parser
7
- this._decoder = decoder
5
+ this.name = 'EXT_meshopt_compression';
6
+ this._parser = parser;
7
+ this._decoder = decoder;
8
8
  }
9
9
 
10
10
  EXT_meshopt_compression.prototype.loadBufferView = function (index) {
11
- const bufferView = this._parser.json.bufferViews[index]
11
+ const bufferView = this._parser.json.bufferViews[index];
12
12
 
13
13
  if (bufferView.extensions && bufferView.extensions[this.name]) {
14
- const extensionDef = bufferView.extensions[this.name]
14
+ const extensionDef = bufferView.extensions[this.name];
15
15
 
16
- const buffer = this._parser.getDependency('buffer', extensionDef.buffer)
17
- const decoder = this._decoder
16
+ const buffer = this._parser.getDependency('buffer', extensionDef.buffer);
17
+ const decoder = this._decoder;
18
18
 
19
19
  return Promise.all([buffer, decoder.ready]).then(function (res) {
20
- const byteOffset = extensionDef.byteOffset || 0
21
- const byteLength = extensionDef.byteLength || 0
20
+ const byteOffset = extensionDef.byteOffset || 0;
21
+ const byteLength = extensionDef.byteLength || 0;
22
22
 
23
- const count = extensionDef.count
24
- const stride = extensionDef.byteStride
23
+ const count = extensionDef.count;
24
+ const stride = extensionDef.byteStride;
25
25
 
26
- const result = new ArrayBuffer(count * stride)
27
- const source = new Uint8Array(res[0], byteOffset, byteLength)
26
+ const result = new ArrayBuffer(count * stride);
27
+ const source = new Uint8Array(res[0], byteOffset, byteLength);
28
28
 
29
- decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter)
30
- return result
31
- })
32
- } else {
33
- return null
29
+ decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);
30
+ return result;
31
+ });
32
+ }
33
+ else {
34
+ return null;
34
35
  }
35
- }
36
+ };
36
37
 
37
- return EXT_meshopt_compression
38
- }())
38
+ return EXT_meshopt_compression;
39
+ }());
39
40
 
40
41
  /* three.js uses JS modules exclusively since r124 */
41
- export { EXT_meshopt_compression }
42
+ export { EXT_meshopt_compression };