mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 01:04:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			336 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			336 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								if ( THREE.LoaderSupport === undefined ) { THREE.LoaderSupport = {} }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Validation functions.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								THREE.LoaderSupport.Validator = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * If given input is null or undefined, false is returned otherwise true.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param input Can be anything
							 | 
						||
| 
								 | 
							
									 * @returns {boolean}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									isValid: function( input ) {
							 | 
						||
| 
								 | 
							
										return ( input !== null && input !== undefined );
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * If given input is null or undefined, the defaultValue is returned otherwise the given input.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param input Can be anything
							 | 
						||
| 
								 | 
							
									 * @param defaultValue Can be anything
							 | 
						||
| 
								 | 
							
									 * @returns {*}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									verifyInput: function( input, defaultValue ) {
							 | 
						||
| 
								 | 
							
										return ( input === null || input === undefined ) ? defaultValue : input;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Callbacks utilized by loaders and builders.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								THREE.LoaderSupport.Callbacks = (function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var Validator = THREE.LoaderSupport.Validator;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function Callbacks() {
							 | 
						||
| 
								 | 
							
										this.onProgress = null;
							 | 
						||
| 
								 | 
							
										this.onMeshAlter = null;
							 | 
						||
| 
								 | 
							
										this.onLoad = null;
							 | 
						||
| 
								 | 
							
										this.onLoadMaterials = null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Register callback function that is invoked by internal function "announceProgress" to print feedback.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.Callbacks
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {callback} callbackOnProgress Callback function for described functionality
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									Callbacks.prototype.setCallbackOnProgress = function ( callbackOnProgress ) {
							 | 
						||
| 
								 | 
							
										this.onProgress = Validator.verifyInput( callbackOnProgress, this.onProgress );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Register callback function that is called every time a mesh was loaded.
							 | 
						||
| 
								 | 
							
									 * Use {@link THREE.LoaderSupport.LoadedMeshUserOverride} for alteration instructions (geometry, material or disregard mesh).
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.Callbacks
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {callback} callbackOnMeshAlter Callback function for described functionality
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									Callbacks.prototype.setCallbackOnMeshAlter = function ( callbackOnMeshAlter ) {
							 | 
						||
| 
								 | 
							
										this.onMeshAlter = Validator.verifyInput( callbackOnMeshAlter, this.onMeshAlter );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Register callback function that is called once loading of the complete OBJ file is completed.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.Callbacks
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {callback} callbackOnLoad Callback function for described functionality
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									Callbacks.prototype.setCallbackOnLoad = function ( callbackOnLoad ) {
							 | 
						||
| 
								 | 
							
										this.onLoad = Validator.verifyInput( callbackOnLoad, this.onLoad );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Register callback function that is called when materials have been loaded.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.Callbacks
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {callback} callbackOnLoadMaterials Callback function for described functionality
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									Callbacks.prototype.setCallbackOnLoadMaterials = function ( callbackOnLoadMaterials ) {
							 | 
						||
| 
								 | 
							
										this.onLoadMaterials = Validator.verifyInput( callbackOnLoadMaterials, this.onLoadMaterials );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return Callbacks;
							 | 
						||
| 
								 | 
							
								})();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Object to return by callback onMeshAlter. Used to disregard a certain mesh or to return one to many meshes.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {boolean} disregardMesh=false Tell implementation to completely disregard this mesh
							 | 
						||
| 
								 | 
							
								 * @param {boolean} disregardMesh=false Tell implementation that mesh(es) have been altered or added
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								THREE.LoaderSupport.LoadedMeshUserOverride = (function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function LoadedMeshUserOverride( disregardMesh, alteredMesh ) {
							 | 
						||
| 
								 | 
							
										this.disregardMesh = disregardMesh === true;
							 | 
						||
| 
								 | 
							
										this.alteredMesh = alteredMesh === true;
							 | 
						||
| 
								 | 
							
										this.meshes = [];
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Add a mesh created within callback.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.OBJLoader2.LoadedMeshUserOverride
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {THREE.Mesh} mesh
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									LoadedMeshUserOverride.prototype.addMesh = function ( mesh ) {
							 | 
						||
| 
								 | 
							
										this.meshes.push( mesh );
							 | 
						||
| 
								 | 
							
										this.alteredMesh = true;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Answers if mesh shall be disregarded completely.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {boolean}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									LoadedMeshUserOverride.prototype.isDisregardMesh = function () {
							 | 
						||
| 
								 | 
							
										return this.disregardMesh;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Answers if new mesh(es) were created.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {boolean}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									LoadedMeshUserOverride.prototype.providesAlteredMeshes = function () {
							 | 
						||
| 
								 | 
							
										return this.alteredMesh;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return LoadedMeshUserOverride;
							 | 
						||
| 
								 | 
							
								})();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A resource description used by {@link THREE.LoaderSupport.PrepData} and others.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {string} url URL to the file
							 | 
						||
| 
								 | 
							
								 * @param {string} extension The file extension (type)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								THREE.LoaderSupport.ResourceDescriptor = (function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var Validator = THREE.LoaderSupport.Validator;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function ResourceDescriptor( url, extension ) {
							 | 
						||
| 
								 | 
							
										var urlParts = url.split( '/' );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if ( urlParts.length < 2 ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											this.path = null;
							 | 
						||
| 
								 | 
							
											this.name = url;
							 | 
						||
| 
								 | 
							
											this.url = url;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											this.path = Validator.verifyInput( urlParts.slice( 0, urlParts.length - 1).join( '/' ) + '/', null );
							 | 
						||
| 
								 | 
							
											this.name = Validator.verifyInput( urlParts[ urlParts.length - 1 ], null );
							 | 
						||
| 
								 | 
							
											this.url = url;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										this.extension = Validator.verifyInput( extension, "default" );
							 | 
						||
| 
								 | 
							
										this.extension = this.extension.trim();
							 | 
						||
| 
								 | 
							
										this.content = null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Set the content of this resource
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.ResourceDescriptor
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {Object} content The file content as arraybuffer or text
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									ResourceDescriptor.prototype.setContent = function ( content ) {
							 | 
						||
| 
								 | 
							
										this.content = Validator.verifyInput( content, null );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return ResourceDescriptor;
							 | 
						||
| 
								 | 
							
								})();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Configuration instructions to be used by run method.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								THREE.LoaderSupport.PrepData = (function () {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var Validator = THREE.LoaderSupport.Validator;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function PrepData( modelName ) {
							 | 
						||
| 
								 | 
							
										this.logging = {
							 | 
						||
| 
								 | 
							
											enabled: true,
							 | 
						||
| 
								 | 
							
											debug: false
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										this.modelName = Validator.verifyInput( modelName, '' );
							 | 
						||
| 
								 | 
							
										this.resources = [];
							 | 
						||
| 
								 | 
							
										this.callbacks = new THREE.LoaderSupport.Callbacks();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Enable or disable logging in general (except warn and error), plus enable or disable debug logging.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.PrepData
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {boolean} enabled True or false.
							 | 
						||
| 
								 | 
							
									 * @param {boolean} debug True or false.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									PrepData.prototype.setLogging = function ( enabled, debug ) {
							 | 
						||
| 
								 | 
							
										this.logging.enabled = enabled === true;
							 | 
						||
| 
								 | 
							
										this.logging.debug = debug === true;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Returns all callbacks as {@link THREE.LoaderSupport.Callbacks}
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.PrepData
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {THREE.LoaderSupport.Callbacks}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									PrepData.prototype.getCallbacks = function () {
							 | 
						||
| 
								 | 
							
										return this.callbacks;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Add a resource description.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.PrepData
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {THREE.LoaderSupport.ResourceDescriptor} Adds a {@link THREE.LoaderSupport.ResourceDescriptor}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									PrepData.prototype.addResource = function ( resource ) {
							 | 
						||
| 
								 | 
							
										this.resources.push( resource );
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Clones this object and returns it afterwards. Callbacks and resources are not cloned deep (references!).
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.PrepData
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @returns {@link THREE.LoaderSupport.PrepData}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									PrepData.prototype.clone = function () {
							 | 
						||
| 
								 | 
							
										var clone = new THREE.LoaderSupport.PrepData( this.modelName );
							 | 
						||
| 
								 | 
							
										clone.logging.enabled = this.logging.enabled;
							 | 
						||
| 
								 | 
							
										clone.logging.debug = this.logging.debug;
							 | 
						||
| 
								 | 
							
										clone.resources = this.resources;
							 | 
						||
| 
								 | 
							
										clone.callbacks = this.callbacks;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										var property, value;
							 | 
						||
| 
								 | 
							
										for ( property in this ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											value = this[ property ];
							 | 
						||
| 
								 | 
							
											if ( ! clone.hasOwnProperty( property ) && typeof this[ property ] !== 'function' ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												clone[ property ] = value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return clone;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Identify files or content of interest from an Array of {@link THREE.LoaderSupport.ResourceDescriptor}.
							 | 
						||
| 
								 | 
							
									 * @memberOf THREE.LoaderSupport.PrepData
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param {THREE.LoaderSupport.ResourceDescriptor[]} resources Array of {@link THREE.LoaderSupport.ResourceDescriptor}
							 | 
						||
| 
								 | 
							
									 * @param Object fileDesc Object describing which resources are of interest (ext, type (string or UInt8Array) and ignore (boolean))
							 | 
						||
| 
								 | 
							
									 * @returns {{}} Object with each "ext" and the corresponding {@link THREE.LoaderSupport.ResourceDescriptor}
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									PrepData.prototype.checkResourceDescriptorFiles = function ( resources, fileDesc ) {
							 | 
						||
| 
								 | 
							
										var resource, triple, i, found;
							 | 
						||
| 
								 | 
							
										var result = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										for ( var index in resources ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											resource = resources[ index ];
							 | 
						||
| 
								 | 
							
											found = false;
							 | 
						||
| 
								 | 
							
											if ( ! Validator.isValid( resource.name ) ) continue;
							 | 
						||
| 
								 | 
							
											if ( Validator.isValid( resource.content ) ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												for ( i = 0; i < fileDesc.length && !found; i++ ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													triple = fileDesc[ i ];
							 | 
						||
| 
								 | 
							
													if ( resource.extension.toLowerCase() === triple.ext.toLowerCase() ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
														if ( triple.ignore ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
															found = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
														} else if ( triple.type === "ArrayBuffer" ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
															// fast-fail on bad type
							 | 
						||
| 
								 | 
							
															if ( ! ( resource.content instanceof ArrayBuffer || resource.content instanceof Uint8Array ) ) throw 'Provided content is not of type ArrayBuffer! Aborting...';
							 | 
						||
| 
								 | 
							
															result[ triple.ext ] = resource;
							 | 
						||
| 
								 | 
							
															found = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
														} else if ( triple.type === "String" ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
															if ( ! ( typeof( resource.content ) === 'string' || resource.content instanceof String) ) throw 'Provided  content is not of type String! Aborting...';
							 | 
						||
| 
								 | 
							
															result[ triple.ext ] = resource;
							 | 
						||
| 
								 | 
							
															found = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
														}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												if ( !found ) throw 'Unidentified resource "' + resource.name + '": ' + resource.url;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												// fast-fail on bad type
							 | 
						||
| 
								 | 
							
												if ( ! ( typeof( resource.name ) === 'string' || resource.name instanceof String ) ) throw 'Provided file is not properly defined! Aborting...';
							 | 
						||
| 
								 | 
							
												for ( i = 0; i < fileDesc.length && !found; i++ ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													triple = fileDesc[ i ];
							 | 
						||
| 
								 | 
							
													if ( resource.extension.toLowerCase() === triple.ext.toLowerCase() ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
														if ( ! triple.ignore ) result[ triple.ext ] = resource;
							 | 
						||
| 
								 | 
							
														found = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												if ( !found ) throw 'Unidentified resource "' + resource.name + '": ' + resource.url;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return result;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return PrepData;
							 | 
						||
| 
								 | 
							
								})();
							 |