Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/flo-bit/shapecraft. flo-bit.dev/shapecraft
Something went wrong. Try again.
1.4 kB · 90 lines
JavaScript
at commit da69385e
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import { nodeProxy } from '../tsl/TSLBase.js';import ArrayElementNode from './ArrayElementNode.js';
class StorageArrayElementNode extends ArrayElementNode {
static get type() {
return 'StorageArrayElementNode';
}
constructor( storageBufferNode, indexNode ) {
super( storageBufferNode, indexNode );
this.isStorageArrayElementNode = true;
}
set storageBufferNode( value ) {
this.node = value;
}
get storageBufferNode() {
return this.node;
}
setup( builder ) {
if ( builder.isAvailable( 'storageBuffer' ) === false ) {
if ( this.node.bufferObject === true ) {
builder.setupPBO( this.node );
}
}
return super.setup( builder );
}
generate( builder, output ) {
let snippet;
const isAssignContext = builder.context.assign;
//
if ( builder.isAvailable( 'storageBuffer' ) === false ) {
if ( this.node.bufferObject === true && isAssignContext !== true ) {
snippet = builder.generatePBO( this );
} else {
snippet = this.node.build( builder );
}
} else {
snippet = super.generate( builder );
}
if ( isAssignContext !== true ) {
const type = this.getNodeType( builder );
snippet = builder.format( snippet, type, output );
}
return snippet;
}
}
export default StorageArrayElementNode;
export const storageElement = /*@__PURE__*/ nodeProxy( StorageArrayElementNode );