Materials.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import NodeMaterial from './NodeMaterial.js';
  2. import LineBasicNodeMaterial from './LineBasicNodeMaterial.js';
  3. import MeshBasicNodeMaterial from './MeshBasicNodeMaterial.js';
  4. import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js';
  5. import MeshPhysicalNodeMaterial from './MeshPhysicalNodeMaterial.js';
  6. import PointsNodeMaterial from './PointsNodeMaterial.js';
  7. import SpriteNodeMaterial from './SpriteNodeMaterial.js';
  8. export {
  9. NodeMaterial,
  10. LineBasicNodeMaterial,
  11. MeshBasicNodeMaterial,
  12. MeshStandardNodeMaterial,
  13. MeshPhysicalNodeMaterial,
  14. PointsNodeMaterial,
  15. SpriteNodeMaterial
  16. };
  17. NodeMaterial.fromMaterial = function ( material ) {
  18. const materialLib = {
  19. NodeMaterial,
  20. LineBasicNodeMaterial,
  21. MeshBasicNodeMaterial,
  22. MeshStandardNodeMaterial,
  23. MeshPhysicalNodeMaterial,
  24. PointsNodeMaterial,
  25. SpriteNodeMaterial
  26. };
  27. const type = material.type.replace( 'Material', 'NodeMaterial' );
  28. if ( materialLib[ type ] === undefined ) {
  29. if ( material.isNodeMaterial !== true ) {
  30. throw new Error( `NodeMaterial: Material "${ material.type }" is not compatible.` );
  31. }
  32. return material; // is already a node material
  33. }
  34. const nodeMaterial = new materialLib[ type ]();
  35. for ( const key in material ) {
  36. nodeMaterial[ key ] = material[ key ];
  37. }
  38. return nodeMaterial;
  39. };