MaterialReferenceNode.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import ReferenceNode from './ReferenceNode.js';
  2. //import { renderGroup } from '../core/UniformGroupNode.js';
  3. //import { NodeUpdateType } from '../core/constants.js';
  4. import { addNodeClass } from '../core/Node.js';
  5. import { nodeObject } from '../shadernode/ShaderNode.js';
  6. class MaterialReferenceNode extends ReferenceNode {
  7. constructor( property, inputType, material = null ) {
  8. super( property, inputType, material );
  9. this.material = material;
  10. //this.updateType = NodeUpdateType.RENDER;
  11. }
  12. /*setNodeType( node ) {
  13. super.setNodeType( node );
  14. this.node.groupNode = renderGroup;
  15. }*/
  16. updateReference( frame ) {
  17. this.reference = this.material !== null ? this.material : frame.material;
  18. return this.reference;
  19. }
  20. setup( builder ) {
  21. const material = this.material !== null ? this.material : builder.material;
  22. this.node.value = material[ this.property ];
  23. return super.setup( builder );
  24. }
  25. }
  26. export default MaterialReferenceNode;
  27. export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );
  28. addNodeClass( 'MaterialReferenceNode', MaterialReferenceNode );