48 lines
		
	
	
		
			724 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			724 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { addNodeClass } from '../core/Node.js';
 | |
| import AttributeNode from '../core/AttributeNode.js';
 | |
| import { nodeObject } from '../shadernode/ShaderNode.js';
 | |
| 
 | |
| class UVNode extends AttributeNode {
 | |
| 
 | |
| 	constructor( index = 0 ) {
 | |
| 
 | |
| 		super( null, 'vec2' );
 | |
| 
 | |
| 		this.isUVNode = true;
 | |
| 
 | |
| 		this.index = index;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	getAttributeName( /*builder*/ ) {
 | |
| 
 | |
| 		const index = this.index;
 | |
| 
 | |
| 		return 'uv' + ( index > 0 ? index : '' );
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	serialize( data ) {
 | |
| 
 | |
| 		super.serialize( data );
 | |
| 
 | |
| 		data.index = this.index;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	deserialize( data ) {
 | |
| 
 | |
| 		super.deserialize( data );
 | |
| 
 | |
| 		this.index = data.index;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| export default UVNode;
 | |
| 
 | |
| export const uv = ( ...params ) => nodeObject( new UVNode( ...params ) );
 | |
| 
 | |
| addNodeClass( 'UVNode', UVNode );
 |