babylon.nodeEditor.module.d.ts 119 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027
  1. /// <reference types="react" />
  2. declare module "babylonjs-node-editor/blockTools" {
  3. import { AlphaTestBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/alphaTestBlock';
  4. import { BonesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/bonesBlock';
  5. import { InstancesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/instancesBlock';
  6. import { MorphTargetsBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/morphTargetsBlock';
  7. import { ImageProcessingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/imageProcessingBlock';
  8. import { ColorMergerBlock } from 'babylonjs/Materials/Node/Blocks/colorMergerBlock';
  9. import { VectorMergerBlock } from 'babylonjs/Materials/Node/Blocks/vectorMergerBlock';
  10. import { ColorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/colorSplitterBlock';
  11. import { VectorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/vectorSplitterBlock';
  12. import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
  13. import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
  14. import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
  15. import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
  16. import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
  17. import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
  18. import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
  19. import { NormalizeBlock } from 'babylonjs/Materials/Node/Blocks/normalizeBlock';
  20. import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
  21. import { ScaleBlock } from 'babylonjs/Materials/Node/Blocks/scaleBlock';
  22. import { TrigonometryBlock } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
  23. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  24. import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
  25. import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
  26. import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
  27. import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
  28. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  29. import { FresnelBlock } from 'babylonjs/Materials/Node/Blocks/fresnelBlock';
  30. import { LerpBlock } from 'babylonjs/Materials/Node/Blocks/lerpBlock';
  31. import { DivideBlock } from 'babylonjs/Materials/Node/Blocks/divideBlock';
  32. import { SubtractBlock } from 'babylonjs/Materials/Node/Blocks/subtractBlock';
  33. import { StepBlock } from 'babylonjs/Materials/Node/Blocks/stepBlock';
  34. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  35. import { OneMinusBlock } from 'babylonjs/Materials/Node/Blocks/oneMinusBlock';
  36. import { ViewDirectionBlock } from 'babylonjs/Materials/Node/Blocks/viewDirectionBlock';
  37. import { LightInformationBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/lightInformationBlock';
  38. import { MaxBlock } from 'babylonjs/Materials/Node/Blocks/maxBlock';
  39. import { MinBlock } from 'babylonjs/Materials/Node/Blocks/minBlock';
  40. import { PerturbNormalBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/perturbNormalBlock';
  41. import { LengthBlock } from 'babylonjs/Materials/Node/Blocks/lengthBlock';
  42. import { DistanceBlock } from 'babylonjs/Materials/Node/Blocks/distanceBlock';
  43. import { NegateBlock } from 'babylonjs/Materials/Node/Blocks/negateBlock';
  44. import { PowBlock } from 'babylonjs/Materials/Node/Blocks/powBlock';
  45. import { Scene } from 'babylonjs/scene';
  46. export class BlockTools {
  47. static GetBlockFromString(data: string, scene: Scene): BonesBlock | InstancesBlock | MorphTargetsBlock | AlphaTestBlock | ImageProcessingBlock | ColorMergerBlock | VectorMergerBlock | ColorSplitterBlock | VectorSplitterBlock | TextureBlock | ReflectionTextureBlock | LightBlock | FogBlock | VertexOutputBlock | FragmentOutputBlock | AddBlock | ClampBlock | ScaleBlock | CrossBlock | DotBlock | PowBlock | MultiplyBlock | TransformBlock | TrigonometryBlock | RemapBlock | NormalizeBlock | FresnelBlock | LerpBlock | DivideBlock | SubtractBlock | StepBlock | OneMinusBlock | ViewDirectionBlock | LightInformationBlock | MaxBlock | MinBlock | LengthBlock | DistanceBlock | NegateBlock | PerturbNormalBlock | InputBlock | null;
  48. static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): string;
  49. static GetConnectionNodeTypeFromString(type: string): NodeMaterialBlockConnectionPointTypes.Float | NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Matrix | NodeMaterialBlockConnectionPointTypes.AutoDetect;
  50. static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  51. }
  52. }
  53. declare module "babylonjs-node-editor/dataStorage" {
  54. export class DataStorage {
  55. private static _InMemoryStorage;
  56. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  57. static StoreBoolean(key: string, value: boolean): void;
  58. static ReadNumber(key: string, defaultValue: number): number;
  59. static StoreNumber(key: string, value: number): void;
  60. }
  61. }
  62. declare module "babylonjs-node-editor/sharedComponents/textLineComponent" {
  63. import * as React from "react";
  64. interface ITextLineComponentProps {
  65. label: string;
  66. value: string;
  67. color?: string;
  68. underline?: boolean;
  69. onLink?: () => void;
  70. }
  71. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  72. constructor(props: ITextLineComponentProps);
  73. onLink(): void;
  74. renderContent(): JSX.Element;
  75. render(): JSX.Element;
  76. }
  77. }
  78. declare module "babylonjs-node-editor/sharedComponents/lineContainerComponent" {
  79. import * as React from "react";
  80. interface ILineContainerComponentProps {
  81. title: string;
  82. children: any[] | any;
  83. closed?: boolean;
  84. }
  85. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  86. isExpanded: boolean;
  87. }> {
  88. constructor(props: ILineContainerComponentProps);
  89. switchExpandedState(): void;
  90. renderHeader(): JSX.Element;
  91. render(): JSX.Element;
  92. }
  93. }
  94. declare module "babylonjs-node-editor/sharedComponents/propertyChangedEvent" {
  95. export class PropertyChangedEvent {
  96. object: any;
  97. property: string;
  98. value: any;
  99. initialValue: any;
  100. }
  101. }
  102. declare module "babylonjs-node-editor/sharedComponents/textInputLineComponent" {
  103. import * as React from "react";
  104. import { Observable } from "babylonjs/Misc/observable";
  105. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  106. import { GlobalState } from "babylonjs-node-editor/globalState";
  107. interface ITextInputLineComponentProps {
  108. label: string;
  109. globalState: GlobalState;
  110. target?: any;
  111. propertyName?: string;
  112. value?: string;
  113. onChange?: (value: string) => void;
  114. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  115. }
  116. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  117. value: string;
  118. }> {
  119. private _localChange;
  120. constructor(props: ITextInputLineComponentProps);
  121. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  122. value: string;
  123. }): boolean;
  124. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  125. updateValue(value: string, raisePropertyChanged: boolean): void;
  126. render(): JSX.Element;
  127. }
  128. }
  129. declare module "babylonjs-node-editor/sharedComponents/checkBoxLineComponent" {
  130. import * as React from "react";
  131. import { Observable } from "babylonjs/Misc/observable";
  132. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  133. export interface ICheckBoxLineComponentProps {
  134. label: string;
  135. target?: any;
  136. propertyName?: string;
  137. isSelected?: () => boolean;
  138. onSelect?: (value: boolean) => void;
  139. onValueChanged?: () => void;
  140. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  141. }
  142. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  143. isSelected: boolean;
  144. }> {
  145. private static _UniqueIdSeed;
  146. private _uniqueId;
  147. private _localChange;
  148. constructor(props: ICheckBoxLineComponentProps);
  149. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  150. isSelected: boolean;
  151. }): boolean;
  152. onChange(): void;
  153. render(): JSX.Element;
  154. }
  155. }
  156. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
  157. import { Nullable } from 'babylonjs/types';
  158. import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
  159. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  160. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  161. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  162. import { GlobalState } from "babylonjs-node-editor/globalState";
  163. /**
  164. * Generic node model which stores information about a node editor block
  165. */
  166. export class GenericNodeModel extends DefaultNodeModel {
  167. /**
  168. * Vector2 for the node if it exists
  169. */
  170. vector2: Nullable<Vector2>;
  171. /**
  172. * Vector3 for the node if it exists
  173. */
  174. vector3: Nullable<Vector3>;
  175. /**
  176. * Vector4 for the node if it exists
  177. */
  178. vector4: Nullable<Vector4>;
  179. /**
  180. * Matrix for the node if it exists
  181. */
  182. matrix: Nullable<Matrix>;
  183. /**
  184. * Constructs the node model
  185. */
  186. constructor();
  187. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  188. renderProperties(globalState: GlobalState): JSX.Element;
  189. }
  190. }
  191. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkModel" {
  192. import { DefaultLinkModel } from 'storm-react-diagrams';
  193. export class AdvancedLinkModel extends DefaultLinkModel {
  194. constructor();
  195. }
  196. }
  197. declare module "babylonjs-node-editor/components/diagram/port/defaultPortModel" {
  198. import { LinkModel, PortModel } from "storm-react-diagrams";
  199. import { Nullable } from 'babylonjs/types';
  200. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  201. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  202. /**
  203. * Port model
  204. */
  205. export class DefaultPortModel extends PortModel {
  206. /**
  207. * If the port is input or output
  208. */
  209. position: string | "input" | "output";
  210. /**
  211. * What the port is connected to
  212. */
  213. connection: Nullable<NodeMaterialConnectionPoint>;
  214. defaultValue: any;
  215. static idCounter: number;
  216. constructor(name: string, type?: string);
  217. canLinkToPort(port: DefaultPortModel): boolean;
  218. syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
  219. getNodeModel(): DefaultNodeModel;
  220. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  221. createLinkModel(): LinkModel;
  222. static SortInputOutput(a: Nullable<DefaultPortModel>, b: Nullable<DefaultPortModel>): {
  223. input: DefaultPortModel;
  224. output: DefaultPortModel;
  225. } | null;
  226. }
  227. }
  228. declare module "babylonjs-node-editor/components/diagram/port/defaultPortWidget" {
  229. import { BaseWidget, PortState, NodeModel, BaseWidgetProps } from 'storm-react-diagrams';
  230. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  231. name: string;
  232. node: NodeModel;
  233. style: any;
  234. }
  235. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  236. constructor(props: IDefaultPortWidgetProps);
  237. getClassName(): string;
  238. render(): JSX.Element;
  239. }
  240. }
  241. declare module "babylonjs-node-editor/components/diagram/portHelper" {
  242. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  243. import { Nullable } from 'babylonjs/types';
  244. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  245. export class PortHelper {
  246. private static _GetPortTypeIndicator;
  247. static _GetPortStyle(type: NodeMaterialBlockConnectionPointTypes): {
  248. background: string;
  249. };
  250. static GenerateOutputPorts(node: Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  251. static GenerateInputPorts(node: Nullable<DefaultNodeModel>, includeOnly?: string[], ignoreLabel?: boolean): JSX.Element[];
  252. }
  253. }
  254. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeWidget" {
  255. import * as React from "react";
  256. import { Nullable } from 'babylonjs/types';
  257. import { GlobalState } from "babylonjs-node-editor/globalState";
  258. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  259. /**
  260. * GenericNodeWidgetProps
  261. */
  262. export interface GenericNodeWidgetProps {
  263. node: Nullable<GenericNodeModel>;
  264. globalState: GlobalState;
  265. }
  266. /**
  267. * GenericNodeWidgetState
  268. */
  269. export interface GenericNodeWidgetState {
  270. }
  271. /**
  272. * Used to display a node block for the node editor
  273. */
  274. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  275. /**
  276. * Creates a GenericNodeWidget
  277. * @param props
  278. */
  279. constructor(props: GenericNodeWidgetProps);
  280. render(): JSX.Element;
  281. }
  282. }
  283. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeFactory" {
  284. import * as SRD from "storm-react-diagrams";
  285. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  286. import { GlobalState } from "babylonjs-node-editor/globalState";
  287. /**
  288. * Node factory which creates editor nodes
  289. */
  290. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  291. private _globalState;
  292. /**
  293. * Constructs a GenericNodeFactory
  294. */
  295. constructor(globalState: GlobalState);
  296. /**
  297. * Generates a node widget
  298. * @param diagramEngine diagram engine
  299. * @param node node to generate
  300. * @returns node widget jsx
  301. */
  302. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  303. /**
  304. * Gets a new instance of a node model
  305. * @returns generic node model
  306. */
  307. getNewInstance(): GenericNodeModel;
  308. }
  309. }
  310. declare module "babylonjs-node-editor/sharedComponents/draggableLineComponent" {
  311. import * as React from "react";
  312. export interface IButtonLineComponentProps {
  313. data: string;
  314. }
  315. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  316. constructor(props: IButtonLineComponentProps);
  317. render(): JSX.Element;
  318. }
  319. }
  320. declare module "babylonjs-node-editor/components/nodeList/nodeListComponent" {
  321. import * as React from "react";
  322. import { GlobalState } from "babylonjs-node-editor/globalState";
  323. interface INodeListComponentProps {
  324. globalState: GlobalState;
  325. }
  326. export class NodeListComponent extends React.Component<INodeListComponentProps, {
  327. filter: string;
  328. }> {
  329. constructor(props: INodeListComponentProps);
  330. filterContent(filter: string): void;
  331. render(): JSX.Element;
  332. }
  333. }
  334. declare module "babylonjs-node-editor/sharedComponents/buttonLineComponent" {
  335. import * as React from "react";
  336. export interface IButtonLineComponentProps {
  337. label: string;
  338. onClick: () => void;
  339. }
  340. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  341. constructor(props: IButtonLineComponentProps);
  342. render(): JSX.Element;
  343. }
  344. }
  345. declare module "babylonjs-node-editor/stringTools" {
  346. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  347. export class StringTools {
  348. private static _SaveAs;
  349. private static _Click;
  350. /**
  351. * Gets the base math type of node material block connection point.
  352. * @param type Type to parse.
  353. */
  354. static GetBaseType(type: NodeMaterialBlockConnectionPointTypes): string;
  355. /**
  356. * Download a string into a file that will be saved locally by the browser
  357. * @param content defines the string to download locally as a file
  358. */
  359. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  360. }
  361. }
  362. declare module "babylonjs-node-editor/sharedComponents/fileButtonLineComponent" {
  363. import * as React from "react";
  364. interface IFileButtonLineComponentProps {
  365. label: string;
  366. onClick: (file: File) => void;
  367. accept: string;
  368. }
  369. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  370. constructor(props: IFileButtonLineComponentProps);
  371. onChange(evt: any): void;
  372. render(): JSX.Element;
  373. }
  374. }
  375. declare module "babylonjs-node-editor/nodeLocationInfo" {
  376. export interface INodeLocationInfo {
  377. blockId: number;
  378. x: number;
  379. y: number;
  380. }
  381. }
  382. declare module "babylonjs-node-editor/serializationTools" {
  383. import { NodeMaterial } from 'babylonjs/Materials/Node/nodeMaterial';
  384. import { GlobalState } from "babylonjs-node-editor/globalState";
  385. export class SerializationTools {
  386. static Serialize(material: NodeMaterial, globalState: GlobalState): string;
  387. static Deserialize(serializationObject: any, globalState: GlobalState): void;
  388. }
  389. }
  390. declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
  391. import * as React from "react";
  392. import { GlobalState } from "babylonjs-node-editor/globalState";
  393. import { Nullable } from 'babylonjs/types';
  394. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  395. interface IPropertyTabComponentProps {
  396. globalState: GlobalState;
  397. }
  398. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  399. currentNode: Nullable<DefaultNodeModel>;
  400. }> {
  401. constructor(props: IPropertyTabComponentProps);
  402. componentDidMount(): void;
  403. load(file: File): void;
  404. save(): void;
  405. customSave(): void;
  406. render(): JSX.Element;
  407. }
  408. }
  409. declare module "babylonjs-node-editor/portal" {
  410. import * as React from "react";
  411. import { GlobalState } from "babylonjs-node-editor/globalState";
  412. interface IPortalProps {
  413. globalState: GlobalState;
  414. }
  415. export class Portal extends React.Component<IPortalProps> {
  416. render(): React.ReactPortal;
  417. }
  418. }
  419. declare module "babylonjs-node-editor/sharedComponents/sliderLineComponent" {
  420. import * as React from "react";
  421. import { Observable } from "babylonjs/Misc/observable";
  422. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  423. interface ISliderLineComponentProps {
  424. label: string;
  425. target?: any;
  426. propertyName?: string;
  427. minimum: number;
  428. maximum: number;
  429. step: number;
  430. directValue?: number;
  431. useEuler?: boolean;
  432. onChange?: (value: number) => void;
  433. onInput?: (value: number) => void;
  434. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  435. decimalCount?: number;
  436. }
  437. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  438. value: number;
  439. }> {
  440. private _localChange;
  441. constructor(props: ISliderLineComponentProps);
  442. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  443. value: number;
  444. }): boolean;
  445. onChange(newValueString: any): void;
  446. onInput(newValueString: any): void;
  447. prepareDataToRead(value: number): number;
  448. render(): JSX.Element;
  449. }
  450. }
  451. declare module "babylonjs-node-editor/sharedComponents/floatLineComponent" {
  452. import * as React from "react";
  453. import { Observable } from "babylonjs/Misc/observable";
  454. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  455. interface IFloatLineComponentProps {
  456. label: string;
  457. target: any;
  458. propertyName: string;
  459. onChange?: (newValue: number) => void;
  460. isInteger?: boolean;
  461. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  462. additionalClass?: string;
  463. step?: string;
  464. digits?: number;
  465. }
  466. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  467. value: string;
  468. }> {
  469. private _localChange;
  470. private _store;
  471. constructor(props: IFloatLineComponentProps);
  472. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  473. value: string;
  474. }): boolean;
  475. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  476. updateValue(valueString: string): void;
  477. render(): JSX.Element;
  478. }
  479. }
  480. declare module "babylonjs-node-editor/components/diagram/texture/texturePropertyTabComponent" {
  481. import * as React from "react";
  482. import { GlobalState } from "babylonjs-node-editor/globalState";
  483. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  484. interface ITexturePropertyTabComponentProps {
  485. globalState: GlobalState;
  486. node: TextureNodeModel;
  487. }
  488. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps, {
  489. isEmbedded: boolean;
  490. }> {
  491. constructor(props: ITexturePropertyTabComponentProps);
  492. updateAftertextureLoad(): void;
  493. /**
  494. * Replaces the texture of the node
  495. * @param file the file of the texture to use
  496. */
  497. replaceTexture(file: File): void;
  498. replaceTextureWithUrl(url: string): void;
  499. render(): JSX.Element;
  500. }
  501. }
  502. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeModel" {
  503. import { Nullable } from 'babylonjs/types';
  504. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  505. import { GlobalState } from "babylonjs-node-editor/globalState";
  506. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  507. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  508. import { Texture } from 'babylonjs/Materials/Textures/texture';
  509. /**
  510. * Texture node model which stores information about a node editor block
  511. */
  512. export class TextureNodeModel extends DefaultNodeModel {
  513. private _block;
  514. /**
  515. * Texture for the node if it exists
  516. */
  517. texture: Nullable<Texture>;
  518. /**
  519. * Constructs the node model
  520. */
  521. constructor();
  522. renderProperties(globalState: GlobalState): JSX.Element;
  523. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  524. }
  525. }
  526. declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
  527. import * as React from "react";
  528. import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
  529. interface ITextureLineComponentProps {
  530. texture: BaseTexture;
  531. width: number;
  532. height: number;
  533. globalState?: any;
  534. hideChannelSelect?: boolean;
  535. }
  536. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  537. displayRed: boolean;
  538. displayGreen: boolean;
  539. displayBlue: boolean;
  540. displayAlpha: boolean;
  541. face: number;
  542. }> {
  543. constructor(props: ITextureLineComponentProps);
  544. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  545. displayRed: boolean;
  546. displayGreen: boolean;
  547. displayBlue: boolean;
  548. displayAlpha: boolean;
  549. face: number;
  550. }): boolean;
  551. componentDidMount(): void;
  552. componentDidUpdate(): void;
  553. updatePreview(): void;
  554. render(): JSX.Element;
  555. }
  556. }
  557. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeWidget" {
  558. import * as React from "react";
  559. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  560. import { Nullable } from 'babylonjs/types';
  561. import { GlobalState } from "babylonjs-node-editor/globalState";
  562. /**
  563. * GenericNodeWidgetProps
  564. */
  565. export interface ITextureNodeWidgetProps {
  566. node: Nullable<TextureNodeModel>;
  567. globalState: GlobalState;
  568. }
  569. /**
  570. * Used to display a node block for the node editor
  571. */
  572. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  573. /**
  574. * Creates a GenericNodeWidget
  575. * @param props
  576. */
  577. constructor(props: ITextureNodeWidgetProps);
  578. render(): JSX.Element;
  579. }
  580. }
  581. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeFactory" {
  582. import * as SRD from "storm-react-diagrams";
  583. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  584. import { GlobalState } from "babylonjs-node-editor/globalState";
  585. /**
  586. * Node factory which creates editor nodes
  587. */
  588. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  589. private _globalState;
  590. /**
  591. * Constructs a TextureNodeFactory
  592. */
  593. constructor(globalState: GlobalState);
  594. /**
  595. * Generates a node widget
  596. * @param diagramEngine diagram engine
  597. * @param node node to generate
  598. * @returns node widget jsx
  599. */
  600. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  601. /**
  602. * Gets a new instance of a node model
  603. * @returns texture node model
  604. */
  605. getNewInstance(): TextureNodeModel;
  606. }
  607. }
  608. declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
  609. import * as React from "react";
  610. interface INumericInputComponentProps {
  611. label: string;
  612. value: number;
  613. step?: number;
  614. onChange: (value: number) => void;
  615. }
  616. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  617. value: string;
  618. }> {
  619. static defaultProps: {
  620. step: number;
  621. };
  622. private _localChange;
  623. constructor(props: INumericInputComponentProps);
  624. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  625. value: string;
  626. }): boolean;
  627. updateValue(evt: any): void;
  628. render(): JSX.Element;
  629. }
  630. }
  631. declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
  632. import * as React from "react";
  633. import { Vector2 } from "babylonjs/Maths/math";
  634. import { Observable } from "babylonjs/Misc/observable";
  635. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  636. interface IVector2LineComponentProps {
  637. label: string;
  638. target: any;
  639. propertyName: string;
  640. step?: number;
  641. onChange?: (newvalue: Vector2) => void;
  642. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  643. }
  644. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  645. isExpanded: boolean;
  646. value: Vector2;
  647. }> {
  648. static defaultProps: {
  649. step: number;
  650. };
  651. private _localChange;
  652. constructor(props: IVector2LineComponentProps);
  653. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  654. isExpanded: boolean;
  655. value: Vector2;
  656. }): boolean;
  657. switchExpandState(): void;
  658. raiseOnPropertyChanged(previousValue: Vector2): void;
  659. updateStateX(value: number): void;
  660. updateStateY(value: number): void;
  661. render(): JSX.Element;
  662. }
  663. }
  664. declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
  665. import * as React from "react";
  666. import { GlobalState } from "babylonjs-node-editor/globalState";
  667. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  668. interface IVector2PropertyTabComponentProps {
  669. globalState: GlobalState;
  670. inputBlock: InputBlock;
  671. }
  672. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  673. render(): JSX.Element;
  674. }
  675. }
  676. declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
  677. import * as React from "react";
  678. import { Vector3 } from "babylonjs/Maths/math";
  679. import { Observable } from "babylonjs/Misc/observable";
  680. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  681. interface IVector3LineComponentProps {
  682. label: string;
  683. target: any;
  684. propertyName: string;
  685. step?: number;
  686. onChange?: (newvalue: Vector3) => void;
  687. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  688. }
  689. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  690. isExpanded: boolean;
  691. value: Vector3;
  692. }> {
  693. static defaultProps: {
  694. step: number;
  695. };
  696. private _localChange;
  697. constructor(props: IVector3LineComponentProps);
  698. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  699. isExpanded: boolean;
  700. value: Vector3;
  701. }): boolean;
  702. switchExpandState(): void;
  703. raiseOnPropertyChanged(previousValue: Vector3): void;
  704. updateVector3(): void;
  705. updateStateX(value: number): void;
  706. updateStateY(value: number): void;
  707. updateStateZ(value: number): void;
  708. render(): JSX.Element;
  709. }
  710. }
  711. declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
  712. import * as React from "react";
  713. import { GlobalState } from "babylonjs-node-editor/globalState";
  714. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  715. interface IVector3PropertyTabComponentProps {
  716. globalState: GlobalState;
  717. inputBlock: InputBlock;
  718. }
  719. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  720. render(): JSX.Element;
  721. }
  722. }
  723. declare module "babylonjs-node-editor/sharedComponents/optionsLineComponent" {
  724. import * as React from "react";
  725. import { Observable } from "babylonjs/Misc/observable";
  726. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  727. class ListLineOption {
  728. label: string;
  729. value: number | string;
  730. }
  731. interface IOptionsLineComponentProps {
  732. label: string;
  733. target: any;
  734. className?: string;
  735. propertyName?: string;
  736. options: ListLineOption[];
  737. noDirectUpdate?: boolean;
  738. onSelect?: (value: number | string) => void;
  739. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  740. valuesAreStrings?: boolean;
  741. defaultIfNull?: number;
  742. getSelection?: (target: any) => number;
  743. }
  744. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  745. value: number | string;
  746. }> {
  747. private _localChange;
  748. private _getValue;
  749. constructor(props: IOptionsLineComponentProps);
  750. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  751. value: number;
  752. }): boolean;
  753. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  754. updateValue(valueString: string): void;
  755. render(): JSX.Element;
  756. }
  757. }
  758. declare module "babylonjs-node-editor/sharedComponents/color3LineComponent" {
  759. import * as React from "react";
  760. import { Observable } from "babylonjs/Misc/observable";
  761. import { Color3 } from "babylonjs/Maths/math";
  762. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  763. export interface IColor3LineComponentProps {
  764. label: string;
  765. target: any;
  766. propertyName: string;
  767. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  768. onChange?: () => void;
  769. }
  770. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  771. isExpanded: boolean;
  772. color: Color3;
  773. }> {
  774. private _localChange;
  775. constructor(props: IColor3LineComponentProps);
  776. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  777. color: Color3;
  778. }): boolean;
  779. onChange(newValue: string): void;
  780. switchExpandState(): void;
  781. raiseOnPropertyChanged(previousValue: Color3): void;
  782. updateStateR(value: number): void;
  783. updateStateG(value: number): void;
  784. updateStateB(value: number): void;
  785. copyToClipboard(): void;
  786. render(): JSX.Element;
  787. }
  788. }
  789. declare module "babylonjs-node-editor/components/propertyTab/properties/color3PropertyTabComponent" {
  790. import * as React from "react";
  791. import { GlobalState } from "babylonjs-node-editor/globalState";
  792. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  793. interface IColor3PropertyTabComponentProps {
  794. globalState: GlobalState;
  795. inputBlock: InputBlock;
  796. }
  797. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  798. render(): JSX.Element;
  799. }
  800. }
  801. declare module "babylonjs-node-editor/components/propertyTab/properties/floatPropertyTabComponent" {
  802. import * as React from "react";
  803. import { GlobalState } from "babylonjs-node-editor/globalState";
  804. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  805. interface IFloatPropertyTabComponentProps {
  806. globalState: GlobalState;
  807. inputBlock: InputBlock;
  808. }
  809. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  810. render(): JSX.Element;
  811. }
  812. }
  813. declare module "babylonjs-node-editor/sharedComponents/vector4LineComponent" {
  814. import * as React from "react";
  815. import { Vector4 } from "babylonjs/Maths/math";
  816. import { Observable } from "babylonjs/Misc/observable";
  817. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  818. interface IVector4LineComponentProps {
  819. label: string;
  820. target?: any;
  821. propertyName?: string;
  822. value?: Vector4;
  823. step?: number;
  824. onChange?: (newvalue: Vector4) => void;
  825. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  826. }
  827. export class Vector4LineComponent extends React.Component<IVector4LineComponentProps, {
  828. isExpanded: boolean;
  829. value: Vector4;
  830. }> {
  831. static defaultProps: {
  832. step: number;
  833. };
  834. private _localChange;
  835. constructor(props: IVector4LineComponentProps);
  836. shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
  837. isExpanded: boolean;
  838. value: Vector4;
  839. }): boolean;
  840. switchExpandState(): void;
  841. raiseOnPropertyChanged(previousValue: Vector4): void;
  842. updateVector4(): void;
  843. updateStateX(value: number): void;
  844. updateStateY(value: number): void;
  845. updateStateZ(value: number): void;
  846. updateStateW(value: number): void;
  847. render(): JSX.Element;
  848. }
  849. }
  850. declare module "babylonjs-node-editor/components/propertyTab/properties/vector4PropertyTabComponent" {
  851. import * as React from "react";
  852. import { GlobalState } from "babylonjs-node-editor/globalState";
  853. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  854. interface IVector4PropertyTabComponentProps {
  855. globalState: GlobalState;
  856. inputBlock: InputBlock;
  857. }
  858. export class Vector4PropertyTabComponent extends React.Component<IVector4PropertyTabComponentProps> {
  859. render(): JSX.Element;
  860. }
  861. }
  862. declare module "babylonjs-node-editor/sharedComponents/matrixLineComponent" {
  863. import * as React from "react";
  864. import { Vector3, Matrix, Vector4 } from "babylonjs/Maths/math";
  865. import { Observable } from "babylonjs/Misc/observable";
  866. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  867. interface IMatrixLineComponentProps {
  868. label: string;
  869. target: any;
  870. propertyName: string;
  871. step?: number;
  872. onChange?: (newValue: Matrix) => void;
  873. onModeChange?: (mode: number) => void;
  874. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  875. mode?: number;
  876. }
  877. export class MatrixLineComponent extends React.Component<IMatrixLineComponentProps, {
  878. value: Matrix;
  879. mode: number;
  880. angle: number;
  881. }> {
  882. private _localChange;
  883. constructor(props: IMatrixLineComponentProps);
  884. shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: {
  885. value: Matrix;
  886. mode: number;
  887. angle: number;
  888. }): boolean;
  889. raiseOnPropertyChanged(previousValue: Vector3): void;
  890. updateMatrix(): void;
  891. updateRow(value: Vector4, row: number): void;
  892. updateBasedOnMode(value: number): void;
  893. render(): JSX.Element;
  894. }
  895. }
  896. declare module "babylonjs-node-editor/components/propertyTab/properties/matrixPropertyTabComponent" {
  897. import * as React from "react";
  898. import { GlobalState } from "babylonjs-node-editor/globalState";
  899. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  900. interface IMatrixPropertyTabComponentProps {
  901. globalState: GlobalState;
  902. inputBlock: InputBlock;
  903. }
  904. export class MatrixPropertyTabComponent extends React.Component<IMatrixPropertyTabComponentProps> {
  905. render(): JSX.Element;
  906. }
  907. }
  908. declare module "babylonjs-node-editor/components/diagram/input/inputNodePropertyComponent" {
  909. import * as React from "react";
  910. import { GlobalState } from "babylonjs-node-editor/globalState";
  911. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  912. interface IInputPropertyTabComponentProps {
  913. globalState: GlobalState;
  914. inputNode: InputNodeModel;
  915. }
  916. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  917. constructor(props: IInputPropertyTabComponentProps);
  918. renderValue(globalState: GlobalState): JSX.Element | null;
  919. setDefaultValue(): void;
  920. render(): JSX.Element;
  921. }
  922. }
  923. declare module "babylonjs-node-editor/components/diagram/input/inputNodeModel" {
  924. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  925. import { GlobalState } from "babylonjs-node-editor/globalState";
  926. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  927. /**
  928. * Generic node model which stores information about a node editor block
  929. */
  930. export class InputNodeModel extends DefaultNodeModel {
  931. readonly inputBlock: InputBlock;
  932. /**
  933. * Constructs the node model
  934. */
  935. constructor();
  936. renderProperties(globalState: GlobalState): JSX.Element;
  937. }
  938. }
  939. declare module "babylonjs-node-editor/components/diagram/input/inputNodeWidget" {
  940. import * as React from "react";
  941. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  942. import { Nullable } from 'babylonjs/types';
  943. import { GlobalState } from "babylonjs-node-editor/globalState";
  944. /**
  945. * GenericNodeWidgetProps
  946. */
  947. export interface IInputNodeWidgetProps {
  948. node: Nullable<InputNodeModel>;
  949. globalState: GlobalState;
  950. }
  951. /**
  952. * Used to display a node block for the node editor
  953. */
  954. export class InputNodeWidget extends React.Component<IInputNodeWidgetProps> {
  955. /**
  956. * Creates a GenericNodeWidget
  957. * @param props
  958. */
  959. constructor(props: IInputNodeWidgetProps);
  960. renderValue(value: string): JSX.Element | null;
  961. render(): JSX.Element | null;
  962. }
  963. }
  964. declare module "babylonjs-node-editor/components/diagram/input/inputNodeFactory" {
  965. import * as SRD from "storm-react-diagrams";
  966. import { GlobalState } from "babylonjs-node-editor/globalState";
  967. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  968. /**
  969. * Node factory which creates editor nodes
  970. */
  971. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  972. private _globalState;
  973. /**
  974. * Constructs a GenericNodeFactory
  975. */
  976. constructor(globalState: GlobalState);
  977. /**
  978. * Generates a node widget
  979. * @param diagramEngine diagram engine
  980. * @param node node to generate
  981. * @returns node widget jsx
  982. */
  983. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  984. /**
  985. * Gets a new instance of a node model
  986. * @returns input node model
  987. */
  988. getNewInstance(): InputNodeModel;
  989. }
  990. }
  991. declare module "babylonjs-node-editor/components/log/logComponent" {
  992. import * as React from "react";
  993. import { GlobalState } from "babylonjs-node-editor/globalState";
  994. interface ILogComponentProps {
  995. globalState: GlobalState;
  996. }
  997. export class LogEntry {
  998. message: string;
  999. isError: boolean;
  1000. constructor(message: string, isError: boolean);
  1001. }
  1002. export class LogComponent extends React.Component<ILogComponentProps, {
  1003. logs: LogEntry[];
  1004. }> {
  1005. constructor(props: ILogComponentProps);
  1006. componentDidMount(): void;
  1007. componentDidUpdate(): void;
  1008. render(): JSX.Element;
  1009. }
  1010. }
  1011. declare module "babylonjs-node-editor/components/diagram/light/lightPropertyTabComponent" {
  1012. import * as React from "react";
  1013. import { GlobalState } from "babylonjs-node-editor/globalState";
  1014. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  1015. interface ILightPropertyTabComponentProps {
  1016. globalState: GlobalState;
  1017. node: LightNodeModel;
  1018. }
  1019. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  1020. render(): JSX.Element;
  1021. }
  1022. }
  1023. declare module "babylonjs-node-editor/components/diagram/light/lightNodeModel" {
  1024. import { Nullable } from 'babylonjs/types';
  1025. import { Light } from 'babylonjs/Lights/light';
  1026. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1027. import { GlobalState } from "babylonjs-node-editor/globalState";
  1028. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  1029. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  1030. /**
  1031. * Light node model which stores information about a node editor block
  1032. */
  1033. export class LightNodeModel extends DefaultNodeModel {
  1034. private _block;
  1035. /**
  1036. * Light for the node if it exists
  1037. */
  1038. light: Nullable<Light>;
  1039. /**
  1040. * Constructs the node model
  1041. */
  1042. constructor();
  1043. renderProperties(globalState: GlobalState): JSX.Element;
  1044. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1045. }
  1046. }
  1047. declare module "babylonjs-node-editor/components/diagram/light/lightNodeWidget" {
  1048. import * as React from "react";
  1049. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  1050. import { Nullable } from 'babylonjs/types';
  1051. import { GlobalState } from "babylonjs-node-editor/globalState";
  1052. /**
  1053. * GenericNodeWidgetProps
  1054. */
  1055. export interface ILightNodeWidgetProps {
  1056. node: Nullable<LightNodeModel>;
  1057. globalState: GlobalState;
  1058. }
  1059. /**
  1060. * Used to display a node block for the node editor
  1061. */
  1062. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  1063. /**
  1064. * Creates a GenericNodeWidget
  1065. * @param props
  1066. */
  1067. constructor(props: ILightNodeWidgetProps);
  1068. render(): JSX.Element;
  1069. }
  1070. }
  1071. declare module "babylonjs-node-editor/components/diagram/light/lightNodeFactory" {
  1072. import * as SRD from "storm-react-diagrams";
  1073. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  1074. import { GlobalState } from "babylonjs-node-editor/globalState";
  1075. /**
  1076. * Node factory which creates editor nodes
  1077. */
  1078. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  1079. private _globalState;
  1080. /**
  1081. * Constructs a LightNodeFactory
  1082. */
  1083. constructor(globalState: GlobalState);
  1084. /**
  1085. * Generates a node widget
  1086. * @param diagramEngine diagram engine
  1087. * @param node node to generate
  1088. * @returns node widget jsx
  1089. */
  1090. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  1091. /**
  1092. * Gets a new instance of a node model
  1093. * @returns light node model
  1094. */
  1095. getNewInstance(): LightNodeModel;
  1096. }
  1097. }
  1098. declare module "babylonjs-node-editor/sharedComponents/messageDialog" {
  1099. import * as React from "react";
  1100. import { GlobalState } from "babylonjs-node-editor/globalState";
  1101. interface IMessageDialogComponentProps {
  1102. globalState: GlobalState;
  1103. }
  1104. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  1105. message: string;
  1106. isError: boolean;
  1107. }> {
  1108. constructor(props: IMessageDialogComponentProps);
  1109. render(): JSX.Element | null;
  1110. }
  1111. }
  1112. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkFactory" {
  1113. import { DefaultLinkFactory, DefaultLinkWidget } from 'storm-react-diagrams';
  1114. import { AdvancedLinkModel } from "babylonjs-node-editor/components/diagram/link/advancedLinkModel";
  1115. export class AdvancedLinkFactory extends DefaultLinkFactory {
  1116. constructor();
  1117. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  1118. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  1119. }
  1120. }
  1121. declare module "babylonjs-node-editor/components/diagram/remap/remapNodePropertyComponent" {
  1122. import * as React from "react";
  1123. import { GlobalState } from "babylonjs-node-editor/globalState";
  1124. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  1125. interface IRemapPropertyTabComponentProps {
  1126. globalState: GlobalState;
  1127. remapNode: RemapNodeModel;
  1128. }
  1129. export class RemapPropertyTabComponentProps extends React.Component<IRemapPropertyTabComponentProps> {
  1130. constructor(props: IRemapPropertyTabComponentProps);
  1131. forceRebuild(): void;
  1132. render(): JSX.Element;
  1133. }
  1134. }
  1135. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeModel" {
  1136. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1137. import { GlobalState } from "babylonjs-node-editor/globalState";
  1138. import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
  1139. /**
  1140. * Generic node model which stores information about a node editor block
  1141. */
  1142. export class RemapNodeModel extends DefaultNodeModel {
  1143. readonly remapBlock: RemapBlock;
  1144. /**
  1145. * Constructs the node model
  1146. */
  1147. constructor();
  1148. renderProperties(globalState: GlobalState): JSX.Element;
  1149. }
  1150. }
  1151. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeWidget" {
  1152. import * as React from "react";
  1153. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  1154. import { Nullable } from 'babylonjs/types';
  1155. import { GlobalState } from "babylonjs-node-editor/globalState";
  1156. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  1157. /**
  1158. * RemapNodeWidgetProps
  1159. */
  1160. export interface RemapNodeWidgetProps {
  1161. node: Nullable<RemapNodeModel>;
  1162. globalState: GlobalState;
  1163. }
  1164. /**
  1165. * Used to display a node block for the node editor
  1166. */
  1167. export class RemapNodeWidget extends React.Component<RemapNodeWidgetProps> {
  1168. /**
  1169. * Creates a GenericNodeWidget
  1170. * @param props
  1171. */
  1172. constructor(props: RemapNodeWidgetProps);
  1173. renderValue(value: string): JSX.Element | null;
  1174. extractInputValue(connectionPoint: NodeMaterialConnectionPoint): any;
  1175. render(): JSX.Element;
  1176. }
  1177. }
  1178. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeFactory" {
  1179. import * as SRD from "storm-react-diagrams";
  1180. import { GlobalState } from "babylonjs-node-editor/globalState";
  1181. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  1182. /**
  1183. * Node factory which creates editor nodes
  1184. */
  1185. export class RemapNodeFactory extends SRD.AbstractNodeFactory {
  1186. private _globalState;
  1187. /**
  1188. * Constructs a GenericNodeFactory
  1189. */
  1190. constructor(globalState: GlobalState);
  1191. /**
  1192. * Generates a node widget
  1193. * @param diagramEngine diagram engine
  1194. * @param node node to generate
  1195. * @returns node widget jsx
  1196. */
  1197. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: RemapNodeModel): JSX.Element;
  1198. /**
  1199. * Gets a new instance of a node model
  1200. * @returns input node model
  1201. */
  1202. getNewInstance(): RemapNodeModel;
  1203. }
  1204. }
  1205. declare module "babylonjs-node-editor/graphHelper" {
  1206. import * as dagre from "babylonjs-node-editor/dagre";
  1207. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  1208. export class GraphHelper {
  1209. static DistributeGraph(model: DiagramModel): dagre.Node[];
  1210. private static _MapElements;
  1211. private static _MapEdges;
  1212. }
  1213. }
  1214. declare module "babylonjs-node-editor/components/preview/previewMeshType" {
  1215. export enum PreviewMeshType {
  1216. Sphere = 0,
  1217. Box = 1,
  1218. Torus = 2,
  1219. Cylinder = 3,
  1220. Plane = 4,
  1221. ShaderBall = 5,
  1222. Custom = 6
  1223. }
  1224. }
  1225. declare module "babylonjs-node-editor/components/preview/previewManager" {
  1226. import { GlobalState } from "babylonjs-node-editor/globalState";
  1227. export class PreviewManager {
  1228. private _nodeMaterial;
  1229. private _onBuildObserver;
  1230. private _onPreviewCommandActivatedObserver;
  1231. private _onAnimationCommandActivatedObserver;
  1232. private _onUpdateRequiredObserver;
  1233. private _onPreviewBackgroundChangedObserver;
  1234. private _engine;
  1235. private _scene;
  1236. private _light;
  1237. private _meshes;
  1238. private _camera;
  1239. private _material;
  1240. private _globalState;
  1241. private _currentType;
  1242. constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
  1243. private _handleAnimations;
  1244. private _prepareMeshes;
  1245. private _refreshPreviewMesh;
  1246. private _forceCompilationAsync;
  1247. private _updatePreview;
  1248. dispose(): void;
  1249. }
  1250. }
  1251. declare module "babylonjs-node-editor/components/preview/previewMeshControlComponent" {
  1252. import * as React from "react";
  1253. import { GlobalState } from "babylonjs-node-editor/globalState";
  1254. import { PreviewMeshType } from "babylonjs-node-editor/components/preview/previewMeshType";
  1255. interface IPreviewMeshControlComponent {
  1256. globalState: GlobalState;
  1257. }
  1258. export class PreviewMeshControlComponent extends React.Component<IPreviewMeshControlComponent> {
  1259. changeMeshType(newOne: PreviewMeshType): void;
  1260. useCustomMesh(evt: any): void;
  1261. render(): JSX.Element;
  1262. }
  1263. }
  1264. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodePropertyComponent" {
  1265. import * as React from "react";
  1266. import { GlobalState } from "babylonjs-node-editor/globalState";
  1267. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1268. interface ITrigonometryTabComponentProps {
  1269. globalState: GlobalState;
  1270. trigonometryNode: TrigonometryNodeModel;
  1271. }
  1272. export class TrigonometryPropertyTabComponentProps extends React.Component<ITrigonometryTabComponentProps> {
  1273. constructor(props: ITrigonometryTabComponentProps);
  1274. render(): JSX.Element;
  1275. }
  1276. }
  1277. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel" {
  1278. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1279. import { GlobalState } from "babylonjs-node-editor/globalState";
  1280. import { TrigonometryBlock } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
  1281. /**
  1282. * Generic node model which stores information about a node editor block
  1283. */
  1284. export class TrigonometryNodeModel extends DefaultNodeModel {
  1285. readonly trigonometryBlock: TrigonometryBlock;
  1286. /**
  1287. * Constructs the node model
  1288. */
  1289. constructor();
  1290. renderProperties(globalState: GlobalState): JSX.Element;
  1291. }
  1292. }
  1293. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeWidget" {
  1294. import * as React from "react";
  1295. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1296. import { Nullable } from 'babylonjs/types';
  1297. import { GlobalState } from "babylonjs-node-editor/globalState";
  1298. /**
  1299. * GenericNodeWidgetProps
  1300. */
  1301. export interface ITrigonometryNodeWidgetProps {
  1302. node: Nullable<TrigonometryNodeModel>;
  1303. globalState: GlobalState;
  1304. }
  1305. /**
  1306. * Used to display a node block for the node editor
  1307. */
  1308. export class TrigonometryNodeWidget extends React.Component<ITrigonometryNodeWidgetProps> {
  1309. /**
  1310. * Creates a GenericNodeWidget
  1311. * @param props
  1312. */
  1313. constructor(props: ITrigonometryNodeWidgetProps);
  1314. render(): JSX.Element;
  1315. }
  1316. }
  1317. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeFactory" {
  1318. import * as SRD from "storm-react-diagrams";
  1319. import { GlobalState } from "babylonjs-node-editor/globalState";
  1320. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1321. /**
  1322. * Node factory which creates editor nodes
  1323. */
  1324. export class TrigonometryNodeFactory extends SRD.AbstractNodeFactory {
  1325. private _globalState;
  1326. /**
  1327. * Constructs a GenericNodeFactory
  1328. */
  1329. constructor(globalState: GlobalState);
  1330. /**
  1331. * Generates a node widget
  1332. * @param diagramEngine diagram engine
  1333. * @param node node to generate
  1334. * @returns node widget jsx
  1335. */
  1336. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TrigonometryNodeModel): JSX.Element;
  1337. /**
  1338. * Gets a new instance of a node model
  1339. * @returns input node model
  1340. */
  1341. getNewInstance(): TrigonometryNodeModel;
  1342. }
  1343. }
  1344. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodePropertyComponent" {
  1345. import * as React from "react";
  1346. import { GlobalState } from "babylonjs-node-editor/globalState";
  1347. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1348. interface IClampPropertyTabComponentProps {
  1349. globalState: GlobalState;
  1350. remapNode: ClampNodeModel;
  1351. }
  1352. export class ClampPropertyTabComponentProps extends React.Component<IClampPropertyTabComponentProps> {
  1353. constructor(props: IClampPropertyTabComponentProps);
  1354. forceRebuild(): void;
  1355. render(): JSX.Element;
  1356. }
  1357. }
  1358. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeModel" {
  1359. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1360. import { GlobalState } from "babylonjs-node-editor/globalState";
  1361. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  1362. export class ClampNodeModel extends DefaultNodeModel {
  1363. readonly clampBlock: ClampBlock;
  1364. /**
  1365. * Constructs the node model
  1366. */
  1367. constructor();
  1368. renderProperties(globalState: GlobalState): JSX.Element;
  1369. }
  1370. }
  1371. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeWidget" {
  1372. import * as React from "react";
  1373. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1374. import { Nullable } from 'babylonjs/types';
  1375. import { GlobalState } from "babylonjs-node-editor/globalState";
  1376. export interface ClampNodeWidgetProps {
  1377. node: Nullable<ClampNodeModel>;
  1378. globalState: GlobalState;
  1379. }
  1380. export class ClampNodeWidget extends React.Component<ClampNodeWidgetProps> {
  1381. constructor(props: ClampNodeWidgetProps);
  1382. renderValue(value: string): JSX.Element | null;
  1383. render(): JSX.Element;
  1384. }
  1385. }
  1386. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeFactory" {
  1387. import * as SRD from "storm-react-diagrams";
  1388. import { GlobalState } from "babylonjs-node-editor/globalState";
  1389. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1390. export class ClampNodeFactory extends SRD.AbstractNodeFactory {
  1391. private _globalState;
  1392. constructor(globalState: GlobalState);
  1393. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: ClampNodeModel): JSX.Element;
  1394. getNewInstance(): ClampNodeModel;
  1395. }
  1396. }
  1397. declare module "babylonjs-node-editor/components/diagram/lightInformation/lightInformationPropertyTabComponent" {
  1398. import * as React from "react";
  1399. import { GlobalState } from "babylonjs-node-editor/globalState";
  1400. import { LightInformationNodeModel } from "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeModel";
  1401. interface ILightPropertyTabComponentProps {
  1402. globalState: GlobalState;
  1403. node: LightInformationNodeModel;
  1404. }
  1405. export class LightInformationPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  1406. render(): JSX.Element;
  1407. }
  1408. }
  1409. declare module "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeModel" {
  1410. import { Nullable } from 'babylonjs/types';
  1411. import { Light } from 'babylonjs/Lights/light';
  1412. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1413. import { GlobalState } from "babylonjs-node-editor/globalState";
  1414. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  1415. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  1416. export class LightInformationNodeModel extends DefaultNodeModel {
  1417. private _block;
  1418. /**
  1419. * Light for the node if it exists
  1420. */
  1421. light: Nullable<Light>;
  1422. /**
  1423. * Constructs the node model
  1424. */
  1425. constructor();
  1426. renderProperties(globalState: GlobalState): JSX.Element;
  1427. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1428. }
  1429. }
  1430. declare module "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeWidget" {
  1431. import * as React from "react";
  1432. import { LightInformationNodeModel } from "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeModel";
  1433. import { Nullable } from 'babylonjs/types';
  1434. import { GlobalState } from "babylonjs-node-editor/globalState";
  1435. /**
  1436. * GenericNodeWidgetProps
  1437. */
  1438. export interface ILightInformationNodeWidgetProps {
  1439. node: Nullable<LightInformationNodeModel>;
  1440. globalState: GlobalState;
  1441. }
  1442. /**
  1443. * Used to display a node block for the node editor
  1444. */
  1445. export class LightInformationNodeWidget extends React.Component<ILightInformationNodeWidgetProps> {
  1446. /**
  1447. * Creates a GenericNodeWidget
  1448. * @param props
  1449. */
  1450. constructor(props: ILightInformationNodeWidgetProps);
  1451. render(): JSX.Element;
  1452. }
  1453. }
  1454. declare module "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeFactory" {
  1455. import * as SRD from "storm-react-diagrams";
  1456. import { LightInformationNodeModel } from "babylonjs-node-editor/components/diagram/lightInformation/lightInformationNodeModel";
  1457. import { GlobalState } from "babylonjs-node-editor/globalState";
  1458. /**
  1459. * Node factory which creates editor nodes
  1460. */
  1461. export class LightInformationNodeFactory extends SRD.AbstractNodeFactory {
  1462. private _globalState;
  1463. /**
  1464. * Constructs a LightNodeFactory
  1465. */
  1466. constructor(globalState: GlobalState);
  1467. /**
  1468. * Generates a node widget
  1469. * @param diagramEngine diagram engine
  1470. * @param node node to generate
  1471. * @returns node widget jsx
  1472. */
  1473. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightInformationNodeModel): JSX.Element;
  1474. /**
  1475. * Gets a new instance of a node model
  1476. * @returns light node model
  1477. */
  1478. getNewInstance(): LightInformationNodeModel;
  1479. }
  1480. }
  1481. declare module "babylonjs-node-editor/components/preview/previewAreaComponent" {
  1482. import * as React from "react";
  1483. import { GlobalState } from "babylonjs-node-editor/globalState";
  1484. interface IPreviewAreaComponent {
  1485. globalState: GlobalState;
  1486. width: number;
  1487. }
  1488. export class PreviewAreaComponent extends React.Component<IPreviewAreaComponent> {
  1489. changeAnimation(): void;
  1490. changeBackground(value: string): void;
  1491. render(): JSX.Element;
  1492. }
  1493. }
  1494. declare module "babylonjs-node-editor/graphEditor" {
  1495. import { LinkModel } from "storm-react-diagrams";
  1496. import * as React from "react";
  1497. import { GlobalState } from "babylonjs-node-editor/globalState";
  1498. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1499. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  1500. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1501. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1502. import { Nullable } from 'babylonjs/types';
  1503. import { INodeLocationInfo } from "babylonjs-node-editor/nodeLocationInfo";
  1504. interface IGraphEditorProps {
  1505. globalState: GlobalState;
  1506. }
  1507. export class NodeCreationOptions {
  1508. nodeMaterialBlock: NodeMaterialBlock;
  1509. type?: string;
  1510. connection?: NodeMaterialConnectionPoint;
  1511. }
  1512. export class GraphEditor extends React.Component<IGraphEditorProps> {
  1513. private readonly NodeWidth;
  1514. private _engine;
  1515. private _model;
  1516. private _startX;
  1517. private _moveInProgress;
  1518. private _leftWidth;
  1519. private _rightWidth;
  1520. private _nodes;
  1521. private _blocks;
  1522. private _previewManager;
  1523. private _copiedNodes;
  1524. private _mouseLocationX;
  1525. private _mouseLocationY;
  1526. private _onWidgetKeyUpPointer;
  1527. /** @hidden */
  1528. _toAdd: LinkModel[] | null;
  1529. /**
  1530. * Creates a node and recursivly creates its parent nodes from it's input
  1531. * @param nodeMaterialBlock
  1532. */
  1533. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  1534. addValueNode(type: string): DefaultNodeModel;
  1535. onWidgetKeyUp(evt: any): void;
  1536. componentDidMount(): void;
  1537. componentWillUnmount(): void;
  1538. constructor(props: IGraphEditorProps);
  1539. zoomToFit(retry?: number): void;
  1540. buildMaterial(): void;
  1541. applyFragmentOutputConstraints(rootInput: DefaultPortModel): void;
  1542. build(needToWait?: boolean, locations?: Nullable<INodeLocationInfo[]>): void;
  1543. reOrganize(locations?: Nullable<INodeLocationInfo[]>): void;
  1544. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1545. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1546. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  1547. buildColumnLayout(): string;
  1548. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  1549. render(): JSX.Element;
  1550. }
  1551. }
  1552. declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
  1553. import { NodeModel, DiagramModel } from "storm-react-diagrams";
  1554. import { Nullable } from 'babylonjs/types';
  1555. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1556. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  1557. import { GlobalState } from "babylonjs-node-editor/globalState";
  1558. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1559. /**
  1560. * Generic node model which stores information about a node editor block
  1561. */
  1562. export class DefaultNodeModel extends NodeModel {
  1563. /**
  1564. * The babylon block this node represents
  1565. */
  1566. block: Nullable<NodeMaterialBlock>;
  1567. ports: {
  1568. [s: string]: DefaultPortModel;
  1569. };
  1570. /**
  1571. * Constructs the node model
  1572. */
  1573. constructor(key: string);
  1574. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1575. renderProperties(globalState: GlobalState): JSX.Element | null;
  1576. }
  1577. }
  1578. declare module "babylonjs-node-editor/globalState" {
  1579. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1580. import { Nullable } from "babylonjs/types";
  1581. import { Observable } from 'babylonjs/Misc/observable';
  1582. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1583. import { LogEntry } from "babylonjs-node-editor/components/log/logComponent";
  1584. import { NodeModel } from 'storm-react-diagrams';
  1585. import { INodeLocationInfo } from "babylonjs-node-editor/nodeLocationInfo";
  1586. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1587. import { PreviewMeshType } from "babylonjs-node-editor/components/preview/previewMeshType";
  1588. import { Color4 } from 'babylonjs/Maths/math.color';
  1589. export class GlobalState {
  1590. nodeMaterial: NodeMaterial;
  1591. hostElement: HTMLElement;
  1592. hostDocument: HTMLDocument;
  1593. onSelectionChangedObservable: Observable<Nullable<DefaultNodeModel>>;
  1594. onRebuildRequiredObservable: Observable<void>;
  1595. onResetRequiredObservable: Observable<Nullable<INodeLocationInfo[]>>;
  1596. onUpdateRequiredObservable: Observable<void>;
  1597. onZoomToFitRequiredObservable: Observable<void>;
  1598. onReOrganizedRequiredObservable: Observable<void>;
  1599. onLogRequiredObservable: Observable<LogEntry>;
  1600. onErrorMessageDialogRequiredObservable: Observable<string>;
  1601. onPreviewCommandActivated: Observable<void>;
  1602. onPreviewBackgroundChanged: Observable<void>;
  1603. onAnimationCommandActivated: Observable<void>;
  1604. onGetNodeFromBlock: (block: NodeMaterialBlock) => NodeModel;
  1605. previewMeshType: PreviewMeshType;
  1606. previewMeshFile: File;
  1607. rotatePreview: boolean;
  1608. backgroundColor: Color4;
  1609. blockKeyboardEvents: boolean;
  1610. customSave?: {
  1611. label: string;
  1612. action: (data: string) => Promise<void>;
  1613. };
  1614. constructor();
  1615. }
  1616. }
  1617. declare module "babylonjs-node-editor/sharedComponents/popup" {
  1618. export class Popup {
  1619. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1620. private static _CopyStyles;
  1621. }
  1622. }
  1623. declare module "babylonjs-node-editor/nodeEditor" {
  1624. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1625. import { Observable } from 'babylonjs/Misc/observable';
  1626. /**
  1627. * Interface used to specify creation options for the node editor
  1628. */
  1629. export interface INodeEditorOptions {
  1630. nodeMaterial: NodeMaterial;
  1631. hostElement?: HTMLElement;
  1632. customSave?: {
  1633. label: string;
  1634. action: (data: string) => Promise<void>;
  1635. };
  1636. customLoadObservable?: Observable<any>;
  1637. }
  1638. /**
  1639. * Class used to create a node editor
  1640. */
  1641. export class NodeEditor {
  1642. private static _CurrentState;
  1643. /**
  1644. * Show the node editor
  1645. * @param options defines the options to use to configure the node editor
  1646. */
  1647. static Show(options: INodeEditorOptions): void;
  1648. }
  1649. }
  1650. declare module "babylonjs-node-editor/index" {
  1651. export * from "babylonjs-node-editor/nodeEditor";
  1652. }
  1653. declare module "babylonjs-node-editor/legacy/legacy" {
  1654. export * from "babylonjs-node-editor/index";
  1655. }
  1656. declare module "babylonjs-node-editor" {
  1657. export * from "babylonjs-node-editor/legacy/legacy";
  1658. }
  1659. /// <reference types="react" />
  1660. declare module NODEEDITOR {
  1661. export class BlockTools {
  1662. static GetBlockFromString(data: string, scene: BABYLON.Scene): BABYLON.BonesBlock | BABYLON.InstancesBlock | BABYLON.MorphTargetsBlock | BABYLON.AlphaTestBlock | BABYLON.ImageProcessingBlock | BABYLON.ColorMergerBlock | BABYLON.VectorMergerBlock | BABYLON.ColorSplitterBlock | BABYLON.VectorSplitterBlock | BABYLON.TextureBlock | BABYLON.ReflectionTextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.ScaleBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.PowBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | BABYLON.TrigonometryBlock | BABYLON.RemapBlock | BABYLON.NormalizeBlock | BABYLON.FresnelBlock | BABYLON.LerpBlock | BABYLON.DivideBlock | BABYLON.SubtractBlock | BABYLON.StepBlock | BABYLON.OneMinusBlock | BABYLON.ViewDirectionBlock | BABYLON.LightInformationBlock | BABYLON.MaxBlock | BABYLON.MinBlock | BABYLON.LengthBlock | BABYLON.DistanceBlock | BABYLON.NegateBlock | BABYLON.PerturbNormalBlock | BABYLON.InputBlock | null;
  1663. static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1664. static GetConnectionNodeTypeFromString(type: string): BABYLON.NodeMaterialBlockConnectionPointTypes.Float | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector2 | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector3 | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector4 | BABYLON.NodeMaterialBlockConnectionPointTypes.Color3 | BABYLON.NodeMaterialBlockConnectionPointTypes.Color4 | BABYLON.NodeMaterialBlockConnectionPointTypes.Matrix | BABYLON.NodeMaterialBlockConnectionPointTypes.AutoDetect;
  1665. static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  1666. }
  1667. }
  1668. declare module NODEEDITOR {
  1669. export class DataStorage {
  1670. private static _InMemoryStorage;
  1671. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  1672. static StoreBoolean(key: string, value: boolean): void;
  1673. static ReadNumber(key: string, defaultValue: number): number;
  1674. static StoreNumber(key: string, value: number): void;
  1675. }
  1676. }
  1677. declare module NODEEDITOR {
  1678. interface ITextLineComponentProps {
  1679. label: string;
  1680. value: string;
  1681. color?: string;
  1682. underline?: boolean;
  1683. onLink?: () => void;
  1684. }
  1685. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1686. constructor(props: ITextLineComponentProps);
  1687. onLink(): void;
  1688. renderContent(): JSX.Element;
  1689. render(): JSX.Element;
  1690. }
  1691. }
  1692. declare module NODEEDITOR {
  1693. interface ILineContainerComponentProps {
  1694. title: string;
  1695. children: any[] | any;
  1696. closed?: boolean;
  1697. }
  1698. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  1699. isExpanded: boolean;
  1700. }> {
  1701. constructor(props: ILineContainerComponentProps);
  1702. switchExpandedState(): void;
  1703. renderHeader(): JSX.Element;
  1704. render(): JSX.Element;
  1705. }
  1706. }
  1707. declare module NODEEDITOR {
  1708. export class PropertyChangedEvent {
  1709. object: any;
  1710. property: string;
  1711. value: any;
  1712. initialValue: any;
  1713. }
  1714. }
  1715. declare module NODEEDITOR {
  1716. interface ITextInputLineComponentProps {
  1717. label: string;
  1718. globalState: GlobalState;
  1719. target?: any;
  1720. propertyName?: string;
  1721. value?: string;
  1722. onChange?: (value: string) => void;
  1723. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1724. }
  1725. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  1726. value: string;
  1727. }> {
  1728. private _localChange;
  1729. constructor(props: ITextInputLineComponentProps);
  1730. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  1731. value: string;
  1732. }): boolean;
  1733. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  1734. updateValue(value: string, raisePropertyChanged: boolean): void;
  1735. render(): JSX.Element;
  1736. }
  1737. }
  1738. declare module NODEEDITOR {
  1739. export interface ICheckBoxLineComponentProps {
  1740. label: string;
  1741. target?: any;
  1742. propertyName?: string;
  1743. isSelected?: () => boolean;
  1744. onSelect?: (value: boolean) => void;
  1745. onValueChanged?: () => void;
  1746. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1747. }
  1748. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  1749. isSelected: boolean;
  1750. }> {
  1751. private static _UniqueIdSeed;
  1752. private _uniqueId;
  1753. private _localChange;
  1754. constructor(props: ICheckBoxLineComponentProps);
  1755. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  1756. isSelected: boolean;
  1757. }): boolean;
  1758. onChange(): void;
  1759. render(): JSX.Element;
  1760. }
  1761. }
  1762. declare module NODEEDITOR {
  1763. /**
  1764. * Generic node model which stores information about a node editor block
  1765. */
  1766. export class GenericNodeModel extends DefaultNodeModel {
  1767. /**
  1768. * BABYLON.Vector2 for the node if it exists
  1769. */
  1770. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  1771. /**
  1772. * BABYLON.Vector3 for the node if it exists
  1773. */
  1774. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  1775. /**
  1776. * BABYLON.Vector4 for the node if it exists
  1777. */
  1778. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  1779. /**
  1780. * BABYLON.Matrix for the node if it exists
  1781. */
  1782. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  1783. /**
  1784. * Constructs the node model
  1785. */
  1786. constructor();
  1787. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1788. renderProperties(globalState: GlobalState): JSX.Element;
  1789. }
  1790. }
  1791. declare module NODEEDITOR {
  1792. export class AdvancedLinkModel extends DefaultLinkModel {
  1793. constructor();
  1794. }
  1795. }
  1796. declare module NODEEDITOR {
  1797. /**
  1798. * Port model
  1799. */
  1800. export class DefaultPortModel extends PortModel {
  1801. /**
  1802. * If the port is input or output
  1803. */
  1804. position: string | "input" | "output";
  1805. /**
  1806. * What the port is connected to
  1807. */
  1808. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  1809. defaultValue: any;
  1810. static idCounter: number;
  1811. constructor(name: string, type?: string);
  1812. canLinkToPort(port: DefaultPortModel): boolean;
  1813. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  1814. getNodeModel(): DefaultNodeModel;
  1815. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  1816. createLinkModel(): LinkModel;
  1817. static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
  1818. input: DefaultPortModel;
  1819. output: DefaultPortModel;
  1820. } | null;
  1821. }
  1822. }
  1823. declare module NODEEDITOR {
  1824. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  1825. name: string;
  1826. node: NodeModel;
  1827. style: any;
  1828. }
  1829. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  1830. constructor(props: IDefaultPortWidgetProps);
  1831. getClassName(): string;
  1832. render(): JSX.Element;
  1833. }
  1834. }
  1835. declare module NODEEDITOR {
  1836. export class PortHelper {
  1837. private static _GetPortTypeIndicator;
  1838. static _GetPortStyle(type: BABYLON.NodeMaterialBlockConnectionPointTypes): {
  1839. background: string;
  1840. };
  1841. static GenerateOutputPorts(node: BABYLON.Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  1842. static GenerateInputPorts(node: BABYLON.Nullable<DefaultNodeModel>, includeOnly?: string[], ignoreLabel?: boolean): JSX.Element[];
  1843. }
  1844. }
  1845. declare module NODEEDITOR {
  1846. /**
  1847. * GenericNodeWidgetProps
  1848. */
  1849. export interface GenericNodeWidgetProps {
  1850. node: BABYLON.Nullable<GenericNodeModel>;
  1851. globalState: GlobalState;
  1852. }
  1853. /**
  1854. * GenericNodeWidgetState
  1855. */
  1856. export interface GenericNodeWidgetState {
  1857. }
  1858. /**
  1859. * Used to display a node block for the node editor
  1860. */
  1861. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  1862. /**
  1863. * Creates a GenericNodeWidget
  1864. * @param props
  1865. */
  1866. constructor(props: GenericNodeWidgetProps);
  1867. render(): JSX.Element;
  1868. }
  1869. }
  1870. declare module NODEEDITOR {
  1871. /**
  1872. * Node factory which creates editor nodes
  1873. */
  1874. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  1875. private _globalState;
  1876. /**
  1877. * Constructs a GenericNodeFactory
  1878. */
  1879. constructor(globalState: GlobalState);
  1880. /**
  1881. * Generates a node widget
  1882. * @param diagramEngine diagram engine
  1883. * @param node node to generate
  1884. * @returns node widget jsx
  1885. */
  1886. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  1887. /**
  1888. * Gets a new instance of a node model
  1889. * @returns generic node model
  1890. */
  1891. getNewInstance(): GenericNodeModel;
  1892. }
  1893. }
  1894. declare module NODEEDITOR {
  1895. export interface IButtonLineComponentProps {
  1896. data: string;
  1897. }
  1898. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  1899. constructor(props: IButtonLineComponentProps);
  1900. render(): JSX.Element;
  1901. }
  1902. }
  1903. declare module NODEEDITOR {
  1904. interface INodeListComponentProps {
  1905. globalState: GlobalState;
  1906. }
  1907. export class NodeListComponent extends React.Component<INodeListComponentProps, {
  1908. filter: string;
  1909. }> {
  1910. constructor(props: INodeListComponentProps);
  1911. filterContent(filter: string): void;
  1912. render(): JSX.Element;
  1913. }
  1914. }
  1915. declare module NODEEDITOR {
  1916. export interface IButtonLineComponentProps {
  1917. label: string;
  1918. onClick: () => void;
  1919. }
  1920. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1921. constructor(props: IButtonLineComponentProps);
  1922. render(): JSX.Element;
  1923. }
  1924. }
  1925. declare module NODEEDITOR {
  1926. export class StringTools {
  1927. private static _SaveAs;
  1928. private static _Click;
  1929. /**
  1930. * Gets the base math type of node material block connection point.
  1931. * @param type Type to parse.
  1932. */
  1933. static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1934. /**
  1935. * Download a string into a file that will be saved locally by the browser
  1936. * @param content defines the string to download locally as a file
  1937. */
  1938. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  1939. }
  1940. }
  1941. declare module NODEEDITOR {
  1942. interface IFileButtonLineComponentProps {
  1943. label: string;
  1944. onClick: (file: File) => void;
  1945. accept: string;
  1946. }
  1947. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1948. constructor(props: IFileButtonLineComponentProps);
  1949. onChange(evt: any): void;
  1950. render(): JSX.Element;
  1951. }
  1952. }
  1953. declare module NODEEDITOR {
  1954. export interface INodeLocationInfo {
  1955. blockId: number;
  1956. x: number;
  1957. y: number;
  1958. }
  1959. }
  1960. declare module NODEEDITOR {
  1961. export class SerializationTools {
  1962. static Serialize(material: BABYLON.NodeMaterial, globalState: GlobalState): string;
  1963. static Deserialize(serializationObject: any, globalState: GlobalState): void;
  1964. }
  1965. }
  1966. declare module NODEEDITOR {
  1967. interface IPropertyTabComponentProps {
  1968. globalState: GlobalState;
  1969. }
  1970. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  1971. currentNode: BABYLON.Nullable<DefaultNodeModel>;
  1972. }> {
  1973. constructor(props: IPropertyTabComponentProps);
  1974. componentDidMount(): void;
  1975. load(file: File): void;
  1976. save(): void;
  1977. customSave(): void;
  1978. render(): JSX.Element;
  1979. }
  1980. }
  1981. declare module NODEEDITOR {
  1982. interface IPortalProps {
  1983. globalState: GlobalState;
  1984. }
  1985. export class Portal extends React.Component<IPortalProps> {
  1986. render(): React.ReactPortal;
  1987. }
  1988. }
  1989. declare module NODEEDITOR {
  1990. interface ISliderLineComponentProps {
  1991. label: string;
  1992. target?: any;
  1993. propertyName?: string;
  1994. minimum: number;
  1995. maximum: number;
  1996. step: number;
  1997. directValue?: number;
  1998. useEuler?: boolean;
  1999. onChange?: (value: number) => void;
  2000. onInput?: (value: number) => void;
  2001. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2002. decimalCount?: number;
  2003. }
  2004. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  2005. value: number;
  2006. }> {
  2007. private _localChange;
  2008. constructor(props: ISliderLineComponentProps);
  2009. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  2010. value: number;
  2011. }): boolean;
  2012. onChange(newValueString: any): void;
  2013. onInput(newValueString: any): void;
  2014. prepareDataToRead(value: number): number;
  2015. render(): JSX.Element;
  2016. }
  2017. }
  2018. declare module NODEEDITOR {
  2019. interface IFloatLineComponentProps {
  2020. label: string;
  2021. target: any;
  2022. propertyName: string;
  2023. onChange?: (newValue: number) => void;
  2024. isInteger?: boolean;
  2025. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2026. additionalClass?: string;
  2027. step?: string;
  2028. digits?: number;
  2029. }
  2030. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  2031. value: string;
  2032. }> {
  2033. private _localChange;
  2034. private _store;
  2035. constructor(props: IFloatLineComponentProps);
  2036. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  2037. value: string;
  2038. }): boolean;
  2039. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  2040. updateValue(valueString: string): void;
  2041. render(): JSX.Element;
  2042. }
  2043. }
  2044. declare module NODEEDITOR {
  2045. interface ITexturePropertyTabComponentProps {
  2046. globalState: GlobalState;
  2047. node: TextureNodeModel;
  2048. }
  2049. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps, {
  2050. isEmbedded: boolean;
  2051. }> {
  2052. constructor(props: ITexturePropertyTabComponentProps);
  2053. updateAftertextureLoad(): void;
  2054. /**
  2055. * Replaces the texture of the node
  2056. * @param file the file of the texture to use
  2057. */
  2058. replaceTexture(file: File): void;
  2059. replaceTextureWithUrl(url: string): void;
  2060. render(): JSX.Element;
  2061. }
  2062. }
  2063. declare module NODEEDITOR {
  2064. /**
  2065. * BABYLON.Texture node model which stores information about a node editor block
  2066. */
  2067. export class TextureNodeModel extends DefaultNodeModel {
  2068. private _block;
  2069. /**
  2070. * BABYLON.Texture for the node if it exists
  2071. */
  2072. texture: BABYLON.Nullable<BABYLON.Texture>;
  2073. /**
  2074. * Constructs the node model
  2075. */
  2076. constructor();
  2077. renderProperties(globalState: GlobalState): JSX.Element;
  2078. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2079. }
  2080. }
  2081. declare module NODEEDITOR {
  2082. interface ITextureLineComponentProps {
  2083. texture: BABYLON.BaseTexture;
  2084. width: number;
  2085. height: number;
  2086. globalState?: any;
  2087. hideChannelSelect?: boolean;
  2088. }
  2089. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  2090. displayRed: boolean;
  2091. displayGreen: boolean;
  2092. displayBlue: boolean;
  2093. displayAlpha: boolean;
  2094. face: number;
  2095. }> {
  2096. constructor(props: ITextureLineComponentProps);
  2097. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  2098. displayRed: boolean;
  2099. displayGreen: boolean;
  2100. displayBlue: boolean;
  2101. displayAlpha: boolean;
  2102. face: number;
  2103. }): boolean;
  2104. componentDidMount(): void;
  2105. componentDidUpdate(): void;
  2106. updatePreview(): void;
  2107. render(): JSX.Element;
  2108. }
  2109. }
  2110. declare module NODEEDITOR {
  2111. /**
  2112. * GenericNodeWidgetProps
  2113. */
  2114. export interface ITextureNodeWidgetProps {
  2115. node: BABYLON.Nullable<TextureNodeModel>;
  2116. globalState: GlobalState;
  2117. }
  2118. /**
  2119. * Used to display a node block for the node editor
  2120. */
  2121. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  2122. /**
  2123. * Creates a GenericNodeWidget
  2124. * @param props
  2125. */
  2126. constructor(props: ITextureNodeWidgetProps);
  2127. render(): JSX.Element;
  2128. }
  2129. }
  2130. declare module NODEEDITOR {
  2131. /**
  2132. * Node factory which creates editor nodes
  2133. */
  2134. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  2135. private _globalState;
  2136. /**
  2137. * Constructs a TextureNodeFactory
  2138. */
  2139. constructor(globalState: GlobalState);
  2140. /**
  2141. * Generates a node widget
  2142. * @param diagramEngine diagram engine
  2143. * @param node node to generate
  2144. * @returns node widget jsx
  2145. */
  2146. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  2147. /**
  2148. * Gets a new instance of a node model
  2149. * @returns texture node model
  2150. */
  2151. getNewInstance(): TextureNodeModel;
  2152. }
  2153. }
  2154. declare module NODEEDITOR {
  2155. interface INumericInputComponentProps {
  2156. label: string;
  2157. value: number;
  2158. step?: number;
  2159. onChange: (value: number) => void;
  2160. }
  2161. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  2162. value: string;
  2163. }> {
  2164. static defaultProps: {
  2165. step: number;
  2166. };
  2167. private _localChange;
  2168. constructor(props: INumericInputComponentProps);
  2169. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  2170. value: string;
  2171. }): boolean;
  2172. updateValue(evt: any): void;
  2173. render(): JSX.Element;
  2174. }
  2175. }
  2176. declare module NODEEDITOR {
  2177. interface IVector2LineComponentProps {
  2178. label: string;
  2179. target: any;
  2180. propertyName: string;
  2181. step?: number;
  2182. onChange?: (newvalue: BABYLON.Vector2) => void;
  2183. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2184. }
  2185. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  2186. isExpanded: boolean;
  2187. value: BABYLON.Vector2;
  2188. }> {
  2189. static defaultProps: {
  2190. step: number;
  2191. };
  2192. private _localChange;
  2193. constructor(props: IVector2LineComponentProps);
  2194. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  2195. isExpanded: boolean;
  2196. value: BABYLON.Vector2;
  2197. }): boolean;
  2198. switchExpandState(): void;
  2199. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  2200. updateStateX(value: number): void;
  2201. updateStateY(value: number): void;
  2202. render(): JSX.Element;
  2203. }
  2204. }
  2205. declare module NODEEDITOR {
  2206. interface IVector2PropertyTabComponentProps {
  2207. globalState: GlobalState;
  2208. inputBlock: BABYLON.InputBlock;
  2209. }
  2210. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  2211. render(): JSX.Element;
  2212. }
  2213. }
  2214. declare module NODEEDITOR {
  2215. interface IVector3LineComponentProps {
  2216. label: string;
  2217. target: any;
  2218. propertyName: string;
  2219. step?: number;
  2220. onChange?: (newvalue: BABYLON.Vector3) => void;
  2221. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2222. }
  2223. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  2224. isExpanded: boolean;
  2225. value: BABYLON.Vector3;
  2226. }> {
  2227. static defaultProps: {
  2228. step: number;
  2229. };
  2230. private _localChange;
  2231. constructor(props: IVector3LineComponentProps);
  2232. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  2233. isExpanded: boolean;
  2234. value: BABYLON.Vector3;
  2235. }): boolean;
  2236. switchExpandState(): void;
  2237. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  2238. updateVector3(): void;
  2239. updateStateX(value: number): void;
  2240. updateStateY(value: number): void;
  2241. updateStateZ(value: number): void;
  2242. render(): JSX.Element;
  2243. }
  2244. }
  2245. declare module NODEEDITOR {
  2246. interface IVector3PropertyTabComponentProps {
  2247. globalState: GlobalState;
  2248. inputBlock: BABYLON.InputBlock;
  2249. }
  2250. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  2251. render(): JSX.Element;
  2252. }
  2253. }
  2254. declare module NODEEDITOR {
  2255. class ListLineOption {
  2256. label: string;
  2257. value: number | string;
  2258. }
  2259. interface IOptionsLineComponentProps {
  2260. label: string;
  2261. target: any;
  2262. className?: string;
  2263. propertyName?: string;
  2264. options: ListLineOption[];
  2265. noDirectUpdate?: boolean;
  2266. onSelect?: (value: number | string) => void;
  2267. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2268. valuesAreStrings?: boolean;
  2269. defaultIfNull?: number;
  2270. getSelection?: (target: any) => number;
  2271. }
  2272. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  2273. value: number | string;
  2274. }> {
  2275. private _localChange;
  2276. private _getValue;
  2277. constructor(props: IOptionsLineComponentProps);
  2278. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  2279. value: number;
  2280. }): boolean;
  2281. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  2282. updateValue(valueString: string): void;
  2283. render(): JSX.Element;
  2284. }
  2285. }
  2286. declare module NODEEDITOR {
  2287. export interface IColor3LineComponentProps {
  2288. label: string;
  2289. target: any;
  2290. propertyName: string;
  2291. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2292. onChange?: () => void;
  2293. }
  2294. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  2295. isExpanded: boolean;
  2296. color: BABYLON.Color3;
  2297. }> {
  2298. private _localChange;
  2299. constructor(props: IColor3LineComponentProps);
  2300. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  2301. color: BABYLON.Color3;
  2302. }): boolean;
  2303. onChange(newValue: string): void;
  2304. switchExpandState(): void;
  2305. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  2306. updateStateR(value: number): void;
  2307. updateStateG(value: number): void;
  2308. updateStateB(value: number): void;
  2309. copyToClipboard(): void;
  2310. render(): JSX.Element;
  2311. }
  2312. }
  2313. declare module NODEEDITOR {
  2314. interface IColor3PropertyTabComponentProps {
  2315. globalState: GlobalState;
  2316. inputBlock: BABYLON.InputBlock;
  2317. }
  2318. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  2319. render(): JSX.Element;
  2320. }
  2321. }
  2322. declare module NODEEDITOR {
  2323. interface IFloatPropertyTabComponentProps {
  2324. globalState: GlobalState;
  2325. inputBlock: BABYLON.InputBlock;
  2326. }
  2327. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  2328. render(): JSX.Element;
  2329. }
  2330. }
  2331. declare module NODEEDITOR {
  2332. interface IVector4LineComponentProps {
  2333. label: string;
  2334. target?: any;
  2335. propertyName?: string;
  2336. value?: BABYLON.Vector4;
  2337. step?: number;
  2338. onChange?: (newvalue: BABYLON.Vector4) => void;
  2339. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2340. }
  2341. export class Vector4LineComponent extends React.Component<IVector4LineComponentProps, {
  2342. isExpanded: boolean;
  2343. value: BABYLON.Vector4;
  2344. }> {
  2345. static defaultProps: {
  2346. step: number;
  2347. };
  2348. private _localChange;
  2349. constructor(props: IVector4LineComponentProps);
  2350. shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
  2351. isExpanded: boolean;
  2352. value: BABYLON.Vector4;
  2353. }): boolean;
  2354. switchExpandState(): void;
  2355. raiseOnPropertyChanged(previousValue: BABYLON.Vector4): void;
  2356. updateVector4(): void;
  2357. updateStateX(value: number): void;
  2358. updateStateY(value: number): void;
  2359. updateStateZ(value: number): void;
  2360. updateStateW(value: number): void;
  2361. render(): JSX.Element;
  2362. }
  2363. }
  2364. declare module NODEEDITOR {
  2365. interface IVector4PropertyTabComponentProps {
  2366. globalState: GlobalState;
  2367. inputBlock: BABYLON.InputBlock;
  2368. }
  2369. export class Vector4PropertyTabComponent extends React.Component<IVector4PropertyTabComponentProps> {
  2370. render(): JSX.Element;
  2371. }
  2372. }
  2373. declare module NODEEDITOR {
  2374. interface IMatrixLineComponentProps {
  2375. label: string;
  2376. target: any;
  2377. propertyName: string;
  2378. step?: number;
  2379. onChange?: (newValue: BABYLON.Matrix) => void;
  2380. onModeChange?: (mode: number) => void;
  2381. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  2382. mode?: number;
  2383. }
  2384. export class MatrixLineComponent extends React.Component<IMatrixLineComponentProps, {
  2385. value: BABYLON.Matrix;
  2386. mode: number;
  2387. angle: number;
  2388. }> {
  2389. private _localChange;
  2390. constructor(props: IMatrixLineComponentProps);
  2391. shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: {
  2392. value: BABYLON.Matrix;
  2393. mode: number;
  2394. angle: number;
  2395. }): boolean;
  2396. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  2397. updateMatrix(): void;
  2398. updateRow(value: BABYLON.Vector4, row: number): void;
  2399. updateBasedOnMode(value: number): void;
  2400. render(): JSX.Element;
  2401. }
  2402. }
  2403. declare module NODEEDITOR {
  2404. interface IMatrixPropertyTabComponentProps {
  2405. globalState: GlobalState;
  2406. inputBlock: BABYLON.InputBlock;
  2407. }
  2408. export class MatrixPropertyTabComponent extends React.Component<IMatrixPropertyTabComponentProps> {
  2409. render(): JSX.Element;
  2410. }
  2411. }
  2412. declare module NODEEDITOR {
  2413. interface IInputPropertyTabComponentProps {
  2414. globalState: GlobalState;
  2415. inputNode: InputNodeModel;
  2416. }
  2417. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  2418. constructor(props: IInputPropertyTabComponentProps);
  2419. renderValue(globalState: GlobalState): JSX.Element | null;
  2420. setDefaultValue(): void;
  2421. render(): JSX.Element;
  2422. }
  2423. }
  2424. declare module NODEEDITOR {
  2425. /**
  2426. * Generic node model which stores information about a node editor block
  2427. */
  2428. export class InputNodeModel extends DefaultNodeModel {
  2429. readonly inputBlock: BABYLON.InputBlock;
  2430. /**
  2431. * Constructs the node model
  2432. */
  2433. constructor();
  2434. renderProperties(globalState: GlobalState): JSX.Element;
  2435. }
  2436. }
  2437. declare module NODEEDITOR {
  2438. /**
  2439. * GenericNodeWidgetProps
  2440. */
  2441. export interface IInputNodeWidgetProps {
  2442. node: BABYLON.Nullable<InputNodeModel>;
  2443. globalState: GlobalState;
  2444. }
  2445. /**
  2446. * Used to display a node block for the node editor
  2447. */
  2448. export class InputNodeWidget extends React.Component<IInputNodeWidgetProps> {
  2449. /**
  2450. * Creates a GenericNodeWidget
  2451. * @param props
  2452. */
  2453. constructor(props: IInputNodeWidgetProps);
  2454. renderValue(value: string): JSX.Element | null;
  2455. render(): JSX.Element | null;
  2456. }
  2457. }
  2458. declare module NODEEDITOR {
  2459. /**
  2460. * Node factory which creates editor nodes
  2461. */
  2462. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  2463. private _globalState;
  2464. /**
  2465. * Constructs a GenericNodeFactory
  2466. */
  2467. constructor(globalState: GlobalState);
  2468. /**
  2469. * Generates a node widget
  2470. * @param diagramEngine diagram engine
  2471. * @param node node to generate
  2472. * @returns node widget jsx
  2473. */
  2474. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  2475. /**
  2476. * Gets a new instance of a node model
  2477. * @returns input node model
  2478. */
  2479. getNewInstance(): InputNodeModel;
  2480. }
  2481. }
  2482. declare module NODEEDITOR {
  2483. interface ILogComponentProps {
  2484. globalState: GlobalState;
  2485. }
  2486. export class LogEntry {
  2487. message: string;
  2488. isError: boolean;
  2489. constructor(message: string, isError: boolean);
  2490. }
  2491. export class LogComponent extends React.Component<ILogComponentProps, {
  2492. logs: LogEntry[];
  2493. }> {
  2494. constructor(props: ILogComponentProps);
  2495. componentDidMount(): void;
  2496. componentDidUpdate(): void;
  2497. render(): JSX.Element;
  2498. }
  2499. }
  2500. declare module NODEEDITOR {
  2501. interface ILightPropertyTabComponentProps {
  2502. globalState: GlobalState;
  2503. node: LightNodeModel;
  2504. }
  2505. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  2506. render(): JSX.Element;
  2507. }
  2508. }
  2509. declare module NODEEDITOR {
  2510. /**
  2511. * BABYLON.Light node model which stores information about a node editor block
  2512. */
  2513. export class LightNodeModel extends DefaultNodeModel {
  2514. private _block;
  2515. /**
  2516. * BABYLON.Light for the node if it exists
  2517. */
  2518. light: BABYLON.Nullable<BABYLON.Light>;
  2519. /**
  2520. * Constructs the node model
  2521. */
  2522. constructor();
  2523. renderProperties(globalState: GlobalState): JSX.Element;
  2524. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2525. }
  2526. }
  2527. declare module NODEEDITOR {
  2528. /**
  2529. * GenericNodeWidgetProps
  2530. */
  2531. export interface ILightNodeWidgetProps {
  2532. node: BABYLON.Nullable<LightNodeModel>;
  2533. globalState: GlobalState;
  2534. }
  2535. /**
  2536. * Used to display a node block for the node editor
  2537. */
  2538. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  2539. /**
  2540. * Creates a GenericNodeWidget
  2541. * @param props
  2542. */
  2543. constructor(props: ILightNodeWidgetProps);
  2544. render(): JSX.Element;
  2545. }
  2546. }
  2547. declare module NODEEDITOR {
  2548. /**
  2549. * Node factory which creates editor nodes
  2550. */
  2551. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  2552. private _globalState;
  2553. /**
  2554. * Constructs a LightNodeFactory
  2555. */
  2556. constructor(globalState: GlobalState);
  2557. /**
  2558. * Generates a node widget
  2559. * @param diagramEngine diagram engine
  2560. * @param node node to generate
  2561. * @returns node widget jsx
  2562. */
  2563. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  2564. /**
  2565. * Gets a new instance of a node model
  2566. * @returns light node model
  2567. */
  2568. getNewInstance(): LightNodeModel;
  2569. }
  2570. }
  2571. declare module NODEEDITOR {
  2572. interface IMessageDialogComponentProps {
  2573. globalState: GlobalState;
  2574. }
  2575. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  2576. message: string;
  2577. isError: boolean;
  2578. }> {
  2579. constructor(props: IMessageDialogComponentProps);
  2580. render(): JSX.Element | null;
  2581. }
  2582. }
  2583. declare module NODEEDITOR {
  2584. export class AdvancedLinkFactory extends DefaultLinkFactory {
  2585. constructor();
  2586. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  2587. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  2588. }
  2589. }
  2590. declare module NODEEDITOR {
  2591. interface IRemapPropertyTabComponentProps {
  2592. globalState: GlobalState;
  2593. remapNode: RemapNodeModel;
  2594. }
  2595. export class RemapPropertyTabComponentProps extends React.Component<IRemapPropertyTabComponentProps> {
  2596. constructor(props: IRemapPropertyTabComponentProps);
  2597. forceRebuild(): void;
  2598. render(): JSX.Element;
  2599. }
  2600. }
  2601. declare module NODEEDITOR {
  2602. /**
  2603. * Generic node model which stores information about a node editor block
  2604. */
  2605. export class RemapNodeModel extends DefaultNodeModel {
  2606. readonly remapBlock: BABYLON.RemapBlock;
  2607. /**
  2608. * Constructs the node model
  2609. */
  2610. constructor();
  2611. renderProperties(globalState: GlobalState): JSX.Element;
  2612. }
  2613. }
  2614. declare module NODEEDITOR {
  2615. /**
  2616. * RemapNodeWidgetProps
  2617. */
  2618. export interface RemapNodeWidgetProps {
  2619. node: BABYLON.Nullable<RemapNodeModel>;
  2620. globalState: GlobalState;
  2621. }
  2622. /**
  2623. * Used to display a node block for the node editor
  2624. */
  2625. export class RemapNodeWidget extends React.Component<RemapNodeWidgetProps> {
  2626. /**
  2627. * Creates a GenericNodeWidget
  2628. * @param props
  2629. */
  2630. constructor(props: RemapNodeWidgetProps);
  2631. renderValue(value: string): JSX.Element | null;
  2632. extractInputValue(connectionPoint: BABYLON.NodeMaterialConnectionPoint): any;
  2633. render(): JSX.Element;
  2634. }
  2635. }
  2636. declare module NODEEDITOR {
  2637. /**
  2638. * Node factory which creates editor nodes
  2639. */
  2640. export class RemapNodeFactory extends SRD.AbstractNodeFactory {
  2641. private _globalState;
  2642. /**
  2643. * Constructs a GenericNodeFactory
  2644. */
  2645. constructor(globalState: GlobalState);
  2646. /**
  2647. * Generates a node widget
  2648. * @param diagramEngine diagram engine
  2649. * @param node node to generate
  2650. * @returns node widget jsx
  2651. */
  2652. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: RemapNodeModel): JSX.Element;
  2653. /**
  2654. * Gets a new instance of a node model
  2655. * @returns input node model
  2656. */
  2657. getNewInstance(): RemapNodeModel;
  2658. }
  2659. }
  2660. declare module NODEEDITOR {
  2661. export class GraphHelper {
  2662. static DistributeGraph(model: DiagramModel): dagre.Node[];
  2663. private static _MapElements;
  2664. private static _MapEdges;
  2665. }
  2666. }
  2667. declare module NODEEDITOR {
  2668. export enum PreviewMeshType {
  2669. Sphere = 0,
  2670. Box = 1,
  2671. Torus = 2,
  2672. Cylinder = 3,
  2673. Plane = 4,
  2674. ShaderBall = 5,
  2675. Custom = 6
  2676. }
  2677. }
  2678. declare module NODEEDITOR {
  2679. export class PreviewManager {
  2680. private _nodeMaterial;
  2681. private _onBuildObserver;
  2682. private _onPreviewCommandActivatedObserver;
  2683. private _onAnimationCommandActivatedObserver;
  2684. private _onUpdateRequiredObserver;
  2685. private _onPreviewBackgroundChangedObserver;
  2686. private _engine;
  2687. private _scene;
  2688. private _light;
  2689. private _meshes;
  2690. private _camera;
  2691. private _material;
  2692. private _globalState;
  2693. private _currentType;
  2694. constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
  2695. private _handleAnimations;
  2696. private _prepareMeshes;
  2697. private _refreshPreviewMesh;
  2698. private _forceCompilationAsync;
  2699. private _updatePreview;
  2700. dispose(): void;
  2701. }
  2702. }
  2703. declare module NODEEDITOR {
  2704. interface IPreviewMeshControlComponent {
  2705. globalState: GlobalState;
  2706. }
  2707. export class PreviewMeshControlComponent extends React.Component<IPreviewMeshControlComponent> {
  2708. changeMeshType(newOne: PreviewMeshType): void;
  2709. useCustomMesh(evt: any): void;
  2710. render(): JSX.Element;
  2711. }
  2712. }
  2713. declare module NODEEDITOR {
  2714. interface ITrigonometryTabComponentProps {
  2715. globalState: GlobalState;
  2716. trigonometryNode: TrigonometryNodeModel;
  2717. }
  2718. export class TrigonometryPropertyTabComponentProps extends React.Component<ITrigonometryTabComponentProps> {
  2719. constructor(props: ITrigonometryTabComponentProps);
  2720. render(): JSX.Element;
  2721. }
  2722. }
  2723. declare module NODEEDITOR {
  2724. /**
  2725. * Generic node model which stores information about a node editor block
  2726. */
  2727. export class TrigonometryNodeModel extends DefaultNodeModel {
  2728. readonly trigonometryBlock: BABYLON.TrigonometryBlock;
  2729. /**
  2730. * Constructs the node model
  2731. */
  2732. constructor();
  2733. renderProperties(globalState: GlobalState): JSX.Element;
  2734. }
  2735. }
  2736. declare module NODEEDITOR {
  2737. /**
  2738. * GenericNodeWidgetProps
  2739. */
  2740. export interface ITrigonometryNodeWidgetProps {
  2741. node: BABYLON.Nullable<TrigonometryNodeModel>;
  2742. globalState: GlobalState;
  2743. }
  2744. /**
  2745. * Used to display a node block for the node editor
  2746. */
  2747. export class TrigonometryNodeWidget extends React.Component<ITrigonometryNodeWidgetProps> {
  2748. /**
  2749. * Creates a GenericNodeWidget
  2750. * @param props
  2751. */
  2752. constructor(props: ITrigonometryNodeWidgetProps);
  2753. render(): JSX.Element;
  2754. }
  2755. }
  2756. declare module NODEEDITOR {
  2757. /**
  2758. * Node factory which creates editor nodes
  2759. */
  2760. export class TrigonometryNodeFactory extends SRD.AbstractNodeFactory {
  2761. private _globalState;
  2762. /**
  2763. * Constructs a GenericNodeFactory
  2764. */
  2765. constructor(globalState: GlobalState);
  2766. /**
  2767. * Generates a node widget
  2768. * @param diagramEngine diagram engine
  2769. * @param node node to generate
  2770. * @returns node widget jsx
  2771. */
  2772. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TrigonometryNodeModel): JSX.Element;
  2773. /**
  2774. * Gets a new instance of a node model
  2775. * @returns input node model
  2776. */
  2777. getNewInstance(): TrigonometryNodeModel;
  2778. }
  2779. }
  2780. declare module NODEEDITOR {
  2781. interface IClampPropertyTabComponentProps {
  2782. globalState: GlobalState;
  2783. remapNode: ClampNodeModel;
  2784. }
  2785. export class ClampPropertyTabComponentProps extends React.Component<IClampPropertyTabComponentProps> {
  2786. constructor(props: IClampPropertyTabComponentProps);
  2787. forceRebuild(): void;
  2788. render(): JSX.Element;
  2789. }
  2790. }
  2791. declare module NODEEDITOR {
  2792. export class ClampNodeModel extends DefaultNodeModel {
  2793. readonly clampBlock: BABYLON.ClampBlock;
  2794. /**
  2795. * Constructs the node model
  2796. */
  2797. constructor();
  2798. renderProperties(globalState: GlobalState): JSX.Element;
  2799. }
  2800. }
  2801. declare module NODEEDITOR {
  2802. export interface ClampNodeWidgetProps {
  2803. node: BABYLON.Nullable<ClampNodeModel>;
  2804. globalState: GlobalState;
  2805. }
  2806. export class ClampNodeWidget extends React.Component<ClampNodeWidgetProps> {
  2807. constructor(props: ClampNodeWidgetProps);
  2808. renderValue(value: string): JSX.Element | null;
  2809. render(): JSX.Element;
  2810. }
  2811. }
  2812. declare module NODEEDITOR {
  2813. export class ClampNodeFactory extends SRD.AbstractNodeFactory {
  2814. private _globalState;
  2815. constructor(globalState: GlobalState);
  2816. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: ClampNodeModel): JSX.Element;
  2817. getNewInstance(): ClampNodeModel;
  2818. }
  2819. }
  2820. declare module NODEEDITOR {
  2821. interface ILightPropertyTabComponentProps {
  2822. globalState: GlobalState;
  2823. node: LightInformationNodeModel;
  2824. }
  2825. export class LightInformationPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  2826. render(): JSX.Element;
  2827. }
  2828. }
  2829. declare module NODEEDITOR {
  2830. export class LightInformationNodeModel extends DefaultNodeModel {
  2831. private _block;
  2832. /**
  2833. * BABYLON.Light for the node if it exists
  2834. */
  2835. light: BABYLON.Nullable<BABYLON.Light>;
  2836. /**
  2837. * Constructs the node model
  2838. */
  2839. constructor();
  2840. renderProperties(globalState: GlobalState): JSX.Element;
  2841. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2842. }
  2843. }
  2844. declare module NODEEDITOR {
  2845. /**
  2846. * GenericNodeWidgetProps
  2847. */
  2848. export interface ILightInformationNodeWidgetProps {
  2849. node: BABYLON.Nullable<LightInformationNodeModel>;
  2850. globalState: GlobalState;
  2851. }
  2852. /**
  2853. * Used to display a node block for the node editor
  2854. */
  2855. export class LightInformationNodeWidget extends React.Component<ILightInformationNodeWidgetProps> {
  2856. /**
  2857. * Creates a GenericNodeWidget
  2858. * @param props
  2859. */
  2860. constructor(props: ILightInformationNodeWidgetProps);
  2861. render(): JSX.Element;
  2862. }
  2863. }
  2864. declare module NODEEDITOR {
  2865. /**
  2866. * Node factory which creates editor nodes
  2867. */
  2868. export class LightInformationNodeFactory extends SRD.AbstractNodeFactory {
  2869. private _globalState;
  2870. /**
  2871. * Constructs a LightNodeFactory
  2872. */
  2873. constructor(globalState: GlobalState);
  2874. /**
  2875. * Generates a node widget
  2876. * @param diagramEngine diagram engine
  2877. * @param node node to generate
  2878. * @returns node widget jsx
  2879. */
  2880. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightInformationNodeModel): JSX.Element;
  2881. /**
  2882. * Gets a new instance of a node model
  2883. * @returns light node model
  2884. */
  2885. getNewInstance(): LightInformationNodeModel;
  2886. }
  2887. }
  2888. declare module NODEEDITOR {
  2889. interface IPreviewAreaComponent {
  2890. globalState: GlobalState;
  2891. width: number;
  2892. }
  2893. export class PreviewAreaComponent extends React.Component<IPreviewAreaComponent> {
  2894. changeAnimation(): void;
  2895. changeBackground(value: string): void;
  2896. render(): JSX.Element;
  2897. }
  2898. }
  2899. declare module NODEEDITOR {
  2900. interface IGraphEditorProps {
  2901. globalState: GlobalState;
  2902. }
  2903. export class NodeCreationOptions {
  2904. nodeMaterialBlock: BABYLON.NodeMaterialBlock;
  2905. type?: string;
  2906. connection?: BABYLON.NodeMaterialConnectionPoint;
  2907. }
  2908. export class GraphEditor extends React.Component<IGraphEditorProps> {
  2909. private readonly NodeWidth;
  2910. private _engine;
  2911. private _model;
  2912. private _startX;
  2913. private _moveInProgress;
  2914. private _leftWidth;
  2915. private _rightWidth;
  2916. private _nodes;
  2917. private _blocks;
  2918. private _previewManager;
  2919. private _copiedNodes;
  2920. private _mouseLocationX;
  2921. private _mouseLocationY;
  2922. private _onWidgetKeyUpPointer;
  2923. /** @hidden */
  2924. _toAdd: LinkModel[] | null;
  2925. /**
  2926. * Creates a node and recursivly creates its parent nodes from it's input
  2927. * @param nodeMaterialBlock
  2928. */
  2929. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  2930. addValueNode(type: string): DefaultNodeModel;
  2931. onWidgetKeyUp(evt: any): void;
  2932. componentDidMount(): void;
  2933. componentWillUnmount(): void;
  2934. constructor(props: IGraphEditorProps);
  2935. zoomToFit(retry?: number): void;
  2936. buildMaterial(): void;
  2937. applyFragmentOutputConstraints(rootInput: DefaultPortModel): void;
  2938. build(needToWait?: boolean, locations?: BABYLON.Nullable<INodeLocationInfo[]>): void;
  2939. reOrganize(locations?: BABYLON.Nullable<INodeLocationInfo[]>): void;
  2940. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  2941. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  2942. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  2943. buildColumnLayout(): string;
  2944. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  2945. render(): JSX.Element;
  2946. }
  2947. }
  2948. declare module NODEEDITOR {
  2949. /**
  2950. * Generic node model which stores information about a node editor block
  2951. */
  2952. export class DefaultNodeModel extends NodeModel {
  2953. /**
  2954. * The babylon block this node represents
  2955. */
  2956. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  2957. ports: {
  2958. [s: string]: DefaultPortModel;
  2959. };
  2960. /**
  2961. * Constructs the node model
  2962. */
  2963. constructor(key: string);
  2964. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2965. renderProperties(globalState: GlobalState): JSX.Element | null;
  2966. }
  2967. }
  2968. declare module NODEEDITOR {
  2969. export class GlobalState {
  2970. nodeMaterial: BABYLON.NodeMaterial;
  2971. hostElement: HTMLElement;
  2972. hostDocument: HTMLDocument;
  2973. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
  2974. onRebuildRequiredObservable: BABYLON.Observable<void>;
  2975. onResetRequiredObservable: BABYLON.Observable<BABYLON.Nullable<INodeLocationInfo[]>>;
  2976. onUpdateRequiredObservable: BABYLON.Observable<void>;
  2977. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  2978. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  2979. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  2980. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  2981. onPreviewCommandActivated: BABYLON.Observable<void>;
  2982. onPreviewBackgroundChanged: BABYLON.Observable<void>;
  2983. onAnimationCommandActivated: BABYLON.Observable<void>;
  2984. onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => NodeModel;
  2985. previewMeshType: PreviewMeshType;
  2986. previewMeshFile: File;
  2987. rotatePreview: boolean;
  2988. backgroundColor: BABYLON.Color4;
  2989. blockKeyboardEvents: boolean;
  2990. customSave?: {
  2991. label: string;
  2992. action: (data: string) => Promise<void>;
  2993. };
  2994. constructor();
  2995. }
  2996. }
  2997. declare module NODEEDITOR {
  2998. export class Popup {
  2999. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  3000. private static _CopyStyles;
  3001. }
  3002. }
  3003. declare module NODEEDITOR {
  3004. /**
  3005. * Interface used to specify creation options for the node editor
  3006. */
  3007. export interface INodeEditorOptions {
  3008. nodeMaterial: BABYLON.NodeMaterial;
  3009. hostElement?: HTMLElement;
  3010. customSave?: {
  3011. label: string;
  3012. action: (data: string) => Promise<void>;
  3013. };
  3014. customLoadObservable?: BABYLON.Observable<any>;
  3015. }
  3016. /**
  3017. * Class used to create a node editor
  3018. */
  3019. export class NodeEditor {
  3020. private static _CurrentState;
  3021. /**
  3022. * Show the node editor
  3023. * @param options defines the options to use to configure the node editor
  3024. */
  3025. static Show(options: INodeEditorOptions): void;
  3026. }
  3027. }