12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import * as React from "react";
- import { TextureNodeModel } from './textureNodeModel';
- import { TextureLineComponent } from "../../../sharedComponents/textureLineComponent"
- import { Nullable } from 'babylonjs/types';
- import { GlobalState } from '../../../globalState';
- import { PortHelper } from '../portHelper';
- /**
- * GenericNodeWidgetProps
- */
- export interface ITextureNodeWidgetProps {
- node: Nullable<TextureNodeModel>;
- globalState: GlobalState;
- }
- /**
- * Used to display a node block for the node editor
- */
- export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
- /**
- * Creates a GenericNodeWidget
- * @param props
- */
- constructor(props: ITextureNodeWidgetProps) {
- super(props);
- this.state = {};
- if (this.props.node) {
- this.props.node.addListener({
- selectionChanged: () => {
- let selected = (this.props.node as any).selected;
- this.props.globalState.onSelectionChangedObservable.notifyObservers(selected ? this.props.node : null);
- }
- });
- }
- }
- render() {
- // Input/Output ports
- var outputPorts = PortHelper.GenerateOutputPorts(this.props.node, false);
- var inputPorts = PortHelper.GenerateInputPorts(this.props.node, ["uv"]);
- return (
- <div className={"diagramBlock"}>
- <div className="header">
- {this.props.node!.block!.name}
- </div>
- <div className="inputs">
- {inputPorts}
- </div>
- <div className="outputs">
- {outputPorts}
- </div>
- {
- this.props.node && this.props.node.texture &&
- <TextureLineComponent ref="textureView" width={200} height={180} texture={this.props.node.texture} hideChannelSelect={true} />
- }
- </div>
- );
- }
- }
|