UNPKG

babylonjs-node-editor

Version:
1,095 lines (936 loc) 202 kB
declare module BABYLON.NodeEditor { export class SerializationTools { static UpdateLocations(material: BABYLON.NodeMaterial, globalState: GlobalState, frame?: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.GraphFrame>): void; static Serialize(material: BABYLON.NodeMaterial, globalState: GlobalState, frame?: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.GraphFrame>): string; static Deserialize(serializationObject: any, globalState: GlobalState): void; static AddFrameToMaterial(serializationObject: any, globalState: GlobalState, currentMaterial: BABYLON.NodeMaterial): void; } interface IPortalProps { globalState: GlobalState; } export class Portal extends React.Component<React.PropsWithChildren<IPortalProps>> { render(): React.ReactPortal; } /** * Interface used to specify creation options for the node editor */ export interface INodeEditorOptions { nodeMaterial: BABYLON.NodeMaterial; hostElement?: HTMLElement; customSave?: { label: string; action: (data: string) => Promise<void>; }; customLoadObservable?: BABYLON.Observable<any>; backgroundColor?: BABYLON.Color4; } /** * Class used to create a node editor */ export class NodeEditor { private static _CurrentState; private static _PopupWindow; /** * Show the node editor * @param options defines the options to use to configure the node editor */ static Show(options: INodeEditorOptions): void; } interface IGraphEditorProps { globalState: GlobalState; } interface IGraphEditorState { showPreviewPopUp: boolean; message: string; isError: boolean; } interface IInternalPreviewAreaOptions extends BABYLON.IInspectorOptions { popup: boolean; original: boolean; explorerWidth?: string; inspectorWidth?: string; embedHostWidth?: string; } export class GraphEditor extends React.Component<IGraphEditorProps, IGraphEditorState> { private _graphCanvasRef; private _diagramContainerRef; private _graphCanvas; private _historyStack; private _previewManager; private _mouseLocationX; private _mouseLocationY; private _onWidgetKeyUpPointer; private _previewHost; private _popUpWindow; appendBlock(dataToAppend: BABYLON.NodeMaterialBlock | BABYLON.NodeEditor.SharedUIComponents.INodeData, recursion?: boolean): BABYLON.NodeEditor.SharedUIComponents.GraphNode; addValueNode(type: string): BABYLON.NodeEditor.SharedUIComponents.GraphNode; prepareHistoryStack(): void; componentDidMount(): void; componentWillUnmount(): void; constructor(props: IGraphEditorProps); zoomToFit(): void; buildMaterial(): void; build(ignoreEditorData?: boolean): void; loadGraph(): void; showWaitScreen(): void; hideWaitScreen(): void; reOrganize(editorData?: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.IEditorData>, isImportingAFrame?: boolean): void; onWheel: (evt: WheelEvent) => void; emitNewBlock(blockType: string, targetX: number, targetY: number): BABYLON.NodeEditor.SharedUIComponents.GraphNode | undefined; dropNewBlock(event: React.DragEvent<HTMLDivElement>): void; handlePopUp: () => void; handleClosingPopUp: () => void; initiatePreviewArea: (canvas?: HTMLCanvasElement) => void; createPopUp: () => void; createPreviewMeshControlHostAsync: (options: IInternalPreviewAreaOptions, parentControl: BABYLON.Nullable<HTMLElement>) => Promise<unknown>; createPreviewHostAsync: (options: IInternalPreviewAreaOptions, parentControl: BABYLON.Nullable<HTMLElement>) => Promise<unknown>; fixPopUpStyles: (document: Document) => void; render(): import("react/jsx-runtime").JSX.Element; } export class GlobalState { hostElement: HTMLElement; hostDocument: Document; hostWindow: Window; stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager; onBuiltObservable: BABYLON.Observable<void>; onResetRequiredObservable: BABYLON.Observable<boolean>; onClearUndoStack: BABYLON.Observable<void>; onZoomToFitRequiredObservable: BABYLON.Observable<void>; onReOrganizedRequiredObservable: BABYLON.Observable<void>; onLogRequiredObservable: BABYLON.Observable<LogEntry>; onIsLoadingChanged: BABYLON.Observable<boolean>; onLightUpdated: BABYLON.Observable<void>; onBackgroundHDRUpdated: BABYLON.Observable<void>; onPreviewBackgroundChanged: BABYLON.Observable<void>; onBackFaceCullingChanged: BABYLON.Observable<void>; onDepthPrePassChanged: BABYLON.Observable<void>; onAnimationCommandActivated: BABYLON.Observable<void>; onImportFrameObservable: BABYLON.Observable<any>; onPopupClosedObservable: BABYLON.Observable<void>; onDropEventReceivedObservable: BABYLON.Observable<DragEvent>; onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => BABYLON.NodeEditor.SharedUIComponents.GraphNode; previewType: PreviewType; previewFile: File; envType: PreviewType; envFile: File; particleSystemBlendMode: number; listOfCustomPreviewFiles: File[]; rotatePreview: boolean; backgroundColor: BABYLON.Color4; backFaceCulling: boolean; depthPrePass: boolean; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; hemisphericLight: boolean; directionalLight0: boolean; directionalLight1: boolean; backgroundHDR: boolean; controlCamera: boolean; _mode: BABYLON.NodeMaterialModes; _engine: number; pointerOverCanvas: boolean; filesInput: BABYLON.FilesInput; onRefreshPreviewMeshControlComponentRequiredObservable: BABYLON.Observable<void>; previewTexture: BABYLON.Nullable<BABYLON.RenderTargetTexture>; pickingTexture: BABYLON.Nullable<BABYLON.RenderTargetTexture>; onPreviewSceneAfterRenderObservable: BABYLON.Observable<void>; onPreviewUpdatedObservable: BABYLON.Observable<BABYLON.NodeMaterial>; debugBlocksToRefresh: BABYLON.NodeMaterialDebugBlock[]; forcedDebugBlock: BABYLON.Nullable<BABYLON.NodeMaterialDebugBlock>; /** Gets the mode */ get mode(): BABYLON.NodeMaterialModes; /** Sets the mode */ set mode(m: BABYLON.NodeMaterialModes); /** Gets the engine */ get engine(): number; /** Sets the engine */ set engine(e: number); private _nodeMaterial; /** * Gets the current node material */ get nodeMaterial(): BABYLON.NodeMaterial; /** * Sets the current node material */ set nodeMaterial(nodeMaterial: BABYLON.NodeMaterial); customSave?: { label: string; action: (data: string) => Promise<void>; }; constructor(); storeEditorData(serializationObject: any, frame?: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.GraphFrame>): void; } export class BlockTools { static GetBlockFromString(data: string, scene: BABYLON.Scene, nodeMaterial: BABYLON.NodeMaterial): BABYLON.AmbientOcclusionBlock | BABYLON.NodeMaterialDebugBlock | BABYLON.MatrixSplitterBlock | BABYLON.StorageWriteBlock | BABYLON.StorageReadBlock | BABYLON.LoopBlock | BABYLON.ColorConverterBlock | BABYLON.NodeMaterialTeleportInBlock | BABYLON.NodeMaterialTeleportOutBlock | BABYLON.HeightToNormalBlock | BABYLON.ElbowBlock | BABYLON.TwirlBlock | BABYLON.VoronoiNoiseBlock | BABYLON.ScreenSpaceBlock | BABYLON.CloudBlock | BABYLON.MatrixBuilderBlock | BABYLON.DesaturateBlock | BABYLON.RefractBlock | BABYLON.ReflectBlock | BABYLON.DerivativeBlock | BABYLON.Rotate2dBlock | BABYLON.NormalBlendBlock | BABYLON.WorleyNoise3DBlock | BABYLON.SimplexPerlin3DBlock | BABYLON.BonesBlock | BABYLON.InstancesBlock | BABYLON.MorphTargetsBlock | BABYLON.DiscardBlock | BABYLON.PrePassTextureBlock | BABYLON.ImageProcessingBlock | BABYLON.ColorMergerBlock | BABYLON.VectorMergerBlock | BABYLON.ColorSplitterBlock | BABYLON.VectorSplitterBlock | BABYLON.TextureBlock | BABYLON.ReflectionTextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.PrePassOutputBlock | 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.ModBlock | 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.TBNBlock | BABYLON.RandomNumberBlock | BABYLON.ReplaceColorBlock | BABYLON.PosterizeBlock | BABYLON.ArcTan2Block | BABYLON.GradientBlock | BABYLON.FrontFacingBlock | BABYLON.MeshAttributeExistsBlock | BABYLON.WaveBlock | BABYLON.InputBlock | BABYLON.PBRMetallicRoughnessBlock | BABYLON.SheenBlock | BABYLON.AnisotropyBlock | BABYLON.ReflectionBlock | BABYLON.ClearCoatBlock | BABYLON.RefractionBlock | BABYLON.SubSurfaceBlock | BABYLON.IridescenceBlock | BABYLON.CurrentScreenBlock | BABYLON.ParticleTextureBlock | BABYLON.ParticleRampGradientBlock | BABYLON.ParticleBlendMultiplyBlock | BABYLON.FragCoordBlock | BABYLON.ScreenSizeBlock | BABYLON.SceneDepthBlock | BABYLON.ConditionalBlock | BABYLON.ImageSourceBlock | BABYLON.ClipPlanesBlock | BABYLON.FragDepthBlock | BABYLON.ShadowMapBlock | BABYLON.TriPlanarBlock | BABYLON.MatrixTransposeBlock | BABYLON.MatrixDeterminantBlock | BABYLON.CurveBlock | BABYLON.GaussianSplattingBlock | BABYLON.GaussianBlock | BABYLON.SplatReaderBlock | null; static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string; 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; static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "" | "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4"; } interface ITextureLineComponentProps { texture: BABYLON.BaseTexture; width: number; height: number; globalState?: any; hideChannelSelect?: boolean; } export interface ITextureLineComponentState { displayRed: boolean; displayGreen: boolean; displayBlue: boolean; displayAlpha: boolean; face: number; } export class TextureLineComponent extends React.Component<ITextureLineComponentProps, ITextureLineComponentState> { private _canvasRef; constructor(props: ITextureLineComponentProps); shouldComponentUpdate(): boolean; componentDidMount(): void; componentDidUpdate(): void; updatePreview(): void; static UpdatePreview(previewCanvas: HTMLCanvasElement, texture: BABYLON.BaseTexture, width: number, options: ITextureLineComponentState, onReady?: () => void, globalState?: any): Promise<void>; render(): import("react/jsx-runtime").JSX.Element; } export interface ICheckBoxLineComponentProps { label: string; target?: any; propertyName?: string; isSelected?: () => boolean; onSelect?: (value: boolean) => void; onValueChanged?: () => void; onPropertyChangedObservable?: BABYLON.Observable<BABYLON.NodeEditor.SharedUIComponents.PropertyChangedEvent>; disabled?: boolean; } export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, { isSelected: boolean; isDisabled?: boolean; }> { private static _UniqueIdSeed; private _uniqueId; private _localChange; constructor(props: ICheckBoxLineComponentProps); shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: { isSelected: boolean; isDisabled: boolean; }): boolean; onChange(): void; renderFluent(): import("react/jsx-runtime").JSX.Element; renderOriginal(): import("react/jsx-runtime").JSX.Element; render(): import("react/jsx-runtime").JSX.Element; } export const RegisterTypeLedger: () => void; export const RegisterToPropertyTabManagers: () => void; export const RegisterToDisplayManagers: () => void; export const RegisterNodePortDesign: (stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager) => void; export const RegisterExportData: (stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager) => void; export const RegisterElbowSupport: (stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager) => void; export const RegisterDefaultInput: (stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager) => void; export const RegisterDebugSupport: (stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager) => void; export class ConnectionPointPortData implements BABYLON.NodeEditor.SharedUIComponents.IPortData { private _connectedPort; private _nodeContainer; data: BABYLON.NodeMaterialConnectionPoint; get name(): string; get internalName(): string; get isExposedOnFrame(): boolean; set isExposedOnFrame(value: boolean); get exposedPortPosition(): number; set exposedPortPosition(value: number); get isConnected(): boolean; get isInactive(): boolean; get connectedPort(): BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.IPortData>; set connectedPort(value: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.IPortData>); get direction(): BABYLON.NodeEditor.SharedUIComponents.PortDataDirection; get ownerData(): BABYLON.NodeMaterialBlock; get needDualDirectionValidation(): boolean; get hasEndpoints(): boolean; get endpoints(): BABYLON.NodeEditor.SharedUIComponents.IPortData[]; constructor(connectionPoint: BABYLON.NodeMaterialConnectionPoint, nodeContainer: BABYLON.NodeEditor.SharedUIComponents.INodeContainer); updateDisplayName(newName: string): void; connectTo(port: BABYLON.NodeEditor.SharedUIComponents.IPortData): void; canConnectTo(port: BABYLON.NodeEditor.SharedUIComponents.IPortData): boolean; disconnectFrom(port: BABYLON.NodeEditor.SharedUIComponents.IPortData): void; checkCompatibilityState(port: BABYLON.NodeEditor.SharedUIComponents.IPortData): 0 | BABYLON.NodeMaterialConnectionPointCompatibilityStates.TypeIncompatible | BABYLON.NodeMaterialConnectionPointCompatibilityStates.TargetIncompatible | BABYLON.NodeMaterialConnectionPointCompatibilityStates.HierarchyIssue; getCompatibilityIssueMessage(issue: number, targetNode: BABYLON.NodeEditor.SharedUIComponents.GraphNode, targetPort: BABYLON.NodeEditor.SharedUIComponents.IPortData): string; } export class BlockNodeData implements BABYLON.NodeEditor.SharedUIComponents.INodeData { data: BABYLON.NodeMaterialBlock; private _inputs; private _outputs; get uniqueId(): number; get name(): string; getClassName(): string; get isInput(): boolean; get inputs(): BABYLON.NodeEditor.SharedUIComponents.IPortData[]; get outputs(): BABYLON.NodeEditor.SharedUIComponents.IPortData[]; get comments(): string; set comments(value: string); get executionTime(): number; getPortByName(name: string): BABYLON.NodeEditor.SharedUIComponents.IPortData | null; dispose(): void; prepareHeaderIcon(iconDiv: HTMLDivElement, img: HTMLImageElement): void; get invisibleEndpoints(): BABYLON.NodeMaterialTeleportOutBlock[] | null; constructor(data: BABYLON.NodeMaterialBlock, nodeContainer: BABYLON.NodeEditor.SharedUIComponents.INodeContainer); get canBeActivated(): boolean; get isActive(): any; setIsActive(value: boolean): void; } export class VectorMergerPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); render(): import("react/jsx-runtime").JSX.Element; } type ReflectionTexture = BABYLON.ReflectionTextureBlock | BABYLON.ReflectionBlock | BABYLON.RefractionBlock; type AnyTexture = BABYLON.TextureBlock | ReflectionTexture | BABYLON.CurrentScreenBlock | BABYLON.ParticleTextureBlock | BABYLON.TriPlanarBlock; export class TexturePropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps, { isEmbedded: boolean; loadAsCubeTexture: boolean; textureIsPrefiltered: boolean; }> { get textureBlock(): AnyTexture; constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); UNSAFE_componentWillUpdate(nextProps: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps, nextState: { isEmbedded: boolean; loadAsCubeTexture: boolean; }): void; private _generateRandomForCache; updateAfterTextureLoad(): void; removeTexture(): void; _prepareTexture(): void; /** * Replaces the texture of the node * @param file the file of the texture to use */ replaceTexture(file: File): void; replaceTextureWithUrl(url: string): void; render(): import("react/jsx-runtime").JSX.Element; } export class TeleportOutPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { private _onUpdateRequiredObserver; constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); componentDidMount(): void; componentWillUnmount(): void; render(): import("react/jsx-runtime").JSX.Element; } export interface IFrameNodePortPropertyTabComponentProps { stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager; nodePort: BABYLON.NodeEditor.SharedUIComponents.NodePort; } export class NodePortPropertyTabComponent extends React.Component<IFrameNodePortPropertyTabComponentProps> { constructor(props: IFrameNodePortPropertyTabComponentProps); toggleExposeOnFrame(value: boolean): void; render(): import("react/jsx-runtime").JSX.Element; } export class LightPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } export class LightInformationPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } export class InputPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { private _onValueChangedObserver; constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); componentDidMount(): void; componentWillUnmount(): void; renderValue(globalState: GlobalState): import("react/jsx-runtime").JSX.Element | null; setDefaultValue(): void; render(): import("react/jsx-runtime").JSX.Element; } export class ImageSourcePropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps, { isEmbedded: boolean; }> { get imageSourceBlock(): BABYLON.ImageSourceBlock; constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); UNSAFE_componentWillUpdate(nextProps: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps, nextState: { isEmbedded: boolean; loadAsCubeTexture: boolean; }): void; private _generateRandomForCache; updateAfterTextureLoad(): void; removeTexture(): void; _prepareTexture(): void; /** * Replaces the texture of the node * @param file the file of the texture to use */ replaceTexture(file: File): void; replaceTextureWithUrl(url: string): void; render(): import("react/jsx-runtime").JSX.Element; } interface IGradientStepComponentProps { stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager; step: BABYLON.GradientBlockColorStep; lineIndex: number; onDelete: () => void; onUpdateStep: () => void; onCheckForReOrder: () => void; onCopy?: () => void; } export class GradientStepComponent extends React.Component<IGradientStepComponentProps, { gradient: number; }> { constructor(props: IGradientStepComponentProps); updateColor(color: string): void; updateStep(gradient: number): void; onPointerUp(): void; render(): import("react/jsx-runtime").JSX.Element; } export class GradientPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { private _onValueChangedObserver; constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); componentDidMount(): void; componentWillUnmount(): void; forceRebuild(): void; deleteStep(step: BABYLON.GradientBlockColorStep): void; copyStep(step: BABYLON.GradientBlockColorStep): void; addNewStep(): void; checkForReOrder(): void; renderOriginal(): import("react/jsx-runtime").JSX.Element; renderFluent(): import("react/jsx-runtime").JSX.Element; render(): import("react/jsx-runtime").JSX.Element; } export class DefaultPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); render(): import("react/jsx-runtime").JSX.Element; } /** * NOTE This is intentionally a function to avoid another wrapper JSX element around the lineContainerComponent, and will ensure * the lineContainerComponent gets properly rendered as a child of the Accordion * @param props * @returns */ export function GetGeneralProperties(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps): import("react/jsx-runtime").JSX.Element; /** * NOTE This is intentionally a function to avoid another wrapper JSX element around the lineContainerComponent, and will ensure * the lineContainerComponent gets properly rendered as a child of the Accordion * @param props * @returns */ export function GetGenericProperties(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps): import("react/jsx-runtime").JSX.Element; export interface IFramePropertyTabComponentProps { globalState: GlobalState; frame: BABYLON.NodeEditor.SharedUIComponents.GraphFrame; } export class FramePropertyTabComponent extends React.Component<IFramePropertyTabComponentProps> { private _onFrameExpandStateChangedObserver; constructor(props: IFramePropertyTabComponentProps); componentDidMount(): void; componentWillUnmount(): void; render(): import("react/jsx-runtime").JSX.Element; } export interface IFrameNodePortPropertyTabComponentProps { stateManager: BABYLON.NodeEditor.SharedUIComponents.StateManager; globalState: GlobalState; frameNodePort: BABYLON.NodeEditor.SharedUIComponents.FrameNodePort; frame: BABYLON.NodeEditor.SharedUIComponents.GraphFrame; } export class FrameNodePortPropertyTabComponent extends React.Component<IFrameNodePortPropertyTabComponentProps, { port: BABYLON.NodeEditor.SharedUIComponents.FrameNodePort; }> { private _onFramePortPositionChangedObserver; private _onSelectionChangedObserver; constructor(props: IFrameNodePortPropertyTabComponentProps); componentWillUnmount(): void; render(): import("react/jsx-runtime").JSX.Element; } export class DebugNodePropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { refreshAll(): void; render(): import("react/jsx-runtime").JSX.Element; } export class ColorMergerPropertyTabComponent extends React.Component<BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps> { constructor(props: BABYLON.NodeEditor.SharedUIComponents.IPropertyComponentProps); render(): import("react/jsx-runtime").JSX.Element; } export class TrigonometryDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class TextureDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { private _previewCanvas; private _previewImage; getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class TeleportOutDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { private _hasHighlights; getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; onSelectionChanged(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, selectedData: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.INodeData>, manager: BABYLON.NodeEditor.SharedUIComponents.StateManager): void; onDispose(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, manager: BABYLON.NodeEditor.SharedUIComponents.StateManager): void; } export class TeleportInDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { private _hasHighlights; getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; onSelectionChanged(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, selectedData: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.INodeData>, manager: BABYLON.NodeEditor.SharedUIComponents.StateManager): void; onDispose(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, manager: BABYLON.NodeEditor.SharedUIComponents.StateManager): void; } export class RemapDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; private _extractInputValue; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class PBRDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class OutputDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class MeshAttributeExistsDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(): void; } export class LoopDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class InputDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class ImageSourceDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { private _previewCanvas; private _previewImage; getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class GradientDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class ElbowDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; updatePreviewContent(_nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, _contentArea: HTMLDivElement): void; updateFullVisualContent(data: BABYLON.NodeEditor.SharedUIComponents.INodeData, visualContent: BABYLON.NodeEditor.SharedUIComponents.VisualContentDescription): void; } export class DiscardDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class DepthSourceDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(): void; } export class DebugDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { private _previewCanvas; private _previewImage; private _onPreviewSceneAfterRenderObserver; getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; onSelectionChanged?(data: BABYLON.NodeEditor.SharedUIComponents.INodeData, selectedData: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.INodeData>, manager: BABYLON.NodeEditor.SharedUIComponents.StateManager): void; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; updateFullVisualContent(data: BABYLON.NodeEditor.SharedUIComponents.INodeData, visualContent: BABYLON.NodeEditor.SharedUIComponents.VisualContentDescription): void; } export class CurveDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } export class ConditionalDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(): void; } export class ClampDisplayManager implements BABYLON.NodeEditor.SharedUIComponents.IDisplayManager { getHeaderClass(): string; shouldDisplayPortLabels(): boolean; getHeaderText(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData): string; getBackgroundColor(): string; updatePreviewContent(nodeData: BABYLON.NodeEditor.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; } interface IPropertyTabComponentProps { globalState: GlobalState; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } interface IPropertyTabComponentState { currentNode: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.GraphNode>; currentFrame: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.GraphFrame>; currentFrameNodePort: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.FrameNodePort>; currentNodePort: BABYLON.Nullable<BABYLON.NodeEditor.SharedUIComponents.NodePort>; uploadInProgress: boolean; } export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, IPropertyTabComponentState> { private _onBuiltObserver; private _modeSelect; constructor(props: IPropertyTabComponentProps); componentDidMount(): void; componentWillUnmount(): void; processInputBlockUpdate(ib: BABYLON.InputBlock): void; renderInputBlock(block: BABYLON.InputBlock): import("react/jsx-runtime").JSX.Element | null; load(file: File): void; loadFrame(file: File): void; save(): void; customSave(): void; saveToSnippetServer(): void; loadFromSnippet(): void; changeMode(value: any, force?: boolean, loadDefault?: boolean): boolean; render(): import("react/jsx-runtime").JSX.Element | null | undefined; } interface IInputsPropertyTabComponentProps { globalState: GlobalState; inputs: BABYLON.InputBlock[]; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } /** * NOTE if being used within a PropertyTabComponentBase (which is a wrapper for Accordion), call as a function rather than * rendering as a component. This will avoid a wrapper JSX element existing before the lineContainerComponent and will ensure * the lineContainerComponent gets properly rendered as a child of the Accordion * @param props * @returns */ export function GetInputProperties(props: IInputsPropertyTabComponentProps): import("react/jsx-runtime").JSX.Element; interface IVector4PropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class Vector4PropertyTabComponent extends React.Component<IVector4PropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IVector3PropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IVector2PropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IMatrixPropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class MatrixPropertyTabComponent extends React.Component<IMatrixPropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IFloatPropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; } export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IColor4PropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class Color4PropertyTabComponent extends React.Component<IColor4PropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } interface IColor3PropertyTabComponentProps { globalState: GlobalState; inputBlock: BABYLON.InputBlock; lockObject: BABYLON.NodeEditor.SharedUIComponents.LockObject; } export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> { render(): import("react/jsx-runtime").JSX.Element; } export enum PreviewType { Sphere = 0, Box = 1, Torus = 2, Cylinder = 3, Plane = 4, ShaderBall = 5, DefaultParticleSystem = 6, Bubbles = 7, Smoke = 8, Rain = 9, Explosion = 10, Fire = 11, Parrot = 12, BricksSkull = 13, Plants = 14, Custom = 15, Room = 16 } interface IPreviewMeshControlComponent { globalState: GlobalState; togglePreviewAreaComponent: () => void; onMounted?: () => void; } export class PreviewMeshControlComponent extends React.Component<IPreviewMeshControlComponent> { private _colorInputRef; private _filePickerRef; private _envPickerRef; private _onResetRequiredObserver; private _onDropEventObserver; private _onRefreshPreviewMeshControlComponentRequiredObserver; constructor(props: IPreviewMeshControlComponent); componentWillUnmount(): void; componentDidMount(): void; changeMeshType(newOne: PreviewType): void; useCustomMesh(evt: any): void; useCustomEnv(evt: any): void; onPopUp(): void; changeAnimation(): void; changeBackground(value: string): void; changeBackgroundClick(): void; render(): import("react/jsx-runtime").JSX.Element; } export class PreviewManager { private _nodeMaterial; private _onBuildObserver; private _onPreviewCommandActivatedObserver; private _onAnimationCommandActivatedObserver; private _onUpdateRequiredObserver; private _onPreviewBackgroundChangedObserver; private _onBackFaceCullingChangedObserver; private _onDepthPrePassChangedObserver; private _onLightUpdatedObserver; private _onBackgroundHDRUpdatedObserver; private _engine; private _scene; private _meshes; private _camera; private _material; private _globalState; private _currentType; private _lightParent; private _postprocess; private _proceduralTexture; private _particleSystem; private _layer; private _hdrSkyBox; private _hdrTexture; private _serializeMaterial; /** * Create a new Preview Manager * @param targetCanvas defines the canvas to render to * @param globalState defines the global state */ constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState); _initAsync(targetCanvas: HTMLCanvasElement): Promise<void>; private _reset; private _handleAnimations; private _prepareLights; private _prepareBackgroundHDR; private _prepareScene; /** * Default Environment URL */ static DefaultEnvironmentURL: string; private _refreshPreviewMesh; private _loadParticleSystem; private _forceCompilationAsync; private _updatePreview; dispose(): void; } interface IPreviewAreaComponentProps { globalState: GlobalState; onMounted?: () => void; } export class PreviewAreaComponent extends React.Component<IPreviewAreaComponentProps, { isLoading: boolean; }> { private _onIsLoadingChangedObserver; private _onResetRequiredObserver; private _consoleRef; constructor(props: IPreviewAreaComponentProps); componentDidMount(): void; componentWillUnmount(): void; changeBackFaceCulling(value: boolean): void; changeDepthPrePass(value: boolean): void; _onPointerOverCanvas: () => void; _onPointerOutCanvas: () => void; changeParticleSystemBlendMode(newOne: number): void; processPointerMove(e: React.PointerEvent<HTMLCanvasElement>): Promise<void>; onKeyUp(e: React.KeyboardEvent<HTMLCanvasElement>): void; render(): import("react/jsx-runtime").JSX.Element; } interface INodeListComponentProps { globalState: GlobalState; } export class NodeListComponent extends React.Component<INodeListComponentProps, { filter: string; }> { private _onResetRequiredObserver; private static _Tooltips; private _customFrameList; private _customBlockList; constructor(props: INodeListComponentProps); componentWillUnmount(): void; filterContent(filter: string): void; loadCustomFrame(file: File): void; removeItem(value: string): void; loadCustomBlock(file: File): void; removeCustomBlock(value: string): void; renderFluent(blockMenu: JSX.Element[]): import("react/jsx-runtime").JSX.Element; renderOriginal(blockMenu: JSX.Element[]): import("react/jsx-runtime").JSX.Element; render(): import("react/jsx-runtime").JSX.Element; } interface ILogComponentProps { globalState: GlobalState; } export class LogEntry { message: string; isError: boolean; time: Date; constructor(message: string, isError: boolean); } export class LogComponent extends React.Component<ILogComponentProps, { logs: LogEntry[]; }> { private _logConsoleRef; constructor(props: ILogComponentProps); componentDidMount(): void; componentDidUpdate(): void; render(): import("react/jsx-runtime").JSX.Element; } } declare module BABYLON.NodeEditor.SharedUIComponents { /** * Copy all styles from a document to another document or shadow root * @param source document to copy styles from * @param target document or shadow root to copy styles to */ export function CopyStyles(source: Document, target: DocumentOrShadowRoot): void; /** * Merges classNames by array of strings or conditions * @param classNames Array of className strings or truthy conditions * @returns A concatenated string, suitable for the className attribute */ export function MergeClassNames(classNames: ClassNameCondition[]): string; /** * className (replicating React type) or a tuple with the second member being any truthy value ["className", true] */ type ClassNameCondition = string | undefined | [string, any]; } declare module BABYLON.NodeEditor { } declare module BABYLON.NodeEditor.SharedUIComponents { export class StringTools { private static _SaveAs; private static _Click; /** * Download a string into a file that will be saved locally by the browser * @param document * @param content defines the string to download locally as a file * @param filename */ static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void; } } declare module BABYLON.NodeEditor { } declare module BABYLON.NodeEditor.SharedUIComponents { export class PropertyChangedEvent { object: any; property: string; value: any; initialValue: any; allowNullValue?: boolean; } } declare module BABYLON.NodeEditor { } declare module BABYLON.NodeEditor.SharedUIComponents { /** * Create a popup window * @param title default title for the popup * @param options options for the popup * @returns the parent control of the popup */ export function CreatePopup(title: string, options: Partial<{ onParentControlCreateCallback?: (parentControl: HTMLDivElement) => void; onWindowCreateCallback?: (newWindow: Window) => void; width?: number; height?: number; }>): HTMLDivElement | null; } declare module BABYLON.NodeEditor { } declare module BABYLON.NodeEditor.SharedUIComponents { /** * Class handling undo / redo operations */ export class HistoryStack implements BABYLON.IDisposable { private _historyStack; private _redoStack; private _activeData; private readonly _maxHistoryLength; private _locked; private _dataProvider; private _applyUpdate; /** * Gets or sets a boolean indicating if the stack is enabled */ isEnabled: boolean; /** * Constructor * @param dataProvider defines the data provider function * @param applyUpdate defines the code to execute when undo/redo operation is required */ constructor(dataProvider: () => any, applyUpdate: (data: any) => void); /** * Process key event to handle undo / redo * @param evt defines the keyboard event to process * @returns true if the event was processed */ processKeyEvent(evt: KeyboardEvent): boolean; /** * Resets the stack */ reset(): void; /**