123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- import { NodeMaterialBlockConnectionPointTypes } from "./Enums/nodeMaterialBlockConnectionPointTypes";
- import { NodeMaterialBlockTargets } from "./Enums/nodeMaterialBlockTargets";
- import type { Nullable } from "../../types";
- import type { InputBlock } from "./Blocks/Input/inputBlock";
- import { Observable } from "../../Misc/observable";
- import type { NodeMaterialBlock } from "./nodeMaterialBlock";
- /**
- * Enum used to define the compatibility state between two connection points
- */
- export declare enum NodeMaterialConnectionPointCompatibilityStates {
- /** Points are compatibles */
- Compatible = 0,
- /** Points are incompatible because of their types */
- TypeIncompatible = 1,
- /** Points are incompatible because of their targets (vertex vs fragment) */
- TargetIncompatible = 2,
- /** Points are incompatible because they are in the same hierarchy **/
- HierarchyIssue = 3
- }
- /**
- * Defines the direction of a connection point
- */
- export declare enum NodeMaterialConnectionPointDirection {
- /** Input */
- Input = 0,
- /** Output */
- Output = 1
- }
- /**
- * Defines a connection point for a block
- */
- export declare class NodeMaterialConnectionPoint {
- /**
- * Checks if two types are equivalent
- * @param type1 type 1 to check
- * @param type2 type 2 to check
- * @returns true if both types are equivalent, else false
- */
- static AreEquivalentTypes(type1: number, type2: number): boolean;
- /** @internal */
- _ownerBlock: NodeMaterialBlock;
- /** @internal */
- _connectedPoint: Nullable<NodeMaterialConnectionPoint>;
- private _endpoints;
- private _associatedVariableName;
- private _direction;
- /** @internal */
- _typeConnectionSource: Nullable<NodeMaterialConnectionPoint>;
- /** @internal */
- _defaultConnectionPointType: Nullable<NodeMaterialBlockConnectionPointTypes>;
- /** @internal */
- _linkedConnectionSource: Nullable<NodeMaterialConnectionPoint>;
- /** @internal */
- _acceptedConnectionPointType: Nullable<NodeMaterialConnectionPoint>;
- private _type;
- /** @internal */
- _enforceAssociatedVariableName: boolean;
- /** Gets the direction of the point */
- get direction(): NodeMaterialConnectionPointDirection;
- /** Indicates that this connection point needs dual validation before being connected to another point */
- needDualDirectionValidation: boolean;
- /**
- * Gets or sets the additional types supported by this connection point
- */
- acceptedConnectionPointTypes: NodeMaterialBlockConnectionPointTypes[];
- /**
- * Gets or sets the additional types excluded by this connection point
- */
- excludedConnectionPointTypes: NodeMaterialBlockConnectionPointTypes[];
- /**
- * Observable triggered when this point is connected
- */
- onConnectionObservable: Observable<NodeMaterialConnectionPoint>;
- /**
- * Observable triggered when this point is disconnected
- */
- onDisconnectionObservable: Observable<NodeMaterialConnectionPoint>;
- /**
- * Gets or sets the associated variable name in the shader
- */
- get associatedVariableName(): string;
- set associatedVariableName(value: string);
- /** Get the inner type (ie AutoDetect for instance instead of the inferred one) */
- get innerType(): NodeMaterialBlockConnectionPointTypes;
- /**
- * Gets or sets the connection point type (default is float)
- */
- get type(): NodeMaterialBlockConnectionPointTypes;
- set type(value: NodeMaterialBlockConnectionPointTypes);
- /**
- * Gets or sets the connection point name
- */
- name: string;
- /**
- * Gets or sets the connection point name
- */
- displayName: string;
- /**
- * Gets or sets a boolean indicating that this connection point can be omitted
- */
- isOptional: boolean;
- /**
- * Gets or sets a boolean indicating that this connection point is exposed on a frame
- */
- isExposedOnFrame: boolean;
- /**
- * Gets or sets number indicating the position that the port is exposed to on a frame
- */
- exposedPortPosition: number;
- /**
- * Gets or sets a string indicating that this uniform must be defined under a #ifdef
- */
- define: string;
- /** @internal */
- _prioritizeVertex: boolean;
- private _target;
- /** Gets or sets the target of that connection point */
- get target(): NodeMaterialBlockTargets;
- set target(value: NodeMaterialBlockTargets);
- /**
- * Gets a boolean indicating that the current point is connected to another NodeMaterialBlock
- */
- get isConnected(): boolean;
- /**
- * Gets a boolean indicating that the current point is connected to an input block
- */
- get isConnectedToInputBlock(): boolean;
- /**
- * Gets a the connected input block (if any)
- */
- get connectInputBlock(): Nullable<InputBlock>;
- /** Get the other side of the connection (if any) */
- get connectedPoint(): Nullable<NodeMaterialConnectionPoint>;
- /** Get the block that owns this connection point */
- get ownerBlock(): NodeMaterialBlock;
- /** Get the block connected on the other side of this connection (if any) */
- get sourceBlock(): Nullable<NodeMaterialBlock>;
- /** Get the block connected on the endpoints of this connection (if any) */
- get connectedBlocks(): Array<NodeMaterialBlock>;
- /** Gets the list of connected endpoints */
- get endpoints(): NodeMaterialConnectionPoint[];
- /** Gets a boolean indicating if that output point is connected to at least one input */
- get hasEndpoints(): boolean;
- /** Gets a boolean indicating that this connection has a path to the vertex output*/
- get isDirectlyConnectedToVertexOutput(): boolean;
- /** Gets a boolean indicating that this connection will be used in the vertex shader */
- get isConnectedInVertexShader(): boolean;
- /** Gets a boolean indicating that this connection will be used in the fragment shader */
- get isConnectedInFragmentShader(): boolean;
- /**
- * Creates a block suitable to be used as an input for this input point.
- * If null is returned, a block based on the point type will be created.
- * @returns The returned string parameter is the name of the output point of NodeMaterialBlock (first parameter of the returned array) that can be connected to the input
- */
- createCustomInputBlock(): Nullable<[NodeMaterialBlock, string]>;
- /**
- * Creates a new connection point
- * @param name defines the connection point name
- * @param ownerBlock defines the block hosting this connection point
- * @param direction defines the direction of the connection point
- */
- constructor(name: string, ownerBlock: NodeMaterialBlock, direction: NodeMaterialConnectionPointDirection);
- /**
- * Gets the current class name e.g. "NodeMaterialConnectionPoint"
- * @returns the class name
- */
- getClassName(): string;
- /**
- * Gets a boolean indicating if the current point can be connected to another point
- * @param connectionPoint defines the other connection point
- * @returns a boolean
- */
- canConnectTo(connectionPoint: NodeMaterialConnectionPoint): boolean;
- /**
- * Gets a number indicating if the current point can be connected to another point
- * @param connectionPoint defines the other connection point
- * @returns a number defining the compatibility state
- */
- checkCompatibilityState(connectionPoint: NodeMaterialConnectionPoint): NodeMaterialConnectionPointCompatibilityStates;
- /**
- * Connect this point to another connection point
- * @param connectionPoint defines the other connection point
- * @param ignoreConstraints defines if the system will ignore connection type constraints (default is false)
- * @returns the current connection point
- */
- connectTo(connectionPoint: NodeMaterialConnectionPoint, ignoreConstraints?: boolean): NodeMaterialConnectionPoint;
- /**
- * Disconnect this point from one of his endpoint
- * @param endpoint defines the other connection point
- * @returns the current connection point
- */
- disconnectFrom(endpoint: NodeMaterialConnectionPoint): NodeMaterialConnectionPoint;
- /**
- * Fill the list of excluded connection point types with all types other than those passed in the parameter
- * @param mask Types (ORed values of NodeMaterialBlockConnectionPointTypes) that are allowed, and thus will not be pushed to the excluded list
- */
- addExcludedConnectionPointFromAllowedTypes(mask: number): void;
- /**
- * Serializes this point in a JSON representation
- * @param isInput defines if the connection point is an input (default is true)
- * @returns the serialized point object
- */
- serialize(isInput?: boolean): any;
- /**
- * Release resources
- */
- dispose(): void;
- }
|