clampNodeWidget.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import * as React from "react";
  2. import { ClampNodeModel } from './clampNodeModel';
  3. import { Nullable } from 'babylonjs/types';
  4. import { GlobalState } from '../../../globalState';
  5. import { PortHelper } from '../portHelper';
  6. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  7. export interface ClampNodeWidgetProps {
  8. node: Nullable<ClampNodeModel>;
  9. globalState: GlobalState;
  10. }
  11. export class ClampNodeWidget extends React.Component<ClampNodeWidgetProps> {
  12. constructor(props: ClampNodeWidgetProps) {
  13. super(props);
  14. this.state = {};
  15. if (this.props.node) {
  16. this.props.node.addListener({
  17. selectionChanged: () => {
  18. let selected = (this.props.node as any).selected;
  19. this.props.globalState.onSelectionChangedObservable.notifyObservers(selected ? this.props.node : null);
  20. }
  21. });
  22. }
  23. }
  24. renderValue(value: string) {
  25. if (value) {
  26. return (
  27. <div className="value-text">
  28. {value}
  29. </div>
  30. )
  31. }
  32. return null;
  33. }
  34. render() {
  35. var inputPorts = PortHelper.GenerateInputPorts(this.props.node, undefined, true);
  36. var outputPorts = PortHelper.GenerateOutputPorts(this.props.node, true);
  37. let clampBlock = this.props.node!.block! as ClampBlock;
  38. return (
  39. <div className={"diagramBlock clamp"}>
  40. <div className="header">
  41. {clampBlock.name}
  42. </div>
  43. <div className="inputs">
  44. {inputPorts}
  45. </div>
  46. <div className="outputs">
  47. {outputPorts}
  48. </div>
  49. <div className="value">
  50. {
  51. `[${clampBlock.minimum}, ${clampBlock.maximum}]`
  52. }
  53. </div>
  54. </div>
  55. );
  56. }
  57. }