File: //var/www/aspa/three/addons/nodes/core/InputNode.js
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 );