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;
							 |