///
declare module NODEEDITOR {
export class BlockTools {
static GetBlockFromString(data: string, scene: BABYLON.Scene, nodeMaterial: BABYLON.NodeMaterial): 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.ImageProcessingBlock | BABYLON.ColorMergerBlock | BABYLON.VectorMergerBlock | BABYLON.ColorSplitterBlock | BABYLON.VectorSplitterBlock | BABYLON.TextureBlock | BABYLON.ReflectionTextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.ScaleBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.PowBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | BABYLON.TrigonometryBlock | BABYLON.RemapBlock | BABYLON.NormalizeBlock | BABYLON.FresnelBlock | BABYLON.LerpBlock | BABYLON.NLerpBlock | BABYLON.DivideBlock | BABYLON.SubtractBlock | BABYLON.StepBlock | BABYLON.SmoothStepBlock | BABYLON.OneMinusBlock | BABYLON.ReciprocalBlock | BABYLON.ViewDirectionBlock | BABYLON.LightInformationBlock | BABYLON.MaxBlock | BABYLON.MinBlock | BABYLON.LengthBlock | BABYLON.DistanceBlock | BABYLON.NegateBlock | BABYLON.PerturbNormalBlock | BABYLON.RandomNumberBlock | BABYLON.ReplaceColorBlock | BABYLON.PosterizeBlock | BABYLON.ArcTan2Block | BABYLON.GradientBlock | BABYLON.FrontFacingBlock | BABYLON.WaveBlock | BABYLON.InputBlock | null;
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" | "";
}
}
declare module NODEEDITOR {
export class DataStorage {
private static _InMemoryStorage;
static ReadBoolean(key: string, defaultValue: boolean): boolean;
static StoreBoolean(key: string, value: boolean): void;
static ReadNumber(key: string, defaultValue: number): number;
static StoreNumber(key: string, value: number): void;
}
}
declare module NODEEDITOR {
interface ILogComponentProps {
globalState: GlobalState;
}
export class LogEntry {
message: string;
isError: boolean;
constructor(message: string, isError: boolean);
}
export class LogComponent extends React.Component {
constructor(props: ILogComponentProps);
componentDidMount(): void;
componentDidUpdate(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export enum PreviewMeshType {
Sphere = 0,
Box = 1,
Torus = 2,
Cylinder = 3,
Plane = 4,
ShaderBall = 5,
Custom = 6
}
}
declare module NODEEDITOR {
export interface IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
}
}
declare module NODEEDITOR {
export class NodePort {
connectionPoint: BABYLON.NodeMaterialConnectionPoint;
node: GraphNode;
private _element;
private _img;
private _globalState;
private _onCandidateLinkMovedObserver;
delegatedPort: BABYLON.Nullable;
readonly element: HTMLDivElement;
refresh(): void;
constructor(portContainer: HTMLElement, connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState);
dispose(): void;
static CreatePortElement(connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: BABYLON.Nullable, globalState: GlobalState): NodePort;
}
}
declare module NODEEDITOR {
export interface INodeLocationInfo {
blockId: number;
x: number;
y: number;
}
export interface IFrameData {
x: number;
y: number;
width: number;
height: number;
color: number[];
name: string;
isCollapsed: boolean;
}
export interface IEditorData {
locations: INodeLocationInfo[];
x: number;
y: number;
zoom: number;
frames?: IFrameData[];
}
}
declare module NODEEDITOR {
export class GraphFrame {
private _name;
private _color;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _width;
private _height;
element: HTMLDivElement;
private _borderElement;
private _headerElement;
private _headerTextElement;
private _headerCollapseElement;
private _headerCloseElement;
private _portContainer;
private _outputPortContainer;
private _inputPortContainer;
private _nodes;
private _ownerCanvas;
private _mouseStartPointX;
private _mouseStartPointY;
private _onSelectionChangedObserver;
private _isCollapsed;
private _ports;
private _controlledPorts;
private readonly CloseSVG;
private readonly ExpandSVG;
private readonly CollapseSVG;
isCollapsed: boolean;
private _createInputPort;
readonly nodes: GraphNode[];
name: string;
color: BABYLON.Color3;
x: number;
y: number;
width: number;
height: number;
constructor(candidate: BABYLON.Nullable, canvas: GraphCanvasComponent, doNotCaptureNodes?: boolean);
refresh(): void;
addNode(node: GraphNode): void;
removeNode(node: GraphNode): void;
syncNode(node: GraphNode): void;
cleanAccumulation(): void;
private _onDown;
private _onUp;
private _moveFrame;
private _onMove;
dispose(): void;
serialize(): IFrameData;
static Parse(serializationData: IFrameData, canvas: GraphCanvasComponent): GraphFrame;
}
}
declare module NODEEDITOR {
export class NodeLink {
private _graphCanvas;
private _portA;
private _portB?;
private _nodeA;
private _nodeB?;
private _path;
private _selectionPath;
private _onSelectionChangedObserver;
private _isVisible;
onDisposedObservable: BABYLON.Observable;
isVisible: boolean;
readonly portA: NodePort;
readonly portB: NodePort | undefined;
readonly nodeA: GraphNode;
readonly nodeB: GraphNode | undefined;
update(endX?: number, endY?: number, straight?: boolean): void;
constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode);
onClick(): void;
dispose(): void;
}
}
declare module NODEEDITOR {
export interface IGraphCanvasComponentProps {
globalState: GlobalState;
}
export class GraphCanvasComponent extends React.Component {
private readonly MinZoom;
private readonly MaxZoom;
private _hostCanvas;
private _graphCanvas;
private _selectionContainer;
private _frameContainer;
private _svgCanvas;
private _rootContainer;
private _nodes;
private _links;
private _mouseStartPointX;
private _mouseStartPointY;
private _dropPointX;
private _dropPointY;
private _selectionStartX;
private _selectionStartY;
private _x;
private _y;
private _zoom;
private _selectedNodes;
private _selectedLink;
private _candidateLink;
private _candidatePort;
private _gridSize;
private _selectionBox;
private _selectedFrame;
private _frameCandidate;
private _frames;
private _altKeyIsPressed;
private _ctrlKeyIsPressed;
private _oldY;
_frameIsMoving: boolean;
gridSize: number;
readonly globalState: GlobalState;
readonly nodes: GraphNode[];
readonly links: NodeLink[];
readonly frames: GraphFrame[];
zoom: number;
x: number;
y: number;
readonly selectedNodes: GraphNode[];
readonly selectedLink: BABYLON.Nullable;
readonly selectedFrame: BABYLON.Nullable;
readonly canvasContainer: HTMLDivElement;
readonly svgCanvas: HTMLElement;
readonly selectionContainer: HTMLDivElement;
readonly frameContainer: HTMLDivElement;
constructor(props: IGraphCanvasComponentProps);
getGridPosition(position: number, useCeil?: boolean): number;
getGridPositionCeil(position: number): number;
updateTransform(): void;
onKeyUp(): void;
findNodeFromBlock(block: BABYLON.NodeMaterialBlock): GraphNode;
reset(): void;
connectPorts(pointA: BABYLON.NodeMaterialConnectionPoint, pointB: BABYLON.NodeMaterialConnectionPoint): void;
removeLink(link: NodeLink): void;
appendBlock(block: BABYLON.NodeMaterialBlock): GraphNode;
distributeGraph(): void;
componentDidMount(): void;
onMove(evt: React.PointerEvent): void;
onDown(evt: React.PointerEvent): void;
onUp(evt: React.PointerEvent): void;
onWheel(evt: React.WheelEvent): void;
zoomToFit(): void;
processCandidatePort(): void;
processEditorData(editorData: IEditorData): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class PropertyChangedEvent {
object: any;
property: string;
value: any;
initialValue: any;
}
}
declare module NODEEDITOR {
interface IFloatLineComponentProps {
label: string;
target: any;
propertyName: string;
onChange?: (newValue: number) => void;
isInteger?: boolean;
onPropertyChangedObservable?: BABYLON.Observable;
additionalClass?: string;
step?: string;
digits?: number;
}
export class FloatLineComponent extends React.Component {
private _localChange;
private _store;
constructor(props: IFloatLineComponentProps);
shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: number, previousValue: number): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IFloatPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class FloatPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ISliderLineComponentProps {
label: string;
target?: any;
propertyName?: string;
minimum: number;
maximum: number;
step: number;
directValue?: number;
useEuler?: boolean;
onChange?: (value: number) => void;
onInput?: (value: number) => void;
onPropertyChangedObservable?: BABYLON.Observable;
decimalCount?: number;
}
export class SliderLineComponent extends React.Component {
private _localChange;
constructor(props: ISliderLineComponentProps);
shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
value: number;
}): boolean;
onChange(newValueString: any): void;
onInput(newValueString: any): void;
prepareDataToRead(value: number): number;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface INumericInputComponentProps {
label: string;
value: number;
step?: number;
onChange: (value: number) => void;
}
export class NumericInputComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: INumericInputComponentProps);
shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
value: string;
}): boolean;
updateValue(evt: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector2LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: BABYLON.Vector2) => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class Vector2LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector2LineComponentProps);
shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector2;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector2PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector2PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IColor3LineComponentProps {
label: string;
target: any;
propertyName: string;
onPropertyChangedObservable?: BABYLON.Observable;
onChange?: () => void;
}
export class Color3LineComponent extends React.Component {
private _localChange;
constructor(props: IColor3LineComponentProps);
shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
color: BABYLON.Color3;
}): boolean;
onChange(newValue: string): void;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
updateStateR(value: number): void;
updateStateG(value: number): void;
updateStateB(value: number): void;
copyToClipboard(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IColor3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Color3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector3LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: BABYLON.Vector3) => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class Vector3LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector3LineComponentProps);
shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector3;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
updateVector3(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector4LineComponentProps {
label: string;
target?: any;
propertyName?: string;
value?: BABYLON.Vector4;
step?: number;
onChange?: (newvalue: BABYLON.Vector4) => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class Vector4LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector4LineComponentProps);
shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector4;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector4): void;
updateVector4(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
updateStateW(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector4PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector4PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
class ListLineOption {
label: string;
value: number | string;
}
interface IOptionsLineComponentProps {
label: string;
target: any;
className?: string;
propertyName?: string;
options: ListLineOption[];
noDirectUpdate?: boolean;
onSelect?: (value: number | string) => void;
onPropertyChangedObservable?: BABYLON.Observable;
valuesAreStrings?: boolean;
defaultIfNull?: number;
getSelection?: (target: any) => number;
}
export class OptionsLineComponent extends React.Component {
private _localChange;
private _getValue;
constructor(props: IOptionsLineComponentProps);
shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
value: number;
}): boolean;
raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IMatrixLineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newValue: BABYLON.Matrix) => void;
onModeChange?: (mode: number) => void;
onPropertyChangedObservable?: BABYLON.Observable;
mode?: number;
}
export class MatrixLineComponent extends React.Component {
private _localChange;
constructor(props: IMatrixLineComponentProps);
shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: {
value: BABYLON.Matrix;
mode: number;
angle: number;
}): boolean;
raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
updateMatrix(): void;
updateRow(value: BABYLON.Vector4, row: number): void;
updateBasedOnMode(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IMatrixPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class MatrixPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ILineContainerComponentProps {
title: string;
children: any[] | any;
closed?: boolean;
}
export class LineContainerComponent extends React.Component {
constructor(props: ILineContainerComponentProps);
switchExpandedState(): void;
renderHeader(): JSX.Element;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IPropertyComponentProps {
globalState: GlobalState;
block: BABYLON.NodeMaterialBlock;
}
}
declare module NODEEDITOR {
interface ITextInputLineComponentProps {
label: string;
globalState: GlobalState;
target?: any;
propertyName?: string;
value?: string;
onChange?: (value: string) => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class TextInputLineComponent extends React.Component {
private _localChange;
constructor(props: ITextInputLineComponentProps);
shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: string, previousValue: string): void;
updateValue(value: string, raisePropertyChanged: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ITextLineComponentProps {
label: string;
value: string;
color?: string;
underline?: boolean;
onLink?: () => void;
}
export class TextLineComponent extends React.Component {
constructor(props: ITextLineComponentProps);
onLink(): void;
renderContent(): JSX.Element;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class GenericPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class InputPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
renderValue(globalState: GlobalState): JSX.Element | null;
setDefaultValue(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface ICheckBoxLineComponentProps {
label: string;
target?: any;
propertyName?: string;
isSelected?: () => boolean;
onSelect?: (value: boolean) => void;
onValueChanged?: () => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class CheckBoxLineComponent extends React.Component {
private static _UniqueIdSeed;
private _uniqueId;
private _localChange;
constructor(props: ICheckBoxLineComponentProps);
shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
isSelected: boolean;
}): boolean;
onChange(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TransformPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class PerturbNormalPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class WorleyNoise3DNodePropertyComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class ClampPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IGradientStepComponentProps {
globalState: GlobalState;
step: BABYLON.GradientBlockColorStep;
lineIndex: number;
onDelete: () => void;
onUpdateStep: () => void;
}
export class GradientStepComponent extends React.Component {
constructor(props: IGradientStepComponentProps);
updateColor(color: string): void;
updateStep(gradient: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IButtonLineComponentProps {
label: string;
onClick: () => void;
}
export class ButtonLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class GradientPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(): void;
deleteStep(step: BABYLON.GradientBlockColorStep): void;
addNewStep(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class LightPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class LightInformationPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class RemapPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IFileButtonLineComponentProps {
label: string;
onClick: (file: File) => void;
accept: string;
}
export class FileButtonLineComponent extends React.Component {
constructor(props: IFileButtonLineComponentProps);
onChange(evt: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TexturePropertyTabComponent extends React.Component {
readonly textureBlock: BABYLON.TextureBlock | BABYLON.ReflectionTextureBlock;
constructor(props: IPropertyComponentProps);
UNSAFE_componentWillUpdate(nextProps: 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(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TrigonometryPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class PropertyLedger {
static RegisteredControls: {
[key: string]: React.ComponentClass;
};
}
}
declare module NODEEDITOR {
export class StringTools {
private static _SaveAs;
private static _Click;
/**
* Gets the base math type of node material block connection point.
* @param type Type to parse.
*/
static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
/**
* Download a string into a file that will be saved locally by the browser
* @param content defines the string to download locally as a file
*/
static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
}
}
declare module NODEEDITOR {
export class InputDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): "" | "constant" | "inspector";
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class OutputDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class ClampDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class GradientDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class RemapDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
private _extractInputValue;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class TrigonometryDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
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 {
constructor(props: ITextureLineComponentProps);
shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
displayRed: boolean;
displayGreen: boolean;
displayBlue: boolean;
displayAlpha: boolean;
face: number;
}): boolean;
componentDidMount(): void;
componentDidUpdate(): void;
updatePreview(): void;
static UpdatePreview(previewCanvas: HTMLCanvasElement, texture: BABYLON.BaseTexture, width: number, options: ITextureLineComponentState, onReady?: () => void, globalState?: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TextureDisplayManager implements IDisplayManager {
private _previewCanvas;
private _previewImage;
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class DisplayLedger {
static RegisteredControls: {
[key: string]: any;
};
}
}
declare module NODEEDITOR {
export class GraphNode {
block: BABYLON.NodeMaterialBlock;
private _visual;
private _header;
private _connections;
private _inputsContainer;
private _outputsContainer;
private _content;
private _comments;
private _inputPorts;
private _outputPorts;
private _links;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _mouseStartPointX;
private _mouseStartPointY;
private _globalState;
private _onSelectionChangedObserver;
private _onSelectionBoxMovedObserver;
private _onFrameCreatedObserver;
private _onUpdateRequiredObserver;
private _ownerCanvas;
private _isSelected;
private _displayManager;
private _isVisible;
isVisible: boolean;
readonly outputPorts: NodePort[];
readonly inputPorts: NodePort[];
readonly links: NodeLink[];
readonly gridAlignedX: number;
readonly gridAlignedY: number;
x: number;
y: number;
readonly width: number;
readonly height: number;
readonly id: number;
readonly name: string;
isSelected: boolean;
constructor(block: BABYLON.NodeMaterialBlock, globalState: GlobalState);
isOverlappingFrame(frame: GraphFrame): boolean;
getPortForConnectionPoint(point: BABYLON.NodeMaterialConnectionPoint): BABYLON.Nullable;
getLinksForConnectionPoint(point: BABYLON.NodeMaterialConnectionPoint): NodeLink[];
private _refreshFrames;
private _refreshLinks;
refresh(): void;
private _onDown;
cleanAccumulation(useCeil?: boolean): void;
private _onUp;
private _onMove;
renderProperties(): BABYLON.Nullable;
appendVisual(root: HTMLDivElement, owner: GraphCanvasComponent): void;
dispose(): void;
}
}
declare module NODEEDITOR {
export class GlobalState {
nodeMaterial: BABYLON.NodeMaterial;
hostElement: HTMLElement;
hostDocument: HTMLDocument;
onSelectionChangedObservable: BABYLON.Observable>;
onRebuildRequiredObservable: BABYLON.Observable;
onResetRequiredObservable: BABYLON.Observable;
onUpdateRequiredObservable: BABYLON.Observable;
onZoomToFitRequiredObservable: BABYLON.Observable;
onReOrganizedRequiredObservable: BABYLON.Observable;
onLogRequiredObservable: BABYLON.Observable;
onErrorMessageDialogRequiredObservable: BABYLON.Observable;
onIsLoadingChanged: BABYLON.Observable;
onPreviewCommandActivated: BABYLON.Observable;
onLightUpdated: BABYLON.Observable;
onPreviewBackgroundChanged: BABYLON.Observable;
onBackFaceCullingChanged: BABYLON.Observable;
onDepthPrePassChanged: BABYLON.Observable;
onAnimationCommandActivated: BABYLON.Observable;
onCandidateLinkMoved: BABYLON.Observable>;
onSelectionBoxMoved: BABYLON.Observable;
onFrameCreated: BABYLON.Observable;
onCandidatePortSelected: BABYLON.Observable>;
onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => GraphNode;
onGridSizeChanged: BABYLON.Observable;
previewMeshType: PreviewMeshType;
previewMeshFile: File;
rotatePreview: boolean;
backgroundColor: BABYLON.Color4;
backFaceCulling: boolean;
depthPrePass: boolean;
blockKeyboardEvents: boolean;
hemisphericLight: boolean;
directionalLight0: boolean;
directionalLight1: boolean;
controlCamera: boolean;
storeEditorData: (serializationObject: any) => void;
customSave?: {
label: string;
action: (data: string) => Promise;
};
constructor();
}
}
declare module NODEEDITOR {
export interface IButtonLineComponentProps {
data: string;
tooltip: string;
}
export class DraggableLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface INodeListComponentProps {
globalState: GlobalState;
}
export class NodeListComponent extends React.Component {
private static _Tooltips;
constructor(props: INodeListComponentProps);
filterContent(filter: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class SerializationTools {
static UpdateLocations(material: BABYLON.NodeMaterial, globalState: GlobalState): void;
static Serialize(material: BABYLON.NodeMaterial, globalState: GlobalState): string;
static Deserialize(serializationObject: any, globalState: GlobalState): void;
}
}
declare module NODEEDITOR {
interface IPropertyTabComponentProps {
globalState: GlobalState;
}
export class PropertyTabComponent extends React.Component;
currentFrame: BABYLON.Nullable;
}> {
constructor(props: IPropertyTabComponentProps);
componentDidMount(): void;
load(file: File): void;
save(): void;
customSave(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IPortalProps {
globalState: GlobalState;
}
export class Portal extends React.Component {
render(): React.ReactPortal;
}
}
declare module NODEEDITOR {
interface IMessageDialogComponentProps {
globalState: GlobalState;
}
export class MessageDialogComponent extends React.Component {
constructor(props: IMessageDialogComponentProps);
render(): JSX.Element | null;
}
}
declare module NODEEDITOR {
export class PreviewManager {
private _nodeMaterial;
private _onBuildObserver;
private _onPreviewCommandActivatedObserver;
private _onAnimationCommandActivatedObserver;
private _onUpdateRequiredObserver;
private _onPreviewBackgroundChangedObserver;
private _onBackFaceCullingChangedObserver;
private _onDepthPrePassChangedObserver;
private _onLightUpdatedObserver;
private _engine;
private _scene;
private _meshes;
private _camera;
private _material;
private _globalState;
private _currentType;
private _lightParent;
constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
private _handleAnimations;
private _prepareLights;
private _prepareMeshes;
private _refreshPreviewMesh;
private _forceCompilationAsync;
private _updatePreview;
dispose(): void;
}
}
declare module NODEEDITOR {
interface IPreviewMeshControlComponent {
globalState: GlobalState;
}
export class PreviewMeshControlComponent extends React.Component {
changeMeshType(newOne: PreviewMeshType): void;
useCustomMesh(evt: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IPreviewAreaComponentProps {
globalState: GlobalState;
width: number;
}
export class PreviewAreaComponent extends React.Component {
constructor(props: IPreviewAreaComponentProps);
changeAnimation(): void;
changeBackground(value: string): void;
changeBackFaceCulling(value: boolean): void;
changeDepthPrePass(value: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IGraphEditorProps {
globalState: GlobalState;
}
export class GraphEditor extends React.Component {
private readonly NodeWidth;
private _graphCanvas;
private _startX;
private _moveInProgress;
private _leftWidth;
private _rightWidth;
private _blocks;
private _previewManager;
private _copiedNodes;
private _copiedFrame;
private _mouseLocationX;
private _mouseLocationY;
private _onWidgetKeyUpPointer;
/**
* Creates a node and recursivly creates its parent nodes from it's input
* @param nodeMaterialBlock
*/
createNodeFromObject(block: BABYLON.NodeMaterialBlock): GraphNode;
addValueNode(type: string): GraphNode;
componentDidMount(): void;
componentWillUnmount(): void;
constructor(props: IGraphEditorProps);
reconnectNewNodes(nodeIndex: number, newNodes: GraphNode[], sourceNodes: GraphNode[], done: boolean[]): void;
pasteSelection(copiedNodes: GraphNode[], currentX: number, currentY: number): void;
zoomToFit(): void;
buildMaterial(): void;
build(): void;
reOrganize(editorData?: BABYLON.Nullable): void;
onPointerDown(evt: React.PointerEvent): void;
onPointerUp(evt: React.PointerEvent): void;
resizeColumns(evt: React.PointerEvent, forLeft?: boolean): void;
buildColumnLayout(): string;
emitNewBlock(event: React.DragEvent): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class Popup {
static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): Nullable;
private static _CopyStyles;
}
}
declare module NODEEDITOR {
/**
* 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;
};
customLoadObservable?: BABYLON.Observable;
}
/**
* Class used to create a node editor
*/
export class NodeEditor {
private static _CurrentState;
/**
* Show the node editor
* @param options defines the options to use to configure the node editor
*/
static Show(options: INodeEditorOptions): void;
}
}