@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
189 lines (188 loc) • 7.64 kB
TypeScript
import { type Nullable } from "../../types.js";
import { Observable } from "../../Misc/observable.js";
import { type NodeParticleBlock } from "./nodeParticleBlock.js";
import { NodeParticleBlockConnectionPointTypes } from "./Enums/nodeParticleBlockConnectionPointTypes.js";
import { type NodeParticleBuildState } from "./nodeParticleBuildState.js";
/**
* Enum used to define the compatibility state between two connection points
*/
export declare enum NodeParticleConnectionPointCompatibilityStates {
/** Points are compatibles */
Compatible = 0,
/** Points are incompatible because of their types */
TypeIncompatible = 1,
/** Points are incompatible because they are in the same hierarchy **/
HierarchyIssue = 2
}
/**
* Defines the direction of a connection point
*/
export declare enum NodeParticleConnectionPointDirection {
/** Input */
Input = 0,
/** Output */
Output = 1
}
/**
* Defines a connection point for a block
*/
export declare class NodeParticleConnectionPoint {
/** @internal */
_ownerBlock: NodeParticleBlock;
/** @internal */
_connectedPoint: Nullable<NodeParticleConnectionPoint>;
/** @internal */
_storedValue: any;
/** @internal */
_storedFunction: Nullable<(state: NodeParticleBuildState) => any>;
/** @internal */
_acceptedConnectionPointType: Nullable<NodeParticleConnectionPoint>;
private _endpoints;
private _direction;
private _type;
/** @internal */
_linkedConnectionSource: Nullable<NodeParticleConnectionPoint>;
/** @internal */
_typeConnectionSource: Nullable<NodeParticleConnectionPoint>;
/** @internal */
_typeConnectionSourceTranslation: Nullable<(source: NodeParticleBlockConnectionPointTypes) => NodeParticleBlockConnectionPointTypes>;
/** @internal */
_defaultConnectionPointType: Nullable<NodeParticleBlockConnectionPointTypes>;
/** @internal */
_isMainLinkSource: boolean;
/** Gets the direction of the point */
get direction(): NodeParticleConnectionPointDirection;
/**
* Gets or sets the additional types supported by this connection point
*/
acceptedConnectionPointTypes: NodeParticleBlockConnectionPointTypes[];
/**
* Gets or sets the additional types excluded by this connection point
*/
excludedConnectionPointTypes: NodeParticleBlockConnectionPointTypes[];
/**
* Observable triggered when this point is connected
*/
onConnectionObservable: Observable<NodeParticleConnectionPoint>;
/**
* Observable triggered when this point is disconnected
*/
onDisconnectionObservable: Observable<NodeParticleConnectionPoint>;
/**
* 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 the default value used for this point at creation time
*/
defaultValue: Nullable<any>;
/**
* Gets or sets the default value used for this point if nothing is connected
*/
value: Nullable<any>;
/**
* Gets or sets the min value accepted for this point if nothing is connected
*/
valueMin: Nullable<any>;
/**
* Gets or sets the max value accepted for this point if nothing is connected
*/
valueMax: Nullable<any>;
/**
* Gets or sets the connection point type (default is float)
*/
get type(): NodeParticleBlockConnectionPointTypes;
set type(value: NodeParticleBlockConnectionPointTypes);
/**
* Gets or sets the connection point name
*/
name: string;
/**
* Gets or sets the connection point display name
*/
displayName: string;
/**
* Gets or sets a boolean indicating that this connection point can be omitted
*/
isOptional: boolean;
/**
* Gets a boolean indicating that the current point is connected to another NodeMaterialBlock
*/
get isConnected(): boolean;
/** Get the other side of the connection (if any) */
get connectedPoint(): Nullable<NodeParticleConnectionPoint>;
/** Get the block that owns this connection point */
get ownerBlock(): NodeParticleBlock;
/** Get the block connected on the other side of this connection (if any) */
get sourceBlock(): Nullable<NodeParticleBlock>;
/** Get the block connected on the endpoints of this connection (if any) */
get connectedBlocks(): Array<NodeParticleBlock>;
/** Gets the list of connected endpoints */
get endpoints(): NodeParticleConnectionPoint[];
/** Gets a boolean indicating if that output point is connected to at least one input */
get hasEndpoints(): boolean;
/** Get the inner type (ie AutoDetect for instance instead of the inferred one) */
get innerType(): NodeParticleBlockConnectionPointTypes;
/**
* 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: NodeParticleBlock, direction: NodeParticleConnectionPointDirection);
/**
* Gets the current class name e.g. "NodeMaterialConnectionPoint"
* @returns the class name
*/
getClassName(): string;
/**
* Gets the value represented by this connection point
* @param state current evaluation state
* @returns the connected value or the value if nothing is connected
*/
getConnectedValue(state: NodeParticleBuildState): any;
/**
* 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: NodeParticleConnectionPoint): 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: NodeParticleConnectionPoint): NodeParticleConnectionPointCompatibilityStates;
/**
* 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: NodeParticleConnectionPoint, ignoreConstraints?: boolean): NodeParticleConnectionPoint;
/**
* Disconnect this point from one of his endpoint
* @param endpoint defines the other connection point
* @returns the current connection point
*/
disconnectFrom(endpoint: NodeParticleConnectionPoint): NodeParticleConnectionPoint;
/**
* 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;
}