SplitEditor.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { LabelElement } from 'flow';
  2. import { BaseNodeEditor } from '../BaseNodeEditor.js';
  3. import { nodeObject, float } from 'three/tsl';
  4. import { setInputAestheticsFromType, setOutputAestheticsFromType } from '../DataTypeLib.js';
  5. export class SplitEditor extends BaseNodeEditor {
  6. constructor() {
  7. super( 'Split', null, 175 );
  8. let node = null;
  9. const inputElement = setInputAestheticsFromType( new LabelElement( 'Input' ), 'node' ).onConnect( () => {
  10. node = inputElement.getLinkedObject();
  11. if ( node !== null ) {
  12. xElement.setObject( nodeObject( node ).x );
  13. yElement.setObject( nodeObject( node ).y );
  14. zElement.setObject( nodeObject( node ).z );
  15. wElement.setObject( nodeObject( node ).w );
  16. } else {
  17. xElement.setObject( float() );
  18. yElement.setObject( float() );
  19. zElement.setObject( float() );
  20. wElement.setObject( float() );
  21. }
  22. } );
  23. const xElement = setOutputAestheticsFromType( new LabelElement( 'x | r' ), 'Number' ).setObject( float() );
  24. const yElement = setOutputAestheticsFromType( new LabelElement( 'y | g' ), 'Number' ).setObject( float() );
  25. const zElement = setOutputAestheticsFromType( new LabelElement( 'z | b' ), 'Number' ).setObject( float() );
  26. const wElement = setOutputAestheticsFromType( new LabelElement( 'w | a' ), 'Number' ).setObject( float() );
  27. this.add( inputElement )
  28. .add( xElement )
  29. .add( yElement )
  30. .add( zElement )
  31. .add( wElement );
  32. }
  33. }