MultiMaterial.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { _Math } from '../math/Math';
  2. /**
  3. * @author mrdoob / http://mrdoob.com/
  4. */
  5. function MultiMaterial( materials ) {
  6. this.uuid = _Math.generateUUID();
  7. this.type = 'MultiMaterial';
  8. this.materials = Array.isArray( materials ) ? materials : [];
  9. this.visible = true;
  10. }
  11. Object.assign( MultiMaterial.prototype, {
  12. isMultiMaterial: true,
  13. toJSON: function ( meta ) {
  14. var output = {
  15. metadata: {
  16. version: 4.2,
  17. type: 'material',
  18. generator: 'MaterialExporter'
  19. },
  20. uuid: this.uuid,
  21. type: this.type,
  22. materials: []
  23. };
  24. var materials = this.materials;
  25. for ( var i = 0, l = materials.length; i < l; i ++ ) {
  26. var material = materials[ i ].toJSON( meta );
  27. delete material.metadata;
  28. output.materials.push( material );
  29. }
  30. output.visible = this.visible;
  31. return output;
  32. },
  33. clone: function () {
  34. var material = new this.constructor();
  35. for ( var i = 0; i < this.materials.length; i ++ ) {
  36. material.materials.push( this.materials[ i ].clone() );
  37. }
  38. material.visible = this.visible;
  39. return material;
  40. }
  41. } );
  42. export { MultiMaterial };
粤ICP备19079148号