Просмотр исходного кода

Editor: Refactor creation of `GLTFLoader`. (#27193)

Michael Herzog 1 год назад
Родитель
Сommit
1d3baf45fd
1 измененных файлов с 36 добавлено и 71 удалено
  1. 36 71
      editor/js/Loader.js

+ 36 - 71
editor/js/Loader.js

@@ -269,23 +269,8 @@ function Loader( editor ) {
 
 
 					const contents = event.target.result;
 					const contents = event.target.result;
 
 
-					const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
-					const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
-					const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
-					const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
-
-					const dracoLoader = new DRACOLoader();
-					dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
-
-					const ktx2Loader = new KTX2Loader();
-					ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
-
-					editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
+					const loader = await createGLTFLoader();
 
 
-					const loader = new GLTFLoader();
-					loader.setDRACOLoader( dracoLoader );
-					loader.setKTX2Loader( ktx2Loader );
-					loader.setMeshoptDecoder( MeshoptDecoder );
 					loader.parse( contents, '', function ( result ) {
 					loader.parse( contents, '', function ( result ) {
 
 
 						const scene = result.scene;
 						const scene = result.scene;
@@ -294,7 +279,8 @@ function Loader( editor ) {
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 
 
-						dracoLoader.dispose();
+						loader.dracoLoader.dispose();
+						loader.ktx2Loader.dispose();
 
 
 					} );
 					} );
 
 
@@ -313,23 +299,7 @@ function Loader( editor ) {
 
 
 					const contents = event.target.result;
 					const contents = event.target.result;
 
 
-					const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
-					const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
-					const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
-					const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
-
-					const dracoLoader = new DRACOLoader();
-					dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
-
-					const ktx2Loader = new KTX2Loader();
-					ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
-
-					editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
-
-					const loader = new GLTFLoader( manager );
-					loader.setDRACOLoader( dracoLoader );
-					loader.setKTX2Loader( ktx2Loader );
-					loader.setMeshoptDecoder( MeshoptDecoder );
+					const loader = await createGLTFLoader();
 
 
 					loader.parse( contents, '', function ( result ) {
 					loader.parse( contents, '', function ( result ) {
 
 
@@ -339,7 +309,8 @@ function Loader( editor ) {
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 
 
-						dracoLoader.dispose();
+						loader.dracoLoader.dispose();
+						loader.ktx2Loader.dispose();
 
 
 					} );
 					} );
 
 
@@ -970,23 +941,7 @@ function Loader( editor ) {
 
 
 				{
 				{
 
 
-					const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
-					const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
-					const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
-					const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
-
-					const dracoLoader = new DRACOLoader();
-					dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
-
-					const ktx2Loader = new KTX2Loader();
-					ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
-
-					editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
-
-					const loader = new GLTFLoader();
-					loader.setDRACOLoader( dracoLoader );
-					loader.setKTX2Loader( ktx2Loader );
-					loader.setMeshoptDecoder( MeshoptDecoder );
+					const loader = await createGLTFLoader();
 
 
 					loader.parse( file.buffer, '', function ( result ) {
 					loader.parse( file.buffer, '', function ( result ) {
 
 
@@ -995,7 +950,8 @@ function Loader( editor ) {
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 
 
-						dracoLoader.dispose();
+						loader.dracoLoader.dispose();
+						loader.ktx2Loader.dispose();
 
 
 					} );
 					} );
 
 
@@ -1007,23 +963,7 @@ function Loader( editor ) {
 
 
 				{
 				{
 
 
-					const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
-					const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
-					const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
-					const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
-
-					const dracoLoader = new DRACOLoader();
-					dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
-
-					const ktx2Loader = new KTX2Loader();
-					ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
-
-					editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
-
-					const loader = new GLTFLoader();
-					loader.setDRACOLoader( dracoLoader );
-					loader.setKTX2Loader( ktx2Loader );
-					loader.setMeshoptDecoder( MeshoptDecoder );
+					const loader = await createGLTFLoader();
 					
 					
 					loader.parse( strFromU8( file ), '', function ( result ) {
 					loader.parse( strFromU8( file ), '', function ( result ) {
 
 
@@ -1032,7 +972,8 @@ function Loader( editor ) {
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 
 
-						dracoLoader.dispose();
+						loader.dracoLoader.dispose();
+						loader.ktx2Loader.dispose();
 
 
 					} );
 					} );
 
 
@@ -1046,6 +987,30 @@ function Loader( editor ) {
 
 
 	}
 	}
 
 
+	async function createGLTFLoader() {
+
+		const { GLTFLoader } = await import( 'three/addons/loaders/GLTFLoader.js' );
+		const { DRACOLoader } = await import( 'three/addons/loaders/DRACOLoader.js' );
+		const { KTX2Loader } = await import( 'three/addons/loaders/KTX2Loader.js' );
+		const { MeshoptDecoder } = await import( 'three/addons/libs/meshopt_decoder.module.js' );
+
+		const dracoLoader = new DRACOLoader();
+		dracoLoader.setDecoderPath( '../examples/jsm/libs/draco/gltf/' );
+
+		const ktx2Loader = new KTX2Loader();
+		ktx2Loader.setTranscoderPath( '../examples/jsm/libs/basis/' );
+
+		editor.signals.rendererDetectKTX2Support.dispatch( ktx2Loader );
+
+		const loader = new GLTFLoader();
+		loader.setDRACOLoader( dracoLoader );
+		loader.setKTX2Loader( ktx2Loader );
+		loader.setMeshoptDecoder( MeshoptDecoder );
+
+		return loader;
+
+	}
+
 }
 }
 
 
 export { Loader };
 export { Loader };