2
0
Эх сурвалжийг харах

Editor: Clean up Loader.js. (#23446)

Michael Herzog 3 жил өмнө
parent
commit
aa0d32d21e
1 өөрчлөгдсөн 254 нэмэгдсэн , 142 устгасан
  1. 254 142
      editor/js/Loader.js

+ 254 - 142
editor/js/Loader.js

@@ -11,7 +11,7 @@ import { unzipSync, strFromU8 } from '../../examples/jsm/libs/fflate.module.js';
 
 
 function Loader( editor ) {
 function Loader( editor ) {
 
 
-	var scope = this;
+	const scope = this;
 
 
 	this.texturePath = '';
 	this.texturePath = '';
 
 
@@ -29,14 +29,14 @@ function Loader( editor ) {
 
 
 		if ( files.length > 0 ) {
 		if ( files.length > 0 ) {
 
 
-			var filesMap = filesMap || LoaderUtils.createFilesMap( files );
+			filesMap = filesMap || LoaderUtils.createFilesMap( files );
 
 
-			var manager = new THREE.LoadingManager();
+			const manager = new THREE.LoadingManager();
 			manager.setURLModifier( function ( url ) {
 			manager.setURLModifier( function ( url ) {
 
 
 				url = url.replace( /^(\.?\/)/, '' ); // remove './'
 				url = url.replace( /^(\.?\/)/, '' ); // remove './'
 
 
-				var file = filesMap[ url ];
+				const file = filesMap[ url ];
 
 
 				if ( file ) {
 				if ( file ) {
 
 
@@ -52,7 +52,7 @@ function Loader( editor ) {
 
 
 			manager.addHandler( /\.tga$/i, new TGALoader() );
 			manager.addHandler( /\.tga$/i, new TGALoader() );
 
 
-			for ( var i = 0; i < files.length; i ++ ) {
+			for ( let i = 0; i < files.length; i ++ ) {
 
 
 				scope.loadFile( files[ i ], manager );
 				scope.loadFile( files[ i ], manager );
 
 
@@ -64,14 +64,14 @@ function Loader( editor ) {
 
 
 	this.loadFile = function ( file, manager ) {
 	this.loadFile = function ( file, manager ) {
 
 
-		var filename = file.name;
-		var extension = filename.split( '.' ).pop().toLowerCase();
+		const filename = file.name;
+		const extension = filename.split( '.' ).pop().toLowerCase();
 
 
-		var reader = new FileReader();
+		const reader = new FileReader();
 		reader.addEventListener( 'progress', function ( event ) {
 		reader.addEventListener( 'progress', function ( event ) {
 
 
-			var size = '(' + Math.floor( event.total / 1000 ).format() + ' KB)';
-			var progress = Math.floor( ( event.loaded / event.total ) * 100 ) + '%';
+			const size = '(' + Math.floor( event.total / 1000 ).format() + ' KB)';
+			const progress = Math.floor( ( event.loaded / event.total ) * 100 ) + '%';
 
 
 			console.log( 'Loading', filename, size, progress );
 			console.log( 'Loading', filename, size, progress );
 
 
@@ -81,13 +81,15 @@ function Loader( editor ) {
 
 
 			case '3dm':
 			case '3dm':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { Rhino3dmLoader } = await import( '../../examples/jsm/loaders/3DMLoader.js' );
+					const { Rhino3dmLoader } = await import( '../../examples/jsm/loaders/3DMLoader.js' );
 
 
-					var loader = new Rhino3dmLoader();
+					const loader = new Rhino3dmLoader();
 					loader.setLibraryPath( '../examples/jsm/libs/rhino3dm/' );
 					loader.setLibraryPath( '../examples/jsm/libs/rhino3dm/' );
 					loader.parse( contents, function ( object ) {
 					loader.parse( contents, function ( object ) {
 
 
@@ -100,14 +102,18 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case '3ds':
 			case '3ds':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { TDSLoader } = await import( '../../examples/jsm/loaders/TDSLoader.js' );
+					const { TDSLoader } = await import( '../../examples/jsm/loaders/TDSLoader.js' );
 
 
-					var loader = new TDSLoader();
-					var object = loader.parse( event.target.result );
+					const loader = new TDSLoader();
+					const object = loader.parse( event.target.result );
 
 
 					editor.execute( new AddObjectCommand( editor, object ) );
 					editor.execute( new AddObjectCommand( editor, object ) );
 
 
@@ -116,14 +122,18 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case '3mf':
 			case '3mf':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { ThreeMFLoader } = await import( '../../examples/jsm/loaders/3MFLoader.js' );
+					const { ThreeMFLoader } = await import( '../../examples/jsm/loaders/3MFLoader.js' );
 
 
-					var loader = new ThreeMFLoader();
-					var object = loader.parse( event.target.result );
+					const loader = new ThreeMFLoader();
+					const object = loader.parse( event.target.result );
 
 
 					editor.execute( new AddObjectCommand( editor, object ) );
 					editor.execute( new AddObjectCommand( editor, object ) );
 
 
@@ -132,14 +142,18 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'amf':
 			case 'amf':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { AMFLoader } = await import( '../../examples/jsm/loaders/AMFLoader.js' );
+					const { AMFLoader } = await import( '../../examples/jsm/loaders/AMFLoader.js' );
 
 
-					var loader = new AMFLoader();
-					var amfobject = loader.parse( event.target.result );
+					const loader = new AMFLoader();
+					const amfobject = loader.parse( event.target.result );
 
 
 					editor.execute( new AddObjectCommand( editor, amfobject ) );
 					editor.execute( new AddObjectCommand( editor, amfobject ) );
 
 
@@ -148,16 +162,20 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'dae':
 			case 'dae':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { ColladaLoader } = await import( '../../examples/jsm/loaders/ColladaLoader.js' );
+					const { ColladaLoader } = await import( '../../examples/jsm/loaders/ColladaLoader.js' );
 
 
-					var loader = new ColladaLoader( manager );
-					var collada = loader.parse( contents );
+					const loader = new ColladaLoader( manager );
+					const collada = loader.parse( contents );
 
 
 					collada.scene.name = filename;
 					collada.scene.name = filename;
 
 
@@ -168,30 +186,34 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'drc':
 			case 'drc':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
+					const { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
 
 
-					var loader = new DRACOLoader();
+					const loader = new DRACOLoader();
 					loader.setDecoderPath( '../examples/js/libs/draco/' );
 					loader.setDecoderPath( '../examples/js/libs/draco/' );
 					loader.decodeDracoFile( contents, function ( geometry ) {
 					loader.decodeDracoFile( contents, function ( geometry ) {
 
 
-						var object;
+						let object;
 
 
 						if ( geometry.index !== null ) {
 						if ( geometry.index !== null ) {
 
 
-							var material = new THREE.MeshStandardMaterial();
+							const material = new THREE.MeshStandardMaterial();
 
 
 							object = new THREE.Mesh( geometry, material );
 							object = new THREE.Mesh( geometry, material );
 							object.name = filename;
 							object.name = filename;
 
 
 						} else {
 						} else {
 
 
-							var material = new THREE.PointsMaterial( { size: 0.01 } );
+							const material = new THREE.PointsMaterial( { size: 0.01 } );
 							material.vertexColors = geometry.hasAttribute( 'color' );
 							material.vertexColors = geometry.hasAttribute( 'color' );
 
 
 							object = new THREE.Points( geometry, material );
 							object = new THREE.Points( geometry, material );
@@ -209,16 +231,20 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'fbx':
 			case 'fbx':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { FBXLoader } = await import( '../../examples/jsm/loaders/FBXLoader.js' );
+					const { FBXLoader } = await import( '../../examples/jsm/loaders/FBXLoader.js' );
 
 
-					var loader = new FBXLoader( manager );
-					var object = loader.parse( contents );
+					const loader = new FBXLoader( manager );
+					const object = loader.parse( contents );
 
 
 					editor.execute( new AddObjectCommand( editor, object ) );
 					editor.execute( new AddObjectCommand( editor, object ) );
 
 
@@ -227,23 +253,27 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'glb':
 			case 'glb':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
-					var { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
+					const { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
+					const { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
 
 
-					var dracoLoader = new DRACOLoader();
+					const dracoLoader = new DRACOLoader();
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 
 
-					var loader = new GLTFLoader();
+					const loader = new GLTFLoader();
 					loader.setDRACOLoader( dracoLoader );
 					loader.setDRACOLoader( dracoLoader );
 					loader.parse( contents, '', function ( result ) {
 					loader.parse( contents, '', function ( result ) {
 
 
-						var scene = result.scene;
+						const scene = result.scene;
 						scene.name = filename;
 						scene.name = filename;
 
 
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
@@ -256,13 +286,17 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'gltf':
 			case 'gltf':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var loader;
+					let loader;
 
 
 					if ( isGLTF1( contents ) ) {
 					if ( isGLTF1( contents ) ) {
 
 
@@ -270,10 +304,10 @@ function Loader( editor ) {
 
 
 					} else {
 					} else {
 
 
-						var { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
-						var { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
+						const { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
+						const { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
 
 
-						var dracoLoader = new DRACOLoader();
+						const dracoLoader = new DRACOLoader();
 						dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 						dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 
 
 						loader = new GLTFLoader( manager );
 						loader = new GLTFLoader( manager );
@@ -283,7 +317,7 @@ function Loader( editor ) {
 
 
 					loader.parse( contents, '', function ( result ) {
 					loader.parse( contents, '', function ( result ) {
 
 
-						var scene = result.scene;
+						const scene = result.scene;
 						scene.name = filename;
 						scene.name = filename;
 
 
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
@@ -296,21 +330,25 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'js':
 			case 'js':
 			case 'json':
 			case 'json':
 
 
+			{
+
 				reader.addEventListener( 'load', function ( event ) {
 				reader.addEventListener( 'load', function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
 					// 2.0
 					// 2.0
 
 
 					if ( contents.indexOf( 'postMessage' ) !== - 1 ) {
 					if ( contents.indexOf( 'postMessage' ) !== - 1 ) {
 
 
-						var blob = new Blob( [ contents ], { type: 'text/javascript' } );
-						var url = URL.createObjectURL( blob );
+						const blob = new Blob( [ contents ], { type: 'text/javascript' } );
+						const url = URL.createObjectURL( blob );
 
 
-						var worker = new Worker( url );
+						const worker = new Worker( url );
 
 
 						worker.onmessage = function ( event ) {
 						worker.onmessage = function ( event ) {
 
 
@@ -327,7 +365,7 @@ function Loader( editor ) {
 
 
 					// >= 3.0
 					// >= 3.0
 
 
-					var data;
+					let data;
 
 
 					try {
 					try {
 
 
@@ -347,16 +385,20 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'ifc':
 			case 'ifc':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { IFCLoader } = await import( '../../examples/jsm/loaders/IFCLoader.js' );
+					const { IFCLoader } = await import( '../../examples/jsm/loaders/IFCLoader.js' );
 
 
-					var loader = new IFCLoader();
+					const loader = new IFCLoader();
 					loader.ifcManager.setWasmPath( '../../examples/jsm/loaders/ifc/' );
 					loader.ifcManager.setWasmPath( '../../examples/jsm/loaders/ifc/' );
 
 
-					var model = await loader.parse( event.target.result );
+					const model = await loader.parse( event.target.result );
 					model.mesh.name = filename;
 					model.mesh.name = filename;
 
 
 					editor.execute( new AddObjectCommand( editor, model.mesh ) );
 					editor.execute( new AddObjectCommand( editor, model.mesh ) );
@@ -366,14 +408,18 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'kmz':
 			case 'kmz':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { KMZLoader } = await import( '../../examples/jsm/loaders/KMZLoader.js' );
+					const { KMZLoader } = await import( '../../examples/jsm/loaders/KMZLoader.js' );
 
 
-					var loader = new KMZLoader();
-					var collada = loader.parse( event.target.result );
+					const loader = new KMZLoader();
+					const collada = loader.parse( event.target.result );
 
 
 					collada.scene.name = filename;
 					collada.scene.name = filename;
 
 
@@ -384,14 +430,18 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'ldr':
 			case 'ldr':
 			case 'mpd':
 			case 'mpd':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var { LDrawLoader } = await import( '../../examples/jsm/loaders/LDrawLoader.js' );
+					const { LDrawLoader } = await import( '../../examples/jsm/loaders/LDrawLoader.js' );
 
 
-					var loader = new LDrawLoader();
+					const loader = new LDrawLoader();
 					loader.setPath( '../../examples/models/ldraw/officialLibrary/' );
 					loader.setPath( '../../examples/models/ldraw/officialLibrary/' );
 					loader.parse( event.target.result, undefined, function ( group ) {
 					loader.parse( event.target.result, undefined, function ( group ) {
 
 
@@ -408,18 +458,22 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'md2':
 			case 'md2':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { MD2Loader } = await import( '../../examples/jsm/loaders/MD2Loader.js' );
+					const { MD2Loader } = await import( '../../examples/jsm/loaders/MD2Loader.js' );
 
 
-					var geometry = new MD2Loader().parse( contents );
-					var material = new THREE.MeshStandardMaterial();
+					const geometry = new MD2Loader().parse( contents );
+					const material = new THREE.MeshStandardMaterial();
 
 
-					var mesh = new THREE.Mesh( geometry, material );
+					const mesh = new THREE.Mesh( geometry, material );
 					mesh.mixer = new THREE.AnimationMixer( mesh );
 					mesh.mixer = new THREE.AnimationMixer( mesh );
 					mesh.name = filename;
 					mesh.name = filename;
 
 
@@ -431,15 +485,19 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'obj':
 			case 'obj':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { OBJLoader } = await import( '../../examples/jsm/loaders/OBJLoader.js' );
+					const { OBJLoader } = await import( '../../examples/jsm/loaders/OBJLoader.js' );
 
 
-					var object = new OBJLoader().parse( contents );
+					const object = new OBJLoader().parse( contents );
 					object.name = filename;
 					object.name = filename;
 
 
 					editor.execute( new AddObjectCommand( editor, object ) );
 					editor.execute( new AddObjectCommand( editor, object ) );
@@ -449,27 +507,31 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'ply':
 			case 'ply':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { PLYLoader } = await import( '../../examples/jsm/loaders/PLYLoader.js' );
+					const { PLYLoader } = await import( '../../examples/jsm/loaders/PLYLoader.js' );
 
 
-					var geometry = new PLYLoader().parse( contents );
-					var object;
+					const geometry = new PLYLoader().parse( contents );
+					let object;
 
 
 					if ( geometry.index !== null ) {
 					if ( geometry.index !== null ) {
 
 
-						var material = new THREE.MeshStandardMaterial();
+						const material = new THREE.MeshStandardMaterial();
 
 
 						object = new THREE.Mesh( geometry, material );
 						object = new THREE.Mesh( geometry, material );
 						object.name = filename;
 						object.name = filename;
 
 
 					} else {
 					} else {
 
 
-						var material = new THREE.PointsMaterial( { size: 0.01 } );
+						const material = new THREE.PointsMaterial( { size: 0.01 } );
 						material.vertexColors = geometry.hasAttribute( 'color' );
 						material.vertexColors = geometry.hasAttribute( 'color' );
 
 
 						object = new THREE.Points( geometry, material );
 						object = new THREE.Points( geometry, material );
@@ -484,18 +546,22 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'stl':
 			case 'stl':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { STLLoader } = await import( '../../examples/jsm/loaders/STLLoader.js' );
+					const { STLLoader } = await import( '../../examples/jsm/loaders/STLLoader.js' );
 
 
-					var geometry = new STLLoader().parse( contents );
-					var material = new THREE.MeshStandardMaterial();
+					const geometry = new STLLoader().parse( contents );
+					const material = new THREE.MeshStandardMaterial();
 
 
-					var mesh = new THREE.Mesh( geometry, material );
+					const mesh = new THREE.Mesh( geometry, material );
 					mesh.name = filename;
 					mesh.name = filename;
 
 
 					editor.execute( new AddObjectCommand( editor, mesh ) );
 					editor.execute( new AddObjectCommand( editor, mesh ) );
@@ -514,40 +580,44 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'svg':
 			case 'svg':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { SVGLoader } = await import( '../../examples/jsm/loaders/SVGLoader.js' );
+					const { SVGLoader } = await import( '../../examples/jsm/loaders/SVGLoader.js' );
 
 
-					var loader = new SVGLoader();
-					var paths = loader.parse( contents ).paths;
+					const loader = new SVGLoader();
+					const paths = loader.parse( contents ).paths;
 
 
 					//
 					//
 
 
-					var group = new THREE.Group();
+					const group = new THREE.Group();
 					group.scale.multiplyScalar( 0.1 );
 					group.scale.multiplyScalar( 0.1 );
 					group.scale.y *= - 1;
 					group.scale.y *= - 1;
 
 
-					for ( var i = 0; i < paths.length; i ++ ) {
+					for ( let i = 0; i < paths.length; i ++ ) {
 
 
-						var path = paths[ i ];
+						const path = paths[ i ];
 
 
-						var material = new THREE.MeshBasicMaterial( {
+						const material = new THREE.MeshBasicMaterial( {
 							color: path.color,
 							color: path.color,
 							depthWrite: false
 							depthWrite: false
 						} );
 						} );
 
 
-						var shapes = SVGLoader.createShapes( path );
+						const shapes = SVGLoader.createShapes( path );
 
 
-						for ( var j = 0; j < shapes.length; j ++ ) {
+						for ( let j = 0; j < shapes.length; j ++ ) {
 
 
-							var shape = shapes[ j ];
+							const shape = shapes[ j ];
 
 
-							var geometry = new THREE.ShapeGeometry( shape );
-							var mesh = new THREE.Mesh( geometry, material );
+							const geometry = new THREE.ShapeGeometry( shape );
+							const mesh = new THREE.Mesh( geometry, material );
 
 
 							group.add( mesh );
 							group.add( mesh );
 
 
@@ -562,17 +632,21 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'vox':
 			case 'vox':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { VOXLoader, VOXMesh } = await import( '../../examples/jsm/loaders/VOXLoader.js' );
+					const { VOXLoader, VOXMesh } = await import( '../../examples/jsm/loaders/VOXLoader.js' );
 
 
-					var chunks = new VOXLoader().parse( contents );
+					const chunks = new VOXLoader().parse( contents );
 
 
-					var group = new THREE.Group();
+					const group = new THREE.Group();
 					group.name = filename;
 					group.name = filename;
 
 
 					for ( let i = 0; i < chunks.length; i ++ ) {
 					for ( let i = 0; i < chunks.length; i ++ ) {
@@ -591,18 +665,22 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'vtk':
 			case 'vtk':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { VTKLoader } = await import( '../../examples/jsm/loaders/VTKLoader.js' );
+					const { VTKLoader } = await import( '../../examples/jsm/loaders/VTKLoader.js' );
 
 
-					var geometry = new VTKLoader().parse( contents );
-					var material = new THREE.MeshStandardMaterial();
+					const geometry = new VTKLoader().parse( contents );
+					const material = new THREE.MeshStandardMaterial();
 
 
-					var mesh = new THREE.Mesh( geometry, material );
+					const mesh = new THREE.Mesh( geometry, material );
 					mesh.name = filename;
 					mesh.name = filename;
 
 
 					editor.execute( new AddObjectCommand( editor, mesh ) );
 					editor.execute( new AddObjectCommand( editor, mesh ) );
@@ -612,15 +690,19 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'wrl':
 			case 'wrl':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { VRMLLoader } = await import( '../../examples/jsm/loaders/VRMLLoader.js' );
+					const { VRMLLoader } = await import( '../../examples/jsm/loaders/VRMLLoader.js' );
 
 
-					var result = new VRMLLoader().parse( contents );
+					const result = new VRMLLoader().parse( contents );
 
 
 					editor.execute( new SetSceneCommand( editor, result ) );
 					editor.execute( new SetSceneCommand( editor, result ) );
 
 
@@ -629,20 +711,24 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'xyz':
 			case 'xyz':
 
 
+			{
+
 				reader.addEventListener( 'load', async function ( event ) {
 				reader.addEventListener( 'load', async function ( event ) {
 
 
-					var contents = event.target.result;
+					const contents = event.target.result;
 
 
-					var { XYZLoader } = await import( '../../examples/jsm/loaders/XYZLoader.js' );
+					const { XYZLoader } = await import( '../../examples/jsm/loaders/XYZLoader.js' );
 
 
-					var geometry = new XYZLoader().parse( contents );
+					const geometry = new XYZLoader().parse( contents );
 
 
-					var material = new THREE.PointsMaterial();
+					const material = new THREE.PointsMaterial();
 					material.vertexColors = geometry.hasAttribute( 'color' );
 					material.vertexColors = geometry.hasAttribute( 'color' );
 
 
-					var points = new THREE.Points( geometry, material );
+					const points = new THREE.Points( geometry, material );
 					points.name = filename;
 					points.name = filename;
 
 
 					editor.execute( new AddObjectCommand( editor, points ) );
 					editor.execute( new AddObjectCommand( editor, points ) );
@@ -652,8 +738,12 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'zip':
 			case 'zip':
 
 
+			{
+
 				reader.addEventListener( 'load', function ( event ) {
 				reader.addEventListener( 'load', function ( event ) {
 
 
 					handleZIP( event.target.result );
 					handleZIP( event.target.result );
@@ -663,6 +753,8 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			default:
 			default:
 
 
 				console.error( 'Unsupported file format (' + extension + ').' );
 				console.error( 'Unsupported file format (' + extension + ').' );
@@ -697,15 +789,19 @@ function Loader( editor ) {
 
 
 			case 'buffergeometry':
 			case 'buffergeometry':
 
 
-				var loader = new THREE.BufferGeometryLoader();
-				var result = loader.parse( data );
+			{
 
 
-				var mesh = new THREE.Mesh( result );
+				const loader = new THREE.BufferGeometryLoader();
+				const result = loader.parse( data );
+
+				const mesh = new THREE.Mesh( result );
 
 
 				editor.execute( new AddObjectCommand( editor, mesh ) );
 				editor.execute( new AddObjectCommand( editor, mesh ) );
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'geometry':
 			case 'geometry':
 
 
 				console.error( 'Loader: "Geometry" is no longer supported.' );
 				console.error( 'Loader: "Geometry" is no longer supported.' );
@@ -714,7 +810,9 @@ function Loader( editor ) {
 
 
 			case 'object':
 			case 'object':
 
 
-				var loader = new THREE.ObjectLoader();
+			{
+
+				const loader = new THREE.ObjectLoader();
 				loader.setResourcePath( scope.texturePath );
 				loader.setResourcePath( scope.texturePath );
 
 
 				loader.parse( data, function ( result ) {
 				loader.parse( data, function ( result ) {
@@ -733,6 +831,8 @@ function Loader( editor ) {
 
 
 				break;
 				break;
 
 
+			}
+
 			case 'app':
 			case 'app':
 
 
 				editor.fromJSON( data );
 				editor.fromJSON( data );
@@ -745,37 +845,37 @@ function Loader( editor ) {
 
 
 	async function handleZIP( contents ) {
 	async function handleZIP( contents ) {
 
 
-		var zip = unzipSync( new Uint8Array( contents ) );
+		const zip = unzipSync( new Uint8Array( contents ) );
 
 
 		// Poly
 		// Poly
 
 
 		if ( zip[ 'model.obj' ] && zip[ 'materials.mtl' ] ) {
 		if ( zip[ 'model.obj' ] && zip[ 'materials.mtl' ] ) {
 
 
-			var { MTLLoader } = await import( '../../examples/jsm/loaders/MTLLoader.js' );
-			var { OBJLoader } = await import( '../../examples/jsm/loaders/OBJLoader.js' );
+			const { MTLLoader } = await import( '../../examples/jsm/loaders/MTLLoader.js' );
+			const { OBJLoader } = await import( '../../examples/jsm/loaders/OBJLoader.js' );
 
 
-			var materials = new MTLLoader().parse( strFromU8( zip[ 'materials.mtl' ] ) );
-			var object = new OBJLoader().setMaterials( materials ).parse( strFromU8( zip[ 'model.obj' ] ) );
+			const materials = new MTLLoader().parse( strFromU8( zip[ 'materials.mtl' ] ) );
+			const object = new OBJLoader().setMaterials( materials ).parse( strFromU8( zip[ 'model.obj' ] ) );
 			editor.execute( new AddObjectCommand( editor, object ) );
 			editor.execute( new AddObjectCommand( editor, object ) );
 
 
 		}
 		}
 
 
 		//
 		//
 
 
-		for ( var path in zip ) {
+		for ( const path in zip ) {
 
 
-			var file = zip[ path ];
+			const file = zip[ path ];
 
 
-			var manager = new THREE.LoadingManager();
+			const manager = new THREE.LoadingManager();
 			manager.setURLModifier( function ( url ) {
 			manager.setURLModifier( function ( url ) {
 
 
-				var file = zip[ url ];
+				const file = zip[ url ];
 
 
 				if ( file ) {
 				if ( file ) {
 
 
 					console.log( 'Loading', url );
 					console.log( 'Loading', url );
 
 
-					var blob = new Blob( [ file.buffer ], { type: 'application/octet-stream' } );
+					const blob = new Blob( [ file.buffer ], { type: 'application/octet-stream' } );
 					return URL.createObjectURL( blob );
 					return URL.createObjectURL( blob );
 
 
 				}
 				}
@@ -784,35 +884,41 @@ function Loader( editor ) {
 
 
 			} );
 			} );
 
 
-			var extension = path.split( '.' ).pop().toLowerCase();
+			const extension = path.split( '.' ).pop().toLowerCase();
 
 
 			switch ( extension ) {
 			switch ( extension ) {
 
 
 				case 'fbx':
 				case 'fbx':
 
 
-					var { FBXLoader } = await import( '../../examples/jsm/loaders/FBXLoader.js' );
+				{
+
+					const { FBXLoader } = await import( '../../examples/jsm/loaders/FBXLoader.js' );
 
 
-					var loader = new FBXLoader( manager );
-					var object = loader.parse( file.buffer );
+					const loader = new FBXLoader( manager );
+					const object = loader.parse( file.buffer );
 
 
 					editor.execute( new AddObjectCommand( editor, object ) );
 					editor.execute( new AddObjectCommand( editor, object ) );
 
 
 					break;
 					break;
 
 
+				}
+
 				case 'glb':
 				case 'glb':
 
 
-					var { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
-					var { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
+				{
+
+					const { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
+					const { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
 
 
-					var dracoLoader = new DRACOLoader();
+					const dracoLoader = new DRACOLoader();
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 
 
-					var loader = new GLTFLoader();
+					const loader = new GLTFLoader();
 					loader.setDRACOLoader( dracoLoader );
 					loader.setDRACOLoader( dracoLoader );
 
 
 					loader.parse( file.buffer, '', function ( result ) {
 					loader.parse( file.buffer, '', function ( result ) {
 
 
-						var scene = result.scene;
+						const scene = result.scene;
 
 
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
@@ -821,19 +927,23 @@ function Loader( editor ) {
 
 
 					break;
 					break;
 
 
+				}
+
 				case 'gltf':
 				case 'gltf':
 
 
-					var { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
-					var { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
+				{
+
+					const { DRACOLoader } = await import( '../../examples/jsm/loaders/DRACOLoader.js' );
+					const { GLTFLoader } = await import( '../../examples/jsm/loaders/GLTFLoader.js' );
 
 
-					var dracoLoader = new DRACOLoader();
+					const dracoLoader = new DRACOLoader();
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 					dracoLoader.setDecoderPath( '../examples/js/libs/draco/gltf/' );
 
 
-					var loader = new GLTFLoader( manager );
+					const loader = new GLTFLoader( manager );
 					loader.setDRACOLoader( dracoLoader );
 					loader.setDRACOLoader( dracoLoader );
 					loader.parse( strFromU8( file ), '', function ( result ) {
 					loader.parse( strFromU8( file ), '', function ( result ) {
 
 
-						var scene = result.scene;
+						const scene = result.scene;
 
 
 						scene.animations.push( ...result.animations );
 						scene.animations.push( ...result.animations );
 						editor.execute( new AddObjectCommand( editor, scene ) );
 						editor.execute( new AddObjectCommand( editor, scene ) );
@@ -842,6 +952,8 @@ function Loader( editor ) {
 
 
 					break;
 					break;
 
 
+				}
+
 			}
 			}
 
 
 		}
 		}
@@ -850,7 +962,7 @@ function Loader( editor ) {
 
 
 	function isGLTF1( contents ) {
 	function isGLTF1( contents ) {
 
 
-		var resultContent;
+		let resultContent;
 
 
 		if ( typeof contents === 'string' ) {
 		if ( typeof contents === 'string' ) {
 
 
@@ -859,12 +971,12 @@ function Loader( editor ) {
 
 
 		} else {
 		} else {
 
 
-			var magic = THREE.LoaderUtils.decodeText( new Uint8Array( contents, 0, 4 ) );
+			const magic = THREE.LoaderUtils.decodeText( new Uint8Array( contents, 0, 4 ) );
 
 
 			if ( magic === 'glTF' ) {
 			if ( magic === 'glTF' ) {
 
 
 				// contents is a .glb file; extract the version
 				// contents is a .glb file; extract the version
-				var version = new DataView( contents ).getUint32( 4, true );
+				const version = new DataView( contents ).getUint32( 4, true );
 
 
 				return version < 2;
 				return version < 2;
 
 
@@ -877,7 +989,7 @@ function Loader( editor ) {
 
 
 		}
 		}
 
 
-		var json = JSON.parse( resultContent );
+		const json = JSON.parse( resultContent );
 
 
 		return ( json.asset != undefined && json.asset.version[ 0 ] < 2 );
 		return ( json.asset != undefined && json.asset.version[ 0 ] < 2 );