babylon.nodeEditor.module.d.ts 134 KB

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