Skip to content

Commit 8102140

Browse files
Mugen87AdaRoseCannon
authored andcommitted
Editor: Refactor creation of GLTFLoader. (mrdoob#27193)
1 parent 2942d4c commit 8102140

File tree

1 file changed

+36
-71
lines changed

1 file changed

+36
-71
lines changed

editor/js/Loader.js

Lines changed: 36 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -269,23 +269,8 @@ function Loader( editor ) {
269269

270270
const contents = event.target.result;
271271

272-
const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
273-
const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
274-
const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
275-
const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
276-
277-
const dracoLoader = new DRACOLoader();
278-
dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
279-
280-
const ktx2Loader = new KTX2Loader();
281-
ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
282-
283-
editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
272+
const loader = await createGLTFLoader();
284273

285-
const loader = new GLTFLoader();
286-
loader.setDRACOLoader( dracoLoader );
287-
loader.setKTX2Loader( ktx2Loader );
288-
loader.setMeshoptDecoder( MeshoptDecoder );
289274
loader.parse( contents, '', function ( result ) {
290275

291276
const scene = result.scene;
@@ -294,7 +279,8 @@ function Loader( editor ) {
294279
scene.animations.push( ...result.animations );
295280
editor.execute( new AddObjectCommand( editor, scene ) );
296281

297-
dracoLoader.dispose();
282+
loader.dracoLoader.dispose();
283+
loader.ktx2Loader.dispose();
298284

299285
} );
300286

@@ -313,23 +299,7 @@ function Loader( editor ) {
313299

314300
const contents = event.target.result;
315301

316-
const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
317-
const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
318-
const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
319-
const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
320-
321-
const dracoLoader = new DRACOLoader();
322-
dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
323-
324-
const ktx2Loader = new KTX2Loader();
325-
ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
326-
327-
editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
328-
329-
const loader = new GLTFLoader( manager );
330-
loader.setDRACOLoader( dracoLoader );
331-
loader.setKTX2Loader( ktx2Loader );
332-
loader.setMeshoptDecoder( MeshoptDecoder );
302+
const loader = await createGLTFLoader();
333303

334304
loader.parse( contents, '', function ( result ) {
335305

@@ -339,7 +309,8 @@ function Loader( editor ) {
339309
scene.animations.push( ...result.animations );
340310
editor.execute( new AddObjectCommand( editor, scene ) );
341311

342-
dracoLoader.dispose();
312+
loader.dracoLoader.dispose();
313+
loader.ktx2Loader.dispose();
343314

344315
} );
345316

@@ -970,23 +941,7 @@ function Loader( editor ) {
970941

971942
{
972943

973-
const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
974-
const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
975-
const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
976-
const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
977-
978-
const dracoLoader = new DRACOLoader();
979-
dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
980-
981-
const ktx2Loader = new KTX2Loader();
982-
ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
983-
984-
editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
985-
986-
const loader = new GLTFLoader();
987-
loader.setDRACOLoader( dracoLoader );
988-
loader.setKTX2Loader( ktx2Loader );
989-
loader.setMeshoptDecoder( MeshoptDecoder );
944+
const loader = await createGLTFLoader();
990945

991946
loader.parse( file.buffer, '', function ( result ) {
992947

@@ -995,7 +950,8 @@ function Loader( editor ) {
995950
scene.animations.push( ...result.animations );
996951
editor.execute( new AddObjectCommand( editor, scene ) );
997952

998-
dracoLoader.dispose();
953+
loader.dracoLoader.dispose();
954+
loader.ktx2Loader.dispose();
999955

1000956
} );
1001957

@@ -1007,23 +963,7 @@ function Loader( editor ) {
1007963

1008964
{
1009965

1010-
const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
1011-
const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
1012-
const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
1013-
const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
1014-
1015-
const dracoLoader = new DRACOLoader();
1016-
dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
1017-
1018-
const ktx2Loader = new KTX2Loader();
1019-
ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
1020-
1021-
editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
1022-
1023-
const loader = new GLTFLoader();
1024-
loader.setDRACOLoader( dracoLoader );
1025-
loader.setKTX2Loader( ktx2Loader );
1026-
loader.setMeshoptDecoder( MeshoptDecoder );
966+
const loader = await createGLTFLoader();
1027967

1028968
loader.parse( strFromU8( file ), '', function ( result ) {
1029969

@@ -1032,7 +972,8 @@ function Loader( editor ) {
1032972
scene.animations.push( ...result.animations );
1033973
editor.execute( new AddObjectCommand( editor, scene ) );
1034974

1035-
dracoLoader.dispose();
975+
loader.dracoLoader.dispose();
976+
loader.ktx2Loader.dispose();
1036977

1037978
} );
1038979

@@ -1046,6 +987,30 @@ function Loader( editor ) {
1046987

1047988
}
1048989

990+
async function createGLTFLoader() {
991+
992+
const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
993+
const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
994+
const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
995+
const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
996+
997+
const dracoLoader = new DRACOLoader();
998+
dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
999+
1000+
const ktx2Loader = new KTX2Loader();
1001+
ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
1002+
1003+
editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
1004+
1005+
const loader = new GLTFLoader();
1006+
loader.setDRACOLoader( dracoLoader );
1007+
loader.setKTX2Loader( ktx2Loader );
1008+
loader.setMeshoptDecoder( MeshoptDecoder );
1009+
1010+
return loader;
1011+
1012+
}
1013+
10491014
}
10501015

10511016
export { Loader };

0 commit comments

Comments
 (0)