6b4064740a7979ff138dd0ba2a2693737a5aa1d60496565b05fc7ed7c39dd39d.json 30 KB

1
  1. {"ast":null,"code":"import { Observable } from \"../../Misc/observable.js\";\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"./Types/nodeRenderGraphTypes.js\";\n/**\n * Defines a connection point for a block\n */\nexport class NodeRenderGraphConnectionPoint {\n /** Gets the direction of the point */\n get direction() {\n return this._direction;\n }\n /**\n * Gets or sets the connection point type (default is Undefined)\n */\n get type() {\n if (this._type === NodeRenderGraphBlockConnectionPointTypes.AutoDetect) {\n if (this._ownerBlock.isInput) {\n return this._ownerBlock.type;\n }\n if (this._connectedPoint) {\n return this._connectedPoint.type;\n }\n if (this._linkedConnectionSource) {\n if (this._linkedConnectionSource.isConnected) {\n return this._linkedConnectionSource.type;\n }\n if (this._linkedConnectionSource._defaultConnectionPointType) {\n return this._linkedConnectionSource._defaultConnectionPointType;\n }\n }\n if (this._defaultConnectionPointType) {\n return this._defaultConnectionPointType;\n }\n }\n if (this._type === NodeRenderGraphBlockConnectionPointTypes.BasedOnInput) {\n if (this._typeConnectionSource) {\n const typeConnectionSource = typeof this._typeConnectionSource === \"function\" ? this._typeConnectionSource() : this._typeConnectionSource;\n if (!typeConnectionSource.isConnected) {\n var _this$_defaultConnect;\n return (_this$_defaultConnect = this._defaultConnectionPointType) !== null && _this$_defaultConnect !== void 0 ? _this$_defaultConnect : typeConnectionSource.type;\n }\n return typeConnectionSource._connectedPoint.type;\n } else if (this._defaultConnectionPointType) {\n return this._defaultConnectionPointType;\n }\n }\n return this._type;\n }\n set type(value) {\n this._type = value;\n }\n /**\n * Gets a boolean indicating that the current point is connected to another NodeRenderGraphBlock\n */\n get isConnected() {\n return this.connectedPoint !== null || this.hasEndpoints;\n }\n /** Get the other side of the connection (if any) */\n get connectedPoint() {\n return this._connectedPoint;\n }\n /** Get the block that owns this connection point */\n get ownerBlock() {\n return this._ownerBlock;\n }\n /** Get the block connected on the other side of this connection (if any) */\n get sourceBlock() {\n if (!this._connectedPoint) {\n return null;\n }\n return this._connectedPoint.ownerBlock;\n }\n /** Get the block connected on the endpoints of this connection (if any) */\n get connectedBlocks() {\n if (this._endpoints.length === 0) {\n return [];\n }\n return this._endpoints.map(e => e.ownerBlock);\n }\n /** Gets the list of connected endpoints */\n get endpoints() {\n return this._endpoints;\n }\n /** Gets a boolean indicating if that output point is connected to at least one input */\n get hasEndpoints() {\n return this._endpoints && this._endpoints.length > 0;\n }\n /** Get the inner type (ie AutoDetect for instance instead of the inferred one) */\n get innerType() {\n if (this._linkedConnectionSource && this._linkedConnectionSource.isConnected) {\n return this.type;\n }\n return this._type;\n }\n /**\n * Creates a new connection point\n * @param name defines the connection point name\n * @param ownerBlock defines the block hosting this connection point\n * @param direction defines the direction of the connection point\n */\n constructor(name, ownerBlock, direction) {\n this._connectedPoint = null;\n /** @internal */\n this._acceptedConnectionPointType = null;\n this._endpoints = new Array();\n this._type = NodeRenderGraphBlockConnectionPointTypes.Undefined;\n /** @internal */\n this._linkedConnectionSource = null;\n /** @internal */\n this._typeConnectionSource = null;\n /** @internal */\n this._defaultConnectionPointType = null;\n /**\n * Gets or sets the additional types supported by this connection point\n */\n this.acceptedConnectionPointTypes = [];\n /**\n * Gets or sets the additional types excluded by this connection point\n */\n this.excludedConnectionPointTypes = [];\n /**\n * Observable triggered when this point is connected\n */\n this.onConnectionObservable = new Observable();\n /**\n * Observable triggered when this point is disconnected\n */\n this.onDisconnectionObservable = new Observable();\n /**\n * Gets or sets a boolean indicating that this connection point is exposed on a frame\n */\n this.isExposedOnFrame = false;\n /**\n * Gets or sets number indicating the position that the port is exposed to on a frame\n */\n this.exposedPortPosition = -1;\n this._ownerBlock = ownerBlock;\n this.name = name;\n this._direction = direction;\n }\n /**\n * Gets the current class name e.g. \"NodeRenderGraphConnectionPoint\"\n * @returns the class name\n */\n getClassName() {\n return \"NodeRenderGraphConnectionPoint\";\n }\n /**\n * Gets a boolean indicating if the current point can be connected to another point\n * @param connectionPoint defines the other connection point\n * @returns a boolean\n */\n canConnectTo(connectionPoint) {\n return this.checkCompatibilityState(connectionPoint) === 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n }\n /**\n * Gets a number indicating if the current point can be connected to another point\n * @param connectionPoint defines the other connection point\n * @returns a number defining the compatibility state\n */\n checkCompatibilityState(connectionPoint) {\n const ownerBlock = this._ownerBlock;\n const otherBlock = connectionPoint.ownerBlock;\n if (this.type !== connectionPoint.type && connectionPoint.innerType !== NodeRenderGraphBlockConnectionPointTypes.AutoDetect) {\n // Accepted types\n if (connectionPoint.acceptedConnectionPointTypes && connectionPoint.acceptedConnectionPointTypes.indexOf(this.type) !== -1) {\n return 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n } else {\n return 1 /* NodeRenderGraphConnectionPointCompatibilityStates.TypeIncompatible */;\n }\n }\n // Excluded\n if (connectionPoint.excludedConnectionPointTypes && connectionPoint.excludedConnectionPointTypes.indexOf(this.type) !== -1) {\n return 1 /* NodeRenderGraphConnectionPointCompatibilityStates.TypeIncompatible */;\n }\n // Check hierarchy\n let targetBlock = otherBlock;\n let sourceBlock = ownerBlock;\n if (this.direction === 0 /* NodeRenderGraphConnectionPointDirection.Input */) {\n targetBlock = ownerBlock;\n sourceBlock = otherBlock;\n }\n if (targetBlock.isAnAncestorOf(sourceBlock)) {\n return 2 /* NodeRenderGraphConnectionPointCompatibilityStates.HierarchyIssue */;\n }\n return 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n }\n /**\n * Connect this point to another connection point\n * @param connectionPoint defines the other connection point\n * @param ignoreConstraints defines if the system will ignore connection type constraints (default is false)\n * @returns the current connection point\n */\n connectTo(connectionPoint, ignoreConstraints = false) {\n if (!ignoreConstraints && !this.canConnectTo(connectionPoint)) {\n // eslint-disable-next-line no-throw-literal\n throw \"Cannot connect these two connectors.\";\n }\n this._endpoints.push(connectionPoint);\n connectionPoint._connectedPoint = this;\n this.onConnectionObservable.notifyObservers(connectionPoint);\n connectionPoint.onConnectionObservable.notifyObservers(this);\n return this;\n }\n /**\n * Disconnect this point from one of his endpoint\n * @param endpoint defines the other connection point\n * @returns the current connection point\n */\n disconnectFrom(endpoint) {\n const index = this._endpoints.indexOf(endpoint);\n if (index === -1) {\n return this;\n }\n this._endpoints.splice(index, 1);\n endpoint._connectedPoint = null;\n this.onDisconnectionObservable.notifyObservers(endpoint);\n endpoint.onDisconnectionObservable.notifyObservers(this);\n return this;\n }\n /**\n * Fills the list of excluded connection point types with all types other than those passed in the parameter\n * @param mask Types (ORed values of NodeRenderGraphBlockConnectionPointTypes) that are allowed, and thus will not be pushed to the excluded list\n */\n addExcludedConnectionPointFromAllowedTypes(mask) {\n let bitmask = 0;\n let val = 2 ** bitmask;\n // Note: don't use 1 << bitmask instead of 2 ** bitmask, as it will cause an infinite loop because 1 << 31 is negative!\n while (val < NodeRenderGraphBlockConnectionPointTypes.All) {\n if (!(mask & val)) {\n this.excludedConnectionPointTypes.push(val);\n }\n bitmask++;\n val = 2 ** bitmask;\n }\n }\n /**\n * Adds accepted connection point types\n * @param mask Types (ORed values of NodeRenderGraphBlockConnectionPointTypes) that are allowed to connect to this point\n */\n addAcceptedConnectionPointTypes(mask) {\n let bitmask = 0;\n let val = 2 ** bitmask;\n // Note: don't use 1 << bitmask instead of 2 ** bitmask, as it will cause an infinite loop because 1 << 31 is negative!\n while (val < NodeRenderGraphBlockConnectionPointTypes.All) {\n if (mask & val && this.acceptedConnectionPointTypes.indexOf(val) === -1) {\n this.acceptedConnectionPointTypes.push(val);\n }\n bitmask++;\n val = 2 ** bitmask;\n }\n }\n /**\n * Serializes this point in a JSON representation\n * @param isInput defines if the connection point is an input (default is true)\n * @returns the serialized point object\n */\n serialize(isInput = true) {\n const serializationObject = {};\n serializationObject.name = this.name;\n serializationObject.displayName = this.displayName;\n if (isInput && this.connectedPoint) {\n serializationObject.inputName = this.name;\n serializationObject.targetBlockId = this.connectedPoint.ownerBlock.uniqueId;\n serializationObject.targetConnectionName = this.connectedPoint.name;\n serializationObject.isExposedOnFrame = true;\n serializationObject.exposedPortPosition = this.exposedPortPosition;\n }\n if (this.isExposedOnFrame || this.exposedPortPosition >= 0) {\n serializationObject.isExposedOnFrame = true;\n serializationObject.exposedPortPosition = this.exposedPortPosition;\n }\n return serializationObject;\n }\n /**\n * Release resources\n */\n dispose() {\n this.onConnectionObservable.clear();\n this.onDisconnectionObservable.clear();\n }\n}","map":{"version":3,"names":["Observable","NodeRenderGraphBlockConnectionPointTypes","NodeRenderGraphConnectionPoint","direction","_direction","type","_type","AutoDetect","_ownerBlock","isInput","_connectedPoint","_linkedConnectionSource","isConnected","_defaultConnectionPointType","BasedOnInput","_typeConnectionSource","typeConnectionSource","_this$_defaultConnect","value","connectedPoint","hasEndpoints","ownerBlock","sourceBlock","connectedBlocks","_endpoints","length","map","e","endpoints","innerType","constructor","name","_acceptedConnectionPointType","Array","Undefined","acceptedConnectionPointTypes","excludedConnectionPointTypes","onConnectionObservable","onDisconnectionObservable","isExposedOnFrame","exposedPortPosition","getClassName","canConnectTo","connectionPoint","checkCompatibilityState","otherBlock","indexOf","targetBlock","isAnAncestorOf","connectTo","ignoreConstraints","push","notifyObservers","disconnectFrom","endpoint","index","splice","addExcludedConnectionPointFromAllowedTypes","mask","bitmask","val","All","addAcceptedConnectionPointTypes","serialize","serializationObject","displayName","inputName","targetBlockId","uniqueId","targetConnectionName","dispose","clear"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js"],"sourcesContent":["import { Observable } from \"../../Misc/observable.js\";\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"./Types/nodeRenderGraphTypes.js\";\n/**\n * Defines a connection point for a block\n */\nexport class NodeRenderGraphConnectionPoint {\n /** Gets the direction of the point */\n get direction() {\n return this._direction;\n }\n /**\n * Gets or sets the connection point type (default is Undefined)\n */\n get type() {\n if (this._type === NodeRenderGraphBlockConnectionPointTypes.AutoDetect) {\n if (this._ownerBlock.isInput) {\n return this._ownerBlock.type;\n }\n if (this._connectedPoint) {\n return this._connectedPoint.type;\n }\n if (this._linkedConnectionSource) {\n if (this._linkedConnectionSource.isConnected) {\n return this._linkedConnectionSource.type;\n }\n if (this._linkedConnectionSource._defaultConnectionPointType) {\n return this._linkedConnectionSource._defaultConnectionPointType;\n }\n }\n if (this._defaultConnectionPointType) {\n return this._defaultConnectionPointType;\n }\n }\n if (this._type === NodeRenderGraphBlockConnectionPointTypes.BasedOnInput) {\n if (this._typeConnectionSource) {\n const typeConnectionSource = typeof this._typeConnectionSource === \"function\" ? this._typeConnectionSource() : this._typeConnectionSource;\n if (!typeConnectionSource.isConnected) {\n return this._defaultConnectionPointType ?? typeConnectionSource.type;\n }\n return typeConnectionSource._connectedPoint.type;\n }\n else if (this._defaultConnectionPointType) {\n return this._defaultConnectionPointType;\n }\n }\n return this._type;\n }\n set type(value) {\n this._type = value;\n }\n /**\n * Gets a boolean indicating that the current point is connected to another NodeRenderGraphBlock\n */\n get isConnected() {\n return this.connectedPoint !== null || this.hasEndpoints;\n }\n /** Get the other side of the connection (if any) */\n get connectedPoint() {\n return this._connectedPoint;\n }\n /** Get the block that owns this connection point */\n get ownerBlock() {\n return this._ownerBlock;\n }\n /** Get the block connected on the other side of this connection (if any) */\n get sourceBlock() {\n if (!this._connectedPoint) {\n return null;\n }\n return this._connectedPoint.ownerBlock;\n }\n /** Get the block connected on the endpoints of this connection (if any) */\n get connectedBlocks() {\n if (this._endpoints.length === 0) {\n return [];\n }\n return this._endpoints.map((e) => e.ownerBlock);\n }\n /** Gets the list of connected endpoints */\n get endpoints() {\n return this._endpoints;\n }\n /** Gets a boolean indicating if that output point is connected to at least one input */\n get hasEndpoints() {\n return this._endpoints && this._endpoints.length > 0;\n }\n /** Get the inner type (ie AutoDetect for instance instead of the inferred one) */\n get innerType() {\n if (this._linkedConnectionSource && this._linkedConnectionSource.isConnected) {\n return this.type;\n }\n return this._type;\n }\n /**\n * Creates a new connection point\n * @param name defines the connection point name\n * @param ownerBlock defines the block hosting this connection point\n * @param direction defines the direction of the connection point\n */\n constructor(name, ownerBlock, direction) {\n this._connectedPoint = null;\n /** @internal */\n this._acceptedConnectionPointType = null;\n this._endpoints = new Array();\n this._type = NodeRenderGraphBlockConnectionPointTypes.Undefined;\n /** @internal */\n this._linkedConnectionSource = null;\n /** @internal */\n this._typeConnectionSource = null;\n /** @internal */\n this._defaultConnectionPointType = null;\n /**\n * Gets or sets the additional types supported by this connection point\n */\n this.acceptedConnectionPointTypes = [];\n /**\n * Gets or sets the additional types excluded by this connection point\n */\n this.excludedConnectionPointTypes = [];\n /**\n * Observable triggered when this point is connected\n */\n this.onConnectionObservable = new Observable();\n /**\n * Observable triggered when this point is disconnected\n */\n this.onDisconnectionObservable = new Observable();\n /**\n * Gets or sets a boolean indicating that this connection point is exposed on a frame\n */\n this.isExposedOnFrame = false;\n /**\n * Gets or sets number indicating the position that the port is exposed to on a frame\n */\n this.exposedPortPosition = -1;\n this._ownerBlock = ownerBlock;\n this.name = name;\n this._direction = direction;\n }\n /**\n * Gets the current class name e.g. \"NodeRenderGraphConnectionPoint\"\n * @returns the class name\n */\n getClassName() {\n return \"NodeRenderGraphConnectionPoint\";\n }\n /**\n * Gets a boolean indicating if the current point can be connected to another point\n * @param connectionPoint defines the other connection point\n * @returns a boolean\n */\n canConnectTo(connectionPoint) {\n return this.checkCompatibilityState(connectionPoint) === 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n }\n /**\n * Gets a number indicating if the current point can be connected to another point\n * @param connectionPoint defines the other connection point\n * @returns a number defining the compatibility state\n */\n checkCompatibilityState(connectionPoint) {\n const ownerBlock = this._ownerBlock;\n const otherBlock = connectionPoint.ownerBlock;\n if (this.type !== connectionPoint.type && connectionPoint.innerType !== NodeRenderGraphBlockConnectionPointTypes.AutoDetect) {\n // Accepted types\n if (connectionPoint.acceptedConnectionPointTypes && connectionPoint.acceptedConnectionPointTypes.indexOf(this.type) !== -1) {\n return 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n }\n else {\n return 1 /* NodeRenderGraphConnectionPointCompatibilityStates.TypeIncompatible */;\n }\n }\n // Excluded\n if (connectionPoint.excludedConnectionPointTypes && connectionPoint.excludedConnectionPointTypes.indexOf(this.type) !== -1) {\n return 1 /* NodeRenderGraphConnectionPointCompatibilityStates.TypeIncompatible */;\n }\n // Check hierarchy\n let targetBlock = otherBlock;\n let sourceBlock = ownerBlock;\n if (this.direction === 0 /* NodeRenderGraphConnectionPointDirection.Input */) {\n targetBlock = ownerBlock;\n sourceBlock = otherBlock;\n }\n if (targetBlock.isAnAncestorOf(sourceBlock)) {\n return 2 /* NodeRenderGraphConnectionPointCompatibilityStates.HierarchyIssue */;\n }\n return 0 /* NodeRenderGraphConnectionPointCompatibilityStates.Compatible */;\n }\n /**\n * Connect this point to another connection point\n * @param connectionPoint defines the other connection point\n * @param ignoreConstraints defines if the system will ignore connection type constraints (default is false)\n * @returns the current connection point\n */\n connectTo(connectionPoint, ignoreConstraints = false) {\n if (!ignoreConstraints && !this.canConnectTo(connectionPoint)) {\n // eslint-disable-next-line no-throw-literal\n throw \"Cannot connect these two connectors.\";\n }\n this._endpoints.push(connectionPoint);\n connectionPoint._connectedPoint = this;\n this.onConnectionObservable.notifyObservers(connectionPoint);\n connectionPoint.onConnectionObservable.notifyObservers(this);\n return this;\n }\n /**\n * Disconnect this point from one of his endpoint\n * @param endpoint defines the other connection point\n * @returns the current connection point\n */\n disconnectFrom(endpoint) {\n const index = this._endpoints.indexOf(endpoint);\n if (index === -1) {\n return this;\n }\n this._endpoints.splice(index, 1);\n endpoint._connectedPoint = null;\n this.onDisconnectionObservable.notifyObservers(endpoint);\n endpoint.onDisconnectionObservable.notifyObservers(this);\n return this;\n }\n /**\n * Fills the list of excluded connection point types with all types other than those passed in the parameter\n * @param mask Types (ORed values of NodeRenderGraphBlockConnectionPointTypes) that are allowed, and thus will not be pushed to the excluded list\n */\n addExcludedConnectionPointFromAllowedTypes(mask) {\n let bitmask = 0;\n let val = 2 ** bitmask;\n // Note: don't use 1 << bitmask instead of 2 ** bitmask, as it will cause an infinite loop because 1 << 31 is negative!\n while (val < NodeRenderGraphBlockConnectionPointTypes.All) {\n if (!(mask & val)) {\n this.excludedConnectionPointTypes.push(val);\n }\n bitmask++;\n val = 2 ** bitmask;\n }\n }\n /**\n * Adds accepted connection point types\n * @param mask Types (ORed values of NodeRenderGraphBlockConnectionPointTypes) that are allowed to connect to this point\n */\n addAcceptedConnectionPointTypes(mask) {\n let bitmask = 0;\n let val = 2 ** bitmask;\n // Note: don't use 1 << bitmask instead of 2 ** bitmask, as it will cause an infinite loop because 1 << 31 is negative!\n while (val < NodeRenderGraphBlockConnectionPointTypes.All) {\n if (mask & val && this.acceptedConnectionPointTypes.indexOf(val) === -1) {\n this.acceptedConnectionPointTypes.push(val);\n }\n bitmask++;\n val = 2 ** bitmask;\n }\n }\n /**\n * Serializes this point in a JSON representation\n * @param isInput defines if the connection point is an input (default is true)\n * @returns the serialized point object\n */\n serialize(isInput = true) {\n const serializationObject = {};\n serializationObject.name = this.name;\n serializationObject.displayName = this.displayName;\n if (isInput && this.connectedPoint) {\n serializationObject.inputName = this.name;\n serializationObject.targetBlockId = this.connectedPoint.ownerBlock.uniqueId;\n serializationObject.targetConnectionName = this.connectedPoint.name;\n serializationObject.isExposedOnFrame = true;\n serializationObject.exposedPortPosition = this.exposedPortPosition;\n }\n if (this.isExposedOnFrame || this.exposedPortPosition >= 0) {\n serializationObject.isExposedOnFrame = true;\n serializationObject.exposedPortPosition = this.exposedPortPosition;\n }\n return serializationObject;\n }\n /**\n * Release resources\n */\n dispose() {\n this.onConnectionObservable.clear();\n this.onDisconnectionObservable.clear();\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}