MultiMaterial.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 = materials instanceof Array ? materials : [];
  9. this.visible = true;
  10. }
  11. MultiMaterial.prototype = {
  12. constructor: MultiMaterial,
  13. isMultiMaterial: true,
  14. toJSON: function ( meta ) {
  15. var output = {
  16. metadata: {
  17. version: 4.2,
  18. type: 'material',
  19. generator: 'MaterialExporter'
  20. },
  21. uuid: this.uuid,
  22. type: this.type,
  23. materials: []
  24. };
  25. var materials = this.materials;
  26. for ( var i = 0, l = materials.length; i < l; i ++ ) {
  27. var material = materials[ i ].toJSON( meta );
  28. delete material.metadata;
  29. output.materials.push( material );
  30. }
  31. output.visible = this.visible;
  32. return output;
  33. },
  34. clone: function () {
  35. var material = new this.constructor();
  36. for ( var i = 0; i < this.materials.length; i ++ ) {
  37. material.materials.push( this.materials[ i ].clone() );
  38. }
  39. material.visible = this.visible;
  40. return material;
  41. }
  42. };
  43. export { MultiMaterial };
粤ICP备19079148号