12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { MaterialLoader } from 'three';
- import {
- NodeMaterial,
- LineBasicNodeMaterial,
- MeshBasicNodeMaterial,
- MeshStandardNodeMaterial,
- PointsNodeMaterial,
- SpriteNodeMaterial
- } from '../materials/Materials.js';
- const superFromTypeFunction = MaterialLoader.createMaterialFromType;
- MaterialLoader.createMaterialFromType = function ( type ) {
- const materialLib = {
- NodeMaterial,
- LineBasicNodeMaterial,
- MeshBasicNodeMaterial,
- MeshStandardNodeMaterial,
- PointsNodeMaterial,
- SpriteNodeMaterial,
- };
- if ( materialLib[ type ] !== undefined ) {
- return new materialLib[ type ]();
- }
- 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;
|