MaterialReferenceNode.js 916 B

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