123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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 );
|