diff --git a/examples/js/loaders/KMZLoader.js b/examples/js/loaders/KMZLoader.js new file mode 100644 index 0000000000000000000000000000000000000000..26ac010790b25f0594fe78fbc28ecbfb5f7befa6 --- /dev/null +++ b/examples/js/loaders/KMZLoader.js @@ -0,0 +1,54 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.KMZLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + +}; + +THREE.KMZLoader.prototype = { + + constructor: THREE.KMZLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.XHRLoader( scope.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setResponseType( 'arraybuffer' ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( text ) ); + + }, onProgress, onError ); + + }, + + parse: function ( data ) { + + var zip = new JSZip( data ); + + // console.log( zip ); + + for ( var name in zip.files ) { + + if ( name.toLowerCase().substr( - 4 ) === '.dae' ) { + + return new THREE.ColladaLoader().parse( zip.file( name ).asText() ); + + } + + } + + console.error( 'KZMLoader: Couldn\'t find .dae file.' ); + + return { + scene: new THREE.Group() + } + + } + +};