babylon.nodeEditor.module.d.ts 133 KB

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