CacheNode.js 848 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import Node, { addNodeClass } from './Node.js';
  2. import { addNodeElement, nodeObject } from '../shadernode/ShaderNode.js';
  3. class CacheNode extends Node {
  4. constructor( node, parent = true ) {
  5. super();
  6. this.node = node;
  7. this.parent = parent;
  8. this.isCacheNode = true;
  9. }
  10. getNodeType( builder ) {
  11. return this.node.getNodeType( builder );
  12. }
  13. build( builder, ...params ) {
  14. const previousCache = builder.getCache();
  15. const cache = builder.getCacheFromNode( this, parent );
  16. builder.setCache( cache );
  17. const data = this.node.build( builder, ...params );
  18. builder.setCache( previousCache );
  19. return data;
  20. }
  21. }
  22. export default CacheNode;
  23. export const cache = ( node, ...params ) => nodeObject( new CacheNode( nodeObject( node ), ...params ) );
  24. addNodeElement( 'cache', cache );
  25. addNodeClass( 'CacheNode', CacheNode );