@onerjs/core 8.52.7 → 8.52.9

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 (1060) hide show
  1. package/Actions/actionManager.d.ts +1 -1
  2. package/Actions/actionManager.js +8 -5
  3. package/Actions/actionManager.js.map +1 -1
  4. package/Animations/animatable.core.d.ts +1 -1
  5. package/Animations/animatable.core.js +2 -2
  6. package/Animations/animatable.core.js.map +1 -1
  7. package/Animations/animationPropertiesOverride.js +1 -1
  8. package/Animations/animationPropertiesOverride.js.map +1 -1
  9. package/Animations/animatorAvatar.d.ts +2 -2
  10. package/Animations/animatorAvatar.js +3 -3
  11. package/Animations/animatorAvatar.js.map +1 -1
  12. package/Animations/pathCursor.d.ts +1 -1
  13. package/Animations/pathCursor.js +1 -1
  14. package/Animations/pathCursor.js.map +1 -1
  15. package/Animations/runtimeAnimation.d.ts +1 -1
  16. package/Animations/runtimeAnimation.js +2 -2
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Audio/analyser.js +1 -1
  19. package/Audio/analyser.js.map +1 -1
  20. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
  21. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  22. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.d.ts +2 -0
  23. package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js.map +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +13 -3
  25. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js +16 -0
  26. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
  28. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  29. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  30. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  31. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  32. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  33. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +4 -0
  34. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +22 -0
  35. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  36. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  37. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  38. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  39. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +6 -0
  40. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +22 -5
  41. package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -1
  42. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  43. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  44. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  45. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  46. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  47. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  48. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  49. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  50. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  51. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  52. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  53. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  54. package/Behaviors/Cameras/framingBehavior.js +2 -2
  55. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  56. package/Behaviors/Cameras/interpolatingBehavior.d.ts +13 -1
  57. package/Behaviors/Cameras/interpolatingBehavior.js +13 -1
  58. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  60. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  61. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  62. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  63. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  64. package/Behaviors/Meshes/followBehavior.js +1 -1
  65. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  66. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  67. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  68. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  69. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  70. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  71. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  72. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  73. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  74. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  75. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  76. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  77. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  78. package/Bones/boneIKController.d.ts +1 -1
  79. package/Bones/boneIKController.js +1 -1
  80. package/Bones/boneIKController.js.map +1 -1
  81. package/Bones/boneLookController.d.ts +1 -1
  82. package/Bones/boneLookController.js +1 -1
  83. package/Bones/boneLookController.js.map +1 -1
  84. package/Bones/skeleton.d.ts +2 -2
  85. package/Bones/skeleton.functions.d.ts +1 -1
  86. package/Bones/skeleton.functions.js +3 -3
  87. package/Bones/skeleton.functions.js.map +1 -1
  88. package/Bones/skeleton.js +3 -4
  89. package/Bones/skeleton.js.map +1 -1
  90. package/Buffers/buffer.align.pure.js +6 -0
  91. package/Buffers/buffer.align.pure.js.map +1 -1
  92. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  93. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  94. package/Buffers/buffer.pure.d.ts +8 -0
  95. package/Buffers/buffer.pure.js +31 -2
  96. package/Buffers/buffer.pure.js.map +1 -1
  97. package/Buffers/bufferUtils.js +17 -5
  98. package/Buffers/bufferUtils.js.map +1 -1
  99. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  100. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  101. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  102. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  103. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  104. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  105. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  106. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  107. package/Cameras/Inputs/flyCameraKeyboardInput.js +2 -2
  108. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  109. package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
  110. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  111. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  112. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  113. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  114. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  115. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  116. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  117. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +2 -2
  118. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  119. package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
  120. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  121. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  122. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  123. package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
  124. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  125. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +1 -1
  126. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  127. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  128. package/Cameras/Limits/geospatialLimits.js +1 -1
  129. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  130. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  131. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  132. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  133. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  134. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  135. package/Cameras/RigModes/vrRigMode.js +2 -2
  136. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  137. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  138. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  139. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  140. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  141. package/Cameras/VR/vrCameraMetrics.js +1 -1
  142. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  143. package/Cameras/cameraInputsManager.d.ts +1 -1
  144. package/Cameras/cameraInputsManager.js +1 -1
  145. package/Cameras/cameraInputsManager.js.map +1 -1
  146. package/Cameras/targetCamera.pure.js +3 -0
  147. package/Cameras/targetCamera.pure.js.map +1 -1
  148. package/Collisions/collider.d.ts +1 -1
  149. package/Collisions/collider.js +1 -1
  150. package/Collisions/collider.js.map +1 -1
  151. package/Collisions/gpuPicker.d.ts +1 -1
  152. package/Collisions/gpuPicker.js +5 -5
  153. package/Collisions/gpuPicker.js.map +1 -1
  154. package/Collisions/meshCollisionData.d.ts +1 -1
  155. package/Collisions/meshCollisionData.js +1 -1
  156. package/Collisions/meshCollisionData.js.map +1 -1
  157. package/Collisions/pickingInfo.d.ts +1 -1
  158. package/Collisions/pickingInfo.js +2 -2
  159. package/Collisions/pickingInfo.js.map +1 -1
  160. package/Compute/computeEffect.d.ts +6 -0
  161. package/Compute/computeEffect.js +3 -0
  162. package/Compute/computeEffect.js.map +1 -1
  163. package/Compute/computeShader.pure.d.ts +4 -0
  164. package/Compute/computeShader.pure.js +1 -0
  165. package/Compute/computeShader.pure.js.map +1 -1
  166. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  167. package/Culling/Octrees/octreeBlock.js +1 -1
  168. package/Culling/Octrees/octreeBlock.js.map +1 -1
  169. package/Culling/boundingBox.d.ts +1 -1
  170. package/Culling/boundingBox.js +1 -1
  171. package/Culling/boundingBox.js.map +1 -1
  172. package/Culling/boundingInfo.d.ts +1 -1
  173. package/Culling/boundingInfo.js +1 -1
  174. package/Culling/boundingInfo.js.map +1 -1
  175. package/Culling/boundingSphere.d.ts +1 -1
  176. package/Culling/boundingSphere.js +1 -1
  177. package/Culling/boundingSphere.js.map +1 -1
  178. package/Culling/ray.core.d.ts +1 -1
  179. package/Culling/ray.core.js +1 -1
  180. package/Culling/ray.core.js.map +1 -1
  181. package/Debug/axesViewer.d.ts +1 -1
  182. package/Debug/axesViewer.js +3 -3
  183. package/Debug/axesViewer.js.map +1 -1
  184. package/Debug/boneAxesViewer.d.ts +1 -1
  185. package/Debug/boneAxesViewer.js +1 -1
  186. package/Debug/boneAxesViewer.js.map +1 -1
  187. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  188. package/Debug/directionalLightFrustumViewer.js +6 -6
  189. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  190. package/Debug/rayHelper.d.ts +1 -1
  191. package/Debug/rayHelper.js +2 -2
  192. package/Debug/rayHelper.js.map +1 -1
  193. package/Debug/skeletonViewer.d.ts +2 -2
  194. package/Debug/skeletonViewer.js +10 -10
  195. package/Debug/skeletonViewer.js.map +1 -1
  196. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  197. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  198. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  199. package/DeviceInput/webDeviceInputSystem.js +1 -1
  200. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  201. package/Engines/Extensions/engine.views.d.ts +1 -1
  202. package/Engines/Extensions/engine.views.js +1 -1
  203. package/Engines/Extensions/engine.views.js.map +1 -1
  204. package/Engines/Native/nativeHelpers.js +4 -1
  205. package/Engines/Native/nativeHelpers.js.map +1 -1
  206. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js +154 -2
  207. package/Engines/WebGPU/Extensions/engine.computeShader.pure.js.map +1 -1
  208. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  209. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  210. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  211. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  212. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  213. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  214. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  215. package/Engines/abstractEngine.pure.d.ts +7 -1
  216. package/Engines/abstractEngine.pure.js +34 -4
  217. package/Engines/abstractEngine.pure.js.map +1 -1
  218. package/Engines/constants.d.ts +4 -0
  219. package/Engines/constants.js +4 -0
  220. package/Engines/constants.js.map +1 -1
  221. package/Engines/engine.pure.d.ts +0 -7
  222. package/Engines/engine.pure.js +0 -34
  223. package/Engines/engine.pure.js.map +1 -1
  224. package/Engines/engineFactory.d.ts +2 -2
  225. package/Engines/engineFactory.js +3 -3
  226. package/Engines/engineFactory.js.map +1 -1
  227. package/Engines/thinNativeEngine.pure.js +2 -2
  228. package/Engines/thinNativeEngine.pure.js.map +1 -1
  229. package/Events/pointerEvents.d.ts +1 -1
  230. package/Events/pointerEvents.js +1 -1
  231. package/Events/pointerEvents.js.map +1 -1
  232. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  233. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  234. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  235. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  236. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  237. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  238. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  239. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  240. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  241. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  242. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +1 -1
  243. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  244. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  245. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  246. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  247. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  248. package/FlowGraph/flowGraphBlock.js +1 -1
  249. package/FlowGraph/flowGraphBlock.js.map +1 -1
  250. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  251. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  252. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  253. package/FlowGraph/flowGraphMath.d.ts +1 -1
  254. package/FlowGraph/flowGraphMath.js +1 -1
  255. package/FlowGraph/flowGraphMath.js.map +1 -1
  256. package/FlowGraph/flowGraphParser.js +1 -1
  257. package/FlowGraph/flowGraphParser.js.map +1 -1
  258. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  259. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  260. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  261. package/FlowGraph/flowGraphValidator.js.map +1 -1
  262. package/FlowGraph/serialization.js +4 -4
  263. package/FlowGraph/serialization.js.map +1 -1
  264. package/FlowGraph/utils.js.map +1 -1
  265. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  266. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  267. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  268. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  269. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  270. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  271. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  272. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  273. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  274. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  275. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  276. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  277. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  278. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  279. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  280. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  281. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  282. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  283. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  284. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  285. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  286. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  287. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  288. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  289. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  290. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  291. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  292. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  293. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  294. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  295. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  296. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  297. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  298. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  299. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  300. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  301. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  302. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  303. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  304. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  305. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  306. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  307. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  308. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  309. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  310. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  311. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  312. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  313. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  314. package/FrameGraph/frameGraphRenderContext.js +1 -1
  315. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  316. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  317. package/FrameGraph/frameGraphTextureManager.js +1 -1
  318. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  319. package/Gamepads/gamepadManager.js +1 -1
  320. package/Gamepads/gamepadManager.js.map +1 -1
  321. package/Gizmos/axisDragGizmo.d.ts +5 -5
  322. package/Gizmos/axisDragGizmo.js +6 -6
  323. package/Gizmos/axisDragGizmo.js.map +1 -1
  324. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  325. package/Gizmos/axisScaleGizmo.js +6 -6
  326. package/Gizmos/axisScaleGizmo.js.map +1 -1
  327. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  328. package/Gizmos/boundingBoxGizmo.js +7 -7
  329. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  330. package/Gizmos/cameraGizmo.d.ts +3 -3
  331. package/Gizmos/cameraGizmo.js +7 -7
  332. package/Gizmos/cameraGizmo.js.map +1 -1
  333. package/Gizmos/gizmo.d.ts +2 -2
  334. package/Gizmos/gizmo.js +3 -3
  335. package/Gizmos/gizmo.js.map +1 -1
  336. package/Gizmos/gizmoManager.d.ts +2 -2
  337. package/Gizmos/gizmoManager.js +2 -2
  338. package/Gizmos/gizmoManager.js.map +1 -1
  339. package/Gizmos/lightGizmo.d.ts +4 -4
  340. package/Gizmos/lightGizmo.js +11 -11
  341. package/Gizmos/lightGizmo.js.map +1 -1
  342. package/Gizmos/planeDragGizmo.d.ts +4 -4
  343. package/Gizmos/planeDragGizmo.js +5 -5
  344. package/Gizmos/planeDragGizmo.js.map +1 -1
  345. package/Gizmos/positionGizmo.d.ts +1 -1
  346. package/Gizmos/positionGizmo.js +2 -2
  347. package/Gizmos/positionGizmo.js.map +1 -1
  348. package/Gizmos/rotationGizmo.d.ts +3 -3
  349. package/Gizmos/rotationGizmo.js +3 -3
  350. package/Gizmos/rotationGizmo.js.map +1 -1
  351. package/Gizmos/scaleGizmo.d.ts +2 -2
  352. package/Gizmos/scaleGizmo.js +4 -4
  353. package/Gizmos/scaleGizmo.js.map +1 -1
  354. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  355. package/Gizmos/spatialAudioGizmo.js +6 -6
  356. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  357. package/Helpers/environmentHelper.d.ts +6 -6
  358. package/Helpers/environmentHelper.js +12 -12
  359. package/Helpers/environmentHelper.js.map +1 -1
  360. package/Helpers/materialConversionHelper.d.ts +1 -1
  361. package/Helpers/materialConversionHelper.js +1 -1
  362. package/Helpers/materialConversionHelper.js.map +1 -1
  363. package/Helpers/photoDome.d.ts +1 -1
  364. package/Helpers/photoDome.js +1 -1
  365. package/Helpers/photoDome.js.map +1 -1
  366. package/Helpers/textureDome.d.ts +4 -4
  367. package/Helpers/textureDome.js +6 -6
  368. package/Helpers/textureDome.js.map +1 -1
  369. package/Helpers/videoDome.d.ts +1 -1
  370. package/Helpers/videoDome.js +2 -2
  371. package/Helpers/videoDome.js.map +1 -1
  372. package/Inputs/scene.inputManager.d.ts +1 -1
  373. package/Inputs/scene.inputManager.js +1 -1
  374. package/Inputs/scene.inputManager.js.map +1 -1
  375. package/Instrumentation/sceneInstrumentation.js +1 -1
  376. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  377. package/Layers/effectLayer.d.ts +1 -1
  378. package/Layers/effectLayer.js +3 -3
  379. package/Layers/effectLayer.js.map +1 -1
  380. package/Layers/layer.d.ts +2 -2
  381. package/Layers/layer.js +4 -4
  382. package/Layers/layer.js.map +1 -1
  383. package/Layers/thinEffectLayer.d.ts +2 -2
  384. package/Layers/thinEffectLayer.js +3 -3
  385. package/Layers/thinEffectLayer.js.map +1 -1
  386. package/Layers/thinGlowLayer.d.ts +1 -1
  387. package/Layers/thinGlowLayer.js +3 -3
  388. package/Layers/thinGlowLayer.js.map +1 -1
  389. package/Layers/thinHighlightLayer.d.ts +1 -1
  390. package/Layers/thinHighlightLayer.js +3 -3
  391. package/Layers/thinHighlightLayer.js.map +1 -1
  392. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  393. package/Layers/thinSelectionOutlineLayer.js +3 -3
  394. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  395. package/Legacy/legacy.js +12 -1
  396. package/Legacy/legacy.js.map +1 -1
  397. package/LensFlares/lensFlare.d.ts +2 -2
  398. package/LensFlares/lensFlare.js +3 -3
  399. package/LensFlares/lensFlare.js.map +1 -1
  400. package/LensFlares/lensFlareSystem.d.ts +1 -1
  401. package/LensFlares/lensFlareSystem.js +6 -6
  402. package/LensFlares/lensFlareSystem.js.map +1 -1
  403. package/Lights/LTC/ltcTextureTool.js +1 -1
  404. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  405. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  406. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  407. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  408. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  409. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  410. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  411. package/Lights/Shadows/pure.d.ts +1 -0
  412. package/Lights/Shadows/pure.js +1 -0
  413. package/Lights/Shadows/pure.js.map +1 -1
  414. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  415. package/Lights/Shadows/shadowGenerator.js +7 -7
  416. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  417. package/Lights/areaLight.d.ts +1 -1
  418. package/Lights/areaLight.js +0 -1
  419. package/Lights/areaLight.js.map +1 -1
  420. package/Lights/light.d.ts +2 -2
  421. package/Lights/light.js +2 -2
  422. package/Lights/light.js.map +1 -1
  423. package/Lights/shadowLight.d.ts +1 -1
  424. package/Lights/shadowLight.js +1 -1
  425. package/Lights/shadowLight.js.map +1 -1
  426. package/Loading/sceneLoader.d.ts +2 -2
  427. package/Loading/sceneLoader.js +3 -3
  428. package/Loading/sceneLoader.js.map +1 -1
  429. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  430. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  431. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  432. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  433. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  434. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  435. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  436. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  437. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  438. package/Materials/Node/nodeMaterial.pure.js +68 -13
  439. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  440. package/Materials/Node/nodeMaterialDefault.js +14 -14
  441. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  442. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  443. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  444. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  445. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  446. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  447. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  448. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  449. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  450. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  451. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  452. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  453. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  454. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  455. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  456. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  457. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  458. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  459. package/Materials/PBR/pbrMaterial.pure.d.ts +6 -0
  460. package/Materials/PBR/pbrMaterial.pure.js +8 -0
  461. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  462. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  463. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  464. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  465. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  466. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  467. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  468. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  469. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  470. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  471. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  472. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  473. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  474. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  475. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  476. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  477. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  478. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  479. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  480. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  481. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  482. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  483. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  484. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  485. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  486. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  487. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  488. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  489. package/Materials/Textures/Packer/packer.d.ts +1 -1
  490. package/Materials/Textures/Packer/packer.js +6 -6
  491. package/Materials/Textures/Packer/packer.js.map +1 -1
  492. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  493. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  494. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  495. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js +17 -5
  496. package/Materials/Textures/Procedurals/noiseProceduralTexture.pure.js.map +1 -1
  497. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  498. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  499. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  500. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  501. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  502. package/Materials/Textures/prePassRenderTarget.js +1 -1
  503. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  504. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  505. package/Materials/Textures/rawCubeTexture.js +2 -2
  506. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  507. package/Materials/Textures/rawTexture.d.ts +1 -1
  508. package/Materials/Textures/rawTexture.js +1 -1
  509. package/Materials/Textures/rawTexture.js.map +1 -1
  510. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  511. package/Materials/Textures/rawTexture2DArray.js +1 -1
  512. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  513. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  514. package/Materials/Textures/rawTexture3D.js +1 -1
  515. package/Materials/Textures/rawTexture3D.js.map +1 -1
  516. package/Materials/Textures/refractionTexture.d.ts +1 -1
  517. package/Materials/Textures/refractionTexture.js +1 -1
  518. package/Materials/Textures/refractionTexture.js.map +1 -1
  519. package/Materials/Textures/textureMerger.d.ts +1 -1
  520. package/Materials/Textures/textureMerger.js +1 -1
  521. package/Materials/Textures/textureMerger.js.map +1 -1
  522. package/Materials/Textures/textureProcessor.d.ts +1 -1
  523. package/Materials/Textures/textureProcessor.js +2 -2
  524. package/Materials/Textures/textureProcessor.js.map +1 -1
  525. package/Materials/clipPlaneMaterialHelper.js +1 -1
  526. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  527. package/Materials/effect.pure.d.ts +2 -2
  528. package/Materials/effect.pure.js +12 -6
  529. package/Materials/effect.pure.js.map +1 -1
  530. package/Materials/effectRenderer.pure.js +4 -2
  531. package/Materials/effectRenderer.pure.js.map +1 -1
  532. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  533. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  534. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  535. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  536. package/Materials/material.detailMapConfiguration.js +39 -1
  537. package/Materials/material.detailMapConfiguration.js.map +1 -1
  538. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  539. package/Materials/materialHelper.geometryrendering.js +1 -1
  540. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  541. package/Materials/materialPluginFactoryExport.js +2 -2
  542. package/Materials/materialPluginFactoryExport.js.map +1 -1
  543. package/Materials/meshDebugPluginMaterial.pure.js +15 -13
  544. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  545. package/Materials/pushMaterial.d.ts +7 -1
  546. package/Materials/pushMaterial.js +7 -1
  547. package/Materials/pushMaterial.js.map +1 -1
  548. package/Materials/uniformBuffer.js +1 -1
  549. package/Materials/uniformBuffer.js.map +1 -1
  550. package/Maths/math.axis.d.ts +1 -1
  551. package/Maths/math.axis.js +1 -1
  552. package/Maths/math.axis.js.map +1 -1
  553. package/Maths/math.d.ts +2 -2
  554. package/Maths/math.functions.d.ts +1 -1
  555. package/Maths/math.functions.js +1 -1
  556. package/Maths/math.functions.js.map +1 -1
  557. package/Maths/math.isovector.d.ts +1 -1
  558. package/Maths/math.isovector.js +1 -1
  559. package/Maths/math.isovector.js.map +1 -1
  560. package/Maths/math.js +2 -2
  561. package/Maths/math.js.map +1 -1
  562. package/Maths/math.path.d.ts +1 -1
  563. package/Maths/math.path.js +1 -1
  564. package/Maths/math.path.js.map +1 -1
  565. package/Maths/math.plane.d.ts +1 -1
  566. package/Maths/math.plane.js +1 -1
  567. package/Maths/math.plane.js.map +1 -1
  568. package/Maths/math.polar.d.ts +1 -1
  569. package/Maths/math.polar.js +1 -1
  570. package/Maths/math.polar.js.map +1 -1
  571. package/Maths/math.vertexFormat.d.ts +1 -1
  572. package/Maths/math.vertexFormat.js +1 -1
  573. package/Maths/math.vertexFormat.js.map +1 -1
  574. package/Maths/pure.d.ts +1 -0
  575. package/Maths/pure.js +1 -0
  576. package/Maths/pure.js.map +1 -1
  577. package/Meshes/Builders/geodesicBuilder.js +1 -1
  578. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  579. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  580. package/Meshes/Builders/goldbergBuilder.js +4 -4
  581. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  582. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  583. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  584. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  585. package/Meshes/Builders/textBuilder.d.ts +2 -2
  586. package/Meshes/Builders/textBuilder.js +4 -4
  587. package/Meshes/Builders/textBuilder.js.map +1 -1
  588. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  589. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  590. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  591. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  592. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  593. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  594. package/Meshes/Compression/dracoCodec.js +1 -1
  595. package/Meshes/Compression/dracoCodec.js.map +1 -1
  596. package/Meshes/Compression/dracoDecoder.js +1 -1
  597. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  598. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  599. package/Meshes/Compression/dracoEncoder.js +2 -2
  600. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  601. package/Meshes/Compression/meshoptCompression.js +1 -1
  602. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  603. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +9 -3
  604. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  605. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  606. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  607. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  608. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  609. package/Meshes/Node/nodeGeometry.js +4 -4
  610. package/Meshes/Node/nodeGeometry.js.map +1 -1
  611. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  612. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  613. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  614. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  615. package/Meshes/abstractMesh.hotSpot.js +2 -2
  616. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  617. package/Meshes/abstractMesh.pure.js +2 -13
  618. package/Meshes/abstractMesh.pure.js.map +1 -1
  619. package/Meshes/buffer.d.ts +1 -1
  620. package/Meshes/buffer.js +1 -1
  621. package/Meshes/buffer.js.map +1 -1
  622. package/Meshes/csg.d.ts +3 -3
  623. package/Meshes/csg.js +4 -4
  624. package/Meshes/csg.js.map +1 -1
  625. package/Meshes/csg2.d.ts +1 -1
  626. package/Meshes/csg2.js +4 -4
  627. package/Meshes/csg2.js.map +1 -1
  628. package/Meshes/geodesicMesh.d.ts +1 -1
  629. package/Meshes/geodesicMesh.js +1 -1
  630. package/Meshes/geodesicMesh.js.map +1 -1
  631. package/Meshes/geometry.d.ts +2 -2
  632. package/Meshes/geometry.js +4 -4
  633. package/Meshes/geometry.js.map +1 -1
  634. package/Meshes/lattice.d.ts +1 -1
  635. package/Meshes/lattice.js +1 -1
  636. package/Meshes/lattice.js.map +1 -1
  637. package/Meshes/lattice.material.d.ts +1 -1
  638. package/Meshes/lattice.material.js +1 -1
  639. package/Meshes/lattice.material.js.map +1 -1
  640. package/Meshes/mesh.vertexData.d.ts +2 -2
  641. package/Meshes/mesh.vertexData.js +3 -4
  642. package/Meshes/mesh.vertexData.js.map +1 -1
  643. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  644. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  645. package/Meshes/meshBuilder.d.ts +18 -18
  646. package/Meshes/meshBuilder.js +18 -18
  647. package/Meshes/meshBuilder.js.map +1 -1
  648. package/Meshes/meshSimplification.d.ts +1 -1
  649. package/Meshes/meshSimplification.js +4 -4
  650. package/Meshes/meshSimplification.js.map +1 -1
  651. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  652. package/Meshes/meshUVSpaceRenderer.js +0 -1
  653. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  654. package/Meshes/meshUtils.d.ts +1 -1
  655. package/Meshes/meshUtils.js +2 -2
  656. package/Meshes/meshUtils.js.map +1 -1
  657. package/Meshes/polygonMesh.d.ts +2 -2
  658. package/Meshes/polygonMesh.js +3 -3
  659. package/Meshes/polygonMesh.js.map +1 -1
  660. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  661. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  662. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  663. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  664. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  665. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  666. package/Misc/areaLightsTextureTools.d.ts +1 -1
  667. package/Misc/areaLightsTextureTools.js +3 -3
  668. package/Misc/areaLightsTextureTools.js.map +1 -1
  669. package/Misc/assetsManager.d.ts +4 -4
  670. package/Misc/assetsManager.js +5 -5
  671. package/Misc/assetsManager.js.map +1 -1
  672. package/Misc/basisWorker.js +1 -1
  673. package/Misc/basisWorker.js.map +1 -1
  674. package/Misc/brdfTextureTools.js +1 -1
  675. package/Misc/brdfTextureTools.js.map +1 -1
  676. package/Misc/copyTextureToTexture.d.ts +1 -1
  677. package/Misc/copyTextureToTexture.js +1 -1
  678. package/Misc/copyTextureToTexture.js.map +1 -1
  679. package/Misc/decorators.serialization.js +2 -2
  680. package/Misc/decorators.serialization.js.map +1 -1
  681. package/Misc/depthReducer.d.ts +2 -2
  682. package/Misc/depthReducer.js +2 -2
  683. package/Misc/depthReducer.js.map +1 -1
  684. package/Misc/gradients.d.ts +1 -1
  685. package/Misc/gradients.js +1 -1
  686. package/Misc/gradients.js.map +1 -1
  687. package/Misc/greasedLineTools.d.ts +1 -1
  688. package/Misc/greasedLineTools.js +3 -3
  689. package/Misc/greasedLineTools.js.map +1 -1
  690. package/Misc/halfFloat.d.ts +17 -0
  691. package/Misc/halfFloat.js +131 -0
  692. package/Misc/halfFloat.js.map +1 -0
  693. package/Misc/khronosTextureContainer2.js +1 -1
  694. package/Misc/khronosTextureContainer2.js.map +1 -1
  695. package/Misc/meshExploder.js +1 -1
  696. package/Misc/meshExploder.js.map +1 -1
  697. package/Misc/pivotTools.js +1 -1
  698. package/Misc/pivotTools.js.map +1 -1
  699. package/Misc/rgbdTextureTools.js +1 -1
  700. package/Misc/rgbdTextureTools.js.map +1 -1
  701. package/Misc/sceneOptimizer.js +1 -1
  702. package/Misc/sceneOptimizer.js.map +1 -1
  703. package/Misc/sceneRecorder.js +7 -7
  704. package/Misc/sceneRecorder.js.map +1 -1
  705. package/Misc/sceneSerializer.js +3 -3
  706. package/Misc/sceneSerializer.js.map +1 -1
  707. package/Misc/snapshotRenderingHelper.js +1 -1
  708. package/Misc/snapshotRenderingHelper.js.map +1 -1
  709. package/Misc/textureTools.d.ts +3 -13
  710. package/Misc/textureTools.js +6 -64
  711. package/Misc/textureTools.js.map +1 -1
  712. package/Misc/thinMinMaxReducer.d.ts +1 -1
  713. package/Misc/thinMinMaxReducer.js +1 -1
  714. package/Misc/thinMinMaxReducer.js.map +1 -1
  715. package/Misc/tools.internals.js +1 -1
  716. package/Misc/tools.internals.js.map +1 -1
  717. package/Misc/tools.pure.js +11 -4
  718. package/Misc/tools.pure.js.map +1 -1
  719. package/Misc/trajectoryClassifier.d.ts +1 -1
  720. package/Misc/trajectoryClassifier.js +1 -1
  721. package/Misc/trajectoryClassifier.js.map +1 -1
  722. package/Misc/videoRecorder.js +1 -1
  723. package/Misc/videoRecorder.js.map +1 -1
  724. package/Misc/virtualJoystick.d.ts +1 -1
  725. package/Misc/virtualJoystick.js +1 -1
  726. package/Misc/virtualJoystick.js.map +1 -1
  727. package/Morph/morphTarget.js +1 -1
  728. package/Morph/morphTarget.js.map +1 -1
  729. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  730. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  731. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  732. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  733. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  734. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  735. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  736. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  737. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  738. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  739. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  740. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  741. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  742. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  743. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  744. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  745. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  746. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  747. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  748. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  749. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  750. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  751. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  752. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  753. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  754. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  755. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  756. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  757. package/Particles/Node/nodeParticleBuildState.js +2 -2
  758. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  759. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  760. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  761. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  762. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  763. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  764. package/Particles/attractor.d.ts +1 -1
  765. package/Particles/attractor.js +1 -1
  766. package/Particles/attractor.js.map +1 -1
  767. package/Particles/computeShaderParticleSystem.pure.js +5 -1
  768. package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
  769. package/Particles/flowMap.d.ts +7 -1
  770. package/Particles/flowMap.js +7 -1
  771. package/Particles/flowMap.js.map +1 -1
  772. package/Particles/gpuParticleSystem.pure.d.ts +1 -0
  773. package/Particles/gpuParticleSystem.pure.js +17 -1
  774. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  775. package/Particles/particle.d.ts +2 -2
  776. package/Particles/particle.js +2 -2
  777. package/Particles/particle.js.map +1 -1
  778. package/Particles/particleHelper.js +5 -5
  779. package/Particles/particleHelper.js.map +1 -1
  780. package/Particles/particleSystem.functions.d.ts +1 -1
  781. package/Particles/particleSystem.functions.js +1 -1
  782. package/Particles/particleSystem.functions.js.map +1 -1
  783. package/Particles/particleSystemSet.d.ts +1 -1
  784. package/Particles/particleSystemSet.js +5 -5
  785. package/Particles/particleSystemSet.js.map +1 -1
  786. package/Particles/pointsCloudSystem.d.ts +1 -1
  787. package/Particles/pointsCloudSystem.js +6 -6
  788. package/Particles/pointsCloudSystem.js.map +1 -1
  789. package/Particles/solidParticle.d.ts +2 -2
  790. package/Particles/solidParticle.js +3 -3
  791. package/Particles/solidParticle.js.map +1 -1
  792. package/Particles/solidParticleSystem.d.ts +4 -4
  793. package/Particles/solidParticleSystem.js +7 -7
  794. package/Particles/solidParticleSystem.js.map +1 -1
  795. package/Particles/subEmitter.js +1 -1
  796. package/Particles/subEmitter.js.map +1 -1
  797. package/Particles/thinParticleSystem.function.js +2 -2
  798. package/Particles/thinParticleSystem.function.js.map +1 -1
  799. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  800. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  801. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  802. package/Physics/castingResult.d.ts +1 -1
  803. package/Physics/castingResult.js +1 -1
  804. package/Physics/castingResult.js.map +1 -1
  805. package/Physics/physicsHelper.d.ts +1 -1
  806. package/Physics/physicsHelper.js +4 -4
  807. package/Physics/physicsHelper.js.map +1 -1
  808. package/Physics/physicsImpostor.d.ts +1 -1
  809. package/Physics/physicsImpostor.js +1 -1
  810. package/Physics/physicsImpostor.js.map +1 -1
  811. package/Physics/physicsRaycastResult.d.ts +1 -1
  812. package/Physics/physicsRaycastResult.js +1 -1
  813. package/Physics/physicsRaycastResult.js.map +1 -1
  814. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  815. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  816. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  817. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  818. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  819. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  820. package/Physics/v1/physicsEngine.d.ts +1 -1
  821. package/Physics/v1/physicsEngine.js +1 -1
  822. package/Physics/v1/physicsEngine.js.map +1 -1
  823. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  824. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  825. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  826. package/Physics/v2/characterController.d.ts +2 -2
  827. package/Physics/v2/characterController.js +2 -2
  828. package/Physics/v2/characterController.js.map +1 -1
  829. package/Physics/v2/physicsAggregate.d.ts +1 -1
  830. package/Physics/v2/physicsAggregate.js +1 -1
  831. package/Physics/v2/physicsAggregate.js.map +1 -1
  832. package/Physics/v2/physicsBody.d.ts +1 -1
  833. package/Physics/v2/physicsBody.js +1 -1
  834. package/Physics/v2/physicsBody.js.map +1 -1
  835. package/Physics/v2/physicsEngine.d.ts +1 -1
  836. package/Physics/v2/physicsEngine.js +1 -1
  837. package/Physics/v2/physicsEngine.js.map +1 -1
  838. package/Physics/v2/physicsShape.d.ts +1 -1
  839. package/Physics/v2/physicsShape.js +1 -1
  840. package/Physics/v2/physicsShape.js.map +1 -1
  841. package/Physics/v2/ragdoll.d.ts +2 -2
  842. package/Physics/v2/ragdoll.js +2 -2
  843. package/Physics/v2/ragdoll.js.map +1 -1
  844. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  845. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  846. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  847. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  848. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  849. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  850. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  851. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  852. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  853. package/PostProcesses/bloomEffect.d.ts +1 -1
  854. package/PostProcesses/bloomEffect.js +4 -4
  855. package/PostProcesses/bloomEffect.js.map +1 -1
  856. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  857. package/PostProcesses/depthOfFieldEffect.js +3 -3
  858. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  859. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  860. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  861. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  862. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  863. package/PostProcesses/highlightsPostProcess.js +1 -1
  864. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  865. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  866. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  867. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  868. package/PostProcesses/postProcessManager.d.ts +3 -0
  869. package/PostProcesses/postProcessManager.js +4 -1
  870. package/PostProcesses/postProcessManager.js.map +1 -1
  871. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  872. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  873. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  874. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  875. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  876. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  877. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  878. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  879. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  880. package/PostProcesses/thinBloomEffect.js +1 -1
  881. package/PostProcesses/thinBloomEffect.js.map +1 -1
  882. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  883. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  884. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  885. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  886. package/PostProcesses/thinBlurPostProcess.js +1 -1
  887. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  888. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  889. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  890. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  891. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  892. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  893. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  894. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  895. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  896. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  897. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  898. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  899. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  900. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  901. package/PostProcesses/thinCustomPostProcess.js +1 -1
  902. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  903. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  904. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  905. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  906. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  907. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  908. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  909. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  910. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  911. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  912. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  913. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  914. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  915. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  916. package/PostProcesses/thinFilterPostProcess.js +2 -2
  917. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  918. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  919. package/PostProcesses/thinGrainPostProcess.js +1 -1
  920. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  921. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  922. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  923. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  924. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  925. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  926. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  927. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  928. package/PostProcesses/thinPassPostProcess.js +1 -1
  929. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  930. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  931. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  932. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  933. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  934. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  935. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  936. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  937. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  938. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  939. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  940. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  941. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  942. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  943. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  944. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  945. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  946. package/PostProcesses/thinSSRPostProcess.js +2 -2
  947. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  948. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  949. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  950. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  951. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  952. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  953. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  954. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  955. package/PostProcesses/thinTAAPostProcess.js +4 -4
  956. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  957. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  958. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  959. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  960. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  961. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  962. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  963. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  964. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  965. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  966. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  967. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  968. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  969. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  970. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  971. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  972. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  973. package/Rendering/depthPeelingRenderer.js +2 -2
  974. package/Rendering/depthPeelingRenderer.js.map +1 -1
  975. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  976. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  977. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  978. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  979. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  980. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  981. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  982. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  983. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  984. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  985. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  986. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  987. package/Rendering/iblCdfGenerator.d.ts +3 -3
  988. package/Rendering/iblCdfGenerator.js +5 -5
  989. package/Rendering/iblCdfGenerator.js.map +1 -1
  990. package/Rendering/renderingGroup.js +1 -1
  991. package/Rendering/renderingGroup.js.map +1 -1
  992. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  993. package/Rendering/subSurfaceConfiguration.js +2 -2
  994. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  995. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  996. package/Rendering/utilityLayerRenderer.js +4 -4
  997. package/Rendering/utilityLayerRenderer.js.map +1 -1
  998. package/Shaders/ssao2.fragment.js +10 -2
  999. package/Shaders/ssao2.fragment.js.map +1 -1
  1000. package/ShadersWGSL/gpuRenderParticles.fragment.d.ts +5 -0
  1001. package/ShadersWGSL/gpuRenderParticles.fragment.js +50 -0
  1002. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -0
  1003. package/ShadersWGSL/gpuRenderParticles.vertex.d.ts +5 -0
  1004. package/ShadersWGSL/gpuRenderParticles.vertex.js +120 -0
  1005. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -0
  1006. package/ShadersWGSL/noise.fragment.d.ts +5 -0
  1007. package/ShadersWGSL/noise.fragment.js +18 -0
  1008. package/ShadersWGSL/noise.fragment.js.map +1 -0
  1009. package/ShadersWGSL/ssao2.fragment.js +10 -2
  1010. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  1011. package/SmartAssets/smartAssetSerializer.js +1 -1
  1012. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  1013. package/Sprites/sprite.d.ts +2 -2
  1014. package/Sprites/sprite.js +2 -2
  1015. package/Sprites/sprite.js.map +1 -1
  1016. package/Sprites/spriteManager.d.ts +2 -2
  1017. package/Sprites/spriteManager.js +4 -5
  1018. package/Sprites/spriteManager.js.map +1 -1
  1019. package/Sprites/spritePackedManager.js +1 -1
  1020. package/Sprites/spritePackedManager.js.map +1 -1
  1021. package/Sprites/spriteRenderer.js +2 -2
  1022. package/Sprites/spriteRenderer.js.map +1 -1
  1023. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  1024. package/XR/features/WebXRHitTestLegacy.js +2 -2
  1025. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  1026. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  1027. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  1028. package/XR/motionController/webXRGenericMotionController.js +2 -2
  1029. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  1030. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  1031. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1032. package/XR/webXRCamera.d.ts +3 -3
  1033. package/XR/webXRCamera.js +4 -4
  1034. package/XR/webXRCamera.js.map +1 -1
  1035. package/XR/webXRDefaultExperience.d.ts +4 -4
  1036. package/XR/webXRDefaultExperience.js +4 -4
  1037. package/XR/webXRDefaultExperience.js.map +1 -1
  1038. package/XR/webXREnterExitUI.js +1 -1
  1039. package/XR/webXREnterExitUI.js.map +1 -1
  1040. package/XR/webXRExperienceHelper.js +2 -2
  1041. package/XR/webXRExperienceHelper.js.map +1 -1
  1042. package/XR/webXRFeaturesManager.d.ts +47 -0
  1043. package/XR/webXRFeaturesManager.js +1 -1
  1044. package/XR/webXRFeaturesManager.js.map +1 -1
  1045. package/XR/webXRInput.js +1 -1
  1046. package/XR/webXRInput.js.map +1 -1
  1047. package/XR/webXRInputSource.js +4 -4
  1048. package/XR/webXRInputSource.js.map +1 -1
  1049. package/XR/webXRManagedOutputCanvas.js +1 -1
  1050. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1051. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1052. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1053. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1054. package/assetContainer.d.ts +4 -4
  1055. package/assetContainer.js +6 -6
  1056. package/assetContainer.js.map +1 -1
  1057. package/node.d.ts +1 -1
  1058. package/node.js +6 -2
  1059. package/node.js.map +1 -1
  1060. package/package.json +684 -3
@@ -1 +1 @@
1
- {"version":3,"file":"targetCamera.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Cameras/targetCamera.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsVector3, serializeAsMeshReference } from \"../Misc/decorators\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Camera } from \"./camera.pure\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { Quaternion, Matrix, Vector3, Vector2, TmpVectors } from \"../Maths/math.vector.pure\";\r\nimport { Epsilon } from \"../Maths/math.constants\";\r\nimport { Axis } from \"../Maths/math.axis\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh.pure\";\r\nimport { Node } from \"../node\";\r\n\r\n// Temporary cache variables to avoid allocations.\r\nconst TmpMatrix = /*#__PURE__*/ Matrix.Zero();\r\nconst TmpQuaternion = /*#__PURE__*/ Quaternion.Identity();\r\n\r\n/**\r\n * A target camera takes a mesh or position as a target and continues to look at it while it moves.\r\n * This is the base of the follow, arc rotate cameras and Free camera\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class TargetCamera extends Camera {\r\n private static _RigCamTransformMatrix = /*#__PURE__*/ new Matrix();\r\n private static _TargetTransformMatrix = /*#__PURE__*/ new Matrix();\r\n private static _TargetFocalPoint = /*#__PURE__*/ new Vector3();\r\n\r\n /**\r\n * Define the current direction the camera is moving to\r\n */\r\n public cameraDirection = new Vector3(0, 0, 0);\r\n /**\r\n * Define the current rotation the camera is rotating to\r\n */\r\n public cameraRotation = new Vector2(0, 0);\r\n\r\n /**\r\n * When set, the up vector of the camera will be updated by the rotation of the camera\r\n */\r\n @serialize()\r\n public updateUpVectorFromRotation = false;\r\n\r\n /**\r\n * Define the current rotation of the camera\r\n */\r\n @serializeAsVector3()\r\n public rotation: Vector3;\r\n\r\n /**\r\n * Define the current rotation of the camera as a quaternion to prevent Gimbal lock\r\n */\r\n public rotationQuaternion: Nullable<Quaternion>;\r\n\r\n /**\r\n * Define the current speed of the camera\r\n */\r\n @serialize()\r\n public speed = 2.0;\r\n\r\n /**\r\n * Add constraint to the camera to prevent it to move freely in all directions and\r\n * around all axis.\r\n */\r\n public noRotationConstraint = false;\r\n\r\n /**\r\n * Reverses mouselook direction to 'natural' panning as opposed to traditional direct\r\n * panning\r\n */\r\n public invertRotation = false;\r\n\r\n /**\r\n * Speed multiplier for inverse camera panning\r\n */\r\n public inverseRotationSpeed = 0.2;\r\n\r\n /**\r\n * @internal\r\n * @experimental\r\n * Can be used to change clamping behavior for inertia. Hook into onBeforeRenderObservable to change the value per-frame\r\n */\r\n public _panningEpsilon = Epsilon;\r\n /**\r\n * @internal\r\n * @experimental\r\n * Can be used to change clamping behavior for inertia. Hook into onBeforeRenderObservable to change the value per-frame\r\n */\r\n public _rotationEpsilon = Epsilon;\r\n\r\n /**\r\n * Define the current target of the camera as an object or a position.\r\n * Please note that locking a target will disable panning.\r\n */\r\n @serializeAsMeshReference(\"lockedTargetId\")\r\n public lockedTarget: any = null;\r\n\r\n protected readonly _currentTarget = Vector3.Zero();\r\n protected _initialFocalDistance = 1;\r\n protected readonly _viewMatrix = Matrix.Zero();\r\n\r\n /** @internal */\r\n public readonly _cameraTransformMatrix = Matrix.Zero();\r\n /** @internal */\r\n public readonly _cameraRotationMatrix = Matrix.Zero();\r\n\r\n protected readonly _referencePoint: Vector3;\r\n protected readonly _transformedReferencePoint = Vector3.Zero();\r\n\r\n protected readonly _deferredPositionUpdate = new Vector3();\r\n protected readonly _deferredRotationQuaternionUpdate = new Quaternion();\r\n protected readonly _deferredRotationUpdate = new Vector3();\r\n protected _deferredUpdated = false;\r\n protected _deferOnly: boolean = false;\r\n\r\n /** @internal */\r\n public _reset: () => void;\r\n\r\n /**\r\n * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.\r\n * This is the base of the follow, arc rotate cameras and Free camera\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n * @param name Defines the name of the camera in the scene\r\n * @param position Defines the start position of the camera in the scene\r\n * @param scene Defines the scene the camera belongs to\r\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive = true) {\r\n super(name, position, scene, setActiveOnSceneIfNoneActive);\r\n\r\n this._referencePoint = Vector3.Forward(this.getScene().useRightHandedSystem);\r\n\r\n // Set the y component of the rotation to Math.PI in right-handed system for backwards compatibility.\r\n this.rotation = new Vector3(0, this.getScene().useRightHandedSystem ? Math.PI : 0, 0);\r\n }\r\n\r\n /**\r\n * Gets the position in front of the camera at a given distance.\r\n * @param distance The distance from the camera we want the position to be\r\n * @returns the position\r\n */\r\n public getFrontPosition(distance: number): Vector3 {\r\n this.getWorldMatrix();\r\n const worldForward = TmpVectors.Vector3[0];\r\n const localForward = TmpVectors.Vector3[1];\r\n localForward.set(0, 0, this._scene.useRightHandedSystem ? -1.0 : 1.0);\r\n this.getDirectionToRef(localForward, worldForward);\r\n worldForward.scaleInPlace(distance);\r\n return this.globalPosition.add(worldForward);\r\n }\r\n\r\n /** @internal */\r\n public _getLockedTargetPosition(): Nullable<Vector3> {\r\n if (!this.lockedTarget) {\r\n return null;\r\n }\r\n\r\n if (this.lockedTarget.absolutePosition) {\r\n const lockedTarget = this.lockedTarget as AbstractMesh;\r\n const m = lockedTarget.computeWorldMatrix();\r\n // in some cases the absolute position resets externally, but doesn't update since the matrix is cached.\r\n m.getTranslationToRef(lockedTarget.absolutePosition);\r\n }\r\n\r\n return this.lockedTarget.absolutePosition || this.lockedTarget;\r\n }\r\n\r\n private _storedPosition: Vector3;\r\n private _storedRotation: Vector3;\r\n private _storedRotationQuaternion: Nullable<Quaternion>;\r\n\r\n /**\r\n * Store current camera state of the camera (fov, position, rotation, etc..)\r\n * @returns the camera\r\n */\r\n public override storeState(): Camera {\r\n this._storedPosition = this.position.clone();\r\n this._storedRotation = this.rotation.clone();\r\n if (this.rotationQuaternion) {\r\n this._storedRotationQuaternion = this.rotationQuaternion.clone();\r\n }\r\n\r\n return super.storeState();\r\n }\r\n\r\n /**\r\n * Restored camera state. You must call storeState() first\r\n * @returns whether it was successful or not\r\n * @internal\r\n */\r\n public override _restoreStateValues(): boolean {\r\n if (!super._restoreStateValues()) {\r\n return false;\r\n }\r\n\r\n this.position = this._storedPosition.clone();\r\n this.rotation = this._storedRotation.clone();\r\n\r\n if (this.rotationQuaternion && this._storedRotationQuaternion) {\r\n this.rotationQuaternion = this._storedRotationQuaternion.clone();\r\n }\r\n\r\n this.cameraDirection.copyFromFloats(0, 0, 0);\r\n this.cameraRotation.copyFromFloats(0, 0);\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public override _initCache() {\r\n super._initCache();\r\n this._cache.lockedTarget = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n this._cache.rotation = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n this._cache.rotationQuaternion = new Quaternion(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateCache(ignoreParentClass?: boolean): void {\r\n if (!ignoreParentClass) {\r\n super._updateCache();\r\n }\r\n\r\n const lockedTargetPosition = this._getLockedTargetPosition();\r\n if (!lockedTargetPosition) {\r\n this._cache.lockedTarget = null;\r\n } else {\r\n if (!this._cache.lockedTarget) {\r\n this._cache.lockedTarget = lockedTargetPosition.clone();\r\n } else {\r\n this._cache.lockedTarget.copyFrom(lockedTargetPosition);\r\n }\r\n }\r\n\r\n this._cache.rotation.copyFrom(this.rotation);\r\n if (this.rotationQuaternion) {\r\n this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n }\r\n }\r\n\r\n // Synchronized\r\n /** @internal */\r\n public override _isSynchronizedViewMatrix(): boolean {\r\n if (!super._isSynchronizedViewMatrix()) {\r\n return false;\r\n }\r\n\r\n const lockedTargetPosition = this._getLockedTargetPosition();\r\n\r\n return (\r\n (this._cache.lockedTarget ? this._cache.lockedTarget.equals(lockedTargetPosition) : !lockedTargetPosition) &&\r\n (this.rotationQuaternion ? this.rotationQuaternion.equals(this._cache.rotationQuaternion) : this._cache.rotation.equals(this.rotation))\r\n );\r\n }\r\n\r\n // Methods\r\n /** @internal */\r\n public _computeLocalCameraSpeed(): number {\r\n const engine = this.getEngine();\r\n return this.speed * Math.sqrt(engine.getDeltaTime() / (engine.getFps() * 100.0));\r\n }\r\n\r\n // Target\r\n\r\n /**\r\n * Defines the target the camera should look at.\r\n * @param target Defines the new target as a Vector\r\n */\r\n public setTarget(target: Vector3): void {\r\n this.upVector.normalize();\r\n\r\n this._initialFocalDistance = target.subtract(this.position).length();\r\n\r\n if (this.position.z === target.z) {\r\n this.position.z += Epsilon;\r\n }\r\n\r\n this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance);\r\n\r\n if (this.getScene().useRightHandedSystem) {\r\n Matrix.LookAtRHToRef(this.position, target, Vector3.UpReadOnly, TmpMatrix);\r\n } else {\r\n Matrix.LookAtLHToRef(this.position, target, Vector3.UpReadOnly, TmpMatrix);\r\n }\r\n TmpMatrix.invert();\r\n\r\n const rotationQuaternion = this.rotationQuaternion || TmpQuaternion;\r\n Quaternion.FromRotationMatrixToRef(TmpMatrix, rotationQuaternion);\r\n\r\n rotationQuaternion.toEulerAnglesToRef(this.rotation);\r\n\r\n // Explicitly set z to 0 to match previous behavior.\r\n this.rotation.z = 0;\r\n }\r\n\r\n /**\r\n * Defines the target point of the camera.\r\n * The camera looks towards it form the radius distance.\r\n */\r\n public get target(): Vector3 {\r\n return this.getTarget();\r\n }\r\n public set target(value: Vector3) {\r\n this.setTarget(value);\r\n }\r\n\r\n /**\r\n * Return the current target position of the camera. This value is expressed in local space.\r\n * @returns the target position\r\n */\r\n public getTarget(): Vector3 {\r\n return this._currentTarget;\r\n }\r\n\r\n /** @internal */\r\n public _decideIfNeedsToMove(): boolean {\r\n return Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\r\n }\r\n\r\n /** @internal */\r\n public _updatePosition(): void {\r\n if (this.parent) {\r\n this.parent.getWorldMatrix().invertToRef(TmpVectors.Matrix[0]);\r\n Vector3.TransformNormalToRef(this.cameraDirection, TmpVectors.Matrix[0], TmpVectors.Vector3[0]);\r\n this._deferredPositionUpdate.addInPlace(TmpVectors.Vector3[0]);\r\n if (!this._deferOnly) {\r\n this.position.copyFrom(this._deferredPositionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n return;\r\n }\r\n this._deferredPositionUpdate.addInPlace(this.cameraDirection);\r\n if (!this._deferOnly) {\r\n this.position.copyFrom(this._deferredPositionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override _checkInputs(): void {\r\n const directionMultiplier = this.invertRotation ? -this.inverseRotationSpeed : 1.0;\r\n const needToMove = this._decideIfNeedsToMove();\r\n const needToRotate = this.cameraRotation.x || this.cameraRotation.y;\r\n\r\n this._deferredUpdated = false;\r\n this._deferredRotationUpdate.copyFrom(this.rotation);\r\n this._deferredPositionUpdate.copyFrom(this.position);\r\n if (this.rotationQuaternion) {\r\n this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion);\r\n }\r\n\r\n // Move\r\n if (needToMove) {\r\n this._updatePosition();\r\n }\r\n\r\n // Rotate\r\n if (needToRotate) {\r\n //rotate, if quaternion is set and rotation was used\r\n if (this.rotationQuaternion) {\r\n this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate);\r\n }\r\n\r\n this._deferredRotationUpdate.x += this.cameraRotation.x * directionMultiplier;\r\n this._deferredRotationUpdate.y += this.cameraRotation.y * directionMultiplier;\r\n\r\n // Apply constraints\r\n if (!this.noRotationConstraint) {\r\n const limit = 1.570796;\r\n\r\n if (this._deferredRotationUpdate.x > limit) {\r\n this._deferredRotationUpdate.x = limit;\r\n }\r\n if (this._deferredRotationUpdate.x < -limit) {\r\n this._deferredRotationUpdate.x = -limit;\r\n }\r\n }\r\n\r\n if (!this._deferOnly) {\r\n this.rotation.copyFrom(this._deferredRotationUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n\r\n //rotate, if quaternion is set and rotation was used\r\n if (this.rotationQuaternion) {\r\n const len = this._deferredRotationUpdate.lengthSquared();\r\n if (len) {\r\n Quaternion.RotationYawPitchRollToRef(\r\n this._deferredRotationUpdate.y,\r\n this._deferredRotationUpdate.x,\r\n this._deferredRotationUpdate.z,\r\n this._deferredRotationQuaternionUpdate\r\n );\r\n if (!this._deferOnly) {\r\n this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const inertialPanningLimit = this.speed * this._panningEpsilon;\r\n const inertialRotationLimit = this.speed * this._rotationEpsilon;\r\n // Inertia\r\n if (needToMove) {\r\n if (Math.abs(this.cameraDirection.x) < inertialPanningLimit) {\r\n this.cameraDirection.x = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraDirection.y) < inertialPanningLimit) {\r\n this.cameraDirection.y = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraDirection.z) < inertialPanningLimit) {\r\n this.cameraDirection.z = 0;\r\n }\r\n\r\n this.cameraDirection.scaleInPlace(this.inertia);\r\n }\r\n if (needToRotate) {\r\n if (Math.abs(this.cameraRotation.x) < inertialRotationLimit) {\r\n this.cameraRotation.x = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraRotation.y) < inertialRotationLimit) {\r\n this.cameraRotation.y = 0;\r\n }\r\n this.cameraRotation.scaleInPlace(this.inertia);\r\n }\r\n\r\n super._checkInputs();\r\n }\r\n\r\n protected _updateCameraRotationMatrix() {\r\n if (this.rotationQuaternion) {\r\n this.rotationQuaternion.toRotationMatrix(this._cameraRotationMatrix);\r\n } else {\r\n Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);\r\n }\r\n }\r\n\r\n /**\r\n * Update the up vector to apply the rotation of the camera (So if you changed the camera rotation.z this will let you update the up vector as well)\r\n * @returns the current camera\r\n */\r\n private _rotateUpVectorWithCameraRotationMatrix(): TargetCamera {\r\n Vector3.TransformNormalToRef(Vector3.UpReadOnly, this._cameraRotationMatrix, this.upVector);\r\n return this;\r\n }\r\n\r\n private _cachedRotationZ = 0;\r\n private _cachedQuaternionRotationZ = 0;\r\n /** @internal */\r\n public override _getViewMatrix(): Matrix {\r\n if (this.lockedTarget) {\r\n this.setTarget(this._getLockedTargetPosition()!);\r\n }\r\n\r\n // Compute\r\n this._updateCameraRotationMatrix();\r\n\r\n // Apply the changed rotation to the upVector\r\n if (this.rotationQuaternion && this._cachedQuaternionRotationZ != this.rotationQuaternion.z) {\r\n this._rotateUpVectorWithCameraRotationMatrix();\r\n this._cachedQuaternionRotationZ = this.rotationQuaternion.z;\r\n } else if (this._cachedRotationZ !== this.rotation.z) {\r\n this._rotateUpVectorWithCameraRotationMatrix();\r\n this._cachedRotationZ = this.rotation.z;\r\n }\r\n\r\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\r\n\r\n // Computing target and final matrix\r\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\r\n if (this.updateUpVectorFromRotation) {\r\n if (this.rotationQuaternion) {\r\n Axis.Y.rotateByQuaternionToRef(this.rotationQuaternion, this.upVector);\r\n } else {\r\n Quaternion.FromEulerVectorToRef(this.rotation, TmpQuaternion);\r\n Axis.Y.rotateByQuaternionToRef(TmpQuaternion, this.upVector);\r\n }\r\n }\r\n this._computeViewMatrix(this.position, this._currentTarget, this.upVector);\r\n return this._viewMatrix;\r\n }\r\n\r\n protected _computeViewMatrix(position: Vector3, target: Vector3, up: Vector3): void {\r\n if (this.getScene().useRightHandedSystem) {\r\n Matrix.LookAtRHToRef(position, target, up, this._viewMatrix);\r\n } else {\r\n Matrix.LookAtLHToRef(position, target, up, this._viewMatrix);\r\n }\r\n\r\n if (this.parent) {\r\n const parentWorldMatrix = this.parent.getWorldMatrix();\r\n this._viewMatrix.invert();\r\n this._viewMatrix.multiplyToRef(parentWorldMatrix, this._viewMatrix);\r\n this._viewMatrix.invert();\r\n\r\n this._markSyncedWithParent();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public override createRigCamera(name: string, cameraIndex: number): Nullable<Camera> {\r\n if (this.cameraRigMode !== Camera.RIG_MODE_NONE) {\r\n const rigCamera = new TargetCamera(name, this.position.clone(), this.getScene());\r\n rigCamera.isRigCamera = true;\r\n rigCamera.rigParent = this;\r\n if (this.cameraRigMode === Camera.RIG_MODE_VR) {\r\n if (!this.rotationQuaternion) {\r\n this.rotationQuaternion = new Quaternion();\r\n }\r\n rigCamera._cameraRigParams = {};\r\n rigCamera.rotationQuaternion = new Quaternion();\r\n }\r\n\r\n rigCamera.mode = this.mode;\r\n rigCamera.orthoLeft = this.orthoLeft;\r\n rigCamera.orthoRight = this.orthoRight;\r\n rigCamera.orthoTop = this.orthoTop;\r\n rigCamera.orthoBottom = this.orthoBottom;\r\n\r\n return rigCamera;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateRigCameras() {\r\n const camLeft = <TargetCamera>this._rigCameras[0];\r\n const camRight = <TargetCamera>this._rigCameras[1];\r\n\r\n this.computeWorldMatrix();\r\n\r\n switch (this.cameraRigMode) {\r\n case Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:\r\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:\r\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:\r\n case Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:\r\n case Camera.RIG_MODE_STEREOSCOPIC_INTERLACED: {\r\n //provisionnaly using _cameraRigParams.stereoHalfAngle instead of calculations based on _cameraRigParams.interaxialDistance:\r\n const leftSign = this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED ? 1 : -1;\r\n const rightSign = this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED ? -1 : 1;\r\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * leftSign, camLeft);\r\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * rightSign, camRight);\r\n break;\r\n }\r\n case Camera.RIG_MODE_VR:\r\n if (camLeft.rotationQuaternion && camRight.rotationQuaternion && this.rotationQuaternion) {\r\n camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n } else {\r\n camLeft.rotation.copyFrom(this.rotation);\r\n camRight.rotation.copyFrom(this.rotation);\r\n }\r\n camLeft.position.copyFrom(this.position);\r\n camRight.position.copyFrom(this.position);\r\n\r\n break;\r\n }\r\n super._updateRigCameras();\r\n }\r\n\r\n private _getRigCamPositionAndTarget(halfSpace: number, rigCamera: TargetCamera) {\r\n const target = this.getTarget();\r\n target.subtractToRef(this.position, TargetCamera._TargetFocalPoint);\r\n\r\n TargetCamera._TargetFocalPoint.normalize().scaleInPlace(this._initialFocalDistance);\r\n const newFocalTarget = TargetCamera._TargetFocalPoint.addInPlace(this.position);\r\n\r\n Matrix.TranslationToRef(-newFocalTarget.x, -newFocalTarget.y, -newFocalTarget.z, TargetCamera._TargetTransformMatrix);\r\n TargetCamera._TargetTransformMatrix.multiplyToRef(Matrix.RotationAxis(rigCamera.upVector, halfSpace), TargetCamera._RigCamTransformMatrix);\r\n Matrix.TranslationToRef(newFocalTarget.x, newFocalTarget.y, newFocalTarget.z, TargetCamera._TargetTransformMatrix);\r\n\r\n TargetCamera._RigCamTransformMatrix.multiplyToRef(TargetCamera._TargetTransformMatrix, TargetCamera._RigCamTransformMatrix);\r\n\r\n Vector3.TransformCoordinatesToRef(this.position, TargetCamera._RigCamTransformMatrix, rigCamera.position);\r\n rigCamera.setTarget(newFocalTarget);\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"TargetCamera\";\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for targetCamera.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterTargetCamera(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n Node.AddNodeConstructor(\"TargetCamera\", (name, scene) => {\r\n return () => new TargetCamera(name, Vector3.Zero(), scene);\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"targetCamera.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Cameras/targetCamera.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { serialize, serializeAsVector3, serializeAsMeshReference } from \"../Misc/decorators\";\r\nimport { type Nullable } from \"../types\";\r\nimport { Camera } from \"./camera.pure\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { Quaternion, Matrix, Vector3, Vector2, TmpVectors } from \"../Maths/math.vector.pure\";\r\nimport { Epsilon } from \"../Maths/math.constants\";\r\nimport { Axis } from \"../Maths/math.axis\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh.pure\";\r\nimport { Node } from \"../node\";\r\n\r\n// Temporary cache variables to avoid allocations.\r\nconst TmpMatrix = /*#__PURE__*/ Matrix.Zero();\r\nconst TmpQuaternion = /*#__PURE__*/ Quaternion.Identity();\r\n\r\n/**\r\n * A target camera takes a mesh or position as a target and continues to look at it while it moves.\r\n * This is the base of the follow, arc rotate cameras and Free camera\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class TargetCamera extends Camera {\r\n private static _RigCamTransformMatrix = /*#__PURE__*/ new Matrix();\r\n private static _TargetTransformMatrix = /*#__PURE__*/ new Matrix();\r\n private static _TargetFocalPoint = /*#__PURE__*/ new Vector3();\r\n\r\n /**\r\n * Define the current direction the camera is moving to\r\n */\r\n public cameraDirection = new Vector3(0, 0, 0);\r\n /**\r\n * Define the current rotation the camera is rotating to\r\n */\r\n public cameraRotation = new Vector2(0, 0);\r\n\r\n /**\r\n * When set, the up vector of the camera will be updated by the rotation of the camera\r\n */\r\n @serialize()\r\n public updateUpVectorFromRotation = false;\r\n\r\n /**\r\n * Define the current rotation of the camera\r\n */\r\n @serializeAsVector3()\r\n public rotation: Vector3;\r\n\r\n /**\r\n * Define the current rotation of the camera as a quaternion to prevent Gimbal lock\r\n */\r\n public rotationQuaternion: Nullable<Quaternion>;\r\n\r\n /**\r\n * Define the current speed of the camera\r\n */\r\n @serialize()\r\n public speed = 2.0;\r\n\r\n /**\r\n * Add constraint to the camera to prevent it to move freely in all directions and\r\n * around all axis.\r\n */\r\n public noRotationConstraint = false;\r\n\r\n /**\r\n * Reverses mouselook direction to 'natural' panning as opposed to traditional direct\r\n * panning\r\n */\r\n public invertRotation = false;\r\n\r\n /**\r\n * Speed multiplier for inverse camera panning\r\n */\r\n public inverseRotationSpeed = 0.2;\r\n\r\n /**\r\n * @internal\r\n * @experimental\r\n * Can be used to change clamping behavior for inertia. Hook into onBeforeRenderObservable to change the value per-frame\r\n */\r\n public _panningEpsilon = Epsilon;\r\n /**\r\n * @internal\r\n * @experimental\r\n * Can be used to change clamping behavior for inertia. Hook into onBeforeRenderObservable to change the value per-frame\r\n */\r\n public _rotationEpsilon = Epsilon;\r\n\r\n /**\r\n * Define the current target of the camera as an object or a position.\r\n * Please note that locking a target will disable panning.\r\n */\r\n @serializeAsMeshReference(\"lockedTargetId\")\r\n public lockedTarget: any = null;\r\n\r\n protected readonly _currentTarget = Vector3.Zero();\r\n protected _initialFocalDistance = 1;\r\n protected readonly _viewMatrix = Matrix.Zero();\r\n\r\n /** @internal */\r\n public readonly _cameraTransformMatrix = Matrix.Zero();\r\n /** @internal */\r\n public readonly _cameraRotationMatrix = Matrix.Zero();\r\n\r\n protected readonly _referencePoint: Vector3;\r\n protected readonly _transformedReferencePoint = Vector3.Zero();\r\n\r\n protected readonly _deferredPositionUpdate = new Vector3();\r\n protected readonly _deferredRotationQuaternionUpdate = new Quaternion();\r\n protected readonly _deferredRotationUpdate = new Vector3();\r\n protected _deferredUpdated = false;\r\n protected _deferOnly: boolean = false;\r\n\r\n /** @internal */\r\n public _reset: () => void;\r\n\r\n /**\r\n * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.\r\n * This is the base of the follow, arc rotate cameras and Free camera\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n * @param name Defines the name of the camera in the scene\r\n * @param position Defines the start position of the camera in the scene\r\n * @param scene Defines the scene the camera belongs to\r\n * @param setActiveOnSceneIfNoneActive Defines whether the camera should be marked as active if not other active cameras have been defined\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, setActiveOnSceneIfNoneActive = true) {\r\n super(name, position, scene, setActiveOnSceneIfNoneActive);\r\n\r\n this._referencePoint = Vector3.Forward(this.getScene().useRightHandedSystem);\r\n\r\n // Set the y component of the rotation to Math.PI in right-handed system for backwards compatibility.\r\n this.rotation = new Vector3(0, this.getScene().useRightHandedSystem ? Math.PI : 0, 0);\r\n }\r\n\r\n /**\r\n * Gets the position in front of the camera at a given distance.\r\n * @param distance The distance from the camera we want the position to be\r\n * @returns the position\r\n */\r\n public getFrontPosition(distance: number): Vector3 {\r\n this.getWorldMatrix();\r\n const worldForward = TmpVectors.Vector3[0];\r\n const localForward = TmpVectors.Vector3[1];\r\n localForward.set(0, 0, this._scene.useRightHandedSystem ? -1.0 : 1.0);\r\n this.getDirectionToRef(localForward, worldForward);\r\n worldForward.scaleInPlace(distance);\r\n return this.globalPosition.add(worldForward);\r\n }\r\n\r\n /** @internal */\r\n public _getLockedTargetPosition(): Nullable<Vector3> {\r\n if (!this.lockedTarget) {\r\n return null;\r\n }\r\n\r\n if (this.lockedTarget.absolutePosition) {\r\n const lockedTarget = this.lockedTarget as AbstractMesh;\r\n const m = lockedTarget.computeWorldMatrix();\r\n // in some cases the absolute position resets externally, but doesn't update since the matrix is cached.\r\n m.getTranslationToRef(lockedTarget.absolutePosition);\r\n }\r\n\r\n return this.lockedTarget.absolutePosition || this.lockedTarget;\r\n }\r\n\r\n private _storedPosition: Vector3;\r\n private _storedRotation: Vector3;\r\n private _storedRotationQuaternion: Nullable<Quaternion>;\r\n\r\n /**\r\n * Store current camera state of the camera (fov, position, rotation, etc..)\r\n * @returns the camera\r\n */\r\n public override storeState(): Camera {\r\n this._storedPosition = this.position.clone();\r\n this._storedRotation = this.rotation.clone();\r\n if (this.rotationQuaternion) {\r\n this._storedRotationQuaternion = this.rotationQuaternion.clone();\r\n }\r\n\r\n return super.storeState();\r\n }\r\n\r\n /**\r\n * Restored camera state. You must call storeState() first\r\n * @returns whether it was successful or not\r\n * @internal\r\n */\r\n public override _restoreStateValues(): boolean {\r\n if (!super._restoreStateValues()) {\r\n return false;\r\n }\r\n\r\n this.position = this._storedPosition.clone();\r\n this.rotation = this._storedRotation.clone();\r\n\r\n if (this.rotationQuaternion && this._storedRotationQuaternion) {\r\n this.rotationQuaternion = this._storedRotationQuaternion.clone();\r\n }\r\n\r\n this.cameraDirection.copyFromFloats(0, 0, 0);\r\n this.cameraRotation.copyFromFloats(0, 0);\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public override _initCache() {\r\n super._initCache();\r\n this._cache.lockedTarget = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n this._cache.rotation = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n this._cache.rotationQuaternion = new Quaternion(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateCache(ignoreParentClass?: boolean): void {\r\n if (!ignoreParentClass) {\r\n super._updateCache();\r\n }\r\n\r\n const lockedTargetPosition = this._getLockedTargetPosition();\r\n if (!lockedTargetPosition) {\r\n this._cache.lockedTarget = null;\r\n } else {\r\n if (!this._cache.lockedTarget) {\r\n this._cache.lockedTarget = lockedTargetPosition.clone();\r\n } else {\r\n this._cache.lockedTarget.copyFrom(lockedTargetPosition);\r\n }\r\n }\r\n\r\n this._cache.rotation.copyFrom(this.rotation);\r\n if (this.rotationQuaternion) {\r\n this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n }\r\n }\r\n\r\n // Synchronized\r\n /** @internal */\r\n public override _isSynchronizedViewMatrix(): boolean {\r\n if (!super._isSynchronizedViewMatrix()) {\r\n return false;\r\n }\r\n\r\n const lockedTargetPosition = this._getLockedTargetPosition();\r\n\r\n return (\r\n (this._cache.lockedTarget ? this._cache.lockedTarget.equals(lockedTargetPosition) : !lockedTargetPosition) &&\r\n (this.rotationQuaternion ? this.rotationQuaternion.equals(this._cache.rotationQuaternion) : this._cache.rotation.equals(this.rotation))\r\n );\r\n }\r\n\r\n // Methods\r\n /** @internal */\r\n public _computeLocalCameraSpeed(): number {\r\n const engine = this.getEngine();\r\n return this.speed * Math.sqrt(engine.getDeltaTime() / (engine.getFps() * 100.0));\r\n }\r\n\r\n // Target\r\n\r\n /**\r\n * Defines the target the camera should look at.\r\n * @param target Defines the new target as a Vector\r\n */\r\n public setTarget(target: Vector3): void {\r\n this.upVector.normalize();\r\n\r\n this._initialFocalDistance = target.subtract(this.position).length();\r\n\r\n if (this.position.z === target.z) {\r\n this.position.z += Epsilon;\r\n }\r\n\r\n if (this._initialFocalDistance < Epsilon) {\r\n this._initialFocalDistance = 1;\r\n }\r\n\r\n this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance);\r\n\r\n if (this.getScene().useRightHandedSystem) {\r\n Matrix.LookAtRHToRef(this.position, target, Vector3.UpReadOnly, TmpMatrix);\r\n } else {\r\n Matrix.LookAtLHToRef(this.position, target, Vector3.UpReadOnly, TmpMatrix);\r\n }\r\n TmpMatrix.invert();\r\n\r\n const rotationQuaternion = this.rotationQuaternion || TmpQuaternion;\r\n Quaternion.FromRotationMatrixToRef(TmpMatrix, rotationQuaternion);\r\n\r\n rotationQuaternion.toEulerAnglesToRef(this.rotation);\r\n\r\n // Explicitly set z to 0 to match previous behavior.\r\n this.rotation.z = 0;\r\n }\r\n\r\n /**\r\n * Defines the target point of the camera.\r\n * The camera looks towards it form the radius distance.\r\n */\r\n public get target(): Vector3 {\r\n return this.getTarget();\r\n }\r\n public set target(value: Vector3) {\r\n this.setTarget(value);\r\n }\r\n\r\n /**\r\n * Return the current target position of the camera. This value is expressed in local space.\r\n * @returns the target position\r\n */\r\n public getTarget(): Vector3 {\r\n return this._currentTarget;\r\n }\r\n\r\n /** @internal */\r\n public _decideIfNeedsToMove(): boolean {\r\n return Math.abs(this.cameraDirection.x) > 0 || Math.abs(this.cameraDirection.y) > 0 || Math.abs(this.cameraDirection.z) > 0;\r\n }\r\n\r\n /** @internal */\r\n public _updatePosition(): void {\r\n if (this.parent) {\r\n this.parent.getWorldMatrix().invertToRef(TmpVectors.Matrix[0]);\r\n Vector3.TransformNormalToRef(this.cameraDirection, TmpVectors.Matrix[0], TmpVectors.Vector3[0]);\r\n this._deferredPositionUpdate.addInPlace(TmpVectors.Vector3[0]);\r\n if (!this._deferOnly) {\r\n this.position.copyFrom(this._deferredPositionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n return;\r\n }\r\n this._deferredPositionUpdate.addInPlace(this.cameraDirection);\r\n if (!this._deferOnly) {\r\n this.position.copyFrom(this._deferredPositionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override _checkInputs(): void {\r\n const directionMultiplier = this.invertRotation ? -this.inverseRotationSpeed : 1.0;\r\n const needToMove = this._decideIfNeedsToMove();\r\n const needToRotate = this.cameraRotation.x || this.cameraRotation.y;\r\n\r\n this._deferredUpdated = false;\r\n this._deferredRotationUpdate.copyFrom(this.rotation);\r\n this._deferredPositionUpdate.copyFrom(this.position);\r\n if (this.rotationQuaternion) {\r\n this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion);\r\n }\r\n\r\n // Move\r\n if (needToMove) {\r\n this._updatePosition();\r\n }\r\n\r\n // Rotate\r\n if (needToRotate) {\r\n //rotate, if quaternion is set and rotation was used\r\n if (this.rotationQuaternion) {\r\n this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate);\r\n }\r\n\r\n this._deferredRotationUpdate.x += this.cameraRotation.x * directionMultiplier;\r\n this._deferredRotationUpdate.y += this.cameraRotation.y * directionMultiplier;\r\n\r\n // Apply constraints\r\n if (!this.noRotationConstraint) {\r\n const limit = 1.570796;\r\n\r\n if (this._deferredRotationUpdate.x > limit) {\r\n this._deferredRotationUpdate.x = limit;\r\n }\r\n if (this._deferredRotationUpdate.x < -limit) {\r\n this._deferredRotationUpdate.x = -limit;\r\n }\r\n }\r\n\r\n if (!this._deferOnly) {\r\n this.rotation.copyFrom(this._deferredRotationUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n\r\n //rotate, if quaternion is set and rotation was used\r\n if (this.rotationQuaternion) {\r\n const len = this._deferredRotationUpdate.lengthSquared();\r\n if (len) {\r\n Quaternion.RotationYawPitchRollToRef(\r\n this._deferredRotationUpdate.y,\r\n this._deferredRotationUpdate.x,\r\n this._deferredRotationUpdate.z,\r\n this._deferredRotationQuaternionUpdate\r\n );\r\n if (!this._deferOnly) {\r\n this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate);\r\n } else {\r\n this._deferredUpdated = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const inertialPanningLimit = this.speed * this._panningEpsilon;\r\n const inertialRotationLimit = this.speed * this._rotationEpsilon;\r\n // Inertia\r\n if (needToMove) {\r\n if (Math.abs(this.cameraDirection.x) < inertialPanningLimit) {\r\n this.cameraDirection.x = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraDirection.y) < inertialPanningLimit) {\r\n this.cameraDirection.y = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraDirection.z) < inertialPanningLimit) {\r\n this.cameraDirection.z = 0;\r\n }\r\n\r\n this.cameraDirection.scaleInPlace(this.inertia);\r\n }\r\n if (needToRotate) {\r\n if (Math.abs(this.cameraRotation.x) < inertialRotationLimit) {\r\n this.cameraRotation.x = 0;\r\n }\r\n\r\n if (Math.abs(this.cameraRotation.y) < inertialRotationLimit) {\r\n this.cameraRotation.y = 0;\r\n }\r\n this.cameraRotation.scaleInPlace(this.inertia);\r\n }\r\n\r\n super._checkInputs();\r\n }\r\n\r\n protected _updateCameraRotationMatrix() {\r\n if (this.rotationQuaternion) {\r\n this.rotationQuaternion.toRotationMatrix(this._cameraRotationMatrix);\r\n } else {\r\n Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);\r\n }\r\n }\r\n\r\n /**\r\n * Update the up vector to apply the rotation of the camera (So if you changed the camera rotation.z this will let you update the up vector as well)\r\n * @returns the current camera\r\n */\r\n private _rotateUpVectorWithCameraRotationMatrix(): TargetCamera {\r\n Vector3.TransformNormalToRef(Vector3.UpReadOnly, this._cameraRotationMatrix, this.upVector);\r\n return this;\r\n }\r\n\r\n private _cachedRotationZ = 0;\r\n private _cachedQuaternionRotationZ = 0;\r\n /** @internal */\r\n public override _getViewMatrix(): Matrix {\r\n if (this.lockedTarget) {\r\n this.setTarget(this._getLockedTargetPosition()!);\r\n }\r\n\r\n // Compute\r\n this._updateCameraRotationMatrix();\r\n\r\n // Apply the changed rotation to the upVector\r\n if (this.rotationQuaternion && this._cachedQuaternionRotationZ != this.rotationQuaternion.z) {\r\n this._rotateUpVectorWithCameraRotationMatrix();\r\n this._cachedQuaternionRotationZ = this.rotationQuaternion.z;\r\n } else if (this._cachedRotationZ !== this.rotation.z) {\r\n this._rotateUpVectorWithCameraRotationMatrix();\r\n this._cachedRotationZ = this.rotation.z;\r\n }\r\n\r\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\r\n\r\n // Computing target and final matrix\r\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\r\n if (this.updateUpVectorFromRotation) {\r\n if (this.rotationQuaternion) {\r\n Axis.Y.rotateByQuaternionToRef(this.rotationQuaternion, this.upVector);\r\n } else {\r\n Quaternion.FromEulerVectorToRef(this.rotation, TmpQuaternion);\r\n Axis.Y.rotateByQuaternionToRef(TmpQuaternion, this.upVector);\r\n }\r\n }\r\n this._computeViewMatrix(this.position, this._currentTarget, this.upVector);\r\n return this._viewMatrix;\r\n }\r\n\r\n protected _computeViewMatrix(position: Vector3, target: Vector3, up: Vector3): void {\r\n if (this.getScene().useRightHandedSystem) {\r\n Matrix.LookAtRHToRef(position, target, up, this._viewMatrix);\r\n } else {\r\n Matrix.LookAtLHToRef(position, target, up, this._viewMatrix);\r\n }\r\n\r\n if (this.parent) {\r\n const parentWorldMatrix = this.parent.getWorldMatrix();\r\n this._viewMatrix.invert();\r\n this._viewMatrix.multiplyToRef(parentWorldMatrix, this._viewMatrix);\r\n this._viewMatrix.invert();\r\n\r\n this._markSyncedWithParent();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public override createRigCamera(name: string, cameraIndex: number): Nullable<Camera> {\r\n if (this.cameraRigMode !== Camera.RIG_MODE_NONE) {\r\n const rigCamera = new TargetCamera(name, this.position.clone(), this.getScene());\r\n rigCamera.isRigCamera = true;\r\n rigCamera.rigParent = this;\r\n if (this.cameraRigMode === Camera.RIG_MODE_VR) {\r\n if (!this.rotationQuaternion) {\r\n this.rotationQuaternion = new Quaternion();\r\n }\r\n rigCamera._cameraRigParams = {};\r\n rigCamera.rotationQuaternion = new Quaternion();\r\n }\r\n\r\n rigCamera.mode = this.mode;\r\n rigCamera.orthoLeft = this.orthoLeft;\r\n rigCamera.orthoRight = this.orthoRight;\r\n rigCamera.orthoTop = this.orthoTop;\r\n rigCamera.orthoBottom = this.orthoBottom;\r\n\r\n return rigCamera;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateRigCameras() {\r\n const camLeft = <TargetCamera>this._rigCameras[0];\r\n const camRight = <TargetCamera>this._rigCameras[1];\r\n\r\n this.computeWorldMatrix();\r\n\r\n switch (this.cameraRigMode) {\r\n case Camera.RIG_MODE_STEREOSCOPIC_ANAGLYPH:\r\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:\r\n case Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:\r\n case Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER:\r\n case Camera.RIG_MODE_STEREOSCOPIC_INTERLACED: {\r\n //provisionnaly using _cameraRigParams.stereoHalfAngle instead of calculations based on _cameraRigParams.interaxialDistance:\r\n const leftSign = this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED ? 1 : -1;\r\n const rightSign = this.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED ? -1 : 1;\r\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * leftSign, camLeft);\r\n this._getRigCamPositionAndTarget(this._cameraRigParams.stereoHalfAngle * rightSign, camRight);\r\n break;\r\n }\r\n case Camera.RIG_MODE_VR:\r\n if (camLeft.rotationQuaternion && camRight.rotationQuaternion && this.rotationQuaternion) {\r\n camLeft.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n camRight.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n } else {\r\n camLeft.rotation.copyFrom(this.rotation);\r\n camRight.rotation.copyFrom(this.rotation);\r\n }\r\n camLeft.position.copyFrom(this.position);\r\n camRight.position.copyFrom(this.position);\r\n\r\n break;\r\n }\r\n super._updateRigCameras();\r\n }\r\n\r\n private _getRigCamPositionAndTarget(halfSpace: number, rigCamera: TargetCamera) {\r\n const target = this.getTarget();\r\n target.subtractToRef(this.position, TargetCamera._TargetFocalPoint);\r\n\r\n TargetCamera._TargetFocalPoint.normalize().scaleInPlace(this._initialFocalDistance);\r\n const newFocalTarget = TargetCamera._TargetFocalPoint.addInPlace(this.position);\r\n\r\n Matrix.TranslationToRef(-newFocalTarget.x, -newFocalTarget.y, -newFocalTarget.z, TargetCamera._TargetTransformMatrix);\r\n TargetCamera._TargetTransformMatrix.multiplyToRef(Matrix.RotationAxis(rigCamera.upVector, halfSpace), TargetCamera._RigCamTransformMatrix);\r\n Matrix.TranslationToRef(newFocalTarget.x, newFocalTarget.y, newFocalTarget.z, TargetCamera._TargetTransformMatrix);\r\n\r\n TargetCamera._RigCamTransformMatrix.multiplyToRef(TargetCamera._TargetTransformMatrix, TargetCamera._RigCamTransformMatrix);\r\n\r\n Vector3.TransformCoordinatesToRef(this.position, TargetCamera._RigCamTransformMatrix, rigCamera.position);\r\n rigCamera.setTarget(newFocalTarget);\r\n }\r\n\r\n /**\r\n * Gets the current object class name.\r\n * @returns the class name\r\n */\r\n public override getClassName(): string {\r\n return \"TargetCamera\";\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for targetCamera.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterTargetCamera(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n Node.AddNodeConstructor(\"TargetCamera\", (name, scene) => {\r\n return () => new TargetCamera(name, Vector3.Zero(), scene);\r\n });\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { type Nullable, type IndicesArray } from "../types.js";
2
- import { Vector3 } from "../Maths/math.vector.js";
2
+ import { Vector3 } from "../Maths/math.vector.pure.js";
3
3
  import { type AbstractMesh } from "../Meshes/abstractMesh.js";
4
4
  import { Plane } from "../Maths/math.plane.js";
5
5
  /** @internal */
@@ -1,4 +1,4 @@
1
- import { Vector3 } from "../Maths/math.vector.js";
1
+ import { Vector3 } from "../Maths/math.vector.pure.js";
2
2
  import { Plane } from "../Maths/math.plane.js";
3
3
  const IntersectBoxAaSphere = (boxMin, boxMax, sphereCenter, sphereRadius) => {
4
4
  if (boxMin.x > sphereCenter.x + sphereRadius) {
@@ -1 +1 @@
1
- {"version":3,"file":"collider.js","sourceRoot":"","sources":["../../../../dev/core/src/Collisions/collider.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type IndicesArray } from \"../types\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Plane } from \"../Maths/math.plane\";\r\n\r\nconst IntersectBoxAaSphere = (boxMin: Vector3, boxMax: Vector3, sphereCenter: Vector3, sphereRadius: number): boolean => {\r\n if (boxMin.x > sphereCenter.x + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.x - sphereRadius > boxMax.x) {\r\n return false;\r\n }\r\n\r\n if (boxMin.y > sphereCenter.y + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.y - sphereRadius > boxMax.y) {\r\n return false;\r\n }\r\n\r\n if (boxMin.z > sphereCenter.z + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.z - sphereRadius > boxMax.z) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst GetLowestRoot: (a: number, b: number, c: number, maxR: number) => { root: number; found: boolean } = (function () {\r\n const result = { root: 0, found: false };\r\n return function (a: number, b: number, c: number, maxR: number) {\r\n result.root = 0;\r\n result.found = false;\r\n const determinant = b * b - 4.0 * a * c;\r\n if (determinant < 0) {\r\n return result;\r\n }\r\n\r\n const sqrtD = Math.sqrt(determinant);\r\n let r1 = (-b - sqrtD) / (2.0 * a);\r\n let r2 = (-b + sqrtD) / (2.0 * a);\r\n\r\n if (r1 > r2) {\r\n const temp = r2;\r\n r2 = r1;\r\n r1 = temp;\r\n }\r\n\r\n if (r1 > 0 && r1 < maxR) {\r\n result.root = r1;\r\n result.found = true;\r\n return result;\r\n }\r\n\r\n if (r2 > 0 && r2 < maxR) {\r\n result.root = r2;\r\n result.found = true;\r\n return result;\r\n }\r\n\r\n return result;\r\n };\r\n})();\r\n\r\n/** @internal */\r\nexport class Collider {\r\n // Implementation of the \"Improved Collision detection and Response\" algorithm proposed by Kasper Fauerby\r\n // https://www.peroxide.dk/papers/collision/collision.pdf\r\n\r\n /** Define if a collision was found */\r\n public collisionFound: boolean;\r\n\r\n /**\r\n * Define last intersection point in local space\r\n */\r\n public intersectionPoint: Vector3;\r\n\r\n /**\r\n * Define last collided mesh\r\n */\r\n public collidedMesh: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * If true, it check for double sided faces and only returns 1 collision instead of 2\r\n */\r\n public static DoubleSidedCheck = false;\r\n\r\n private _collisionPoint = Vector3.Zero();\r\n private _planeIntersectionPoint = Vector3.Zero();\r\n private _tempVector = Vector3.Zero();\r\n private _tempVector2 = Vector3.Zero();\r\n private _tempVector3 = Vector3.Zero();\r\n private _tempVector4 = Vector3.Zero();\r\n private _edge = Vector3.Zero();\r\n private _baseToVertex = Vector3.Zero();\r\n private _destinationPoint = Vector3.Zero();\r\n private _slidePlaneNormal = Vector3.Zero();\r\n private _displacementVector = Vector3.Zero();\r\n\r\n /** @internal */\r\n public _radius = Vector3.One();\r\n /** @internal */\r\n public _retry = 0;\r\n private _velocity: Vector3;\r\n private _basePoint: Vector3;\r\n private _epsilon: number;\r\n /** @internal */\r\n public _velocityWorldLength: number;\r\n /** @internal */\r\n public _basePointWorld = Vector3.Zero();\r\n private _velocityWorld = Vector3.Zero();\r\n private _normalizedVelocity = Vector3.Zero();\r\n /** @internal */\r\n public _initialVelocity: Vector3;\r\n /** @internal */\r\n public _initialPosition: Vector3;\r\n private _nearestDistance: number;\r\n\r\n private _collisionMask = -1;\r\n private _velocitySquaredLength: number;\r\n private _nearestDistanceSquared: number;\r\n\r\n public get collisionMask(): number {\r\n return this._collisionMask;\r\n }\r\n\r\n public set collisionMask(mask: number) {\r\n this._collisionMask = !isNaN(mask) ? mask : -1;\r\n }\r\n\r\n /**\r\n * Gets the plane normal used to compute the sliding response (in local space)\r\n */\r\n public get slidePlaneNormal(): Vector3 {\r\n return this._slidePlaneNormal;\r\n }\r\n\r\n // Methods\r\n /**\r\n * @internal\r\n */\r\n public _initialize(source: Vector3, dir: Vector3, e: number): void {\r\n this._velocity = dir;\r\n this._velocitySquaredLength = this._velocity.lengthSquared();\r\n const len = Math.sqrt(this._velocitySquaredLength);\r\n if (len === 0 || len === 1.0) {\r\n this._normalizedVelocity.copyFromFloats(dir._x, dir._y, dir._z);\r\n } else {\r\n dir.scaleToRef(1.0 / len, this._normalizedVelocity);\r\n }\r\n this._basePoint = source;\r\n\r\n source.multiplyToRef(this._radius, this._basePointWorld);\r\n dir.multiplyToRef(this._radius, this._velocityWorld);\r\n\r\n this._velocityWorldLength = this._velocityWorld.length();\r\n\r\n this._epsilon = e;\r\n this.collisionFound = false;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _checkPointInTriangle(point: Vector3, pa: Vector3, pb: Vector3, pc: Vector3, n: Vector3): boolean {\r\n pa.subtractToRef(point, this._tempVector);\r\n pb.subtractToRef(point, this._tempVector2);\r\n\r\n Vector3.CrossToRef(this._tempVector, this._tempVector2, this._tempVector4);\r\n let d = Vector3.Dot(this._tempVector4, n);\r\n if (d < 0) {\r\n return false;\r\n }\r\n\r\n pc.subtractToRef(point, this._tempVector3);\r\n Vector3.CrossToRef(this._tempVector2, this._tempVector3, this._tempVector4);\r\n d = Vector3.Dot(this._tempVector4, n);\r\n if (d < 0) {\r\n return false;\r\n }\r\n\r\n Vector3.CrossToRef(this._tempVector3, this._tempVector, this._tempVector4);\r\n d = Vector3.Dot(this._tempVector4, n);\r\n return d >= 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _canDoCollision(sphereCenter: Vector3, sphereRadius: number, vecMin: Vector3, vecMax: Vector3): boolean {\r\n const distance = Vector3.Distance(this._basePointWorld, sphereCenter);\r\n\r\n const max = Math.max(this._radius.x, this._radius.y, this._radius.z);\r\n\r\n if (distance > this._velocityWorldLength + max + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (!IntersectBoxAaSphere(vecMin, vecMax, this._basePointWorld, this._velocityWorldLength + max)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _testTriangle(faceIndex: number, trianglePlaneArray: Array<Plane>, p1: Vector3, p2: Vector3, p3: Vector3, hasMaterial: boolean, hostMesh: AbstractMesh): void {\r\n let t0;\r\n let embeddedInPlane = false;\r\n\r\n //defensive programming, actually not needed.\r\n if (!trianglePlaneArray) {\r\n trianglePlaneArray = [];\r\n }\r\n\r\n if (!trianglePlaneArray[faceIndex]) {\r\n trianglePlaneArray[faceIndex] = new Plane(0, 0, 0, 0);\r\n trianglePlaneArray[faceIndex].copyFromPoints(p1, p2, p3);\r\n }\r\n\r\n const trianglePlane = trianglePlaneArray[faceIndex];\r\n\r\n if (!hasMaterial && !trianglePlane.isFrontFacingTo(this._normalizedVelocity, 0)) {\r\n return;\r\n }\r\n\r\n const signedDistToTrianglePlane = trianglePlane.signedDistanceTo(this._basePoint);\r\n const normalDotVelocity = Vector3.Dot(trianglePlane.normal, this._velocity);\r\n\r\n // if DoubleSidedCheck is false(default), a double sided face will be consided 2 times.\r\n // if true, it discard the faces having normal not facing velocity\r\n if (Collider.DoubleSidedCheck && normalDotVelocity > 0.0001) {\r\n return;\r\n }\r\n\r\n if (normalDotVelocity == 0) {\r\n if (Math.abs(signedDistToTrianglePlane) >= 1.0) {\r\n return;\r\n }\r\n embeddedInPlane = true;\r\n t0 = 0;\r\n } else {\r\n t0 = (-1.0 - signedDistToTrianglePlane) / normalDotVelocity;\r\n let t1 = (1.0 - signedDistToTrianglePlane) / normalDotVelocity;\r\n\r\n if (t0 > t1) {\r\n const temp = t1;\r\n t1 = t0;\r\n t0 = temp;\r\n }\r\n\r\n if (t0 > 1.0 || t1 < 0.0) {\r\n return;\r\n }\r\n\r\n if (t0 < 0) {\r\n t0 = 0;\r\n }\r\n if (t0 > 1.0) {\r\n t0 = 1.0;\r\n }\r\n }\r\n\r\n this._collisionPoint.copyFromFloats(0, 0, 0);\r\n\r\n let found = false;\r\n let t = 1.0;\r\n\r\n if (!embeddedInPlane) {\r\n this._basePoint.subtractToRef(trianglePlane.normal, this._planeIntersectionPoint);\r\n this._velocity.scaleToRef(t0, this._tempVector);\r\n this._planeIntersectionPoint.addInPlace(this._tempVector);\r\n\r\n if (this._checkPointInTriangle(this._planeIntersectionPoint, p1, p2, p3, trianglePlane.normal)) {\r\n found = true;\r\n t = t0;\r\n this._collisionPoint.copyFrom(this._planeIntersectionPoint);\r\n }\r\n }\r\n\r\n if (!found) {\r\n let a = this._velocitySquaredLength;\r\n\r\n this._basePoint.subtractToRef(p1, this._tempVector);\r\n let b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n let c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n let lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p1);\r\n }\r\n\r\n this._basePoint.subtractToRef(p2, this._tempVector);\r\n b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p2);\r\n }\r\n\r\n this._basePoint.subtractToRef(p3, this._tempVector);\r\n b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p3);\r\n }\r\n\r\n p2.subtractToRef(p1, this._edge);\r\n p1.subtractToRef(this._basePoint, this._baseToVertex);\r\n let edgeSquaredLength = this._edge.lengthSquared();\r\n let edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n let edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p1.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n\r\n p3.subtractToRef(p2, this._edge);\r\n p2.subtractToRef(this._basePoint, this._baseToVertex);\r\n edgeSquaredLength = this._edge.lengthSquared();\r\n edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p2.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n\r\n p1.subtractToRef(p3, this._edge);\r\n p3.subtractToRef(this._basePoint, this._baseToVertex);\r\n edgeSquaredLength = this._edge.lengthSquared();\r\n edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p3.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n }\r\n\r\n if (found) {\r\n const distToCollisionSquared = t * t * this._velocitySquaredLength;\r\n\r\n if (!this.collisionFound || distToCollisionSquared < this._nearestDistanceSquared) {\r\n // if collisionResponse is false, collision is not found but the collidedMesh is set anyway.\r\n // onCollide observable are triggered if collideMesh is set\r\n // this allow trigger volumes to be created.\r\n if (hostMesh.collisionResponse) {\r\n if (!this.intersectionPoint) {\r\n this.intersectionPoint = this._collisionPoint.clone();\r\n } else {\r\n this.intersectionPoint.copyFrom(this._collisionPoint);\r\n }\r\n this._nearestDistanceSquared = distToCollisionSquared;\r\n this._nearestDistance = Math.sqrt(distToCollisionSquared);\r\n this.collisionFound = true;\r\n }\r\n this.collidedMesh = hostMesh;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _collide(\r\n trianglePlaneArray: Array<Plane>,\r\n pts: Vector3[],\r\n indices: IndicesArray,\r\n indexStart: number,\r\n indexEnd: number,\r\n decal: number,\r\n hasMaterial: boolean,\r\n hostMesh: AbstractMesh,\r\n invertTriangles?: boolean,\r\n triangleStrip: boolean = false\r\n ): void {\r\n if (triangleStrip) {\r\n if (!indices || indices.length === 0) {\r\n for (let i = 0; i < pts.length - 2; i += 1) {\r\n const p1 = pts[i];\r\n const p2 = pts[i + 1];\r\n const p3 = pts[i + 2];\r\n\r\n // stay defensive and don't check against undefined positions.\r\n if (!p1 || !p2 || !p3) {\r\n continue;\r\n }\r\n // Handles strip faces one on two is reversed\r\n if ((invertTriangles ? 1 : 0) ^ (i % 2)) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p2, p1, p3, hasMaterial, hostMesh);\r\n }\r\n }\r\n } else {\r\n for (let i = indexStart; i < indexEnd - 2; i += 1) {\r\n const indexA = indices[i];\r\n const indexB = indices[i + 1];\r\n const indexC = indices[i + 2];\r\n\r\n if (indexC === 0xffffffff) {\r\n i += 2;\r\n continue;\r\n }\r\n\r\n const p1 = pts[indexA];\r\n const p2 = pts[indexB];\r\n const p3 = pts[indexC];\r\n\r\n // stay defensive and don't check against undefined positions.\r\n if (!p1 || !p2 || !p3) {\r\n continue;\r\n }\r\n\r\n // Handles strip faces one on two is reversed\r\n if ((invertTriangles ? 1 : 0) ^ (i % 2)) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p2, p1, p3, hasMaterial, hostMesh);\r\n }\r\n }\r\n }\r\n } else if (!indices || indices.length === 0) {\r\n for (let i = 0; i < pts.length; i += 3) {\r\n const p1 = pts[i];\r\n const p2 = pts[i + 1];\r\n const p3 = pts[i + 2];\r\n\r\n if (invertTriangles) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);\r\n }\r\n }\r\n } else {\r\n for (let i = indexStart; i < indexEnd; i += 3) {\r\n const p1 = pts[indices[i] - decal];\r\n const p2 = pts[indices[i + 1] - decal];\r\n const p3 = pts[indices[i + 2] - decal];\r\n\r\n if (invertTriangles) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getResponse(pos: Vector3, vel: Vector3, slideOnCollide: boolean): void {\r\n // Handle straight movement up to collision\r\n\r\n pos.addToRef(vel, this._destinationPoint);\r\n\r\n if (!slideOnCollide) {\r\n // Move to one \"close distance\" less than the collision point to\r\n // prevent any collision penetration from floating point inaccuracy\r\n vel.scaleInPlace((this._nearestDistance - this._epsilon) / vel.length());\r\n this._basePoint.addToRef(vel, pos);\r\n return;\r\n } else {\r\n vel.scaleInPlace(this._nearestDistance / vel.length());\r\n this._basePoint.addToRef(vel, pos);\r\n }\r\n\r\n // Handle slide movement past collision\r\n\r\n pos.subtractToRef(this.intersectionPoint, this._slidePlaneNormal);\r\n this._slidePlaneNormal.normalize();\r\n this._slidePlaneNormal.scaleToRef(this._epsilon, this._displacementVector);\r\n\r\n pos.addInPlace(this._displacementVector);\r\n this.intersectionPoint.addInPlace(this._displacementVector);\r\n\r\n this._slidePlaneNormal.scaleInPlace(Plane.SignedDistanceToPlaneFromPositionAndNormal(this.intersectionPoint, this._slidePlaneNormal, this._destinationPoint));\r\n this._destinationPoint.subtractInPlace(this._slidePlaneNormal);\r\n\r\n this._destinationPoint.subtractToRef(this.intersectionPoint, vel);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"collider.js","sourceRoot":"","sources":["../../../../dev/core/src/Collisions/collider.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable, type IndicesArray } from \"../types\";\r\nimport { Vector3 } from \"../Maths/math.vector.pure\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Plane } from \"../Maths/math.plane\";\r\n\r\nconst IntersectBoxAaSphere = (boxMin: Vector3, boxMax: Vector3, sphereCenter: Vector3, sphereRadius: number): boolean => {\r\n if (boxMin.x > sphereCenter.x + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.x - sphereRadius > boxMax.x) {\r\n return false;\r\n }\r\n\r\n if (boxMin.y > sphereCenter.y + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.y - sphereRadius > boxMax.y) {\r\n return false;\r\n }\r\n\r\n if (boxMin.z > sphereCenter.z + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (sphereCenter.z - sphereRadius > boxMax.z) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst GetLowestRoot: (a: number, b: number, c: number, maxR: number) => { root: number; found: boolean } = (function () {\r\n const result = { root: 0, found: false };\r\n return function (a: number, b: number, c: number, maxR: number) {\r\n result.root = 0;\r\n result.found = false;\r\n const determinant = b * b - 4.0 * a * c;\r\n if (determinant < 0) {\r\n return result;\r\n }\r\n\r\n const sqrtD = Math.sqrt(determinant);\r\n let r1 = (-b - sqrtD) / (2.0 * a);\r\n let r2 = (-b + sqrtD) / (2.0 * a);\r\n\r\n if (r1 > r2) {\r\n const temp = r2;\r\n r2 = r1;\r\n r1 = temp;\r\n }\r\n\r\n if (r1 > 0 && r1 < maxR) {\r\n result.root = r1;\r\n result.found = true;\r\n return result;\r\n }\r\n\r\n if (r2 > 0 && r2 < maxR) {\r\n result.root = r2;\r\n result.found = true;\r\n return result;\r\n }\r\n\r\n return result;\r\n };\r\n})();\r\n\r\n/** @internal */\r\nexport class Collider {\r\n // Implementation of the \"Improved Collision detection and Response\" algorithm proposed by Kasper Fauerby\r\n // https://www.peroxide.dk/papers/collision/collision.pdf\r\n\r\n /** Define if a collision was found */\r\n public collisionFound: boolean;\r\n\r\n /**\r\n * Define last intersection point in local space\r\n */\r\n public intersectionPoint: Vector3;\r\n\r\n /**\r\n * Define last collided mesh\r\n */\r\n public collidedMesh: Nullable<AbstractMesh>;\r\n\r\n /**\r\n * If true, it check for double sided faces and only returns 1 collision instead of 2\r\n */\r\n public static DoubleSidedCheck = false;\r\n\r\n private _collisionPoint = Vector3.Zero();\r\n private _planeIntersectionPoint = Vector3.Zero();\r\n private _tempVector = Vector3.Zero();\r\n private _tempVector2 = Vector3.Zero();\r\n private _tempVector3 = Vector3.Zero();\r\n private _tempVector4 = Vector3.Zero();\r\n private _edge = Vector3.Zero();\r\n private _baseToVertex = Vector3.Zero();\r\n private _destinationPoint = Vector3.Zero();\r\n private _slidePlaneNormal = Vector3.Zero();\r\n private _displacementVector = Vector3.Zero();\r\n\r\n /** @internal */\r\n public _radius = Vector3.One();\r\n /** @internal */\r\n public _retry = 0;\r\n private _velocity: Vector3;\r\n private _basePoint: Vector3;\r\n private _epsilon: number;\r\n /** @internal */\r\n public _velocityWorldLength: number;\r\n /** @internal */\r\n public _basePointWorld = Vector3.Zero();\r\n private _velocityWorld = Vector3.Zero();\r\n private _normalizedVelocity = Vector3.Zero();\r\n /** @internal */\r\n public _initialVelocity: Vector3;\r\n /** @internal */\r\n public _initialPosition: Vector3;\r\n private _nearestDistance: number;\r\n\r\n private _collisionMask = -1;\r\n private _velocitySquaredLength: number;\r\n private _nearestDistanceSquared: number;\r\n\r\n public get collisionMask(): number {\r\n return this._collisionMask;\r\n }\r\n\r\n public set collisionMask(mask: number) {\r\n this._collisionMask = !isNaN(mask) ? mask : -1;\r\n }\r\n\r\n /**\r\n * Gets the plane normal used to compute the sliding response (in local space)\r\n */\r\n public get slidePlaneNormal(): Vector3 {\r\n return this._slidePlaneNormal;\r\n }\r\n\r\n // Methods\r\n /**\r\n * @internal\r\n */\r\n public _initialize(source: Vector3, dir: Vector3, e: number): void {\r\n this._velocity = dir;\r\n this._velocitySquaredLength = this._velocity.lengthSquared();\r\n const len = Math.sqrt(this._velocitySquaredLength);\r\n if (len === 0 || len === 1.0) {\r\n this._normalizedVelocity.copyFromFloats(dir._x, dir._y, dir._z);\r\n } else {\r\n dir.scaleToRef(1.0 / len, this._normalizedVelocity);\r\n }\r\n this._basePoint = source;\r\n\r\n source.multiplyToRef(this._radius, this._basePointWorld);\r\n dir.multiplyToRef(this._radius, this._velocityWorld);\r\n\r\n this._velocityWorldLength = this._velocityWorld.length();\r\n\r\n this._epsilon = e;\r\n this.collisionFound = false;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _checkPointInTriangle(point: Vector3, pa: Vector3, pb: Vector3, pc: Vector3, n: Vector3): boolean {\r\n pa.subtractToRef(point, this._tempVector);\r\n pb.subtractToRef(point, this._tempVector2);\r\n\r\n Vector3.CrossToRef(this._tempVector, this._tempVector2, this._tempVector4);\r\n let d = Vector3.Dot(this._tempVector4, n);\r\n if (d < 0) {\r\n return false;\r\n }\r\n\r\n pc.subtractToRef(point, this._tempVector3);\r\n Vector3.CrossToRef(this._tempVector2, this._tempVector3, this._tempVector4);\r\n d = Vector3.Dot(this._tempVector4, n);\r\n if (d < 0) {\r\n return false;\r\n }\r\n\r\n Vector3.CrossToRef(this._tempVector3, this._tempVector, this._tempVector4);\r\n d = Vector3.Dot(this._tempVector4, n);\r\n return d >= 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _canDoCollision(sphereCenter: Vector3, sphereRadius: number, vecMin: Vector3, vecMax: Vector3): boolean {\r\n const distance = Vector3.Distance(this._basePointWorld, sphereCenter);\r\n\r\n const max = Math.max(this._radius.x, this._radius.y, this._radius.z);\r\n\r\n if (distance > this._velocityWorldLength + max + sphereRadius) {\r\n return false;\r\n }\r\n\r\n if (!IntersectBoxAaSphere(vecMin, vecMax, this._basePointWorld, this._velocityWorldLength + max)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _testTriangle(faceIndex: number, trianglePlaneArray: Array<Plane>, p1: Vector3, p2: Vector3, p3: Vector3, hasMaterial: boolean, hostMesh: AbstractMesh): void {\r\n let t0;\r\n let embeddedInPlane = false;\r\n\r\n //defensive programming, actually not needed.\r\n if (!trianglePlaneArray) {\r\n trianglePlaneArray = [];\r\n }\r\n\r\n if (!trianglePlaneArray[faceIndex]) {\r\n trianglePlaneArray[faceIndex] = new Plane(0, 0, 0, 0);\r\n trianglePlaneArray[faceIndex].copyFromPoints(p1, p2, p3);\r\n }\r\n\r\n const trianglePlane = trianglePlaneArray[faceIndex];\r\n\r\n if (!hasMaterial && !trianglePlane.isFrontFacingTo(this._normalizedVelocity, 0)) {\r\n return;\r\n }\r\n\r\n const signedDistToTrianglePlane = trianglePlane.signedDistanceTo(this._basePoint);\r\n const normalDotVelocity = Vector3.Dot(trianglePlane.normal, this._velocity);\r\n\r\n // if DoubleSidedCheck is false(default), a double sided face will be consided 2 times.\r\n // if true, it discard the faces having normal not facing velocity\r\n if (Collider.DoubleSidedCheck && normalDotVelocity > 0.0001) {\r\n return;\r\n }\r\n\r\n if (normalDotVelocity == 0) {\r\n if (Math.abs(signedDistToTrianglePlane) >= 1.0) {\r\n return;\r\n }\r\n embeddedInPlane = true;\r\n t0 = 0;\r\n } else {\r\n t0 = (-1.0 - signedDistToTrianglePlane) / normalDotVelocity;\r\n let t1 = (1.0 - signedDistToTrianglePlane) / normalDotVelocity;\r\n\r\n if (t0 > t1) {\r\n const temp = t1;\r\n t1 = t0;\r\n t0 = temp;\r\n }\r\n\r\n if (t0 > 1.0 || t1 < 0.0) {\r\n return;\r\n }\r\n\r\n if (t0 < 0) {\r\n t0 = 0;\r\n }\r\n if (t0 > 1.0) {\r\n t0 = 1.0;\r\n }\r\n }\r\n\r\n this._collisionPoint.copyFromFloats(0, 0, 0);\r\n\r\n let found = false;\r\n let t = 1.0;\r\n\r\n if (!embeddedInPlane) {\r\n this._basePoint.subtractToRef(trianglePlane.normal, this._planeIntersectionPoint);\r\n this._velocity.scaleToRef(t0, this._tempVector);\r\n this._planeIntersectionPoint.addInPlace(this._tempVector);\r\n\r\n if (this._checkPointInTriangle(this._planeIntersectionPoint, p1, p2, p3, trianglePlane.normal)) {\r\n found = true;\r\n t = t0;\r\n this._collisionPoint.copyFrom(this._planeIntersectionPoint);\r\n }\r\n }\r\n\r\n if (!found) {\r\n let a = this._velocitySquaredLength;\r\n\r\n this._basePoint.subtractToRef(p1, this._tempVector);\r\n let b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n let c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n let lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p1);\r\n }\r\n\r\n this._basePoint.subtractToRef(p2, this._tempVector);\r\n b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p2);\r\n }\r\n\r\n this._basePoint.subtractToRef(p3, this._tempVector);\r\n b = 2.0 * Vector3.Dot(this._velocity, this._tempVector);\r\n c = this._tempVector.lengthSquared() - 1.0;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._collisionPoint.copyFrom(p3);\r\n }\r\n\r\n p2.subtractToRef(p1, this._edge);\r\n p1.subtractToRef(this._basePoint, this._baseToVertex);\r\n let edgeSquaredLength = this._edge.lengthSquared();\r\n let edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n let edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p1.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n\r\n p3.subtractToRef(p2, this._edge);\r\n p2.subtractToRef(this._basePoint, this._baseToVertex);\r\n edgeSquaredLength = this._edge.lengthSquared();\r\n edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p2.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n\r\n p1.subtractToRef(p3, this._edge);\r\n p3.subtractToRef(this._basePoint, this._baseToVertex);\r\n edgeSquaredLength = this._edge.lengthSquared();\r\n edgeDotVelocity = Vector3.Dot(this._edge, this._velocity);\r\n edgeDotBaseToVertex = Vector3.Dot(this._edge, this._baseToVertex);\r\n\r\n a = edgeSquaredLength * -this._velocitySquaredLength + edgeDotVelocity * edgeDotVelocity;\r\n b = 2 * (edgeSquaredLength * Vector3.Dot(this._velocity, this._baseToVertex) - edgeDotVelocity * edgeDotBaseToVertex);\r\n c = edgeSquaredLength * (1.0 - this._baseToVertex.lengthSquared()) + edgeDotBaseToVertex * edgeDotBaseToVertex;\r\n\r\n lowestRoot = GetLowestRoot(a, b, c, t);\r\n if (lowestRoot.found) {\r\n const f = (edgeDotVelocity * lowestRoot.root - edgeDotBaseToVertex) / edgeSquaredLength;\r\n\r\n if (f >= 0.0 && f <= 1.0) {\r\n t = lowestRoot.root;\r\n found = true;\r\n this._edge.scaleInPlace(f);\r\n p3.addToRef(this._edge, this._collisionPoint);\r\n }\r\n }\r\n }\r\n\r\n if (found) {\r\n const distToCollisionSquared = t * t * this._velocitySquaredLength;\r\n\r\n if (!this.collisionFound || distToCollisionSquared < this._nearestDistanceSquared) {\r\n // if collisionResponse is false, collision is not found but the collidedMesh is set anyway.\r\n // onCollide observable are triggered if collideMesh is set\r\n // this allow trigger volumes to be created.\r\n if (hostMesh.collisionResponse) {\r\n if (!this.intersectionPoint) {\r\n this.intersectionPoint = this._collisionPoint.clone();\r\n } else {\r\n this.intersectionPoint.copyFrom(this._collisionPoint);\r\n }\r\n this._nearestDistanceSquared = distToCollisionSquared;\r\n this._nearestDistance = Math.sqrt(distToCollisionSquared);\r\n this.collisionFound = true;\r\n }\r\n this.collidedMesh = hostMesh;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _collide(\r\n trianglePlaneArray: Array<Plane>,\r\n pts: Vector3[],\r\n indices: IndicesArray,\r\n indexStart: number,\r\n indexEnd: number,\r\n decal: number,\r\n hasMaterial: boolean,\r\n hostMesh: AbstractMesh,\r\n invertTriangles?: boolean,\r\n triangleStrip: boolean = false\r\n ): void {\r\n if (triangleStrip) {\r\n if (!indices || indices.length === 0) {\r\n for (let i = 0; i < pts.length - 2; i += 1) {\r\n const p1 = pts[i];\r\n const p2 = pts[i + 1];\r\n const p3 = pts[i + 2];\r\n\r\n // stay defensive and don't check against undefined positions.\r\n if (!p1 || !p2 || !p3) {\r\n continue;\r\n }\r\n // Handles strip faces one on two is reversed\r\n if ((invertTriangles ? 1 : 0) ^ (i % 2)) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p2, p1, p3, hasMaterial, hostMesh);\r\n }\r\n }\r\n } else {\r\n for (let i = indexStart; i < indexEnd - 2; i += 1) {\r\n const indexA = indices[i];\r\n const indexB = indices[i + 1];\r\n const indexC = indices[i + 2];\r\n\r\n if (indexC === 0xffffffff) {\r\n i += 2;\r\n continue;\r\n }\r\n\r\n const p1 = pts[indexA];\r\n const p2 = pts[indexB];\r\n const p3 = pts[indexC];\r\n\r\n // stay defensive and don't check against undefined positions.\r\n if (!p1 || !p2 || !p3) {\r\n continue;\r\n }\r\n\r\n // Handles strip faces one on two is reversed\r\n if ((invertTriangles ? 1 : 0) ^ (i % 2)) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p2, p1, p3, hasMaterial, hostMesh);\r\n }\r\n }\r\n }\r\n } else if (!indices || indices.length === 0) {\r\n for (let i = 0; i < pts.length; i += 3) {\r\n const p1 = pts[i];\r\n const p2 = pts[i + 1];\r\n const p3 = pts[i + 2];\r\n\r\n if (invertTriangles) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);\r\n }\r\n }\r\n } else {\r\n for (let i = indexStart; i < indexEnd; i += 3) {\r\n const p1 = pts[indices[i] - decal];\r\n const p2 = pts[indices[i + 1] - decal];\r\n const p3 = pts[indices[i + 2] - decal];\r\n\r\n if (invertTriangles) {\r\n this._testTriangle(i, trianglePlaneArray, p1, p2, p3, hasMaterial, hostMesh);\r\n } else {\r\n this._testTriangle(i, trianglePlaneArray, p3, p2, p1, hasMaterial, hostMesh);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getResponse(pos: Vector3, vel: Vector3, slideOnCollide: boolean): void {\r\n // Handle straight movement up to collision\r\n\r\n pos.addToRef(vel, this._destinationPoint);\r\n\r\n if (!slideOnCollide) {\r\n // Move to one \"close distance\" less than the collision point to\r\n // prevent any collision penetration from floating point inaccuracy\r\n vel.scaleInPlace((this._nearestDistance - this._epsilon) / vel.length());\r\n this._basePoint.addToRef(vel, pos);\r\n return;\r\n } else {\r\n vel.scaleInPlace(this._nearestDistance / vel.length());\r\n this._basePoint.addToRef(vel, pos);\r\n }\r\n\r\n // Handle slide movement past collision\r\n\r\n pos.subtractToRef(this.intersectionPoint, this._slidePlaneNormal);\r\n this._slidePlaneNormal.normalize();\r\n this._slidePlaneNormal.scaleToRef(this._epsilon, this._displacementVector);\r\n\r\n pos.addInPlace(this._displacementVector);\r\n this.intersectionPoint.addInPlace(this._displacementVector);\r\n\r\n this._slidePlaneNormal.scaleInPlace(Plane.SignedDistanceToPlaneFromPositionAndNormal(this.intersectionPoint, this._slidePlaneNormal, this._destinationPoint));\r\n this._destinationPoint.subtractInPlace(this._slidePlaneNormal);\r\n\r\n this._destinationPoint.subtractToRef(this.intersectionPoint, vel);\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ShaderLanguage } from "../Materials/shaderLanguage.js";
2
- import { ShaderMaterial } from "../Materials/shaderMaterial.js";
2
+ import { ShaderMaterial } from "../Materials/shaderMaterial.pure.js";
3
3
  import { type IVector2Like } from "../Maths/math.like.js";
4
4
  import { type AbstractMesh } from "../Meshes/abstractMesh.js";
5
5
  import { type Nullable } from "../types.js";
@@ -1,9 +1,9 @@
1
1
 
2
- import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture.js";
3
- import { ShaderMaterial } from "../Materials/shaderMaterial.js";
4
- import { GaussianSplattingMaterial } from "../Materials/GaussianSplatting/gaussianSplattingMaterial.js";
5
- import { GaussianSplattingGpuPickingMaterialPlugin } from "../Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js";
6
- import { Color4 } from "../Maths/math.color.js";
2
+ import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture.pure.js";
3
+ import { ShaderMaterial } from "../Materials/shaderMaterial.pure.js";
4
+ import { GaussianSplattingMaterial } from "../Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js";
5
+ import { GaussianSplattingGpuPickingMaterialPlugin } from "../Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js";
6
+ import { Color4 } from "../Maths/math.color.pure.js";
7
7
  import { VertexBuffer } from "../Meshes/buffer.js";
8
8
  import { Logger } from "../Misc/logger.js";
9
9
  /**