@babylonjs/core 6.14.2 → 6.16.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 (1070) hide show
  1. package/Actions/actionManager.js +8 -3
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Behaviors/Cameras/framingBehavior.d.ts +2 -1
  4. package/Behaviors/Cameras/framingBehavior.js +3 -1
  5. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  6. package/Bones/skeleton.js +1 -0
  7. package/Bones/skeleton.js.map +1 -1
  8. package/Compute/computeEffect.js +1 -1
  9. package/Compute/computeEffect.js.map +1 -1
  10. package/{Materials/Node/nodeMaterialDecorator.d.ts → Decorators/nodeDecorator.d.ts} +6 -7
  11. package/{Materials/Node/nodeMaterialDecorator.js → Decorators/nodeDecorator.js} +3 -3
  12. package/Decorators/nodeDecorator.js.map +1 -0
  13. package/Engines/Processors/shaderCodeNode.js +1 -1
  14. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  15. package/Engines/WebGL/webGL2ShaderProcessors.js +2 -1
  16. package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
  17. package/Engines/WebGPU/webgpuShaderProcessor.js +3 -0
  18. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  19. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +11 -10
  20. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  21. package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
  22. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  23. package/Engines/nativeEngine.js +5 -4
  24. package/Engines/nativeEngine.js.map +1 -1
  25. package/Engines/thinEngine.d.ts +2 -0
  26. package/Engines/thinEngine.js +35 -4
  27. package/Engines/thinEngine.js.map +1 -1
  28. package/Engines/webgpuEngine.js +12 -2
  29. package/Engines/webgpuEngine.js.map +1 -1
  30. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.d.ts +34 -0
  31. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js +29 -0
  32. package/FlowGraph/Blocks/Data/flowGraphBinaryOpBlocks.js.map +1 -0
  33. package/FlowGraph/Blocks/Data/index.d.ts +1 -0
  34. package/FlowGraph/Blocks/Data/index.js +2 -0
  35. package/FlowGraph/Blocks/Data/index.js.map +1 -0
  36. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +23 -0
  37. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js +51 -0
  38. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -0
  39. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +20 -0
  40. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +29 -0
  41. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -0
  42. package/FlowGraph/Blocks/Event/index.d.ts +2 -0
  43. package/FlowGraph/Blocks/Event/index.js +3 -0
  44. package/FlowGraph/Blocks/Event/index.js.map +1 -0
  45. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.d.ts +43 -0
  46. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js +40 -0
  47. package/FlowGraph/Blocks/Execution/flowGraphForLoopBlock.js.map +1 -0
  48. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.d.ts +18 -0
  49. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +21 -0
  50. package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +1 -0
  51. package/FlowGraph/Blocks/Execution/index.d.ts +2 -0
  52. package/FlowGraph/Blocks/Execution/index.js +3 -0
  53. package/FlowGraph/Blocks/Execution/index.js.map +1 -0
  54. package/FlowGraph/Blocks/index.d.ts +3 -0
  55. package/FlowGraph/Blocks/index.js +5 -0
  56. package/FlowGraph/Blocks/index.js.map +1 -0
  57. package/FlowGraph/flowGraph.d.ts +34 -0
  58. package/FlowGraph/flowGraph.js +54 -0
  59. package/FlowGraph/flowGraph.js.map +1 -0
  60. package/FlowGraph/flowGraphBlock.d.ts +33 -0
  61. package/FlowGraph/flowGraphBlock.js +39 -0
  62. package/FlowGraph/flowGraphBlock.js.map +1 -0
  63. package/FlowGraph/flowGraphConnection.d.ts +38 -0
  64. package/FlowGraph/flowGraphConnection.js +40 -0
  65. package/FlowGraph/flowGraphConnection.js.map +1 -0
  66. package/FlowGraph/flowGraphDataConnection.d.ts +15 -0
  67. package/FlowGraph/flowGraphDataConnection.js +30 -0
  68. package/FlowGraph/flowGraphDataConnection.js.map +1 -0
  69. package/FlowGraph/flowGraphEventBlock.d.ts +20 -0
  70. package/FlowGraph/flowGraphEventBlock.js +15 -0
  71. package/FlowGraph/flowGraphEventBlock.js.map +1 -0
  72. package/FlowGraph/flowGraphExecutionBlock.d.ts +24 -0
  73. package/FlowGraph/flowGraphExecutionBlock.js +27 -0
  74. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -0
  75. package/FlowGraph/flowGraphSignalConnection.d.ts +14 -0
  76. package/FlowGraph/flowGraphSignalConnection.js +22 -0
  77. package/FlowGraph/flowGraphSignalConnection.js.map +1 -0
  78. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +7 -0
  79. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +8 -0
  80. package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -0
  81. package/FlowGraph/index.d.ts +6 -0
  82. package/FlowGraph/index.js +8 -0
  83. package/FlowGraph/index.js.map +1 -0
  84. package/Gizmos/lightGizmo.d.ts +5 -0
  85. package/Gizmos/lightGizmo.js +21 -7
  86. package/Gizmos/lightGizmo.js.map +1 -1
  87. package/Gizmos/planeRotationGizmo.d.ts +6 -0
  88. package/Gizmos/planeRotationGizmo.js +5 -1
  89. package/Gizmos/planeRotationGizmo.js.map +1 -1
  90. package/Gizmos/rotationGizmo.d.ts +8 -0
  91. package/Gizmos/rotationGizmo.js +15 -0
  92. package/Gizmos/rotationGizmo.js.map +1 -1
  93. package/Layers/layer.js +1 -1
  94. package/Layers/layer.js.map +1 -1
  95. package/Lights/Shadows/cascadedShadowGenerator.d.ts +2 -1
  96. package/Lights/Shadows/cascadedShadowGenerator.js +4 -3
  97. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  98. package/Lights/Shadows/shadowGenerator.d.ts +3 -1
  99. package/Lights/Shadows/shadowGenerator.js +4 -2
  100. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  101. package/Lights/directionalLight.d.ts +1 -1
  102. package/Lights/directionalLight.js.map +1 -1
  103. package/Lights/hemisphericLight.d.ts +1 -1
  104. package/Lights/hemisphericLight.js.map +1 -1
  105. package/Lights/light.d.ts +1 -1
  106. package/Lights/light.js.map +1 -1
  107. package/Lights/pointLight.d.ts +1 -1
  108. package/Lights/pointLight.js.map +1 -1
  109. package/Lights/spotLight.d.ts +1 -1
  110. package/Lights/spotLight.js.map +1 -1
  111. package/Loading/sceneLoader.js +2 -0
  112. package/Loading/sceneLoader.js.map +1 -1
  113. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +13 -13
  114. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  115. package/Materials/Node/Blocks/Dual/fogBlock.js +6 -6
  116. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
  118. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Dual/lightBlock.js +16 -16
  120. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  121. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +27 -27
  122. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
  124. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +8 -8
  126. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  127. package/Materials/Node/Blocks/Dual/textureBlock.js +28 -28
  128. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -5
  130. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  131. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
  132. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  133. package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
  134. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
  136. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  137. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +1 -1
  138. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  139. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +15 -15
  140. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +1 -1
  142. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  143. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +6 -6
  144. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  145. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +13 -13
  146. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +13 -13
  148. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  149. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
  150. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  151. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -5
  152. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +7 -7
  154. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  155. package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -3
  156. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  157. package/Materials/Node/Blocks/Input/inputBlock.js +11 -11
  158. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +6 -6
  160. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  161. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +9 -9
  162. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  163. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -1
  164. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +47 -47
  166. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  167. package/Materials/Node/Blocks/PBR/reflectionBlock.js +9 -9
  168. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  169. package/Materials/Node/Blocks/PBR/refractionBlock.js +14 -14
  170. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/PBR/sheenBlock.js +4 -4
  172. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
  174. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +8 -8
  176. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Teleport/index.d.ts +2 -0
  178. package/Materials/Node/Blocks/Teleport/index.js +3 -0
  179. package/Materials/Node/Blocks/Teleport/index.js.map +1 -0
  180. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +42 -0
  181. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +83 -0
  182. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
  183. package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +59 -0
  184. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +122 -0
  185. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
  186. package/Materials/Node/Blocks/Vertex/bonesBlock.js +5 -5
  187. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/Vertex/instancesBlock.js +11 -11
  189. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +11 -11
  191. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +39 -39
  193. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +3 -3
  195. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/addBlock.js +1 -1
  197. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/arcTan2Block.js +1 -1
  199. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  200. package/Materials/Node/Blocks/clampBlock.js +4 -4
  201. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/cloudBlock.js +7 -7
  203. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
  205. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  207. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/conditionalBlock.js +10 -10
  209. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/crossBlock.js +1 -1
  211. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/curveBlock.js +5 -5
  213. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/customBlock.js +4 -4
  215. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/desaturateBlock.js +4 -4
  217. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/distanceBlock.js +1 -1
  219. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/divideBlock.js +1 -1
  221. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/dotBlock.js +1 -1
  223. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/elbowBlock.js +1 -1
  225. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/fresnelBlock.js +1 -1
  227. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/gradientBlock.js +8 -8
  229. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/index.d.ts +1 -0
  231. package/Materials/Node/Blocks/index.js +1 -0
  232. package/Materials/Node/Blocks/index.js.map +1 -1
  233. package/Materials/Node/Blocks/lengthBlock.js +1 -1
  234. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/lerpBlock.js +1 -1
  236. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
  238. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/matrixDeterminantBlock.js +1 -1
  240. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/matrixTransposeBlock.js +1 -1
  242. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/maxBlock.js +1 -1
  244. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +7 -7
  246. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/minBlock.js +1 -1
  248. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/modBlock.js +1 -1
  250. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/multiplyBlock.js +1 -1
  252. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/nLerpBlock.js +1 -1
  254. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/negateBlock.js +1 -1
  256. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/normalBlendBlock.js +6 -6
  258. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/normalizeBlock.js +1 -1
  260. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
  262. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/posterizeBlock.js +1 -1
  264. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/powBlock.js +1 -1
  266. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/randomNumberBlock.js +1 -1
  268. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/reciprocalBlock.js +2 -2
  270. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/reflectBlock.js +1 -1
  272. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  273. package/Materials/Node/Blocks/refractBlock.js +1 -1
  274. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  275. package/Materials/Node/Blocks/remapBlock.js +4 -4
  276. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  277. package/Materials/Node/Blocks/replaceColorBlock.js +6 -6
  278. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  279. package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
  280. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  281. package/Materials/Node/Blocks/scaleBlock.js +1 -1
  282. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  283. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +41 -41
  284. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  285. package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
  286. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  287. package/Materials/Node/Blocks/stepBlock.js +1 -1
  288. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  289. package/Materials/Node/Blocks/subtractBlock.js +1 -1
  290. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  291. package/Materials/Node/Blocks/transformBlock.js +13 -14
  292. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  293. package/Materials/Node/Blocks/triPlanarBlock.js +17 -17
  294. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  295. package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
  296. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  297. package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
  298. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  299. package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
  300. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  301. package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
  302. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  303. package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
  304. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  305. package/Materials/Node/Blocks/waveBlock.js +3 -4
  306. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  307. package/Materials/Node/Blocks/worleyNoise3DBlock.js +155 -155
  308. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  309. package/Materials/Node/index.d.ts +1 -1
  310. package/Materials/Node/index.js +1 -1
  311. package/Materials/Node/index.js.map +1 -1
  312. package/Materials/Node/nodeMaterial.d.ts +1 -0
  313. package/Materials/Node/nodeMaterial.js +50 -15
  314. package/Materials/Node/nodeMaterial.js.map +1 -1
  315. package/Materials/Node/nodeMaterialBlock.d.ts +14 -2
  316. package/Materials/Node/nodeMaterialBlock.js +34 -11
  317. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  318. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -1
  319. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  320. package/Materials/Node/nodeMaterialBuildState.js +36 -36
  321. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  322. package/Materials/Node/nodeMaterialBuildStateSharedData.js +4 -4
  323. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  324. package/Materials/Textures/Filtering/hdrFiltering.js +1 -0
  325. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  326. package/Materials/effect.js +1 -1
  327. package/Materials/effect.js.map +1 -1
  328. package/Materials/effectRenderer.d.ts +4 -0
  329. package/Materials/effectRenderer.js +8 -2
  330. package/Materials/effectRenderer.js.map +1 -1
  331. package/Materials/greasedLinePluginMaterial.d.ts +4 -0
  332. package/Materials/greasedLinePluginMaterial.js +12 -1
  333. package/Materials/greasedLinePluginMaterial.js.map +1 -1
  334. package/Materials/materialPluginManager.js +5 -5
  335. package/Materials/materialPluginManager.js.map +1 -1
  336. package/Materials/meshDebugPluginMaterial.d.ts +4 -15
  337. package/Materials/meshDebugPluginMaterial.js +8 -29
  338. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  339. package/Materials/shadowDepthWrapper.js +5 -5
  340. package/Materials/shadowDepthWrapper.js.map +1 -1
  341. package/Meshes/Builders/boxBuilder.d.ts +31 -0
  342. package/Meshes/Builders/boxBuilder.js +65 -1
  343. package/Meshes/Builders/boxBuilder.js.map +1 -1
  344. package/Meshes/Builders/capsuleBuilder.js +3 -3
  345. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  346. package/Meshes/Builders/cylinderBuilder.js +2 -2
  347. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  348. package/Meshes/Builders/groundBuilder.js +2 -2
  349. package/Meshes/Builders/groundBuilder.js.map +1 -1
  350. package/Meshes/Builders/icoSphereBuilder.js +1 -1
  351. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  352. package/Meshes/Builders/linesBuilder.d.ts +1 -1
  353. package/Meshes/Builders/linesBuilder.js +1 -1
  354. package/Meshes/Builders/linesBuilder.js.map +1 -1
  355. package/Meshes/Builders/sphereBuilder.js +1 -1
  356. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  357. package/Meshes/Builders/torusBuilder.js +1 -1
  358. package/Meshes/Builders/torusBuilder.js.map +1 -1
  359. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +85 -0
  360. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +210 -0
  361. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -0
  362. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +68 -0
  363. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +186 -0
  364. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -0
  365. package/Meshes/Node/Blocks/IntFloatConverterBlock.d.ts +35 -0
  366. package/Meshes/Node/Blocks/IntFloatConverterBlock.js +81 -0
  367. package/Meshes/Node/Blocks/IntFloatConverterBlock.js.map +1 -0
  368. package/Meshes/Node/Blocks/Matrices/alignBlock.d.ts +31 -0
  369. package/Meshes/Node/Blocks/Matrices/alignBlock.js +58 -0
  370. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -0
  371. package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +28 -0
  372. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js +53 -0
  373. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -0
  374. package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +28 -0
  375. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js +53 -0
  376. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -0
  377. package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +28 -0
  378. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js +53 -0
  379. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -0
  380. package/Meshes/Node/Blocks/Matrices/scalingBlock.d.ts +28 -0
  381. package/Meshes/Node/Blocks/Matrices/scalingBlock.js +54 -0
  382. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -0
  383. package/Meshes/Node/Blocks/Matrices/translationBlock.d.ts +28 -0
  384. package/Meshes/Node/Blocks/Matrices/translationBlock.js +54 -0
  385. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -0
  386. package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +44 -0
  387. package/Meshes/Node/Blocks/Set/setColorsBlock.js +91 -0
  388. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -0
  389. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.d.ts +36 -0
  390. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js +84 -0
  391. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -0
  392. package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +44 -0
  393. package/Meshes/Node/Blocks/Set/setNormalsBlock.js +91 -0
  394. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -0
  395. package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +44 -0
  396. package/Meshes/Node/Blocks/Set/setPositionsBlock.js +82 -0
  397. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -0
  398. package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +44 -0
  399. package/Meshes/Node/Blocks/Set/setTangentsBlock.js +91 -0
  400. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -0
  401. package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +55 -0
  402. package/Meshes/Node/Blocks/Set/setUVsBlock.js +145 -0
  403. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -0
  404. package/Meshes/Node/Blocks/Sources/boxBlock.d.ts +68 -0
  405. package/Meshes/Node/Blocks/Sources/boxBlock.js +175 -0
  406. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -0
  407. package/Meshes/Node/Blocks/Sources/capsuleBlock.d.ts +52 -0
  408. package/Meshes/Node/Blocks/Sources/capsuleBlock.js +117 -0
  409. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -0
  410. package/Meshes/Node/Blocks/Sources/cylinderBlock.d.ts +64 -0
  411. package/Meshes/Node/Blocks/Sources/cylinderBlock.js +143 -0
  412. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -0
  413. package/Meshes/Node/Blocks/Sources/discBlock.d.ts +48 -0
  414. package/Meshes/Node/Blocks/Sources/discBlock.js +104 -0
  415. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -0
  416. package/Meshes/Node/Blocks/Sources/gridBlock.d.ts +56 -0
  417. package/Meshes/Node/Blocks/Sources/gridBlock.js +125 -0
  418. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -0
  419. package/Meshes/Node/Blocks/Sources/icoSphereBlock.d.ts +56 -0
  420. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js +120 -0
  421. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -0
  422. package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +38 -0
  423. package/Meshes/Node/Blocks/Sources/meshBlock.js +78 -0
  424. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -0
  425. package/Meshes/Node/Blocks/Sources/planeBlock.d.ts +48 -0
  426. package/Meshes/Node/Blocks/Sources/planeBlock.js +118 -0
  427. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -0
  428. package/Meshes/Node/Blocks/Sources/sphereBlock.d.ts +64 -0
  429. package/Meshes/Node/Blocks/Sources/sphereBlock.js +136 -0
  430. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -0
  431. package/Meshes/Node/Blocks/Sources/torusBlock.d.ts +48 -0
  432. package/Meshes/Node/Blocks/Sources/torusBlock.js +104 -0
  433. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -0
  434. package/Meshes/Node/Blocks/Teleport/teleportInBlock.d.ts +37 -0
  435. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js +75 -0
  436. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
  437. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.d.ts +50 -0
  438. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js +105 -0
  439. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
  440. package/Meshes/Node/Blocks/computeNormalsBlock.d.ts +26 -0
  441. package/Meshes/Node/Blocks/computeNormalsBlock.js +49 -0
  442. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -0
  443. package/Meshes/Node/Blocks/conditionBlock.d.ts +72 -0
  444. package/Meshes/Node/Blocks/conditionBlock.js +174 -0
  445. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -0
  446. package/Meshes/Node/Blocks/debugBlock.d.ts +34 -0
  447. package/Meshes/Node/Blocks/debugBlock.js +63 -0
  448. package/Meshes/Node/Blocks/debugBlock.js.map +1 -0
  449. package/Meshes/Node/Blocks/geometryElbowBlock.d.ts +31 -0
  450. package/Meshes/Node/Blocks/geometryElbowBlock.js +53 -0
  451. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -0
  452. package/Meshes/Node/Blocks/geometryInputBlock.d.ts +71 -0
  453. package/Meshes/Node/Blocks/geometryInputBlock.js +218 -0
  454. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -0
  455. package/Meshes/Node/Blocks/geometryOutputBlock.d.ts +30 -0
  456. package/Meshes/Node/Blocks/geometryOutputBlock.js +42 -0
  457. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -0
  458. package/Meshes/Node/Blocks/geometryTransformBlock.d.ts +53 -0
  459. package/Meshes/Node/Blocks/geometryTransformBlock.js +134 -0
  460. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -0
  461. package/Meshes/Node/Blocks/geometryTrigonometryBlock.d.ts +77 -0
  462. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js +248 -0
  463. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -0
  464. package/Meshes/Node/Blocks/mapRangeBlock.d.ts +42 -0
  465. package/Meshes/Node/Blocks/mapRangeBlock.js +84 -0
  466. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -0
  467. package/Meshes/Node/Blocks/mathBlock.d.ts +58 -0
  468. package/Meshes/Node/Blocks/mathBlock.js +233 -0
  469. package/Meshes/Node/Blocks/mathBlock.js.map +1 -0
  470. package/Meshes/Node/Blocks/mergeGeometryBlock.d.ts +55 -0
  471. package/Meshes/Node/Blocks/mergeGeometryBlock.js +123 -0
  472. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -0
  473. package/Meshes/Node/Blocks/noiseBlock.d.ts +49 -0
  474. package/Meshes/Node/Blocks/noiseBlock.js +149 -0
  475. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -0
  476. package/Meshes/Node/Blocks/normalizeVectorBlock.d.ts +27 -0
  477. package/Meshes/Node/Blocks/normalizeVectorBlock.js +51 -0
  478. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -0
  479. package/Meshes/Node/Blocks/randomBlock.d.ts +31 -0
  480. package/Meshes/Node/Blocks/randomBlock.js +99 -0
  481. package/Meshes/Node/Blocks/randomBlock.js.map +1 -0
  482. package/Meshes/Node/Blocks/vectorConverterBlock.d.ts +84 -0
  483. package/Meshes/Node/Blocks/vectorConverterBlock.js +238 -0
  484. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -0
  485. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.d.ts +27 -0
  486. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js +29 -0
  487. package/Meshes/Node/Enums/nodeGeometryConnectionPointTypes.js.map +1 -0
  488. package/Meshes/Node/Enums/nodeGeometryContextualSources.d.ts +33 -0
  489. package/Meshes/Node/Enums/nodeGeometryContextualSources.js +35 -0
  490. package/Meshes/Node/Enums/nodeGeometryContextualSources.js.map +1 -0
  491. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.d.ts +25 -0
  492. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js +2 -0
  493. package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js.map +1 -0
  494. package/Meshes/Node/index.d.ts +49 -0
  495. package/Meshes/Node/index.js +50 -0
  496. package/Meshes/Node/index.js.map +1 -0
  497. package/Meshes/Node/nodeGeometry.d.ts +180 -0
  498. package/Meshes/Node/nodeGeometry.js +529 -0
  499. package/Meshes/Node/nodeGeometry.js.map +1 -0
  500. package/Meshes/Node/nodeGeometryBlock.d.ts +166 -0
  501. package/Meshes/Node/nodeGeometryBlock.js +432 -0
  502. package/Meshes/Node/nodeGeometryBlock.js.map +1 -0
  503. package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +176 -0
  504. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js +305 -0
  505. package/Meshes/Node/nodeGeometryBlockConnectionPoint.js.map +1 -0
  506. package/Meshes/Node/nodeGeometryBuildState.d.ts +57 -0
  507. package/Meshes/Node/nodeGeometryBuildState.js +178 -0
  508. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -0
  509. package/Meshes/index.d.ts +1 -0
  510. package/Meshes/index.js +1 -0
  511. package/Meshes/index.js.map +1 -1
  512. package/Meshes/mesh.vertexData.d.ts +37 -2
  513. package/Meshes/mesh.vertexData.js +425 -95
  514. package/Meshes/mesh.vertexData.js.map +1 -1
  515. package/Meshes/meshUVSpaceRenderer.js +1 -0
  516. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  517. package/Particles/IGPUParticleSystemPlatform.d.ts +1 -0
  518. package/Particles/IGPUParticleSystemPlatform.js.map +1 -1
  519. package/Particles/computeShaderParticleSystem.d.ts +1 -0
  520. package/Particles/computeShaderParticleSystem.js +5 -0
  521. package/Particles/computeShaderParticleSystem.js.map +1 -1
  522. package/Particles/gpuParticleSystem.js +11 -1
  523. package/Particles/gpuParticleSystem.js.map +1 -1
  524. package/Particles/webgl2ParticleSystem.d.ts +1 -0
  525. package/Particles/webgl2ParticleSystem.js +5 -0
  526. package/Particles/webgl2ParticleSystem.js.map +1 -1
  527. package/Physics/v2/IPhysicsEnginePlugin.d.ts +20 -2
  528. package/Physics/v2/IPhysicsEnginePlugin.js +8 -0
  529. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  530. package/Physics/v2/Plugins/havokPlugin.d.ts +27 -2
  531. package/Physics/v2/Plugins/havokPlugin.js +98 -11
  532. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  533. package/Physics/v2/physicsAggregate.d.ts +4 -0
  534. package/Physics/v2/physicsAggregate.js +3 -0
  535. package/Physics/v2/physicsAggregate.js.map +1 -1
  536. package/Physics/v2/physicsBody.d.ts +7 -0
  537. package/Physics/v2/physicsBody.js +10 -0
  538. package/Physics/v2/physicsBody.js.map +1 -1
  539. package/Physics/v2/physicsShape.d.ts +3 -0
  540. package/Physics/v2/physicsShape.js +11 -0
  541. package/Physics/v2/physicsShape.js.map +1 -1
  542. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +6 -4
  543. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  544. package/PostProcesses/blurPostProcess.js +5 -5
  545. package/PostProcesses/blurPostProcess.js.map +1 -1
  546. package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -1
  547. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  548. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  549. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  550. package/Rendering/fluidRenderer/fluidRenderer.d.ts +0 -1
  551. package/Rendering/fluidRenderer/fluidRenderer.js +0 -1
  552. package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
  553. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +16 -8
  554. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
  555. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +9 -4
  556. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  557. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +8 -4
  558. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
  559. package/Shaders/ShadersInclude/bakedVertexAnimation.js +20 -10
  560. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  561. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
  562. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  563. package/Shaders/ShadersInclude/bayerDitherFunctions.js +9 -1
  564. package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
  565. package/Shaders/ShadersInclude/bonesDeclaration.js +13 -6
  566. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  567. package/Shaders/ShadersInclude/bonesVertex.js +36 -18
  568. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  569. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +2 -1
  570. package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
  571. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +6 -3
  572. package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
  573. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +4 -2
  574. package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
  575. package/Shaders/ShadersInclude/bumpFragment.js +40 -20
  576. package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
  577. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +11 -1
  578. package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
  579. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +57 -7
  580. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  581. package/Shaders/ShadersInclude/bumpVertex.js +2 -1
  582. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  583. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +2 -1
  584. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  585. package/Shaders/ShadersInclude/clipPlaneFragment.js +20 -7
  586. package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
  587. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
  588. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  589. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +12 -6
  590. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
  591. package/Shaders/ShadersInclude/clipPlaneVertex.js +12 -6
  592. package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
  593. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
  594. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  595. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +12 -6
  596. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
  597. package/Shaders/ShadersInclude/decalFragment.js +6 -3
  598. package/Shaders/ShadersInclude/decalFragment.js.map +1 -1
  599. package/Shaders/ShadersInclude/decalFragmentDeclaration.js +2 -1
  600. package/Shaders/ShadersInclude/decalFragmentDeclaration.js.map +1 -1
  601. package/Shaders/ShadersInclude/decalVertexDeclaration.js +2 -1
  602. package/Shaders/ShadersInclude/decalVertexDeclaration.js.map +1 -1
  603. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +48 -24
  604. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  605. package/Shaders/ShadersInclude/defaultUboDeclaration.js +5 -2
  606. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  607. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +22 -11
  608. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  609. package/Shaders/ShadersInclude/depthPrePass.js +2 -1
  610. package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
  611. package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
  612. package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
  613. package/Shaders/ShadersInclude/fibonacci.js +4 -1
  614. package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
  615. package/Shaders/ShadersInclude/fogFragment.js +6 -3
  616. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  617. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +9 -1
  618. package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
  619. package/Shaders/ShadersInclude/fogVertex.js +2 -1
  620. package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
  621. package/Shaders/ShadersInclude/fogVertexDeclaration.js +2 -1
  622. package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
  623. package/Shaders/ShadersInclude/fresnelFunction.js +3 -1
  624. package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
  625. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
  626. package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
  627. package/Shaders/ShadersInclude/harmonicsFunctions.js +20 -2
  628. package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
  629. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +48 -17
  630. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  631. package/Shaders/ShadersInclude/helperFunctions.js +98 -28
  632. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  633. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +2 -1
  634. package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
  635. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +18 -9
  636. package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
  637. package/Shaders/ShadersInclude/imageProcessingFunctions.js +71 -28
  638. package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  639. package/Shaders/ShadersInclude/importanceSampling.js +4 -1
  640. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  641. package/Shaders/ShadersInclude/instancesDeclaration.js +14 -7
  642. package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
  643. package/Shaders/ShadersInclude/instancesVertex.js +12 -6
  644. package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
  645. package/Shaders/ShadersInclude/kernelBlurFragment.js +9 -4
  646. package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
  647. package/Shaders/ShadersInclude/kernelBlurFragment2.js +8 -4
  648. package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
  649. package/Shaders/ShadersInclude/lightFragment.js +186 -93
  650. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  651. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +54 -22
  652. package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
  653. package/Shaders/ShadersInclude/lightUboDeclaration.js +51 -20
  654. package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
  655. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +18 -9
  656. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
  657. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +15 -7
  658. package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  659. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +48 -20
  660. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  661. package/Shaders/ShadersInclude/logDepthDeclaration.js +2 -1
  662. package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
  663. package/Shaders/ShadersInclude/logDepthFragment.js +2 -1
  664. package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
  665. package/Shaders/ShadersInclude/logDepthVertex.js +2 -1
  666. package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
  667. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +2 -1
  668. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
  669. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +2 -1
  670. package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
  671. package/Shaders/ShadersInclude/meshUboDeclaration.js +5 -2
  672. package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
  673. package/Shaders/ShadersInclude/meshVertexDeclaration.js +2 -1
  674. package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
  675. package/Shaders/ShadersInclude/morphTargetsVertex.js +16 -8
  676. package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
  677. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
  678. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  679. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
  680. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  681. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +7 -2
  682. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  683. package/Shaders/ShadersInclude/oitDeclaration.js +5 -2
  684. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  685. package/Shaders/ShadersInclude/oitFragment.js +24 -12
  686. package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
  687. package/Shaders/ShadersInclude/packingFunctions.js +4 -1
  688. package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
  689. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +118 -42
  690. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  691. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +49 -20
  692. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  693. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +25 -8
  694. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  695. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +26 -11
  696. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  697. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +32 -12
  698. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  699. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +194 -84
  700. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  701. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +12 -6
  702. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
  703. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +30 -14
  704. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
  705. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +56 -28
  706. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  707. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +18 -9
  708. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
  709. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +14 -7
  710. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
  711. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +8 -4
  712. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  713. package/Shaders/ShadersInclude/pbrBlockIridescence.js +36 -15
  714. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  715. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +8 -4
  716. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
  717. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +8 -4
  718. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  719. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +10 -5
  720. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
  721. package/Shaders/ShadersInclude/pbrBlockReflectance.js +12 -6
  722. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  723. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +8 -4
  724. package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
  725. package/Shaders/ShadersInclude/pbrBlockReflection.js +197 -77
  726. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  727. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +79 -36
  728. package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  729. package/Shaders/ShadersInclude/pbrBlockSheen.js +145 -60
  730. package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
  731. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +226 -100
  732. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  733. package/Shaders/ShadersInclude/pbrDebug.js +146 -67
  734. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  735. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +34 -8
  736. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
  737. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +53 -22
  738. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  739. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +12 -5
  740. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  741. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +88 -44
  742. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  743. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +10 -5
  744. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
  745. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +30 -15
  746. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  747. package/Shaders/ShadersInclude/pbrHelperFunctions.js +27 -8
  748. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  749. package/Shaders/ShadersInclude/pbrIBLFunctions.js +9 -4
  750. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  751. package/Shaders/ShadersInclude/pbrUboDeclaration.js +4 -2
  752. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  753. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +64 -32
  754. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  755. package/Shaders/ShadersInclude/pointCloudVertex.js +2 -1
  756. package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
  757. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +2 -1
  758. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
  759. package/Shaders/ShadersInclude/prePassVertex.js +24 -12
  760. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  761. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +4 -2
  762. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  763. package/Shaders/ShadersInclude/reflectionFunction.js +52 -17
  764. package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
  765. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +2 -1
  766. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
  767. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +4 -2
  768. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
  769. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +2 -1
  770. package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
  771. package/Shaders/ShadersInclude/samplerVertexImplementation.js +18 -6
  772. package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
  773. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +6 -3
  774. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
  775. package/Shaders/ShadersInclude/sceneUboDeclaration.js +6 -3
  776. package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  777. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +6 -3
  778. package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
  779. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +109 -24
  780. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  781. package/Shaders/ShadersInclude/shadowMapFragment.js +20 -10
  782. package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
  783. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +10 -5
  784. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
  785. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +2 -1
  786. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
  787. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +2 -1
  788. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
  789. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +8 -4
  790. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
  791. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +12 -6
  792. package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
  793. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +6 -3
  794. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
  795. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +311 -54
  796. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
  797. package/Shaders/ShadersInclude/shadowsVertex.js +14 -7
  798. package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
  799. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +2 -1
  800. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
  801. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +2 -1
  802. package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
  803. package/Shaders/ShadersInclude/uvVariableDeclaration.js +4 -2
  804. package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
  805. package/Shaders/ShadersInclude/vertexColorMixing.js +8 -4
  806. package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
  807. package/Shaders/anaglyph.fragment.js +4 -2
  808. package/Shaders/anaglyph.fragment.js.map +1 -1
  809. package/Shaders/background.fragment.js +133 -62
  810. package/Shaders/background.fragment.js.map +1 -1
  811. package/Shaders/background.vertex.js +63 -30
  812. package/Shaders/background.vertex.js.map +1 -1
  813. package/Shaders/blackAndWhite.fragment.js +5 -2
  814. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  815. package/Shaders/bloomMerge.fragment.js +5 -2
  816. package/Shaders/bloomMerge.fragment.js.map +1 -1
  817. package/Shaders/blur.fragment.js +6 -2
  818. package/Shaders/blur.fragment.js.map +1 -1
  819. package/Shaders/boundingBoxRenderer.fragment.js +4 -2
  820. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  821. package/Shaders/boundingBoxRenderer.vertex.js +12 -6
  822. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  823. package/Shaders/chromaticAberration.fragment.js +8 -2
  824. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  825. package/Shaders/circleOfConfusion.fragment.js +9 -4
  826. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  827. package/Shaders/clearQuad.fragment.js +2 -1
  828. package/Shaders/clearQuad.fragment.js.map +1 -1
  829. package/Shaders/clearQuad.vertex.js +11 -4
  830. package/Shaders/clearQuad.vertex.js.map +1 -1
  831. package/Shaders/color.fragment.js +10 -5
  832. package/Shaders/color.fragment.js.map +1 -1
  833. package/Shaders/color.vertex.js +18 -9
  834. package/Shaders/color.vertex.js.map +1 -1
  835. package/Shaders/colorCorrection.fragment.js +10 -2
  836. package/Shaders/colorCorrection.fragment.js.map +1 -1
  837. package/Shaders/convolution.fragment.js +23 -2
  838. package/Shaders/convolution.fragment.js.map +1 -1
  839. package/Shaders/copyTextureToTexture.fragment.js +12 -5
  840. package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
  841. package/Shaders/default.fragment.js +142 -71
  842. package/Shaders/default.fragment.js.map +1 -1
  843. package/Shaders/default.vertex.js +58 -29
  844. package/Shaders/default.vertex.js.map +1 -1
  845. package/Shaders/depth.fragment.js +24 -11
  846. package/Shaders/depth.fragment.js.map +1 -1
  847. package/Shaders/depth.vertex.js +35 -17
  848. package/Shaders/depth.vertex.js.map +1 -1
  849. package/Shaders/depthBoxBlur.fragment.js +6 -2
  850. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  851. package/Shaders/depthOfField.fragment.js +28 -3
  852. package/Shaders/depthOfField.fragment.js.map +1 -1
  853. package/Shaders/depthOfFieldMerge.fragment.js +17 -8
  854. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  855. package/Shaders/displayPass.fragment.js +4 -2
  856. package/Shaders/displayPass.fragment.js.map +1 -1
  857. package/Shaders/extractHighlights.fragment.js +4 -2
  858. package/Shaders/extractHighlights.fragment.js.map +1 -1
  859. package/Shaders/filter.fragment.js +4 -2
  860. package/Shaders/filter.fragment.js.map +1 -1
  861. package/Shaders/fluidRenderingBilateralBlur.fragment.js +4 -1
  862. package/Shaders/fluidRenderingBilateralBlur.fragment.js.map +1 -1
  863. package/Shaders/fluidRenderingParticleDepth.fragment.js +22 -11
  864. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  865. package/Shaders/fluidRenderingParticleDepth.vertex.js +10 -5
  866. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  867. package/Shaders/fluidRenderingParticleDiffuse.fragment.js +2 -1
  868. package/Shaders/fluidRenderingParticleDiffuse.fragment.js.map +1 -1
  869. package/Shaders/fluidRenderingParticleDiffuse.vertex.js +0 -1
  870. package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
  871. package/Shaders/fluidRenderingParticleThickness.fragment.js +2 -1
  872. package/Shaders/fluidRenderingParticleThickness.fragment.js.map +1 -1
  873. package/Shaders/fluidRenderingParticleThickness.vertex.js +2 -1
  874. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  875. package/Shaders/fluidRenderingRender.fragment.js +76 -35
  876. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  877. package/Shaders/fluidRenderingStandardBlur.fragment.js +4 -1
  878. package/Shaders/fluidRenderingStandardBlur.fragment.js.map +1 -1
  879. package/Shaders/fxaa.fragment.js +47 -6
  880. package/Shaders/fxaa.fragment.js.map +1 -1
  881. package/Shaders/fxaa.vertex.js +6 -3
  882. package/Shaders/fxaa.vertex.js.map +1 -1
  883. package/Shaders/geometry.fragment.js +85 -42
  884. package/Shaders/geometry.fragment.js.map +1 -1
  885. package/Shaders/geometry.vertex.js +91 -45
  886. package/Shaders/geometry.vertex.js.map +1 -1
  887. package/Shaders/glowBlurPostProcess.fragment.js +7 -2
  888. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  889. package/Shaders/glowMapGeneration.fragment.js +46 -22
  890. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  891. package/Shaders/glowMapGeneration.vertex.js +41 -20
  892. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  893. package/Shaders/glowMapMerge.fragment.js +20 -10
  894. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  895. package/Shaders/glowMapMerge.vertex.js +6 -3
  896. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  897. package/Shaders/gpuRenderParticles.fragment.js +16 -8
  898. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  899. package/Shaders/gpuRenderParticles.vertex.js +77 -39
  900. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  901. package/Shaders/gpuUpdateParticles.fragment.js +2 -1
  902. package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
  903. package/Shaders/gpuUpdateParticles.vertex.js +206 -100
  904. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  905. package/Shaders/grain.fragment.js +5 -2
  906. package/Shaders/grain.fragment.js.map +1 -1
  907. package/Shaders/hdrFiltering.fragment.js +1 -1
  908. package/Shaders/hdrFiltering.fragment.js.map +1 -1
  909. package/Shaders/hdrFiltering.vertex.js +6 -3
  910. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  911. package/Shaders/highlights.fragment.js +4 -2
  912. package/Shaders/highlights.fragment.js.map +1 -1
  913. package/Shaders/imageProcessing.fragment.js +12 -6
  914. package/Shaders/imageProcessing.fragment.js.map +1 -1
  915. package/Shaders/kernelBlur.fragment.js +24 -11
  916. package/Shaders/kernelBlur.fragment.js.map +1 -1
  917. package/Shaders/kernelBlur.vertex.js +10 -5
  918. package/Shaders/kernelBlur.vertex.js.map +1 -1
  919. package/Shaders/layer.fragment.js +13 -6
  920. package/Shaders/layer.fragment.js.map +1 -1
  921. package/Shaders/layer.vertex.js +6 -3
  922. package/Shaders/layer.vertex.js.map +1 -1
  923. package/Shaders/lensFlare.fragment.js +6 -3
  924. package/Shaders/lensFlare.fragment.js.map +1 -1
  925. package/Shaders/lensFlare.vertex.js +6 -3
  926. package/Shaders/lensFlare.vertex.js.map +1 -1
  927. package/Shaders/lensHighlights.fragment.js +14 -5
  928. package/Shaders/lensHighlights.fragment.js.map +1 -1
  929. package/Shaders/line.fragment.js +6 -3
  930. package/Shaders/line.fragment.js.map +1 -1
  931. package/Shaders/line.vertex.js +8 -4
  932. package/Shaders/line.vertex.js.map +1 -1
  933. package/Shaders/meshUVSpaceRenderer.fragment.js +3 -1
  934. package/Shaders/meshUVSpaceRenderer.fragment.js.map +1 -1
  935. package/Shaders/meshUVSpaceRenderer.vertex.js +14 -7
  936. package/Shaders/meshUVSpaceRenderer.vertex.js.map +1 -1
  937. package/Shaders/minmaxRedux.fragment.js +21 -8
  938. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  939. package/Shaders/motionBlur.fragment.js +35 -14
  940. package/Shaders/motionBlur.fragment.js.map +1 -1
  941. package/Shaders/noise.fragment.js +13 -2
  942. package/Shaders/noise.fragment.js.map +1 -1
  943. package/Shaders/oitBackBlend.fragment.js +2 -1
  944. package/Shaders/oitBackBlend.fragment.js.map +1 -1
  945. package/Shaders/oitFinal.fragment.js +4 -1
  946. package/Shaders/oitFinal.fragment.js.map +1 -1
  947. package/Shaders/outline.fragment.js +11 -5
  948. package/Shaders/outline.fragment.js.map +1 -1
  949. package/Shaders/outline.vertex.js +27 -13
  950. package/Shaders/outline.vertex.js.map +1 -1
  951. package/Shaders/particles.fragment.js +18 -9
  952. package/Shaders/particles.fragment.js.map +1 -1
  953. package/Shaders/particles.vertex.js +58 -29
  954. package/Shaders/particles.vertex.js.map +1 -1
  955. package/Shaders/pass.fragment.js +4 -2
  956. package/Shaders/pass.fragment.js.map +1 -1
  957. package/Shaders/passCube.fragment.js +17 -8
  958. package/Shaders/passCube.fragment.js.map +1 -1
  959. package/Shaders/pbr.fragment.js +389 -154
  960. package/Shaders/pbr.fragment.js.map +1 -1
  961. package/Shaders/pbr.vertex.js +70 -35
  962. package/Shaders/pbr.vertex.js.map +1 -1
  963. package/Shaders/postprocess.vertex.js +6 -3
  964. package/Shaders/postprocess.vertex.js.map +1 -1
  965. package/Shaders/procedural.vertex.js +6 -3
  966. package/Shaders/procedural.vertex.js.map +1 -1
  967. package/Shaders/refraction.fragment.js +1 -1
  968. package/Shaders/refraction.fragment.js.map +1 -1
  969. package/Shaders/rgbdDecode.fragment.js +4 -2
  970. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  971. package/Shaders/rgbdEncode.fragment.js +4 -2
  972. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  973. package/Shaders/screenSpaceCurvature.fragment.js +11 -3
  974. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  975. package/Shaders/screenSpaceReflection.fragment.js +57 -15
  976. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  977. package/Shaders/screenSpaceReflection2.fragment.js +125 -51
  978. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  979. package/Shaders/screenSpaceReflection2Blur.fragment.js +7 -1
  980. package/Shaders/screenSpaceReflection2Blur.fragment.js.map +1 -1
  981. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +28 -13
  982. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  983. package/Shaders/shadowMap.fragment.js +14 -6
  984. package/Shaders/shadowMap.fragment.js.map +1 -1
  985. package/Shaders/shadowMap.vertex.js +35 -17
  986. package/Shaders/shadowMap.vertex.js.map +1 -1
  987. package/Shaders/sharpen.fragment.js +8 -2
  988. package/Shaders/sharpen.fragment.js.map +1 -1
  989. package/Shaders/spriteMap.fragment.js +17 -4
  990. package/Shaders/spriteMap.fragment.js.map +1 -1
  991. package/Shaders/spriteMap.vertex.js +2 -1
  992. package/Shaders/spriteMap.vertex.js.map +1 -1
  993. package/Shaders/sprites.fragment.js +17 -7
  994. package/Shaders/sprites.fragment.js.map +1 -1
  995. package/Shaders/sprites.vertex.js +10 -4
  996. package/Shaders/sprites.vertex.js.map +1 -1
  997. package/Shaders/ssao.fragment.js +0 -2
  998. package/Shaders/ssao.fragment.js.map +1 -1
  999. package/Shaders/ssao2.fragment.js +0 -2
  1000. package/Shaders/ssao2.fragment.js.map +1 -1
  1001. package/Shaders/ssaoCombine.fragment.js +8 -4
  1002. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  1003. package/Shaders/standard.fragment.js +101 -25
  1004. package/Shaders/standard.fragment.js.map +1 -1
  1005. package/Shaders/stereoscopicInterlace.fragment.js +14 -6
  1006. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  1007. package/Shaders/subSurfaceScattering.fragment.js +58 -12
  1008. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  1009. package/Shaders/tonemap.fragment.js +21 -9
  1010. package/Shaders/tonemap.fragment.js.map +1 -1
  1011. package/Shaders/velocity.fragment.js +8 -4
  1012. package/Shaders/velocity.fragment.js.map +1 -1
  1013. package/Shaders/velocity.vertex.js +18 -9
  1014. package/Shaders/velocity.vertex.js.map +1 -1
  1015. package/Shaders/volumetricLightScattering.fragment.js +9 -4
  1016. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  1017. package/Shaders/volumetricLightScatteringPass.fragment.js +12 -5
  1018. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  1019. package/Shaders/volumetricLightScatteringPass.vertex.js +23 -11
  1020. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  1021. package/Shaders/vrDistortionCorrection.fragment.js +6 -2
  1022. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  1023. package/Shaders/vrMultiviewToSingleview.fragment.js +4 -2
  1024. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  1025. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +24 -12
  1026. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
  1027. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -3
  1028. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
  1029. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +14 -6
  1030. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  1031. package/ShadersWGSL/ShadersInclude/bonesVertex.js +36 -18
  1032. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  1033. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +20 -7
  1034. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
  1035. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +12 -6
  1036. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
  1037. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +12 -6
  1038. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
  1039. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +12 -6
  1040. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
  1041. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +14 -7
  1042. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
  1043. package/ShadersWGSL/ShadersInclude/instancesVertex.js +16 -8
  1044. package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
  1045. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +3 -1
  1046. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  1047. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +16 -8
  1048. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
  1049. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +8 -4
  1050. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  1051. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +2 -1
  1052. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
  1053. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +6 -2
  1054. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
  1055. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +8 -3
  1056. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  1057. package/ShadersWGSL/gpuUpdateParticles.compute.js +229 -90
  1058. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  1059. package/ShadersWGSL/postprocess.vertex.js +9 -4
  1060. package/ShadersWGSL/postprocess.vertex.js.map +1 -1
  1061. package/assetContainer.d.ts +7 -0
  1062. package/assetContainer.js +46 -0
  1063. package/assetContainer.js.map +1 -1
  1064. package/index.d.ts +1 -0
  1065. package/index.js +1 -0
  1066. package/index.js.map +1 -1
  1067. package/package.json +1 -1
  1068. package/scene.js +5 -0
  1069. package/scene.js.map +1 -1
  1070. package/Materials/Node/nodeMaterialDecorator.js.map +0 -1
@@ -76,6 +76,11 @@ export class WebGL2ParticleSystem {
76
76
  transformFeedbackVaryings: [],
77
77
  };
78
78
  }
79
+ contextLost() {
80
+ this._updateEffect = undefined;
81
+ this._renderVAO.length = 0;
82
+ this._updateVAO.length = 0;
83
+ }
79
84
  isUpdateBufferCreated() {
80
85
  return !!this._updateEffect;
81
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl2ParticleSystem.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/webgl2ParticleSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport type { IEffectCreationOptions } from \"../Materials/effect\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport type { IGPUParticleSystemPlatform } from \"./IGPUParticleSystemPlatform\";\r\n\r\nimport { CustomParticleEmitter } from \"./EmitterTypes/customParticleEmitter\";\r\nimport type { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport type { DataArray } from \"../types\";\r\nimport type { DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { UniformBufferEffectCommonAccessor } from \"../Materials/uniformBufferEffectCommonAccessor\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport \"../Shaders/gpuUpdateParticles.fragment\";\r\nimport \"../Shaders/gpuUpdateParticles.vertex\";\r\n\r\nimport type { Engine } from \"../Engines/engine\";\r\n\r\n/** @internal */\r\nexport class WebGL2ParticleSystem implements IGPUParticleSystemPlatform {\r\n private _parent: GPUParticleSystem;\r\n private _engine: ThinEngine;\r\n private _updateEffect: Effect;\r\n private _updateEffectOptions: IEffectCreationOptions;\r\n private _renderVAO: WebGLVertexArrayObject[] = [];\r\n private _updateVAO: WebGLVertexArrayObject[] = [];\r\n\r\n public readonly alignDataInBuffer = false;\r\n\r\n constructor(parent: GPUParticleSystem, engine: ThinEngine) {\r\n this._parent = parent;\r\n this._engine = engine;\r\n\r\n this._updateEffectOptions = {\r\n attributes: [\r\n \"position\",\r\n \"initialPosition\",\r\n \"age\",\r\n \"life\",\r\n \"seed\",\r\n \"size\",\r\n \"color\",\r\n \"direction\",\r\n \"initialDirection\",\r\n \"angle\",\r\n \"cellIndex\",\r\n \"cellStartOffset\",\r\n \"noiseCoordinates1\",\r\n \"noiseCoordinates2\",\r\n ],\r\n uniformsNames: [\r\n \"currentCount\",\r\n \"timeDelta\",\r\n \"emitterWM\",\r\n \"lifeTime\",\r\n \"color1\",\r\n \"color2\",\r\n \"sizeRange\",\r\n \"scaleRange\",\r\n \"gravity\",\r\n \"emitPower\",\r\n \"direction1\",\r\n \"direction2\",\r\n \"minEmitBox\",\r\n \"maxEmitBox\",\r\n \"radius\",\r\n \"directionRandomizer\",\r\n \"height\",\r\n \"coneAngle\",\r\n \"stopFactor\",\r\n \"angleRange\",\r\n \"radiusRange\",\r\n \"cellInfos\",\r\n \"noiseStrength\",\r\n \"limitVelocityDamping\",\r\n ],\r\n uniformBuffersNames: [],\r\n samplers: [\r\n \"randomSampler\",\r\n \"randomSampler2\",\r\n \"sizeGradientSampler\",\r\n \"angularSpeedGradientSampler\",\r\n \"velocityGradientSampler\",\r\n \"limitVelocityGradientSampler\",\r\n \"noiseSampler\",\r\n \"dragGradientSampler\",\r\n ],\r\n defines: \"\",\r\n fallbacks: null,\r\n onCompiled: null,\r\n onError: null,\r\n indexParameters: null,\r\n maxSimultaneousLights: 0,\r\n transformFeedbackVaryings: [],\r\n };\r\n }\r\n\r\n public isUpdateBufferCreated(): boolean {\r\n return !!this._updateEffect;\r\n }\r\n\r\n public isUpdateBufferReady(): boolean {\r\n return this._updateEffect?.isReady() ?? false;\r\n }\r\n\r\n public createUpdateBuffer(defines: string): UniformBufferEffectCommonAccessor {\r\n this._updateEffectOptions.transformFeedbackVaryings = [\"outPosition\"];\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAge\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSize\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outLife\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSeed\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outDirection\");\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialPosition\");\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outColor\");\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialDirection\");\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates1\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates2\");\r\n }\r\n\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAngle\");\r\n\r\n if (this._parent.isAnimationSheetEnabled) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellIndex\");\r\n if (this._parent.spriteRandomStartCell) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellStartOffset\");\r\n }\r\n }\r\n\r\n this._updateEffectOptions.defines = defines;\r\n this._updateEffect = new Effect(\"gpuUpdateParticles\", this._updateEffectOptions, this._engine);\r\n\r\n return new UniformBufferEffectCommonAccessor(this._updateEffect);\r\n }\r\n\r\n public createVertexBuffers(updateBuffer: Buffer, renderVertexBuffers: { [key: string]: VertexBuffer }): void {\r\n this._updateVAO.push(this._createUpdateVAO(updateBuffer));\r\n\r\n this._renderVAO.push(this._engine.recordVertexArrayObject(renderVertexBuffers, null, this._parent._getWrapper(this._parent.blendMode).effect!));\r\n this._engine.bindArrayBuffer(null);\r\n }\r\n\r\n public createParticleBuffer(data: number[]): DataArray | DataBuffer {\r\n return data;\r\n }\r\n\r\n public bindDrawBuffers(index: number): void {\r\n this._engine.bindVertexArrayObject(this._renderVAO[index], null);\r\n }\r\n\r\n public preUpdateParticleBuffer(): void {\r\n const engine = this._engine as Engine;\r\n\r\n this._engine.enableEffect(this._updateEffect);\r\n\r\n if (!engine.setState) {\r\n throw new Error(\"GPU particles cannot work without a full Engine. ThinEngine is not supported\");\r\n }\r\n }\r\n\r\n public updateParticleBuffer(index: number, targetBuffer: Buffer, currentActiveCount: number): void {\r\n this._updateEffect.setTexture(\"randomSampler\", this._parent._randomTexture);\r\n this._updateEffect.setTexture(\"randomSampler2\", this._parent._randomTexture2);\r\n\r\n if (this._parent._sizeGradientsTexture) {\r\n this._updateEffect.setTexture(\"sizeGradientSampler\", this._parent._sizeGradientsTexture);\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n this._updateEffect.setTexture(\"angularSpeedGradientSampler\", this._parent._angularSpeedGradientsTexture);\r\n }\r\n\r\n if (this._parent._velocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"velocityGradientSampler\", this._parent._velocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._limitVelocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"limitVelocityGradientSampler\", this._parent._limitVelocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._dragGradientsTexture) {\r\n this._updateEffect.setTexture(\"dragGradientSampler\", this._parent._dragGradientsTexture);\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffect.setTexture(\"noiseSampler\", this._parent.noiseTexture);\r\n }\r\n\r\n // Bind source VAO\r\n this._engine.bindVertexArrayObject(this._updateVAO[index], null);\r\n\r\n // Update\r\n const engine = this._engine as Engine;\r\n\r\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\r\n engine.setRasterizerState(false);\r\n engine.beginTransformFeedback(true);\r\n engine.drawArraysType(Constants.MATERIAL_PointListDrawMode, 0, currentActiveCount);\r\n engine.endTransformFeedback();\r\n engine.setRasterizerState(true);\r\n engine.bindTransformFeedbackBuffer(null);\r\n }\r\n\r\n public releaseBuffers(): void {}\r\n\r\n public releaseVertexBuffers(): void {\r\n for (let index = 0; index < this._updateVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._updateVAO[index]);\r\n }\r\n this._updateVAO.length = 0;\r\n\r\n for (let index = 0; index < this._renderVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._renderVAO[index]);\r\n }\r\n this._renderVAO.length = 0;\r\n }\r\n\r\n private _createUpdateVAO(source: Buffer): WebGLVertexArrayObject {\r\n const updateVertexBuffers: { [key: string]: VertexBuffer } = {};\r\n updateVertexBuffers[\"position\"] = source.createVertexBuffer(\"position\", 0, 3);\r\n\r\n let offset = 3;\r\n updateVertexBuffers[\"age\"] = source.createVertexBuffer(\"age\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"size\"] = source.createVertexBuffer(\"size\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"life\"] = source.createVertexBuffer(\"life\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"seed\"] = source.createVertexBuffer(\"seed\", offset, 4);\r\n offset += 4;\r\n updateVertexBuffers[\"direction\"] = source.createVertexBuffer(\"direction\", offset, 3);\r\n offset += 3;\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n updateVertexBuffers[\"initialPosition\"] = source.createVertexBuffer(\"initialPosition\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n updateVertexBuffers[\"color\"] = source.createVertexBuffer(\"color\", offset, 4);\r\n offset += 4;\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n updateVertexBuffers[\"initialDirection\"] = source.createVertexBuffer(\"initialDirection\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n updateVertexBuffers[\"noiseCoordinates1\"] = source.createVertexBuffer(\"noiseCoordinates1\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"noiseCoordinates2\"] = source.createVertexBuffer(\"noiseCoordinates2\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 1);\r\n offset += 1;\r\n } else {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 2);\r\n offset += 2;\r\n }\r\n\r\n if (this._parent._isAnimationSheetEnabled) {\r\n updateVertexBuffers[\"cellIndex\"] = source.createVertexBuffer(\"cellIndex\", offset, 1);\r\n offset += 1;\r\n if (this._parent.spriteRandomStartCell) {\r\n updateVertexBuffers[\"cellStartOffset\"] = source.createVertexBuffer(\"cellStartOffset\", offset, 1);\r\n offset += 1;\r\n }\r\n }\r\n\r\n const vao = this._engine.recordVertexArrayObject(updateVertexBuffers, null, this._updateEffect);\r\n this._engine.bindArrayBuffer(null);\r\n\r\n return vao;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WebGL2ParticleSystem\", WebGL2ParticleSystem);\r\n"]}
1
+ {"version":3,"file":"webgl2ParticleSystem.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/webgl2ParticleSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport type { IEffectCreationOptions } from \"../Materials/effect\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport type { IGPUParticleSystemPlatform } from \"./IGPUParticleSystemPlatform\";\r\n\r\nimport { CustomParticleEmitter } from \"./EmitterTypes/customParticleEmitter\";\r\nimport type { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport type { DataArray } from \"../types\";\r\nimport type { DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { UniformBufferEffectCommonAccessor } from \"../Materials/uniformBufferEffectCommonAccessor\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport \"../Shaders/gpuUpdateParticles.fragment\";\r\nimport \"../Shaders/gpuUpdateParticles.vertex\";\r\n\r\nimport type { Engine } from \"../Engines/engine\";\r\n\r\n/** @internal */\r\nexport class WebGL2ParticleSystem implements IGPUParticleSystemPlatform {\r\n private _parent: GPUParticleSystem;\r\n private _engine: ThinEngine;\r\n private _updateEffect: Effect;\r\n private _updateEffectOptions: IEffectCreationOptions;\r\n private _renderVAO: WebGLVertexArrayObject[] = [];\r\n private _updateVAO: WebGLVertexArrayObject[] = [];\r\n\r\n public readonly alignDataInBuffer = false;\r\n\r\n constructor(parent: GPUParticleSystem, engine: ThinEngine) {\r\n this._parent = parent;\r\n this._engine = engine;\r\n\r\n this._updateEffectOptions = {\r\n attributes: [\r\n \"position\",\r\n \"initialPosition\",\r\n \"age\",\r\n \"life\",\r\n \"seed\",\r\n \"size\",\r\n \"color\",\r\n \"direction\",\r\n \"initialDirection\",\r\n \"angle\",\r\n \"cellIndex\",\r\n \"cellStartOffset\",\r\n \"noiseCoordinates1\",\r\n \"noiseCoordinates2\",\r\n ],\r\n uniformsNames: [\r\n \"currentCount\",\r\n \"timeDelta\",\r\n \"emitterWM\",\r\n \"lifeTime\",\r\n \"color1\",\r\n \"color2\",\r\n \"sizeRange\",\r\n \"scaleRange\",\r\n \"gravity\",\r\n \"emitPower\",\r\n \"direction1\",\r\n \"direction2\",\r\n \"minEmitBox\",\r\n \"maxEmitBox\",\r\n \"radius\",\r\n \"directionRandomizer\",\r\n \"height\",\r\n \"coneAngle\",\r\n \"stopFactor\",\r\n \"angleRange\",\r\n \"radiusRange\",\r\n \"cellInfos\",\r\n \"noiseStrength\",\r\n \"limitVelocityDamping\",\r\n ],\r\n uniformBuffersNames: [],\r\n samplers: [\r\n \"randomSampler\",\r\n \"randomSampler2\",\r\n \"sizeGradientSampler\",\r\n \"angularSpeedGradientSampler\",\r\n \"velocityGradientSampler\",\r\n \"limitVelocityGradientSampler\",\r\n \"noiseSampler\",\r\n \"dragGradientSampler\",\r\n ],\r\n defines: \"\",\r\n fallbacks: null,\r\n onCompiled: null,\r\n onError: null,\r\n indexParameters: null,\r\n maxSimultaneousLights: 0,\r\n transformFeedbackVaryings: [],\r\n };\r\n }\r\n\r\n public contextLost(): void {\r\n this._updateEffect = undefined as any;\r\n this._renderVAO.length = 0;\r\n this._updateVAO.length = 0;\r\n }\r\n\r\n public isUpdateBufferCreated(): boolean {\r\n return !!this._updateEffect;\r\n }\r\n\r\n public isUpdateBufferReady(): boolean {\r\n return this._updateEffect?.isReady() ?? false;\r\n }\r\n\r\n public createUpdateBuffer(defines: string): UniformBufferEffectCommonAccessor {\r\n this._updateEffectOptions.transformFeedbackVaryings = [\"outPosition\"];\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAge\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSize\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outLife\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSeed\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outDirection\");\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialPosition\");\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outColor\");\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialDirection\");\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates1\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates2\");\r\n }\r\n\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAngle\");\r\n\r\n if (this._parent.isAnimationSheetEnabled) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellIndex\");\r\n if (this._parent.spriteRandomStartCell) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellStartOffset\");\r\n }\r\n }\r\n\r\n this._updateEffectOptions.defines = defines;\r\n this._updateEffect = new Effect(\"gpuUpdateParticles\", this._updateEffectOptions, this._engine);\r\n\r\n return new UniformBufferEffectCommonAccessor(this._updateEffect);\r\n }\r\n\r\n public createVertexBuffers(updateBuffer: Buffer, renderVertexBuffers: { [key: string]: VertexBuffer }): void {\r\n this._updateVAO.push(this._createUpdateVAO(updateBuffer));\r\n\r\n this._renderVAO.push(this._engine.recordVertexArrayObject(renderVertexBuffers, null, this._parent._getWrapper(this._parent.blendMode).effect!));\r\n this._engine.bindArrayBuffer(null);\r\n }\r\n\r\n public createParticleBuffer(data: number[]): DataArray | DataBuffer {\r\n return data;\r\n }\r\n\r\n public bindDrawBuffers(index: number): void {\r\n this._engine.bindVertexArrayObject(this._renderVAO[index], null);\r\n }\r\n\r\n public preUpdateParticleBuffer(): void {\r\n const engine = this._engine as Engine;\r\n\r\n this._engine.enableEffect(this._updateEffect);\r\n\r\n if (!engine.setState) {\r\n throw new Error(\"GPU particles cannot work without a full Engine. ThinEngine is not supported\");\r\n }\r\n }\r\n\r\n public updateParticleBuffer(index: number, targetBuffer: Buffer, currentActiveCount: number): void {\r\n this._updateEffect.setTexture(\"randomSampler\", this._parent._randomTexture);\r\n this._updateEffect.setTexture(\"randomSampler2\", this._parent._randomTexture2);\r\n\r\n if (this._parent._sizeGradientsTexture) {\r\n this._updateEffect.setTexture(\"sizeGradientSampler\", this._parent._sizeGradientsTexture);\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n this._updateEffect.setTexture(\"angularSpeedGradientSampler\", this._parent._angularSpeedGradientsTexture);\r\n }\r\n\r\n if (this._parent._velocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"velocityGradientSampler\", this._parent._velocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._limitVelocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"limitVelocityGradientSampler\", this._parent._limitVelocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._dragGradientsTexture) {\r\n this._updateEffect.setTexture(\"dragGradientSampler\", this._parent._dragGradientsTexture);\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffect.setTexture(\"noiseSampler\", this._parent.noiseTexture);\r\n }\r\n\r\n // Bind source VAO\r\n this._engine.bindVertexArrayObject(this._updateVAO[index], null);\r\n\r\n // Update\r\n const engine = this._engine as Engine;\r\n\r\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\r\n engine.setRasterizerState(false);\r\n engine.beginTransformFeedback(true);\r\n engine.drawArraysType(Constants.MATERIAL_PointListDrawMode, 0, currentActiveCount);\r\n engine.endTransformFeedback();\r\n engine.setRasterizerState(true);\r\n engine.bindTransformFeedbackBuffer(null);\r\n }\r\n\r\n public releaseBuffers(): void {}\r\n\r\n public releaseVertexBuffers(): void {\r\n for (let index = 0; index < this._updateVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._updateVAO[index]);\r\n }\r\n this._updateVAO.length = 0;\r\n\r\n for (let index = 0; index < this._renderVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._renderVAO[index]);\r\n }\r\n this._renderVAO.length = 0;\r\n }\r\n\r\n private _createUpdateVAO(source: Buffer): WebGLVertexArrayObject {\r\n const updateVertexBuffers: { [key: string]: VertexBuffer } = {};\r\n updateVertexBuffers[\"position\"] = source.createVertexBuffer(\"position\", 0, 3);\r\n\r\n let offset = 3;\r\n updateVertexBuffers[\"age\"] = source.createVertexBuffer(\"age\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"size\"] = source.createVertexBuffer(\"size\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"life\"] = source.createVertexBuffer(\"life\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"seed\"] = source.createVertexBuffer(\"seed\", offset, 4);\r\n offset += 4;\r\n updateVertexBuffers[\"direction\"] = source.createVertexBuffer(\"direction\", offset, 3);\r\n offset += 3;\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n updateVertexBuffers[\"initialPosition\"] = source.createVertexBuffer(\"initialPosition\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n updateVertexBuffers[\"color\"] = source.createVertexBuffer(\"color\", offset, 4);\r\n offset += 4;\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n updateVertexBuffers[\"initialDirection\"] = source.createVertexBuffer(\"initialDirection\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n updateVertexBuffers[\"noiseCoordinates1\"] = source.createVertexBuffer(\"noiseCoordinates1\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"noiseCoordinates2\"] = source.createVertexBuffer(\"noiseCoordinates2\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 1);\r\n offset += 1;\r\n } else {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 2);\r\n offset += 2;\r\n }\r\n\r\n if (this._parent._isAnimationSheetEnabled) {\r\n updateVertexBuffers[\"cellIndex\"] = source.createVertexBuffer(\"cellIndex\", offset, 1);\r\n offset += 1;\r\n if (this._parent.spriteRandomStartCell) {\r\n updateVertexBuffers[\"cellStartOffset\"] = source.createVertexBuffer(\"cellStartOffset\", offset, 1);\r\n offset += 1;\r\n }\r\n }\r\n\r\n const vao = this._engine.recordVertexArrayObject(updateVertexBuffers, null, this._updateEffect);\r\n this._engine.bindArrayBuffer(null);\r\n\r\n return vao;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WebGL2ParticleSystem\", WebGL2ParticleSystem);\r\n"]}
@@ -73,10 +73,17 @@ export declare enum PhysicsConstraintMotorType {
73
73
  VELOCITY = 1,
74
74
  POSITION = 2
75
75
  }
76
+ export declare enum PhysicsEventType {
77
+ COLLISION_STARTED = "COLLISION_STARTED",
78
+ COLLISION_CONTINUED = "COLLISION_CONTINUED",
79
+ COLLISION_FINISHED = "COLLISION_FINISHED",
80
+ TRIGGER_ENTERED = "TRIGGER_ENTERED",
81
+ TRIGGER_EXITED = "TRIGGER_EXITED"
82
+ }
76
83
  /**
77
- * Collision object that is the parameter when notification for collision fires.
84
+ * Base collision object
78
85
  */
79
- export interface IPhysicsCollisionEvent {
86
+ export interface IBasePhysicsCollisionEvent {
80
87
  /**
81
88
  * 1st physics body that collided
82
89
  */
@@ -93,6 +100,15 @@ export interface IPhysicsCollisionEvent {
93
100
  * index in instances array for the collidedAgainst
94
101
  */
95
102
  collidedAgainstIndex: number;
103
+ /**
104
+ * Event type
105
+ */
106
+ type: PhysicsEventType;
107
+ }
108
+ /**
109
+ * Collision object that is the parameter when notification for collision fires.
110
+ */
111
+ export interface IPhysicsCollisionEvent extends IBasePhysicsCollisionEvent {
96
112
  /**
97
113
  * World position where the collision occured
98
114
  */
@@ -298,6 +314,7 @@ export interface IPhysicsEnginePluginV2 {
298
314
  getCollisionObservable(body: PhysicsBody, instanceIndex?: number): Observable<IPhysicsCollisionEvent>;
299
315
  setGravityFactor(body: PhysicsBody, factor: number, instanceIndex?: number): void;
300
316
  getGravityFactor(body: PhysicsBody, instanceIndex?: number): number;
317
+ setTargetTransform(body: PhysicsBody, position: Vector3, rotation: Quaternion, instanceIndex?: number): void;
301
318
  initShape(shape: PhysicsShape, type: PhysicsShapeType, options: PhysicsShapeParameters): void;
302
319
  setShapeFilterMembershipMask(shape: PhysicsShape, membershipMask: number): void;
303
320
  getShapeFilterMembershipMask(shape: PhysicsShape): number;
@@ -311,6 +328,7 @@ export interface IPhysicsEnginePluginV2 {
311
328
  getNumChildren(shape: PhysicsShape): number;
312
329
  getBoundingBox(shape: PhysicsShape): BoundingBox;
313
330
  disposeShape(shape: PhysicsShape): void;
331
+ setTrigger(shape: PhysicsShape, isTrigger: boolean): void;
314
332
  initConstraint(constraint: PhysicsConstraint, body: PhysicsBody, childBody: PhysicsBody): void;
315
333
  setEnabled(constraint: PhysicsConstraint, isEnabled: boolean): void;
316
334
  getEnabled(constraint: PhysicsConstraint): boolean;
@@ -114,6 +114,14 @@ export var PhysicsConstraintMotorType;
114
114
  PhysicsConstraintMotorType[PhysicsConstraintMotorType["VELOCITY"] = 1] = "VELOCITY";
115
115
  PhysicsConstraintMotorType[PhysicsConstraintMotorType["POSITION"] = 2] = "POSITION";
116
116
  })(PhysicsConstraintMotorType || (PhysicsConstraintMotorType = {}));
117
+ export var PhysicsEventType;
118
+ (function (PhysicsEventType) {
119
+ PhysicsEventType["COLLISION_STARTED"] = "COLLISION_STARTED";
120
+ PhysicsEventType["COLLISION_CONTINUED"] = "COLLISION_CONTINUED";
121
+ PhysicsEventType["COLLISION_FINISHED"] = "COLLISION_FINISHED";
122
+ PhysicsEventType["TRIGGER_ENTERED"] = "TRIGGER_ENTERED";
123
+ PhysicsEventType["TRIGGER_EXITED"] = "TRIGGER_EXITED";
124
+ })(PhysicsEventType || (PhysicsEventType = {}));
117
125
  /**
118
126
  * Indicates how the body will behave.
119
127
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IPhysicsEnginePlugin.js","sourceRoot":"","sources":["../../../../../dev/core/src/Physics/v2/IPhysicsEnginePlugin.ts"],"names":[],"mappings":"AAYA,6CAA6C;AAC7C,MAAM,CAAN,IAAY,8BAaX;AAbD,WAAY,8BAA8B;IACtC;;OAEG;IACH,mFAAI,CAAA;IACJ;;OAEG;IACH,yFAAO,CAAA;IACP;;OAEG;IACH,uFAAM,CAAA;AACV,CAAC,EAbW,8BAA8B,KAA9B,8BAA8B,QAazC;AAED,2GAA2G;AAC3G,MAAM,CAAN,IAAY,qBAqCX;AArCD,WAAY,qBAAqB;IAC7B;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,2EAAS,CAAA;IACT;;;OAGG;IACH,2EAAS,CAAA;IACT;;;OAGG;IACH,2EAAS,CAAA;IACT;;;;OAIG;IACH,uFAAe,CAAA;AACnB,CAAC,EArCW,qBAAqB,KAArB,qBAAqB,QAqChC;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,qBAsCX;AAtCD,WAAY,qBAAqB;IAC7B;;;OAGG;IACH,uFAAmB,CAAA;IACnB;;;OAGG;IACH,yEAAY,CAAA;IACZ;;;OAGG;IACH,mEAAS,CAAA;IACT;;;;OAIG;IACH,qEAAU,CAAA;IACV;;;OAGG;IACH,iEAAQ,CAAA;IACR;;;OAGG;IACH,2EAAa,CAAA;IACb;;;;OAIG;IACH,uEAAW,CAAA;AACf,CAAC,EAtCW,qBAAqB,KAArB,qBAAqB,QAsChC;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IACxB,2DAAM,CAAA;IACN,6DAAO,CAAA;IACP,+DAAQ,CAAA;IACR,qDAAG,CAAA;IACH,qEAAW,CAAA;IACX,iEAAS,CAAA;IACT,uDAAI,CAAA;IACJ,qEAAW,CAAA;AACf,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAED,qGAAqG;AACrG,MAAM,CAAN,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IAClC,2EAAI,CAAA;IACJ,mFAAQ,CAAA;IACR,mFAAQ,CAAA;AACZ,CAAC,EAJW,0BAA0B,KAA1B,0BAA0B,QAIrC;AA+KD;;GAEG;AACH,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,6DAAM,CAAA;IACN,iEAAQ,CAAA;IACR,+DAAO,CAAA;AACX,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B","sourcesContent":["import type { Vector3, Quaternion } from \"../../Maths/math.vector\";\r\nimport type { IRaycastQuery, PhysicsRaycastResult } from \"../physicsRaycastResult\";\r\nimport type { PhysicsBody } from \"./physicsBody\";\r\nimport type { PhysicsShape } from \"./physicsShape\";\r\nimport type { PhysicsConstraint } from \"./physicsConstraint\";\r\nimport type { BoundingBox } from \"../../Culling/boundingBox\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport type { PhysicsMaterial } from \"./physicsMaterial\";\r\nimport type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observable } from \"core/Misc/observable\";\r\n\r\n/** How a specific axis can be constrained */\r\nexport enum PhysicsConstraintAxisLimitMode {\r\n /*\r\n * The axis is not restricted at all\r\n */\r\n FREE,\r\n /*\r\n * The axis has a minimum/maximum limit\r\n */\r\n LIMITED,\r\n /*\r\n * The axis allows no relative movement of the pivots\r\n */\r\n LOCKED,\r\n}\r\n\r\n/** The constraint specific axis to use when setting Friction, `ConstraintAxisLimitMode`, max force, ... */\r\nexport enum PhysicsConstraintAxis {\r\n /*\r\n * Translation along the primary axis of the constraint (i.e. the\r\n * direction specified by PhysicsConstraintParameters.axisA/axisB)\r\n */\r\n LINEAR_X,\r\n /*\r\n * Translation along the second axis of the constraint (i.e. the\r\n * direction specified by PhysicsConstraintParameters.perpAxisA/perpAxisB)\r\n */\r\n LINEAR_Y,\r\n /*\r\n * Translation along the third axis of the constraint. This axis is\r\n * computed from the cross product of axisA/axisB and perpAxisA/perpAxisB)\r\n */\r\n LINEAR_Z,\r\n /*\r\n * Rotation around the primary axis of the constraint (i.e. the\r\n * axis specified by PhysicsConstraintParameters.axisA/axisB)\r\n */\r\n ANGULAR_X,\r\n /*\r\n * Rotation around the second axis of the constraint (i.e. the\r\n * axis specified by PhysicsConstraintParameters.perpAxisA/perpAxisB)\r\n */\r\n ANGULAR_Y,\r\n /*\r\n * Rotation around the third axis of the constraint. This axis is\r\n * computed from the cross product of axisA/axisB and perpAxisA/perpAxisB)\r\n */\r\n ANGULAR_Z,\r\n /*\r\n * A 3D distance limit; similar to specifying the LINEAR_X/Y/Z axes\r\n * individually, but the distance calculation uses all three axes\r\n * simultaneously, instead of individually.\r\n */\r\n LINEAR_DISTANCE,\r\n}\r\n\r\n/** Type of Constraint */\r\nexport enum PhysicsConstraintType {\r\n /**\r\n * A ball and socket constraint will attempt to line up the pivot\r\n * positions in each body, and have no restrictions on rotation\r\n */\r\n BALL_AND_SOCKET = 1,\r\n /**\r\n * A distance constraint will attempt to keep the pivot locations\r\n * within a specified distance.\r\n */\r\n DISTANCE = 2,\r\n /**\r\n * A hinge constraint will keep the pivot positions aligned as well\r\n * as two angular axes. The remaining angular axis will be free to rotate.\r\n */\r\n HINGE = 3,\r\n /**\r\n * A slider constraint allows bodies to translate along one axis and\r\n * rotate about the same axis. The remaining two axes are locked in\r\n * place\r\n */\r\n SLIDER = 4,\r\n /**\r\n * A lock constraint will attempt to keep the pivots completely lined\r\n * up between both bodies, allowing no relative movement.\r\n */\r\n LOCK = 5,\r\n /*\r\n * A prismatic will lock the rotations of the bodies, and allow translation\r\n * only along one axis\r\n */\r\n PRISMATIC = 6,\r\n /*\r\n * A generic constraint; this starts with no limits on how the bodies can\r\n * move relative to each other, but limits can be added via the PhysicsConstraint\r\n * interfaces. This can be used to specify a large variety of constraints\r\n */\r\n SIX_DOF = 7,\r\n}\r\n\r\n/** Type of Shape */\r\nexport enum PhysicsShapeType {\r\n SPHERE,\r\n CAPSULE,\r\n CYLINDER,\r\n BOX,\r\n CONVEX_HULL,\r\n CONTAINER,\r\n MESH,\r\n HEIGHTFIELD,\r\n}\r\n\r\n/** Optional motor which attempts to move a body at a specific velocity, or at a specific position */\r\nexport enum PhysicsConstraintMotorType {\r\n NONE,\r\n VELOCITY,\r\n POSITION,\r\n}\r\n\r\n/**\r\n * Collision object that is the parameter when notification for collision fires.\r\n */\r\nexport interface IPhysicsCollisionEvent {\r\n /**\r\n * 1st physics body that collided\r\n */\r\n collider: PhysicsBody;\r\n /**\r\n * 2nd physics body that collided\r\n */\r\n collidedAgainst: PhysicsBody;\r\n /**\r\n * index in instances array for the collider\r\n */\r\n colliderIndex: number;\r\n /**\r\n * index in instances array for the collidedAgainst\r\n */\r\n collidedAgainstIndex: number;\r\n /**\r\n * World position where the collision occured\r\n */\r\n point: Nullable<Vector3>;\r\n /**\r\n * Penetration distance\r\n */\r\n distance: number;\r\n /**\r\n * Impulse value computed by the solver response\r\n */\r\n impulse: number;\r\n /**\r\n * Collision world normal direction\r\n */\r\n normal: Nullable<Vector3>;\r\n}\r\n\r\n/**\r\n * Parameters used to describe the Shape\r\n */\r\nexport interface PhysicsShapeParameters {\r\n /**\r\n * Shape center position\r\n */\r\n center?: Vector3;\r\n /**\r\n * Radius for cylinder, shape and capsule\r\n */\r\n radius?: number;\r\n /**\r\n * First point position that defines the cylinder or capsule\r\n */\r\n pointA?: Vector3;\r\n /**\r\n * Second point position that defines the cylinder or capsule\r\n */\r\n pointB?: Vector3;\r\n /**\r\n * Shape orientation\r\n */\r\n rotation?: Quaternion;\r\n /**\r\n * Dimesion extention for the box\r\n */\r\n extents?: Vector3;\r\n /**\r\n * Mesh used for Mesh shape or convex hull. It can be different than the mesh the body is attached to.\r\n */\r\n mesh?: Mesh;\r\n /**\r\n * Use children hierarchy\r\n */\r\n includeChildMeshes?: boolean;\r\n}\r\n\r\n/**\r\n * Parameters used to describe a Constraint\r\n */\r\nexport interface PhysicsConstraintParameters {\r\n /**\r\n * Location of the constraint pivot in the space of first body\r\n */\r\n pivotA?: Vector3;\r\n /**\r\n * Location of the constraint pivot in the space of the second body\r\n */\r\n pivotB?: Vector3;\r\n /**\r\n * An axis in the space of the first body which determines how\r\n * distances/angles are measured for LINEAR_X/ANGULAR_X limits.\r\n */\r\n axisA?: Vector3;\r\n /**\r\n * An axis in the space of the second body which determines how\r\n * distances/angles are measured for LINEAR_X/ANGULAR_X limits.\r\n */\r\n axisB?: Vector3;\r\n\r\n /**\r\n * An axis in the space of the first body which determines how\r\n * distances/angles are measured for LINEAR_Y/ANGULAR_Y limits.\r\n */\r\n perpAxisA?: Vector3;\r\n\r\n /**\r\n * An axis in the space of the second body which determines how\r\n * distances/angles are measured for LINEAR_Y/ANGULAR_Y limits.\r\n */\r\n perpAxisB?: Vector3;\r\n\r\n /**\r\n * The maximum distance that can seperate the two pivots.\r\n * Only used for DISTANCE constraints\r\n */\r\n maxDistance?: number;\r\n\r\n /**\r\n * Determines if the connected bodies should collide. Generally,\r\n * it is preferable to set this to false, especially if the constraint\r\n * positions the bodies so that they overlap. Otherwise, the constraint\r\n * will \"fight\" the collision detection and may cause jitter.\r\n */\r\n collision?: boolean;\r\n}\r\n\r\n/**\r\n * Parameters used to describe mass and inertia of the Physics Body\r\n */\r\nexport interface PhysicsMassProperties {\r\n /**\r\n * The center of mass, in local space. This is The\r\n * point the body will rotate around when applying\r\n * an angular velocity.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n centerOfMass?: Vector3;\r\n /**\r\n * The total mass of this object, in kilograms. This\r\n * affects how easy it is to move the body. A value\r\n * of zero will be used as an infinite mass.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n mass?: number;\r\n /**\r\n * The principal moments of inertia of this object\r\n * for a unit mass. This determines how easy it is\r\n * for the body to rotate. A value of zero on any\r\n * axis will be used as infinite interia about that\r\n * axis.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n inertia?: Vector3;\r\n /**\r\n * The rotation rotating from inertia major axis space\r\n * to parent space (i.e., the rotation which, when\r\n * applied to the 3x3 inertia tensor causes the inertia\r\n * tensor to become a diagonal matrix). This determines\r\n * how the values of inertia are aligned with the parent\r\n * object.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n inertiaOrientation?: Quaternion;\r\n}\r\n\r\n/**\r\n * Indicates how the body will behave.\r\n */\r\nexport enum PhysicsMotionType {\r\n STATIC,\r\n ANIMATED,\r\n DYNAMIC,\r\n}\r\n\r\n/** @internal */\r\nexport interface IPhysicsEnginePluginV2 {\r\n /**\r\n * Physics plugin world instance\r\n */\r\n world: any;\r\n /**\r\n * Physics plugin name\r\n */\r\n name: string;\r\n\r\n /**\r\n * Collision observable\r\n */\r\n onCollisionObservable: Observable<IPhysicsCollisionEvent>;\r\n\r\n setGravity(gravity: Vector3): void;\r\n setTimeStep(timeStep: number): void;\r\n getTimeStep(): number;\r\n executeStep(delta: number, bodies: Array<PhysicsBody>): void; //not forgetting pre and post events\r\n getPluginVersion(): number;\r\n\r\n // body\r\n initBody(body: PhysicsBody, motionType: PhysicsMotionType, position: Vector3, orientation: Quaternion): void;\r\n initBodyInstances(body: PhysicsBody, motionType: PhysicsMotionType, mesh: Mesh): void;\r\n updateBodyInstances(body: PhysicsBody, mesh: Mesh): void;\r\n removeBody(body: PhysicsBody): void;\r\n sync(body: PhysicsBody): void;\r\n syncTransform(body: PhysicsBody, transformNode: TransformNode): void;\r\n setShape(body: PhysicsBody, shape: Nullable<PhysicsShape>): void;\r\n getShape(body: PhysicsBody): Nullable<PhysicsShape>;\r\n getShapeType(shape: PhysicsShape): PhysicsShapeType;\r\n setEventMask(body: PhysicsBody, eventMask: number, instanceIndex?: number): void;\r\n getEventMask(body: PhysicsBody, instanceIndex?: number): number;\r\n setMotionType(body: PhysicsBody, motionType: PhysicsMotionType, instanceIndex?: number): void;\r\n getMotionType(body: PhysicsBody, instanceIndex?: number): PhysicsMotionType;\r\n computeMassProperties(body: PhysicsBody, instanceIndex?: number): PhysicsMassProperties;\r\n setMassProperties(body: PhysicsBody, massProps: PhysicsMassProperties, instanceIndex?: number): void;\r\n getMassProperties(body: PhysicsBody, instanceIndex?: number): PhysicsMassProperties;\r\n setLinearDamping(body: PhysicsBody, damping: number, instanceIndex?: number): void;\r\n getLinearDamping(body: PhysicsBody, instanceIndex?: number): number;\r\n setAngularDamping(body: PhysicsBody, damping: number, instanceIndex?: number): void;\r\n getAngularDamping(body: PhysicsBody, instanceIndex?: number): number;\r\n setLinearVelocity(body: PhysicsBody, linVel: Vector3, instanceIndex?: number): void;\r\n getLinearVelocityToRef(body: PhysicsBody, linVel: Vector3, instanceIndex?: number): void;\r\n applyImpulse(body: PhysicsBody, impulse: Vector3, location: Vector3, instanceIndex?: number): void;\r\n applyForce(body: PhysicsBody, force: Vector3, location: Vector3, instanceIndex?: number): void;\r\n setAngularVelocity(body: PhysicsBody, angVel: Vector3, instanceIndex?: number): void;\r\n getAngularVelocityToRef(body: PhysicsBody, angVel: Vector3, instanceIndex?: number): void;\r\n getBodyGeometry(body: PhysicsBody): {};\r\n disposeBody(body: PhysicsBody): void;\r\n setCollisionCallbackEnabled(body: PhysicsBody, enabled: boolean, instanceIndex?: number): void;\r\n addConstraint(body: PhysicsBody, childBody: PhysicsBody, constraint: PhysicsConstraint, instanceIndex?: number, childInstanceIndex?: number): void;\r\n getCollisionObservable(body: PhysicsBody, instanceIndex?: number): Observable<IPhysicsCollisionEvent>;\r\n setGravityFactor(body: PhysicsBody, factor: number, instanceIndex?: number): void;\r\n getGravityFactor(body: PhysicsBody, instanceIndex?: number): number;\r\n\r\n // shape\r\n initShape(shape: PhysicsShape, type: PhysicsShapeType, options: PhysicsShapeParameters): void;\r\n setShapeFilterMembershipMask(shape: PhysicsShape, membershipMask: number): void;\r\n getShapeFilterMembershipMask(shape: PhysicsShape): number;\r\n setShapeFilterCollideMask(shape: PhysicsShape, collideMask: number): void;\r\n getShapeFilterCollideMask(shape: PhysicsShape): number;\r\n setMaterial(shape: PhysicsShape, material: PhysicsMaterial): void;\r\n setDensity(shape: PhysicsShape, density: number): void;\r\n getDensity(shape: PhysicsShape): number;\r\n addChild(shape: PhysicsShape, newChild: PhysicsShape, translation?: Vector3, rotation?: Quaternion, scale?: Vector3): void;\r\n removeChild(shape: PhysicsShape, childIndex: number): void;\r\n getNumChildren(shape: PhysicsShape): number;\r\n getBoundingBox(shape: PhysicsShape): BoundingBox;\r\n disposeShape(shape: PhysicsShape): void;\r\n\r\n // constraint\r\n initConstraint(constraint: PhysicsConstraint, body: PhysicsBody, childBody: PhysicsBody): void;\r\n setEnabled(constraint: PhysicsConstraint, isEnabled: boolean): void;\r\n getEnabled(constraint: PhysicsConstraint): boolean;\r\n setCollisionsEnabled(constraint: PhysicsConstraint, isEnabled: boolean): void;\r\n getCollisionsEnabled(constraint: PhysicsConstraint): boolean;\r\n setAxisFriction(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, friction: number): void;\r\n getAxisFriction(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMode(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, limitMode: PhysicsConstraintAxisLimitMode): void;\r\n getAxisMode(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): PhysicsConstraintAxisLimitMode;\r\n setAxisMinLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, minLimit: number): void;\r\n getAxisMinLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMaxLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, limit: number): void;\r\n getAxisMaxLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMotorType(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, motorType: PhysicsConstraintMotorType): void;\r\n getAxisMotorType(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): PhysicsConstraintMotorType;\r\n setAxisMotorTarget(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, target: number): void;\r\n getAxisMotorTarget(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMotorMaxForce(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, maxForce: number): void;\r\n getAxisMotorMaxForce(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n disposeConstraint(constraint: PhysicsConstraint): void;\r\n\r\n // raycast\r\n raycast(from: Vector3, to: Vector3, result: PhysicsRaycastResult, query?: IRaycastQuery): void;\r\n\r\n dispose(): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"IPhysicsEnginePlugin.js","sourceRoot":"","sources":["../../../../../dev/core/src/Physics/v2/IPhysicsEnginePlugin.ts"],"names":[],"mappings":"AAYA,6CAA6C;AAC7C,MAAM,CAAN,IAAY,8BAaX;AAbD,WAAY,8BAA8B;IACtC;;OAEG;IACH,mFAAI,CAAA;IACJ;;OAEG;IACH,yFAAO,CAAA;IACP;;OAEG;IACH,uFAAM,CAAA;AACV,CAAC,EAbW,8BAA8B,KAA9B,8BAA8B,QAazC;AAED,2GAA2G;AAC3G,MAAM,CAAN,IAAY,qBAqCX;AArCD,WAAY,qBAAqB;IAC7B;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,yEAAQ,CAAA;IACR;;;OAGG;IACH,2EAAS,CAAA;IACT;;;OAGG;IACH,2EAAS,CAAA;IACT;;;OAGG;IACH,2EAAS,CAAA;IACT;;;;OAIG;IACH,uFAAe,CAAA;AACnB,CAAC,EArCW,qBAAqB,KAArB,qBAAqB,QAqChC;AAED,yBAAyB;AACzB,MAAM,CAAN,IAAY,qBAsCX;AAtCD,WAAY,qBAAqB;IAC7B;;;OAGG;IACH,uFAAmB,CAAA;IACnB;;;OAGG;IACH,yEAAY,CAAA;IACZ;;;OAGG;IACH,mEAAS,CAAA;IACT;;;;OAIG;IACH,qEAAU,CAAA;IACV;;;OAGG;IACH,iEAAQ,CAAA;IACR;;;OAGG;IACH,2EAAa,CAAA;IACb;;;;OAIG;IACH,uEAAW,CAAA;AACf,CAAC,EAtCW,qBAAqB,KAArB,qBAAqB,QAsChC;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IACxB,2DAAM,CAAA;IACN,6DAAO,CAAA;IACP,+DAAQ,CAAA;IACR,qDAAG,CAAA;IACH,qEAAW,CAAA;IACX,iEAAS,CAAA;IACT,uDAAI,CAAA;IACJ,qEAAW,CAAA;AACf,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAED,qGAAqG;AACrG,MAAM,CAAN,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IAClC,2EAAI,CAAA;IACJ,mFAAQ,CAAA;IACR,mFAAQ,CAAA;AACZ,CAAC,EAJW,0BAA0B,KAA1B,0BAA0B,QAIrC;AAED,MAAM,CAAN,IAAY,gBAMX;AAND,WAAY,gBAAgB;IACxB,2DAAuC,CAAA;IACvC,+DAA2C,CAAA;IAC3C,6DAAyC,CAAA;IACzC,uDAAmC,CAAA;IACnC,qDAAiC,CAAA;AACrC,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,QAM3B;AAyLD;;GAEG;AACH,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,6DAAM,CAAA;IACN,iEAAQ,CAAA;IACR,+DAAO,CAAA;AACX,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B","sourcesContent":["import type { Vector3, Quaternion } from \"../../Maths/math.vector\";\r\nimport type { IRaycastQuery, PhysicsRaycastResult } from \"../physicsRaycastResult\";\r\nimport type { PhysicsBody } from \"./physicsBody\";\r\nimport type { PhysicsShape } from \"./physicsShape\";\r\nimport type { PhysicsConstraint } from \"./physicsConstraint\";\r\nimport type { BoundingBox } from \"../../Culling/boundingBox\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport type { PhysicsMaterial } from \"./physicsMaterial\";\r\nimport type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observable } from \"core/Misc/observable\";\r\n\r\n/** How a specific axis can be constrained */\r\nexport enum PhysicsConstraintAxisLimitMode {\r\n /*\r\n * The axis is not restricted at all\r\n */\r\n FREE,\r\n /*\r\n * The axis has a minimum/maximum limit\r\n */\r\n LIMITED,\r\n /*\r\n * The axis allows no relative movement of the pivots\r\n */\r\n LOCKED,\r\n}\r\n\r\n/** The constraint specific axis to use when setting Friction, `ConstraintAxisLimitMode`, max force, ... */\r\nexport enum PhysicsConstraintAxis {\r\n /*\r\n * Translation along the primary axis of the constraint (i.e. the\r\n * direction specified by PhysicsConstraintParameters.axisA/axisB)\r\n */\r\n LINEAR_X,\r\n /*\r\n * Translation along the second axis of the constraint (i.e. the\r\n * direction specified by PhysicsConstraintParameters.perpAxisA/perpAxisB)\r\n */\r\n LINEAR_Y,\r\n /*\r\n * Translation along the third axis of the constraint. This axis is\r\n * computed from the cross product of axisA/axisB and perpAxisA/perpAxisB)\r\n */\r\n LINEAR_Z,\r\n /*\r\n * Rotation around the primary axis of the constraint (i.e. the\r\n * axis specified by PhysicsConstraintParameters.axisA/axisB)\r\n */\r\n ANGULAR_X,\r\n /*\r\n * Rotation around the second axis of the constraint (i.e. the\r\n * axis specified by PhysicsConstraintParameters.perpAxisA/perpAxisB)\r\n */\r\n ANGULAR_Y,\r\n /*\r\n * Rotation around the third axis of the constraint. This axis is\r\n * computed from the cross product of axisA/axisB and perpAxisA/perpAxisB)\r\n */\r\n ANGULAR_Z,\r\n /*\r\n * A 3D distance limit; similar to specifying the LINEAR_X/Y/Z axes\r\n * individually, but the distance calculation uses all three axes\r\n * simultaneously, instead of individually.\r\n */\r\n LINEAR_DISTANCE,\r\n}\r\n\r\n/** Type of Constraint */\r\nexport enum PhysicsConstraintType {\r\n /**\r\n * A ball and socket constraint will attempt to line up the pivot\r\n * positions in each body, and have no restrictions on rotation\r\n */\r\n BALL_AND_SOCKET = 1,\r\n /**\r\n * A distance constraint will attempt to keep the pivot locations\r\n * within a specified distance.\r\n */\r\n DISTANCE = 2,\r\n /**\r\n * A hinge constraint will keep the pivot positions aligned as well\r\n * as two angular axes. The remaining angular axis will be free to rotate.\r\n */\r\n HINGE = 3,\r\n /**\r\n * A slider constraint allows bodies to translate along one axis and\r\n * rotate about the same axis. The remaining two axes are locked in\r\n * place\r\n */\r\n SLIDER = 4,\r\n /**\r\n * A lock constraint will attempt to keep the pivots completely lined\r\n * up between both bodies, allowing no relative movement.\r\n */\r\n LOCK = 5,\r\n /*\r\n * A prismatic will lock the rotations of the bodies, and allow translation\r\n * only along one axis\r\n */\r\n PRISMATIC = 6,\r\n /*\r\n * A generic constraint; this starts with no limits on how the bodies can\r\n * move relative to each other, but limits can be added via the PhysicsConstraint\r\n * interfaces. This can be used to specify a large variety of constraints\r\n */\r\n SIX_DOF = 7,\r\n}\r\n\r\n/** Type of Shape */\r\nexport enum PhysicsShapeType {\r\n SPHERE,\r\n CAPSULE,\r\n CYLINDER,\r\n BOX,\r\n CONVEX_HULL,\r\n CONTAINER,\r\n MESH,\r\n HEIGHTFIELD,\r\n}\r\n\r\n/** Optional motor which attempts to move a body at a specific velocity, or at a specific position */\r\nexport enum PhysicsConstraintMotorType {\r\n NONE,\r\n VELOCITY,\r\n POSITION,\r\n}\r\n\r\nexport enum PhysicsEventType {\r\n COLLISION_STARTED = \"COLLISION_STARTED\",\r\n COLLISION_CONTINUED = \"COLLISION_CONTINUED\",\r\n COLLISION_FINISHED = \"COLLISION_FINISHED\",\r\n TRIGGER_ENTERED = \"TRIGGER_ENTERED\",\r\n TRIGGER_EXITED = \"TRIGGER_EXITED\",\r\n}\r\n\r\n/**\r\n * Base collision object\r\n */\r\nexport interface IBasePhysicsCollisionEvent {\r\n /**\r\n * 1st physics body that collided\r\n */\r\n collider: PhysicsBody;\r\n /**\r\n * 2nd physics body that collided\r\n */\r\n collidedAgainst: PhysicsBody;\r\n /**\r\n * index in instances array for the collider\r\n */\r\n colliderIndex: number;\r\n /**\r\n * index in instances array for the collidedAgainst\r\n */\r\n collidedAgainstIndex: number;\r\n /**\r\n * Event type\r\n */\r\n type: PhysicsEventType;\r\n}\r\n\r\n/**\r\n * Collision object that is the parameter when notification for collision fires.\r\n */\r\nexport interface IPhysicsCollisionEvent extends IBasePhysicsCollisionEvent {\r\n /**\r\n * World position where the collision occured\r\n */\r\n point: Nullable<Vector3>;\r\n /**\r\n * Penetration distance\r\n */\r\n distance: number;\r\n /**\r\n * Impulse value computed by the solver response\r\n */\r\n impulse: number;\r\n /**\r\n * Collision world normal direction\r\n */\r\n normal: Nullable<Vector3>;\r\n}\r\n\r\n/**\r\n * Parameters used to describe the Shape\r\n */\r\nexport interface PhysicsShapeParameters {\r\n /**\r\n * Shape center position\r\n */\r\n center?: Vector3;\r\n /**\r\n * Radius for cylinder, shape and capsule\r\n */\r\n radius?: number;\r\n /**\r\n * First point position that defines the cylinder or capsule\r\n */\r\n pointA?: Vector3;\r\n /**\r\n * Second point position that defines the cylinder or capsule\r\n */\r\n pointB?: Vector3;\r\n /**\r\n * Shape orientation\r\n */\r\n rotation?: Quaternion;\r\n /**\r\n * Dimesion extention for the box\r\n */\r\n extents?: Vector3;\r\n /**\r\n * Mesh used for Mesh shape or convex hull. It can be different than the mesh the body is attached to.\r\n */\r\n mesh?: Mesh;\r\n /**\r\n * Use children hierarchy\r\n */\r\n includeChildMeshes?: boolean;\r\n}\r\n\r\n/**\r\n * Parameters used to describe a Constraint\r\n */\r\nexport interface PhysicsConstraintParameters {\r\n /**\r\n * Location of the constraint pivot in the space of first body\r\n */\r\n pivotA?: Vector3;\r\n /**\r\n * Location of the constraint pivot in the space of the second body\r\n */\r\n pivotB?: Vector3;\r\n /**\r\n * An axis in the space of the first body which determines how\r\n * distances/angles are measured for LINEAR_X/ANGULAR_X limits.\r\n */\r\n axisA?: Vector3;\r\n /**\r\n * An axis in the space of the second body which determines how\r\n * distances/angles are measured for LINEAR_X/ANGULAR_X limits.\r\n */\r\n axisB?: Vector3;\r\n\r\n /**\r\n * An axis in the space of the first body which determines how\r\n * distances/angles are measured for LINEAR_Y/ANGULAR_Y limits.\r\n */\r\n perpAxisA?: Vector3;\r\n\r\n /**\r\n * An axis in the space of the second body which determines how\r\n * distances/angles are measured for LINEAR_Y/ANGULAR_Y limits.\r\n */\r\n perpAxisB?: Vector3;\r\n\r\n /**\r\n * The maximum distance that can seperate the two pivots.\r\n * Only used for DISTANCE constraints\r\n */\r\n maxDistance?: number;\r\n\r\n /**\r\n * Determines if the connected bodies should collide. Generally,\r\n * it is preferable to set this to false, especially if the constraint\r\n * positions the bodies so that they overlap. Otherwise, the constraint\r\n * will \"fight\" the collision detection and may cause jitter.\r\n */\r\n collision?: boolean;\r\n}\r\n\r\n/**\r\n * Parameters used to describe mass and inertia of the Physics Body\r\n */\r\nexport interface PhysicsMassProperties {\r\n /**\r\n * The center of mass, in local space. This is The\r\n * point the body will rotate around when applying\r\n * an angular velocity.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n centerOfMass?: Vector3;\r\n /**\r\n * The total mass of this object, in kilograms. This\r\n * affects how easy it is to move the body. A value\r\n * of zero will be used as an infinite mass.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n mass?: number;\r\n /**\r\n * The principal moments of inertia of this object\r\n * for a unit mass. This determines how easy it is\r\n * for the body to rotate. A value of zero on any\r\n * axis will be used as infinite interia about that\r\n * axis.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n inertia?: Vector3;\r\n /**\r\n * The rotation rotating from inertia major axis space\r\n * to parent space (i.e., the rotation which, when\r\n * applied to the 3x3 inertia tensor causes the inertia\r\n * tensor to become a diagonal matrix). This determines\r\n * how the values of inertia are aligned with the parent\r\n * object.\r\n *\r\n * If not provided, the physics engine will compute\r\n * an appropriate value.\r\n */\r\n inertiaOrientation?: Quaternion;\r\n}\r\n\r\n/**\r\n * Indicates how the body will behave.\r\n */\r\nexport enum PhysicsMotionType {\r\n STATIC,\r\n ANIMATED,\r\n DYNAMIC,\r\n}\r\n\r\n/** @internal */\r\nexport interface IPhysicsEnginePluginV2 {\r\n /**\r\n * Physics plugin world instance\r\n */\r\n world: any;\r\n /**\r\n * Physics plugin name\r\n */\r\n name: string;\r\n\r\n /**\r\n * Collision observable\r\n */\r\n onCollisionObservable: Observable<IPhysicsCollisionEvent>;\r\n\r\n setGravity(gravity: Vector3): void;\r\n setTimeStep(timeStep: number): void;\r\n getTimeStep(): number;\r\n executeStep(delta: number, bodies: Array<PhysicsBody>): void; //not forgetting pre and post events\r\n getPluginVersion(): number;\r\n\r\n // body\r\n initBody(body: PhysicsBody, motionType: PhysicsMotionType, position: Vector3, orientation: Quaternion): void;\r\n initBodyInstances(body: PhysicsBody, motionType: PhysicsMotionType, mesh: Mesh): void;\r\n updateBodyInstances(body: PhysicsBody, mesh: Mesh): void;\r\n removeBody(body: PhysicsBody): void;\r\n sync(body: PhysicsBody): void;\r\n syncTransform(body: PhysicsBody, transformNode: TransformNode): void;\r\n setShape(body: PhysicsBody, shape: Nullable<PhysicsShape>): void;\r\n getShape(body: PhysicsBody): Nullable<PhysicsShape>;\r\n getShapeType(shape: PhysicsShape): PhysicsShapeType;\r\n setEventMask(body: PhysicsBody, eventMask: number, instanceIndex?: number): void;\r\n getEventMask(body: PhysicsBody, instanceIndex?: number): number;\r\n setMotionType(body: PhysicsBody, motionType: PhysicsMotionType, instanceIndex?: number): void;\r\n getMotionType(body: PhysicsBody, instanceIndex?: number): PhysicsMotionType;\r\n computeMassProperties(body: PhysicsBody, instanceIndex?: number): PhysicsMassProperties;\r\n setMassProperties(body: PhysicsBody, massProps: PhysicsMassProperties, instanceIndex?: number): void;\r\n getMassProperties(body: PhysicsBody, instanceIndex?: number): PhysicsMassProperties;\r\n setLinearDamping(body: PhysicsBody, damping: number, instanceIndex?: number): void;\r\n getLinearDamping(body: PhysicsBody, instanceIndex?: number): number;\r\n setAngularDamping(body: PhysicsBody, damping: number, instanceIndex?: number): void;\r\n getAngularDamping(body: PhysicsBody, instanceIndex?: number): number;\r\n setLinearVelocity(body: PhysicsBody, linVel: Vector3, instanceIndex?: number): void;\r\n getLinearVelocityToRef(body: PhysicsBody, linVel: Vector3, instanceIndex?: number): void;\r\n applyImpulse(body: PhysicsBody, impulse: Vector3, location: Vector3, instanceIndex?: number): void;\r\n applyForce(body: PhysicsBody, force: Vector3, location: Vector3, instanceIndex?: number): void;\r\n setAngularVelocity(body: PhysicsBody, angVel: Vector3, instanceIndex?: number): void;\r\n getAngularVelocityToRef(body: PhysicsBody, angVel: Vector3, instanceIndex?: number): void;\r\n getBodyGeometry(body: PhysicsBody): {};\r\n disposeBody(body: PhysicsBody): void;\r\n setCollisionCallbackEnabled(body: PhysicsBody, enabled: boolean, instanceIndex?: number): void;\r\n addConstraint(body: PhysicsBody, childBody: PhysicsBody, constraint: PhysicsConstraint, instanceIndex?: number, childInstanceIndex?: number): void;\r\n getCollisionObservable(body: PhysicsBody, instanceIndex?: number): Observable<IPhysicsCollisionEvent>;\r\n setGravityFactor(body: PhysicsBody, factor: number, instanceIndex?: number): void;\r\n getGravityFactor(body: PhysicsBody, instanceIndex?: number): number;\r\n setTargetTransform(body: PhysicsBody, position: Vector3, rotation: Quaternion, instanceIndex?: number): void;\r\n\r\n // shape\r\n initShape(shape: PhysicsShape, type: PhysicsShapeType, options: PhysicsShapeParameters): void;\r\n setShapeFilterMembershipMask(shape: PhysicsShape, membershipMask: number): void;\r\n getShapeFilterMembershipMask(shape: PhysicsShape): number;\r\n setShapeFilterCollideMask(shape: PhysicsShape, collideMask: number): void;\r\n getShapeFilterCollideMask(shape: PhysicsShape): number;\r\n setMaterial(shape: PhysicsShape, material: PhysicsMaterial): void;\r\n setDensity(shape: PhysicsShape, density: number): void;\r\n getDensity(shape: PhysicsShape): number;\r\n addChild(shape: PhysicsShape, newChild: PhysicsShape, translation?: Vector3, rotation?: Quaternion, scale?: Vector3): void;\r\n removeChild(shape: PhysicsShape, childIndex: number): void;\r\n getNumChildren(shape: PhysicsShape): number;\r\n getBoundingBox(shape: PhysicsShape): BoundingBox;\r\n disposeShape(shape: PhysicsShape): void;\r\n setTrigger(shape: PhysicsShape, isTrigger: boolean): void;\r\n\r\n // constraint\r\n initConstraint(constraint: PhysicsConstraint, body: PhysicsBody, childBody: PhysicsBody): void;\r\n setEnabled(constraint: PhysicsConstraint, isEnabled: boolean): void;\r\n getEnabled(constraint: PhysicsConstraint): boolean;\r\n setCollisionsEnabled(constraint: PhysicsConstraint, isEnabled: boolean): void;\r\n getCollisionsEnabled(constraint: PhysicsConstraint): boolean;\r\n setAxisFriction(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, friction: number): void;\r\n getAxisFriction(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMode(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, limitMode: PhysicsConstraintAxisLimitMode): void;\r\n getAxisMode(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): PhysicsConstraintAxisLimitMode;\r\n setAxisMinLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, minLimit: number): void;\r\n getAxisMinLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMaxLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, limit: number): void;\r\n getAxisMaxLimit(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMotorType(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, motorType: PhysicsConstraintMotorType): void;\r\n getAxisMotorType(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): PhysicsConstraintMotorType;\r\n setAxisMotorTarget(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, target: number): void;\r\n getAxisMotorTarget(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n setAxisMotorMaxForce(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis, maxForce: number): void;\r\n getAxisMotorMaxForce(constraint: PhysicsConstraint, axis: PhysicsConstraintAxis): number;\r\n disposeConstraint(constraint: PhysicsConstraint): void;\r\n\r\n // raycast\r\n raycast(from: Vector3, to: Vector3, result: PhysicsRaycastResult, query?: IRaycastQuery): void;\r\n\r\n dispose(): void;\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Quaternion, Vector3 } from "../../../Maths/math.vector";
2
2
  import { PhysicsShapeType, PhysicsMotionType, PhysicsConstraintMotorType, PhysicsConstraintAxis, PhysicsConstraintAxisLimitMode } from "../IPhysicsEnginePlugin";
3
- import type { PhysicsShapeParameters, IPhysicsEnginePluginV2, PhysicsMassProperties, IPhysicsCollisionEvent } from "../IPhysicsEnginePlugin";
3
+ import type { PhysicsShapeParameters, IPhysicsEnginePluginV2, PhysicsMassProperties, IPhysicsCollisionEvent, IBasePhysicsCollisionEvent } from "../IPhysicsEnginePlugin";
4
4
  import type { IRaycastQuery, PhysicsRaycastResult } from "../../physicsRaycastResult";
5
5
  import type { PhysicsBody } from "../physicsBody";
6
6
  import type { PhysicsConstraint } from "../physicsConstraint";
@@ -45,9 +45,17 @@ export declare class HavokPlugin implements IPhysicsEnginePluginV2 {
45
45
  private _bodyBuffer;
46
46
  private _bodyCollisionObservable;
47
47
  /**
48
- *
48
+ * Observable for collision started and collision continued events
49
49
  */
50
50
  onCollisionObservable: Observable<IPhysicsCollisionEvent>;
51
+ /**
52
+ * Observable for collision ended events
53
+ */
54
+ onCollisionEndedObservable: Observable<IBasePhysicsCollisionEvent>;
55
+ /**
56
+ * Observable for trigger entered and trigger exited events
57
+ */
58
+ onTriggerCollisionObservable: Observable<IBasePhysicsCollisionEvent>;
51
59
  constructor(_useDeltaForWorldStep?: boolean, hpInjection?: any);
52
60
  /**
53
61
  * If this plugin is supported
@@ -349,6 +357,14 @@ export declare class HavokPlugin implements IPhysicsEnginePluginV2 {
349
357
  * same transformation.
350
358
  */
351
359
  setPhysicsBodyTransformation(body: PhysicsBody, node: TransformNode): void;
360
+ /**
361
+ * Set the target transformation (position and rotation) of the body, such that the body will set its velocity to reach that target
362
+ * @param body The physics body to set the target transformation for.
363
+ * @param position The target position
364
+ * @param rotation The target rotation
365
+ * @param instanceIndex The index of the instance in an instanced body
366
+ */
367
+ setTargetTransform(body: PhysicsBody, position: Vector3, rotation: Quaternion, instanceIndex?: number | undefined): void;
352
368
  /**
353
369
  * Sets the gravity factor of a body
354
370
  * @param body the physics body to set the gravity factor for
@@ -444,6 +460,12 @@ export declare class HavokPlugin implements IPhysicsEnginePluginV2 {
444
460
  *
445
461
  */
446
462
  getNumChildren(shape: PhysicsShape): number;
463
+ /**
464
+ * Marks the shape as a trigger
465
+ * @param shape the shape to mark as a trigger
466
+ * @param isTrigger if the shape is a trigger
467
+ */
468
+ setTrigger(shape: PhysicsShape, isTrigger: boolean): void;
447
469
  /**
448
470
  * Calculates the bounding box of a given physics shape.
449
471
  *
@@ -680,6 +702,7 @@ export declare class HavokPlugin implements IPhysicsEnginePluginV2 {
680
702
  * @param enabled
681
703
  */
682
704
  setCollisionCallbackEnabled(body: PhysicsBody, enabled: boolean): void;
705
+ private _notifyTriggers;
683
706
  /**
684
707
  * Runs thru all detected collisions and filter by body
685
708
  */
@@ -701,5 +724,7 @@ export declare class HavokPlugin implements IPhysicsEnginePluginV2 {
701
724
  private _constraintAxisToNative;
702
725
  private _nativeToLimitMode;
703
726
  private _limitModeToNative;
727
+ private _nativeCollisionValueToCollisionType;
728
+ private _nativeTriggerCollisionValueToCollisionType;
704
729
  }
705
730
  export {};
@@ -1,5 +1,5 @@
1
1
  import { Matrix, Quaternion, TmpVectors, Vector3 } from "../../../Maths/math.vector.js";
2
- import { PhysicsShapeType, PhysicsConstraintType, PhysicsMotionType, PhysicsConstraintMotorType, PhysicsConstraintAxis, PhysicsConstraintAxisLimitMode, } from "../IPhysicsEnginePlugin.js";
2
+ import { PhysicsShapeType, PhysicsConstraintType, PhysicsMotionType, PhysicsConstraintMotorType, PhysicsConstraintAxis, PhysicsConstraintAxisLimitMode, PhysicsEventType, } from "../IPhysicsEnginePlugin.js";
3
3
  import { Logger } from "../../../Misc/logger.js";
4
4
  import { PhysicsMaterialCombineMode } from "../physicsMaterial.js";
5
5
  import { PhysicsShape } from "../physicsShape.js";
@@ -167,10 +167,10 @@ class ContactPoint {
167
167
  }
168
168
  class CollisionEvent {
169
169
  constructor() {
170
- //public eventType: number = 0; //0,1
171
170
  this.contactOnA = new ContactPoint(); //1
172
171
  this.contactOnB = new ContactPoint();
173
172
  this.impulseApplied = 0;
173
+ this.type = 0;
174
174
  }
175
175
  static readToRef(buffer, offset, eventOut) {
176
176
  const intBuf = new Int32Array(buffer, offset);
@@ -184,6 +184,20 @@ class CollisionEvent {
184
184
  eventOut.contactOnB.position.set(floatBuf[offB + 8], floatBuf[offB + 9], floatBuf[offB + 10]);
185
185
  eventOut.contactOnB.normal.set(floatBuf[offB + 11], floatBuf[offB + 12], floatBuf[offB + 13]);
186
186
  eventOut.impulseApplied = floatBuf[offB + 13 + 3];
187
+ eventOut.type = intBuf[0];
188
+ }
189
+ }
190
+ class TriggerEvent {
191
+ constructor() {
192
+ this.bodyIdA = BigInt(0);
193
+ this.bodyIdB = BigInt(0);
194
+ this.type = 0;
195
+ }
196
+ static readToRef(buffer, offset, eventOut) {
197
+ const intBuf = new Int32Array(buffer, offset);
198
+ eventOut.type = intBuf[0];
199
+ eventOut.bodyIdA = BigInt(intBuf[2]);
200
+ eventOut.bodyIdB = BigInt(intBuf[6]);
187
201
  }
188
202
  }
189
203
  /**
@@ -206,9 +220,17 @@ export class HavokPlugin {
206
220
  this._bodies = new Map();
207
221
  this._bodyCollisionObservable = new Map();
208
222
  /**
209
- *
223
+ * Observable for collision started and collision continued events
210
224
  */
211
225
  this.onCollisionObservable = new Observable();
226
+ /**
227
+ * Observable for collision ended events
228
+ */
229
+ this.onCollisionEndedObservable = new Observable();
230
+ /**
231
+ * Observable for trigger entered and trigger exited events
232
+ */
233
+ this.onTriggerCollisionObservable = new Observable();
212
234
  if (typeof hpInjection === "function") {
213
235
  Logger.Error("Havok is not ready. Please make sure you await HK() before using the plugin.");
214
236
  return;
@@ -281,6 +303,7 @@ export class HavokPlugin {
281
303
  this.sync(physicsBody);
282
304
  }
283
305
  this._notifyCollisions();
306
+ this._notifyTriggers();
284
307
  }
285
308
  /**
286
309
  * Returns the version of the physics engine plugin.
@@ -879,6 +902,18 @@ export class HavokPlugin {
879
902
  this._hknp.HP_Body_SetQTransform(body._pluginData.hpBodyId, this._getTransformInfos(node));
880
903
  }
881
904
  }
905
+ /**
906
+ * Set the target transformation (position and rotation) of the body, such that the body will set its velocity to reach that target
907
+ * @param body The physics body to set the target transformation for.
908
+ * @param position The target position
909
+ * @param rotation The target rotation
910
+ * @param instanceIndex The index of the instance in an instanced body
911
+ */
912
+ setTargetTransform(body, position, rotation, instanceIndex) {
913
+ this._applyToBodyOrInstances(body, (pluginRef) => {
914
+ this._hknp.HP_Body_SetTargetQTransform(pluginRef.hpBodyId, [this._bVecToV3(position), this._bQuatToV4(rotation)]);
915
+ }, instanceIndex);
916
+ }
882
917
  /**
883
918
  * Sets the gravity factor of a body
884
919
  * @param body the physics body to set the gravity factor for
@@ -1110,6 +1145,14 @@ export class HavokPlugin {
1110
1145
  getNumChildren(shape) {
1111
1146
  return this._hknp.HP_Shape_GetNumChildren(shape._pluginData)[1];
1112
1147
  }
1148
+ /**
1149
+ * Marks the shape as a trigger
1150
+ * @param shape the shape to mark as a trigger
1151
+ * @param isTrigger if the shape is a trigger
1152
+ */
1153
+ setTrigger(shape, isTrigger) {
1154
+ this._hknp.HP_Shape_SetTrigger(shape._pluginData, isTrigger);
1155
+ }
1113
1156
  /**
1114
1157
  * Calculates the bounding box of a given physics shape.
1115
1158
  *
@@ -1556,6 +1599,24 @@ export class HavokPlugin {
1556
1599
  this._hknp.HP_Body_SetEventMask(body._pluginData.hpBodyId, enabled ? collideEvents : 0);
1557
1600
  }
1558
1601
  }
1602
+ _notifyTriggers() {
1603
+ let eventAddress = this._hknp.HP_World_GetTriggerEvents(this.world)[1];
1604
+ const event = new TriggerEvent();
1605
+ while (eventAddress) {
1606
+ TriggerEvent.readToRef(this._hknp.HEAPU8.buffer, eventAddress, event);
1607
+ const bodyInfoA = this._bodies.get(event.bodyIdA);
1608
+ const bodyInfoB = this._bodies.get(event.bodyIdB);
1609
+ const triggerCollisionInfo = {
1610
+ collider: bodyInfoA.body,
1611
+ colliderIndex: bodyInfoA.index,
1612
+ collidedAgainst: bodyInfoB.body,
1613
+ collidedAgainstIndex: bodyInfoB.index,
1614
+ type: this._nativeTriggerCollisionValueToCollisionType(event.type),
1615
+ };
1616
+ this.onTriggerCollisionObservable.notifyObservers(triggerCollisionInfo);
1617
+ eventAddress = this._hknp.HP_World_GetNextTriggerEvent(this.world, eventAddress);
1618
+ }
1619
+ }
1559
1620
  /**
1560
1621
  * Runs thru all detected collisions and filter by body
1561
1622
  */
@@ -1565,8 +1626,6 @@ export class HavokPlugin {
1565
1626
  const worldAddr = Number(this.world);
1566
1627
  while (eventAddress) {
1567
1628
  CollisionEvent.readToRef(this._hknp.HEAPU8.buffer, eventAddress, event);
1568
- event.contactOnB.position.subtractToRef(event.contactOnA.position, this._tmpVec3[0]);
1569
- const distance = Vector3.Dot(this._tmpVec3[0], event.contactOnA.normal);
1570
1629
  const bodyInfoA = this._bodies.get(event.contactOnA.bodyId);
1571
1630
  const bodyInfoB = this._bodies.get(event.contactOnB.bodyId);
1572
1631
  const collisionInfo = {
@@ -1574,13 +1633,21 @@ export class HavokPlugin {
1574
1633
  colliderIndex: bodyInfoA.index,
1575
1634
  collidedAgainst: bodyInfoB.body,
1576
1635
  collidedAgainstIndex: bodyInfoB.index,
1577
- point: event.contactOnA.position,
1578
- distance: distance,
1579
- impulse: event.impulseApplied,
1580
- normal: event.contactOnA.normal,
1636
+ type: this._nativeCollisionValueToCollisionType(event.type),
1581
1637
  };
1582
- this.onCollisionObservable.notifyObservers(collisionInfo);
1583
- if (this._bodyCollisionObservable.size) {
1638
+ if (collisionInfo.type === PhysicsEventType.COLLISION_FINISHED) {
1639
+ this.onCollisionEndedObservable.notifyObservers(collisionInfo);
1640
+ }
1641
+ else {
1642
+ event.contactOnB.position.subtractToRef(event.contactOnA.position, this._tmpVec3[0]);
1643
+ const distance = Vector3.Dot(this._tmpVec3[0], event.contactOnA.normal);
1644
+ collisionInfo.point = event.contactOnA.position;
1645
+ collisionInfo.distance = distance;
1646
+ collisionInfo.impulse = event.impulseApplied;
1647
+ collisionInfo.normal = event.contactOnA.normal;
1648
+ this.onCollisionObservable.notifyObservers(collisionInfo);
1649
+ }
1650
+ if (this._bodyCollisionObservable.size && collisionInfo.type !== PhysicsEventType.COLLISION_FINISHED) {
1584
1651
  const observableA = this._bodyCollisionObservable.get(event.contactOnA.bodyId);
1585
1652
  const observableB = this._bodyCollisionObservable.get(event.contactOnB.bodyId);
1586
1653
  if (observableA) {
@@ -1695,5 +1762,25 @@ export class HavokPlugin {
1695
1762
  return this._hknp.ConstraintAxisLimitMode.LOCKED;
1696
1763
  }
1697
1764
  }
1765
+ _nativeCollisionValueToCollisionType(type) {
1766
+ switch (type) {
1767
+ case this._hknp.EventType.COLLISION_STARTED.value:
1768
+ return PhysicsEventType.COLLISION_STARTED;
1769
+ case this._hknp.EventType.COLLISION_FINISHED.value:
1770
+ return PhysicsEventType.COLLISION_FINISHED;
1771
+ case this._hknp.EventType.COLLISION_CONTINUED.value:
1772
+ return PhysicsEventType.COLLISION_CONTINUED;
1773
+ }
1774
+ return PhysicsEventType.COLLISION_STARTED;
1775
+ }
1776
+ _nativeTriggerCollisionValueToCollisionType(type) {
1777
+ switch (type) {
1778
+ case 8:
1779
+ return PhysicsEventType.TRIGGER_ENTERED;
1780
+ case 16:
1781
+ return PhysicsEventType.TRIGGER_EXITED;
1782
+ }
1783
+ return PhysicsEventType.TRIGGER_ENTERED;
1784
+ }
1698
1785
  }
1699
1786
  //# sourceMappingURL=havokPlugin.js.map