UNPKG

three

Version:

JavaScript 3D library

84 lines (44 loc) 1.46 kB
import Node, { addNodeClass } from './Node.js'; import { getValueType, getValueFromType, arrayBufferToBase64 } from './NodeUtils.js'; class InputNode extends Node { constructor( value, nodeType = null ) { super( nodeType ); this.isInputNode = true; this.value = value; this.precision = null; } getNodeType( /*builder*/ ) { if ( this.nodeType === null ) { return getValueType( this.value ); } return this.nodeType; } getInputType( builder ) { return this.getNodeType( builder ); } setPrecision( precision ) { this.precision = precision; return this; } serialize( data ) { super.serialize( data ); data.value = this.value; if ( this.value && this.value.toArray ) data.value = this.value.toArray(); data.valueType = getValueType( this.value ); data.nodeType = this.nodeType; if ( data.valueType === 'ArrayBuffer' ) data.value = arrayBufferToBase64( data.value ); data.precision = this.precision; } deserialize( data ) { super.deserialize( data ); this.nodeType = data.nodeType; this.value = Array.isArray( data.value ) ? getValueFromType( data.valueType, ...data.value ) : data.value; this.precision = data.precision || null; if ( this.value && this.value.fromArray ) this.value = this.value.fromArray( data.value ); } generate( /*builder, output*/ ) { console.warn( 'Abstract function.' ); } } export default InputNode; addNodeClass( 'InputNode', InputNode );