babylon.nodeEditor.module.d.ts 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  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/sharedComponents/vector3LineComponent" {
  329. import * as React from "react";
  330. import { Vector3 } from "babylonjs/Maths/math";
  331. import { Observable } from "babylonjs/Misc/observable";
  332. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  333. interface IVector3LineComponentProps {
  334. label: string;
  335. target: any;
  336. propertyName: string;
  337. step?: number;
  338. onChange?: (newvalue: Vector3) => void;
  339. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  340. }
  341. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  342. isExpanded: boolean;
  343. value: Vector3;
  344. }> {
  345. static defaultProps: {
  346. step: number;
  347. };
  348. private _localChange;
  349. constructor(props: IVector3LineComponentProps);
  350. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  351. isExpanded: boolean;
  352. value: Vector3;
  353. }): boolean;
  354. switchExpandState(): void;
  355. raiseOnPropertyChanged(previousValue: Vector3): void;
  356. updateVector3(): void;
  357. updateStateX(value: number): void;
  358. updateStateY(value: number): void;
  359. updateStateZ(value: number): void;
  360. render(): JSX.Element;
  361. }
  362. }
  363. declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
  364. import * as React from "react";
  365. import { GlobalState } from "babylonjs-node-editor/globalState";
  366. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  367. interface IVector3PropertyTabComponentProps {
  368. globalState: GlobalState;
  369. node: GenericNodeModel;
  370. }
  371. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  372. render(): JSX.Element;
  373. }
  374. }
  375. declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
  376. import * as React from "react";
  377. import { GlobalState } from "babylonjs-node-editor/globalState";
  378. import { Nullable } from 'babylonjs/types';
  379. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  380. interface IPropertyTabComponentProps {
  381. globalState: GlobalState;
  382. }
  383. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  384. currentNode: Nullable<GenericNodeModel>;
  385. }> {
  386. constructor(props: IPropertyTabComponentProps);
  387. componentWillMount(): void;
  388. render(): JSX.Element;
  389. }
  390. }
  391. declare module "babylonjs-node-editor/components/graphEditor" {
  392. import * as React from "react";
  393. import { GlobalState } from "babylonjs-node-editor/globalState";
  394. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  395. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  396. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  397. interface IGraphEditorProps {
  398. globalState: GlobalState;
  399. }
  400. export class GraphEditor extends React.Component<IGraphEditorProps> {
  401. private _engine;
  402. private _model;
  403. private _nodes;
  404. /**
  405. * Current row/column position used when adding new nodes
  406. */
  407. private _rowPos;
  408. /**
  409. * Creates a node and recursivly creates its parent nodes from it's input
  410. * @param nodeMaterialBlock
  411. */
  412. createNodeFromObject(options: {
  413. column: number;
  414. nodeMaterialBlock?: NodeMaterialBlock;
  415. }): GenericNodeModel;
  416. componentDidMount(): void;
  417. componentWillUnmount(): void;
  418. constructor(props: IGraphEditorProps);
  419. addNodeFromClass(ObjectClass: typeof NodeMaterialBlock): GenericNodeModel;
  420. addValueNode(type: string, column?: number, connection?: NodeMaterialConnectionPoint): GenericNodeModel;
  421. render(): JSX.Element;
  422. }
  423. }
  424. declare module "babylonjs-node-editor/sharedComponents/popup" {
  425. export class Popup {
  426. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  427. private static _CopyStyles;
  428. }
  429. }
  430. declare module "babylonjs-node-editor/nodeEditor" {
  431. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  432. /**
  433. * Interface used to specify creation options for the node editor
  434. */
  435. export interface INodeEditorOptions {
  436. /**
  437. * Defines the DOM element that will host the node editor
  438. */
  439. hostElement?: HTMLDivElement;
  440. nodeMaterial?: NodeMaterial;
  441. }
  442. /**
  443. * Class used to create a node editor
  444. */
  445. export class NodeEditor {
  446. /**
  447. * Show the node editor
  448. * @param options defines the options to use to configure the node editor
  449. */
  450. static Show(options: INodeEditorOptions): void;
  451. }
  452. }
  453. declare module "babylonjs-node-editor/index" {
  454. export * from "babylonjs-node-editor/nodeEditor";
  455. }
  456. declare module "babylonjs-node-editor/legacy/legacy" {
  457. export * from "babylonjs-node-editor/index";
  458. }
  459. declare module "babylonjs-node-editor" {
  460. export * from "babylonjs-node-editor/legacy/legacy";
  461. }
  462. /// <reference types="react" />
  463. declare module NODEEDITOR {
  464. /**
  465. * Port model for the generic node
  466. */
  467. export class GenericPortModel extends PortModel {
  468. /**
  469. * If the port is input or output
  470. */
  471. position: string | "input" | "output";
  472. /**
  473. * What the port is connected to
  474. */
  475. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  476. static idCounter: number;
  477. constructor(name: string, type?: string);
  478. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  479. getNodeModel(): GenericNodeModel;
  480. link(outPort: GenericPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  481. getInputFromBlock(): void;
  482. createLinkModel(): LinkModel;
  483. getValue: Function;
  484. static SortInputOutput(a: BABYLON.Nullable<GenericPortModel>, b: BABYLON.Nullable<GenericPortModel>): {
  485. input: GenericPortModel;
  486. output: GenericPortModel;
  487. } | null;
  488. }
  489. }
  490. declare module NODEEDITOR {
  491. /**
  492. * Generic node model which stores information about a node editor block
  493. */
  494. export class GenericNodeModel extends NodeModel {
  495. /**
  496. * The babylon block this node represents
  497. */
  498. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  499. /**
  500. * Labels for the block
  501. */
  502. headerLabels: Array<{
  503. text: string;
  504. }>;
  505. /**
  506. * BABYLON.Texture for the node if it exists
  507. */
  508. texture: BABYLON.Nullable<BABYLON.Texture>;
  509. /**
  510. * BABYLON.Vector2 for the node if it exists
  511. */
  512. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  513. /**
  514. * BABYLON.Vector3 for the node if it exists
  515. */
  516. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  517. /**
  518. * BABYLON.Vector4 for the node if it exists
  519. */
  520. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  521. /**
  522. * BABYLON.Matrix for the node if it exists
  523. */
  524. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  525. ports: {
  526. [s: string]: GenericPortModel;
  527. };
  528. /**
  529. * Constructs the node model
  530. */
  531. constructor();
  532. }
  533. }
  534. declare module NODEEDITOR {
  535. export class GlobalState {
  536. nodeMaterial?: BABYLON.NodeMaterial;
  537. hostDocument?: BABYLON.Nullable<Document>;
  538. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<GenericNodeModel>>;
  539. }
  540. }
  541. declare module NODEEDITOR {
  542. interface ITextureLineComponentProps {
  543. texture: BABYLON.BaseTexture;
  544. width: number;
  545. height: number;
  546. globalState?: any;
  547. hideChannelSelect?: boolean;
  548. }
  549. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  550. displayRed: boolean;
  551. displayGreen: boolean;
  552. displayBlue: boolean;
  553. displayAlpha: boolean;
  554. face: number;
  555. }> {
  556. constructor(props: ITextureLineComponentProps);
  557. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  558. displayRed: boolean;
  559. displayGreen: boolean;
  560. displayBlue: boolean;
  561. displayAlpha: boolean;
  562. face: number;
  563. }): boolean;
  564. componentDidMount(): void;
  565. componentDidUpdate(): void;
  566. updatePreview(): void;
  567. render(): JSX.Element;
  568. }
  569. }
  570. declare module NODEEDITOR {
  571. /**
  572. * GenericNodeWidgetProps
  573. */
  574. export interface GenericNodeWidgetProps {
  575. node: BABYLON.Nullable<GenericNodeModel>;
  576. globalState: GlobalState;
  577. }
  578. /**
  579. * GenericNodeWidgetState
  580. */
  581. export interface GenericNodeWidgetState {
  582. }
  583. /**
  584. * Used to display a node block for the node editor
  585. */
  586. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  587. /**
  588. * Creates a GenericNodeWidget
  589. * @param props
  590. */
  591. constructor(props: GenericNodeWidgetProps);
  592. render(): JSX.Element;
  593. }
  594. }
  595. declare module NODEEDITOR {
  596. /**
  597. * Node factory which creates editor nodes
  598. */
  599. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  600. private _globalState;
  601. /**
  602. * Constructs a GenericNodeFactory
  603. */
  604. constructor(globalState: GlobalState);
  605. /**
  606. * Generates a node widget
  607. * @param diagramEngine diagram engine
  608. * @param node node to generate
  609. * @returns node widget jsx
  610. */
  611. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  612. /**
  613. * Gets a new instance of a node model
  614. * @returns generic node model
  615. */
  616. getNewInstance(): GenericNodeModel;
  617. }
  618. }
  619. declare module NODEEDITOR {
  620. interface ILineContainerComponentProps {
  621. title: string;
  622. children: any[] | any;
  623. closed?: boolean;
  624. }
  625. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  626. isExpanded: boolean;
  627. }> {
  628. private static _InMemoryStorage;
  629. constructor(props: ILineContainerComponentProps);
  630. switchExpandedState(): void;
  631. renderHeader(): JSX.Element;
  632. render(): JSX.Element;
  633. }
  634. }
  635. declare module NODEEDITOR {
  636. export interface IButtonLineComponentProps {
  637. label: string;
  638. onClick: () => void;
  639. }
  640. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  641. constructor(props: IButtonLineComponentProps);
  642. render(): JSX.Element;
  643. }
  644. }
  645. declare module NODEEDITOR {
  646. interface INodeListComponentProps {
  647. globalState: GlobalState;
  648. onAddValueNode: (b: string) => void;
  649. onAddNodeFromClass: (ObjectClass: typeof BABYLON.NodeMaterialBlock) => void;
  650. }
  651. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  652. render(): JSX.Element;
  653. }
  654. }
  655. declare module NODEEDITOR {
  656. interface IFileButtonLineComponentProps {
  657. label: string;
  658. onClick: (file: File) => void;
  659. accept: string;
  660. }
  661. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  662. constructor(props: IFileButtonLineComponentProps);
  663. onChange(evt: any): void;
  664. render(): JSX.Element;
  665. }
  666. }
  667. declare module NODEEDITOR {
  668. interface ITexturePropertyTabComponentProps {
  669. globalState: GlobalState;
  670. node: GenericNodeModel;
  671. }
  672. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  673. /**
  674. * Replaces the texture of the node
  675. * @param file the file of the texture to use
  676. */
  677. replaceTexture(file: File): void;
  678. render(): JSX.Element;
  679. }
  680. }
  681. declare module NODEEDITOR {
  682. interface INumericInputComponentProps {
  683. label: string;
  684. value: number;
  685. step?: number;
  686. onChange: (value: number) => void;
  687. }
  688. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  689. value: string;
  690. }> {
  691. static defaultProps: {
  692. step: number;
  693. };
  694. private _localChange;
  695. constructor(props: INumericInputComponentProps);
  696. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  697. value: string;
  698. }): boolean;
  699. updateValue(evt: any): void;
  700. render(): JSX.Element;
  701. }
  702. }
  703. declare module NODEEDITOR {
  704. export class PropertyChangedEvent {
  705. object: any;
  706. property: string;
  707. value: any;
  708. initialValue: any;
  709. }
  710. }
  711. declare module NODEEDITOR {
  712. interface IVector2LineComponentProps {
  713. label: string;
  714. target: any;
  715. propertyName: string;
  716. step?: number;
  717. onChange?: (newvalue: BABYLON.Vector2) => void;
  718. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  719. }
  720. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  721. isExpanded: boolean;
  722. value: BABYLON.Vector2;
  723. }> {
  724. static defaultProps: {
  725. step: number;
  726. };
  727. private _localChange;
  728. constructor(props: IVector2LineComponentProps);
  729. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  730. isExpanded: boolean;
  731. value: BABYLON.Vector2;
  732. }): boolean;
  733. switchExpandState(): void;
  734. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  735. updateStateX(value: number): void;
  736. updateStateY(value: number): void;
  737. render(): JSX.Element;
  738. }
  739. }
  740. declare module NODEEDITOR {
  741. interface IVector2PropertyTabComponentProps {
  742. globalState: GlobalState;
  743. node: GenericNodeModel;
  744. }
  745. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  746. render(): JSX.Element;
  747. }
  748. }
  749. declare module NODEEDITOR {
  750. interface IVector3LineComponentProps {
  751. label: string;
  752. target: any;
  753. propertyName: string;
  754. step?: number;
  755. onChange?: (newvalue: BABYLON.Vector3) => void;
  756. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  757. }
  758. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  759. isExpanded: boolean;
  760. value: BABYLON.Vector3;
  761. }> {
  762. static defaultProps: {
  763. step: number;
  764. };
  765. private _localChange;
  766. constructor(props: IVector3LineComponentProps);
  767. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  768. isExpanded: boolean;
  769. value: BABYLON.Vector3;
  770. }): boolean;
  771. switchExpandState(): void;
  772. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  773. updateVector3(): void;
  774. updateStateX(value: number): void;
  775. updateStateY(value: number): void;
  776. updateStateZ(value: number): void;
  777. render(): JSX.Element;
  778. }
  779. }
  780. declare module NODEEDITOR {
  781. interface IVector3PropertyTabComponentProps {
  782. globalState: GlobalState;
  783. node: GenericNodeModel;
  784. }
  785. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  786. render(): JSX.Element;
  787. }
  788. }
  789. declare module NODEEDITOR {
  790. interface IPropertyTabComponentProps {
  791. globalState: GlobalState;
  792. }
  793. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  794. currentNode: BABYLON.Nullable<GenericNodeModel>;
  795. }> {
  796. constructor(props: IPropertyTabComponentProps);
  797. componentWillMount(): void;
  798. render(): JSX.Element;
  799. }
  800. }
  801. declare module NODEEDITOR {
  802. interface IGraphEditorProps {
  803. globalState: GlobalState;
  804. }
  805. export class GraphEditor extends React.Component<IGraphEditorProps> {
  806. private _engine;
  807. private _model;
  808. private _nodes;
  809. /**
  810. * Current row/column position used when adding new nodes
  811. */
  812. private _rowPos;
  813. /**
  814. * Creates a node and recursivly creates its parent nodes from it's input
  815. * @param nodeMaterialBlock
  816. */
  817. createNodeFromObject(options: {
  818. column: number;
  819. nodeMaterialBlock?: BABYLON.NodeMaterialBlock;
  820. }): GenericNodeModel;
  821. componentDidMount(): void;
  822. componentWillUnmount(): void;
  823. constructor(props: IGraphEditorProps);
  824. addNodeFromClass(ObjectClass: typeof BABYLON.NodeMaterialBlock): GenericNodeModel;
  825. addValueNode(type: string, column?: number, connection?: BABYLON.NodeMaterialConnectionPoint): GenericNodeModel;
  826. render(): JSX.Element;
  827. }
  828. }
  829. declare module NODEEDITOR {
  830. export class Popup {
  831. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  832. private static _CopyStyles;
  833. }
  834. }
  835. declare module NODEEDITOR {
  836. /**
  837. * Interface used to specify creation options for the node editor
  838. */
  839. export interface INodeEditorOptions {
  840. /**
  841. * Defines the DOM element that will host the node editor
  842. */
  843. hostElement?: HTMLDivElement;
  844. nodeMaterial?: BABYLON.NodeMaterial;
  845. }
  846. /**
  847. * Class used to create a node editor
  848. */
  849. export class NodeEditor {
  850. /**
  851. * Show the node editor
  852. * @param options defines the options to use to configure the node editor
  853. */
  854. static Show(options: INodeEditorOptions): void;
  855. }
  856. }