Skip to content

Commit 9ff1484

Browse files
authored
Examples: Convert loaders to ES6 Part III. (#21616)
1 parent 072d972 commit 9ff1484

19 files changed

+10283
-10314
lines changed

examples/js/loaders/3DMLoader.js

Lines changed: 73 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,43 @@
11
( function () {
22

3-
var Rhino3dmLoader = function ( manager ) {
4-
5-
THREE.Loader.call( this, manager );
6-
this.libraryPath = '';
7-
this.libraryPending = null;
8-
this.libraryBinary = null;
9-
this.libraryConfig = {};
10-
this.url = '';
11-
this.workerLimit = 4;
12-
this.workerPool = [];
13-
this.workerNextTaskID = 1;
14-
this.workerSourceURL = '';
15-
this.workerConfig = {};
16-
this.materials = [];
17-
18-
};
19-
20-
Rhino3dmLoader.taskCache = new WeakMap();
21-
Rhino3dmLoader.prototype = Object.assign( Object.create( THREE.Loader.prototype ), {
22-
constructor: Rhino3dmLoader,
23-
setLibraryPath: function ( path ) {
3+
const _taskCache = new WeakMap();
4+
5+
class Rhino3dmLoader extends THREE.Loader {
6+
7+
constructor( manager ) {
8+
9+
super( manager );
10+
this.libraryPath = '';
11+
this.libraryPending = null;
12+
this.libraryBinary = null;
13+
this.libraryConfig = {};
14+
this.url = '';
15+
this.workerLimit = 4;
16+
this.workerPool = [];
17+
this.workerNextTaskID = 1;
18+
this.workerSourceURL = '';
19+
this.workerConfig = {};
20+
this.materials = [];
21+
22+
}
23+
24+
setLibraryPath( path ) {
2425

2526
this.libraryPath = path;
2627
return this;
2728

28-
},
29-
setWorkerLimit: function ( workerLimit ) {
29+
}
30+
31+
setWorkerLimit( workerLimit ) {
3032

3133
this.workerLimit = workerLimit;
3234
return this;
3335

34-
},
35-
load: function ( url, onLoad, onProgress, onError ) {
36+
}
37+
38+
load( url, onLoad, onProgress, onError ) {
3639

37-
var loader = new THREE.FileLoader( this.manager );
40+
const loader = new THREE.FileLoader( this.manager );
3841
loader.setPath( this.path );
3942
loader.setResponseType( 'arraybuffer' );
4043
loader.setRequestHeader( this.requestHeader );
@@ -43,9 +46,10 @@
4346

4447
// Check for an existing task using this buffer. A transferred buffer cannot be transferred
4548
// again from this thread.
46-
if ( Rhino3dmLoader.taskCache.has( buffer ) ) {
49+
if ( _taskCache.has( buffer ) ) {
50+
51+
const cachedTask = _taskCache.get( buffer );
4752

48-
var cachedTask = Rhino3dmLoader.taskCache.get( buffer );
4953
return cachedTask.promise.then( onLoad ).catch( onError );
5054

5155
}
@@ -54,13 +58,15 @@
5458

5559
}, onProgress, onError );
5660

57-
},
58-
debug: function () {
61+
}
62+
63+
debug() {
5964

6065
console.log( 'Task load: ', this.workerPool.map( worker => worker._taskLoad ) );
6166

62-
},
63-
decodeObjects: function ( buffer, url ) {
67+
}
68+
69+
decodeObjects( buffer, url ) {
6470

6571
var worker;
6672
var taskID;
@@ -99,19 +105,22 @@
99105

100106
} ); // Cache the task result.
101107

102-
Rhino3dmLoader.taskCache.set( buffer, {
108+
_taskCache.set( buffer, {
103109
url: url,
104110
promise: objectPending
105111
} );
112+
106113
return objectPending;
107114

108-
},
109-
parse: function ( data, onLoad, onError ) {
115+
}
116+
117+
parse( data, onLoad, onError ) {
110118

111119
this.decodeObjects( data, '' ).then( onLoad ).catch( onError );
112120

113-
},
114-
_compareMaterials: function ( material ) {
121+
}
122+
123+
_compareMaterials( material ) {
115124

116125
var mat = {};
117126
mat.name = material.name;
@@ -143,8 +152,9 @@
143152
this.materials.push( material );
144153
return material;
145154

146-
},
147-
_createMaterial: function ( material ) {
155+
}
156+
157+
_createMaterial( material ) {
148158

149159
if ( material === undefined ) {
150160

@@ -213,8 +223,9 @@
213223

214224
return mat;
215225

216-
},
217-
_createGeometry: function ( data ) {
226+
}
227+
228+
_createGeometry( data ) {
218229

219230
// console.log(data);
220231
var object = new THREE.Object3D();
@@ -342,8 +353,9 @@
342353
object.userData[ 'materials' ] = this.materials;
343354
return object;
344355

345-
},
346-
_createObject: function ( obj, mat ) {
356+
}
357+
358+
_createObject( obj, mat ) {
347359

348360
var loader = new THREE.BufferGeometryLoader();
349361
var attributes = obj.attributes;
@@ -545,8 +557,9 @@
545557

546558
}
547559

548-
},
549-
_initLibrary: function () {
560+
}
561+
562+
_initLibrary() {
550563

551564
if ( ! this.libraryPending ) {
552565

@@ -571,7 +584,7 @@
571584

572585
//this.libraryBinary = binaryContent;
573586
this.libraryConfig.wasmBinary = binaryContent;
574-
var fn = Rhino3dmLoader.Rhino3dmWorker.toString();
587+
var fn = Rhino3dmWorker.toString();
575588
var body = [ '/* rhino3dm.js */', jsContent, '/* worker */', fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) ].join( '\n' );
576589
this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );
577590

@@ -581,8 +594,9 @@
581594

582595
return this.libraryPending;
583596

584-
},
585-
_getWorker: function ( taskCost ) {
597+
}
598+
599+
_getWorker( taskCost ) {
586600

587601
return this._initLibrary().then( () => {
588602

@@ -638,15 +652,17 @@
638652

639653
} );
640654

641-
},
642-
_releaseTask: function ( worker, taskID ) {
655+
}
656+
657+
_releaseTask( worker, taskID ) {
643658

644659
worker._taskLoad -= worker._taskCosts[ taskID ];
645660
delete worker._callbacks[ taskID ];
646661
delete worker._taskCosts[ taskID ];
647662

648-
},
649-
dispose: function () {
663+
}
664+
665+
dispose() {
650666

651667
for ( var i = 0; i < this.workerPool.length; ++ i ) {
652668

@@ -658,10 +674,12 @@
658674
return this;
659675

660676
}
661-
} );
677+
678+
}
662679
/* WEB WORKER */
663680

664-
Rhino3dmLoader.Rhino3dmWorker = function () {
681+
682+
function Rhino3dmWorker() {
665683

666684
var libraryPending;
667685
var libraryConfig;
@@ -1257,7 +1275,7 @@
12571275

12581276
}
12591277

1260-
};
1278+
}
12611279

12621280
THREE.Rhino3dmLoader = Rhino3dmLoader;
12631281

0 commit comments

Comments
 (0)