NodeObjectLoader.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import NodeLoader from './NodeLoader.js';
  2. import NodeMaterialLoader from './NodeMaterialLoader.js';
  3. import { ObjectLoader } from 'three';
  4. class NodeObjectLoader extends ObjectLoader {
  5. constructor( manager ) {
  6. super( manager );
  7. this._nodesJSON = null;
  8. }
  9. parse( json, onLoad ) {
  10. this._nodesJSON = json.nodes;
  11. const data = super.parse( json, onLoad );
  12. this._nodesJSON = null; // dispose
  13. return data;
  14. }
  15. parseNodes( json, textures ) {
  16. if ( json !== undefined ) {
  17. const loader = new NodeLoader();
  18. loader.setTextures( textures );
  19. return loader.parseNodes( json );
  20. }
  21. return {};
  22. }
  23. parseMaterials( json, textures ) {
  24. const materials = {};
  25. if ( json !== undefined ) {
  26. const nodes = this.parseNodes( this._nodesJSON, textures );
  27. const loader = new NodeMaterialLoader();
  28. loader.setTextures( textures );
  29. loader.setNodes( nodes );
  30. for ( let i = 0, l = json.length; i < l; i ++ ) {
  31. const data = json[ i ];
  32. materials[ data.uuid ] = loader.parse( data );
  33. }
  34. }
  35. return materials;
  36. }
  37. }
  38. export default NodeObjectLoader;