MaterialReferenceNode.js 965 B

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