textureNodeModel.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import * as React from 'react';
  2. import { Nullable } from 'babylonjs/types';
  3. import { BaseTexture } from 'babylonjs/Materials/Textures/baseTexture';
  4. import { DefaultNodeModel } from '../defaultNodeModel';
  5. import { GlobalState } from '../../../globalState';
  6. import { TexturePropertyTabComponent } from './texturePropertyTabComponent';
  7. import { NodeCreationOptions, GraphEditor } from '../../../graphEditor';
  8. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  9. import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
  10. /**
  11. * Texture node model which stores information about a node editor block
  12. */
  13. export class TextureNodeModel extends DefaultNodeModel {
  14. private _block: TextureBlock;
  15. /**
  16. * Texture for the node if it exists
  17. */
  18. public get texture(): Nullable<BaseTexture> {
  19. return this._block.texture;
  20. }
  21. public set texture(value: Nullable<BaseTexture>) {
  22. this._block.texture = value;
  23. }
  24. /**
  25. * Constructs the node model
  26. */
  27. constructor() {
  28. super("texture");
  29. }
  30. renderProperties(globalState: GlobalState) {
  31. return (
  32. <TexturePropertyTabComponent globalState={globalState} node={this} />
  33. );
  34. }
  35. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]) {
  36. this._block = options.nodeMaterialBlock as TextureBlock;
  37. super.prepare(options, nodes, model, graphEditor, filterInputs);
  38. }
  39. }