@babylonjs/core 6.26.0 → 6.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  2. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  3. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  4. package/Collisions/intersectionInfo.js.map +1 -1
  5. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  6. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
  7. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  8. package/Engines/thinEngine.js +2 -2
  9. package/Engines/thinEngine.js.map +1 -1
  10. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +3 -4
  11. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +5 -6
  12. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  13. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +22 -0
  14. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +26 -0
  15. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -0
  16. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.d.ts +3 -5
  17. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js +5 -6
  18. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  19. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.d.ts +3 -4
  20. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js +5 -6
  21. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  22. package/FlowGraph/flowGraphConnection.d.ts +1 -1
  23. package/FlowGraph/flowGraphConnection.js +2 -1
  24. package/FlowGraph/flowGraphConnection.js.map +1 -1
  25. package/FlowGraph/flowGraphContext.d.ts +10 -0
  26. package/FlowGraph/flowGraphContext.js +14 -0
  27. package/FlowGraph/flowGraphContext.js.map +1 -1
  28. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  29. package/FlowGraph/flowGraphRichTypes.js.map +1 -1
  30. package/FlowGraph/flowGraphSignalConnection.js +1 -0
  31. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  32. package/Layers/highlightLayer.js.map +1 -1
  33. package/Loading/loadingScreen.js.map +1 -1
  34. package/Materials/Background/backgroundMaterial.d.ts +16 -0
  35. package/Materials/Background/backgroundMaterial.js +44 -0
  36. package/Materials/Background/backgroundMaterial.js.map +1 -1
  37. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +0 -1
  38. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  39. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  40. package/Materials/Node/nodeMaterial.js +6 -2
  41. package/Materials/Node/nodeMaterial.js.map +1 -1
  42. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  43. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  44. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  45. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +10 -1
  46. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +27 -5
  47. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  48. package/Meshes/Node/Blocks/mergeGeometryBlock.js +16 -4
  49. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  50. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.d.ts +5 -0
  51. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js.map +1 -1
  52. package/Meshes/Node/nodeGeometryBuildState.js +3 -0
  53. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  54. package/Meshes/csg.js.map +1 -1
  55. package/Meshes/geodesicMesh.js.map +1 -1
  56. package/Meshes/meshSimplification.js.map +1 -1
  57. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  58. package/Misc/fileTools.js.map +1 -1
  59. package/Physics/physicsHelper.js.map +1 -1
  60. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  61. package/Physics/v1/Plugins/cannonJSPlugin.js.map +1 -1
  62. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  63. package/Physics/v1/physicsEngine.js.map +1 -1
  64. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  65. package/Physics/v2/physicsEngine.js.map +1 -1
  66. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  67. package/PostProcesses/bloomEffect.js.map +1 -1
  68. package/Rendering/boundingBoxRenderer.js +6 -2
  69. package/Rendering/boundingBoxRenderer.js.map +1 -1
  70. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +3 -0
  71. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
  72. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +1 -8
  73. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  74. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  75. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  76. package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -3
  77. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  78. package/Shaders/background.fragment.js +11 -1
  79. package/Shaders/background.fragment.js.map +1 -1
  80. package/Shaders/default.fragment.js +0 -1
  81. package/Shaders/default.fragment.js.map +1 -1
  82. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  83. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  84. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  85. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  86. package/XR/features/WebXRDepthSensing.js.map +1 -1
  87. package/XR/features/WebXRLayers.js.map +1 -1
  88. package/XR/features/WebXRMeshDetector.js.map +1 -1
  89. package/XR/features/WebXRNearInteraction.js.map +1 -1
  90. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  91. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  92. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  93. package/XR/webXRCamera.js.map +1 -1
  94. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  95. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  96. package/XR/webXRWebGLLayer.js.map +1 -1
  97. package/assetContainer.js.map +1 -1
  98. package/package.json +1 -1
@@ -1,20 +1,19 @@
1
1
  import type { FlowGraphDataConnection } from "../../flowGraphDataConnection";
2
- import { FlowGraphBlock } from "../../flowGraphBlock";
3
2
  import type { RichType } from "../../flowGraphRichTypes";
4
3
  import type { FlowGraphContext } from "../../flowGraphContext";
5
4
  import type { IFlowGraphBlockConfiguration } from "../../flowGraphBlock";
5
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock";
6
6
  /**
7
7
  * @experimental
8
8
  * The base block for all binary operation blocks. Receives an input of type
9
9
  * LeftT, one of type RightT, and outputs a value of type ResultT.
10
10
  */
11
- export declare class FlowGraphBinaryOperationBlock<LeftT, RightT, ResultT> extends FlowGraphBlock {
11
+ export declare class FlowGraphBinaryOperationBlock<LeftT, RightT, ResultT> extends FlowGraphCachedOperationBlock<ResultT> {
12
12
  private _operation;
13
13
  private _className;
14
14
  leftInput: FlowGraphDataConnection<LeftT>;
15
15
  rightInput: FlowGraphDataConnection<RightT>;
16
- output: FlowGraphDataConnection<ResultT>;
17
16
  constructor(leftRichType: RichType<LeftT>, rightRichType: RichType<RightT>, resultRichType: RichType<ResultT>, _operation: (left: LeftT, right: RightT) => ResultT, _className: string, config?: IFlowGraphBlockConfiguration);
18
- _updateOutputs(_context: FlowGraphContext): void;
17
+ _doOperation(context: FlowGraphContext): ResultT;
19
18
  getClassName(): string;
20
19
  }
@@ -1,20 +1,19 @@
1
- import { FlowGraphBlock } from "../../flowGraphBlock.js";
1
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock.js";
2
2
  /**
3
3
  * @experimental
4
4
  * The base block for all binary operation blocks. Receives an input of type
5
5
  * LeftT, one of type RightT, and outputs a value of type ResultT.
6
6
  */
7
- export class FlowGraphBinaryOperationBlock extends FlowGraphBlock {
7
+ export class FlowGraphBinaryOperationBlock extends FlowGraphCachedOperationBlock {
8
8
  constructor(leftRichType, rightRichType, resultRichType, _operation, _className, config) {
9
- super(config);
9
+ super(resultRichType, config);
10
10
  this._operation = _operation;
11
11
  this._className = _className;
12
12
  this.leftInput = this._registerDataInput("leftInput", leftRichType);
13
13
  this.rightInput = this._registerDataInput("rightInput", rightRichType);
14
- this.output = this._registerDataOutput("Output", resultRichType);
15
14
  }
16
- _updateOutputs(_context) {
17
- this.output.setValue(this._operation(this.leftInput.getValue(_context), this.rightInput.getValue(_context)), _context);
15
+ _doOperation(context) {
16
+ return this._operation(this.leftInput.getValue(context), this.rightInput.getValue(context));
18
17
  }
19
18
  getClassName() {
20
19
  return this._className;
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphBinaryOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;GAIG;AACH,MAAM,OAAO,6BAAsD,SAAQ,cAAc;IAKrF,YACI,YAA6B,EAC7B,aAA+B,EAC/B,cAAiC,EACzB,UAAmD,EACnD,UAAkB,EAC1B,MAAqC;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,eAAU,GAAV,UAAU,CAAyC;QACnD,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;IAEM,cAAc,CAAC,QAA0B;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3H,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport { FlowGraphBlock } from \"../../flowGraphBlock\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\n/**\r\n * @experimental\r\n * The base block for all binary operation blocks. Receives an input of type\r\n * LeftT, one of type RightT, and outputs a value of type ResultT.\r\n */\r\nexport class FlowGraphBinaryOperationBlock<LeftT, RightT, ResultT> extends FlowGraphBlock {\r\n leftInput: FlowGraphDataConnection<LeftT>;\r\n rightInput: FlowGraphDataConnection<RightT>;\r\n output: FlowGraphDataConnection<ResultT>;\r\n\r\n constructor(\r\n leftRichType: RichType<LeftT>,\r\n rightRichType: RichType<RightT>,\r\n resultRichType: RichType<ResultT>,\r\n private _operation: (left: LeftT, right: RightT) => ResultT,\r\n private _className: string,\r\n config?: IFlowGraphBlockConfiguration\r\n ) {\r\n super(config);\r\n this.leftInput = this._registerDataInput(\"leftInput\", leftRichType);\r\n this.rightInput = this._registerDataInput(\"rightInput\", rightRichType);\r\n this.output = this._registerDataOutput(\"Output\", resultRichType);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n this.output.setValue(this._operation(this.leftInput.getValue(_context), this.rightInput.getValue(_context)), _context);\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphBinaryOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF;;;;GAIG;AACH,MAAM,OAAO,6BAAsD,SAAQ,6BAAsC;IAI7G,YACI,YAA6B,EAC7B,aAA+B,EAC/B,cAAiC,EACzB,UAAmD,EACnD,UAAkB,EAC1B,MAAqC;QAErC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAJtB,eAAU,GAAV,UAAU,CAAyC;QACnD,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;IAEe,YAAY,CAAC,OAAyB;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\r\n/**\r\n * @experimental\r\n * The base block for all binary operation blocks. Receives an input of type\r\n * LeftT, one of type RightT, and outputs a value of type ResultT.\r\n */\r\nexport class FlowGraphBinaryOperationBlock<LeftT, RightT, ResultT> extends FlowGraphCachedOperationBlock<ResultT> {\r\n leftInput: FlowGraphDataConnection<LeftT>;\r\n rightInput: FlowGraphDataConnection<RightT>;\r\n\r\n constructor(\r\n leftRichType: RichType<LeftT>,\r\n rightRichType: RichType<RightT>,\r\n resultRichType: RichType<ResultT>,\r\n private _operation: (left: LeftT, right: RightT) => ResultT,\r\n private _className: string,\r\n config?: IFlowGraphBlockConfiguration\r\n ) {\r\n super(resultRichType, config);\r\n this.leftInput = this._registerDataInput(\"leftInput\", leftRichType);\r\n this.rightInput = this._registerDataInput(\"rightInput\", rightRichType);\r\n }\r\n\r\n public override _doOperation(context: FlowGraphContext): ResultT {\r\n return this._operation(this.leftInput.getValue(context), this.rightInput.getValue(context));\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,22 @@
1
+ import type { IFlowGraphBlockConfiguration } from "../../flowGraphBlock";
2
+ import { FlowGraphBlock } from "../../flowGraphBlock";
3
+ import type { FlowGraphContext } from "../../flowGraphContext";
4
+ import type { FlowGraphDataConnection } from "../../flowGraphDataConnection";
5
+ import type { RichType } from "../../flowGraphRichTypes";
6
+ /**
7
+ * @experimental
8
+ */
9
+ export declare abstract class FlowGraphCachedOperationBlock<OutputT> extends FlowGraphBlock {
10
+ /**
11
+ * The output of the operation
12
+ */
13
+ readonly output: FlowGraphDataConnection<OutputT>;
14
+ constructor(outputRichType: RichType<OutputT>, config?: IFlowGraphBlockConfiguration);
15
+ /**
16
+ * @internal
17
+ * Operation to realize
18
+ * @param context the graph context
19
+ */
20
+ abstract _doOperation(context: FlowGraphContext): OutputT;
21
+ _updateOutputs(context: FlowGraphContext): void;
22
+ }
@@ -0,0 +1,26 @@
1
+ import { FlowGraphBlock } from "../../flowGraphBlock.js";
2
+ const CACHE_NAME = "cachedOperationValue";
3
+ const CACHE_EXEC_ID_NAME = "cachedExecutionId";
4
+ /**
5
+ * @experimental
6
+ */
7
+ export class FlowGraphCachedOperationBlock extends FlowGraphBlock {
8
+ constructor(outputRichType, config) {
9
+ super(config);
10
+ this.output = this._registerDataOutput("output", outputRichType);
11
+ }
12
+ _updateOutputs(context) {
13
+ const cachedExecutionId = context._getExecutionVariable(this, CACHE_EXEC_ID_NAME);
14
+ const cachedValue = context._getExecutionVariable(this, CACHE_NAME);
15
+ if (cachedValue !== undefined && cachedExecutionId === context.executionId) {
16
+ this.output.setValue(cachedValue, context);
17
+ }
18
+ else {
19
+ const calculatedValue = this._doOperation(context);
20
+ context._setExecutionVariable(this, CACHE_NAME, calculatedValue);
21
+ context._setExecutionVariable(this, CACHE_EXEC_ID_NAME, context.executionId);
22
+ this.output.setValue(calculatedValue, context);
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=flowGraphCachedOperationBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowGraphCachedOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAgB,6BAAuC,SAAQ,cAAc;IAM/E,YAAY,cAAiC,EAAE,MAAqC;QAChF,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;IASM,cAAc,CAAC,OAAyB;QAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,WAAW,KAAK,SAAS,IAAI,iBAAiB,KAAK,OAAO,CAAC,WAAW,EAAE;YACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SAC9C;aAAM;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YACjE,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;SAClD;IACL,CAAC;CACJ","sourcesContent":["import type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphBlock } from \"../../flowGraphBlock\";\r\nimport type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\n\r\nconst CACHE_NAME = \"cachedOperationValue\";\r\nconst CACHE_EXEC_ID_NAME = \"cachedExecutionId\";\r\n\r\n/**\r\n * @experimental\r\n */\r\nexport abstract class FlowGraphCachedOperationBlock<OutputT> extends FlowGraphBlock {\r\n /**\r\n * The output of the operation\r\n */\r\n public readonly output: FlowGraphDataConnection<OutputT>;\r\n\r\n constructor(outputRichType: RichType<OutputT>, config?: IFlowGraphBlockConfiguration) {\r\n super(config);\r\n\r\n this.output = this._registerDataOutput(\"output\", outputRichType);\r\n }\r\n\r\n /**\r\n * @internal\r\n * Operation to realize\r\n * @param context the graph context\r\n */\r\n public abstract _doOperation(context: FlowGraphContext): OutputT;\r\n\r\n public _updateOutputs(context: FlowGraphContext) {\r\n const cachedExecutionId = context._getExecutionVariable(this, CACHE_EXEC_ID_NAME);\r\n const cachedValue = context._getExecutionVariable(this, CACHE_NAME);\r\n if (cachedValue !== undefined && cachedExecutionId === context.executionId) {\r\n this.output.setValue(cachedValue, context);\r\n } else {\r\n const calculatedValue = this._doOperation(context);\r\n context._setExecutionVariable(this, CACHE_NAME, calculatedValue);\r\n context._setExecutionVariable(this, CACHE_EXEC_ID_NAME, context.executionId);\r\n this.output.setValue(calculatedValue, context);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,17 +1,15 @@
1
1
  import type { FlowGraphContext } from "../../flowGraphContext";
2
- import { FlowGraphBlock } from "../../flowGraphBlock";
3
- import type { FlowGraphDataConnection } from "../../flowGraphDataConnection";
4
2
  import type { RichType } from "../../flowGraphRichTypes";
5
3
  import type { IFlowGraphBlockConfiguration } from "../../flowGraphBlock";
4
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock";
6
5
  /**
7
6
  * @experimental
8
7
  * Block that outputs a value of type ResultT, resulting of an operation with no inputs.
9
8
  */
10
- export declare class FlowGraphConstantOperationBlock<ResultT> extends FlowGraphBlock {
9
+ export declare class FlowGraphConstantOperationBlock<ResultT> extends FlowGraphCachedOperationBlock<ResultT> {
11
10
  private _operation;
12
11
  private _className;
13
- output: FlowGraphDataConnection<ResultT>;
14
12
  constructor(richType: RichType<ResultT>, _operation: () => ResultT, _className: string, config?: IFlowGraphBlockConfiguration);
15
- _updateOutputs(context: FlowGraphContext): void;
13
+ _doOperation(_context: FlowGraphContext): ResultT;
16
14
  getClassName(): string;
17
15
  }
@@ -1,17 +1,16 @@
1
- import { FlowGraphBlock } from "../../flowGraphBlock.js";
1
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock.js";
2
2
  /**
3
3
  * @experimental
4
4
  * Block that outputs a value of type ResultT, resulting of an operation with no inputs.
5
5
  */
6
- export class FlowGraphConstantOperationBlock extends FlowGraphBlock {
6
+ export class FlowGraphConstantOperationBlock extends FlowGraphCachedOperationBlock {
7
7
  constructor(richType, _operation, _className, config) {
8
- super(config);
8
+ super(richType, config);
9
9
  this._operation = _operation;
10
10
  this._className = _className;
11
- this.output = this._registerDataOutput("output", richType);
12
11
  }
13
- _updateOutputs(context) {
14
- this.output.setValue(this._operation(), context);
12
+ _doOperation(_context) {
13
+ return this._operation();
15
14
  }
16
15
  getClassName() {
17
16
  return this._className;
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphConstantOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;GAGG;AACH,MAAM,OAAO,+BAAyC,SAAQ,cAAc;IAGxE,YAAY,QAA2B,EAAU,UAAyB,EAAU,UAAkB,EAAE,MAAqC;QACzI,KAAK,CAAC,MAAM,CAAC,CAAC;QAD+B,eAAU,GAAV,UAAU,CAAe;QAAU,eAAU,GAAV,UAAU,CAAQ;QAElG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAEM,cAAc,CAAC,OAAyB;QAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport { FlowGraphBlock } from \"../../flowGraphBlock\";\r\nimport type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\n/**\r\n * @experimental\r\n * Block that outputs a value of type ResultT, resulting of an operation with no inputs.\r\n */\r\nexport class FlowGraphConstantOperationBlock<ResultT> extends FlowGraphBlock {\r\n public output: FlowGraphDataConnection<ResultT>;\r\n\r\n constructor(richType: RichType<ResultT>, private _operation: () => ResultT, private _className: string, config?: IFlowGraphBlockConfiguration) {\r\n super(config);\r\n this.output = this._registerDataOutput(\"output\", richType);\r\n }\r\n\r\n public _updateOutputs(context: FlowGraphContext): void {\r\n this.output.setValue(this._operation(), context);\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphConstantOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF;;;GAGG;AACH,MAAM,OAAO,+BAAyC,SAAQ,6BAAsC;IAChG,YACI,QAA2B,EACnB,UAAyB,EACzB,UAAkB,EAC1B,MAAqC;QAErC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJhB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAQ;IAI9B,CAAC;IAEe,YAAY,CAAC,QAA0B;QACnD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\r\n/**\r\n * @experimental\r\n * Block that outputs a value of type ResultT, resulting of an operation with no inputs.\r\n */\r\nexport class FlowGraphConstantOperationBlock<ResultT> extends FlowGraphCachedOperationBlock<ResultT> {\r\n constructor(\r\n richType: RichType<ResultT>,\r\n private _operation: () => ResultT,\r\n private _className: string,\r\n config?: IFlowGraphBlockConfiguration\r\n ) {\r\n super(richType, config);\r\n }\r\n\r\n public override _doOperation(_context: FlowGraphContext): ResultT {\r\n return this._operation();\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
@@ -1,18 +1,17 @@
1
1
  import type { FlowGraphDataConnection } from "../../flowGraphDataConnection";
2
2
  import type { IFlowGraphBlockConfiguration } from "../../flowGraphBlock";
3
- import { FlowGraphBlock } from "../../flowGraphBlock";
4
3
  import type { RichType } from "../../flowGraphRichTypes";
5
4
  import type { FlowGraphContext } from "../../flowGraphContext";
5
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock";
6
6
  /**
7
7
  * @experimental
8
8
  * The base block for all unary operation blocks. Receives an input of type InputT, and outputs a value of type ResultT.
9
9
  */
10
- export declare class FlowGraphUnaryOperationBlock<InputT, ResultT> extends FlowGraphBlock {
10
+ export declare class FlowGraphUnaryOperationBlock<InputT, ResultT> extends FlowGraphCachedOperationBlock<ResultT> {
11
11
  private _operation;
12
12
  private _className;
13
13
  input: FlowGraphDataConnection<InputT>;
14
- output: FlowGraphDataConnection<ResultT>;
15
14
  constructor(inputRichType: RichType<InputT>, resultRichType: RichType<ResultT>, _operation: (input: InputT) => ResultT, _className: string, config?: IFlowGraphBlockConfiguration);
16
- _updateOutputs(_context: FlowGraphContext): void;
15
+ _doOperation(context: FlowGraphContext): ResultT;
17
16
  getClassName(): string;
18
17
  }
@@ -1,18 +1,17 @@
1
- import { FlowGraphBlock } from "../../flowGraphBlock.js";
1
+ import { FlowGraphCachedOperationBlock } from "./flowGraphCachedOperationBlock.js";
2
2
  /**
3
3
  * @experimental
4
4
  * The base block for all unary operation blocks. Receives an input of type InputT, and outputs a value of type ResultT.
5
5
  */
6
- export class FlowGraphUnaryOperationBlock extends FlowGraphBlock {
6
+ export class FlowGraphUnaryOperationBlock extends FlowGraphCachedOperationBlock {
7
7
  constructor(inputRichType, resultRichType, _operation, _className, config) {
8
- super(config);
8
+ super(resultRichType, config);
9
9
  this._operation = _operation;
10
10
  this._className = _className;
11
11
  this.input = this._registerDataInput("input", inputRichType);
12
- this.output = this._registerDataOutput("resultOutput", resultRichType);
13
12
  }
14
- _updateOutputs(_context) {
15
- this.output.setValue(this._operation(this.input.getValue(_context)), _context);
13
+ _doOperation(context) {
14
+ return this._operation(this.input.getValue(context));
16
15
  }
17
16
  getClassName() {
18
17
  return this._className;
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphUnaryOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;GAGG;AACH,MAAM,OAAO,4BAA8C,SAAQ,cAAc;IAI7E,YACI,aAA+B,EAC/B,cAAiC,EACzB,UAAsC,EACtC,UAAkB,EAC1B,MAAqC;QAErC,KAAK,CAAC,MAAM,CAAC,CAAC;QAJN,eAAU,GAAV,UAAU,CAA4B;QACtC,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAC3E,CAAC;IAEM,cAAc,CAAC,QAA0B;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport { FlowGraphBlock } from \"../../flowGraphBlock\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { FlowGraphContext } from \"../../flowGraphContext\";\r\n\r\n/**\r\n * @experimental\r\n * The base block for all unary operation blocks. Receives an input of type InputT, and outputs a value of type ResultT.\r\n */\r\nexport class FlowGraphUnaryOperationBlock<InputT, ResultT> extends FlowGraphBlock {\r\n input: FlowGraphDataConnection<InputT>;\r\n output: FlowGraphDataConnection<ResultT>;\r\n\r\n constructor(\r\n inputRichType: RichType<InputT>,\r\n resultRichType: RichType<ResultT>,\r\n private _operation: (input: InputT) => ResultT,\r\n private _className: string,\r\n config?: IFlowGraphBlockConfiguration\r\n ) {\r\n super(config);\r\n this.input = this._registerDataInput(\"input\", inputRichType);\r\n this.output = this._registerDataOutput(\"resultOutput\", resultRichType);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n this.output.setValue(this._operation(this.input.getValue(_context)), _context);\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphUnaryOperationBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;;GAGG;AACH,MAAM,OAAO,4BAA8C,SAAQ,6BAAsC;IAGrG,YACI,aAA+B,EAC/B,cAAiC,EACzB,UAAsC,EACtC,UAAkB,EAC1B,MAAqC;QAErC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAJtB,eAAU,GAAV,UAAU,CAA4B;QACtC,eAAU,GAAV,UAAU,CAAQ;QAI1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACjE,CAAC;IACe,YAAY,CAAC,OAAyB;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ","sourcesContent":["import type { FlowGraphDataConnection } from \"../../flowGraphDataConnection\";\r\nimport type { IFlowGraphBlockConfiguration } from \"../../flowGraphBlock\";\r\nimport type { RichType } from \"../../flowGraphRichTypes\";\r\nimport type { FlowGraphContext } from \"../../flowGraphContext\";\r\nimport { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\r\n\r\n/**\r\n * @experimental\r\n * The base block for all unary operation blocks. Receives an input of type InputT, and outputs a value of type ResultT.\r\n */\r\nexport class FlowGraphUnaryOperationBlock<InputT, ResultT> extends FlowGraphCachedOperationBlock<ResultT> {\r\n input: FlowGraphDataConnection<InputT>;\r\n\r\n constructor(\r\n inputRichType: RichType<InputT>,\r\n resultRichType: RichType<ResultT>,\r\n private _operation: (input: InputT) => ResultT,\r\n private _className: string,\r\n config?: IFlowGraphBlockConfiguration\r\n ) {\r\n super(resultRichType, config);\r\n this.input = this._registerDataInput(\"input\", inputRichType);\r\n }\r\n public override _doOperation(context: FlowGraphContext): ResultT {\r\n return this._operation(this.input.getValue(context));\r\n }\r\n\r\n public getClassName(): string {\r\n return this._className;\r\n }\r\n}\r\n"]}
@@ -42,7 +42,7 @@ export declare class FlowGraphConnection<BlockT, ConnectedToT extends IConnectab
42
42
  * @internal
43
43
  */
44
44
  connectedPointIds: any[];
45
- constructor(name: string, _connectionType: FlowGraphConnectionType, /* @internal */ _ownerBlock: BlockT);
45
+ constructor(name: string, _connectionType: FlowGraphConnectionType, _ownerBlock: BlockT);
46
46
  /**
47
47
  * The type of the connection
48
48
  */
@@ -14,7 +14,8 @@ export var FlowGraphConnectionType;
14
14
  * The base connection class.
15
15
  */
16
16
  export class FlowGraphConnection {
17
- constructor(name, _connectionType, /* @internal */ _ownerBlock) {
17
+ constructor(name, _connectionType,
18
+ /* @internal */ _ownerBlock) {
18
19
  this._ownerBlock = _ownerBlock;
19
20
  /** @internal */
20
21
  this._connectedPoint = [];
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphConnection.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"../Misc/tools\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\n\r\n/**\r\n * @experimental\r\n * The type of a connection point - inpput or output.\r\n */\r\nexport enum FlowGraphConnectionType {\r\n Input,\r\n Output,\r\n}\r\n\r\n/**\r\n * @experimental\r\n */\r\nexport interface IConnectable {\r\n uniqueId: string;\r\n _connectedPoint: Array<IConnectable>;\r\n _isSingularConnection(): boolean;\r\n _connectionType: FlowGraphConnectionType;\r\n connectTo(point: IConnectable): void;\r\n}\r\n\r\n/**\r\n * @experimental\r\n * The base connection class.\r\n */\r\nexport class FlowGraphConnection<BlockT, ConnectedToT extends IConnectable> implements IConnectable {\r\n /** @internal */\r\n public _connectedPoint: Array<ConnectedToT> = [];\r\n /**\r\n * A uniquely identifying string for the connection.\r\n */\r\n public uniqueId = RandomGUID();\r\n\r\n /**\r\n * The name of the connection.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _connectionType: FlowGraphConnectionType;\r\n\r\n /**\r\n * Used for parsing connections.\r\n * @internal\r\n */\r\n // disable warning as this is used for parsing\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public connectedPointIds: any[] = [];\r\n\r\n public constructor(name: string, _connectionType: FlowGraphConnectionType, /* @internal */ public _ownerBlock: BlockT) {\r\n this.name = name;\r\n this._connectionType = _connectionType;\r\n }\r\n\r\n /**\r\n * The type of the connection\r\n */\r\n public get connectionType() {\r\n return this._connectionType;\r\n }\r\n\r\n /**\r\n * @internal\r\n * Override this to indicate if a point can connect to more than one point.\r\n */\r\n public _isSingularConnection(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns if a point is connected to any other point.\r\n * @returns boolean indicating if the point is connected.\r\n */\r\n public isConnected(): boolean {\r\n return this._connectedPoint.length > 0;\r\n }\r\n\r\n /**\r\n * Connects two points together.\r\n * @param point\r\n */\r\n public connectTo(point: ConnectedToT): void {\r\n if (this._connectionType === point._connectionType) {\r\n throw new Error(`Cannot connect two points of type ${this.connectionType}`);\r\n }\r\n if ((this._isSingularConnection() && this._connectedPoint.length > 0) || (point._isSingularConnection() && point._connectedPoint.length > 0)) {\r\n throw new Error(\"Max number of connections for point reached\");\r\n }\r\n this._connectedPoint.push(point);\r\n point._connectedPoint.push(this);\r\n }\r\n\r\n /**\r\n * Saves the connection to a JSON object.\r\n */\r\n public serialize(serializationObject: any = {}) {\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject.name = this.name;\r\n serializationObject._connectionType = this._connectionType;\r\n serializationObject.connectedPointIds = [];\r\n serializationObject.className = this.getClassName();\r\n for (const point of this._connectedPoint) {\r\n serializationObject.connectedPointIds.push(point.uniqueId);\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FGConnection\";\r\n }\r\n\r\n /**\r\n * Deserialize from a object into this\r\n * @param serializationObject\r\n */\r\n deserialize(serializationObject: any) {\r\n this.uniqueId = serializationObject.uniqueId;\r\n this.name = serializationObject.name;\r\n this._connectionType = serializationObject._connectionType;\r\n this.connectedPointIds = serializationObject.connectedPointIds;\r\n }\r\n\r\n /**\r\n * Parses a connection from an object\r\n * @param serializationObject\r\n * @param ownerBlock\r\n * @returns\r\n */\r\n public static Parse(serializationObject: any = {}, ownerBlock: FlowGraphBlock) {\r\n const type = Tools.Instantiate(serializationObject.className);\r\n const connection = new type(serializationObject.name, serializationObject._connectionType, ownerBlock);\r\n connection.deserialize(serializationObject);\r\n return connection;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphConnection.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"../Misc/tools\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\n\r\n/**\r\n * @experimental\r\n * The type of a connection point - inpput or output.\r\n */\r\nexport enum FlowGraphConnectionType {\r\n Input,\r\n Output,\r\n}\r\n\r\n/**\r\n * @experimental\r\n */\r\nexport interface IConnectable {\r\n uniqueId: string;\r\n _connectedPoint: Array<IConnectable>;\r\n _isSingularConnection(): boolean;\r\n _connectionType: FlowGraphConnectionType;\r\n connectTo(point: IConnectable): void;\r\n}\r\n\r\n/**\r\n * @experimental\r\n * The base connection class.\r\n */\r\nexport class FlowGraphConnection<BlockT, ConnectedToT extends IConnectable> implements IConnectable {\r\n /** @internal */\r\n public _connectedPoint: Array<ConnectedToT> = [];\r\n /**\r\n * A uniquely identifying string for the connection.\r\n */\r\n public uniqueId = RandomGUID();\r\n\r\n /**\r\n * The name of the connection.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _connectionType: FlowGraphConnectionType;\r\n\r\n /**\r\n * Used for parsing connections.\r\n * @internal\r\n */\r\n // disable warning as this is used for parsing\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public connectedPointIds: any[] = [];\r\n\r\n public constructor(\r\n name: string,\r\n _connectionType: FlowGraphConnectionType,\r\n /* @internal */ public _ownerBlock: BlockT\r\n ) {\r\n this.name = name;\r\n this._connectionType = _connectionType;\r\n }\r\n\r\n /**\r\n * The type of the connection\r\n */\r\n public get connectionType() {\r\n return this._connectionType;\r\n }\r\n\r\n /**\r\n * @internal\r\n * Override this to indicate if a point can connect to more than one point.\r\n */\r\n public _isSingularConnection(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns if a point is connected to any other point.\r\n * @returns boolean indicating if the point is connected.\r\n */\r\n public isConnected(): boolean {\r\n return this._connectedPoint.length > 0;\r\n }\r\n\r\n /**\r\n * Connects two points together.\r\n * @param point\r\n */\r\n public connectTo(point: ConnectedToT): void {\r\n if (this._connectionType === point._connectionType) {\r\n throw new Error(`Cannot connect two points of type ${this.connectionType}`);\r\n }\r\n if ((this._isSingularConnection() && this._connectedPoint.length > 0) || (point._isSingularConnection() && point._connectedPoint.length > 0)) {\r\n throw new Error(\"Max number of connections for point reached\");\r\n }\r\n this._connectedPoint.push(point);\r\n point._connectedPoint.push(this);\r\n }\r\n\r\n /**\r\n * Saves the connection to a JSON object.\r\n */\r\n public serialize(serializationObject: any = {}) {\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject.name = this.name;\r\n serializationObject._connectionType = this._connectionType;\r\n serializationObject.connectedPointIds = [];\r\n serializationObject.className = this.getClassName();\r\n for (const point of this._connectedPoint) {\r\n serializationObject.connectedPointIds.push(point.uniqueId);\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FGConnection\";\r\n }\r\n\r\n /**\r\n * Deserialize from a object into this\r\n * @param serializationObject\r\n */\r\n deserialize(serializationObject: any) {\r\n this.uniqueId = serializationObject.uniqueId;\r\n this.name = serializationObject.name;\r\n this._connectionType = serializationObject._connectionType;\r\n this.connectedPointIds = serializationObject.connectedPointIds;\r\n }\r\n\r\n /**\r\n * Parses a connection from an object\r\n * @param serializationObject\r\n * @param ownerBlock\r\n * @returns\r\n */\r\n public static Parse(serializationObject: any = {}, ownerBlock: FlowGraphBlock) {\r\n const type = Tools.Instantiate(serializationObject.className);\r\n const connection = new type(serializationObject.name, serializationObject._connectionType, ownerBlock);\r\n connection.deserialize(serializationObject);\r\n return connection;\r\n }\r\n}\r\n"]}
@@ -50,6 +50,11 @@ export declare class FlowGraphContext {
50
50
  * These are blocks that have currently pending tasks/listeners that need to be cleaned up.
51
51
  */
52
52
  private _pendingBlocks;
53
+ /**
54
+ * A monotonically increasing ID for each execution.
55
+ * Incremented for every block executed.
56
+ */
57
+ private _executionId;
53
58
  constructor(params: IFlowGraphContextConfiguration);
54
59
  /**
55
60
  * Check if a user-defined variable is defined.
@@ -144,6 +149,11 @@ export declare class FlowGraphContext {
144
149
  * @internal
145
150
  */
146
151
  _clearPendingBlocks(): void;
152
+ /**
153
+ * @internal
154
+ */
155
+ _increaseExecutionId(): void;
156
+ get executionId(): number;
147
157
  /**
148
158
  * Serializes a context
149
159
  * @param serializationObject the object to write the values in
@@ -63,6 +63,11 @@ export class FlowGraphContext {
63
63
  * These are blocks that have currently pending tasks/listeners that need to be cleaned up.
64
64
  */
65
65
  this._pendingBlocks = [];
66
+ /**
67
+ * A monotonically increasing ID for each execution.
68
+ * Incremented for every block executed.
69
+ */
70
+ this._executionId = 0;
66
71
  this._configuration = params;
67
72
  }
68
73
  /**
@@ -199,6 +204,15 @@ export class FlowGraphContext {
199
204
  }
200
205
  this._pendingBlocks.length = 0;
201
206
  }
207
+ /**
208
+ * @internal
209
+ */
210
+ _increaseExecutionId() {
211
+ this._executionId++;
212
+ }
213
+ get executionId() {
214
+ return this._executionId;
215
+ }
202
216
  /**
203
217
  * Serializes a context
204
218
  * @param serializationObject the object to write the values in
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphContext.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"../Misc/decorators\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport type { FlowGraphDataConnection } from \"./flowGraphDataConnection\";\r\nimport type { FlowGraphEventCoordinator } from \"./flowGraphEventCoordinator\";\r\nimport type { FlowGraph } from \"./flowGraph\";\r\n\r\nfunction isMeshClassName(className: string) {\r\n return (\r\n className === \"Mesh\" ||\r\n className === \"AbstractMesh\" ||\r\n className === \"GroundMesh\" ||\r\n className === \"InstanceMesh\" ||\r\n className === \"LinesMesh\" ||\r\n className === \"GoldbergMesh\" ||\r\n className === \"GreasedLineMesh\" ||\r\n className === \"TrailMesh\"\r\n );\r\n}\r\n\r\nfunction defaultValueSerializationFunction(key: string, value: any, serializationObject: any) {\r\n if (value?.getClassName && isMeshClassName(value?.getClassName())) {\r\n serializationObject[key] = {\r\n name: value.name,\r\n className: value.getClassName(),\r\n };\r\n } else {\r\n serializationObject[key] = value;\r\n }\r\n}\r\n\r\nfunction defaultValueParseFunction(key: string, serializationObject: any, scene: Scene) {\r\n const value = serializationObject[key];\r\n let finalValue;\r\n const className = value?.className;\r\n if (isMeshClassName(className)) {\r\n finalValue = scene.getMeshByName(value.name);\r\n } else {\r\n finalValue = value;\r\n }\r\n return finalValue;\r\n}\r\n\r\n/**\r\n * Construction parameters for the context.\r\n * @experimental\r\n */\r\nexport interface IFlowGraphContextConfiguration {\r\n /**\r\n * The scene that the flow graph context belongs to.\r\n */\r\n readonly scene: Scene;\r\n /**\r\n * The event coordinator used by the flow graph context.\r\n */\r\n readonly eventCoordinator: FlowGraphEventCoordinator;\r\n}\r\n/**\r\n * @experimental\r\n * The context represents the current state and execution of the flow graph.\r\n * It contains both user-defined variables, which are derived from\r\n * a more general variable definition, and execution variables that\r\n * are set by the blocks.\r\n */\r\nexport class FlowGraphContext {\r\n /**\r\n * A randomly generated GUID for each context.\r\n */\r\n @serialize()\r\n public uniqueId = RandomGUID();\r\n /**\r\n * These are the variables defined by a user.\r\n */\r\n private _userVariables: Map<string, any> = new Map();\r\n /**\r\n * These are the variables set by the blocks.\r\n */\r\n private _executionVariables: Map<string, any> = new Map();\r\n /**\r\n * These are the values for the data connection points\r\n */\r\n private _connectionValues: Map<string, any> = new Map();\r\n /**\r\n * These are the variables set by the graph.\r\n */\r\n private readonly _configuration: IFlowGraphContextConfiguration;\r\n /**\r\n * These are blocks that have currently pending tasks/listeners that need to be cleaned up.\r\n */\r\n private _pendingBlocks: FlowGraphAsyncExecutionBlock[] = [];\r\n\r\n constructor(params: IFlowGraphContextConfiguration) {\r\n this._configuration = params;\r\n }\r\n\r\n /**\r\n * Check if a user-defined variable is defined.\r\n * @param name\r\n * @returns\r\n */\r\n public hasVariable(name: string) {\r\n return this._userVariables.has(name);\r\n }\r\n\r\n /**\r\n * Set a user-defined variable.\r\n * @param name\r\n * @param value\r\n */\r\n public setVariable(name: string, value: any) {\r\n this._userVariables.set(name, value);\r\n }\r\n\r\n /**\r\n * Get a user-defined variable.\r\n * @param name\r\n * @returns\r\n */\r\n public getVariable(name: string): any {\r\n return this._userVariables.get(name);\r\n }\r\n\r\n private _getUniqueIdPrefixedName(obj: FlowGraphBlock, name: string): string {\r\n return `${obj.uniqueId}_${name}`;\r\n }\r\n\r\n /**\r\n * Set an internal execution variable\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public _setExecutionVariable(block: FlowGraphBlock, name: string, value: any) {\r\n this._executionVariables.set(this._getUniqueIdPrefixedName(block, name), value);\r\n }\r\n\r\n /**\r\n * Get an internal execution variable\r\n * @internal\r\n * @param name\r\n * @returns\r\n */\r\n public _getExecutionVariable(block: FlowGraphBlock, name: string, defaultValue?: any): any {\r\n if (this._hasExecutionVariable(block, name)) {\r\n return this._executionVariables.get(this._getUniqueIdPrefixedName(block, name));\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * Delete an internal execution variable\r\n * @internal\r\n * @param block\r\n * @param name\r\n */\r\n public _deleteExecutionVariable(block: FlowGraphBlock, name: string) {\r\n this._executionVariables.delete(this._getUniqueIdPrefixedName(block, name));\r\n }\r\n\r\n /**\r\n * Check if an internal execution variable is defined\r\n * @internal\r\n * @param block\r\n * @param name\r\n * @returns\r\n */\r\n public _hasExecutionVariable(block: FlowGraphBlock, name: string) {\r\n return this._executionVariables.has(this._getUniqueIdPrefixedName(block, name));\r\n }\r\n\r\n /**\r\n * Check if a connection value is defined\r\n * @internal\r\n * @param connectionPoint\r\n * @returns\r\n */\r\n public _hasConnectionValue(connectionPoint: FlowGraphDataConnection<any>) {\r\n return this._connectionValues.has(connectionPoint.uniqueId);\r\n }\r\n\r\n /**\r\n * Set a connection value\r\n * @internal\r\n * @param connectionPoint\r\n * @param value\r\n */\r\n public _setConnectionValue<T>(connectionPoint: FlowGraphDataConnection<T>, value: T) {\r\n this._connectionValues.set(connectionPoint.uniqueId, value);\r\n }\r\n\r\n /**\r\n * Get a connection value\r\n * @internal\r\n * @param connectionPoint\r\n * @returns\r\n */\r\n public _getConnectionValue<T>(connectionPoint: FlowGraphDataConnection<T>): T {\r\n return this._connectionValues.get(connectionPoint.uniqueId);\r\n }\r\n\r\n /**\r\n * Get the configuration\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public get configuration() {\r\n return this._configuration;\r\n }\r\n\r\n /**\r\n * Add a block to the list of blocks that have pending tasks.\r\n * @internal\r\n * @param block\r\n */\r\n public _addPendingBlock(block: FlowGraphAsyncExecutionBlock) {\r\n this._pendingBlocks.push(block);\r\n }\r\n\r\n /**\r\n * Remove a block from the list of blocks that have pending tasks.\r\n * @internal\r\n * @param block\r\n */\r\n public _removePendingBlock(block: FlowGraphAsyncExecutionBlock) {\r\n const index = this._pendingBlocks.indexOf(block);\r\n if (index !== -1) {\r\n this._pendingBlocks.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Clear all pending blocks.\r\n * @internal\r\n */\r\n public _clearPendingBlocks() {\r\n for (const block of this._pendingBlocks) {\r\n block._cancelPendingTasks(this);\r\n }\r\n this._pendingBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Serializes a context\r\n * @param serializationObject the object to write the values in\r\n * @param valueSerializationFunction a function to serialize complex values\r\n */\r\n public serialize(serializationObject: any = {}, valueSerializationFunction: (key: string, value: any, serializationObject: any) => void = defaultValueSerializationFunction) {\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject._userVariables = {};\r\n this._userVariables.forEach((value, key) => {\r\n valueSerializationFunction(key, value, serializationObject._userVariables);\r\n });\r\n serializationObject._connectionValues = {};\r\n this._connectionValues.forEach((value, key) => {\r\n valueSerializationFunction(key, value, serializationObject._connectionValues);\r\n });\r\n }\r\n\r\n public getClassName() {\r\n return \"FGContext\";\r\n }\r\n\r\n /**\r\n * Parses a context\r\n * @param serializationObject the object containing the context serialization values\r\n * @param graph the graph to which the context should belong\r\n * @param valueParseFunction a function to parse complex values\r\n * @returns\r\n */\r\n public static Parse(\r\n serializationObject: any = {},\r\n graph: FlowGraph,\r\n valueParseFunction: (key: string, serializationObject: any, scene: Scene) => any = defaultValueParseFunction\r\n ): FlowGraphContext {\r\n const result = graph.createContext();\r\n result.uniqueId = serializationObject.uniqueId;\r\n for (const key in serializationObject._userVariables) {\r\n const value = valueParseFunction(key, serializationObject._userVariables, result._configuration.scene);\r\n result._userVariables.set(key, value);\r\n }\r\n for (const key in serializationObject._connectionValues) {\r\n const value = valueParseFunction(key, serializationObject._connectionValues, result._configuration.scene);\r\n result._connectionValues.set(key, value);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphContext.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"../Misc/decorators\";\r\nimport { RandomGUID } from \"../Misc/guid\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport type { FlowGraphDataConnection } from \"./flowGraphDataConnection\";\r\nimport type { FlowGraphEventCoordinator } from \"./flowGraphEventCoordinator\";\r\nimport type { FlowGraph } from \"./flowGraph\";\r\n\r\nfunction isMeshClassName(className: string) {\r\n return (\r\n className === \"Mesh\" ||\r\n className === \"AbstractMesh\" ||\r\n className === \"GroundMesh\" ||\r\n className === \"InstanceMesh\" ||\r\n className === \"LinesMesh\" ||\r\n className === \"GoldbergMesh\" ||\r\n className === \"GreasedLineMesh\" ||\r\n className === \"TrailMesh\"\r\n );\r\n}\r\n\r\nfunction defaultValueSerializationFunction(key: string, value: any, serializationObject: any) {\r\n if (value?.getClassName && isMeshClassName(value?.getClassName())) {\r\n serializationObject[key] = {\r\n name: value.name,\r\n className: value.getClassName(),\r\n };\r\n } else {\r\n serializationObject[key] = value;\r\n }\r\n}\r\n\r\nfunction defaultValueParseFunction(key: string, serializationObject: any, scene: Scene) {\r\n const value = serializationObject[key];\r\n let finalValue;\r\n const className = value?.className;\r\n if (isMeshClassName(className)) {\r\n finalValue = scene.getMeshByName(value.name);\r\n } else {\r\n finalValue = value;\r\n }\r\n return finalValue;\r\n}\r\n\r\n/**\r\n * Construction parameters for the context.\r\n * @experimental\r\n */\r\nexport interface IFlowGraphContextConfiguration {\r\n /**\r\n * The scene that the flow graph context belongs to.\r\n */\r\n readonly scene: Scene;\r\n /**\r\n * The event coordinator used by the flow graph context.\r\n */\r\n readonly eventCoordinator: FlowGraphEventCoordinator;\r\n}\r\n/**\r\n * @experimental\r\n * The context represents the current state and execution of the flow graph.\r\n * It contains both user-defined variables, which are derived from\r\n * a more general variable definition, and execution variables that\r\n * are set by the blocks.\r\n */\r\nexport class FlowGraphContext {\r\n /**\r\n * A randomly generated GUID for each context.\r\n */\r\n @serialize()\r\n public uniqueId = RandomGUID();\r\n /**\r\n * These are the variables defined by a user.\r\n */\r\n private _userVariables: Map<string, any> = new Map();\r\n /**\r\n * These are the variables set by the blocks.\r\n */\r\n private _executionVariables: Map<string, any> = new Map();\r\n /**\r\n * These are the values for the data connection points\r\n */\r\n private _connectionValues: Map<string, any> = new Map();\r\n /**\r\n * These are the variables set by the graph.\r\n */\r\n private readonly _configuration: IFlowGraphContextConfiguration;\r\n /**\r\n * These are blocks that have currently pending tasks/listeners that need to be cleaned up.\r\n */\r\n private _pendingBlocks: FlowGraphAsyncExecutionBlock[] = [];\r\n /**\r\n * A monotonically increasing ID for each execution.\r\n * Incremented for every block executed.\r\n */\r\n private _executionId = 0;\r\n\r\n constructor(params: IFlowGraphContextConfiguration) {\r\n this._configuration = params;\r\n }\r\n\r\n /**\r\n * Check if a user-defined variable is defined.\r\n * @param name\r\n * @returns\r\n */\r\n public hasVariable(name: string) {\r\n return this._userVariables.has(name);\r\n }\r\n\r\n /**\r\n * Set a user-defined variable.\r\n * @param name\r\n * @param value\r\n */\r\n public setVariable(name: string, value: any) {\r\n this._userVariables.set(name, value);\r\n }\r\n\r\n /**\r\n * Get a user-defined variable.\r\n * @param name\r\n * @returns\r\n */\r\n public getVariable(name: string): any {\r\n return this._userVariables.get(name);\r\n }\r\n\r\n private _getUniqueIdPrefixedName(obj: FlowGraphBlock, name: string): string {\r\n return `${obj.uniqueId}_${name}`;\r\n }\r\n\r\n /**\r\n * Set an internal execution variable\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public _setExecutionVariable(block: FlowGraphBlock, name: string, value: any) {\r\n this._executionVariables.set(this._getUniqueIdPrefixedName(block, name), value);\r\n }\r\n\r\n /**\r\n * Get an internal execution variable\r\n * @internal\r\n * @param name\r\n * @returns\r\n */\r\n public _getExecutionVariable(block: FlowGraphBlock, name: string, defaultValue?: any): any {\r\n if (this._hasExecutionVariable(block, name)) {\r\n return this._executionVariables.get(this._getUniqueIdPrefixedName(block, name));\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * Delete an internal execution variable\r\n * @internal\r\n * @param block\r\n * @param name\r\n */\r\n public _deleteExecutionVariable(block: FlowGraphBlock, name: string) {\r\n this._executionVariables.delete(this._getUniqueIdPrefixedName(block, name));\r\n }\r\n\r\n /**\r\n * Check if an internal execution variable is defined\r\n * @internal\r\n * @param block\r\n * @param name\r\n * @returns\r\n */\r\n public _hasExecutionVariable(block: FlowGraphBlock, name: string) {\r\n return this._executionVariables.has(this._getUniqueIdPrefixedName(block, name));\r\n }\r\n\r\n /**\r\n * Check if a connection value is defined\r\n * @internal\r\n * @param connectionPoint\r\n * @returns\r\n */\r\n public _hasConnectionValue(connectionPoint: FlowGraphDataConnection<any>) {\r\n return this._connectionValues.has(connectionPoint.uniqueId);\r\n }\r\n\r\n /**\r\n * Set a connection value\r\n * @internal\r\n * @param connectionPoint\r\n * @param value\r\n */\r\n public _setConnectionValue<T>(connectionPoint: FlowGraphDataConnection<T>, value: T) {\r\n this._connectionValues.set(connectionPoint.uniqueId, value);\r\n }\r\n\r\n /**\r\n * Get a connection value\r\n * @internal\r\n * @param connectionPoint\r\n * @returns\r\n */\r\n public _getConnectionValue<T>(connectionPoint: FlowGraphDataConnection<T>): T {\r\n return this._connectionValues.get(connectionPoint.uniqueId);\r\n }\r\n\r\n /**\r\n * Get the configuration\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public get configuration() {\r\n return this._configuration;\r\n }\r\n\r\n /**\r\n * Add a block to the list of blocks that have pending tasks.\r\n * @internal\r\n * @param block\r\n */\r\n public _addPendingBlock(block: FlowGraphAsyncExecutionBlock) {\r\n this._pendingBlocks.push(block);\r\n }\r\n\r\n /**\r\n * Remove a block from the list of blocks that have pending tasks.\r\n * @internal\r\n * @param block\r\n */\r\n public _removePendingBlock(block: FlowGraphAsyncExecutionBlock) {\r\n const index = this._pendingBlocks.indexOf(block);\r\n if (index !== -1) {\r\n this._pendingBlocks.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Clear all pending blocks.\r\n * @internal\r\n */\r\n public _clearPendingBlocks() {\r\n for (const block of this._pendingBlocks) {\r\n block._cancelPendingTasks(this);\r\n }\r\n this._pendingBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _increaseExecutionId() {\r\n this._executionId++;\r\n }\r\n\r\n public get executionId() {\r\n return this._executionId;\r\n }\r\n\r\n /**\r\n * Serializes a context\r\n * @param serializationObject the object to write the values in\r\n * @param valueSerializationFunction a function to serialize complex values\r\n */\r\n public serialize(serializationObject: any = {}, valueSerializationFunction: (key: string, value: any, serializationObject: any) => void = defaultValueSerializationFunction) {\r\n serializationObject.uniqueId = this.uniqueId;\r\n serializationObject._userVariables = {};\r\n this._userVariables.forEach((value, key) => {\r\n valueSerializationFunction(key, value, serializationObject._userVariables);\r\n });\r\n serializationObject._connectionValues = {};\r\n this._connectionValues.forEach((value, key) => {\r\n valueSerializationFunction(key, value, serializationObject._connectionValues);\r\n });\r\n }\r\n\r\n public getClassName() {\r\n return \"FGContext\";\r\n }\r\n\r\n /**\r\n * Parses a context\r\n * @param serializationObject the object containing the context serialization values\r\n * @param graph the graph to which the context should belong\r\n * @param valueParseFunction a function to parse complex values\r\n * @returns\r\n */\r\n public static Parse(\r\n serializationObject: any = {},\r\n graph: FlowGraph,\r\n valueParseFunction: (key: string, serializationObject: any, scene: Scene) => any = defaultValueParseFunction\r\n ): FlowGraphContext {\r\n const result = graph.createContext();\r\n result.uniqueId = serializationObject.uniqueId;\r\n for (const key in serializationObject._userVariables) {\r\n const value = valueParseFunction(key, serializationObject._userVariables, result._configuration.scene);\r\n result._userVariables.set(key, value);\r\n }\r\n for (const key in serializationObject._connectionValues) {\r\n const value = valueParseFunction(key, serializationObject._connectionValues, result._configuration.scene);\r\n result._connectionValues.set(key, value);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphDataConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphDataConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD;;;;;;GAMG;AACH,MAAM,OAAO,uBAA2B,SAAQ,mBAA+D;IAC3G;;;;;;OAMG;IACH,YAAmB,IAAY,EAAE,cAAuC,EAAE,UAA0B,EAAS,QAAqB;QAC9H,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QADiE,aAAQ,GAAR,QAAQ,CAAa;IAElI,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,KAAK,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAQ,EAAE,OAAyB;QAC/C,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS,CAAC,KAAiC;QAC9C,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB,CAAC,OAAyB;QAChD,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YACnC,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC5C;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;SACrC;IACL,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,OAAyB;QACrC,IAAI,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,MAAM,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM;YACH,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACpD;IACL,CAAC;IAEM,YAAY;QACf,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAEM,SAAS,CAAC,sBAA2B,EAAE;QAC1C,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACrC,mBAAmB,CAAC,QAAQ,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,mBAAwB,EAAE,UAA0B;QACpE,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACvE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,aAAa,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC","sourcesContent":["import { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { RichType } from \"./flowGraphRichTypes\";\r\n/**\r\n * @experimental\r\n * Represents a connection point for data.\r\n * An unconnected input point can have a default value.\r\n * An output point will only have a value if it is connected to an input point. Furthermore,\r\n * if the point belongs to a \"function\" node, the node will run its function to update the value.\r\n */\r\nexport class FlowGraphDataConnection<T> extends FlowGraphConnection<FlowGraphBlock, FlowGraphDataConnection<T>> {\r\n /**\r\n * Create a new data connection point.\r\n * @param name\r\n * @param connectionType\r\n * @param ownerBlock\r\n * @param richType\r\n */\r\n public constructor(name: string, connectionType: FlowGraphConnectionType, ownerBlock: FlowGraphBlock, public richType: RichType<T>) {\r\n super(name, connectionType, ownerBlock);\r\n }\r\n\r\n /**\r\n * An output data block can connect to multiple input data blocks,\r\n * but an input data block can only connect to one output data block.\r\n */\r\n public _isSingularConnection(): boolean {\r\n return this.connectionType === FlowGraphConnectionType.Input;\r\n }\r\n\r\n /**\r\n * Set the value of the connection in a specific context.\r\n * @param value the value to set\r\n * @param context the context to which the value is set\r\n */\r\n public setValue(value: T, context: FlowGraphContext): void {\r\n context._setConnectionValue(this, value);\r\n }\r\n\r\n public connectTo(point: FlowGraphDataConnection<T>): void {\r\n super.connectTo(point);\r\n }\r\n\r\n private _getValueOrDefault(context: FlowGraphContext): T {\r\n if (context._hasConnectionValue(this)) {\r\n return context._getConnectionValue(this);\r\n } else {\r\n return this.richType.defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the value of the connection in a specific context.\r\n * @param context the context from which the value is retrieved\r\n * @returns the value of the connection\r\n */\r\n public getValue(context: FlowGraphContext): T {\r\n if (this.connectionType === FlowGraphConnectionType.Output) {\r\n this._ownerBlock._updateOutputs(context);\r\n return this._getValueOrDefault(context);\r\n }\r\n\r\n if (!this.isConnected()) {\r\n return this._getValueOrDefault(context);\r\n } else {\r\n return this._connectedPoint[0].getValue(context);\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FGDataConnection\";\r\n }\r\n\r\n public serialize(serializationObject: any = {}) {\r\n super.serialize(serializationObject);\r\n serializationObject.richType = {};\r\n this.richType.serialize(serializationObject.richType);\r\n }\r\n\r\n public static Parse(serializationObject: any, ownerBlock: FlowGraphBlock): FlowGraphDataConnection<any> {\r\n const obj = FlowGraphConnection.Parse(serializationObject, ownerBlock);\r\n obj.richType = RichType.Parse(serializationObject.richType);\r\n return obj;\r\n }\r\n}\r\n\r\nRegisterClass(\"FGDataConnection\", FlowGraphDataConnection);\r\n"]}
1
+ {"version":3,"file":"flowGraphDataConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphDataConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD;;;;;;GAMG;AACH,MAAM,OAAO,uBAA2B,SAAQ,mBAA+D;IAC3G;;;;;;OAMG;IACH,YACI,IAAY,EACZ,cAAuC,EACvC,UAA0B,EACnB,QAAqB;QAE5B,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAFjC,aAAQ,GAAR,QAAQ,CAAa;IAGhC,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,KAAK,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAQ,EAAE,OAAyB;QAC/C,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS,CAAC,KAAiC;QAC9C,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,kBAAkB,CAAC,OAAyB;QAChD,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YACnC,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC5C;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;SACrC;IACL,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,OAAyB;QACrC,IAAI,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,MAAM,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM;YACH,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACpD;IACL,CAAC;IAEM,YAAY;QACf,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAEM,SAAS,CAAC,sBAA2B,EAAE;QAC1C,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACrC,mBAAmB,CAAC,QAAQ,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,mBAAwB,EAAE,UAA0B;QACpE,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACvE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,aAAa,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC","sourcesContent":["import { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { RichType } from \"./flowGraphRichTypes\";\r\n/**\r\n * @experimental\r\n * Represents a connection point for data.\r\n * An unconnected input point can have a default value.\r\n * An output point will only have a value if it is connected to an input point. Furthermore,\r\n * if the point belongs to a \"function\" node, the node will run its function to update the value.\r\n */\r\nexport class FlowGraphDataConnection<T> extends FlowGraphConnection<FlowGraphBlock, FlowGraphDataConnection<T>> {\r\n /**\r\n * Create a new data connection point.\r\n * @param name\r\n * @param connectionType\r\n * @param ownerBlock\r\n * @param richType\r\n */\r\n public constructor(\r\n name: string,\r\n connectionType: FlowGraphConnectionType,\r\n ownerBlock: FlowGraphBlock,\r\n public richType: RichType<T>\r\n ) {\r\n super(name, connectionType, ownerBlock);\r\n }\r\n\r\n /**\r\n * An output data block can connect to multiple input data blocks,\r\n * but an input data block can only connect to one output data block.\r\n */\r\n public _isSingularConnection(): boolean {\r\n return this.connectionType === FlowGraphConnectionType.Input;\r\n }\r\n\r\n /**\r\n * Set the value of the connection in a specific context.\r\n * @param value the value to set\r\n * @param context the context to which the value is set\r\n */\r\n public setValue(value: T, context: FlowGraphContext): void {\r\n context._setConnectionValue(this, value);\r\n }\r\n\r\n public connectTo(point: FlowGraphDataConnection<T>): void {\r\n super.connectTo(point);\r\n }\r\n\r\n private _getValueOrDefault(context: FlowGraphContext): T {\r\n if (context._hasConnectionValue(this)) {\r\n return context._getConnectionValue(this);\r\n } else {\r\n return this.richType.defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the value of the connection in a specific context.\r\n * @param context the context from which the value is retrieved\r\n * @returns the value of the connection\r\n */\r\n public getValue(context: FlowGraphContext): T {\r\n if (this.connectionType === FlowGraphConnectionType.Output) {\r\n this._ownerBlock._updateOutputs(context);\r\n return this._getValueOrDefault(context);\r\n }\r\n\r\n if (!this.isConnected()) {\r\n return this._getValueOrDefault(context);\r\n } else {\r\n return this._connectedPoint[0].getValue(context);\r\n }\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FGDataConnection\";\r\n }\r\n\r\n public serialize(serializationObject: any = {}) {\r\n super.serialize(serializationObject);\r\n serializationObject.richType = {};\r\n this.richType.serialize(serializationObject.richType);\r\n }\r\n\r\n public static Parse(serializationObject: any, ownerBlock: FlowGraphBlock): FlowGraphDataConnection<any> {\r\n const obj = FlowGraphConnection.Parse(serializationObject, ownerBlock);\r\n obj.richType = RichType.Parse(serializationObject.richType);\r\n return obj;\r\n }\r\n}\r\n\r\nRegisterClass(\"FGDataConnection\", FlowGraphDataConnection);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphRichTypes.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphRichTypes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2, Vector3, Vector4, Matrix, Quaternion } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\n\r\n/**\r\n * A rich type represents extra information about a type,\r\n * such as its name and a default value constructor.\r\n * @experimental\r\n */\r\nexport class RichType<T> {\r\n constructor(public typeName: string, public defaultValue: T) {}\r\n\r\n serialize(serializationObject: any) {\r\n serializationObject.typeName = this.typeName;\r\n serializationObject.defaultValue = this.defaultValue;\r\n }\r\n\r\n static Parse(serializationObject: any): RichType<any> {\r\n return new RichType(serializationObject.typeName, serializationObject.defaultValue);\r\n }\r\n}\r\n\r\nexport const RichTypeAny: RichType<any> = new RichType(\"any\", undefined);\r\n\r\nexport const RichTypeString: RichType<string> = new RichType(\"string\", \"\");\r\n\r\nexport const RichTypeNumber: RichType<number> = new RichType(\"number\", 0);\r\n\r\nexport const RichTypeBoolean: RichType<boolean> = new RichType(\"boolean\", false);\r\n\r\nexport const RichTypeVector2: RichType<Vector2> = new RichType(\"Vector2\", Vector2.Zero());\r\n\r\nexport const RichTypeVector3: RichType<Vector3> = new RichType(\"Vector3\", Vector3.Zero());\r\n\r\nexport const RichTypeVector4: RichType<Vector4> = new RichType(\"Vector4\", Vector4.Zero());\r\n\r\nexport const RichTypeMatrix: RichType<Matrix> = new RichType(\"Matrix\", Matrix.Identity());\r\n\r\nexport const RichTypeColor3: RichType<Color3> = new RichType(\"Color3\", Color3.Black());\r\n\r\nexport const RichTypeColor4: RichType<Color4> = new RichType(\"Color4\", new Color4(0, 0, 0, 0));\r\n\r\nexport const RichTypeQuaternion: RichType<Quaternion> = new RichType(\"Quaternion\", Quaternion.Identity());\r\n\r\n/**\r\n * Given a value, try to deduce its rich type.\r\n * @param value the value to deduce the rich type from\r\n * @returns the value's rich type, or RichTypeAny if the type could not be deduced.\r\n */\r\nexport function getRichTypeFromValue<T>(value: T): RichType<T> {\r\n switch (typeof value) {\r\n case \"string\":\r\n return RichTypeString as RichType<T>;\r\n case \"number\":\r\n return RichTypeNumber as RichType<T>;\r\n case \"boolean\":\r\n return RichTypeBoolean as RichType<T>;\r\n case \"object\":\r\n if (value instanceof Vector2) {\r\n return RichTypeVector2 as RichType<T>;\r\n } else if (value instanceof Vector3) {\r\n return RichTypeVector3 as RichType<T>;\r\n } else if (value instanceof Vector4) {\r\n return RichTypeVector4 as RichType<T>;\r\n } else if (value instanceof Color3) {\r\n return RichTypeColor3 as RichType<T>;\r\n } else if (value instanceof Color4) {\r\n return RichTypeColor4 as RichType<T>;\r\n } else if (value instanceof Quaternion) {\r\n return RichTypeQuaternion as RichType<T>;\r\n } else {\r\n return RichTypeAny as RichType<T>;\r\n }\r\n default:\r\n return RichTypeAny as RichType<T>;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphRichTypes.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphRichTypes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2, Vector3, Vector4, Matrix, Quaternion } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\n\r\n/**\r\n * A rich type represents extra information about a type,\r\n * such as its name and a default value constructor.\r\n * @experimental\r\n */\r\nexport class RichType<T> {\r\n constructor(\r\n public typeName: string,\r\n public defaultValue: T\r\n ) {}\r\n\r\n serialize(serializationObject: any) {\r\n serializationObject.typeName = this.typeName;\r\n serializationObject.defaultValue = this.defaultValue;\r\n }\r\n\r\n static Parse(serializationObject: any): RichType<any> {\r\n return new RichType(serializationObject.typeName, serializationObject.defaultValue);\r\n }\r\n}\r\n\r\nexport const RichTypeAny: RichType<any> = new RichType(\"any\", undefined);\r\n\r\nexport const RichTypeString: RichType<string> = new RichType(\"string\", \"\");\r\n\r\nexport const RichTypeNumber: RichType<number> = new RichType(\"number\", 0);\r\n\r\nexport const RichTypeBoolean: RichType<boolean> = new RichType(\"boolean\", false);\r\n\r\nexport const RichTypeVector2: RichType<Vector2> = new RichType(\"Vector2\", Vector2.Zero());\r\n\r\nexport const RichTypeVector3: RichType<Vector3> = new RichType(\"Vector3\", Vector3.Zero());\r\n\r\nexport const RichTypeVector4: RichType<Vector4> = new RichType(\"Vector4\", Vector4.Zero());\r\n\r\nexport const RichTypeMatrix: RichType<Matrix> = new RichType(\"Matrix\", Matrix.Identity());\r\n\r\nexport const RichTypeColor3: RichType<Color3> = new RichType(\"Color3\", Color3.Black());\r\n\r\nexport const RichTypeColor4: RichType<Color4> = new RichType(\"Color4\", new Color4(0, 0, 0, 0));\r\n\r\nexport const RichTypeQuaternion: RichType<Quaternion> = new RichType(\"Quaternion\", Quaternion.Identity());\r\n\r\n/**\r\n * Given a value, try to deduce its rich type.\r\n * @param value the value to deduce the rich type from\r\n * @returns the value's rich type, or RichTypeAny if the type could not be deduced.\r\n */\r\nexport function getRichTypeFromValue<T>(value: T): RichType<T> {\r\n switch (typeof value) {\r\n case \"string\":\r\n return RichTypeString as RichType<T>;\r\n case \"number\":\r\n return RichTypeNumber as RichType<T>;\r\n case \"boolean\":\r\n return RichTypeBoolean as RichType<T>;\r\n case \"object\":\r\n if (value instanceof Vector2) {\r\n return RichTypeVector2 as RichType<T>;\r\n } else if (value instanceof Vector3) {\r\n return RichTypeVector3 as RichType<T>;\r\n } else if (value instanceof Vector4) {\r\n return RichTypeVector4 as RichType<T>;\r\n } else if (value instanceof Color3) {\r\n return RichTypeColor3 as RichType<T>;\r\n } else if (value instanceof Color4) {\r\n return RichTypeColor4 as RichType<T>;\r\n } else if (value instanceof Quaternion) {\r\n return RichTypeQuaternion as RichType<T>;\r\n } else {\r\n return RichTypeAny as RichType<T>;\r\n }\r\n default:\r\n return RichTypeAny as RichType<T>;\r\n }\r\n}\r\n"]}
@@ -21,6 +21,7 @@ export class FlowGraphSignalConnection extends FlowGraphConnection {
21
21
  var _a;
22
22
  if (this.connectionType === FlowGraphConnectionType.Input) {
23
23
  this._ownerBlock._execute(context, this);
24
+ context._increaseExecutionId();
24
25
  }
25
26
  else {
26
27
  (_a = this._connectedPoint[0]) === null || _a === void 0 ? void 0 : _a._activateSignal(context);
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphSignalConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphSignalConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,mBAAuE;IAClH;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,MAAM,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,OAAyB;;QAC5C,IAAI,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,KAAK,EAAE;YACvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC5C;aAAM;YACH,MAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SACrD;IACL,CAAC;CACJ;AAED,aAAa,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC","sourcesContent":["import type { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * @experimental\r\n * Represents a connection point for a signal.\r\n * When an output point is activated, it will activate the connected input point.\r\n * When an input point is activated, it will execute the block it belongs to.\r\n */\r\nexport class FlowGraphSignalConnection extends FlowGraphConnection<FlowGraphExecutionBlock, FlowGraphSignalConnection> {\r\n /**\r\n * A signal input can be connected to more than one signal output,\r\n * but a signal output can only connect to one signal input\r\n */\r\n public _isSingularConnection(): boolean {\r\n return this.connectionType === FlowGraphConnectionType.Output;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _activateSignal(context: FlowGraphContext): void {\r\n if (this.connectionType === FlowGraphConnectionType.Input) {\r\n this._ownerBlock._execute(context, this);\r\n } else {\r\n this._connectedPoint[0]?._activateSignal(context);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"FlowGraphSignalConnection\", FlowGraphSignalConnection);\r\n"]}
1
+ {"version":3,"file":"flowGraphSignalConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphSignalConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,mBAAuE;IAClH;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,MAAM,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,OAAyB;;QAC5C,IAAI,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,KAAK,EAAE;YACvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,OAAO,CAAC,oBAAoB,EAAE,CAAC;SAClC;aAAM;YACH,MAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SACrD;IACL,CAAC;CACJ;AAED,aAAa,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC","sourcesContent":["import type { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * @experimental\r\n * Represents a connection point for a signal.\r\n * When an output point is activated, it will activate the connected input point.\r\n * When an input point is activated, it will execute the block it belongs to.\r\n */\r\nexport class FlowGraphSignalConnection extends FlowGraphConnection<FlowGraphExecutionBlock, FlowGraphSignalConnection> {\r\n /**\r\n * A signal input can be connected to more than one signal output,\r\n * but a signal output can only connect to one signal input\r\n */\r\n public _isSingularConnection(): boolean {\r\n return this.connectionType === FlowGraphConnectionType.Output;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _activateSignal(context: FlowGraphContext): void {\r\n if (this.connectionType === FlowGraphConnectionType.Input) {\r\n this._ownerBlock._execute(context, this);\r\n context._increaseExecutionId();\r\n } else {\r\n this._connectedPoint[0]?._activateSignal(context);\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"FlowGraphSignalConnection\", FlowGraphSignalConnection);\r\n"]}