import { EventDispatcher } from './EventDispatcher.js'; import { StaticDrawUsage } from '../constants.js'; let id = 0; class UniformsGroup extends EventDispatcher { constructor() { super(); this.isUniformsGroup = true; Object.defineProperty( this, 'id', { value: id ++ } ); this.name = ''; this.usage = StaticDrawUsage; this.uniforms = []; } add( uniform ) { this.uniforms.push( uniform ); return this; } remove( uniform ) { const index = this.uniforms.indexOf( uniform ); if ( index !== - 1 ) this.uniforms.splice( index, 1 ); return this; } setName( name ) { this.name = name; return this; } setUsage( value ) { this.usage = value; return this; } dispose() { this.dispatchEvent( { type: 'dispose' } ); return this; } copy( source ) { this.name = source.name; this.usage = source.usage; const uniformsSource = source.uniforms; this.uniforms.length = 0; for ( let i = 0, l = uniformsSource.length; i < l; i ++ ) { this.uniforms.push( uniformsSource[ i ].clone() ); } return this; } clone() { return new this.constructor().copy( this ); } } export { UniformsGroup };