babylon.nodeEditor.module.d.ts 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  1. /// <reference types="react" />
  2. declare module "babylonjs-node-editor/components/diagram/generic/genericPortModel" {
  3. import { LinkModel, PortModel } from "storm-react-diagrams";
  4. import { Nullable } from 'babylonjs/types';
  5. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  6. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  7. /**
  8. * Port model for the generic node
  9. */
  10. export class GenericPortModel extends PortModel {
  11. /**
  12. * If the port is input or output
  13. */
  14. position: string | "input" | "output";
  15. /**
  16. * What the port is connected to
  17. */
  18. connection: Nullable<NodeMaterialConnectionPoint>;
  19. static idCounter: number;
  20. constructor(name: string, type?: string);
  21. syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
  22. getNodeModel(): GenericNodeModel;
  23. link(outPort: GenericPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  24. getInputFromBlock(): void;
  25. createLinkModel(): LinkModel;
  26. getValue: Function;
  27. static SortInputOutput(a: Nullable<GenericPortModel>, b: Nullable<GenericPortModel>): {
  28. input: GenericPortModel;
  29. output: GenericPortModel;
  30. } | null;
  31. }
  32. }
  33. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
  34. import { NodeModel } from "storm-react-diagrams";
  35. import { Nullable } from 'babylonjs/types';
  36. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  37. import { Texture } from 'babylonjs/Materials/Textures/texture';
  38. import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
  39. import { GenericPortModel } from "babylonjs-node-editor/components/diagram/generic/genericPortModel";
  40. /**
  41. * Generic node model which stores information about a node editor block
  42. */
  43. export class GenericNodeModel extends NodeModel {
  44. /**
  45. * The babylon block this node represents
  46. */
  47. block: Nullable<NodeMaterialBlock>;
  48. /**
  49. * Labels for the block
  50. */
  51. headerLabels: Array<{
  52. text: string;
  53. }>;
  54. /**
  55. * Texture for the node if it exists
  56. */
  57. texture: Nullable<Texture>;
  58. /**
  59. * Vector2 for the node if it exists
  60. */
  61. vector2: Nullable<Vector2>;
  62. /**
  63. * Vector3 for the node if it exists
  64. */
  65. vector3: Nullable<Vector3>;
  66. /**
  67. * Vector4 for the node if it exists
  68. */
  69. vector4: Nullable<Vector4>;
  70. /**
  71. * Matrix for the node if it exists
  72. */
  73. matrix: Nullable<Matrix>;
  74. ports: {
  75. [s: string]: GenericPortModel;
  76. };
  77. /**
  78. * Constructs the node model
  79. */
  80. constructor();
  81. }
  82. }
  83. declare module "babylonjs-node-editor/globalState" {
  84. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  85. import { Nullable } from "babylonjs/types";
  86. import { Observable } from 'babylonjs/Misc/observable';
  87. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  88. export class GlobalState {
  89. nodeMaterial?: NodeMaterial;
  90. hostDocument?: Nullable<Document>;
  91. onSelectionChangedObservable: Observable<Nullable<GenericNodeModel>>;
  92. }
  93. }
  94. declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
  95. import * as React from "react";
  96. import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
  97. interface ITextureLineComponentProps {
  98. texture: BaseTexture;
  99. width: number;
  100. height: number;
  101. globalState?: any;
  102. hideChannelSelect?: boolean;
  103. }
  104. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  105. displayRed: boolean;
  106. displayGreen: boolean;
  107. displayBlue: boolean;
  108. displayAlpha: boolean;
  109. face: number;
  110. }> {
  111. constructor(props: ITextureLineComponentProps);
  112. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  113. displayRed: boolean;
  114. displayGreen: boolean;
  115. displayBlue: boolean;
  116. displayAlpha: boolean;
  117. face: number;
  118. }): boolean;
  119. componentDidMount(): void;
  120. componentDidUpdate(): void;
  121. updatePreview(): void;
  122. render(): JSX.Element;
  123. }
  124. }
  125. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeWidget" {
  126. import * as React from "react";
  127. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  128. import { Nullable } from 'babylonjs/types';
  129. import { GlobalState } from "babylonjs-node-editor/globalState";
  130. /**
  131. * GenericNodeWidgetProps
  132. */
  133. export interface GenericNodeWidgetProps {
  134. node: Nullable<GenericNodeModel>;
  135. globalState: GlobalState;
  136. }
  137. /**
  138. * GenericNodeWidgetState
  139. */
  140. export interface GenericNodeWidgetState {
  141. }
  142. /**
  143. * Used to display a node block for the node editor
  144. */
  145. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  146. /**
  147. * Creates a GenericNodeWidget
  148. * @param props
  149. */
  150. constructor(props: GenericNodeWidgetProps);
  151. render(): JSX.Element;
  152. }
  153. }
  154. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeFactory" {
  155. import * as SRD from "storm-react-diagrams";
  156. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  157. import { GlobalState } from "babylonjs-node-editor/globalState";
  158. /**
  159. * Node factory which creates editor nodes
  160. */
  161. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  162. private _globalState;
  163. /**
  164. * Constructs a GenericNodeFactory
  165. */
  166. constructor(globalState: GlobalState);
  167. /**
  168. * Generates a node widget
  169. * @param diagramEngine diagram engine
  170. * @param node node to generate
  171. * @returns node widget jsx
  172. */
  173. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  174. /**
  175. * Gets a new instance of a node model
  176. * @returns generic node model
  177. */
  178. getNewInstance(): GenericNodeModel;
  179. }
  180. }
  181. declare module "babylonjs-node-editor/sharedComponents/lineContainerComponent" {
  182. import * as React from "react";
  183. interface ILineContainerComponentProps {
  184. title: string;
  185. children: any[] | any;
  186. closed?: boolean;
  187. }
  188. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  189. isExpanded: boolean;
  190. }> {
  191. private static _InMemoryStorage;
  192. constructor(props: ILineContainerComponentProps);
  193. switchExpandedState(): void;
  194. renderHeader(): JSX.Element;
  195. render(): JSX.Element;
  196. }
  197. }
  198. declare module "babylonjs-node-editor/sharedComponents/buttonLineComponent" {
  199. import * as React from "react";
  200. export interface IButtonLineComponentProps {
  201. label: string;
  202. onClick: () => void;
  203. }
  204. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  205. constructor(props: IButtonLineComponentProps);
  206. render(): JSX.Element;
  207. }
  208. }
  209. declare module "babylonjs-node-editor/components/nodeList/nodeListComponent" {
  210. import * as React from "react";
  211. import { GlobalState } from "babylonjs-node-editor/globalState";
  212. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  213. interface INodeListComponentProps {
  214. globalState: GlobalState;
  215. onAddValueNode: (b: string) => void;
  216. onAddNodeFromClass: (ObjectClass: typeof NodeMaterialBlock) => void;
  217. }
  218. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  219. render(): JSX.Element;
  220. }
  221. }
  222. declare module "babylonjs-node-editor/sharedComponents/fileButtonLineComponent" {
  223. import * as React from "react";
  224. interface IFileButtonLineComponentProps {
  225. label: string;
  226. onClick: (file: File) => void;
  227. accept: string;
  228. }
  229. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  230. constructor(props: IFileButtonLineComponentProps);
  231. onChange(evt: any): void;
  232. render(): JSX.Element;
  233. }
  234. }
  235. declare module "babylonjs-node-editor/components/propertyTab/properties/texturePropertyTabComponent" {
  236. import * as React from "react";
  237. import { GlobalState } from "babylonjs-node-editor/globalState";
  238. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  239. interface ITexturePropertyTabComponentProps {
  240. globalState: GlobalState;
  241. node: GenericNodeModel;
  242. }
  243. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  244. /**
  245. * Replaces the texture of the node
  246. * @param file the file of the texture to use
  247. */
  248. replaceTexture(file: File): void;
  249. render(): JSX.Element;
  250. }
  251. }
  252. declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
  253. import * as React from "react";
  254. interface INumericInputComponentProps {
  255. label: string;
  256. value: number;
  257. step?: number;
  258. onChange: (value: number) => void;
  259. }
  260. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  261. value: string;
  262. }> {
  263. static defaultProps: {
  264. step: number;
  265. };
  266. private _localChange;
  267. constructor(props: INumericInputComponentProps);
  268. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  269. value: string;
  270. }): boolean;
  271. updateValue(evt: any): void;
  272. render(): JSX.Element;
  273. }
  274. }
  275. declare module "babylonjs-node-editor/sharedComponents/propertyChangedEvent" {
  276. export class PropertyChangedEvent {
  277. object: any;
  278. property: string;
  279. value: any;
  280. initialValue: any;
  281. }
  282. }
  283. declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
  284. import * as React from "react";
  285. import { Vector2 } from "babylonjs/Maths/math";
  286. import { Observable } from "babylonjs/Misc/observable";
  287. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  288. interface IVector2LineComponentProps {
  289. label: string;
  290. target: any;
  291. propertyName: string;
  292. step?: number;
  293. onChange?: (newvalue: Vector2) => void;
  294. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  295. }
  296. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  297. isExpanded: boolean;
  298. value: Vector2;
  299. }> {
  300. static defaultProps: {
  301. step: number;
  302. };
  303. private _localChange;
  304. constructor(props: IVector2LineComponentProps);
  305. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  306. isExpanded: boolean;
  307. value: Vector2;
  308. }): boolean;
  309. switchExpandState(): void;
  310. raiseOnPropertyChanged(previousValue: Vector2): void;
  311. updateStateX(value: number): void;
  312. updateStateY(value: number): void;
  313. render(): JSX.Element;
  314. }
  315. }
  316. declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
  317. import * as React from "react";
  318. import { GlobalState } from "babylonjs-node-editor/globalState";
  319. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  320. interface IVector2PropertyTabComponentProps {
  321. globalState: GlobalState;
  322. node: GenericNodeModel;
  323. }
  324. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  325. render(): JSX.Element;
  326. }
  327. }
  328. declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
  329. import * as React from "react";
  330. import { GlobalState } from "babylonjs-node-editor/globalState";
  331. import { Nullable } from 'babylonjs/types';
  332. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  333. interface IPropertyTabComponentProps {
  334. globalState: GlobalState;
  335. }
  336. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  337. currentNode: Nullable<GenericNodeModel>;
  338. }> {
  339. constructor(props: IPropertyTabComponentProps);
  340. componentWillMount(): void;
  341. render(): JSX.Element;
  342. }
  343. }
  344. declare module "babylonjs-node-editor/components/graphEditor" {
  345. import * as React from "react";
  346. import { GlobalState } from "babylonjs-node-editor/globalState";
  347. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  348. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  349. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  350. interface IGraphEditorProps {
  351. globalState: GlobalState;
  352. }
  353. export class GraphEditor extends React.Component<IGraphEditorProps> {
  354. private _engine;
  355. private _model;
  356. private _nodes;
  357. /**
  358. * Current row/column position used when adding new nodes
  359. */
  360. private _rowPos;
  361. /**
  362. * Creates a node and recursivly creates its parent nodes from it's input
  363. * @param nodeMaterialBlock
  364. */
  365. createNodeFromObject(options: {
  366. column: number;
  367. nodeMaterialBlock?: NodeMaterialBlock;
  368. }): GenericNodeModel;
  369. componentDidMount(): void;
  370. componentWillUnmount(): void;
  371. constructor(props: IGraphEditorProps);
  372. addNodeFromClass(ObjectClass: typeof NodeMaterialBlock): GenericNodeModel;
  373. addValueNode(type: string, column?: number, connection?: NodeMaterialConnectionPoint): GenericNodeModel;
  374. render(): JSX.Element;
  375. }
  376. }
  377. declare module "babylonjs-node-editor/sharedComponents/popup" {
  378. export class Popup {
  379. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  380. private static _CopyStyles;
  381. }
  382. }
  383. declare module "babylonjs-node-editor/nodeEditor" {
  384. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  385. /**
  386. * Interface used to specify creation options for the node editor
  387. */
  388. export interface INodeEditorOptions {
  389. /**
  390. * Defines the DOM element that will host the node editor
  391. */
  392. hostElement?: HTMLDivElement;
  393. nodeMaterial?: NodeMaterial;
  394. }
  395. /**
  396. * Class used to create a node editor
  397. */
  398. export class NodeEditor {
  399. /**
  400. * Show the node editor
  401. * @param options defines the options to use to configure the node editor
  402. */
  403. static Show(options: INodeEditorOptions): void;
  404. }
  405. }
  406. declare module "babylonjs-node-editor/index" {
  407. export * from "babylonjs-node-editor/nodeEditor";
  408. }
  409. declare module "babylonjs-node-editor/legacy/legacy" {
  410. export * from "babylonjs-node-editor/index";
  411. }
  412. declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
  413. import * as React from "react";
  414. import { Vector3 } from "babylonjs/Maths/math";
  415. import { Observable } from "babylonjs/Misc/observable";
  416. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  417. interface IVector3LineComponentProps {
  418. label: string;
  419. target: any;
  420. propertyName: string;
  421. step?: number;
  422. onChange?: (newvalue: Vector3) => void;
  423. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  424. }
  425. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  426. isExpanded: boolean;
  427. value: Vector3;
  428. }> {
  429. static defaultProps: {
  430. step: number;
  431. };
  432. private _localChange;
  433. constructor(props: IVector3LineComponentProps);
  434. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  435. isExpanded: boolean;
  436. value: Vector3;
  437. }): boolean;
  438. switchExpandState(): void;
  439. raiseOnPropertyChanged(previousValue: Vector3): void;
  440. updateVector3(): void;
  441. updateStateX(value: number): void;
  442. updateStateY(value: number): void;
  443. updateStateZ(value: number): void;
  444. render(): JSX.Element;
  445. }
  446. }
  447. declare module "babylonjs-node-editor" {
  448. export * from "babylonjs-node-editor/legacy/legacy";
  449. }
  450. /// <reference types="react" />
  451. declare module NODEEDITOR {
  452. /**
  453. * Port model for the generic node
  454. */
  455. export class GenericPortModel extends PortModel {
  456. /**
  457. * If the port is input or output
  458. */
  459. position: string | "input" | "output";
  460. /**
  461. * What the port is connected to
  462. */
  463. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  464. static idCounter: number;
  465. constructor(name: string, type?: string);
  466. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  467. getNodeModel(): GenericNodeModel;
  468. link(outPort: GenericPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  469. getInputFromBlock(): void;
  470. createLinkModel(): LinkModel;
  471. getValue: Function;
  472. static SortInputOutput(a: BABYLON.Nullable<GenericPortModel>, b: BABYLON.Nullable<GenericPortModel>): {
  473. input: GenericPortModel;
  474. output: GenericPortModel;
  475. } | null;
  476. }
  477. }
  478. declare module NODEEDITOR {
  479. /**
  480. * Generic node model which stores information about a node editor block
  481. */
  482. export class GenericNodeModel extends NodeModel {
  483. /**
  484. * The babylon block this node represents
  485. */
  486. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  487. /**
  488. * Labels for the block
  489. */
  490. headerLabels: Array<{
  491. text: string;
  492. }>;
  493. /**
  494. * BABYLON.Texture for the node if it exists
  495. */
  496. texture: BABYLON.Nullable<BABYLON.Texture>;
  497. /**
  498. * BABYLON.Vector2 for the node if it exists
  499. */
  500. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  501. /**
  502. * BABYLON.Vector3 for the node if it exists
  503. */
  504. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  505. /**
  506. * BABYLON.Vector4 for the node if it exists
  507. */
  508. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  509. /**
  510. * BABYLON.Matrix for the node if it exists
  511. */
  512. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  513. ports: {
  514. [s: string]: GenericPortModel;
  515. };
  516. /**
  517. * Constructs the node model
  518. */
  519. constructor();
  520. }
  521. }
  522. declare module NODEEDITOR {
  523. export class GlobalState {
  524. nodeMaterial?: BABYLON.NodeMaterial;
  525. hostDocument?: BABYLON.Nullable<Document>;
  526. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<GenericNodeModel>>;
  527. }
  528. }
  529. declare module NODEEDITOR {
  530. interface ITextureLineComponentProps {
  531. texture: BABYLON.BaseTexture;
  532. width: number;
  533. height: number;
  534. globalState?: any;
  535. hideChannelSelect?: boolean;
  536. }
  537. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  538. displayRed: boolean;
  539. displayGreen: boolean;
  540. displayBlue: boolean;
  541. displayAlpha: boolean;
  542. face: number;
  543. }> {
  544. constructor(props: ITextureLineComponentProps);
  545. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  546. displayRed: boolean;
  547. displayGreen: boolean;
  548. displayBlue: boolean;
  549. displayAlpha: boolean;
  550. face: number;
  551. }): boolean;
  552. componentDidMount(): void;
  553. componentDidUpdate(): void;
  554. updatePreview(): void;
  555. render(): JSX.Element;
  556. }
  557. }
  558. declare module NODEEDITOR {
  559. /**
  560. * GenericNodeWidgetProps
  561. */
  562. export interface GenericNodeWidgetProps {
  563. node: BABYLON.Nullable<GenericNodeModel>;
  564. globalState: GlobalState;
  565. }
  566. /**
  567. * GenericNodeWidgetState
  568. */
  569. export interface GenericNodeWidgetState {
  570. }
  571. /**
  572. * Used to display a node block for the node editor
  573. */
  574. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  575. /**
  576. * Creates a GenericNodeWidget
  577. * @param props
  578. */
  579. constructor(props: GenericNodeWidgetProps);
  580. render(): JSX.Element;
  581. }
  582. }
  583. declare module NODEEDITOR {
  584. /**
  585. * Node factory which creates editor nodes
  586. */
  587. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  588. private _globalState;
  589. /**
  590. * Constructs a GenericNodeFactory
  591. */
  592. constructor(globalState: GlobalState);
  593. /**
  594. * Generates a node widget
  595. * @param diagramEngine diagram engine
  596. * @param node node to generate
  597. * @returns node widget jsx
  598. */
  599. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  600. /**
  601. * Gets a new instance of a node model
  602. * @returns generic node model
  603. */
  604. getNewInstance(): GenericNodeModel;
  605. }
  606. }
  607. declare module NODEEDITOR {
  608. interface ILineContainerComponentProps {
  609. title: string;
  610. children: any[] | any;
  611. closed?: boolean;
  612. }
  613. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  614. isExpanded: boolean;
  615. }> {
  616. private static _InMemoryStorage;
  617. constructor(props: ILineContainerComponentProps);
  618. switchExpandedState(): void;
  619. renderHeader(): JSX.Element;
  620. render(): JSX.Element;
  621. }
  622. }
  623. declare module NODEEDITOR {
  624. export interface IButtonLineComponentProps {
  625. label: string;
  626. onClick: () => void;
  627. }
  628. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  629. constructor(props: IButtonLineComponentProps);
  630. render(): JSX.Element;
  631. }
  632. }
  633. declare module NODEEDITOR {
  634. interface INodeListComponentProps {
  635. globalState: GlobalState;
  636. onAddValueNode: (b: string) => void;
  637. onAddNodeFromClass: (ObjectClass: typeof BABYLON.NodeMaterialBlock) => void;
  638. }
  639. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  640. render(): JSX.Element;
  641. }
  642. }
  643. declare module NODEEDITOR {
  644. interface IFileButtonLineComponentProps {
  645. label: string;
  646. onClick: (file: File) => void;
  647. accept: string;
  648. }
  649. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  650. constructor(props: IFileButtonLineComponentProps);
  651. onChange(evt: any): void;
  652. render(): JSX.Element;
  653. }
  654. }
  655. declare module NODEEDITOR {
  656. interface ITexturePropertyTabComponentProps {
  657. globalState: GlobalState;
  658. node: GenericNodeModel;
  659. }
  660. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  661. /**
  662. * Replaces the texture of the node
  663. * @param file the file of the texture to use
  664. */
  665. replaceTexture(file: File): void;
  666. render(): JSX.Element;
  667. }
  668. }
  669. declare module NODEEDITOR {
  670. interface INumericInputComponentProps {
  671. label: string;
  672. value: number;
  673. step?: number;
  674. onChange: (value: number) => void;
  675. }
  676. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  677. value: string;
  678. }> {
  679. static defaultProps: {
  680. step: number;
  681. };
  682. private _localChange;
  683. constructor(props: INumericInputComponentProps);
  684. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  685. value: string;
  686. }): boolean;
  687. updateValue(evt: any): void;
  688. render(): JSX.Element;
  689. }
  690. }
  691. declare module NODEEDITOR {
  692. export class PropertyChangedEvent {
  693. object: any;
  694. property: string;
  695. value: any;
  696. initialValue: any;
  697. }
  698. }
  699. declare module NODEEDITOR {
  700. interface IVector2LineComponentProps {
  701. label: string;
  702. target: any;
  703. propertyName: string;
  704. step?: number;
  705. onChange?: (newvalue: BABYLON.Vector2) => void;
  706. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  707. }
  708. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  709. isExpanded: boolean;
  710. value: BABYLON.Vector2;
  711. }> {
  712. static defaultProps: {
  713. step: number;
  714. };
  715. private _localChange;
  716. constructor(props: IVector2LineComponentProps);
  717. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  718. isExpanded: boolean;
  719. value: BABYLON.Vector2;
  720. }): boolean;
  721. switchExpandState(): void;
  722. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  723. updateStateX(value: number): void;
  724. updateStateY(value: number): void;
  725. render(): JSX.Element;
  726. }
  727. }
  728. declare module NODEEDITOR {
  729. interface IVector2PropertyTabComponentProps {
  730. globalState: GlobalState;
  731. node: GenericNodeModel;
  732. }
  733. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  734. render(): JSX.Element;
  735. }
  736. }
  737. declare module NODEEDITOR {
  738. interface IPropertyTabComponentProps {
  739. globalState: GlobalState;
  740. }
  741. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  742. currentNode: BABYLON.Nullable<GenericNodeModel>;
  743. }> {
  744. constructor(props: IPropertyTabComponentProps);
  745. componentWillMount(): void;
  746. render(): JSX.Element;
  747. }
  748. }
  749. declare module NODEEDITOR {
  750. interface IGraphEditorProps {
  751. globalState: GlobalState;
  752. }
  753. export class GraphEditor extends React.Component<IGraphEditorProps> {
  754. private _engine;
  755. private _model;
  756. private _nodes;
  757. /**
  758. * Current row/column position used when adding new nodes
  759. */
  760. private _rowPos;
  761. /**
  762. * Creates a node and recursivly creates its parent nodes from it's input
  763. * @param nodeMaterialBlock
  764. */
  765. createNodeFromObject(options: {
  766. column: number;
  767. nodeMaterialBlock?: BABYLON.NodeMaterialBlock;
  768. }): GenericNodeModel;
  769. componentDidMount(): void;
  770. componentWillUnmount(): void;
  771. constructor(props: IGraphEditorProps);
  772. addNodeFromClass(ObjectClass: typeof BABYLON.NodeMaterialBlock): GenericNodeModel;
  773. addValueNode(type: string, column?: number, connection?: BABYLON.NodeMaterialConnectionPoint): GenericNodeModel;
  774. render(): JSX.Element;
  775. }
  776. }
  777. declare module NODEEDITOR {
  778. export class Popup {
  779. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  780. private static _CopyStyles;
  781. }
  782. }
  783. declare module NODEEDITOR {
  784. /**
  785. * Interface used to specify creation options for the node editor
  786. */
  787. export interface INodeEditorOptions {
  788. /**
  789. * Defines the DOM element that will host the node editor
  790. */
  791. hostElement?: HTMLDivElement;
  792. nodeMaterial?: BABYLON.NodeMaterial;
  793. }
  794. /**
  795. * Class used to create a node editor
  796. */
  797. export class NodeEditor {
  798. /**
  799. * Show the node editor
  800. * @param options defines the options to use to configure the node editor
  801. */
  802. static Show(options: INodeEditorOptions): void;
  803. }
  804. }
  805. declare module NODEEDITOR {
  806. interface IVector3LineComponentProps {
  807. label: string;
  808. target: any;
  809. propertyName: string;
  810. step?: number;
  811. onChange?: (newvalue: BABYLON.Vector3) => void;
  812. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  813. }
  814. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  815. isExpanded: boolean;
  816. value: BABYLON.Vector3;
  817. }> {
  818. static defaultProps: {
  819. step: number;
  820. };
  821. private _localChange;
  822. constructor(props: IVector3LineComponentProps);
  823. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  824. isExpanded: boolean;
  825. value: BABYLON.Vector3;
  826. }): boolean;
  827. switchExpandState(): void;
  828. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  829. updateVector3(): void;
  830. updateStateX(value: number): void;
  831. updateStateY(value: number): void;
  832. updateStateZ(value: number): void;
  833. render(): JSX.Element;
  834. }
  835. }