You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					59 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.2 KiB
			| 
											3 years ago
										 | import { LabelElement } from '../../libs/flow.module.js'; | ||
|  | import { BaseNode } from '../core/BaseNode.js'; | ||
|  | import { JoinNode, UniformNode } from 'three/nodes'; | ||
|  | 
 | ||
|  | const NULL_VALUE = new UniformNode( 0 ); | ||
|  | 
 | ||
|  | export class JoinEditor extends BaseNode { | ||
|  | 
 | ||
|  | 	constructor() { | ||
|  | 
 | ||
|  | 		const node = new JoinNode(); | ||
|  | 
 | ||
|  | 		super( 'Join', 1, node, 175 ); | ||
|  | 
 | ||
|  | 		const update = () => { | ||
|  | 
 | ||
|  | 			const values = [ | ||
|  | 				xElement.getLinkedObject(), | ||
|  | 				yElement.getLinkedObject(), | ||
|  | 				zElement.getLinkedObject(), | ||
|  | 				wElement.getLinkedObject() | ||
|  | 			]; | ||
|  | 
 | ||
|  | 			let length = 1; | ||
|  | 
 | ||
|  | 			if ( values[ 3 ] !== null ) length = 4; | ||
|  | 			else if ( values[ 2 ] !== null ) length = 3; | ||
|  | 			else if ( values[ 1 ] !== null ) length = 2; | ||
|  | 
 | ||
|  | 			const nodes = []; | ||
|  | 
 | ||
|  | 			for ( let i = 0; i < length; i ++ ) { | ||
|  | 
 | ||
|  | 				nodes.push( values[ i ] || NULL_VALUE ); | ||
|  | 
 | ||
|  | 			} | ||
|  | 
 | ||
|  | 			node.nodes = nodes; | ||
|  | 
 | ||
|  | 			this.invalidate(); | ||
|  | 
 | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		const xElement = new LabelElement( 'X | R' ).setInput( 1 ).onConnect( update ); | ||
|  | 		const yElement = new LabelElement( 'Y | G' ).setInput( 1 ).onConnect( update ); | ||
|  | 		const zElement = new LabelElement( 'Z | B' ).setInput( 1 ).onConnect( update ); | ||
|  | 		const wElement = new LabelElement( 'W | A' ).setInput( 1 ).onConnect( update ); | ||
|  | 
 | ||
|  | 		this.add( xElement ) | ||
|  | 			.add( yElement ) | ||
|  | 			.add( zElement ) | ||
|  | 			.add( wElement ); | ||
|  | 
 | ||
|  | 		update(); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } |