babylon.nodeEditor.module.d.ts 133 KB

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