71 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import NodeLoader from './NodeLoader.js';
 | 
						|
import NodeMaterialLoader from './NodeMaterialLoader.js';
 | 
						|
import { ObjectLoader } from 'three';
 | 
						|
 | 
						|
class NodeObjectLoader extends ObjectLoader {
 | 
						|
 | 
						|
	constructor( manager ) {
 | 
						|
 | 
						|
		super( manager );
 | 
						|
 | 
						|
		this._nodesJSON = null;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	parse( json, onLoad ) {
 | 
						|
 | 
						|
		this._nodesJSON = json.nodes;
 | 
						|
 | 
						|
		const data = super.parse( json, onLoad );
 | 
						|
 | 
						|
		this._nodesJSON = null; // dispose
 | 
						|
 | 
						|
		return data;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	parseNodes( json, textures ) {
 | 
						|
 | 
						|
		if ( json !== undefined ) {
 | 
						|
 | 
						|
			const loader = new NodeLoader();
 | 
						|
			loader.setTextures( textures );
 | 
						|
 | 
						|
			return loader.parseNodes( json );
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		return {};
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	parseMaterials( json, textures ) {
 | 
						|
 | 
						|
		const materials = {};
 | 
						|
 | 
						|
		if ( json !== undefined ) {
 | 
						|
 | 
						|
			const nodes = this.parseNodes( this._nodesJSON, textures );
 | 
						|
 | 
						|
			const loader = new NodeMaterialLoader();
 | 
						|
			loader.setTextures( textures );
 | 
						|
			loader.setNodes( nodes );
 | 
						|
 | 
						|
			for ( let i = 0, l = json.length; i < l; i ++ ) {
 | 
						|
 | 
						|
				const data = json[ i ];
 | 
						|
 | 
						|
				materials[ data.uuid ] = loader.parse( data );
 | 
						|
 | 
						|
			}
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		return materials;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
export default NodeObjectLoader;
 |