BaseNode.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { ObjectNode } from '../../libs/flow.module.js';
  2. export class BaseNode extends ObjectNode {
  3. constructor( name, inputLength, value = null, width = 300 ) {
  4. const getObjectCallback = ( /*output = null*/ ) => {
  5. return this.value;
  6. };
  7. super( name, inputLength, getObjectCallback, width );
  8. this.setOutputColor( this.getColorValueFromValue( value ) );
  9. this.editor = null;
  10. this.value = value;
  11. this.onValidElement = ( inputElement, outputElement ) => {
  12. const outputObject = outputElement.getObject();
  13. if ( ! outputObject || ! outputObject.isNode ) {
  14. return false;
  15. }
  16. };
  17. }
  18. serialize( data ) {
  19. super.serialize( data );
  20. delete data.width;
  21. }
  22. deserialize( data ) {
  23. delete data.width;
  24. super.deserialize( data );
  25. }
  26. setEditor( value ) {
  27. this.editor = value;
  28. return this;
  29. }
  30. getColorValueFromValue( value ) {
  31. if ( ! value ) return;
  32. if ( value.isMaterial === true ) {
  33. return 'forestgreen';
  34. } else if ( value.isObject3D === true ) {
  35. return 'orange';
  36. }
  37. }
  38. add( element ) {
  39. element.onValid( ( source, target ) => this.onValidElement( source, target ) );
  40. return super.add( element );
  41. }
  42. }