SplitEditor.js 1.2 KB

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