UNPKG

three

Version:

JavaScript 3D library

73 lines (39 loc) 1.28 kB
import { addNodeClass } from '../core/Node.js'; import TempNode from '../core/TempNode.js'; import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js'; class AssignNode extends TempNode { constructor( targetNode, sourceNode ) { super(); this.targetNode = targetNode; this.sourceNode = sourceNode; } hasDependencies() { return false; } getNodeType( builder, output ) { return output !== 'void' ? this.targetNode.getNodeType( builder ) : 'void'; } generate( builder, output ) { const targetNode = this.targetNode; const sourceNode = this.sourceNode; const targetType = targetNode.getNodeType( builder ); const target = targetNode.build( builder ); const source = sourceNode.build( builder, targetType ); const snippet = `${ target } = ${ source }`; if ( output === 'void' ) { builder.addLineFlowCode( snippet ); return; } else { const sourceType = sourceNode.getNodeType( builder ); if ( sourceType === 'void' ) { builder.addLineFlowCode( snippet ); return target; } return builder.format( snippet, targetType, output ); } } } export default AssignNode; export const assign = nodeProxy( AssignNode ); addNodeClass( 'AssignNode', AssignNode ); addNodeElement( 'assign', assign );