@onerjs/core 8.23.12 → 8.25.1

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 (287) hide show
  1. package/Behaviors/Meshes/index.d.ts +1 -0
  2. package/Behaviors/Meshes/index.js +1 -0
  3. package/Behaviors/Meshes/index.js.map +1 -1
  4. package/Behaviors/Meshes/pointerDragBehavior.d.ts +6 -34
  5. package/Behaviors/Meshes/pointerDragBehavior.js +0 -12
  6. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  7. package/Behaviors/Meshes/pointerDragEvents.d.ts +38 -0
  8. package/Behaviors/Meshes/pointerDragEvents.js +2 -0
  9. package/Behaviors/Meshes/pointerDragEvents.js.map +1 -0
  10. package/Buffers/storageBuffer.d.ts +6 -0
  11. package/Buffers/storageBuffer.js +8 -0
  12. package/Buffers/storageBuffer.js.map +1 -1
  13. package/Engines/Extensions/engine.multiRender.d.ts +2 -1
  14. package/Engines/Extensions/engine.multiRender.js +12 -7
  15. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  16. package/Engines/Extensions/engine.multiview.js +5 -5
  17. package/Engines/Extensions/engine.multiview.js.map +1 -1
  18. package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +2 -1
  19. package/Engines/WebGPU/Extensions/engine.multiRender.js +12 -7
  20. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  21. package/Engines/WebGPU/webgpuDrawContext.d.ts +6 -0
  22. package/Engines/WebGPU/webgpuDrawContext.js +9 -0
  23. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  24. package/Engines/abstractEngine.js +3 -3
  25. package/Engines/abstractEngine.js.map +1 -1
  26. package/Engines/engineCapabilities.d.ts +4 -0
  27. package/Engines/engineCapabilities.js.map +1 -1
  28. package/Engines/engineFactory.d.ts +4 -1
  29. package/Engines/engineFactory.js.map +1 -1
  30. package/Engines/nativeEngine.js +2 -0
  31. package/Engines/nativeEngine.js.map +1 -1
  32. package/Engines/nullEngine.js +2 -0
  33. package/Engines/nullEngine.js.map +1 -1
  34. package/Engines/thinEngine.js +17 -0
  35. package/Engines/thinEngine.js.map +1 -1
  36. package/Engines/webgpuEngine.d.ts +7 -0
  37. package/Engines/webgpuEngine.js +19 -1
  38. package/Engines/webgpuEngine.js.map +1 -1
  39. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +12 -0
  40. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +52 -0
  41. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  42. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +0 -3
  43. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  44. package/FrameGraph/Node/nodeRenderGraph.js +7 -2
  45. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  46. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +4 -0
  47. package/FrameGraph/Tasks/Layers/baseLayerTask.js +7 -1
  48. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  49. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +11 -2
  50. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  51. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +6 -6
  52. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  53. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +27 -1
  54. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +76 -8
  55. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  56. package/FrameGraph/Tasks/Texture/clearTextureTask.js +2 -1
  57. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  58. package/FrameGraph/frameGraph.js +0 -7
  59. package/FrameGraph/frameGraph.js.map +1 -1
  60. package/FrameGraph/frameGraphRenderTarget.js +1 -1
  61. package/FrameGraph/frameGraphRenderTarget.js.map +1 -1
  62. package/Gizmos/cameraGizmo.js +2 -2
  63. package/Gizmos/cameraGizmo.js.map +1 -1
  64. package/Gizmos/lightGizmo.js +2 -2
  65. package/Gizmos/lightGizmo.js.map +1 -1
  66. package/Gizmos/positionGizmo.d.ts +7 -6
  67. package/Gizmos/positionGizmo.js +3 -9
  68. package/Gizmos/positionGizmo.js.map +1 -1
  69. package/Gizmos/rotationGizmo.d.ts +7 -6
  70. package/Gizmos/rotationGizmo.js +3 -9
  71. package/Gizmos/rotationGizmo.js.map +1 -1
  72. package/Gizmos/scaleGizmo.d.ts +7 -6
  73. package/Gizmos/scaleGizmo.js +3 -9
  74. package/Gizmos/scaleGizmo.js.map +1 -1
  75. package/Instrumentation/sceneInstrumentation.d.ts +2 -0
  76. package/Instrumentation/sceneInstrumentation.js +58 -32
  77. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  78. package/Lights/Clustered/clusteredLightContainer.d.ts +102 -0
  79. package/Lights/Clustered/clusteredLightContainer.js +487 -0
  80. package/Lights/Clustered/clusteredLightContainer.js.map +1 -0
  81. package/Lights/Clustered/clusteredLightingSceneComponent.d.ts +34 -0
  82. package/Lights/Clustered/clusteredLightingSceneComponent.js +47 -0
  83. package/Lights/Clustered/clusteredLightingSceneComponent.js.map +1 -0
  84. package/Lights/Clustered/index.d.ts +6 -0
  85. package/Lights/Clustered/index.js +7 -0
  86. package/Lights/Clustered/index.js.map +1 -0
  87. package/Lights/Shadows/cascadedShadowGenerator.js +1 -0
  88. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  89. package/Lights/Shadows/shadowGenerator.js +10 -8
  90. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  91. package/Lights/index.d.ts +1 -0
  92. package/Lights/index.js +1 -0
  93. package/Lights/index.js.map +1 -1
  94. package/Lights/light.d.ts +7 -1
  95. package/Lights/light.js +7 -1
  96. package/Lights/light.js.map +1 -1
  97. package/Lights/lightConstants.d.ts +4 -0
  98. package/Lights/lightConstants.js +4 -0
  99. package/Lights/lightConstants.js.map +1 -1
  100. package/Lights/spotLight.d.ts +6 -3
  101. package/Lights/spotLight.js.map +1 -1
  102. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +0 -5
  103. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  104. package/Materials/PBR/pbrBaseMaterial.js +3 -2
  105. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  106. package/Materials/Textures/renderTargetTexture.d.ts +5 -0
  107. package/Materials/Textures/renderTargetTexture.js +9 -0
  108. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  109. package/Materials/materialHelper.functions.d.ts +2 -1
  110. package/Materials/materialHelper.functions.js +12 -4
  111. package/Materials/materialHelper.functions.js.map +1 -1
  112. package/Materials/standardMaterial.js +4 -3
  113. package/Materials/standardMaterial.js.map +1 -1
  114. package/Materials/uniformBuffer.d.ts +7 -4
  115. package/Materials/uniformBuffer.js +37 -15
  116. package/Materials/uniformBuffer.js.map +1 -1
  117. package/Maths/math.vector.d.ts +1 -1
  118. package/Maths/math.vector.js +2 -2
  119. package/Maths/math.vector.js.map +1 -1
  120. package/Meshes/abstractMesh.d.ts +25 -0
  121. package/Meshes/abstractMesh.hotSpot.js +37 -25
  122. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  123. package/Meshes/abstractMesh.js +4 -0
  124. package/Meshes/abstractMesh.js.map +1 -1
  125. package/Meshes/csg2.js +6 -4
  126. package/Meshes/csg2.js.map +1 -1
  127. package/Meshes/geometry.js +1 -1
  128. package/Meshes/geometry.js.map +1 -1
  129. package/Meshes/instancedMesh.d.ts +1 -0
  130. package/Meshes/instancedMesh.js +3 -0
  131. package/Meshes/instancedMesh.js.map +1 -1
  132. package/Meshes/linesMesh.d.ts +5 -3
  133. package/Meshes/linesMesh.js +27 -8
  134. package/Meshes/linesMesh.js.map +1 -1
  135. package/Meshes/mesh.d.ts +0 -19
  136. package/Meshes/mesh.js +2 -26
  137. package/Meshes/mesh.js.map +1 -1
  138. package/Meshes/mesh.vertexData.d.ts +2 -2
  139. package/Meshes/mesh.vertexData.js.map +1 -1
  140. package/Misc/dumpTools.d.ts +1 -1
  141. package/Misc/dumpTools.js +23 -14
  142. package/Misc/dumpTools.js.map +1 -1
  143. package/Misc/fileTools.js +8 -1
  144. package/Misc/fileTools.js.map +1 -1
  145. package/Misc/index.d.ts +1 -0
  146. package/Misc/index.js +1 -0
  147. package/Misc/index.js.map +1 -1
  148. package/Misc/khronosTextureContainer2.js +16 -7
  149. package/Misc/khronosTextureContainer2.js.map +1 -1
  150. package/Misc/lazy.d.ts +16 -0
  151. package/Misc/lazy.js +25 -0
  152. package/Misc/lazy.js.map +1 -0
  153. package/Misc/screenshotTools.js +1 -1
  154. package/Misc/screenshotTools.js.map +1 -1
  155. package/Misc/snapshotRenderingHelper.d.ts +6 -3
  156. package/Misc/snapshotRenderingHelper.js +37 -6
  157. package/Misc/snapshotRenderingHelper.js.map +1 -1
  158. package/Particles/IParticleSystem.d.ts +4 -0
  159. package/Particles/IParticleSystem.js.map +1 -1
  160. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +4 -0
  161. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +17 -3
  162. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  163. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +0 -1
  164. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  165. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.d.ts +31 -0
  166. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.js +67 -0
  167. package/Particles/Node/Blocks/Update/basicColorUpdateBlock.js.map +1 -0
  168. package/Particles/Node/Blocks/index.d.ts +1 -0
  169. package/Particles/Node/Blocks/index.js +1 -0
  170. package/Particles/Node/Blocks/index.js.map +1 -1
  171. package/Particles/Node/Blocks/particleInputBlock.js +1 -0
  172. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  173. package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +2 -2
  174. package/Particles/Node/Blocks/particleSourceTextureBlock.js +3 -3
  175. package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -1
  176. package/Particles/Node/Blocks/systemBlock.d.ts +3 -0
  177. package/Particles/Node/Blocks/systemBlock.js +3 -0
  178. package/Particles/Node/Blocks/systemBlock.js.map +1 -1
  179. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +3 -1
  180. package/Particles/Node/Enums/nodeParticleContextualSources.js +2 -0
  181. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
  182. package/Particles/Node/nodeParticleBuildState.js +3 -1
  183. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  184. package/Particles/Node/nodeParticleSystemSet.helper.d.ts +2 -1
  185. package/Particles/Node/nodeParticleSystemSet.helper.js +118 -61
  186. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  187. package/Particles/Node/nodeParticleSystemSet.js +1 -0
  188. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  189. package/Particles/particle.d.ts +8 -0
  190. package/Particles/particle.js +10 -0
  191. package/Particles/particle.js.map +1 -1
  192. package/Particles/particleSystem.d.ts +2 -4
  193. package/Particles/particleSystem.js +2 -4
  194. package/Particles/particleSystem.js.map +1 -1
  195. package/Particles/thinParticleSystem.d.ts +6 -0
  196. package/Particles/thinParticleSystem.function.d.ts +2 -0
  197. package/Particles/thinParticleSystem.function.js +3 -0
  198. package/Particles/thinParticleSystem.function.js.map +1 -1
  199. package/Particles/thinParticleSystem.js +15 -5
  200. package/Particles/thinParticleSystem.js.map +1 -1
  201. package/Rendering/objectRenderer.d.ts +33 -3
  202. package/Rendering/objectRenderer.js +164 -38
  203. package/Rendering/objectRenderer.js.map +1 -1
  204. package/Shaders/ShadersInclude/clusteredLightingFunctions.d.ts +5 -0
  205. package/Shaders/ShadersInclude/clusteredLightingFunctions.js +19 -0
  206. package/Shaders/ShadersInclude/clusteredLightingFunctions.js.map +1 -0
  207. package/Shaders/ShadersInclude/helperFunctions.js +6 -1
  208. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  209. package/Shaders/ShadersInclude/lightFragment.js +33 -1
  210. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  211. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +3 -0
  212. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  213. package/Shaders/ShadersInclude/lightUboDeclaration.js +5 -0
  214. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  215. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +2 -0
  216. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  217. package/Shaders/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  218. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +20 -0
  219. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  220. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -1
  221. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  222. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.d.ts +7 -0
  223. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +125 -0
  224. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -0
  225. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -0
  226. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  227. package/Shaders/default.fragment.js +5 -0
  228. package/Shaders/default.fragment.js.map +1 -1
  229. package/Shaders/default.vertex.js +6 -0
  230. package/Shaders/default.vertex.js.map +1 -1
  231. package/Shaders/lightProxy.fragment.d.ts +5 -0
  232. package/Shaders/lightProxy.fragment.js +13 -0
  233. package/Shaders/lightProxy.fragment.js.map +1 -0
  234. package/Shaders/lightProxy.vertex.d.ts +8 -0
  235. package/Shaders/lightProxy.vertex.js +19 -0
  236. package/Shaders/lightProxy.vertex.js.map +1 -0
  237. package/Shaders/pbr.fragment.d.ts +1 -0
  238. package/Shaders/pbr.fragment.js +4 -0
  239. package/Shaders/pbr.fragment.js.map +1 -1
  240. package/Shaders/pbr.vertex.js +6 -0
  241. package/Shaders/pbr.vertex.js.map +1 -1
  242. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.d.ts +5 -0
  243. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.js +24 -0
  244. package/ShadersWGSL/ShadersInclude/clusteredLightingFunctions.js.map +1 -0
  245. package/ShadersWGSL/ShadersInclude/lightFragment.js +33 -1
  246. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  247. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +6 -0
  248. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  249. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +3 -0
  250. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  251. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  252. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +22 -1
  253. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  254. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -1
  255. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  256. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +2 -0
  257. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +115 -0
  258. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  259. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js +3 -0
  260. package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  261. package/ShadersWGSL/default.fragment.js +5 -0
  262. package/ShadersWGSL/default.fragment.js.map +1 -1
  263. package/ShadersWGSL/default.vertex.js +6 -0
  264. package/ShadersWGSL/default.vertex.js.map +1 -1
  265. package/ShadersWGSL/lightProxy.fragment.d.ts +5 -0
  266. package/ShadersWGSL/lightProxy.fragment.js +13 -0
  267. package/ShadersWGSL/lightProxy.fragment.js.map +1 -0
  268. package/ShadersWGSL/lightProxy.vertex.d.ts +7 -0
  269. package/ShadersWGSL/lightProxy.vertex.js +19 -0
  270. package/ShadersWGSL/lightProxy.vertex.js.map +1 -0
  271. package/ShadersWGSL/pbr.vertex.js +6 -0
  272. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  273. package/Sprites/spriteManager.d.ts +5 -0
  274. package/Sprites/spriteManager.js +6 -0
  275. package/Sprites/spriteManager.js.map +1 -1
  276. package/Sprites/spriteRenderer.d.ts +5 -2
  277. package/Sprites/spriteRenderer.js.map +1 -1
  278. package/States/alphaCullingState.d.ts +3 -1
  279. package/States/alphaCullingState.js +39 -37
  280. package/States/alphaCullingState.js.map +1 -1
  281. package/package.json +1 -1
  282. package/scene.d.ts +28 -1
  283. package/scene.js +198 -34
  284. package/scene.js.map +1 -1
  285. package/sceneComponent.d.ts +2 -0
  286. package/sceneComponent.js +2 -0
  287. package/sceneComponent.js.map +1 -1
@@ -37,6 +37,7 @@ export declare class SceneComponentConstants {
37
37
  static readonly NAME_AUDIO = "Audio";
38
38
  static readonly NAME_FLUIDRENDERER = "FluidRenderer";
39
39
  static readonly NAME_IBLCDFGENERATOR = "iblCDFGenerator";
40
+ static readonly NAME_CLUSTEREDLIGHTING = "ClusteredLighting";
40
41
  static readonly STEP_ISREADYFORMESH_EFFECTLAYER = 0;
41
42
  static readonly STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER = 0;
42
43
  static readonly STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER = 0;
@@ -74,6 +75,7 @@ export declare class SceneComponentConstants {
74
75
  static readonly STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER = 3;
75
76
  static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER = 0;
76
77
  static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER = 1;
78
+ static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING = 2;
77
79
  static readonly STEP_POINTERMOVE_SPRITE = 0;
78
80
  static readonly STEP_POINTERDOWN_SPRITE = 0;
79
81
  static readonly STEP_POINTERUP_SPRITE = 0;
package/sceneComponent.js CHANGED
@@ -26,6 +26,7 @@ SceneComponentConstants.NAME_PHYSICSENGINE = "PhysicsEngine";
26
26
  SceneComponentConstants.NAME_AUDIO = "Audio";
27
27
  SceneComponentConstants.NAME_FLUIDRENDERER = "FluidRenderer";
28
28
  SceneComponentConstants.NAME_IBLCDFGENERATOR = "iblCDFGenerator";
29
+ SceneComponentConstants.NAME_CLUSTEREDLIGHTING = "ClusteredLighting";
29
30
  SceneComponentConstants.STEP_ISREADYFORMESH_EFFECTLAYER = 0;
30
31
  SceneComponentConstants.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER = 0;
31
32
  SceneComponentConstants.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER = 0;
@@ -63,6 +64,7 @@ SceneComponentConstants.STEP_GATHERRENDERTARGETS_SHADOWGENERATOR = 2;
63
64
  SceneComponentConstants.STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER = 3;
64
65
  SceneComponentConstants.STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER = 0;
65
66
  SceneComponentConstants.STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER = 1;
67
+ SceneComponentConstants.STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING = 2;
66
68
  SceneComponentConstants.STEP_POINTERMOVE_SPRITE = 0;
67
69
  SceneComponentConstants.STEP_POINTERDOWN_SPRITE = 0;
68
70
  SceneComponentConstants.STEP_POINTERUP_SPRITE = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"sceneComponent.js","sourceRoot":"","sources":["../../../dev/core/src/sceneComponent.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"./scene\";\r\nimport type { SmartArrayNoDuplicate } from \"./Misc/smartArray\";\r\nimport type { Nullable } from \"./types\";\r\nimport type { PickingInfo } from \"./Collisions/pickingInfo\";\r\nimport type { IPointerEvent } from \"./Events/deviceInputEvents\";\r\n\r\nimport type { Mesh } from \"./Meshes/mesh\";\r\nimport type { Effect } from \"./Materials/effect\";\r\nimport type { Camera } from \"./Cameras/camera\";\r\nimport type { AbstractMesh } from \"./Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"./Meshes/subMesh\";\r\nimport type { RenderTargetTexture } from \"./Materials/Textures/renderTargetTexture\";\r\nimport type { IAssetContainer } from \"./IAssetContainer\";\r\n\r\n/**\r\n * Groups all the scene component constants in one place to ease maintenance.\r\n * @internal\r\n */\r\nexport class SceneComponentConstants {\r\n public static readonly NAME_EFFECTLAYER = \"EffectLayer\";\r\n public static readonly NAME_LAYER = \"Layer\";\r\n public static readonly NAME_LENSFLARESYSTEM = \"LensFlareSystem\";\r\n public static readonly NAME_BOUNDINGBOXRENDERER = \"BoundingBoxRenderer\";\r\n public static readonly NAME_PARTICLESYSTEM = \"ParticleSystem\";\r\n public static readonly NAME_GAMEPAD = \"Gamepad\";\r\n public static readonly NAME_SIMPLIFICATIONQUEUE = \"SimplificationQueue\";\r\n public static readonly NAME_GEOMETRYBUFFERRENDERER = \"GeometryBufferRenderer\";\r\n public static readonly NAME_PREPASSRENDERER = \"PrePassRenderer\";\r\n public static readonly NAME_DEPTHRENDERER = \"DepthRenderer\";\r\n public static readonly NAME_DEPTHPEELINGRENDERER = \"DepthPeelingRenderer\";\r\n public static readonly NAME_POSTPROCESSRENDERPIPELINEMANAGER = \"PostProcessRenderPipelineManager\";\r\n public static readonly NAME_SPRITE = \"Sprite\";\r\n public static readonly NAME_SUBSURFACE = \"SubSurface\";\r\n public static readonly NAME_OUTLINERENDERER = \"Outline\";\r\n public static readonly NAME_PROCEDURALTEXTURE = \"ProceduralTexture\";\r\n public static readonly NAME_SHADOWGENERATOR = \"ShadowGenerator\";\r\n public static readonly NAME_OCTREE = \"Octree\";\r\n public static readonly NAME_PHYSICSENGINE = \"PhysicsEngine\";\r\n public static readonly NAME_AUDIO = \"Audio\";\r\n public static readonly NAME_FLUIDRENDERER = \"FluidRenderer\";\r\n public static readonly NAME_IBLCDFGENERATOR = \"iblCDFGenerator\";\r\n\r\n public static readonly STEP_ISREADYFORMESH_EFFECTLAYER = 0;\r\n\r\n public static readonly STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER = 1;\r\n\r\n public static readonly STEP_BEFORECAMERADRAW_PREPASS = 0;\r\n public static readonly STEP_BEFORECAMERADRAW_EFFECTLAYER = 1;\r\n public static readonly STEP_BEFORECAMERADRAW_LAYER = 2;\r\n\r\n public static readonly STEP_BEFORERENDERTARGETDRAW_PREPASS = 0;\r\n public static readonly STEP_BEFORERENDERTARGETDRAW_LAYER = 1;\r\n\r\n public static readonly STEP_BEFORERENDERINGMESH_PREPASS = 0;\r\n public static readonly STEP_BEFORERENDERINGMESH_OUTLINE = 1;\r\n\r\n public static readonly STEP_AFTERRENDERINGMESH_PREPASS = 0;\r\n public static readonly STEP_AFTERRENDERINGMESH_OUTLINE = 1;\r\n\r\n public static readonly STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW = 0;\r\n public static readonly STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER = 1;\r\n\r\n public static readonly STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE = 0;\r\n\r\n public static readonly STEP_BEFORECLEAR_PROCEDURALTEXTURE = 0;\r\n public static readonly STEP_BEFORECLEAR_PREPASS = 1;\r\n\r\n public static readonly STEP_BEFORERENDERTARGETCLEAR_PREPASS = 0;\r\n\r\n public static readonly STEP_AFTERRENDERTARGETDRAW_PREPASS = 0;\r\n public static readonly STEP_AFTERRENDERTARGETDRAW_LAYER = 1;\r\n\r\n public static readonly STEP_AFTERCAMERADRAW_PREPASS = 0;\r\n public static readonly STEP_AFTERCAMERADRAW_EFFECTLAYER = 1;\r\n public static readonly STEP_AFTERCAMERADRAW_LENSFLARESYSTEM = 2;\r\n public static readonly STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW = 3;\r\n public static readonly STEP_AFTERCAMERADRAW_LAYER = 4;\r\n public static readonly STEP_AFTERCAMERADRAW_FLUIDRENDERER = 5;\r\n\r\n public static readonly STEP_AFTERCAMERAPOSTPROCESS_LAYER = 0;\r\n\r\n public static readonly STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER = 0;\r\n\r\n public static readonly STEP_AFTERRENDER_AUDIO = 0;\r\n\r\n public static readonly STEP_GATHERRENDERTARGETS_DEPTHRENDERER = 0;\r\n public static readonly STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER = 1;\r\n public static readonly STEP_GATHERRENDERTARGETS_SHADOWGENERATOR = 2;\r\n public static readonly STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER = 3;\r\n\r\n public static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER = 0;\r\n public static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER = 1;\r\n\r\n public static readonly STEP_POINTERMOVE_SPRITE = 0;\r\n public static readonly STEP_POINTERDOWN_SPRITE = 0;\r\n public static readonly STEP_POINTERUP_SPRITE = 0;\r\n}\r\n\r\n/**\r\n * This represents a scene component.\r\n *\r\n * This is used to decouple the dependency the scene is having on the different workloads like\r\n * layers, post processes...\r\n */\r\nexport interface ISceneComponent {\r\n /**\r\n * The name of the component. Each component must have a unique name.\r\n */\r\n name: string;\r\n\r\n /**\r\n * The scene the component belongs to.\r\n */\r\n scene: Scene;\r\n\r\n /**\r\n * Register the component to one instance of a scene.\r\n */\r\n register(): void;\r\n\r\n /**\r\n * Rebuilds the elements related to this component in case of\r\n * context lost for instance.\r\n */\r\n rebuild(): void;\r\n\r\n /**\r\n * Disposes the component and the associated resources.\r\n */\r\n dispose(): void;\r\n}\r\n\r\n/**\r\n * This represents a SERIALIZABLE scene component.\r\n *\r\n * This extends Scene Component to add Serialization methods on top.\r\n */\r\nexport interface ISceneSerializableComponent extends ISceneComponent {\r\n /**\r\n * Adds all the elements from the container to the scene\r\n * @param container the container holding the elements\r\n */\r\n addFromContainer(container: IAssetContainer): void;\r\n\r\n /**\r\n * Removes all the elements in the container from the scene\r\n * @param container contains the elements to remove\r\n * @param dispose if the removed element should be disposed (default: false)\r\n */\r\n removeFromContainer(container: IAssetContainer, dispose?: boolean): void;\r\n\r\n /**\r\n * Serializes the component data to the specified json object\r\n * @param serializationObject The object to serialize to\r\n */\r\n serialize(serializationObject: any): void;\r\n}\r\n\r\n/**\r\n * Strong typing of a Mesh related stage step action\r\n */\r\nexport type MeshStageAction = (mesh: AbstractMesh, hardwareInstancedRendering: boolean) => boolean;\r\n\r\n/**\r\n * Strong typing of a Evaluate Sub Mesh related stage step action\r\n */\r\nexport type EvaluateSubMeshStageAction = (mesh: AbstractMesh, subMesh: SubMesh) => void;\r\n\r\n/**\r\n * Strong typing of a pre active Mesh related stage step action\r\n */\r\nexport type PreActiveMeshStageAction = (mesh: AbstractMesh) => void;\r\n\r\n/**\r\n * Strong typing of a Camera related stage step action\r\n */\r\nexport type CameraStageAction = (camera: Camera) => void;\r\n\r\n/**\r\n * Strong typing of a Camera Frame buffer related stage step action\r\n */\r\nexport type CameraStageFrameBufferAction = (camera: Camera) => boolean;\r\n\r\n/**\r\n * Strong typing of a Render Target related stage step action\r\n */\r\nexport type RenderTargetStageAction = (renderTarget: RenderTargetTexture, faceIndex?: number, layer?: number) => void;\r\n\r\n/**\r\n * Strong typing of a RenderingGroup related stage step action\r\n */\r\nexport type RenderingGroupStageAction = (renderingGroupId: number) => void;\r\n\r\n/**\r\n * Strong typing of a Mesh Render related stage step action\r\n */\r\nexport type RenderingMeshStageAction = (mesh: Mesh, subMesh: SubMesh, batch: any, effect: Nullable<Effect>) => void;\r\n\r\n/**\r\n * Strong typing of a simple stage step action\r\n */\r\nexport type SimpleStageAction = () => void;\r\n\r\n/**\r\n * Strong typing of a render target action.\r\n */\r\nexport type RenderTargetsStageAction = (renderTargets: SmartArrayNoDuplicate<RenderTargetTexture>) => void;\r\n\r\n/**\r\n * Strong typing of a pointer move action.\r\n */\r\nexport type PointerMoveStageAction = (\r\n unTranslatedPointerX: number,\r\n unTranslatedPointerY: number,\r\n pickResult: Nullable<PickingInfo>,\r\n isMeshPicked: boolean,\r\n element: Nullable<HTMLElement>\r\n) => Nullable<PickingInfo>;\r\n\r\n/**\r\n * Strong typing of a pointer up/down action.\r\n */\r\nexport type PointerUpDownStageAction = (\r\n unTranslatedPointerX: number,\r\n unTranslatedPointerY: number,\r\n pickResult: Nullable<PickingInfo>,\r\n evt: IPointerEvent,\r\n doubleClick: boolean\r\n) => Nullable<PickingInfo>;\r\n\r\n/**\r\n * Representation of a stage in the scene (Basically a list of ordered steps)\r\n * @internal\r\n */\r\nexport class Stage<T extends Function> extends Array<{ index: number; component: ISceneComponent; action: T }> {\r\n /**\r\n * Hide ctor from the rest of the world.\r\n * @param items The items to add.\r\n */\r\n private constructor(items?: { index: number; component: ISceneComponent; action: T }[]) {\r\n super(...(<any>items));\r\n }\r\n\r\n /**\r\n * Creates a new Stage.\r\n * @returns A new instance of a Stage\r\n */\r\n static Create<T extends Function>(): Stage<T> {\r\n return Object.create(Stage.prototype) as Stage<T>;\r\n }\r\n\r\n /**\r\n * Registers a step in an ordered way in the targeted stage.\r\n * @param index Defines the position to register the step in\r\n * @param component Defines the component attached to the step\r\n * @param action Defines the action to launch during the step\r\n */\r\n public registerStep(index: number, component: ISceneComponent, action: T): void {\r\n let i = 0;\r\n let maxIndex = Number.MAX_VALUE;\r\n for (; i < this.length; i++) {\r\n const step = this[i];\r\n maxIndex = step.index;\r\n if (index < maxIndex) {\r\n break;\r\n }\r\n }\r\n this.splice(i, 0, { index, component, action: action.bind(component) });\r\n }\r\n\r\n /**\r\n * Clears all the steps from the stage.\r\n */\r\n public clear(): void {\r\n this.length = 0;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"sceneComponent.js","sourceRoot":"","sources":["../../../dev/core/src/sceneComponent.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"./scene\";\r\nimport type { SmartArrayNoDuplicate } from \"./Misc/smartArray\";\r\nimport type { Nullable } from \"./types\";\r\nimport type { PickingInfo } from \"./Collisions/pickingInfo\";\r\nimport type { IPointerEvent } from \"./Events/deviceInputEvents\";\r\n\r\nimport type { Mesh } from \"./Meshes/mesh\";\r\nimport type { Effect } from \"./Materials/effect\";\r\nimport type { Camera } from \"./Cameras/camera\";\r\nimport type { AbstractMesh } from \"./Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"./Meshes/subMesh\";\r\nimport type { RenderTargetTexture } from \"./Materials/Textures/renderTargetTexture\";\r\nimport type { IAssetContainer } from \"./IAssetContainer\";\r\n\r\n/**\r\n * Groups all the scene component constants in one place to ease maintenance.\r\n * @internal\r\n */\r\nexport class SceneComponentConstants {\r\n public static readonly NAME_EFFECTLAYER = \"EffectLayer\";\r\n public static readonly NAME_LAYER = \"Layer\";\r\n public static readonly NAME_LENSFLARESYSTEM = \"LensFlareSystem\";\r\n public static readonly NAME_BOUNDINGBOXRENDERER = \"BoundingBoxRenderer\";\r\n public static readonly NAME_PARTICLESYSTEM = \"ParticleSystem\";\r\n public static readonly NAME_GAMEPAD = \"Gamepad\";\r\n public static readonly NAME_SIMPLIFICATIONQUEUE = \"SimplificationQueue\";\r\n public static readonly NAME_GEOMETRYBUFFERRENDERER = \"GeometryBufferRenderer\";\r\n public static readonly NAME_PREPASSRENDERER = \"PrePassRenderer\";\r\n public static readonly NAME_DEPTHRENDERER = \"DepthRenderer\";\r\n public static readonly NAME_DEPTHPEELINGRENDERER = \"DepthPeelingRenderer\";\r\n public static readonly NAME_POSTPROCESSRENDERPIPELINEMANAGER = \"PostProcessRenderPipelineManager\";\r\n public static readonly NAME_SPRITE = \"Sprite\";\r\n public static readonly NAME_SUBSURFACE = \"SubSurface\";\r\n public static readonly NAME_OUTLINERENDERER = \"Outline\";\r\n public static readonly NAME_PROCEDURALTEXTURE = \"ProceduralTexture\";\r\n public static readonly NAME_SHADOWGENERATOR = \"ShadowGenerator\";\r\n public static readonly NAME_OCTREE = \"Octree\";\r\n public static readonly NAME_PHYSICSENGINE = \"PhysicsEngine\";\r\n public static readonly NAME_AUDIO = \"Audio\";\r\n public static readonly NAME_FLUIDRENDERER = \"FluidRenderer\";\r\n public static readonly NAME_IBLCDFGENERATOR = \"iblCDFGenerator\";\r\n public static readonly NAME_CLUSTEREDLIGHTING = \"ClusteredLighting\";\r\n\r\n public static readonly STEP_ISREADYFORMESH_EFFECTLAYER = 0;\r\n\r\n public static readonly STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER = 0;\r\n\r\n public static readonly STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER = 1;\r\n\r\n public static readonly STEP_BEFORECAMERADRAW_PREPASS = 0;\r\n public static readonly STEP_BEFORECAMERADRAW_EFFECTLAYER = 1;\r\n public static readonly STEP_BEFORECAMERADRAW_LAYER = 2;\r\n\r\n public static readonly STEP_BEFORERENDERTARGETDRAW_PREPASS = 0;\r\n public static readonly STEP_BEFORERENDERTARGETDRAW_LAYER = 1;\r\n\r\n public static readonly STEP_BEFORERENDERINGMESH_PREPASS = 0;\r\n public static readonly STEP_BEFORERENDERINGMESH_OUTLINE = 1;\r\n\r\n public static readonly STEP_AFTERRENDERINGMESH_PREPASS = 0;\r\n public static readonly STEP_AFTERRENDERINGMESH_OUTLINE = 1;\r\n\r\n public static readonly STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW = 0;\r\n public static readonly STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER = 1;\r\n\r\n public static readonly STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE = 0;\r\n\r\n public static readonly STEP_BEFORECLEAR_PROCEDURALTEXTURE = 0;\r\n public static readonly STEP_BEFORECLEAR_PREPASS = 1;\r\n\r\n public static readonly STEP_BEFORERENDERTARGETCLEAR_PREPASS = 0;\r\n\r\n public static readonly STEP_AFTERRENDERTARGETDRAW_PREPASS = 0;\r\n public static readonly STEP_AFTERRENDERTARGETDRAW_LAYER = 1;\r\n\r\n public static readonly STEP_AFTERCAMERADRAW_PREPASS = 0;\r\n public static readonly STEP_AFTERCAMERADRAW_EFFECTLAYER = 1;\r\n public static readonly STEP_AFTERCAMERADRAW_LENSFLARESYSTEM = 2;\r\n public static readonly STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW = 3;\r\n public static readonly STEP_AFTERCAMERADRAW_LAYER = 4;\r\n public static readonly STEP_AFTERCAMERADRAW_FLUIDRENDERER = 5;\r\n\r\n public static readonly STEP_AFTERCAMERAPOSTPROCESS_LAYER = 0;\r\n\r\n public static readonly STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER = 0;\r\n\r\n public static readonly STEP_AFTERRENDER_AUDIO = 0;\r\n\r\n public static readonly STEP_GATHERRENDERTARGETS_DEPTHRENDERER = 0;\r\n public static readonly STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER = 1;\r\n public static readonly STEP_GATHERRENDERTARGETS_SHADOWGENERATOR = 2;\r\n public static readonly STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER = 3;\r\n\r\n public static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER = 0;\r\n public static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER = 1;\r\n public static readonly STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING = 2;\r\n\r\n public static readonly STEP_POINTERMOVE_SPRITE = 0;\r\n public static readonly STEP_POINTERDOWN_SPRITE = 0;\r\n public static readonly STEP_POINTERUP_SPRITE = 0;\r\n}\r\n\r\n/**\r\n * This represents a scene component.\r\n *\r\n * This is used to decouple the dependency the scene is having on the different workloads like\r\n * layers, post processes...\r\n */\r\nexport interface ISceneComponent {\r\n /**\r\n * The name of the component. Each component must have a unique name.\r\n */\r\n name: string;\r\n\r\n /**\r\n * The scene the component belongs to.\r\n */\r\n scene: Scene;\r\n\r\n /**\r\n * Register the component to one instance of a scene.\r\n */\r\n register(): void;\r\n\r\n /**\r\n * Rebuilds the elements related to this component in case of\r\n * context lost for instance.\r\n */\r\n rebuild(): void;\r\n\r\n /**\r\n * Disposes the component and the associated resources.\r\n */\r\n dispose(): void;\r\n}\r\n\r\n/**\r\n * This represents a SERIALIZABLE scene component.\r\n *\r\n * This extends Scene Component to add Serialization methods on top.\r\n */\r\nexport interface ISceneSerializableComponent extends ISceneComponent {\r\n /**\r\n * Adds all the elements from the container to the scene\r\n * @param container the container holding the elements\r\n */\r\n addFromContainer(container: IAssetContainer): void;\r\n\r\n /**\r\n * Removes all the elements in the container from the scene\r\n * @param container contains the elements to remove\r\n * @param dispose if the removed element should be disposed (default: false)\r\n */\r\n removeFromContainer(container: IAssetContainer, dispose?: boolean): void;\r\n\r\n /**\r\n * Serializes the component data to the specified json object\r\n * @param serializationObject The object to serialize to\r\n */\r\n serialize(serializationObject: any): void;\r\n}\r\n\r\n/**\r\n * Strong typing of a Mesh related stage step action\r\n */\r\nexport type MeshStageAction = (mesh: AbstractMesh, hardwareInstancedRendering: boolean) => boolean;\r\n\r\n/**\r\n * Strong typing of a Evaluate Sub Mesh related stage step action\r\n */\r\nexport type EvaluateSubMeshStageAction = (mesh: AbstractMesh, subMesh: SubMesh) => void;\r\n\r\n/**\r\n * Strong typing of a pre active Mesh related stage step action\r\n */\r\nexport type PreActiveMeshStageAction = (mesh: AbstractMesh) => void;\r\n\r\n/**\r\n * Strong typing of a Camera related stage step action\r\n */\r\nexport type CameraStageAction = (camera: Camera) => void;\r\n\r\n/**\r\n * Strong typing of a Camera Frame buffer related stage step action\r\n */\r\nexport type CameraStageFrameBufferAction = (camera: Camera) => boolean;\r\n\r\n/**\r\n * Strong typing of a Render Target related stage step action\r\n */\r\nexport type RenderTargetStageAction = (renderTarget: RenderTargetTexture, faceIndex?: number, layer?: number) => void;\r\n\r\n/**\r\n * Strong typing of a RenderingGroup related stage step action\r\n */\r\nexport type RenderingGroupStageAction = (renderingGroupId: number) => void;\r\n\r\n/**\r\n * Strong typing of a Mesh Render related stage step action\r\n */\r\nexport type RenderingMeshStageAction = (mesh: Mesh, subMesh: SubMesh, batch: any, effect: Nullable<Effect>) => void;\r\n\r\n/**\r\n * Strong typing of a simple stage step action\r\n */\r\nexport type SimpleStageAction = () => void;\r\n\r\n/**\r\n * Strong typing of a render target action.\r\n */\r\nexport type RenderTargetsStageAction = (renderTargets: SmartArrayNoDuplicate<RenderTargetTexture>) => void;\r\n\r\n/**\r\n * Strong typing of a pointer move action.\r\n */\r\nexport type PointerMoveStageAction = (\r\n unTranslatedPointerX: number,\r\n unTranslatedPointerY: number,\r\n pickResult: Nullable<PickingInfo>,\r\n isMeshPicked: boolean,\r\n element: Nullable<HTMLElement>\r\n) => Nullable<PickingInfo>;\r\n\r\n/**\r\n * Strong typing of a pointer up/down action.\r\n */\r\nexport type PointerUpDownStageAction = (\r\n unTranslatedPointerX: number,\r\n unTranslatedPointerY: number,\r\n pickResult: Nullable<PickingInfo>,\r\n evt: IPointerEvent,\r\n doubleClick: boolean\r\n) => Nullable<PickingInfo>;\r\n\r\n/**\r\n * Representation of a stage in the scene (Basically a list of ordered steps)\r\n * @internal\r\n */\r\nexport class Stage<T extends Function> extends Array<{ index: number; component: ISceneComponent; action: T }> {\r\n /**\r\n * Hide ctor from the rest of the world.\r\n * @param items The items to add.\r\n */\r\n private constructor(items?: { index: number; component: ISceneComponent; action: T }[]) {\r\n super(...(<any>items));\r\n }\r\n\r\n /**\r\n * Creates a new Stage.\r\n * @returns A new instance of a Stage\r\n */\r\n static Create<T extends Function>(): Stage<T> {\r\n return Object.create(Stage.prototype) as Stage<T>;\r\n }\r\n\r\n /**\r\n * Registers a step in an ordered way in the targeted stage.\r\n * @param index Defines the position to register the step in\r\n * @param component Defines the component attached to the step\r\n * @param action Defines the action to launch during the step\r\n */\r\n public registerStep(index: number, component: ISceneComponent, action: T): void {\r\n let i = 0;\r\n let maxIndex = Number.MAX_VALUE;\r\n for (; i < this.length; i++) {\r\n const step = this[i];\r\n maxIndex = step.index;\r\n if (index < maxIndex) {\r\n break;\r\n }\r\n }\r\n this.splice(i, 0, { index, component, action: action.bind(component) });\r\n }\r\n\r\n /**\r\n * Clears all the steps from the stage.\r\n */\r\n public clear(): void {\r\n this.length = 0;\r\n }\r\n}\r\n"]}