mirror of
https://github.com/jiawanlong/Cesium-Examples.git
synced 2025-07-07 16:57:30 +00:00
84 lines
1.4 KiB
JavaScript
84 lines
1.4 KiB
JavaScript
![]() |
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 );
|