|
@@ -1,9 +1,95 @@
|
|
|
/// <reference types="react" />
|
|
|
+declare module "babylonjs-node-editor/components/diagram/defaultPortModel" {
|
|
|
+ import { LinkModel, PortModel } from "storm-react-diagrams";
|
|
|
+ import { Nullable } from 'babylonjs/types';
|
|
|
+ import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
+ import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
|
|
|
+ /**
|
|
|
+ * Port model
|
|
|
+ */
|
|
|
+ export class DefaultPortModel extends PortModel {
|
|
|
+ /**
|
|
|
+ * If the port is input or output
|
|
|
+ */
|
|
|
+ position: string | "input" | "output";
|
|
|
+ /**
|
|
|
+ * What the port is connected to
|
|
|
+ */
|
|
|
+ connection: Nullable<NodeMaterialConnectionPoint>;
|
|
|
+ static idCounter: number;
|
|
|
+ constructor(name: string, type?: string);
|
|
|
+ syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
|
|
|
+ getNodeModel(): DefaultNodeModel;
|
|
|
+ link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
|
|
|
+ getInputFromBlock(): void;
|
|
|
+ createLinkModel(): LinkModel;
|
|
|
+ getValue: Function;
|
|
|
+ static SortInputOutput(a: Nullable<DefaultPortModel>, b: Nullable<DefaultPortModel>): {
|
|
|
+ input: DefaultPortModel;
|
|
|
+ output: DefaultPortModel;
|
|
|
+ } | null;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/sharedComponents/textLineComponent" {
|
|
|
+ import * as React from "react";
|
|
|
+ interface ITextLineComponentProps {
|
|
|
+ label: string;
|
|
|
+ value: string;
|
|
|
+ color?: string;
|
|
|
+ underline?: boolean;
|
|
|
+ onLink?: () => void;
|
|
|
+ }
|
|
|
+ export class TextLineComponent extends React.Component<ITextLineComponentProps> {
|
|
|
+ constructor(props: ITextLineComponentProps);
|
|
|
+ onLink(): void;
|
|
|
+ renderContent(): JSX.Element;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
|
|
|
+ import { Nullable } from 'babylonjs/types';
|
|
|
+ import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
|
|
|
+ import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
|
|
|
+ import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
|
|
|
+ import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
|
|
|
+ import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ /**
|
|
|
+ * Generic node model which stores information about a node editor block
|
|
|
+ */
|
|
|
+ export class GenericNodeModel extends DefaultNodeModel {
|
|
|
+ /**
|
|
|
+ * Labels for the block
|
|
|
+ */
|
|
|
+ header: string;
|
|
|
+ /**
|
|
|
+ * Vector2 for the node if it exists
|
|
|
+ */
|
|
|
+ vector2: Nullable<Vector2>;
|
|
|
+ /**
|
|
|
+ * Vector3 for the node if it exists
|
|
|
+ */
|
|
|
+ vector3: Nullable<Vector3>;
|
|
|
+ /**
|
|
|
+ * Vector4 for the node if it exists
|
|
|
+ */
|
|
|
+ vector4: Nullable<Vector4>;
|
|
|
+ /**
|
|
|
+ * Matrix for the node if it exists
|
|
|
+ */
|
|
|
+ matrix: Nullable<Matrix>;
|
|
|
+ /**
|
|
|
+ * Constructs the node model
|
|
|
+ */
|
|
|
+ constructor();
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
+ renderProperties(globalState: GlobalState): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
declare module "babylonjs-node-editor/components/diagram/generic/genericNodeWidget" {
|
|
|
import * as React from "react";
|
|
|
- import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
import { Nullable } from 'babylonjs/types';
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
/**
|
|
|
* GenericNodeWidgetProps
|
|
|
*/
|
|
@@ -157,6 +243,8 @@ declare module "babylonjs-node-editor/components/diagram/texture/textureNodeMode
|
|
|
import { Texture } from 'babylonjs/Materials/Textures/texture';
|
|
|
import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
|
|
|
+ import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
|
|
|
/**
|
|
|
* Texture node model which stores information about a node editor block
|
|
|
*/
|
|
@@ -170,6 +258,7 @@ declare module "babylonjs-node-editor/components/diagram/texture/textureNodeMode
|
|
|
*/
|
|
|
constructor();
|
|
|
renderProperties(globalState: GlobalState): JSX.Element;
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
}
|
|
|
}
|
|
|
declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
|
|
@@ -254,42 +343,6 @@ declare module "babylonjs-node-editor/components/diagram/texture/textureNodeFact
|
|
|
getNewInstance(): TextureNodeModel;
|
|
|
}
|
|
|
}
|
|
|
-declare module "babylonjs-node-editor/graphEditor" {
|
|
|
- import * as React from "react";
|
|
|
- import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
- import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
- import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
|
|
|
- import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
- import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
|
|
|
- interface IGraphEditorProps {
|
|
|
- globalState: GlobalState;
|
|
|
- }
|
|
|
- export class NodeCreationOptions {
|
|
|
- column: number;
|
|
|
- nodeMaterialBlock?: NodeMaterialBlock;
|
|
|
- type?: string;
|
|
|
- }
|
|
|
- export class GraphEditor extends React.Component<IGraphEditorProps> {
|
|
|
- private _engine;
|
|
|
- private _model;
|
|
|
- private _nodes;
|
|
|
- /**
|
|
|
- * Current row/column position used when adding new nodes
|
|
|
- */
|
|
|
- private _rowPos;
|
|
|
- /**
|
|
|
- * Creates a node and recursivly creates its parent nodes from it's input
|
|
|
- * @param nodeMaterialBlock
|
|
|
- */
|
|
|
- createNodeFromObject(options: NodeCreationOptions): GenericNodeModel | TextureNodeModel;
|
|
|
- componentDidMount(): void;
|
|
|
- componentWillUnmount(): void;
|
|
|
- constructor(props: IGraphEditorProps);
|
|
|
- addNodeFromClass(ObjectClass: typeof NodeMaterialBlock): GenericNodeModel | TextureNodeModel;
|
|
|
- addValueNode(type: string, column?: number, connection?: NodeMaterialConnectionPoint): GenericNodeModel | TextureNodeModel | null;
|
|
|
- render(): JSX.Element;
|
|
|
- }
|
|
|
-}
|
|
|
declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
|
|
|
import * as React from "react";
|
|
|
interface INumericInputComponentProps {
|
|
@@ -357,10 +410,10 @@ declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
|
|
|
declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
|
|
|
import * as React from "react";
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
- import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
+ import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
interface IVector2PropertyTabComponentProps {
|
|
|
globalState: GlobalState;
|
|
|
- node: GenericNodeModel;
|
|
|
+ connection: NodeMaterialConnectionPoint;
|
|
|
}
|
|
|
export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
|
|
|
render(): JSX.Element;
|
|
@@ -404,98 +457,197 @@ declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
|
|
|
declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
|
|
|
import * as React from "react";
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
- import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
+ import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
interface IVector3PropertyTabComponentProps {
|
|
|
globalState: GlobalState;
|
|
|
- node: GenericNodeModel;
|
|
|
+ connection: NodeMaterialConnectionPoint;
|
|
|
}
|
|
|
export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
|
|
|
render(): JSX.Element;
|
|
|
}
|
|
|
}
|
|
|
-declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
|
|
|
- import { Nullable } from 'babylonjs/types';
|
|
|
- import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
|
|
|
+declare module "babylonjs-node-editor/sharedComponents/checkBoxLineComponent" {
|
|
|
+ import * as React from "react";
|
|
|
+ import { Observable } from "babylonjs/Misc/observable";
|
|
|
+ import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
|
|
|
+ export interface ICheckBoxLineComponentProps {
|
|
|
+ label: string;
|
|
|
+ target?: any;
|
|
|
+ propertyName?: string;
|
|
|
+ isSelected?: () => boolean;
|
|
|
+ onSelect?: (value: boolean) => void;
|
|
|
+ onValueChanged?: () => void;
|
|
|
+ onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
|
|
|
+ }
|
|
|
+ export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
|
|
|
+ isSelected: boolean;
|
|
|
+ }> {
|
|
|
+ private static _UniqueIdSeed;
|
|
|
+ private _uniqueId;
|
|
|
+ private _localChange;
|
|
|
+ constructor(props: ICheckBoxLineComponentProps);
|
|
|
+ shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
|
|
|
+ isSelected: boolean;
|
|
|
+ }): boolean;
|
|
|
+ onChange(): void;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/sharedComponents/optionsLineComponent" {
|
|
|
+ import * as React from "react";
|
|
|
+ import { Observable } from "babylonjs/Misc/observable";
|
|
|
+ import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
|
|
|
+ class ListLineOption {
|
|
|
+ label: string;
|
|
|
+ value: number;
|
|
|
+ }
|
|
|
+ interface IOptionsLineComponentProps {
|
|
|
+ label: string;
|
|
|
+ target: any;
|
|
|
+ propertyName: string;
|
|
|
+ options: ListLineOption[];
|
|
|
+ noDirectUpdate?: boolean;
|
|
|
+ onSelect?: (value: number) => void;
|
|
|
+ onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
|
|
|
+ }
|
|
|
+ export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
|
|
|
+ value: number;
|
|
|
+ }> {
|
|
|
+ private _localChange;
|
|
|
+ constructor(props: IOptionsLineComponentProps);
|
|
|
+ shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
|
|
|
+ value: number;
|
|
|
+ }): boolean;
|
|
|
+ raiseOnPropertyChanged(newValue: number, previousValue: number): void;
|
|
|
+ updateValue(valueString: string): void;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/components/diagram/input/inputNodePropertyComponent" {
|
|
|
+ import * as React from "react";
|
|
|
+ import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
|
|
|
+ interface IInputPropertyTabComponentProps {
|
|
|
+ globalState: GlobalState;
|
|
|
+ inputNode: InputNodeModel;
|
|
|
+ }
|
|
|
+ export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
|
|
|
+ constructor(props: IInputPropertyTabComponentProps);
|
|
|
+ renderValue(globalState: GlobalState): JSX.Element | null;
|
|
|
+ setDefaultValue(): void;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/components/diagram/input/inputNodeModel" {
|
|
|
import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
|
|
|
- import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
|
|
|
- import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
|
|
|
- import { GenericPortModel } from "babylonjs-node-editor/components/diagram/generic/genericPortModel";
|
|
|
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
/**
|
|
|
* Generic node model which stores information about a node editor block
|
|
|
*/
|
|
|
- export class GenericNodeModel extends DefaultNodeModel {
|
|
|
+ export class InputNodeModel extends DefaultNodeModel {
|
|
|
+ connection?: NodeMaterialConnectionPoint;
|
|
|
/**
|
|
|
- * Labels for the block
|
|
|
- */
|
|
|
- headerLabels: Array<{
|
|
|
- text: string;
|
|
|
- }>;
|
|
|
- /**
|
|
|
- * Vector2 for the node if it exists
|
|
|
+ * Constructs the node model
|
|
|
*/
|
|
|
- vector2: Nullable<Vector2>;
|
|
|
+ constructor();
|
|
|
+ renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/components/diagram/input/inputNodeWidget" {
|
|
|
+ import * as React from "react";
|
|
|
+ import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
|
|
|
+ import { Nullable } from 'babylonjs/types';
|
|
|
+ import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ /**
|
|
|
+ * GenericNodeWidgetProps
|
|
|
+ */
|
|
|
+ export interface InputNodeWidgetProps {
|
|
|
+ node: Nullable<InputNodeModel>;
|
|
|
+ globalState: GlobalState;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * Used to display a node block for the node editor
|
|
|
+ */
|
|
|
+ export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
|
|
|
/**
|
|
|
- * Vector3 for the node if it exists
|
|
|
+ * Creates a GenericNodeWidget
|
|
|
+ * @param props
|
|
|
*/
|
|
|
- vector3: Nullable<Vector3>;
|
|
|
+ constructor(props: InputNodeWidgetProps);
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module "babylonjs-node-editor/components/diagram/input/inputNodeFactory" {
|
|
|
+ import * as SRD from "storm-react-diagrams";
|
|
|
+ import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
|
|
|
+ /**
|
|
|
+ * Node factory which creates editor nodes
|
|
|
+ */
|
|
|
+ export class InputNodeFactory extends SRD.AbstractNodeFactory {
|
|
|
+ private _globalState;
|
|
|
/**
|
|
|
- * Vector4 for the node if it exists
|
|
|
+ * Constructs a GenericNodeFactory
|
|
|
*/
|
|
|
- vector4: Nullable<Vector4>;
|
|
|
+ constructor(globalState: GlobalState);
|
|
|
/**
|
|
|
- * Matrix for the node if it exists
|
|
|
+ * Generates a node widget
|
|
|
+ * @param diagramEngine diagram engine
|
|
|
+ * @param node node to generate
|
|
|
+ * @returns node widget jsx
|
|
|
*/
|
|
|
- matrix: Nullable<Matrix>;
|
|
|
+ generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
|
|
|
/**
|
|
|
- * Constructs the node model
|
|
|
+ * Gets a new instance of a node model
|
|
|
+ * @returns input node model
|
|
|
*/
|
|
|
- constructor();
|
|
|
- prepareConnection(type: string, outPort: GenericPortModel, connection?: NodeMaterialConnectionPoint): void;
|
|
|
- prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
|
|
|
- renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
+ getNewInstance(): InputNodeModel;
|
|
|
}
|
|
|
}
|
|
|
-declare module "babylonjs-node-editor/components/diagram/generic/genericPortModel" {
|
|
|
- import { LinkModel, PortModel } from "storm-react-diagrams";
|
|
|
- import { Nullable } from 'babylonjs/types';
|
|
|
+declare module "babylonjs-node-editor/graphEditor" {
|
|
|
+ import * as React from "react";
|
|
|
+ import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
|
|
|
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
- import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
|
|
|
- /**
|
|
|
- * Port model for the generic node
|
|
|
- */
|
|
|
- export class GenericPortModel extends PortModel {
|
|
|
+ import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
|
|
|
+ interface IGraphEditorProps {
|
|
|
+ globalState: GlobalState;
|
|
|
+ }
|
|
|
+ export class NodeCreationOptions {
|
|
|
+ column: number;
|
|
|
+ nodeMaterialBlock?: NodeMaterialBlock;
|
|
|
+ type?: string;
|
|
|
+ connection?: NodeMaterialConnectionPoint;
|
|
|
+ }
|
|
|
+ export class GraphEditor extends React.Component<IGraphEditorProps> {
|
|
|
+ private _engine;
|
|
|
+ private _model;
|
|
|
+ private _nodes;
|
|
|
/**
|
|
|
- * If the port is input or output
|
|
|
+ * Current row/column position used when adding new nodes
|
|
|
*/
|
|
|
- position: string | "input" | "output";
|
|
|
+ private _rowPos;
|
|
|
/**
|
|
|
- * What the port is connected to
|
|
|
+ * Creates a node and recursivly creates its parent nodes from it's input
|
|
|
+ * @param nodeMaterialBlock
|
|
|
*/
|
|
|
- connection: Nullable<NodeMaterialConnectionPoint>;
|
|
|
- static idCounter: number;
|
|
|
- constructor(name: string, type?: string);
|
|
|
- syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
|
|
|
- getNodeModel(): GenericNodeModel;
|
|
|
- link(outPort: GenericPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
|
|
|
- getInputFromBlock(): void;
|
|
|
- createLinkModel(): LinkModel;
|
|
|
- getValue: Function;
|
|
|
- static SortInputOutput(a: Nullable<GenericPortModel>, b: Nullable<GenericPortModel>): {
|
|
|
- input: GenericPortModel;
|
|
|
- output: GenericPortModel;
|
|
|
- } | null;
|
|
|
+ createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
|
|
|
+ componentDidMount(): void;
|
|
|
+ componentWillUnmount(): void;
|
|
|
+ constructor(props: IGraphEditorProps);
|
|
|
+ addNodeFromClass(ObjectClass: typeof NodeMaterialBlock): DefaultNodeModel;
|
|
|
+ addValueNode(type: string, column?: number, connection?: NodeMaterialConnectionPoint): DefaultNodeModel;
|
|
|
+ render(): JSX.Element;
|
|
|
}
|
|
|
}
|
|
|
declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
|
|
|
import { NodeModel, DiagramModel } from "storm-react-diagrams";
|
|
|
import { Nullable } from 'babylonjs/types';
|
|
|
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
|
|
|
- import { GenericPortModel } from "babylonjs-node-editor/components/diagram/generic/genericPortModel";
|
|
|
import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
|
|
|
- import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
|
|
|
import { GlobalState } from "babylonjs-node-editor/globalState";
|
|
|
+ import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/defaultPortModel";
|
|
|
/**
|
|
|
* Generic node model which stores information about a node editor block
|
|
|
*/
|
|
@@ -505,14 +657,13 @@ declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
|
|
|
*/
|
|
|
block: Nullable<NodeMaterialBlock>;
|
|
|
ports: {
|
|
|
- [s: string]: GenericPortModel;
|
|
|
+ [s: string]: DefaultPortModel;
|
|
|
};
|
|
|
/**
|
|
|
* Constructs the node model
|
|
|
*/
|
|
|
constructor(key: string);
|
|
|
- prepareConnection(type: string, outPort: GenericPortModel, connection?: NodeMaterialConnectionPoint): void;
|
|
|
- prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
}
|
|
|
}
|
|
@@ -526,6 +677,7 @@ declare module "babylonjs-node-editor/globalState" {
|
|
|
hostElement: HTMLElement;
|
|
|
hostDocument: HTMLDocument;
|
|
|
onSelectionChangedObservable: Observable<Nullable<DefaultNodeModel>>;
|
|
|
+ onRebuildRequiredObservable: Observable<void>;
|
|
|
}
|
|
|
}
|
|
|
declare module "babylonjs-node-editor/sharedComponents/popup" {
|
|
@@ -565,6 +717,81 @@ declare module "babylonjs-node-editor" {
|
|
|
/// <reference types="react" />
|
|
|
declare module NODEEDITOR {
|
|
|
/**
|
|
|
+ * Port model
|
|
|
+ */
|
|
|
+ export class DefaultPortModel extends PortModel {
|
|
|
+ /**
|
|
|
+ * If the port is input or output
|
|
|
+ */
|
|
|
+ position: string | "input" | "output";
|
|
|
+ /**
|
|
|
+ * What the port is connected to
|
|
|
+ */
|
|
|
+ connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
|
|
|
+ static idCounter: number;
|
|
|
+ constructor(name: string, type?: string);
|
|
|
+ syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
|
|
|
+ getNodeModel(): DefaultNodeModel;
|
|
|
+ link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
|
|
|
+ getInputFromBlock(): void;
|
|
|
+ createLinkModel(): LinkModel;
|
|
|
+ getValue: Function;
|
|
|
+ static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
|
|
|
+ input: DefaultPortModel;
|
|
|
+ output: DefaultPortModel;
|
|
|
+ } | null;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ interface ITextLineComponentProps {
|
|
|
+ label: string;
|
|
|
+ value: string;
|
|
|
+ color?: string;
|
|
|
+ underline?: boolean;
|
|
|
+ onLink?: () => void;
|
|
|
+ }
|
|
|
+ export class TextLineComponent extends React.Component<ITextLineComponentProps> {
|
|
|
+ constructor(props: ITextLineComponentProps);
|
|
|
+ onLink(): void;
|
|
|
+ renderContent(): JSX.Element;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ /**
|
|
|
+ * Generic node model which stores information about a node editor block
|
|
|
+ */
|
|
|
+ export class GenericNodeModel extends DefaultNodeModel {
|
|
|
+ /**
|
|
|
+ * Labels for the block
|
|
|
+ */
|
|
|
+ header: string;
|
|
|
+ /**
|
|
|
+ * BABYLON.Vector2 for the node if it exists
|
|
|
+ */
|
|
|
+ vector2: BABYLON.Nullable<BABYLON.Vector2>;
|
|
|
+ /**
|
|
|
+ * BABYLON.Vector3 for the node if it exists
|
|
|
+ */
|
|
|
+ vector3: BABYLON.Nullable<BABYLON.Vector3>;
|
|
|
+ /**
|
|
|
+ * BABYLON.Vector4 for the node if it exists
|
|
|
+ */
|
|
|
+ vector4: BABYLON.Nullable<BABYLON.Vector4>;
|
|
|
+ /**
|
|
|
+ * BABYLON.Matrix for the node if it exists
|
|
|
+ */
|
|
|
+ matrix: BABYLON.Nullable<BABYLON.Matrix>;
|
|
|
+ /**
|
|
|
+ * Constructs the node model
|
|
|
+ */
|
|
|
+ constructor();
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
+ renderProperties(globalState: GlobalState): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ /**
|
|
|
* GenericNodeWidgetProps
|
|
|
*/
|
|
|
export interface GenericNodeWidgetProps {
|
|
@@ -708,6 +935,7 @@ declare module NODEEDITOR {
|
|
|
*/
|
|
|
constructor();
|
|
|
renderProperties(globalState: GlobalState): JSX.Element;
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
}
|
|
|
}
|
|
|
declare module NODEEDITOR {
|
|
@@ -784,36 +1012,6 @@ declare module NODEEDITOR {
|
|
|
}
|
|
|
}
|
|
|
declare module NODEEDITOR {
|
|
|
- interface IGraphEditorProps {
|
|
|
- globalState: GlobalState;
|
|
|
- }
|
|
|
- export class NodeCreationOptions {
|
|
|
- column: number;
|
|
|
- nodeMaterialBlock?: BABYLON.NodeMaterialBlock;
|
|
|
- type?: string;
|
|
|
- }
|
|
|
- export class GraphEditor extends React.Component<IGraphEditorProps> {
|
|
|
- private _engine;
|
|
|
- private _model;
|
|
|
- private _nodes;
|
|
|
- /**
|
|
|
- * Current row/column position used when adding new nodes
|
|
|
- */
|
|
|
- private _rowPos;
|
|
|
- /**
|
|
|
- * Creates a node and recursivly creates its parent nodes from it's input
|
|
|
- * @param nodeMaterialBlock
|
|
|
- */
|
|
|
- createNodeFromObject(options: NodeCreationOptions): GenericNodeModel | TextureNodeModel;
|
|
|
- componentDidMount(): void;
|
|
|
- componentWillUnmount(): void;
|
|
|
- constructor(props: IGraphEditorProps);
|
|
|
- addNodeFromClass(ObjectClass: typeof BABYLON.NodeMaterialBlock): GenericNodeModel | TextureNodeModel;
|
|
|
- addValueNode(type: string, column?: number, connection?: BABYLON.NodeMaterialConnectionPoint): GenericNodeModel | TextureNodeModel | null;
|
|
|
- render(): JSX.Element;
|
|
|
- }
|
|
|
-}
|
|
|
-declare module NODEEDITOR {
|
|
|
interface INumericInputComponentProps {
|
|
|
label: string;
|
|
|
value: number;
|
|
@@ -875,7 +1073,7 @@ declare module NODEEDITOR {
|
|
|
declare module NODEEDITOR {
|
|
|
interface IVector2PropertyTabComponentProps {
|
|
|
globalState: GlobalState;
|
|
|
- node: GenericNodeModel;
|
|
|
+ connection: BABYLON.NodeMaterialConnectionPoint;
|
|
|
}
|
|
|
export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
|
|
|
render(): JSX.Element;
|
|
@@ -915,73 +1113,161 @@ declare module NODEEDITOR {
|
|
|
declare module NODEEDITOR {
|
|
|
interface IVector3PropertyTabComponentProps {
|
|
|
globalState: GlobalState;
|
|
|
- node: GenericNodeModel;
|
|
|
+ connection: BABYLON.NodeMaterialConnectionPoint;
|
|
|
}
|
|
|
export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
|
|
|
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<PropertyChangedEvent>;
|
|
|
+ }
|
|
|
+ export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
|
|
|
+ isSelected: boolean;
|
|
|
+ }> {
|
|
|
+ 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 {
|
|
|
+ class ListLineOption {
|
|
|
+ label: string;
|
|
|
+ value: number;
|
|
|
+ }
|
|
|
+ interface IOptionsLineComponentProps {
|
|
|
+ label: string;
|
|
|
+ target: any;
|
|
|
+ propertyName: string;
|
|
|
+ options: ListLineOption[];
|
|
|
+ noDirectUpdate?: boolean;
|
|
|
+ onSelect?: (value: number) => void;
|
|
|
+ onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
|
|
|
+ }
|
|
|
+ export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
|
|
|
+ value: number;
|
|
|
+ }> {
|
|
|
+ private _localChange;
|
|
|
+ constructor(props: IOptionsLineComponentProps);
|
|
|
+ shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
|
|
|
+ value: number;
|
|
|
+ }): boolean;
|
|
|
+ raiseOnPropertyChanged(newValue: number, previousValue: number): void;
|
|
|
+ updateValue(valueString: string): void;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ interface IInputPropertyTabComponentProps {
|
|
|
+ globalState: GlobalState;
|
|
|
+ inputNode: InputNodeModel;
|
|
|
+ }
|
|
|
+ export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
|
|
|
+ constructor(props: IInputPropertyTabComponentProps);
|
|
|
+ renderValue(globalState: GlobalState): JSX.Element | null;
|
|
|
+ setDefaultValue(): void;
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
/**
|
|
|
* Generic node model which stores information about a node editor block
|
|
|
*/
|
|
|
- export class GenericNodeModel extends DefaultNodeModel {
|
|
|
+ export class InputNodeModel extends DefaultNodeModel {
|
|
|
+ connection?: BABYLON.NodeMaterialConnectionPoint;
|
|
|
/**
|
|
|
- * Labels for the block
|
|
|
- */
|
|
|
- headerLabels: Array<{
|
|
|
- text: string;
|
|
|
- }>;
|
|
|
- /**
|
|
|
- * BABYLON.Vector2 for the node if it exists
|
|
|
+ * Constructs the node model
|
|
|
*/
|
|
|
- vector2: BABYLON.Nullable<BABYLON.Vector2>;
|
|
|
+ constructor();
|
|
|
+ renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ /**
|
|
|
+ * GenericNodeWidgetProps
|
|
|
+ */
|
|
|
+ export interface InputNodeWidgetProps {
|
|
|
+ node: BABYLON.Nullable<InputNodeModel>;
|
|
|
+ globalState: GlobalState;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * Used to display a node block for the node editor
|
|
|
+ */
|
|
|
+ export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
|
|
|
/**
|
|
|
- * BABYLON.Vector3 for the node if it exists
|
|
|
+ * Creates a GenericNodeWidget
|
|
|
+ * @param props
|
|
|
*/
|
|
|
- vector3: BABYLON.Nullable<BABYLON.Vector3>;
|
|
|
+ constructor(props: InputNodeWidgetProps);
|
|
|
+ render(): JSX.Element;
|
|
|
+ }
|
|
|
+}
|
|
|
+declare module NODEEDITOR {
|
|
|
+ /**
|
|
|
+ * Node factory which creates editor nodes
|
|
|
+ */
|
|
|
+ export class InputNodeFactory extends SRD.AbstractNodeFactory {
|
|
|
+ private _globalState;
|
|
|
/**
|
|
|
- * BABYLON.Vector4 for the node if it exists
|
|
|
+ * Constructs a GenericNodeFactory
|
|
|
*/
|
|
|
- vector4: BABYLON.Nullable<BABYLON.Vector4>;
|
|
|
+ constructor(globalState: GlobalState);
|
|
|
/**
|
|
|
- * BABYLON.Matrix for the node if it exists
|
|
|
+ * Generates a node widget
|
|
|
+ * @param diagramEngine diagram engine
|
|
|
+ * @param node node to generate
|
|
|
+ * @returns node widget jsx
|
|
|
*/
|
|
|
- matrix: BABYLON.Nullable<BABYLON.Matrix>;
|
|
|
+ generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
|
|
|
/**
|
|
|
- * Constructs the node model
|
|
|
+ * Gets a new instance of a node model
|
|
|
+ * @returns input node model
|
|
|
*/
|
|
|
- constructor();
|
|
|
- prepareConnection(type: string, outPort: GenericPortModel, connection?: BABYLON.NodeMaterialConnectionPoint): void;
|
|
|
- prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
|
|
|
- renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
+ getNewInstance(): InputNodeModel;
|
|
|
}
|
|
|
}
|
|
|
declare module NODEEDITOR {
|
|
|
- /**
|
|
|
- * Port model for the generic node
|
|
|
- */
|
|
|
- export class GenericPortModel extends PortModel {
|
|
|
+ interface IGraphEditorProps {
|
|
|
+ globalState: GlobalState;
|
|
|
+ }
|
|
|
+ export class NodeCreationOptions {
|
|
|
+ column: number;
|
|
|
+ nodeMaterialBlock?: BABYLON.NodeMaterialBlock;
|
|
|
+ type?: string;
|
|
|
+ connection?: BABYLON.NodeMaterialConnectionPoint;
|
|
|
+ }
|
|
|
+ export class GraphEditor extends React.Component<IGraphEditorProps> {
|
|
|
+ private _engine;
|
|
|
+ private _model;
|
|
|
+ private _nodes;
|
|
|
/**
|
|
|
- * If the port is input or output
|
|
|
+ * Current row/column position used when adding new nodes
|
|
|
*/
|
|
|
- position: string | "input" | "output";
|
|
|
+ private _rowPos;
|
|
|
/**
|
|
|
- * What the port is connected to
|
|
|
+ * Creates a node and recursivly creates its parent nodes from it's input
|
|
|
+ * @param nodeMaterialBlock
|
|
|
*/
|
|
|
- connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
|
|
|
- static idCounter: number;
|
|
|
- constructor(name: string, type?: string);
|
|
|
- syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
|
|
|
- getNodeModel(): GenericNodeModel;
|
|
|
- link(outPort: GenericPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
|
|
|
- getInputFromBlock(): void;
|
|
|
- createLinkModel(): LinkModel;
|
|
|
- getValue: Function;
|
|
|
- static SortInputOutput(a: BABYLON.Nullable<GenericPortModel>, b: BABYLON.Nullable<GenericPortModel>): {
|
|
|
- input: GenericPortModel;
|
|
|
- output: GenericPortModel;
|
|
|
- } | null;
|
|
|
+ createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
|
|
|
+ componentDidMount(): void;
|
|
|
+ componentWillUnmount(): void;
|
|
|
+ constructor(props: IGraphEditorProps);
|
|
|
+ addNodeFromClass(ObjectClass: typeof BABYLON.NodeMaterialBlock): DefaultNodeModel;
|
|
|
+ addValueNode(type: string, column?: number, connection?: BABYLON.NodeMaterialConnectionPoint): DefaultNodeModel;
|
|
|
+ render(): JSX.Element;
|
|
|
}
|
|
|
}
|
|
|
declare module NODEEDITOR {
|
|
@@ -994,14 +1280,13 @@ declare module NODEEDITOR {
|
|
|
*/
|
|
|
block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
|
|
|
ports: {
|
|
|
- [s: string]: GenericPortModel;
|
|
|
+ [s: string]: DefaultPortModel;
|
|
|
};
|
|
|
/**
|
|
|
* Constructs the node model
|
|
|
*/
|
|
|
constructor(key: string);
|
|
|
- prepareConnection(type: string, outPort: GenericPortModel, connection?: BABYLON.NodeMaterialConnectionPoint): void;
|
|
|
- prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
|
|
|
+ prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
|
|
|
renderProperties(globalState: GlobalState): JSX.Element | null;
|
|
|
}
|
|
|
}
|
|
@@ -1011,6 +1296,7 @@ declare module NODEEDITOR {
|
|
|
hostElement: HTMLElement;
|
|
|
hostDocument: HTMLDocument;
|
|
|
onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
|
|
|
+ onRebuildRequiredObservable: BABYLON.Observable<void>;
|
|
|
}
|
|
|
}
|
|
|
declare module NODEEDITOR {
|