60 lines
		
	
	
		
			918 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			918 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { MaterialLoader } from 'three';
 | 
						|
import { createNodeMaterialFromType } from '../materials/Materials.js';
 | 
						|
 | 
						|
const superFromTypeFunction = MaterialLoader.createMaterialFromType;
 | 
						|
 | 
						|
MaterialLoader.createMaterialFromType = function ( type ) {
 | 
						|
 | 
						|
	const material = createNodeMaterialFromType( type );
 | 
						|
 | 
						|
	if ( material !== undefined ) {
 | 
						|
 | 
						|
		return material;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	return superFromTypeFunction.call( this, type );
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
class NodeMaterialLoader extends MaterialLoader {
 | 
						|
 | 
						|
	constructor( manager ) {
 | 
						|
 | 
						|
		super( manager );
 | 
						|
 | 
						|
		this.nodes = {};
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	parse( json ) {
 | 
						|
 | 
						|
		const material = super.parse( json );
 | 
						|
 | 
						|
		const nodes = this.nodes;
 | 
						|
		const inputNodes = json.inputNodes;
 | 
						|
 | 
						|
		for ( const property in inputNodes ) {
 | 
						|
 | 
						|
			const uuid = inputNodes[ property ];
 | 
						|
 | 
						|
			material[ property ] = nodes[ uuid ];
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		return material;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	setNodes( value ) {
 | 
						|
 | 
						|
		this.nodes = value;
 | 
						|
 | 
						|
		return this;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
export default NodeMaterialLoader;
 |