1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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 };
|