@babylonjs/core 6.21.2 → 6.21.4

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 (123) hide show
  1. package/Animations/animatable.d.ts +4 -0
  2. package/Animations/animatable.js +6 -0
  3. package/Animations/animatable.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +9 -0
  5. package/Animations/animationGroup.js +14 -0
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Buffers/buffer.d.ts +31 -2
  8. package/Buffers/buffer.js +100 -65
  9. package/Buffers/buffer.js.map +1 -1
  10. package/Engines/engine.d.ts +5 -0
  11. package/Engines/thinEngine.js +2 -2
  12. package/Engines/thinEngine.js.map +1 -1
  13. package/FlowGraph/Blocks/Data/Logic/flowGraphBitwiseBlocks.d.ts +59 -0
  14. package/FlowGraph/Blocks/Data/Logic/flowGraphBitwiseBlocks.js +86 -0
  15. package/FlowGraph/Blocks/Data/Logic/flowGraphBitwiseBlocks.js.map +1 -0
  16. package/FlowGraph/Blocks/Data/Logic/index.d.ts +2 -0
  17. package/FlowGraph/Blocks/Data/Logic/index.js +3 -0
  18. package/FlowGraph/Blocks/Data/Logic/index.js.map +1 -0
  19. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.d.ts +2 -1
  20. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js +6 -2
  21. package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js.map +1 -1
  22. package/FlowGraph/Blocks/Data/Math/index.d.ts +4 -0
  23. package/FlowGraph/Blocks/Data/Math/index.js +5 -0
  24. package/FlowGraph/Blocks/Data/Math/index.js.map +1 -0
  25. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +1 -1
  26. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  27. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js +1 -1
  28. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  29. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.d.ts +2 -1
  30. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js +2 -2
  31. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  32. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +1 -8
  33. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +2 -5
  34. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  35. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js +1 -1
  36. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  37. package/FlowGraph/Blocks/Data/index.d.ts +2 -4
  38. package/FlowGraph/Blocks/Data/index.js +4 -4
  39. package/FlowGraph/Blocks/Data/index.js.map +1 -1
  40. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +1 -1
  41. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  42. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +1 -3
  43. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  44. package/FlowGraph/Blocks/Execution/{flowGraphConditionalBlock.d.ts → ControlFlow/flowGraphConditionalBlock.d.ts} +5 -5
  45. package/FlowGraph/Blocks/Execution/{flowGraphConditionalBlock.js → ControlFlow/flowGraphConditionalBlock.js} +3 -3
  46. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphConditionalBlock.js.map +1 -0
  47. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +20 -0
  48. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +26 -0
  49. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -0
  50. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +24 -0
  51. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +30 -0
  52. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -0
  53. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +24 -0
  54. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +27 -0
  55. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -0
  56. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.d.ts +24 -0
  57. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js +27 -0
  58. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -0
  59. package/FlowGraph/Blocks/Execution/{flowGraphForLoopBlock.d.ts → ControlFlow/flowGraphForLoopBlock.d.ts} +4 -4
  60. package/FlowGraph/Blocks/Execution/{flowGraphForLoopBlock.js → ControlFlow/flowGraphForLoopBlock.js} +4 -5
  61. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -0
  62. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.d.ts +51 -0
  63. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js +77 -0
  64. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -0
  65. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.d.ts +31 -0
  66. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js +32 -0
  67. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -0
  68. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +24 -0
  69. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +31 -0
  70. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -0
  71. package/FlowGraph/Blocks/Execution/{flowGraphTimerBlock.d.ts → ControlFlow/flowGraphTimerBlock.d.ts} +5 -9
  72. package/FlowGraph/Blocks/Execution/{flowGraphTimerBlock.js → ControlFlow/flowGraphTimerBlock.js} +5 -9
  73. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -0
  74. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +32 -0
  75. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +62 -0
  76. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -0
  77. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +31 -0
  78. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +27 -0
  79. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -0
  80. package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +12 -0
  81. package/FlowGraph/Blocks/Execution/ControlFlow/index.js +13 -0
  82. package/FlowGraph/Blocks/Execution/ControlFlow/index.js.map +1 -0
  83. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +0 -1
  84. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +1 -1
  85. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +1 -5
  86. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +3 -8
  87. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  88. package/FlowGraph/Blocks/Execution/index.d.ts +1 -3
  89. package/FlowGraph/Blocks/Execution/index.js +2 -3
  90. package/FlowGraph/Blocks/Execution/index.js.map +1 -1
  91. package/FlowGraph/flowGraphConnection.d.ts +4 -0
  92. package/FlowGraph/flowGraphConnection.js +5 -0
  93. package/FlowGraph/flowGraphConnection.js.map +1 -1
  94. package/FlowGraph/flowGraphContext.d.ts +42 -2
  95. package/FlowGraph/flowGraphContext.js +58 -6
  96. package/FlowGraph/flowGraphContext.js.map +1 -1
  97. package/FlowGraph/flowGraphDataConnection.d.ts +19 -2
  98. package/FlowGraph/flowGraphDataConnection.js +29 -5
  99. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  100. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  101. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  102. package/FlowGraph/flowGraphSignalConnection.js +1 -1
  103. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  104. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  105. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  106. package/Materials/Textures/equiRectangularCubeTexture.js +2 -0
  107. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  108. package/Materials/Textures/texture.js +2 -2
  109. package/Materials/Textures/texture.js.map +1 -1
  110. package/Meshes/Compression/dracoCompression.js +28 -13
  111. package/Meshes/Compression/dracoCompression.js.map +1 -1
  112. package/Misc/fileTools.js +2 -2
  113. package/Misc/fileTools.js.map +1 -1
  114. package/Misc/webRequest.d.ts +5 -0
  115. package/Misc/webRequest.js +7 -0
  116. package/Misc/webRequest.js.map +1 -1
  117. package/XR/features/WebXRPlaneDetector.d.ts +8 -0
  118. package/XR/features/WebXRPlaneDetector.js +13 -0
  119. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  120. package/package.json +1 -1
  121. package/FlowGraph/Blocks/Execution/flowGraphConditionalBlock.js.map +0 -1
  122. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js.map +0 -1
  123. package/FlowGraph/Blocks/Execution/flowGraphTimerBlock.js.map +0 -1
@@ -15,6 +15,10 @@ export class FlowGraphContext {
15
15
  * These are the variables set by the blocks.
16
16
  */
17
17
  this._executionVariables = new Map();
18
+ /**
19
+ * These are the values for the data connection points
20
+ */
21
+ this._connectionValues = new Map();
18
22
  /**
19
23
  * These are blocks that have currently pending tasks/listeners that need to be cleaned up.
20
24
  */
@@ -45,8 +49,8 @@ export class FlowGraphContext {
45
49
  getVariable(name) {
46
50
  return this._userVariables.get(name);
47
51
  }
48
- _getBlockPrefixedName(block, name) {
49
- return `${block.uniqueId}_${name}`;
52
+ _getUniqueIdPrefixedName(obj, name) {
53
+ return `${obj.uniqueId}_${name}`;
50
54
  }
51
55
  /**
52
56
  * Set an internal execution variable
@@ -55,7 +59,7 @@ export class FlowGraphContext {
55
59
  * @param value
56
60
  */
57
61
  _setExecutionVariable(block, name, value) {
58
- this._executionVariables.set(this._getBlockPrefixedName(block, name), value);
62
+ this._executionVariables.set(this._getUniqueIdPrefixedName(block, name), value);
59
63
  }
60
64
  /**
61
65
  * Get an internal execution variable
@@ -63,11 +67,59 @@ export class FlowGraphContext {
63
67
  * @param name
64
68
  * @returns
65
69
  */
66
- _getExecutionVariable(block, name) {
67
- return this._executionVariables.get(this._getBlockPrefixedName(block, name));
70
+ _getExecutionVariable(block, name, defaultValue) {
71
+ if (this._hasExecutionVariable(block, name)) {
72
+ return this._executionVariables.get(this._getUniqueIdPrefixedName(block, name));
73
+ }
74
+ else {
75
+ return defaultValue;
76
+ }
68
77
  }
78
+ /**
79
+ * Delete an internal execution variable
80
+ * @internal
81
+ * @param block
82
+ * @param name
83
+ */
69
84
  _deleteExecutionVariable(block, name) {
70
- this._executionVariables.delete(this._getBlockPrefixedName(block, name));
85
+ this._executionVariables.delete(this._getUniqueIdPrefixedName(block, name));
86
+ }
87
+ /**
88
+ * Check if an internal execution variable is defined
89
+ * @internal
90
+ * @param block
91
+ * @param name
92
+ * @returns
93
+ */
94
+ _hasExecutionVariable(block, name) {
95
+ return this._executionVariables.has(this._getUniqueIdPrefixedName(block, name));
96
+ }
97
+ /**
98
+ * Check if a connection value is defined
99
+ * @internal
100
+ * @param connectionPoint
101
+ * @returns
102
+ */
103
+ _hasConnectionValue(connectionPoint) {
104
+ return this._connectionValues.has(connectionPoint.uniqueId);
105
+ }
106
+ /**
107
+ * Set a connection value
108
+ * @internal
109
+ * @param connectionPoint
110
+ * @param value
111
+ */
112
+ _setConnectionValue(connectionPoint, value) {
113
+ this._connectionValues.set(connectionPoint.uniqueId, value);
114
+ }
115
+ /**
116
+ * Get a connection value
117
+ * @internal
118
+ * @param connectionPoint
119
+ * @returns
120
+ */
121
+ _getConnectionValue(connectionPoint) {
122
+ return this._connectionValues.get(connectionPoint.uniqueId);
71
123
  }
72
124
  /**
73
125
  * Get the graph set variables
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphContext.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphContext.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAkBzB,YAAY,MAAgC;QAjB5C;;WAEG;QACK,mBAAc,GAAqB,IAAI,GAAG,EAAE,CAAC;QACrD;;WAEG;QACK,wBAAmB,GAAqB,IAAI,GAAG,EAAE,CAAC;QAK1D;;WAEG;QACK,mBAAc,GAAmC,EAAE,CAAC;QAGxD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY,EAAE,KAAU;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEO,qBAAqB,CAAC,KAAqB,EAAE,IAAY;QAC7D,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,KAAqB,EAAE,IAAY,EAAE,KAAU;QACxE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,KAAqB,EAAE,IAAY;QAC5D,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAEM,wBAAwB,CAAC,KAAqB,EAAE,IAAY;QAC/D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;OAKG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,KAAmC;QACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,KAAmC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxC;IACL,CAAC;IAED;;;OAGG;IACI,mBAAmB;QACtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;YACrC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;CACJ","sourcesContent":["import type { Scene } from \"../scene\";\r\nimport type { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\r\nimport type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport type { FlowGraphEventCoordinator } from \"./flowGraphEventCoordinator\";\r\n\r\n/**\r\n * Construction parameters for the context.\r\n * @experimental\r\n */\r\nexport interface IFlowGraphGraphVariables {\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 * 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 variables set by the graph.\r\n */\r\n private readonly _graphVariables: IFlowGraphGraphVariables;\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: IFlowGraphGraphVariables) {\r\n this._graphVariables = 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 _getBlockPrefixedName(block: FlowGraphBlock, name: string): string {\r\n return `${block.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._getBlockPrefixedName(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): any {\r\n return this._executionVariables.get(this._getBlockPrefixedName(block, name));\r\n }\r\n\r\n public _deleteExecutionVariable(block: FlowGraphBlock, name: string) {\r\n this._executionVariables.delete(this._getBlockPrefixedName(block, name));\r\n }\r\n\r\n /**\r\n * Get the graph set variables\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public get graphVariables() {\r\n return this._graphVariables;\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"]}
1
+ {"version":3,"file":"flowGraphContext.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphContext.ts"],"names":[],"mappings":"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","sourcesContent":["import 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\n\r\n/**\r\n * Construction parameters for the context.\r\n * @experimental\r\n */\r\nexport interface IFlowGraphGraphVariables {\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 * 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 _graphVariables: IFlowGraphGraphVariables;\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: IFlowGraphGraphVariables) {\r\n this._graphVariables = 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 graph set variables\r\n * @internal\r\n * @param name\r\n * @param value\r\n */\r\n public get graphVariables() {\r\n return this._graphVariables;\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"]}
@@ -11,13 +11,30 @@ import type { RichType } from "./flowGraphRichTypes";
11
11
  */
12
12
  export declare class FlowGraphDataConnection<T> extends FlowGraphConnection<FlowGraphBlock, FlowGraphDataConnection<T>> {
13
13
  richType: RichType<T>;
14
- private _value;
14
+ /**
15
+ * Create a new data connection point.
16
+ * @param name
17
+ * @param connectionType
18
+ * @param ownerBlock
19
+ * @param richType
20
+ */
15
21
  constructor(name: string, connectionType: FlowGraphConnectionType, ownerBlock: FlowGraphBlock, richType: RichType<T>);
16
22
  /**
17
23
  * An output data block can connect to multiple input data blocks,
18
24
  * but an input data block can only connect to one output data block.
19
25
  */
20
26
  _isSingularConnection(): boolean;
21
- set value(value: T);
27
+ /**
28
+ * Set the value of the connection in a specific context.
29
+ * @param value the value to set
30
+ * @param context the context to which the value is set
31
+ */
32
+ setValue(value: T, context: FlowGraphContext): void;
33
+ private _getValueOrDefault;
34
+ /**
35
+ * Gets the value of the connection in a specific context.
36
+ * @param context the context from which the value is retrieved
37
+ * @returns the value of the connection
38
+ */
22
39
  getValue(context: FlowGraphContext): T;
23
40
  }
@@ -7,10 +7,16 @@ import { FlowGraphConnection, FlowGraphConnectionType } from "./flowGraphConnect
7
7
  * if the point belongs to a "function" node, the node will run its function to update the value.
8
8
  */
9
9
  export class FlowGraphDataConnection extends FlowGraphConnection {
10
+ /**
11
+ * Create a new data connection point.
12
+ * @param name
13
+ * @param connectionType
14
+ * @param ownerBlock
15
+ * @param richType
16
+ */
10
17
  constructor(name, connectionType, ownerBlock, richType) {
11
18
  super(name, connectionType, ownerBlock);
12
19
  this.richType = richType;
13
- this._value = richType.defaultValueBuilder();
14
20
  }
15
21
  /**
16
22
  * An output data block can connect to multiple input data blocks,
@@ -19,16 +25,34 @@ export class FlowGraphDataConnection extends FlowGraphConnection {
19
25
  _isSingularConnection() {
20
26
  return this.connectionType === FlowGraphConnectionType.Input;
21
27
  }
22
- set value(value) {
23
- this._value = value;
28
+ /**
29
+ * Set the value of the connection in a specific context.
30
+ * @param value the value to set
31
+ * @param context the context to which the value is set
32
+ */
33
+ setValue(value, context) {
34
+ context._setConnectionValue(this, value);
35
+ }
36
+ _getValueOrDefault(context) {
37
+ if (context._hasConnectionValue(this)) {
38
+ return context._getConnectionValue(this);
39
+ }
40
+ else {
41
+ return this.richType.defaultValueBuilder();
42
+ }
24
43
  }
44
+ /**
45
+ * Gets the value of the connection in a specific context.
46
+ * @param context the context from which the value is retrieved
47
+ * @returns the value of the connection
48
+ */
25
49
  getValue(context) {
26
50
  if (this.connectionType === FlowGraphConnectionType.Output) {
27
51
  this._ownerBlock._updateOutputs(context);
28
- return this._value;
52
+ return this._getValueOrDefault(context);
29
53
  }
30
54
  if (!this.isConnected()) {
31
- return this._value;
55
+ return this._getValueOrDefault(context);
32
56
  }
33
57
  else {
34
58
  return this._connectedPoint[0].getValue(context);
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphDataConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphDataConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrF;;;;;;GAMG;AACH,MAAM,OAAO,uBAA2B,SAAQ,mBAA+D;IAG3G,YAAmB,IAAY,EAAE,cAAuC,EAAE,UAA0B,EAAS,QAAqB;QAC9H,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QADiE,aAAQ,GAAR,QAAQ,CAAa;QAE9H,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,cAAc,KAAK,uBAAuB,CAAC,KAAK,CAAC;IACjE,CAAC;IAED,IAAW,KAAK,CAAC,KAAQ;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,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,MAAM,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;aAAM;YACH,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACpD;IACL,CAAC;CACJ","sourcesContent":["import type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport type { 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 private _value: T;\r\n\r\n public constructor(name: string, connectionType: FlowGraphConnectionType, ownerBlock: FlowGraphBlock, public richType: RichType<T>) {\r\n super(name, connectionType, ownerBlock);\r\n this._value = richType.defaultValueBuilder();\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 public set value(value: T) {\r\n this._value = value;\r\n }\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._value;\r\n }\r\n\r\n if (!this.isConnected()) {\r\n return this._value;\r\n } else {\r\n return this._connectedPoint[0].getValue(context);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphDataConnection.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphDataConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrF;;;;;;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;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,mBAAmB,EAAE,CAAC;SAC9C;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;CACJ","sourcesContent":["import type { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport type { 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 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.defaultValueBuilder();\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"]}
@@ -18,7 +18,7 @@ export declare abstract class FlowGraphExecutionBlock extends FlowGraphBlock {
18
18
  * @internal
19
19
  * Executes the flow graph execution block.
20
20
  */
21
- abstract _execute(context: FlowGraphContext): void;
21
+ abstract _execute(context: FlowGraphContext, callingSignal: FlowGraphSignalConnection): void;
22
22
  protected _registerSignalInput(name: string): FlowGraphSignalConnection;
23
23
  protected _registerSignalOutput(name: string): FlowGraphSignalConnection;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flowGraphExecutionBlock.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphExecutionBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;GAIG;AACH,MAAM,OAAgB,uBAAwB,SAAQ,cAAc;IAShE;QACI,KAAK,EAAE,CAAC;QAJK,kBAAa,GAAgC,EAAE,CAAC;QAChD,mBAAc,GAAgC,EAAE,CAAC;QAI9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAOS,oBAAoB,CAAC,IAAY;QACvC,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,qBAAqB,CAAC,IAAY;QACxC,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ","sourcesContent":["import { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { FlowGraphSignalConnection } from \"./flowGraphSignalConnection\";\r\n\r\n/**\r\n * @experimental\r\n * A block that executes some action. Always has an input signal (which is not used by event blocks).\r\n * Can have one or more output signals.\r\n */\r\nexport abstract class FlowGraphExecutionBlock extends FlowGraphBlock {\r\n /**\r\n * Input connection: The input signal of the block.\r\n */\r\n public readonly onStart: FlowGraphSignalConnection;\r\n\r\n private readonly _signalInputs: FlowGraphSignalConnection[] = [];\r\n private readonly _signalOutputs: FlowGraphSignalConnection[] = [];\r\n\r\n protected constructor() {\r\n super();\r\n this.onStart = this._registerSignalInput(\"onStart\");\r\n }\r\n /**\r\n * @internal\r\n * Executes the flow graph execution block.\r\n */\r\n public abstract _execute(context: FlowGraphContext): void;\r\n\r\n protected _registerSignalInput(name: string): FlowGraphSignalConnection {\r\n const input = new FlowGraphSignalConnection(name, FlowGraphConnectionType.Input, this);\r\n this._signalInputs.push(input);\r\n return input;\r\n }\r\n\r\n protected _registerSignalOutput(name: string): FlowGraphSignalConnection {\r\n const output = new FlowGraphSignalConnection(name, FlowGraphConnectionType.Output, this);\r\n this._signalOutputs.push(output);\r\n return output;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"flowGraphExecutionBlock.js","sourceRoot":"","sources":["../../../../dev/core/src/FlowGraph/flowGraphExecutionBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;GAIG;AACH,MAAM,OAAgB,uBAAwB,SAAQ,cAAc;IAShE;QACI,KAAK,EAAE,CAAC;QAJK,kBAAa,GAAgC,EAAE,CAAC;QAChD,mBAAc,GAAgC,EAAE,CAAC;QAI9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAOS,oBAAoB,CAAC,IAAY;QACvC,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,qBAAqB,CAAC,IAAY;QACxC,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ","sourcesContent":["import { FlowGraphBlock } from \"./flowGraphBlock\";\r\nimport { FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\r\nimport { FlowGraphSignalConnection } from \"./flowGraphSignalConnection\";\r\n\r\n/**\r\n * @experimental\r\n * A block that executes some action. Always has an input signal (which is not used by event blocks).\r\n * Can have one or more output signals.\r\n */\r\nexport abstract class FlowGraphExecutionBlock extends FlowGraphBlock {\r\n /**\r\n * Input connection: The input signal of the block.\r\n */\r\n public readonly onStart: FlowGraphSignalConnection;\r\n\r\n private readonly _signalInputs: FlowGraphSignalConnection[] = [];\r\n private readonly _signalOutputs: FlowGraphSignalConnection[] = [];\r\n\r\n protected constructor() {\r\n super();\r\n this.onStart = this._registerSignalInput(\"onStart\");\r\n }\r\n /**\r\n * @internal\r\n * Executes the flow graph execution block.\r\n */\r\n public abstract _execute(context: FlowGraphContext, callingSignal: FlowGraphSignalConnection): void;\r\n\r\n protected _registerSignalInput(name: string): FlowGraphSignalConnection {\r\n const input = new FlowGraphSignalConnection(name, FlowGraphConnectionType.Input, this);\r\n this._signalInputs.push(input);\r\n return input;\r\n }\r\n\r\n protected _registerSignalOutput(name: string): FlowGraphSignalConnection {\r\n const output = new FlowGraphSignalConnection(name, FlowGraphConnectionType.Output, this);\r\n this._signalOutputs.push(output);\r\n return output;\r\n }\r\n}\r\n"]}
@@ -19,7 +19,7 @@ export class FlowGraphSignalConnection extends FlowGraphConnection {
19
19
  _activateSignal(context) {
20
20
  var _a;
21
21
  if (this.connectionType === FlowGraphConnectionType.Input) {
22
- this._ownerBlock._execute(context);
22
+ this._ownerBlock._execute(context, this);
23
23
  }
24
24
  else {
25
25
  (_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;AAGrF;;;;;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,CAAC,CAAC;SACtC;aAAM;YACH,MAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,0CAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SACrD;IACL,CAAC;CACJ","sourcesContent":["import type { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\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);\r\n } else {\r\n this._connectedPoint[0]?._activateSignal(context);\r\n }\r\n }\r\n}\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;AAGrF;;;;;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","sourcesContent":["import type { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\r\nimport { FlowGraphConnection, FlowGraphConnectionType } from \"./flowGraphConnection\";\r\nimport type { FlowGraphContext } from \"./flowGraphContext\";\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"]}
@@ -178,7 +178,7 @@ export class CascadedShadowGenerator extends ShadowGenerator {
178
178
  this._shadowMaxZ = value;
179
179
  return;
180
180
  }
181
- if (this._shadowMaxZ === value || value < camera.minZ || value > camera.maxZ) {
181
+ if (this._shadowMaxZ === value || value < camera.minZ || (value > camera.maxZ && camera.maxZ !== 0)) {
182
182
  return;
183
183
  }
184
184
  this._shadowMaxZ = value;