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 );
|