InputNode.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import Node, { addNodeClass } from './Node.js';
  2. import { getValueType, getValueFromType, arrayBufferToBase64 } from './NodeUtils.js';
  3. class InputNode extends Node {
  4. constructor( value, nodeType = null ) {
  5. super( nodeType );
  6. this.isInputNode = true;
  7. this.value = value;
  8. this.precision = null;
  9. }
  10. getNodeType( /*builder*/ ) {
  11. if ( this.nodeType === null ) {
  12. return getValueType( this.value );
  13. }
  14. return this.nodeType;
  15. }
  16. getInputType( builder ) {
  17. return this.getNodeType( builder );
  18. }
  19. setPrecision( precision ) {
  20. this.precision = precision;
  21. return this;
  22. }
  23. serialize( data ) {
  24. super.serialize( data );
  25. data.value = this.value;
  26. if ( this.value && this.value.toArray ) data.value = this.value.toArray();
  27. data.valueType = getValueType( this.value );
  28. data.nodeType = this.nodeType;
  29. if ( data.valueType === 'ArrayBuffer' ) data.value = arrayBufferToBase64( data.value );
  30. data.precision = this.precision;
  31. }
  32. deserialize( data ) {
  33. super.deserialize( data );
  34. this.nodeType = data.nodeType;
  35. this.value = Array.isArray( data.value ) ? getValueFromType( data.valueType, ...data.value ) : data.value;
  36. this.precision = data.precision || null;
  37. if ( this.value && this.value.fromArray ) this.value = this.value.fromArray( data.value );
  38. }
  39. generate( /*builder, output*/ ) {
  40. console.warn( 'Abstract function.' );
  41. }
  42. }
  43. export default InputNode;
  44. addNodeClass( 'InputNode', InputNode );