12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { LabelElement } from 'flow';
- import { BaseNodeEditor } from '../BaseNodeEditor.js';
- import { JoinNode, UniformNode, float } from 'three/nodes';
- import { setInputAestheticsFromType } from '../DataTypeLib.js';
- const NULL_VALUE = new UniformNode( 0 );
- export class JoinEditor extends BaseNodeEditor {
- constructor() {
- const node = new JoinNode();
- super( 'Join', 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( float( values[ i ] || NULL_VALUE ) );
- }
- node.nodes = nodes;
- this.invalidate();
- this.title.setOutput( length );
- };
- const xElement = setInputAestheticsFromType( new LabelElement( 'x | r' ), 'Number' ).onConnect( update );
- const yElement = setInputAestheticsFromType( new LabelElement( 'y | g' ), 'Number' ).onConnect( update );
- const zElement = setInputAestheticsFromType( new LabelElement( 'z | b' ), 'Number' ).onConnect( update );
- const wElement = setInputAestheticsFromType( new LabelElement( 'w | a' ), 'Number' ).onConnect( update );
- this.add( xElement )
- .add( yElement )
- .add( zElement )
- .add( wElement );
- update();
- }
- }
|