babylon.nodeEditor.d.ts 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  1. /// <reference types="react" />
  2. declare module NODEEDITOR {
  3. /**
  4. * Port model
  5. */
  6. export class DefaultPortModel extends PortModel {
  7. /**
  8. * If the port is input or output
  9. */
  10. position: string | "input" | "output";
  11. /**
  12. * What the port is connected to
  13. */
  14. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  15. defaultValue: any;
  16. static idCounter: number;
  17. constructor(name: string, type?: string);
  18. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  19. getNodeModel(): DefaultNodeModel;
  20. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  21. createLinkModel(): LinkModel;
  22. static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
  23. input: DefaultPortModel;
  24. output: DefaultPortModel;
  25. } | null;
  26. }
  27. }
  28. declare module NODEEDITOR {
  29. interface ITextLineComponentProps {
  30. label: string;
  31. value: string;
  32. color?: string;
  33. underline?: boolean;
  34. onLink?: () => void;
  35. }
  36. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  37. constructor(props: ITextLineComponentProps);
  38. onLink(): void;
  39. renderContent(): JSX.Element;
  40. render(): JSX.Element;
  41. }
  42. }
  43. declare module NODEEDITOR {
  44. interface ILineContainerComponentProps {
  45. title: string;
  46. children: any[] | any;
  47. closed?: boolean;
  48. }
  49. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  50. isExpanded: boolean;
  51. }> {
  52. private static _InMemoryStorage;
  53. constructor(props: ILineContainerComponentProps);
  54. switchExpandedState(): void;
  55. renderHeader(): JSX.Element;
  56. render(): JSX.Element;
  57. }
  58. }
  59. declare module NODEEDITOR {
  60. export class PropertyChangedEvent {
  61. object: any;
  62. property: string;
  63. value: any;
  64. initialValue: any;
  65. }
  66. }
  67. declare module NODEEDITOR {
  68. interface ITextInputLineComponentProps {
  69. label: string;
  70. target?: any;
  71. propertyName?: string;
  72. value?: string;
  73. onChange?: (value: string) => void;
  74. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  75. }
  76. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  77. value: string;
  78. }> {
  79. private _localChange;
  80. constructor(props: ITextInputLineComponentProps);
  81. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  82. value: string;
  83. }): boolean;
  84. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  85. updateValue(value: string): void;
  86. render(): JSX.Element;
  87. }
  88. }
  89. declare module NODEEDITOR {
  90. /**
  91. * Generic node model which stores information about a node editor block
  92. */
  93. export class GenericNodeModel extends DefaultNodeModel {
  94. /**
  95. * BABYLON.Vector2 for the node if it exists
  96. */
  97. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  98. /**
  99. * BABYLON.Vector3 for the node if it exists
  100. */
  101. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  102. /**
  103. * BABYLON.Vector4 for the node if it exists
  104. */
  105. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  106. /**
  107. * BABYLON.Matrix for the node if it exists
  108. */
  109. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  110. /**
  111. * Constructs the node model
  112. */
  113. constructor();
  114. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  115. renderProperties(globalState: GlobalState): JSX.Element;
  116. }
  117. }
  118. declare module NODEEDITOR {
  119. /**
  120. * GenericNodeWidgetProps
  121. */
  122. export interface GenericNodeWidgetProps {
  123. node: BABYLON.Nullable<GenericNodeModel>;
  124. globalState: GlobalState;
  125. }
  126. /**
  127. * GenericNodeWidgetState
  128. */
  129. export interface GenericNodeWidgetState {
  130. }
  131. /**
  132. * Used to display a node block for the node editor
  133. */
  134. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  135. /**
  136. * Creates a GenericNodeWidget
  137. * @param props
  138. */
  139. constructor(props: GenericNodeWidgetProps);
  140. render(): JSX.Element;
  141. }
  142. }
  143. declare module NODEEDITOR {
  144. /**
  145. * Node factory which creates editor nodes
  146. */
  147. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  148. private _globalState;
  149. /**
  150. * Constructs a GenericNodeFactory
  151. */
  152. constructor(globalState: GlobalState);
  153. /**
  154. * Generates a node widget
  155. * @param diagramEngine diagram engine
  156. * @param node node to generate
  157. * @returns node widget jsx
  158. */
  159. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  160. /**
  161. * Gets a new instance of a node model
  162. * @returns generic node model
  163. */
  164. getNewInstance(): GenericNodeModel;
  165. }
  166. }
  167. declare module NODEEDITOR {
  168. export interface IButtonLineComponentProps {
  169. label: string;
  170. onClick: () => void;
  171. }
  172. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  173. constructor(props: IButtonLineComponentProps);
  174. render(): JSX.Element;
  175. }
  176. }
  177. declare module NODEEDITOR {
  178. interface INodeListComponentProps {
  179. globalState: GlobalState;
  180. onAddValueNode: (b: string) => void;
  181. onAddNodeFromClass: (ObjectClass: typeof BABYLON.NodeMaterialBlock) => void;
  182. }
  183. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  184. render(): JSX.Element;
  185. }
  186. }
  187. declare module NODEEDITOR {
  188. interface IPropertyTabComponentProps {
  189. globalState: GlobalState;
  190. }
  191. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  192. currentNode: BABYLON.Nullable<DefaultNodeModel>;
  193. }> {
  194. constructor(props: IPropertyTabComponentProps);
  195. componentWillMount(): void;
  196. render(): JSX.Element;
  197. }
  198. }
  199. declare module NODEEDITOR {
  200. interface IPortalProps {
  201. globalState: GlobalState;
  202. }
  203. export class Portal extends React.Component<IPortalProps> {
  204. render(): React.ReactPortal;
  205. }
  206. }
  207. declare module NODEEDITOR {
  208. interface IFileButtonLineComponentProps {
  209. label: string;
  210. onClick: (file: File) => void;
  211. accept: string;
  212. }
  213. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  214. constructor(props: IFileButtonLineComponentProps);
  215. onChange(evt: any): void;
  216. render(): JSX.Element;
  217. }
  218. }
  219. declare module NODEEDITOR {
  220. interface ITexturePropertyTabComponentProps {
  221. globalState: GlobalState;
  222. node: TextureNodeModel;
  223. }
  224. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  225. /**
  226. * Replaces the texture of the node
  227. * @param file the file of the texture to use
  228. */
  229. replaceTexture(file: File): void;
  230. render(): JSX.Element;
  231. }
  232. }
  233. declare module NODEEDITOR {
  234. /**
  235. * BABYLON.Texture node model which stores information about a node editor block
  236. */
  237. export class TextureNodeModel extends DefaultNodeModel {
  238. private _block;
  239. /**
  240. * BABYLON.Texture for the node if it exists
  241. */
  242. texture: BABYLON.Nullable<BABYLON.Texture>;
  243. /**
  244. * Constructs the node model
  245. */
  246. constructor();
  247. renderProperties(globalState: GlobalState): JSX.Element;
  248. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  249. }
  250. }
  251. declare module NODEEDITOR {
  252. interface ITextureLineComponentProps {
  253. texture: BABYLON.BaseTexture;
  254. width: number;
  255. height: number;
  256. globalState?: any;
  257. hideChannelSelect?: boolean;
  258. }
  259. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  260. displayRed: boolean;
  261. displayGreen: boolean;
  262. displayBlue: boolean;
  263. displayAlpha: boolean;
  264. face: number;
  265. }> {
  266. constructor(props: ITextureLineComponentProps);
  267. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  268. displayRed: boolean;
  269. displayGreen: boolean;
  270. displayBlue: boolean;
  271. displayAlpha: boolean;
  272. face: number;
  273. }): boolean;
  274. componentDidMount(): void;
  275. componentDidUpdate(): void;
  276. updatePreview(): void;
  277. render(): JSX.Element;
  278. }
  279. }
  280. declare module NODEEDITOR {
  281. /**
  282. * GenericNodeWidgetProps
  283. */
  284. export interface TextureNodeWidgetProps {
  285. node: BABYLON.Nullable<TextureNodeModel>;
  286. globalState: GlobalState;
  287. }
  288. /**
  289. * Used to display a node block for the node editor
  290. */
  291. export class TextureNodeWidget extends React.Component<TextureNodeWidgetProps> {
  292. /**
  293. * Creates a GenericNodeWidget
  294. * @param props
  295. */
  296. constructor(props: TextureNodeWidgetProps);
  297. render(): JSX.Element;
  298. }
  299. }
  300. declare module NODEEDITOR {
  301. /**
  302. * Node factory which creates editor nodes
  303. */
  304. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  305. private _globalState;
  306. /**
  307. * Constructs a TextureNodeFactory
  308. */
  309. constructor(globalState: GlobalState);
  310. /**
  311. * Generates a node widget
  312. * @param diagramEngine diagram engine
  313. * @param node node to generate
  314. * @returns node widget jsx
  315. */
  316. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  317. /**
  318. * Gets a new instance of a node model
  319. * @returns texture node model
  320. */
  321. getNewInstance(): TextureNodeModel;
  322. }
  323. }
  324. declare module NODEEDITOR {
  325. interface INumericInputComponentProps {
  326. label: string;
  327. value: number;
  328. step?: number;
  329. onChange: (value: number) => void;
  330. }
  331. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  332. value: string;
  333. }> {
  334. static defaultProps: {
  335. step: number;
  336. };
  337. private _localChange;
  338. constructor(props: INumericInputComponentProps);
  339. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  340. value: string;
  341. }): boolean;
  342. updateValue(evt: any): void;
  343. render(): JSX.Element;
  344. }
  345. }
  346. declare module NODEEDITOR {
  347. interface IVector2LineComponentProps {
  348. label: string;
  349. target: any;
  350. propertyName: string;
  351. step?: number;
  352. onChange?: (newvalue: BABYLON.Vector2) => void;
  353. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  354. }
  355. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  356. isExpanded: boolean;
  357. value: BABYLON.Vector2;
  358. }> {
  359. static defaultProps: {
  360. step: number;
  361. };
  362. private _localChange;
  363. constructor(props: IVector2LineComponentProps);
  364. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  365. isExpanded: boolean;
  366. value: BABYLON.Vector2;
  367. }): boolean;
  368. switchExpandState(): void;
  369. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  370. updateStateX(value: number): void;
  371. updateStateY(value: number): void;
  372. render(): JSX.Element;
  373. }
  374. }
  375. declare module NODEEDITOR {
  376. interface IVector2PropertyTabComponentProps {
  377. globalState: GlobalState;
  378. connection: BABYLON.NodeMaterialConnectionPoint;
  379. }
  380. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  381. render(): JSX.Element;
  382. }
  383. }
  384. declare module NODEEDITOR {
  385. interface IVector3LineComponentProps {
  386. label: string;
  387. target: any;
  388. propertyName: string;
  389. step?: number;
  390. onChange?: (newvalue: BABYLON.Vector3) => void;
  391. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  392. }
  393. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  394. isExpanded: boolean;
  395. value: BABYLON.Vector3;
  396. }> {
  397. static defaultProps: {
  398. step: number;
  399. };
  400. private _localChange;
  401. constructor(props: IVector3LineComponentProps);
  402. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  403. isExpanded: boolean;
  404. value: BABYLON.Vector3;
  405. }): boolean;
  406. switchExpandState(): void;
  407. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  408. updateVector3(): void;
  409. updateStateX(value: number): void;
  410. updateStateY(value: number): void;
  411. updateStateZ(value: number): void;
  412. render(): JSX.Element;
  413. }
  414. }
  415. declare module NODEEDITOR {
  416. interface IVector3PropertyTabComponentProps {
  417. globalState: GlobalState;
  418. connection: BABYLON.NodeMaterialConnectionPoint;
  419. }
  420. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  421. render(): JSX.Element;
  422. }
  423. }
  424. declare module NODEEDITOR {
  425. export interface ICheckBoxLineComponentProps {
  426. label: string;
  427. target?: any;
  428. propertyName?: string;
  429. isSelected?: () => boolean;
  430. onSelect?: (value: boolean) => void;
  431. onValueChanged?: () => void;
  432. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  433. }
  434. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  435. isSelected: boolean;
  436. }> {
  437. private static _UniqueIdSeed;
  438. private _uniqueId;
  439. private _localChange;
  440. constructor(props: ICheckBoxLineComponentProps);
  441. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  442. isSelected: boolean;
  443. }): boolean;
  444. onChange(): void;
  445. render(): JSX.Element;
  446. }
  447. }
  448. declare module NODEEDITOR {
  449. class ListLineOption {
  450. label: string;
  451. value: number | string;
  452. }
  453. interface IOptionsLineComponentProps {
  454. label: string;
  455. target: any;
  456. propertyName: string;
  457. options: ListLineOption[];
  458. noDirectUpdate?: boolean;
  459. onSelect?: (value: number | string) => void;
  460. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  461. valuesAreStrings?: boolean;
  462. }
  463. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  464. value: number | string;
  465. }> {
  466. private _localChange;
  467. constructor(props: IOptionsLineComponentProps);
  468. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  469. value: number;
  470. }): boolean;
  471. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  472. updateValue(valueString: string): void;
  473. render(): JSX.Element;
  474. }
  475. }
  476. declare module NODEEDITOR {
  477. export interface IColor3LineComponentProps {
  478. label: string;
  479. target: any;
  480. propertyName: string;
  481. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  482. }
  483. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  484. isExpanded: boolean;
  485. color: BABYLON.Color3;
  486. }> {
  487. private _localChange;
  488. constructor(props: IColor3LineComponentProps);
  489. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  490. color: BABYLON.Color3;
  491. }): boolean;
  492. onChange(newValue: string): void;
  493. switchExpandState(): void;
  494. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  495. updateStateR(value: number): void;
  496. updateStateG(value: number): void;
  497. updateStateB(value: number): void;
  498. copyToClipboard(): void;
  499. render(): JSX.Element;
  500. }
  501. }
  502. declare module NODEEDITOR {
  503. interface IColor3PropertyTabComponentProps {
  504. globalState: GlobalState;
  505. connection: BABYLON.NodeMaterialConnectionPoint;
  506. }
  507. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  508. render(): JSX.Element;
  509. }
  510. }
  511. declare module NODEEDITOR {
  512. interface IFloatLineComponentProps {
  513. label: string;
  514. target: any;
  515. propertyName: string;
  516. onChange?: (newValue: number) => void;
  517. isInteger?: boolean;
  518. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  519. additionalClass?: string;
  520. step?: string;
  521. digits?: number;
  522. }
  523. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  524. value: string;
  525. }> {
  526. private _localChange;
  527. private _store;
  528. constructor(props: IFloatLineComponentProps);
  529. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  530. value: string;
  531. }): boolean;
  532. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  533. updateValue(valueString: string): void;
  534. render(): JSX.Element;
  535. }
  536. }
  537. declare module NODEEDITOR {
  538. interface IFloatPropertyTabComponentProps {
  539. globalState: GlobalState;
  540. connection: BABYLON.NodeMaterialConnectionPoint;
  541. }
  542. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  543. render(): JSX.Element;
  544. }
  545. }
  546. declare module NODEEDITOR {
  547. interface IInputPropertyTabComponentProps {
  548. globalState: GlobalState;
  549. inputNode: InputNodeModel;
  550. }
  551. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  552. constructor(props: IInputPropertyTabComponentProps);
  553. renderValue(globalState: GlobalState): JSX.Element | null;
  554. setDefaultValue(): void;
  555. render(): JSX.Element;
  556. }
  557. }
  558. declare module NODEEDITOR {
  559. /**
  560. * Generic node model which stores information about a node editor block
  561. */
  562. export class InputNodeModel extends DefaultNodeModel {
  563. connection?: BABYLON.NodeMaterialConnectionPoint;
  564. /**
  565. * Constructs the node model
  566. */
  567. constructor();
  568. renderProperties(globalState: GlobalState): JSX.Element | null;
  569. }
  570. }
  571. declare module NODEEDITOR {
  572. /**
  573. * GenericNodeWidgetProps
  574. */
  575. export interface InputNodeWidgetProps {
  576. node: BABYLON.Nullable<InputNodeModel>;
  577. globalState: GlobalState;
  578. }
  579. /**
  580. * Used to display a node block for the node editor
  581. */
  582. export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
  583. /**
  584. * Creates a GenericNodeWidget
  585. * @param props
  586. */
  587. constructor(props: InputNodeWidgetProps);
  588. render(): JSX.Element;
  589. }
  590. }
  591. declare module NODEEDITOR {
  592. /**
  593. * Node factory which creates editor nodes
  594. */
  595. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  596. private _globalState;
  597. /**
  598. * Constructs a GenericNodeFactory
  599. */
  600. constructor(globalState: GlobalState);
  601. /**
  602. * Generates a node widget
  603. * @param diagramEngine diagram engine
  604. * @param node node to generate
  605. * @returns node widget jsx
  606. */
  607. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  608. /**
  609. * Gets a new instance of a node model
  610. * @returns input node model
  611. */
  612. getNewInstance(): InputNodeModel;
  613. }
  614. }
  615. declare module NODEEDITOR {
  616. interface ILogComponentProps {
  617. globalState: GlobalState;
  618. }
  619. export class LogComponent extends React.Component<ILogComponentProps, {
  620. logs: string[];
  621. }> {
  622. constructor(props: ILogComponentProps);
  623. componentWillMount(): void;
  624. componentDidUpdate(): void;
  625. render(): JSX.Element;
  626. }
  627. }
  628. declare module NODEEDITOR {
  629. interface IGraphEditorProps {
  630. globalState: GlobalState;
  631. }
  632. export class NodeCreationOptions {
  633. column: number;
  634. nodeMaterialBlock?: BABYLON.NodeMaterialBlock;
  635. type?: string;
  636. connection?: BABYLON.NodeMaterialConnectionPoint;
  637. }
  638. export class GraphEditor extends React.Component<IGraphEditorProps> {
  639. private _engine;
  640. private _model;
  641. private _nodes;
  642. /** @hidden */
  643. _toAdd: LinkModel[] | null;
  644. /**
  645. * Current row/column position used when adding new nodes
  646. */
  647. private _rowPos;
  648. /**
  649. * Creates a node and recursivly creates its parent nodes from it's input
  650. * @param nodeMaterialBlock
  651. */
  652. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  653. componentDidMount(): void;
  654. componentWillUnmount(): void;
  655. constructor(props: IGraphEditorProps);
  656. buildMaterial(): void;
  657. build(): void;
  658. addNodeFromClass(ObjectClass: typeof BABYLON.NodeMaterialBlock): DefaultNodeModel;
  659. addValueNode(type: string, column?: number, connection?: BABYLON.NodeMaterialConnectionPoint): DefaultNodeModel;
  660. render(): JSX.Element;
  661. }
  662. }
  663. declare module NODEEDITOR {
  664. /**
  665. * Generic node model which stores information about a node editor block
  666. */
  667. export class DefaultNodeModel extends NodeModel {
  668. /**
  669. * The babylon block this node represents
  670. */
  671. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  672. ports: {
  673. [s: string]: DefaultPortModel;
  674. };
  675. /**
  676. * Constructs the node model
  677. */
  678. constructor(key: string);
  679. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  680. renderProperties(globalState: GlobalState): JSX.Element | null;
  681. }
  682. }
  683. declare module NODEEDITOR {
  684. export class GlobalState {
  685. nodeMaterial?: BABYLON.NodeMaterial;
  686. hostElement: HTMLElement;
  687. hostDocument: HTMLDocument;
  688. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
  689. onRebuildRequiredObservable: BABYLON.Observable<void>;
  690. onResetRequiredObservable: BABYLON.Observable<void>;
  691. onUpdateRequiredObservable: BABYLON.Observable<void>;
  692. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  693. onLogRequiredObservable: BABYLON.Observable<string>;
  694. }
  695. }
  696. declare module NODEEDITOR {
  697. export class Popup {
  698. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  699. private static _CopyStyles;
  700. }
  701. }
  702. declare module NODEEDITOR {
  703. /**
  704. * Interface used to specify creation options for the node editor
  705. */
  706. export interface INodeEditorOptions {
  707. nodeMaterial: BABYLON.NodeMaterial;
  708. }
  709. /**
  710. * Class used to create a node editor
  711. */
  712. export class NodeEditor {
  713. /**
  714. * Show the node editor
  715. * @param options defines the options to use to configure the node editor
  716. */
  717. static Show(options: INodeEditorOptions): void;
  718. }
  719. }