babylon.nodeEditor.module.d.ts 134 KB

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