36 lines
		
	
	
		
			739 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			739 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import TempNode from '../core/TempNode.js'; | ||
|  | import { addNodeClass } from '../core/Node.js'; | ||
|  | import { addNodeElement, nodeProxy, vec2 } from '../shadernode/ShaderNode.js'; | ||
|  | 
 | ||
|  | class RotateUVNode extends TempNode { | ||
|  | 
 | ||
|  | 	constructor( uvNode, rotationNode, centerNode = vec2( 0.5 ) ) { | ||
|  | 
 | ||
|  | 		super( 'vec2' ); | ||
|  | 
 | ||
|  | 		this.uvNode = uvNode; | ||
|  | 		this.rotationNode = rotationNode; | ||
|  | 		this.centerNode = centerNode; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	setup() { | ||
|  | 
 | ||
|  | 		const { uvNode, rotationNode, centerNode } = this; | ||
|  | 
 | ||
|  | 		const vector = uvNode.sub( centerNode ); | ||
|  | 
 | ||
|  | 		return vector.rotate( rotationNode ).add( centerNode ); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export default RotateUVNode; | ||
|  | 
 | ||
|  | export const rotateUV = nodeProxy( RotateUVNode ); | ||
|  | 
 | ||
|  | addNodeElement( 'rotateUV', rotateUV ); | ||
|  | 
 | ||
|  | addNodeClass( 'RotateUVNode', RotateUVNode ); |