import { Node } from './Node.js'; class AttributeNode extends Node { constructor( name, type ) { super( type ); this.name = name; } getAttributeType( builder ) { return typeof this.type === 'number' ? builder.getConstructorFromLength( this.type ) : this.type; } getType( builder ) { const type = this.getAttributeType( builder ); return builder.getTypeByFormat( type ); } generate( builder, output ) { const type = this.getAttributeType( builder ); const attribute = builder.getAttribute( this.name, type ), name = builder.isShader( 'vertex' ) ? this.name : attribute.varying.name; return builder.format( name, this.getType( builder ), output ); } copy( source ) { super.copy( source ); this.type = source.type; return this; } toJSON( meta ) { let data = this.getJSONNode( meta ); if ( ! data ) { data = this.createJSONNode( meta ); data.type = this.type; } return data; } } AttributeNode.prototype.nodeType = 'Attribute'; export { AttributeNode };