@babylonjs/core 9.11.0 → 9.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1012) 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/subProperties/abstractSpatialAudio.d.ts +1 -1
  23. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
  24. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  25. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
  26. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
  27. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  28. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
  29. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
  30. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  31. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
  32. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  33. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  34. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  35. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  36. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  37. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  38. package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
  39. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  40. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  41. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  42. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  43. package/Behaviors/Cameras/framingBehavior.js +2 -2
  44. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  45. package/Behaviors/Cameras/interpolatingBehavior.d.ts +13 -1
  46. package/Behaviors/Cameras/interpolatingBehavior.js +13 -1
  47. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  48. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  49. package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
  50. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
  51. package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
  52. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  53. package/Behaviors/Meshes/followBehavior.js +1 -1
  54. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  55. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  56. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  57. package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
  58. package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
  59. package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
  60. package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
  61. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  62. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
  63. package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
  64. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  65. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
  66. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  67. package/Bones/boneIKController.d.ts +1 -1
  68. package/Bones/boneIKController.js +1 -1
  69. package/Bones/boneIKController.js.map +1 -1
  70. package/Bones/boneLookController.d.ts +1 -1
  71. package/Bones/boneLookController.js +1 -1
  72. package/Bones/boneLookController.js.map +1 -1
  73. package/Bones/skeleton.d.ts +2 -2
  74. package/Bones/skeleton.functions.d.ts +1 -1
  75. package/Bones/skeleton.functions.js +3 -3
  76. package/Bones/skeleton.functions.js.map +1 -1
  77. package/Bones/skeleton.js +3 -4
  78. package/Bones/skeleton.js.map +1 -1
  79. package/Buffers/buffer.align.pure.js +6 -0
  80. package/Buffers/buffer.align.pure.js.map +1 -1
  81. package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
  82. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  83. package/Buffers/buffer.pure.d.ts +8 -0
  84. package/Buffers/buffer.pure.js +31 -2
  85. package/Buffers/buffer.pure.js.map +1 -1
  86. package/Buffers/bufferUtils.js +17 -5
  87. package/Buffers/bufferUtils.js.map +1 -1
  88. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
  89. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  90. package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
  91. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  92. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  93. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  94. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
  95. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  96. package/Cameras/Inputs/flyCameraKeyboardInput.js +2 -2
  97. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  98. package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
  99. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  100. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  101. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  102. package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
  103. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  104. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  105. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  106. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +2 -2
  107. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  108. package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
  109. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  110. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  111. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  112. package/Cameras/Inputs/freeCameraTouchInput.js +2 -2
  113. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  114. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +1 -1
  115. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  116. package/Cameras/Limits/geospatialLimits.d.ts +1 -1
  117. package/Cameras/Limits/geospatialLimits.js +1 -1
  118. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  119. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  120. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
  121. package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
  122. package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
  123. package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
  124. package/Cameras/RigModes/vrRigMode.js +2 -2
  125. package/Cameras/RigModes/vrRigMode.js.map +1 -1
  126. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  127. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
  128. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  129. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  130. package/Cameras/VR/vrCameraMetrics.js +1 -1
  131. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  132. package/Cameras/cameraInputsManager.d.ts +1 -1
  133. package/Cameras/cameraInputsManager.js +1 -1
  134. package/Cameras/cameraInputsManager.js.map +1 -1
  135. package/Collisions/collider.d.ts +1 -1
  136. package/Collisions/collider.js +1 -1
  137. package/Collisions/collider.js.map +1 -1
  138. package/Collisions/gpuPicker.d.ts +1 -1
  139. package/Collisions/gpuPicker.js +5 -5
  140. package/Collisions/gpuPicker.js.map +1 -1
  141. package/Collisions/meshCollisionData.d.ts +1 -1
  142. package/Collisions/meshCollisionData.js +1 -1
  143. package/Collisions/meshCollisionData.js.map +1 -1
  144. package/Collisions/pickingInfo.d.ts +1 -1
  145. package/Collisions/pickingInfo.js +2 -2
  146. package/Collisions/pickingInfo.js.map +1 -1
  147. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  148. package/Culling/Octrees/octreeBlock.js +1 -1
  149. package/Culling/Octrees/octreeBlock.js.map +1 -1
  150. package/Culling/boundingBox.d.ts +1 -1
  151. package/Culling/boundingBox.js +1 -1
  152. package/Culling/boundingBox.js.map +1 -1
  153. package/Culling/boundingInfo.d.ts +1 -1
  154. package/Culling/boundingInfo.js +1 -1
  155. package/Culling/boundingInfo.js.map +1 -1
  156. package/Culling/boundingSphere.d.ts +1 -1
  157. package/Culling/boundingSphere.js +1 -1
  158. package/Culling/boundingSphere.js.map +1 -1
  159. package/Culling/ray.core.d.ts +1 -1
  160. package/Culling/ray.core.js +1 -1
  161. package/Culling/ray.core.js.map +1 -1
  162. package/Debug/axesViewer.d.ts +1 -1
  163. package/Debug/axesViewer.js +3 -3
  164. package/Debug/axesViewer.js.map +1 -1
  165. package/Debug/boneAxesViewer.d.ts +1 -1
  166. package/Debug/boneAxesViewer.js +1 -1
  167. package/Debug/boneAxesViewer.js.map +1 -1
  168. package/Debug/directionalLightFrustumViewer.d.ts +1 -1
  169. package/Debug/directionalLightFrustumViewer.js +6 -6
  170. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  171. package/Debug/rayHelper.d.ts +1 -1
  172. package/Debug/rayHelper.js +2 -2
  173. package/Debug/rayHelper.js.map +1 -1
  174. package/Debug/skeletonViewer.d.ts +2 -2
  175. package/Debug/skeletonViewer.js +10 -10
  176. package/Debug/skeletonViewer.js.map +1 -1
  177. package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
  178. package/DeviceInput/internalDeviceSourceManager.js +0 -1
  179. package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
  180. package/DeviceInput/webDeviceInputSystem.js +1 -1
  181. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  182. package/Engines/Extensions/engine.views.d.ts +1 -1
  183. package/Engines/Extensions/engine.views.js +1 -1
  184. package/Engines/Extensions/engine.views.js.map +1 -1
  185. package/Engines/Native/nativeHelpers.js +4 -1
  186. package/Engines/Native/nativeHelpers.js.map +1 -1
  187. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
  188. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
  189. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  190. package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
  191. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  192. package/Engines/WebGPU/webgpuTintWASM.js +1 -1
  193. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  194. package/Engines/abstractEngine.pure.js +2 -2
  195. package/Engines/abstractEngine.pure.js.map +1 -1
  196. package/Engines/constants.d.ts +4 -0
  197. package/Engines/constants.js +4 -0
  198. package/Engines/constants.js.map +1 -1
  199. package/Engines/engineFactory.d.ts +2 -2
  200. package/Engines/engineFactory.js +3 -3
  201. package/Engines/engineFactory.js.map +1 -1
  202. package/Events/pointerEvents.d.ts +1 -1
  203. package/Events/pointerEvents.js +1 -1
  204. package/Events/pointerEvents.js.map +1 -1
  205. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
  206. package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
  207. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
  208. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
  209. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  210. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
  211. package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
  212. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
  213. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  214. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  215. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
  216. package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
  217. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  218. package/FlowGraph/flowGraphBlock.d.ts +1 -1
  219. package/FlowGraph/flowGraphBlock.js +1 -1
  220. package/FlowGraph/flowGraphBlock.js.map +1 -1
  221. package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
  222. package/FlowGraph/flowGraphExecutionBlock.js +1 -1
  223. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  224. package/FlowGraph/flowGraphMath.d.ts +1 -1
  225. package/FlowGraph/flowGraphMath.js +1 -1
  226. package/FlowGraph/flowGraphMath.js.map +1 -1
  227. package/FlowGraph/flowGraphParser.js +1 -1
  228. package/FlowGraph/flowGraphParser.js.map +1 -1
  229. package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
  230. package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
  231. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  232. package/FlowGraph/flowGraphValidator.js.map +1 -1
  233. package/FlowGraph/serialization.js +4 -4
  234. package/FlowGraph/serialization.js.map +1 -1
  235. package/FlowGraph/utils.js.map +1 -1
  236. package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
  237. package/FrameGraph/Node/nodeRenderGraph.js +7 -7
  238. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  239. package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
  240. package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
  241. package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
  243. package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
  244. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
  246. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
  247. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  248. package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
  249. package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
  250. package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
  251. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
  252. package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
  253. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
  254. package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
  255. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
  256. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
  257. package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
  258. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
  259. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
  260. package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
  261. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
  262. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
  263. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  264. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
  265. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
  266. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  267. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
  268. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
  269. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  270. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
  271. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
  272. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
  273. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
  274. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
  275. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
  276. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
  277. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
  278. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
  279. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
  280. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
  281. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  282. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
  283. package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
  284. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  285. package/FrameGraph/frameGraphRenderContext.js +1 -1
  286. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  287. package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
  288. package/FrameGraph/frameGraphTextureManager.js +1 -1
  289. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  290. package/Gamepads/gamepadManager.js +1 -1
  291. package/Gamepads/gamepadManager.js.map +1 -1
  292. package/Gizmos/axisDragGizmo.d.ts +5 -5
  293. package/Gizmos/axisDragGizmo.js +6 -6
  294. package/Gizmos/axisDragGizmo.js.map +1 -1
  295. package/Gizmos/axisScaleGizmo.d.ts +4 -4
  296. package/Gizmos/axisScaleGizmo.js +6 -6
  297. package/Gizmos/axisScaleGizmo.js.map +1 -1
  298. package/Gizmos/boundingBoxGizmo.d.ts +5 -5
  299. package/Gizmos/boundingBoxGizmo.js +7 -7
  300. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  301. package/Gizmos/cameraGizmo.d.ts +3 -3
  302. package/Gizmos/cameraGizmo.js +7 -7
  303. package/Gizmos/cameraGizmo.js.map +1 -1
  304. package/Gizmos/gizmo.d.ts +2 -2
  305. package/Gizmos/gizmo.js +3 -3
  306. package/Gizmos/gizmo.js.map +1 -1
  307. package/Gizmos/gizmoManager.d.ts +2 -2
  308. package/Gizmos/gizmoManager.js +2 -2
  309. package/Gizmos/gizmoManager.js.map +1 -1
  310. package/Gizmos/lightGizmo.d.ts +4 -4
  311. package/Gizmos/lightGizmo.js +11 -11
  312. package/Gizmos/lightGizmo.js.map +1 -1
  313. package/Gizmos/planeDragGizmo.d.ts +4 -4
  314. package/Gizmos/planeDragGizmo.js +5 -5
  315. package/Gizmos/planeDragGizmo.js.map +1 -1
  316. package/Gizmos/positionGizmo.d.ts +1 -1
  317. package/Gizmos/positionGizmo.js +2 -2
  318. package/Gizmos/positionGizmo.js.map +1 -1
  319. package/Gizmos/rotationGizmo.d.ts +3 -3
  320. package/Gizmos/rotationGizmo.js +3 -3
  321. package/Gizmos/rotationGizmo.js.map +1 -1
  322. package/Gizmos/scaleGizmo.d.ts +2 -2
  323. package/Gizmos/scaleGizmo.js +4 -4
  324. package/Gizmos/scaleGizmo.js.map +1 -1
  325. package/Gizmos/spatialAudioGizmo.d.ts +2 -2
  326. package/Gizmos/spatialAudioGizmo.js +6 -6
  327. package/Gizmos/spatialAudioGizmo.js.map +1 -1
  328. package/Helpers/environmentHelper.d.ts +6 -6
  329. package/Helpers/environmentHelper.js +12 -12
  330. package/Helpers/environmentHelper.js.map +1 -1
  331. package/Helpers/materialConversionHelper.d.ts +1 -1
  332. package/Helpers/materialConversionHelper.js +1 -1
  333. package/Helpers/materialConversionHelper.js.map +1 -1
  334. package/Helpers/photoDome.d.ts +1 -1
  335. package/Helpers/photoDome.js +1 -1
  336. package/Helpers/photoDome.js.map +1 -1
  337. package/Helpers/textureDome.d.ts +4 -4
  338. package/Helpers/textureDome.js +6 -6
  339. package/Helpers/textureDome.js.map +1 -1
  340. package/Helpers/videoDome.d.ts +1 -1
  341. package/Helpers/videoDome.js +2 -2
  342. package/Helpers/videoDome.js.map +1 -1
  343. package/Inputs/scene.inputManager.d.ts +1 -1
  344. package/Inputs/scene.inputManager.js +1 -1
  345. package/Inputs/scene.inputManager.js.map +1 -1
  346. package/Instrumentation/sceneInstrumentation.js +1 -1
  347. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  348. package/Layers/effectLayer.d.ts +1 -1
  349. package/Layers/effectLayer.js +3 -3
  350. package/Layers/effectLayer.js.map +1 -1
  351. package/Layers/layer.d.ts +2 -2
  352. package/Layers/layer.js +4 -4
  353. package/Layers/layer.js.map +1 -1
  354. package/Layers/thinEffectLayer.d.ts +2 -2
  355. package/Layers/thinEffectLayer.js +3 -3
  356. package/Layers/thinEffectLayer.js.map +1 -1
  357. package/Layers/thinGlowLayer.d.ts +1 -1
  358. package/Layers/thinGlowLayer.js +3 -3
  359. package/Layers/thinGlowLayer.js.map +1 -1
  360. package/Layers/thinHighlightLayer.d.ts +1 -1
  361. package/Layers/thinHighlightLayer.js +3 -3
  362. package/Layers/thinHighlightLayer.js.map +1 -1
  363. package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
  364. package/Layers/thinSelectionOutlineLayer.js +3 -3
  365. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  366. package/Legacy/legacy.js +12 -1
  367. package/Legacy/legacy.js.map +1 -1
  368. package/LensFlares/lensFlare.d.ts +2 -2
  369. package/LensFlares/lensFlare.js +3 -3
  370. package/LensFlares/lensFlare.js.map +1 -1
  371. package/LensFlares/lensFlareSystem.d.ts +1 -1
  372. package/LensFlares/lensFlareSystem.js +6 -6
  373. package/LensFlares/lensFlareSystem.js.map +1 -1
  374. package/Lights/LTC/ltcTextureTool.js +1 -1
  375. package/Lights/LTC/ltcTextureTool.js.map +1 -1
  376. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
  377. package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
  378. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  379. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
  380. package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
  381. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
  382. package/Lights/Shadows/pure.d.ts +1 -0
  383. package/Lights/Shadows/pure.js +1 -0
  384. package/Lights/Shadows/pure.js.map +1 -1
  385. package/Lights/Shadows/shadowGenerator.d.ts +3 -3
  386. package/Lights/Shadows/shadowGenerator.js +7 -7
  387. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  388. package/Lights/areaLight.d.ts +1 -1
  389. package/Lights/areaLight.js +0 -1
  390. package/Lights/areaLight.js.map +1 -1
  391. package/Lights/light.d.ts +2 -2
  392. package/Lights/light.js +2 -2
  393. package/Lights/light.js.map +1 -1
  394. package/Lights/shadowLight.d.ts +1 -1
  395. package/Lights/shadowLight.js +1 -1
  396. package/Lights/shadowLight.js.map +1 -1
  397. package/Loading/sceneLoader.d.ts +2 -2
  398. package/Loading/sceneLoader.js +3 -3
  399. package/Loading/sceneLoader.js.map +1 -1
  400. package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
  401. package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
  402. package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
  403. package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
  404. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
  405. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  406. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
  407. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  408. package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
  409. package/Materials/Node/nodeMaterial.pure.js +68 -13
  410. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  411. package/Materials/Node/nodeMaterialDefault.js +14 -14
  412. package/Materials/Node/nodeMaterialDefault.js.map +1 -1
  413. package/Materials/PBR/openpbrMaterial.pure.js +19 -4
  414. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  415. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
  416. package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
  417. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  418. package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
  419. package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
  420. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  421. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
  422. package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
  423. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  424. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
  425. package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
  426. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  427. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
  428. package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
  429. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  430. package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
  431. package/Materials/PBR/pbrSheenConfiguration.js +41 -2
  432. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  433. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
  434. package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
  435. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  436. package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
  437. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  438. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
  439. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
  440. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  441. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
  442. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
  443. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
  444. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
  445. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
  446. package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
  447. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  448. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
  449. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  450. package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
  451. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  452. package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
  453. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  454. package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
  455. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  456. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  457. package/Materials/Textures/Packer/packer.d.ts +1 -1
  458. package/Materials/Textures/Packer/packer.js +6 -6
  459. package/Materials/Textures/Packer/packer.js.map +1 -1
  460. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  461. package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
  462. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  463. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
  464. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  465. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
  466. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  467. package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
  468. package/Materials/Textures/prePassRenderTarget.js +1 -1
  469. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  470. package/Materials/Textures/rawCubeTexture.d.ts +1 -1
  471. package/Materials/Textures/rawCubeTexture.js +2 -2
  472. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  473. package/Materials/Textures/rawTexture.d.ts +1 -1
  474. package/Materials/Textures/rawTexture.js +1 -1
  475. package/Materials/Textures/rawTexture.js.map +1 -1
  476. package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
  477. package/Materials/Textures/rawTexture2DArray.js +1 -1
  478. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  479. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  480. package/Materials/Textures/rawTexture3D.js +1 -1
  481. package/Materials/Textures/rawTexture3D.js.map +1 -1
  482. package/Materials/Textures/refractionTexture.d.ts +1 -1
  483. package/Materials/Textures/refractionTexture.js +1 -1
  484. package/Materials/Textures/refractionTexture.js.map +1 -1
  485. package/Materials/Textures/textureMerger.d.ts +1 -1
  486. package/Materials/Textures/textureMerger.js +1 -1
  487. package/Materials/Textures/textureMerger.js.map +1 -1
  488. package/Materials/Textures/textureProcessor.d.ts +1 -1
  489. package/Materials/Textures/textureProcessor.js +2 -2
  490. package/Materials/Textures/textureProcessor.js.map +1 -1
  491. package/Materials/Textures/thinRenderTargetTexture.d.ts +4 -4
  492. package/Materials/Textures/thinRenderTargetTexture.js +2 -2
  493. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  494. package/Materials/clipPlaneMaterialHelper.js +1 -1
  495. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  496. package/Materials/effectRenderer.pure.js +4 -2
  497. package/Materials/effectRenderer.pure.js.map +1 -1
  498. package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
  499. package/Materials/floatingOriginMatrixOverrides.js +1 -1
  500. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  501. package/Materials/material.detailMapConfiguration.d.ts +39 -1
  502. package/Materials/material.detailMapConfiguration.js +39 -1
  503. package/Materials/material.detailMapConfiguration.js.map +1 -1
  504. package/Materials/materialHelper.functions.js +45 -1
  505. package/Materials/materialHelper.functions.js.map +1 -1
  506. package/Materials/materialHelper.geometryrendering.d.ts +1 -1
  507. package/Materials/materialHelper.geometryrendering.js +1 -1
  508. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  509. package/Materials/materialPluginFactoryExport.js +2 -2
  510. package/Materials/materialPluginFactoryExport.js.map +1 -1
  511. package/Materials/pushMaterial.d.ts +7 -1
  512. package/Materials/pushMaterial.js +7 -1
  513. package/Materials/pushMaterial.js.map +1 -1
  514. package/Materials/uniformBuffer.js +1 -1
  515. package/Materials/uniformBuffer.js.map +1 -1
  516. package/Maths/math.axis.d.ts +1 -1
  517. package/Maths/math.axis.js +1 -1
  518. package/Maths/math.axis.js.map +1 -1
  519. package/Maths/math.d.ts +2 -2
  520. package/Maths/math.functions.d.ts +1 -1
  521. package/Maths/math.functions.js +1 -1
  522. package/Maths/math.functions.js.map +1 -1
  523. package/Maths/math.isovector.d.ts +1 -1
  524. package/Maths/math.isovector.js +1 -1
  525. package/Maths/math.isovector.js.map +1 -1
  526. package/Maths/math.js +2 -2
  527. package/Maths/math.js.map +1 -1
  528. package/Maths/math.path.d.ts +1 -1
  529. package/Maths/math.path.js +1 -1
  530. package/Maths/math.path.js.map +1 -1
  531. package/Maths/math.plane.d.ts +1 -1
  532. package/Maths/math.plane.js +1 -1
  533. package/Maths/math.plane.js.map +1 -1
  534. package/Maths/math.polar.d.ts +1 -1
  535. package/Maths/math.polar.js +1 -1
  536. package/Maths/math.polar.js.map +1 -1
  537. package/Maths/math.vertexFormat.d.ts +1 -1
  538. package/Maths/math.vertexFormat.js +1 -1
  539. package/Maths/math.vertexFormat.js.map +1 -1
  540. package/Maths/pure.d.ts +1 -0
  541. package/Maths/pure.js +1 -0
  542. package/Maths/pure.js.map +1 -1
  543. package/Meshes/Builders/geodesicBuilder.js +1 -1
  544. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  545. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  546. package/Meshes/Builders/goldbergBuilder.js +4 -4
  547. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  548. package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
  549. package/Meshes/Builders/greasedLineBuilder.js +5 -5
  550. package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
  551. package/Meshes/Builders/textBuilder.d.ts +2 -2
  552. package/Meshes/Builders/textBuilder.js +4 -4
  553. package/Meshes/Builders/textBuilder.js.map +1 -1
  554. package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
  555. package/Meshes/Builders/tiledBoxBuilder.js +3 -3
  556. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  557. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
  558. package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
  559. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  560. package/Meshes/Compression/dracoCodec.js +1 -1
  561. package/Meshes/Compression/dracoCodec.js.map +1 -1
  562. package/Meshes/Compression/dracoDecoder.js +1 -1
  563. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  564. package/Meshes/Compression/dracoEncoder.d.ts +1 -1
  565. package/Meshes/Compression/dracoEncoder.js +2 -2
  566. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  567. package/Meshes/Compression/meshoptCompression.js +1 -1
  568. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  569. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +64 -3
  570. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  571. package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
  572. package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
  573. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  574. package/Meshes/Node/nodeGeometry.d.ts +2 -2
  575. package/Meshes/Node/nodeGeometry.js +4 -4
  576. package/Meshes/Node/nodeGeometry.js.map +1 -1
  577. package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
  578. package/Meshes/Node/nodeGeometryBuildState.js +1 -1
  579. package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
  580. package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
  581. package/Meshes/abstractMesh.hotSpot.js +2 -2
  582. package/Meshes/abstractMesh.hotSpot.js.map +1 -1
  583. package/Meshes/abstractMesh.pure.js +2 -13
  584. package/Meshes/abstractMesh.pure.js.map +1 -1
  585. package/Meshes/buffer.d.ts +1 -1
  586. package/Meshes/buffer.js +1 -1
  587. package/Meshes/buffer.js.map +1 -1
  588. package/Meshes/csg.d.ts +3 -3
  589. package/Meshes/csg.js +4 -4
  590. package/Meshes/csg.js.map +1 -1
  591. package/Meshes/csg2.d.ts +1 -1
  592. package/Meshes/csg2.js +38 -11
  593. package/Meshes/csg2.js.map +1 -1
  594. package/Meshes/geodesicMesh.d.ts +1 -1
  595. package/Meshes/geodesicMesh.js +1 -1
  596. package/Meshes/geodesicMesh.js.map +1 -1
  597. package/Meshes/geometry.d.ts +2 -2
  598. package/Meshes/geometry.js +4 -4
  599. package/Meshes/geometry.js.map +1 -1
  600. package/Meshes/lattice.d.ts +1 -1
  601. package/Meshes/lattice.js +1 -1
  602. package/Meshes/lattice.js.map +1 -1
  603. package/Meshes/lattice.material.d.ts +1 -1
  604. package/Meshes/lattice.material.js +1 -1
  605. package/Meshes/lattice.material.js.map +1 -1
  606. package/Meshes/mesh.vertexData.d.ts +2 -2
  607. package/Meshes/mesh.vertexData.js +3 -4
  608. package/Meshes/mesh.vertexData.js.map +1 -1
  609. package/Meshes/mesh.vertexData.subdivide.js +1 -1
  610. package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
  611. package/Meshes/meshBuilder.d.ts +18 -18
  612. package/Meshes/meshBuilder.js +18 -18
  613. package/Meshes/meshBuilder.js.map +1 -1
  614. package/Meshes/meshSimplification.d.ts +1 -1
  615. package/Meshes/meshSimplification.js +4 -4
  616. package/Meshes/meshSimplification.js.map +1 -1
  617. package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
  618. package/Meshes/meshUVSpaceRenderer.js +0 -1
  619. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  620. package/Meshes/meshUtils.d.ts +1 -1
  621. package/Meshes/meshUtils.js +2 -2
  622. package/Meshes/meshUtils.js.map +1 -1
  623. package/Meshes/polygonMesh.d.ts +2 -2
  624. package/Meshes/polygonMesh.js +3 -3
  625. package/Meshes/polygonMesh.js.map +1 -1
  626. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
  627. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  628. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  629. package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
  630. package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
  631. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  632. package/Misc/areaLightsTextureTools.d.ts +1 -1
  633. package/Misc/areaLightsTextureTools.js +3 -3
  634. package/Misc/areaLightsTextureTools.js.map +1 -1
  635. package/Misc/assetsManager.d.ts +4 -4
  636. package/Misc/assetsManager.js +5 -5
  637. package/Misc/assetsManager.js.map +1 -1
  638. package/Misc/basisWorker.js +1 -1
  639. package/Misc/basisWorker.js.map +1 -1
  640. package/Misc/brdfTextureTools.js +1 -1
  641. package/Misc/brdfTextureTools.js.map +1 -1
  642. package/Misc/copyTextureToTexture.d.ts +1 -1
  643. package/Misc/copyTextureToTexture.js +1 -1
  644. package/Misc/copyTextureToTexture.js.map +1 -1
  645. package/Misc/decorators.serialization.js +2 -2
  646. package/Misc/decorators.serialization.js.map +1 -1
  647. package/Misc/depthReducer.d.ts +2 -2
  648. package/Misc/depthReducer.js +2 -2
  649. package/Misc/depthReducer.js.map +1 -1
  650. package/Misc/gradients.d.ts +1 -1
  651. package/Misc/gradients.js +1 -1
  652. package/Misc/gradients.js.map +1 -1
  653. package/Misc/greasedLineTools.d.ts +1 -1
  654. package/Misc/greasedLineTools.js +3 -3
  655. package/Misc/greasedLineTools.js.map +1 -1
  656. package/Misc/halfFloat.d.ts +17 -0
  657. package/Misc/halfFloat.js +131 -0
  658. package/Misc/halfFloat.js.map +1 -0
  659. package/Misc/khronosTextureContainer2.js +1 -1
  660. package/Misc/khronosTextureContainer2.js.map +1 -1
  661. package/Misc/meshExploder.js +1 -1
  662. package/Misc/meshExploder.js.map +1 -1
  663. package/Misc/pivotTools.js +1 -1
  664. package/Misc/pivotTools.js.map +1 -1
  665. package/Misc/rgbdTextureTools.js +1 -1
  666. package/Misc/rgbdTextureTools.js.map +1 -1
  667. package/Misc/sceneOptimizer.js +1 -1
  668. package/Misc/sceneOptimizer.js.map +1 -1
  669. package/Misc/sceneRecorder.js +7 -7
  670. package/Misc/sceneRecorder.js.map +1 -1
  671. package/Misc/sceneSerializer.js +3 -3
  672. package/Misc/sceneSerializer.js.map +1 -1
  673. package/Misc/snapshotRenderingHelper.js +1 -1
  674. package/Misc/snapshotRenderingHelper.js.map +1 -1
  675. package/Misc/textureTools.d.ts +3 -13
  676. package/Misc/textureTools.js +6 -64
  677. package/Misc/textureTools.js.map +1 -1
  678. package/Misc/thinMinMaxReducer.d.ts +1 -1
  679. package/Misc/thinMinMaxReducer.js +1 -1
  680. package/Misc/thinMinMaxReducer.js.map +1 -1
  681. package/Misc/tools.internals.js +1 -1
  682. package/Misc/tools.internals.js.map +1 -1
  683. package/Misc/tools.pure.js +1 -1
  684. package/Misc/tools.pure.js.map +1 -1
  685. package/Misc/trajectoryClassifier.d.ts +1 -1
  686. package/Misc/trajectoryClassifier.js +1 -1
  687. package/Misc/trajectoryClassifier.js.map +1 -1
  688. package/Misc/videoRecorder.js +1 -1
  689. package/Misc/videoRecorder.js.map +1 -1
  690. package/Misc/virtualJoystick.d.ts +1 -1
  691. package/Misc/virtualJoystick.js +1 -1
  692. package/Misc/virtualJoystick.js.map +1 -1
  693. package/Morph/morphTarget.js +1 -1
  694. package/Morph/morphTarget.js.map +1 -1
  695. package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
  696. package/Navigation/Plugins/recastJSPlugin.js +2 -2
  697. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  698. package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
  699. package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
  700. package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
  701. package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
  702. package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
  703. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  704. package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
  705. package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
  706. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  707. package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
  708. package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
  709. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  710. package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
  711. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
  712. package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
  713. package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
  714. package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
  715. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  716. package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
  717. package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
  718. package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
  719. package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
  720. package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
  721. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  722. package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
  723. package/Particles/Node/nodeParticleBuildState.js +2 -2
  724. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  725. package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
  726. package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
  727. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  728. package/Particles/Node/nodeParticleSystemSet.js +8 -8
  729. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  730. package/Particles/attractor.d.ts +1 -1
  731. package/Particles/attractor.js +1 -1
  732. package/Particles/attractor.js.map +1 -1
  733. package/Particles/flowMap.d.ts +7 -1
  734. package/Particles/flowMap.js +7 -1
  735. package/Particles/flowMap.js.map +1 -1
  736. package/Particles/particle.d.ts +2 -2
  737. package/Particles/particle.js +2 -2
  738. package/Particles/particle.js.map +1 -1
  739. package/Particles/particleHelper.js +5 -5
  740. package/Particles/particleHelper.js.map +1 -1
  741. package/Particles/particleSystem.functions.d.ts +1 -1
  742. package/Particles/particleSystem.functions.js +1 -1
  743. package/Particles/particleSystem.functions.js.map +1 -1
  744. package/Particles/particleSystemSet.d.ts +1 -1
  745. package/Particles/particleSystemSet.js +5 -5
  746. package/Particles/particleSystemSet.js.map +1 -1
  747. package/Particles/pointsCloudSystem.d.ts +1 -1
  748. package/Particles/pointsCloudSystem.js +6 -6
  749. package/Particles/pointsCloudSystem.js.map +1 -1
  750. package/Particles/solidParticle.d.ts +2 -2
  751. package/Particles/solidParticle.js +3 -3
  752. package/Particles/solidParticle.js.map +1 -1
  753. package/Particles/solidParticleSystem.d.ts +4 -4
  754. package/Particles/solidParticleSystem.js +7 -7
  755. package/Particles/solidParticleSystem.js.map +1 -1
  756. package/Particles/subEmitter.js +1 -1
  757. package/Particles/subEmitter.js.map +1 -1
  758. package/Particles/thinParticleSystem.function.js +2 -2
  759. package/Particles/thinParticleSystem.function.js.map +1 -1
  760. package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
  761. package/Physics/Plugins/cannonJSPlugin.js +1 -1
  762. package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
  763. package/Physics/castingResult.d.ts +1 -1
  764. package/Physics/castingResult.js +1 -1
  765. package/Physics/castingResult.js.map +1 -1
  766. package/Physics/physicsHelper.d.ts +1 -1
  767. package/Physics/physicsHelper.js +4 -4
  768. package/Physics/physicsHelper.js.map +1 -1
  769. package/Physics/physicsImpostor.d.ts +1 -1
  770. package/Physics/physicsImpostor.js +1 -1
  771. package/Physics/physicsImpostor.js.map +1 -1
  772. package/Physics/physicsRaycastResult.d.ts +1 -1
  773. package/Physics/physicsRaycastResult.js +1 -1
  774. package/Physics/physicsRaycastResult.js.map +1 -1
  775. package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
  776. package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
  777. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  778. package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
  779. package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
  780. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  781. package/Physics/v1/physicsEngine.d.ts +1 -1
  782. package/Physics/v1/physicsEngine.js +1 -1
  783. package/Physics/v1/physicsEngine.js.map +1 -1
  784. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
  785. package/Physics/v2/Plugins/havokPlugin.js +45 -7
  786. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  787. package/Physics/v2/characterController.d.ts +1 -1
  788. package/Physics/v2/characterController.js +2 -2
  789. package/Physics/v2/characterController.js.map +1 -1
  790. package/Physics/v2/physicsAggregate.d.ts +3 -3
  791. package/Physics/v2/physicsAggregate.js +10 -6
  792. package/Physics/v2/physicsAggregate.js.map +1 -1
  793. package/Physics/v2/physicsBody.d.ts +1 -1
  794. package/Physics/v2/physicsBody.js +1 -1
  795. package/Physics/v2/physicsBody.js.map +1 -1
  796. package/Physics/v2/physicsEngine.d.ts +1 -1
  797. package/Physics/v2/physicsEngine.js +1 -1
  798. package/Physics/v2/physicsEngine.js.map +1 -1
  799. package/Physics/v2/physicsShape.d.ts +1 -1
  800. package/Physics/v2/physicsShape.js +1 -1
  801. package/Physics/v2/physicsShape.js.map +1 -1
  802. package/Physics/v2/ragdoll.d.ts +2 -2
  803. package/Physics/v2/ragdoll.js +2 -2
  804. package/Physics/v2/ragdoll.js.map +1 -1
  805. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
  806. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
  807. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  808. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
  809. package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
  810. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  811. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  812. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
  813. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  814. package/PostProcesses/bloomEffect.d.ts +1 -1
  815. package/PostProcesses/bloomEffect.js +4 -4
  816. package/PostProcesses/bloomEffect.js.map +1 -1
  817. package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
  818. package/PostProcesses/depthOfFieldEffect.js +3 -3
  819. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  820. package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
  821. package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
  822. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  823. package/PostProcesses/highlightsPostProcess.d.ts +1 -1
  824. package/PostProcesses/highlightsPostProcess.js +1 -1
  825. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  826. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  827. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  828. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  829. package/PostProcesses/postProcessManager.d.ts +3 -0
  830. package/PostProcesses/postProcessManager.js +4 -1
  831. package/PostProcesses/postProcessManager.js.map +1 -1
  832. package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
  833. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
  834. package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
  835. package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
  836. package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
  837. package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
  838. package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
  839. package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
  840. package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
  841. package/PostProcesses/thinBloomEffect.js +1 -1
  842. package/PostProcesses/thinBloomEffect.js.map +1 -1
  843. package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
  844. package/PostProcesses/thinBloomMergePostProcess.js +1 -1
  845. package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
  846. package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
  847. package/PostProcesses/thinBlurPostProcess.js +1 -1
  848. package/PostProcesses/thinBlurPostProcess.js.map +1 -1
  849. package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
  850. package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
  851. package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
  852. package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
  853. package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
  854. package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
  855. package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
  856. package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
  857. package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
  858. package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
  859. package/PostProcesses/thinConvolutionPostProcess.js +1 -1
  860. package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
  861. package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
  862. package/PostProcesses/thinCustomPostProcess.js +1 -1
  863. package/PostProcesses/thinCustomPostProcess.js.map +1 -1
  864. package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
  865. package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
  866. package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
  867. package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
  868. package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
  869. package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
  870. package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
  871. package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
  872. package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
  873. package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
  874. package/PostProcesses/thinFXAAPostProcess.js +2 -2
  875. package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
  876. package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
  877. package/PostProcesses/thinFilterPostProcess.js +2 -2
  878. package/PostProcesses/thinFilterPostProcess.js.map +1 -1
  879. package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
  880. package/PostProcesses/thinGrainPostProcess.js +1 -1
  881. package/PostProcesses/thinGrainPostProcess.js.map +1 -1
  882. package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
  883. package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
  884. package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
  885. package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
  886. package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
  887. package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
  888. package/PostProcesses/thinPassPostProcess.d.ts +1 -1
  889. package/PostProcesses/thinPassPostProcess.js +1 -1
  890. package/PostProcesses/thinPassPostProcess.js.map +1 -1
  891. package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
  892. package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
  893. package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
  894. package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
  895. package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
  896. package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
  897. package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
  898. package/PostProcesses/thinSSAO2PostProcess.js +36 -4
  899. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  900. package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
  901. package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
  902. package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
  903. package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
  904. package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
  905. package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
  906. package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
  907. package/PostProcesses/thinSSRPostProcess.js +2 -2
  908. package/PostProcesses/thinSSRPostProcess.js.map +1 -1
  909. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
  910. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
  911. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
  912. package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
  913. package/PostProcesses/thinSharpenPostProcess.js +1 -1
  914. package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
  915. package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
  916. package/PostProcesses/thinTAAPostProcess.js +4 -4
  917. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  918. package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
  919. package/PostProcesses/thinTonemapPostProcess.js +1 -1
  920. package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
  921. package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
  922. package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
  923. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  924. package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
  925. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
  926. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  927. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
  928. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
  929. package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
  930. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
  931. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
  932. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  933. package/Rendering/depthPeelingRenderer.d.ts +1 -1
  934. package/Rendering/depthPeelingRenderer.js +2 -2
  935. package/Rendering/depthPeelingRenderer.js.map +1 -1
  936. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
  937. package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
  938. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  939. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
  940. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
  941. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  942. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
  943. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
  944. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  945. package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
  946. package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
  947. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  948. package/Rendering/iblCdfGenerator.d.ts +3 -3
  949. package/Rendering/iblCdfGenerator.js +5 -5
  950. package/Rendering/iblCdfGenerator.js.map +1 -1
  951. package/Rendering/renderingGroup.js +1 -1
  952. package/Rendering/renderingGroup.js.map +1 -1
  953. package/Rendering/subSurfaceConfiguration.d.ts +2 -2
  954. package/Rendering/subSurfaceConfiguration.js +2 -2
  955. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  956. package/Rendering/utilityLayerRenderer.d.ts +2 -2
  957. package/Rendering/utilityLayerRenderer.js +4 -4
  958. package/Rendering/utilityLayerRenderer.js.map +1 -1
  959. package/Shaders/ssao2.fragment.js +10 -2
  960. package/Shaders/ssao2.fragment.js.map +1 -1
  961. package/ShadersWGSL/ssao2.fragment.js +10 -2
  962. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  963. package/SmartAssets/smartAssetSerializer.js +1 -1
  964. package/SmartAssets/smartAssetSerializer.js.map +1 -1
  965. package/Sprites/sprite.d.ts +2 -2
  966. package/Sprites/sprite.js +2 -2
  967. package/Sprites/sprite.js.map +1 -1
  968. package/Sprites/spriteManager.d.ts +2 -2
  969. package/Sprites/spriteManager.js +4 -5
  970. package/Sprites/spriteManager.js.map +1 -1
  971. package/Sprites/spritePackedManager.js +1 -1
  972. package/Sprites/spritePackedManager.js.map +1 -1
  973. package/Sprites/spriteRenderer.js +2 -2
  974. package/Sprites/spriteRenderer.js.map +1 -1
  975. package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
  976. package/XR/features/WebXRHitTestLegacy.js +2 -2
  977. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  978. package/XR/motionController/webXRAbstractMotionController.js +2 -2
  979. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  980. package/XR/motionController/webXRGenericMotionController.js +2 -2
  981. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  982. package/XR/motionController/webXRProfiledMotionController.js +4 -4
  983. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  984. package/XR/webXRCamera.d.ts +3 -3
  985. package/XR/webXRCamera.js +4 -4
  986. package/XR/webXRCamera.js.map +1 -1
  987. package/XR/webXRDefaultExperience.d.ts +4 -4
  988. package/XR/webXRDefaultExperience.js +4 -4
  989. package/XR/webXRDefaultExperience.js.map +1 -1
  990. package/XR/webXREnterExitUI.js +1 -1
  991. package/XR/webXREnterExitUI.js.map +1 -1
  992. package/XR/webXRExperienceHelper.js +2 -2
  993. package/XR/webXRExperienceHelper.js.map +1 -1
  994. package/XR/webXRFeaturesManager.d.ts +47 -0
  995. package/XR/webXRFeaturesManager.js +1 -1
  996. package/XR/webXRFeaturesManager.js.map +1 -1
  997. package/XR/webXRInput.js +1 -1
  998. package/XR/webXRInput.js.map +1 -1
  999. package/XR/webXRInputSource.js +4 -4
  1000. package/XR/webXRInputSource.js.map +1 -1
  1001. package/XR/webXRManagedOutputCanvas.js +1 -1
  1002. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  1003. package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
  1004. package/XR/webXRRenderTargetTextureProvider.js +1 -1
  1005. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  1006. package/assetContainer.d.ts +4 -4
  1007. package/assetContainer.js +6 -6
  1008. package/assetContainer.js.map +1 -1
  1009. package/node.d.ts +1 -1
  1010. package/node.js +6 -2
  1011. package/node.js.map +1 -1
  1012. package/package.json +44 -174
@@ -1 +1 @@
1
- {"version":3,"file":"csg2.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/csg2.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"./mesh\";\r\nimport { type IDisposable, type Scene } from \"core/scene\";\r\nimport { type IVertexDataLike, VertexData } from \"./mesh.vertexData\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { MultiMaterial } from \"core/Materials/multiMaterial\";\r\nimport { SubMesh } from \"./subMesh\";\r\nimport { type Material } from \"core/Materials/material\";\r\nimport { _LoadScriptModuleAsync } from \"core/Misc/tools.internals\";\r\nimport { type FloatArray, type Nullable } from \"core/types\";\r\nimport { type Matrix, Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Main manifold library\r\n */\r\nlet Manifold: any;\r\n\r\n/**\r\n * Promise to wait for the manifold library to be ready\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldPromise: Promise<{ Manifold: any; Mesh: any }>;\r\n\r\n/**\r\n * Manifold mesh\r\n */\r\nlet ManifoldMesh: any;\r\n\r\n/**\r\n * First ID to use for materials indexing\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet FirstID: number;\r\n\r\n/**\r\n * Interface to customize the Manifold library import\r\n */\r\nexport interface ICSG2Options {\r\n /**\r\n * Custom manifold URL\r\n */\r\n manifoldUrl?: string;\r\n /**\r\n * Custom manifold instance\r\n */\r\n manifoldInstance: any;\r\n /**\r\n * Custom manifold mesh instance\r\n */\r\n manifoldMeshInstance: any;\r\n}\r\n\r\n/**\r\n * Interface to customize the mesh rebuild options\r\n */\r\nexport interface IMeshRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n /**\r\n * True to center the mesh on 0,0,0\r\n */\r\n centerMesh?: boolean;\r\n /**\r\n * Defines a material to use for that mesh. When not defined the system will either reuse the one from the source or create a multimaterial if several materials were involved\r\n */\r\n materialToUse?: Material;\r\n}\r\n\r\n/**\r\n * Interface to customize the vertex data rebuild options\r\n */\r\nexport interface IVertexDataRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n}\r\n\r\ninterface IManifoldMesh {\r\n numProp: number;\r\n vertProperties: Float32Array;\r\n triVerts: Uint32Array;\r\n runIndex: Uint32Array;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n runOriginalID: Uint32Array;\r\n numRun: number;\r\n}\r\n\r\ninterface IManifoldVertexComponent {\r\n stride: number;\r\n kind: string;\r\n data?: FloatArray;\r\n}\r\n\r\n/**\r\n * Wrapper around the Manifold library\r\n * https://manifoldcad.org/\r\n * Use this class to perform fast boolean operations on meshes\r\n * @see [basic operations](https://playground.babylonjs.com/#IW43EB#15)\r\n * @see [skull vs box](https://playground.babylonjs.com/#JUKXQD#6218)\r\n * @see [skull vs vertex data](https://playground.babylonjs.com/#JUKXQD#6219)\r\n */\r\nexport class CSG2 implements IDisposable {\r\n private _manifold: any;\r\n private _numProp: number;\r\n private _vertexStructure: IManifoldVertexComponent[];\r\n\r\n /**\r\n * Return the size of a vertex (at least 3 for the position)\r\n */\r\n public get numProp() {\r\n return this._numProp;\r\n }\r\n\r\n private constructor(manifold: any, numProp: number, vertexStructure: IManifoldVertexComponent[]) {\r\n this._manifold = manifold;\r\n this._numProp = numProp;\r\n this._vertexStructure = vertexStructure;\r\n }\r\n\r\n private _process(operation: \"difference\" | \"intersection\" | \"union\", csg: CSG2) {\r\n if (this.numProp !== csg.numProp) {\r\n throw new Error(\"CSG must be used with geometries having the same number of properties\");\r\n }\r\n return new CSG2(Manifold[operation](this._manifold, csg._manifold), this.numProp, this._vertexStructure);\r\n }\r\n\r\n /**\r\n * Run a difference operation between two CSG\r\n * @param csg defines the CSG to use to create the difference\r\n * @returns a new csg\r\n */\r\n public subtract(csg: CSG2) {\r\n return this._process(\"difference\", csg);\r\n }\r\n\r\n /**\r\n * Run an intersection operation between two CSG\r\n * @param csg defines the CSG to use to create the intersection\r\n * @returns a new csg\r\n */\r\n public intersect(csg: CSG2) {\r\n return this._process(\"intersection\", csg);\r\n }\r\n\r\n /**\r\n * Run an union operation between two CSG\r\n * @param csg defines the CSG to use to create the union\r\n * @returns a new csg\r\n */\r\n public add(csg: CSG2) {\r\n return this._process(\"union\", csg);\r\n }\r\n\r\n /**\r\n * Print debug information about the CSG\r\n */\r\n public printDebug() {\r\n Logger.Log(\"Genus:\" + this._manifold.genus());\r\n Logger.Log(\"Volume:\" + this._manifold.volume());\r\n Logger.Log(\"surface area:\" + this._manifold.surfaceArea());\r\n }\r\n\r\n /**\r\n * Generate a vertex data from the CSG\r\n * @param options defines the options to use to rebuild the vertex data\r\n * @returns a new vertex data\r\n */\r\n public toVertexData(options?: Partial<IVertexDataRebuildOptions>): VertexData {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n ...options,\r\n };\r\n const vertexData = new VertexData();\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n\r\n vertexData.indices = manifoldMesh.triVerts.length > 65535 ? new Uint32Array(manifoldMesh.triVerts) : new Uint16Array(manifoldMesh.triVerts);\r\n\r\n for (let i = 0; i < manifoldMesh.triVerts.length; i += 3) {\r\n vertexData.indices[i] = manifoldMesh.triVerts[i + 2];\r\n vertexData.indices[i + 1] = manifoldMesh.triVerts[i + 1];\r\n vertexData.indices[i + 2] = manifoldMesh.triVerts[i];\r\n }\r\n\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Attributes\r\n let offset = 0;\r\n for (let componentIndex = 0; componentIndex < this._vertexStructure.length; componentIndex++) {\r\n const component = this._vertexStructure[componentIndex];\r\n\r\n const data = new Float32Array(vertexCount * component.stride);\r\n for (let i = 0; i < vertexCount; i++) {\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n data[i * component.stride + strideIndex] = manifoldMesh.vertProperties[i * manifoldMesh.numProp + offset + strideIndex];\r\n }\r\n }\r\n vertexData.set(data, component.kind);\r\n offset += component.stride;\r\n }\r\n\r\n // Rebuild mesh from vertex data\r\n return vertexData;\r\n }\r\n\r\n /**\r\n * Generate a mesh from the CSG\r\n * @param name defines the name of the mesh\r\n * @param scene defines the scene to use to create the mesh\r\n * @param options defines the options to use to rebuild the mesh\r\n * @returns a new Mesh\r\n */\r\n public toMesh(name: string, scene?: Scene, options?: Partial<IMeshRebuildOptions>): Mesh {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n centerMesh: true,\r\n ...options,\r\n };\r\n const vertexData = this.toVertexData({ rebuildNormals: localOptions.rebuildNormals });\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Rebuild mesh from vertex data\r\n const output = new Mesh(name, scene);\r\n vertexData.applyToMesh(output);\r\n\r\n if (!vertexCount) {\r\n throw new Error(\"Unable to build a mesh. Manifold has 0 vertex\");\r\n }\r\n\r\n // Center mesh\r\n if (localOptions.centerMesh) {\r\n const extents = output.getBoundingInfo().boundingSphere.center;\r\n output.position.set(-extents.x, -extents.y, -extents.z);\r\n output.bakeCurrentTransformIntoVertices();\r\n }\r\n\r\n // Submeshes\r\n let id = manifoldMesh.runOriginalID[0];\r\n let start = manifoldMesh.runIndex[0];\r\n let materialIndex = 0;\r\n const materials: Material[] = [];\r\n scene = output.getScene();\r\n for (let run = 0; run < manifoldMesh.numRun; ++run) {\r\n const nextID = manifoldMesh.runOriginalID[run + 1];\r\n if (nextID !== id) {\r\n const end = manifoldMesh.runIndex[run + 1];\r\n new SubMesh(materialIndex, 0, vertexCount, start, end - start, output);\r\n materials.push(scene.getMaterialByUniqueID(id - FirstID) || scene.defaultMaterial);\r\n id = nextID;\r\n start = end;\r\n materialIndex++;\r\n }\r\n }\r\n\r\n if (localOptions.materialToUse) {\r\n output.material = localOptions.materialToUse;\r\n } else {\r\n if (materials.length > 1) {\r\n const multiMaterial = new MultiMaterial(name, scene);\r\n multiMaterial.subMaterials = materials;\r\n output.material = multiMaterial;\r\n } else {\r\n if (output.subMeshes.length > 1) {\r\n // Remove the submeshes as they are not needed\r\n output._createGlobalSubMesh(true);\r\n }\r\n output.material = materials[0];\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Dispose the CSG resources\r\n */\r\n public dispose() {\r\n if (this._manifold) {\r\n this._manifold.delete();\r\n this._manifold = null;\r\n }\r\n }\r\n\r\n private static _ProcessData(\r\n vertexCount: number,\r\n triVerts: Uint32Array,\r\n structure: IManifoldVertexComponent[],\r\n numProp: number,\r\n runIndex?: Uint32Array,\r\n runOriginalID?: Uint32Array\r\n ) {\r\n const vertProperties = new Float32Array(vertexCount * structure.reduce((acc, cur) => acc + cur.stride, 0));\r\n\r\n for (let i = 0; i < vertexCount; i++) {\r\n let offset = 0;\r\n for (let idx = 0; idx < structure.length; idx++) {\r\n const component = structure[idx];\r\n\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n vertProperties[i * numProp + offset + strideIndex] = component.data![i * component.stride + strideIndex];\r\n }\r\n offset += component.stride;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const manifoldMesh = new ManifoldMesh({ numProp: numProp, vertProperties, triVerts, runIndex, runOriginalID });\r\n manifoldMesh.merge();\r\n\r\n let returnValue: CSG2;\r\n try {\r\n returnValue = new CSG2(new Manifold(manifoldMesh), numProp, structure);\r\n } catch (e) {\r\n throw new Error(\"Error while creating the CSG: \" + e.message, { cause: e });\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n private static _Construct(data: IVertexDataLike, worldMatrix: Nullable<Matrix>, runIndex?: Uint32Array, runOriginalID?: Uint32Array) {\r\n // Create the MeshGL for I/O with Manifold library.\r\n const triVerts = new Uint32Array(data.indices!.length);\r\n\r\n // Revert order\r\n for (let i = 0; i < data.indices!.length; i += 3) {\r\n triVerts[i] = data.indices![i + 2];\r\n triVerts[i + 1] = data.indices![i + 1];\r\n triVerts[i + 2] = data.indices![i];\r\n }\r\n\r\n const tempVector3 = new Vector3();\r\n let numProp = 3;\r\n const structure: IManifoldVertexComponent[] = [{ stride: 3, kind: VertexBuffer.PositionKind }];\r\n\r\n if (!worldMatrix) {\r\n structure[0].data = data.positions!;\r\n } else {\r\n const positions = new Float32Array(data.positions!.length);\r\n for (let i = 0; i < data.positions!.length; i += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data.positions![i], data.positions![i + 1], data.positions![i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(positions, i);\r\n }\r\n structure[0].data = positions;\r\n }\r\n\r\n // Normals\r\n const sourceNormals = data.normals!;\r\n if (sourceNormals) {\r\n numProp += 3;\r\n structure.push({ stride: 3, kind: VertexBuffer.NormalKind });\r\n if (!worldMatrix) {\r\n structure[1].data = sourceNormals;\r\n } else {\r\n const normals = new Float32Array(sourceNormals.length);\r\n for (let i = 0; i < sourceNormals.length; i += 3) {\r\n Vector3.TransformNormalFromFloatsToRef(sourceNormals[i], sourceNormals[i + 1], sourceNormals[i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(normals, i);\r\n }\r\n structure[1].data = normals;\r\n }\r\n }\r\n\r\n // UVs\r\n const uvKindToPropertyName: { [key: string]: string } = {\r\n [VertexBuffer.UVKind]: \"uvs\",\r\n [VertexBuffer.UV2Kind]: \"uvs2\",\r\n [VertexBuffer.UV3Kind]: \"uvs3\",\r\n [VertexBuffer.UV4Kind]: \"uvs4\",\r\n [VertexBuffer.UV5Kind]: \"uvs5\",\r\n [VertexBuffer.UV6Kind]: \"uvs6\",\r\n };\r\n for (const kind of [VertexBuffer.UVKind, VertexBuffer.UV2Kind, VertexBuffer.UV3Kind, VertexBuffer.UV4Kind, VertexBuffer.UV5Kind, VertexBuffer.UV6Kind]) {\r\n const sourceUV = (data as any)[uvKindToPropertyName[kind]];\r\n if (sourceUV) {\r\n numProp += 2;\r\n structure.push({ stride: 2, kind: kind, data: sourceUV });\r\n }\r\n }\r\n\r\n // Colors\r\n const sourceColors = data.colors;\r\n if (sourceColors) {\r\n numProp += 4;\r\n structure.push({ stride: 4, kind: VertexBuffer.ColorKind, data: sourceColors });\r\n }\r\n\r\n return this._ProcessData(data.positions!.length / 3, triVerts, structure, numProp, runIndex, runOriginalID);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a vertexData\r\n * @param vertexData defines the vertexData to use to create the CSG\r\n * @returns a new CSG2 class\r\n */\r\n public static FromVertexData(vertexData: VertexData): CSG2 {\r\n const sourceVertices = vertexData.positions;\r\n const sourceIndices = vertexData.indices;\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The vertexData must at least have positions and indices\");\r\n }\r\n\r\n return this._Construct(vertexData, null);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a mesh\r\n * @param mesh defines the mesh to use to create the CSG\r\n * @param ignoreWorldMatrix defines if the world matrix should be ignored\r\n * @returns a new CSG2 class\r\n */\r\n public static FromMesh(mesh: Mesh, ignoreWorldMatrix = false): CSG2 {\r\n const sourceVertices = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n const sourceIndices = mesh.getIndices();\r\n const worldMatrix = mesh.computeWorldMatrix(true);\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The mesh must at least have positions and indices\");\r\n }\r\n\r\n // Create a triangle run for each submesh (material)\r\n const starts = [...Array(mesh.subMeshes.length)].map((_, idx) => mesh.subMeshes[idx].indexStart);\r\n\r\n // Map the materials to ID.\r\n const sourceMaterial = mesh.material || mesh.getScene().defaultMaterial;\r\n const isMultiMaterial = sourceMaterial.getClassName() === \"MultiMaterial\";\r\n const originalIDs = [...Array(mesh.subMeshes.length)].map((_, idx) => {\r\n if (isMultiMaterial) {\r\n return FirstID + (sourceMaterial as MultiMaterial).subMaterials[mesh.subMeshes[idx].materialIndex]!.uniqueId;\r\n }\r\n\r\n return FirstID + sourceMaterial.uniqueId;\r\n });\r\n\r\n // List the runs in sequence.\r\n const indices = Array.from(starts.keys());\r\n indices.sort((a, b) => starts[a] - starts[b]);\r\n const runIndex = new Uint32Array(indices.map((i) => starts[i]));\r\n const runOriginalID = new Uint32Array(indices.map((i) => originalIDs[i]));\r\n\r\n // Process\r\n const data = {\r\n positions: sourceVertices,\r\n indices: sourceIndices,\r\n normals: mesh.getVerticesData(VertexBuffer.NormalKind),\r\n colors: mesh.getVerticesData(VertexBuffer.ColorKind),\r\n uvs: mesh.getVerticesData(VertexBuffer.UVKind),\r\n uvs2: mesh.getVerticesData(VertexBuffer.UV2Kind),\r\n uvs3: mesh.getVerticesData(VertexBuffer.UV3Kind),\r\n uvs4: mesh.getVerticesData(VertexBuffer.UV4Kind),\r\n uvs5: mesh.getVerticesData(VertexBuffer.UV5Kind),\r\n uvs6: mesh.getVerticesData(VertexBuffer.UV6Kind),\r\n };\r\n return this._Construct(data, ignoreWorldMatrix ? null : worldMatrix, runIndex, runOriginalID);\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the Manifold library is ready\r\n * @returns true if the Manifold library is ready\r\n */\r\nexport function IsCSG2Ready() {\r\n return Manifold !== undefined;\r\n}\r\n\r\n/**\r\n * Initialize the Manifold library\r\n * @param options defines the options to use to initialize the library\r\n */\r\nexport async function InitializeCSG2Async(options?: Partial<ICSG2Options>) {\r\n const localOptions = {\r\n manifoldUrl: \"https://unpkg.com/manifold-3d@3.4.0\",\r\n ...options,\r\n };\r\n\r\n if (Manifold) {\r\n return; // Already initialized\r\n }\r\n\r\n if (ManifoldPromise) {\r\n await ManifoldPromise;\r\n return;\r\n }\r\n\r\n if (localOptions.manifoldInstance) {\r\n Manifold = localOptions.manifoldInstance;\r\n ManifoldMesh = localOptions.manifoldMeshInstance;\r\n } else {\r\n ManifoldPromise = _LoadScriptModuleAsync(\r\n `\r\n import Module from '${localOptions.manifoldUrl}/manifold.js';\r\n const wasm = await Module();\r\n wasm.setup();\r\n const {Manifold, Mesh} = wasm;\r\n const returnedValue = {Manifold, Mesh};\r\n `\r\n );\r\n\r\n const result = await ManifoldPromise;\r\n // eslint-disable-next-line require-atomic-updates\r\n Manifold = result.Manifold;\r\n ManifoldMesh = result.Mesh;\r\n }\r\n\r\n // Reserve IDs for materials (we consider that there will be no more than 65536 materials)\r\n FirstID = Manifold.reserveIDs(65536);\r\n}\r\n"]}
1
+ {"version":3,"file":"csg2.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/csg2.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"./mesh.pure\";\r\nimport { type IDisposable, type Scene } from \"core/scene\";\r\nimport { type IVertexDataLike, VertexData } from \"./mesh.vertexData\";\r\nimport { VertexBuffer } from \"../Buffers/buffer.pure\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { MultiMaterial } from \"core/Materials/multiMaterial.pure\";\r\nimport { SubMesh } from \"./subMesh\";\r\nimport { type Material } from \"core/Materials/material\";\r\nimport { _LoadScriptModuleAsync } from \"core/Misc/tools.internals\";\r\nimport { type FloatArray, type Nullable } from \"core/types\";\r\nimport { type Matrix, Vector3 } from \"core/Maths/math.vector.pure\";\r\n\r\n/**\r\n * Main manifold library\r\n */\r\nlet Manifold: any;\r\n\r\n/**\r\n * Promise to wait for the manifold library to be ready\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldPromise: Promise<{ Manifold: any; Mesh: any }>;\r\n\r\n/**\r\n * Manifold mesh\r\n */\r\nlet ManifoldMesh: any;\r\n\r\n/**\r\n * First ID to use for materials indexing\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet FirstID: number;\r\n\r\n/**\r\n * Interface to customize the Manifold library import\r\n */\r\nexport interface ICSG2Options {\r\n /**\r\n * Custom manifold URL\r\n */\r\n manifoldUrl?: string;\r\n /**\r\n * Custom manifold instance\r\n */\r\n manifoldInstance: any;\r\n /**\r\n * Custom manifold mesh instance\r\n */\r\n manifoldMeshInstance: any;\r\n}\r\n\r\n/**\r\n * Interface to customize the mesh rebuild options\r\n */\r\nexport interface IMeshRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n /**\r\n * True to center the mesh on 0,0,0\r\n */\r\n centerMesh?: boolean;\r\n /**\r\n * Defines a material to use for that mesh. When not defined the system will either reuse the one from the source or create a multimaterial if several materials were involved\r\n */\r\n materialToUse?: Material;\r\n}\r\n\r\n/**\r\n * Interface to customize the vertex data rebuild options\r\n */\r\nexport interface IVertexDataRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n}\r\n\r\ninterface IManifoldMesh {\r\n numProp: number;\r\n vertProperties: Float32Array;\r\n triVerts: Uint32Array;\r\n runIndex: Uint32Array;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n runOriginalID: Uint32Array;\r\n numRun: number;\r\n}\r\n\r\ninterface IManifoldVertexComponent {\r\n stride: number;\r\n kind: string;\r\n data?: FloatArray;\r\n}\r\n\r\n/**\r\n * Wrapper around the Manifold library\r\n * https://manifoldcad.org/\r\n * Use this class to perform fast boolean operations on meshes\r\n * @see [basic operations](https://playground.babylonjs.com/#IW43EB#15)\r\n * @see [skull vs box](https://playground.babylonjs.com/#JUKXQD#6218)\r\n * @see [skull vs vertex data](https://playground.babylonjs.com/#JUKXQD#6219)\r\n */\r\nexport class CSG2 implements IDisposable {\r\n private _manifold: any;\r\n private _numProp: number;\r\n private _vertexStructure: IManifoldVertexComponent[];\r\n\r\n /**\r\n * Return the size of a vertex (at least 3 for the position)\r\n */\r\n public get numProp() {\r\n return this._numProp;\r\n }\r\n\r\n private constructor(manifold: any, numProp: number, vertexStructure: IManifoldVertexComponent[]) {\r\n this._manifold = manifold;\r\n this._numProp = numProp;\r\n this._vertexStructure = vertexStructure;\r\n }\r\n\r\n private _process(operation: \"difference\" | \"intersection\" | \"union\", csg: CSG2) {\r\n if (this.numProp !== csg.numProp) {\r\n throw new Error(\"CSG must be used with geometries having the same number of properties\");\r\n }\r\n return new CSG2(Manifold[operation](this._manifold, csg._manifold), this.numProp, this._vertexStructure);\r\n }\r\n\r\n /**\r\n * Run a difference operation between two CSG\r\n * @param csg defines the CSG to use to create the difference\r\n * @returns a new csg\r\n */\r\n public subtract(csg: CSG2) {\r\n return this._process(\"difference\", csg);\r\n }\r\n\r\n /**\r\n * Run an intersection operation between two CSG\r\n * @param csg defines the CSG to use to create the intersection\r\n * @returns a new csg\r\n */\r\n public intersect(csg: CSG2) {\r\n return this._process(\"intersection\", csg);\r\n }\r\n\r\n /**\r\n * Run an union operation between two CSG\r\n * @param csg defines the CSG to use to create the union\r\n * @returns a new csg\r\n */\r\n public add(csg: CSG2) {\r\n return this._process(\"union\", csg);\r\n }\r\n\r\n /**\r\n * Print debug information about the CSG\r\n */\r\n public printDebug() {\r\n Logger.Log(\"Genus:\" + this._manifold.genus());\r\n Logger.Log(\"Volume:\" + this._manifold.volume());\r\n Logger.Log(\"surface area:\" + this._manifold.surfaceArea());\r\n }\r\n\r\n /**\r\n * Generate a vertex data from the CSG\r\n * @param options defines the options to use to rebuild the vertex data\r\n * @returns a new vertex data\r\n */\r\n public toVertexData(options?: Partial<IVertexDataRebuildOptions>): VertexData {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n ...options,\r\n };\r\n const vertexData = new VertexData();\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n\r\n vertexData.indices = manifoldMesh.triVerts.length > 65535 ? new Uint32Array(manifoldMesh.triVerts) : new Uint16Array(manifoldMesh.triVerts);\r\n\r\n for (let i = 0; i < manifoldMesh.triVerts.length; i += 3) {\r\n vertexData.indices[i] = manifoldMesh.triVerts[i + 2];\r\n vertexData.indices[i + 1] = manifoldMesh.triVerts[i + 1];\r\n vertexData.indices[i + 2] = manifoldMesh.triVerts[i];\r\n }\r\n\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Attributes\r\n let offset = 0;\r\n for (let componentIndex = 0; componentIndex < this._vertexStructure.length; componentIndex++) {\r\n const component = this._vertexStructure[componentIndex];\r\n\r\n const data = new Float32Array(vertexCount * component.stride);\r\n for (let i = 0; i < vertexCount; i++) {\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n data[i * component.stride + strideIndex] = manifoldMesh.vertProperties[i * manifoldMesh.numProp + offset + strideIndex];\r\n }\r\n }\r\n vertexData.set(data, component.kind);\r\n offset += component.stride;\r\n }\r\n\r\n // Rebuild mesh from vertex data\r\n return vertexData;\r\n }\r\n\r\n /**\r\n * Generate a mesh from the CSG\r\n * @param name defines the name of the mesh\r\n * @param scene defines the scene to use to create the mesh\r\n * @param options defines the options to use to rebuild the mesh\r\n * @returns a new Mesh\r\n */\r\n public toMesh(name: string, scene?: Scene, options?: Partial<IMeshRebuildOptions>): Mesh {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n centerMesh: true,\r\n ...options,\r\n };\r\n const vertexData = this.toVertexData({ rebuildNormals: localOptions.rebuildNormals });\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Rebuild mesh from vertex data\r\n const output = new Mesh(name, scene);\r\n vertexData.applyToMesh(output);\r\n\r\n if (!vertexCount) {\r\n throw new Error(\"Unable to build a mesh. Manifold has 0 vertex\");\r\n }\r\n\r\n // Center mesh\r\n if (localOptions.centerMesh) {\r\n const extents = output.getBoundingInfo().boundingSphere.center;\r\n output.position.set(-extents.x, -extents.y, -extents.z);\r\n output.bakeCurrentTransformIntoVertices();\r\n }\r\n\r\n // Submeshes\r\n let id = manifoldMesh.runOriginalID[0];\r\n let start = manifoldMesh.runIndex[0];\r\n let materialIndex = 0;\r\n const materials: Material[] = [];\r\n scene = output.getScene();\r\n for (let run = 0; run < manifoldMesh.numRun; ++run) {\r\n const nextID = manifoldMesh.runOriginalID[run + 1];\r\n if (nextID !== id) {\r\n const end = manifoldMesh.runIndex[run + 1];\r\n new SubMesh(materialIndex, 0, vertexCount, start, end - start, output);\r\n materials.push(scene.getMaterialByUniqueID(id - FirstID) || scene.defaultMaterial);\r\n id = nextID;\r\n start = end;\r\n materialIndex++;\r\n }\r\n }\r\n\r\n if (localOptions.materialToUse) {\r\n output.material = localOptions.materialToUse;\r\n } else {\r\n if (materials.length > 1) {\r\n const multiMaterial = new MultiMaterial(name, scene);\r\n multiMaterial.subMaterials = materials;\r\n output.material = multiMaterial;\r\n } else {\r\n if (output.subMeshes.length > 1) {\r\n // Remove the submeshes as they are not needed\r\n output._createGlobalSubMesh(true);\r\n }\r\n output.material = materials[0];\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Dispose the CSG resources\r\n */\r\n public dispose() {\r\n if (this._manifold) {\r\n this._manifold.delete();\r\n this._manifold = null;\r\n }\r\n }\r\n\r\n private static _ProcessData(\r\n vertexCount: number,\r\n triVerts: Uint32Array,\r\n structure: IManifoldVertexComponent[],\r\n numProp: number,\r\n runIndex?: Uint32Array,\r\n runOriginalID?: Uint32Array\r\n ) {\r\n const vertProperties = new Float32Array(vertexCount * structure.reduce((acc, cur) => acc + cur.stride, 0));\r\n\r\n for (let i = 0; i < vertexCount; i++) {\r\n let offset = 0;\r\n for (let idx = 0; idx < structure.length; idx++) {\r\n const component = structure[idx];\r\n\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n vertProperties[i * numProp + offset + strideIndex] = component.data![i * component.stride + strideIndex];\r\n }\r\n offset += component.stride;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const manifoldMesh = new ManifoldMesh({ numProp: numProp, vertProperties, triVerts, runIndex, runOriginalID });\r\n manifoldMesh.merge();\r\n\r\n let returnValue: CSG2;\r\n try {\r\n returnValue = new CSG2(new Manifold(manifoldMesh), numProp, structure);\r\n } catch (e) {\r\n throw new Error(\"Error while creating the CSG: \" + e.message, { cause: e });\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n private static _Construct(data: IVertexDataLike, worldMatrix: Nullable<Matrix>, runIndex?: Uint32Array, runOriginalID?: Uint32Array, invertWinding = false) {\r\n // Create the MeshGL for I/O with Manifold library.\r\n const triVerts = new Uint32Array(data.indices!.length);\r\n\r\n if (invertWinding) {\r\n // The mesh winding is reflected relative to Babylon's default winding for the\r\n // current handedness (e.g. a glTF mesh in a right-handed scene). Keep the\r\n // original order so Manifold always receives consistently outward-wound input.\r\n triVerts.set(data.indices!);\r\n } else {\r\n // Revert order to match Manifold's expected winding for Babylon-default meshes\r\n for (let i = 0; i < data.indices!.length; i += 3) {\r\n triVerts[i] = data.indices![i + 2];\r\n triVerts[i + 1] = data.indices![i + 1];\r\n triVerts[i + 2] = data.indices![i];\r\n }\r\n }\r\n\r\n const tempVector3 = new Vector3();\r\n let numProp = 3;\r\n const structure: IManifoldVertexComponent[] = [{ stride: 3, kind: VertexBuffer.PositionKind }];\r\n\r\n if (!worldMatrix) {\r\n structure[0].data = data.positions!;\r\n } else {\r\n const positions = new Float32Array(data.positions!.length);\r\n for (let i = 0; i < data.positions!.length; i += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data.positions![i], data.positions![i + 1], data.positions![i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(positions, i);\r\n }\r\n structure[0].data = positions;\r\n }\r\n\r\n // Normals\r\n const sourceNormals = data.normals!;\r\n if (sourceNormals) {\r\n numProp += 3;\r\n structure.push({ stride: 3, kind: VertexBuffer.NormalKind });\r\n if (!worldMatrix) {\r\n structure[1].data = sourceNormals;\r\n } else {\r\n const normals = new Float32Array(sourceNormals.length);\r\n for (let i = 0; i < sourceNormals.length; i += 3) {\r\n Vector3.TransformNormalFromFloatsToRef(sourceNormals[i], sourceNormals[i + 1], sourceNormals[i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(normals, i);\r\n }\r\n structure[1].data = normals;\r\n }\r\n }\r\n\r\n // UVs\r\n const uvKindToPropertyName: { [key: string]: string } = {\r\n [VertexBuffer.UVKind]: \"uvs\",\r\n [VertexBuffer.UV2Kind]: \"uvs2\",\r\n [VertexBuffer.UV3Kind]: \"uvs3\",\r\n [VertexBuffer.UV4Kind]: \"uvs4\",\r\n [VertexBuffer.UV5Kind]: \"uvs5\",\r\n [VertexBuffer.UV6Kind]: \"uvs6\",\r\n };\r\n for (const kind of [VertexBuffer.UVKind, VertexBuffer.UV2Kind, VertexBuffer.UV3Kind, VertexBuffer.UV4Kind, VertexBuffer.UV5Kind, VertexBuffer.UV6Kind]) {\r\n const sourceUV = (data as any)[uvKindToPropertyName[kind]];\r\n if (sourceUV) {\r\n numProp += 2;\r\n structure.push({ stride: 2, kind: kind, data: sourceUV });\r\n }\r\n }\r\n\r\n // Colors\r\n const sourceColors = data.colors;\r\n if (sourceColors) {\r\n numProp += 4;\r\n structure.push({ stride: 4, kind: VertexBuffer.ColorKind, data: sourceColors });\r\n }\r\n\r\n return this._ProcessData(data.positions!.length / 3, triVerts, structure, numProp, runIndex, runOriginalID);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a vertexData\r\n * @param vertexData defines the vertexData to use to create the CSG\r\n * @returns a new CSG2 class\r\n */\r\n public static FromVertexData(vertexData: VertexData): CSG2 {\r\n const sourceVertices = vertexData.positions;\r\n const sourceIndices = vertexData.indices;\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The vertexData must at least have positions and indices\");\r\n }\r\n\r\n return this._Construct(vertexData, null);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a mesh\r\n * @param mesh defines the mesh to use to create the CSG\r\n * @param ignoreWorldMatrix defines if the world matrix should be ignored\r\n * @returns a new CSG2 class\r\n */\r\n public static FromMesh(mesh: Mesh, ignoreWorldMatrix = false): CSG2 {\r\n const sourceVertices = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n const sourceIndices = mesh.getIndices();\r\n const worldMatrix = mesh.computeWorldMatrix(true);\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The mesh must at least have positions and indices\");\r\n }\r\n\r\n // Create a triangle run for each submesh (material)\r\n const starts = [...Array(mesh.subMeshes.length)].map((_, idx) => mesh.subMeshes[idx].indexStart);\r\n\r\n // Map the materials to ID.\r\n const sourceMaterial = mesh.material || mesh.getScene().defaultMaterial;\r\n const isMultiMaterial = sourceMaterial.getClassName() === \"MultiMaterial\";\r\n const originalIDs = [...Array(mesh.subMeshes.length)].map((_, idx) => {\r\n if (isMultiMaterial) {\r\n return FirstID + (sourceMaterial as MultiMaterial).subMaterials[mesh.subMeshes[idx].materialIndex]!.uniqueId;\r\n }\r\n\r\n return FirstID + sourceMaterial.uniqueId;\r\n });\r\n\r\n // List the runs in sequence.\r\n const indices = Array.from(starts.keys());\r\n indices.sort((a, b) => starts[a] - starts[b]);\r\n const runIndex = new Uint32Array(indices.map((i) => starts[i]));\r\n const runOriginalID = new Uint32Array(indices.map((i) => originalIDs[i]));\r\n\r\n // Process\r\n const data = {\r\n positions: sourceVertices,\r\n indices: sourceIndices,\r\n normals: mesh.getVerticesData(VertexBuffer.NormalKind),\r\n colors: mesh.getVerticesData(VertexBuffer.ColorKind),\r\n uvs: mesh.getVerticesData(VertexBuffer.UVKind),\r\n uvs2: mesh.getVerticesData(VertexBuffer.UV2Kind),\r\n uvs3: mesh.getVerticesData(VertexBuffer.UV3Kind),\r\n uvs4: mesh.getVerticesData(VertexBuffer.UV4Kind),\r\n uvs5: mesh.getVerticesData(VertexBuffer.UV5Kind),\r\n uvs6: mesh.getVerticesData(VertexBuffer.UV6Kind),\r\n };\r\n // Manifold requires consistently outward-wound (positive volume) input. Babylon\r\n // meshes can be wound either way depending on their source: a default mesh uses the\r\n // engine's winding for the current handedness, while an imported mesh (e.g. glTF)\r\n // keeps its own winding and compensates through sideOrientation. Detect when the\r\n // effective world-space winding is reflected relative to the default so Manifold's\r\n // input orientation stays consistent across all sources. This fixes CSG operations\r\n // in right-handed scenes and with negative-determinant (mirrored) world matrices.\r\n // Use the same effective material the renderer binds (mesh.material falling back to\r\n // the scene default) so an explicit sideOrientation override is honored, and reuse\r\n // the cached world-matrix determinant.\r\n let effectiveOrientation = sourceMaterial.sideOrientation !== null ? sourceMaterial.sideOrientation : mesh.sideOrientation;\r\n if (!ignoreWorldMatrix && mesh._getWorldMatrixDeterminant() < 0) {\r\n effectiveOrientation =\r\n effectiveOrientation === Constants.MATERIAL_ClockWiseSideOrientation\r\n ? Constants.MATERIAL_CounterClockWiseSideOrientation\r\n : Constants.MATERIAL_ClockWiseSideOrientation;\r\n }\r\n const invertWinding = (effectiveOrientation === Constants.MATERIAL_CounterClockWiseSideOrientation) === mesh.getScene().useRightHandedSystem;\r\n\r\n return this._Construct(data, ignoreWorldMatrix ? null : worldMatrix, runIndex, runOriginalID, invertWinding);\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the Manifold library is ready\r\n * @returns true if the Manifold library is ready\r\n */\r\nexport function IsCSG2Ready() {\r\n return Manifold !== undefined;\r\n}\r\n\r\n/**\r\n * Initialize the Manifold library\r\n * @param options defines the options to use to initialize the library\r\n */\r\nexport async function InitializeCSG2Async(options?: Partial<ICSG2Options>) {\r\n const localOptions = {\r\n manifoldUrl: \"https://unpkg.com/manifold-3d@3.4.0\",\r\n ...options,\r\n };\r\n\r\n if (Manifold) {\r\n return; // Already initialized\r\n }\r\n\r\n if (ManifoldPromise) {\r\n await ManifoldPromise;\r\n return;\r\n }\r\n\r\n if (localOptions.manifoldInstance) {\r\n Manifold = localOptions.manifoldInstance;\r\n ManifoldMesh = localOptions.manifoldMeshInstance;\r\n } else {\r\n ManifoldPromise = _LoadScriptModuleAsync(\r\n `\r\n import Module from '${localOptions.manifoldUrl}/manifold.js';\r\n const wasm = await Module();\r\n wasm.setup();\r\n const {Manifold, Mesh} = wasm;\r\n const returnedValue = {Manifold, Mesh};\r\n `\r\n );\r\n\r\n const result = await ManifoldPromise;\r\n // eslint-disable-next-line require-atomic-updates\r\n Manifold = result.Manifold;\r\n ManifoldMesh = result.Mesh;\r\n }\r\n\r\n // Reserve IDs for materials (we consider that there will be no more than 65536 materials)\r\n FirstID = Manifold.reserveIDs(65536);\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { Vector3 } from "../Maths/math.vector.js";
1
+ import { Vector3 } from "../Maths/math.vector.pure.js";
2
2
  import { _IsoVector } from "../Maths/math.isovector.js";
3
3
  /**
4
4
  * Class representing data for one face OAB of an equilateral icosahedron
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/naming-convention */
2
- import { Vector3 } from "../Maths/math.vector.js";
2
+ import { Vector3 } from "../Maths/math.vector.pure.js";
3
3
  import { HighestCommonFactor } from "../Maths/math.scalar.functions.js";
4
4
  import { PHI } from "../Maths/math.constants.js";
5
5
  import { _IsoVector } from "../Maths/math.isovector.js";
@@ -1 +1 @@
1
- {"version":3,"file":"geodesicMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/geodesicMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { HighestCommonFactor } from \"../Maths/math.scalar.functions\";\r\nimport { PHI } from \"../Maths/math.constants\";\r\nimport { _IsoVector } from \"../Maths/math.isovector\";\r\n\r\n/**\r\n * Class representing data for one face OAB of an equilateral icosahedron\r\n * When O is the isovector (0, 0), A is isovector (m, n)\r\n * @internal\r\n */\r\nexport class _PrimaryIsoTriangle {\r\n //properties\r\n /** @internal */\r\n public m: number;\r\n /** @internal */\r\n public n: number;\r\n /** @internal */\r\n public cartesian: Vector3[] = [];\r\n /** @internal */\r\n public vertices: _IsoVector[] = [];\r\n /** @internal */\r\n public max: number[] = [];\r\n /** @internal */\r\n public min: number[] = [];\r\n /** @internal */\r\n public vecToidx: { [key: string]: number };\r\n /** @internal */\r\n public vertByDist: { [key: string]: number[] };\r\n /** @internal */\r\n public closestTo: number[][] = [];\r\n\r\n /** @internal */\r\n public innerFacets: string[][] = [];\r\n /** @internal */\r\n public isoVecsABOB: _IsoVector[][] = [];\r\n /** @internal */\r\n public isoVecsOBOA: _IsoVector[][] = [];\r\n /** @internal */\r\n public isoVecsBAOA: _IsoVector[][] = [];\r\n /** @internal */\r\n public vertexTypes: number[][] = [];\r\n\r\n /** @internal */\r\n public coau: number;\r\n /** @internal */\r\n public cobu: number;\r\n /** @internal */\r\n public coav: number;\r\n /** @internal */\r\n public cobv: number;\r\n\r\n /** @internal */\r\n public IDATA: PolyhedronData = new PolyhedronData(\r\n \"icosahedron\",\r\n \"Regular\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n [\r\n [0, 2, 1],\r\n [0, 3, 2],\r\n [0, 4, 3],\r\n [0, 5, 4],\r\n [0, 1, 5],\r\n [7, 6, 1],\r\n [8, 7, 2],\r\n [9, 8, 3],\r\n [10, 9, 4],\r\n [6, 10, 5],\r\n [2, 7, 1],\r\n [3, 8, 2],\r\n [4, 9, 3],\r\n [5, 10, 4],\r\n [1, 6, 5],\r\n [11, 6, 7],\r\n [11, 7, 8],\r\n [11, 8, 9],\r\n [11, 9, 10],\r\n [11, 10, 6],\r\n ]\r\n );\r\n\r\n /**\r\n * Creates the PrimaryIsoTriangle Triangle OAB\r\n * @param m an integer\r\n * @param n an integer\r\n */\r\n\r\n //operators\r\n public setIndices() {\r\n let indexCount = 12; // 12 vertices already assigned\r\n const vecToidx: { [key: string]: number } = {}; //maps iso-vectors to indexCount;\r\n const m = this.m;\r\n const n = this.n;\r\n let g = m; // hcf of m, n when n != 0\r\n if (n !== 0) {\r\n g = HighestCommonFactor(m, n);\r\n }\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n let fr: number | string; //face to the right of current face\r\n let rot: number | string; //rotation about which vertex for fr\r\n let O: number;\r\n let A: number;\r\n let B: number;\r\n const oVec: _IsoVector = _IsoVector.Zero();\r\n const aVec = new _IsoVector(m, n);\r\n const bVec = new _IsoVector(-n, m + n);\r\n const oaVec: _IsoVector = _IsoVector.Zero();\r\n const abVec: _IsoVector = _IsoVector.Zero();\r\n const obVec: _IsoVector = _IsoVector.Zero();\r\n let verts: number[] = [];\r\n let idx: string;\r\n let idxR: string;\r\n let isoId: string;\r\n let isoIdR: string;\r\n\r\n const closestTo: number[][] = [];\r\n const vDist = this.vertByDist;\r\n\r\n const matchIdx = (f: number, fr: number, isoId: string, isoIdR: string) => {\r\n idx = f + \"|\" + isoId;\r\n idxR = fr + \"|\" + isoIdR;\r\n if (!(idx in vecToidx || idxR in vecToidx)) {\r\n vecToidx[idx] = indexCount;\r\n vecToidx[idxR] = indexCount;\r\n indexCount++;\r\n } else if (idx in vecToidx && !(idxR in vecToidx)) {\r\n vecToidx[idxR] = vecToidx[idx];\r\n } else if (idxR in vecToidx && !(idx in vecToidx)) {\r\n vecToidx[idx] = vecToidx[idxR];\r\n }\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n };\r\n\r\n this.IDATA.edgematch = [\r\n [1, \"B\"],\r\n [2, \"B\"],\r\n [3, \"B\"],\r\n [4, \"B\"],\r\n [0, \"B\"],\r\n [10, \"O\", 14, \"A\"],\r\n [11, \"O\", 10, \"A\"],\r\n [12, \"O\", 11, \"A\"],\r\n [13, \"O\", 12, \"A\"],\r\n [14, \"O\", 13, \"A\"],\r\n [0, \"O\"],\r\n [1, \"O\"],\r\n [2, \"O\"],\r\n [3, \"O\"],\r\n [4, \"O\"],\r\n [19, \"B\", 5, \"A\"],\r\n [15, \"B\", 6, \"A\"],\r\n [16, \"B\", 7, \"A\"],\r\n [17, \"B\", 8, \"A\"],\r\n [18, \"B\", 9, \"A\"],\r\n ];\r\n\r\n /***edges AB to OB***** rotation about B*/\r\n for (let f = 0; f < 20; f++) {\r\n //f current face\r\n\r\n verts = this.IDATA.face[f];\r\n O = verts[2];\r\n A = verts[1];\r\n B = verts[0];\r\n\r\n isoId = oVec.x + \"|\" + oVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = O;\r\n closestTo[O] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = aVec.x + \"|\" + aVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = A;\r\n closestTo[A] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = bVec.x + \"|\" + bVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = B;\r\n closestTo[B] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n //for edge vertices\r\n fr = <number>this.IDATA.edgematch[f][0];\r\n rot = <string>this.IDATA.edgematch[f][1];\r\n if (rot === \"B\") {\r\n for (let i = 1; i < g; i++) {\r\n abVec.x = m - i * (m1 + n1);\r\n abVec.y = n + i * m1;\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n isoId = abVec.x + \"|\" + abVec.y;\r\n isoIdR = obVec.x + \"|\" + obVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n if (rot === \"O\") {\r\n for (let i = 1; i < g; i++) {\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n isoId = obVec.x + \"|\" + obVec.y;\r\n isoIdR = oaVec.x + \"|\" + oaVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n fr = <number>this.IDATA.edgematch[f][2];\r\n rot = <string>this.IDATA.edgematch[f][3];\r\n if (rot && rot === \"A\") {\r\n for (let i = 1; i < g; i++) {\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n abVec.x = m - (g - i) * (m1 + n1); //reversed for BA\r\n abVec.y = n + (g - i) * m1; //reversed for BA\r\n isoId = oaVec.x + \"|\" + oaVec.y;\r\n isoIdR = abVec.x + \"|\" + abVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.vertices.length; i++) {\r\n isoId = this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = indexCount++;\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.closestTo = closestTo;\r\n this.vecToidx = vecToidx;\r\n }\r\n\r\n /** @internal */\r\n public calcCoeffs() {\r\n const m = this.m;\r\n const n = this.n;\r\n const thirdR3 = Math.sqrt(3) / 3;\r\n\r\n const LSQD = m * m + n * n + m * n;\r\n\r\n this.coau = (m + n) / LSQD;\r\n this.cobu = -n / LSQD;\r\n this.coav = (-thirdR3 * (m - n)) / LSQD;\r\n this.cobv = (thirdR3 * (2 * m + n)) / LSQD;\r\n }\r\n\r\n /** @internal */\r\n public createInnerFacets() {\r\n const m = this.m;\r\n const n = this.n;\r\n for (let y = 0; y < n + m + 1; y++) {\r\n for (let x = this.min[y]; x < this.max[y] + 1; x++) {\r\n if (x < this.max[y] && x < this.max[y + 1] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + x + \"|\" + (y + 1), \"|\" + (x + 1) + \"|\" + y]);\r\n }\r\n if (y > 0 && x < this.max[y - 1] && x + 1 < this.max[y] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + (x + 1) + \"|\" + y, \"|\" + (x + 1) + \"|\" + (y - 1)]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public edgeVecsABOB() {\r\n const m = this.m;\r\n const n = this.n;\r\n\r\n const B = new _IsoVector(-n, m + n);\r\n\r\n for (let y = 1; y < m + n; y++) {\r\n const point = new _IsoVector(this.min[y], y);\r\n const prev = new _IsoVector(this.min[y - 1], y - 1);\r\n const next = new _IsoVector(this.min[y + 1], y + 1);\r\n const pointR = point.clone();\r\n const prevR = prev.clone();\r\n const nextR = next.clone();\r\n\r\n pointR.rotate60About(B);\r\n prevR.rotate60About(B);\r\n nextR.rotate60About(B);\r\n\r\n const maxPoint = new _IsoVector(this.max[pointR.y], pointR.y);\r\n const maxPrev = new _IsoVector(this.max[pointR.y - 1], pointR.y - 1);\r\n const maxLeftPrev = new _IsoVector(this.max[pointR.y - 1] - 1, pointR.y - 1);\r\n\r\n if (pointR.x !== maxPoint.x || pointR.y !== maxPoint.y) {\r\n if (pointR.x !== maxPrev.x) {\r\n // type2\r\n //up\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxLeftPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxLeftPrev, maxPoint]);\r\n } else if (pointR.y === nextR.y) {\r\n // type1\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 1]);\r\n this.isoVecsABOB.push([point, maxPrev, next]);\r\n } else {\r\n // type 0\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxPoint]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public mapABOBtoOBOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 0) {\r\n point.rotateNeg120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsOBOA.push(temp);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public mapABOBtoBAOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 1) {\r\n point.rotate120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsBAOA.push(temp);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public MapToFace(faceNb: number, geodesicData: PolyhedronData) {\r\n const F = this.IDATA.face[faceNb];\r\n const oidx = F[2];\r\n const aidx = F[1];\r\n const bidx = F[0];\r\n\r\n const O = Vector3.FromArray(this.IDATA.vertex[oidx]);\r\n const A = Vector3.FromArray(this.IDATA.vertex[aidx]);\r\n const B = Vector3.FromArray(this.IDATA.vertex[bidx]);\r\n\r\n const OA = A.subtract(O);\r\n const OB = B.subtract(O);\r\n\r\n const x: Vector3 = OA.scale(this.coau).add(OB.scale(this.cobu));\r\n const y: Vector3 = OA.scale(this.coav).add(OB.scale(this.cobv));\r\n\r\n const mapped = [];\r\n\r\n let idx: string;\r\n let tempVec: Vector3;\r\n for (let i = 0; i < this.cartesian.length; i++) {\r\n tempVec = x.scale(this.cartesian[i].x).add(y.scale(this.cartesian[i].y)).add(O);\r\n mapped[i] = [tempVec.x, tempVec.y, tempVec.z];\r\n idx = faceNb + \"|\" + this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n geodesicData.vertex[this.vecToidx[idx]] = [tempVec.x, tempVec.y, tempVec.z];\r\n }\r\n }\r\n\r\n //statics\r\n /**Creates a primary triangle\r\n * @internal\r\n */\r\n\r\n public build(m: number, n: number) {\r\n const vertices: _IsoVector[] = [];\r\n\r\n const O: _IsoVector = _IsoVector.Zero();\r\n const A: _IsoVector = new _IsoVector(m, n);\r\n const B: _IsoVector = new _IsoVector(-n, m + n);\r\n vertices.push(O, A, B);\r\n\r\n //max internal isoceles triangle vertices\r\n for (let y = n; y < m + 1; y++) {\r\n for (let x = 0; x < m + 1 - y; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n }\r\n }\r\n\r\n //shared vertices along edges when needed\r\n if (n > 0) {\r\n const g = HighestCommonFactor(m, n);\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n for (let i = 1; i < g; i++) {\r\n vertices.push(new _IsoVector(i * m1, i * n1)); //OA\r\n vertices.push(new _IsoVector(-i * n1, i * (m1 + n1))); //OB\r\n vertices.push(new _IsoVector(m - i * (m1 + n1), n + i * m1)); // AB\r\n }\r\n\r\n //lower rows vertices and their rotations\r\n const ratio = m / n;\r\n for (let y = 1; y < n; y++) {\r\n for (let x = 0; x < y * ratio; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n vertices.push(new _IsoVector(x, y).rotate120(m, n));\r\n vertices.push(new _IsoVector(x, y).rotateNeg120(m, n));\r\n }\r\n }\r\n }\r\n //order vertices by x and then y\r\n vertices.sort((a, b) => {\r\n return a.x - b.x;\r\n });\r\n\r\n vertices.sort((a, b) => {\r\n return a.y - b.y;\r\n });\r\n\r\n const min = new Array<number>(m + n + 1);\r\n const max = new Array<number>(m + n + 1);\r\n for (let i = 0; i < min.length; i++) {\r\n min[i] = Infinity;\r\n max[i] = -Infinity;\r\n }\r\n\r\n let y: number;\r\n let x: number;\r\n\r\n const len: number = vertices.length;\r\n for (let i = 0; i < len; i++) {\r\n x = vertices[i].x;\r\n y = vertices[i].y;\r\n min[y] = Math.min(x, min[y]);\r\n max[y] = Math.max(x, max[y]);\r\n }\r\n\r\n //calculates the distance of a vertex from a given primary vertex\r\n const distFrom = (vert: _IsoVector, primVert: string) => {\r\n const v = vert.clone();\r\n if (primVert === \"A\") {\r\n v.rotateNeg120(m, n);\r\n }\r\n if (primVert === \"B\") {\r\n v.rotate120(m, n);\r\n }\r\n if (v.x < 0) {\r\n return v.y;\r\n }\r\n return v.x + v.y;\r\n };\r\n\r\n const cartesian: Vector3[] = [];\r\n const distFromO: number[] = [];\r\n const distFromA: number[] = [];\r\n const distFromB: number[] = [];\r\n const vertByDist: { [key: string]: number[] } = {};\r\n const vertData: number[][] = [];\r\n let closest: number = -1;\r\n let dist: number = -1;\r\n for (let i = 0; i < len; i++) {\r\n cartesian[i] = vertices[i].toCartesianOrigin(new _IsoVector(0, 0), 0.5);\r\n distFromO[i] = distFrom(vertices[i], \"O\");\r\n distFromA[i] = distFrom(vertices[i], \"A\");\r\n distFromB[i] = distFrom(vertices[i], \"B\");\r\n\r\n if (distFromO[i] === distFromA[i] && distFromA[i] === distFromB[i]) {\r\n closest = 3;\r\n dist = distFromO[i];\r\n } else if (distFromO[i] === distFromA[i]) {\r\n closest = 4;\r\n dist = distFromO[i];\r\n } else if (distFromA[i] === distFromB[i]) {\r\n closest = 5;\r\n dist = distFromA[i];\r\n } else if (distFromB[i] === distFromO[i]) {\r\n closest = 6;\r\n dist = distFromO[i];\r\n }\r\n if (distFromO[i] < distFromA[i] && distFromO[i] < distFromB[i]) {\r\n closest = 2;\r\n dist = distFromO[i];\r\n }\r\n if (distFromA[i] < distFromO[i] && distFromA[i] < distFromB[i]) {\r\n closest = 1;\r\n dist = distFromA[i];\r\n }\r\n if (distFromB[i] < distFromA[i] && distFromB[i] < distFromO[i]) {\r\n closest = 0;\r\n dist = distFromB[i];\r\n }\r\n vertData.push([closest, dist, vertices[i].x, vertices[i].y]);\r\n }\r\n\r\n vertData.sort((a, b) => {\r\n return a[2] - b[2];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[1] - b[1];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[0] - b[0];\r\n });\r\n\r\n for (let v = 0; v < vertData.length; v++) {\r\n vertByDist[vertData[v][2] + \"|\" + vertData[v][3]] = [vertData[v][0], vertData[v][1], v];\r\n }\r\n\r\n this.m = m;\r\n this.n = n;\r\n this.vertices = vertices;\r\n this.vertByDist = vertByDist;\r\n this.cartesian = cartesian;\r\n this.min = min;\r\n this.max = max;\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/** Builds Polyhedron Data\r\n * @internal\r\n */\r\nexport class PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public edgematch: (number | string)[][];\r\n\r\n /** @internal */\r\n constructor(\r\n /**\r\n * The name of the polyhedron\r\n */\r\n public name: string,\r\n /**\r\n * The category of the polyhedron\r\n */\r\n public category: string,\r\n /**\r\n * vertex data\r\n */\r\n public vertex: number[][],\r\n /**\r\n * face data\r\n */\r\n public face: number[][]\r\n ) {}\r\n}\r\n\r\n/**\r\n * This class Extends the PolyhedronData Class to provide measures for a Geodesic Polyhedron\r\n */\r\nexport class GeodesicData extends PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public override edgematch: (number | string)[][];\r\n /**\r\n * @internal\r\n */\r\n public adjacentFaces: number[][];\r\n /**\r\n * @internal\r\n */\r\n public sharedNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public poleNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public innerToData(face: number, primTri: _PrimaryIsoTriangle) {\r\n for (let i = 0; i < primTri.innerFacets.length; i++) {\r\n this.face.push(primTri.innerFacets[i].map((el) => primTri.vecToidx[face + el]));\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapABOBtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 0) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapOBOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsOBOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapBAOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][2];\r\n for (let i = 0; i < primTri.isoVecsBAOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public orderData(primTri: _PrimaryIsoTriangle) {\r\n const nearTo: number[][][] = [];\r\n for (let i = 0; i < 13; i++) {\r\n nearTo[i] = [];\r\n }\r\n const close: number[][] = primTri.closestTo;\r\n for (let i = 0; i < close.length; i++) {\r\n if (close[i][0] > -1) {\r\n if (close[i][1] > 0) {\r\n nearTo[close[i][0]].push([i, close[i][1]]);\r\n }\r\n } else {\r\n nearTo[12].push([i, close[i][0]]);\r\n }\r\n }\r\n\r\n const near: number[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n near[i] = i;\r\n }\r\n let nearIndex = 12;\r\n for (let i = 0; i < 12; i++) {\r\n nearTo[i].sort((a: number[], b: number[]) => {\r\n return a[1] - b[1];\r\n });\r\n for (let j = 0; j < nearTo[i].length; j++) {\r\n near[nearTo[i][j][0]] = nearIndex++;\r\n }\r\n }\r\n\r\n for (let j = 0; j < nearTo[12].length; j++) {\r\n near[nearTo[12][j][0]] = nearIndex++;\r\n }\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].push(near[i]);\r\n }\r\n\r\n this.vertex.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].pop();\r\n }\r\n\r\n for (let i = 0; i < this.face.length; i++) {\r\n for (let j = 0; j < this.face[i].length; j++) {\r\n this.face[i][j] = near[this.face[i][j]];\r\n }\r\n }\r\n\r\n this.sharedNodes = nearTo[12].length;\r\n this.poleNodes = this.vertex.length - this.sharedNodes;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public setOrder(m: number, faces: number[]) {\r\n const adjVerts: number[] = [];\r\n const dualFaces: number[] = [];\r\n let face: number = <number>faces.pop();\r\n dualFaces.push(face);\r\n let index = this.face[face].indexOf(m);\r\n index = (index + 2) % 3;\r\n let v = this.face[face][index];\r\n adjVerts.push(v);\r\n let f = 0;\r\n while (faces.length > 0) {\r\n face = faces[f];\r\n if (this.face[face].indexOf(v) > -1) {\r\n // v is a vertex of face f\r\n index = (this.face[face].indexOf(v) + 1) % 3;\r\n v = this.face[face][index];\r\n adjVerts.push(v);\r\n dualFaces.push(face);\r\n faces.splice(f, 1);\r\n f = 0;\r\n } else {\r\n f++;\r\n }\r\n }\r\n this.adjacentFaces.push(adjVerts);\r\n return dualFaces;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public toGoldbergPolyhedronData(): PolyhedronData {\r\n const goldbergPolyhedronData: PolyhedronData = new PolyhedronData(\"GeoDual\", \"Goldberg\", [], []);\r\n goldbergPolyhedronData.name = \"GD dual\";\r\n const verticesNb: number = this.vertex.length;\r\n const map = new Array(verticesNb);\r\n for (let v = 0; v < verticesNb; v++) {\r\n map[v] = [];\r\n }\r\n for (let f = 0; f < this.face.length; f++) {\r\n for (let i = 0; i < 3; i++) {\r\n map[this.face[f][i]].push(f);\r\n }\r\n }\r\n let cx: number;\r\n let cy: number;\r\n let cz: number;\r\n let face: number[];\r\n let vertex: number[];\r\n this.adjacentFaces = [];\r\n for (let m = 0; m < map.length; m++) {\r\n goldbergPolyhedronData.face[m] = this.setOrder(m, map[m].concat([]));\r\n for (const el of map[m]) {\r\n cx = 0;\r\n cy = 0;\r\n cz = 0;\r\n face = this.face[el];\r\n for (let i = 0; i < 3; i++) {\r\n vertex = this.vertex[face[i]];\r\n cx += vertex[0];\r\n cy += vertex[1];\r\n cz += vertex[2];\r\n }\r\n goldbergPolyhedronData.vertex[el] = [cx / 3, cy / 3, cz / 3];\r\n }\r\n }\r\n return goldbergPolyhedronData;\r\n }\r\n\r\n //statics\r\n /**Builds the data for a Geodesic Polyhedron from a primary triangle\r\n * @param primTri the primary triangle\r\n * @internal\r\n */\r\n\r\n public static BuildGeodesicData(primTri: _PrimaryIsoTriangle) {\r\n const geodesicData = new GeodesicData(\r\n \"Geodesic-m-n\",\r\n \"Geodesic\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n []\r\n );\r\n\r\n primTri.setIndices();\r\n primTri.calcCoeffs();\r\n primTri.createInnerFacets();\r\n primTri.edgeVecsABOB();\r\n primTri.mapABOBtoOBOA();\r\n primTri.mapABOBtoBAOA();\r\n\r\n for (let f = 0; f < primTri.IDATA.face.length; f++) {\r\n primTri.MapToFace(f, geodesicData);\r\n geodesicData.innerToData(f, primTri);\r\n if (primTri.IDATA.edgematch[f][1] === \"B\") {\r\n geodesicData.mapABOBtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][1] === \"O\") {\r\n geodesicData.mapOBOAtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][3] === \"A\") {\r\n geodesicData.mapBAOAtoDATA(f, primTri);\r\n }\r\n }\r\n\r\n geodesicData.orderData(primTri);\r\n const radius = 1;\r\n geodesicData.vertex = geodesicData.vertex.map(function (el) {\r\n const a = el[0];\r\n const b = el[1];\r\n const c = el[2];\r\n const d = Math.sqrt(a * a + b * b + c * c);\r\n el[0] *= radius / d;\r\n el[1] *= radius / d;\r\n el[2] *= radius / d;\r\n return el;\r\n });\r\n\r\n return geodesicData;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"geodesicMesh.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/geodesicMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Vector3 } from \"../Maths/math.vector.pure\";\r\nimport { HighestCommonFactor } from \"../Maths/math.scalar.functions\";\r\nimport { PHI } from \"../Maths/math.constants\";\r\nimport { _IsoVector } from \"../Maths/math.isovector\";\r\n\r\n/**\r\n * Class representing data for one face OAB of an equilateral icosahedron\r\n * When O is the isovector (0, 0), A is isovector (m, n)\r\n * @internal\r\n */\r\nexport class _PrimaryIsoTriangle {\r\n //properties\r\n /** @internal */\r\n public m: number;\r\n /** @internal */\r\n public n: number;\r\n /** @internal */\r\n public cartesian: Vector3[] = [];\r\n /** @internal */\r\n public vertices: _IsoVector[] = [];\r\n /** @internal */\r\n public max: number[] = [];\r\n /** @internal */\r\n public min: number[] = [];\r\n /** @internal */\r\n public vecToidx: { [key: string]: number };\r\n /** @internal */\r\n public vertByDist: { [key: string]: number[] };\r\n /** @internal */\r\n public closestTo: number[][] = [];\r\n\r\n /** @internal */\r\n public innerFacets: string[][] = [];\r\n /** @internal */\r\n public isoVecsABOB: _IsoVector[][] = [];\r\n /** @internal */\r\n public isoVecsOBOA: _IsoVector[][] = [];\r\n /** @internal */\r\n public isoVecsBAOA: _IsoVector[][] = [];\r\n /** @internal */\r\n public vertexTypes: number[][] = [];\r\n\r\n /** @internal */\r\n public coau: number;\r\n /** @internal */\r\n public cobu: number;\r\n /** @internal */\r\n public coav: number;\r\n /** @internal */\r\n public cobv: number;\r\n\r\n /** @internal */\r\n public IDATA: PolyhedronData = new PolyhedronData(\r\n \"icosahedron\",\r\n \"Regular\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n [\r\n [0, 2, 1],\r\n [0, 3, 2],\r\n [0, 4, 3],\r\n [0, 5, 4],\r\n [0, 1, 5],\r\n [7, 6, 1],\r\n [8, 7, 2],\r\n [9, 8, 3],\r\n [10, 9, 4],\r\n [6, 10, 5],\r\n [2, 7, 1],\r\n [3, 8, 2],\r\n [4, 9, 3],\r\n [5, 10, 4],\r\n [1, 6, 5],\r\n [11, 6, 7],\r\n [11, 7, 8],\r\n [11, 8, 9],\r\n [11, 9, 10],\r\n [11, 10, 6],\r\n ]\r\n );\r\n\r\n /**\r\n * Creates the PrimaryIsoTriangle Triangle OAB\r\n * @param m an integer\r\n * @param n an integer\r\n */\r\n\r\n //operators\r\n public setIndices() {\r\n let indexCount = 12; // 12 vertices already assigned\r\n const vecToidx: { [key: string]: number } = {}; //maps iso-vectors to indexCount;\r\n const m = this.m;\r\n const n = this.n;\r\n let g = m; // hcf of m, n when n != 0\r\n if (n !== 0) {\r\n g = HighestCommonFactor(m, n);\r\n }\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n let fr: number | string; //face to the right of current face\r\n let rot: number | string; //rotation about which vertex for fr\r\n let O: number;\r\n let A: number;\r\n let B: number;\r\n const oVec: _IsoVector = _IsoVector.Zero();\r\n const aVec = new _IsoVector(m, n);\r\n const bVec = new _IsoVector(-n, m + n);\r\n const oaVec: _IsoVector = _IsoVector.Zero();\r\n const abVec: _IsoVector = _IsoVector.Zero();\r\n const obVec: _IsoVector = _IsoVector.Zero();\r\n let verts: number[] = [];\r\n let idx: string;\r\n let idxR: string;\r\n let isoId: string;\r\n let isoIdR: string;\r\n\r\n const closestTo: number[][] = [];\r\n const vDist = this.vertByDist;\r\n\r\n const matchIdx = (f: number, fr: number, isoId: string, isoIdR: string) => {\r\n idx = f + \"|\" + isoId;\r\n idxR = fr + \"|\" + isoIdR;\r\n if (!(idx in vecToidx || idxR in vecToidx)) {\r\n vecToidx[idx] = indexCount;\r\n vecToidx[idxR] = indexCount;\r\n indexCount++;\r\n } else if (idx in vecToidx && !(idxR in vecToidx)) {\r\n vecToidx[idxR] = vecToidx[idx];\r\n } else if (idxR in vecToidx && !(idx in vecToidx)) {\r\n vecToidx[idx] = vecToidx[idxR];\r\n }\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n };\r\n\r\n this.IDATA.edgematch = [\r\n [1, \"B\"],\r\n [2, \"B\"],\r\n [3, \"B\"],\r\n [4, \"B\"],\r\n [0, \"B\"],\r\n [10, \"O\", 14, \"A\"],\r\n [11, \"O\", 10, \"A\"],\r\n [12, \"O\", 11, \"A\"],\r\n [13, \"O\", 12, \"A\"],\r\n [14, \"O\", 13, \"A\"],\r\n [0, \"O\"],\r\n [1, \"O\"],\r\n [2, \"O\"],\r\n [3, \"O\"],\r\n [4, \"O\"],\r\n [19, \"B\", 5, \"A\"],\r\n [15, \"B\", 6, \"A\"],\r\n [16, \"B\", 7, \"A\"],\r\n [17, \"B\", 8, \"A\"],\r\n [18, \"B\", 9, \"A\"],\r\n ];\r\n\r\n /***edges AB to OB***** rotation about B*/\r\n for (let f = 0; f < 20; f++) {\r\n //f current face\r\n\r\n verts = this.IDATA.face[f];\r\n O = verts[2];\r\n A = verts[1];\r\n B = verts[0];\r\n\r\n isoId = oVec.x + \"|\" + oVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = O;\r\n closestTo[O] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = aVec.x + \"|\" + aVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = A;\r\n closestTo[A] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n isoId = bVec.x + \"|\" + bVec.y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = B;\r\n closestTo[B] = [verts[vDist[isoId][0]], vDist[isoId][1]];\r\n }\r\n\r\n //for edge vertices\r\n fr = <number>this.IDATA.edgematch[f][0];\r\n rot = <string>this.IDATA.edgematch[f][1];\r\n if (rot === \"B\") {\r\n for (let i = 1; i < g; i++) {\r\n abVec.x = m - i * (m1 + n1);\r\n abVec.y = n + i * m1;\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n isoId = abVec.x + \"|\" + abVec.y;\r\n isoIdR = obVec.x + \"|\" + obVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n if (rot === \"O\") {\r\n for (let i = 1; i < g; i++) {\r\n obVec.x = -i * n1;\r\n obVec.y = i * (m1 + n1);\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n isoId = obVec.x + \"|\" + obVec.y;\r\n isoIdR = oaVec.x + \"|\" + oaVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n fr = <number>this.IDATA.edgematch[f][2];\r\n rot = <string>this.IDATA.edgematch[f][3];\r\n if (rot && rot === \"A\") {\r\n for (let i = 1; i < g; i++) {\r\n oaVec.x = i * m1;\r\n oaVec.y = i * n1;\r\n abVec.x = m - (g - i) * (m1 + n1); //reversed for BA\r\n abVec.y = n + (g - i) * m1; //reversed for BA\r\n isoId = oaVec.x + \"|\" + oaVec.y;\r\n isoIdR = abVec.x + \"|\" + abVec.y;\r\n matchIdx(f, fr, isoId, isoIdR);\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.vertices.length; i++) {\r\n isoId = this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n idx = f + \"|\" + isoId;\r\n if (!(idx in vecToidx)) {\r\n vecToidx[idx] = indexCount++;\r\n if (vDist[isoId][0] > 2) {\r\n closestTo[vecToidx[idx]] = [-vDist[isoId][0], vDist[isoId][1], vecToidx[idx]];\r\n } else {\r\n closestTo[vecToidx[idx]] = [verts[vDist[isoId][0]], vDist[isoId][1], vecToidx[idx]];\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.closestTo = closestTo;\r\n this.vecToidx = vecToidx;\r\n }\r\n\r\n /** @internal */\r\n public calcCoeffs() {\r\n const m = this.m;\r\n const n = this.n;\r\n const thirdR3 = Math.sqrt(3) / 3;\r\n\r\n const LSQD = m * m + n * n + m * n;\r\n\r\n this.coau = (m + n) / LSQD;\r\n this.cobu = -n / LSQD;\r\n this.coav = (-thirdR3 * (m - n)) / LSQD;\r\n this.cobv = (thirdR3 * (2 * m + n)) / LSQD;\r\n }\r\n\r\n /** @internal */\r\n public createInnerFacets() {\r\n const m = this.m;\r\n const n = this.n;\r\n for (let y = 0; y < n + m + 1; y++) {\r\n for (let x = this.min[y]; x < this.max[y] + 1; x++) {\r\n if (x < this.max[y] && x < this.max[y + 1] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + x + \"|\" + (y + 1), \"|\" + (x + 1) + \"|\" + y]);\r\n }\r\n if (y > 0 && x < this.max[y - 1] && x + 1 < this.max[y] + 1) {\r\n this.innerFacets.push([\"|\" + x + \"|\" + y, \"|\" + (x + 1) + \"|\" + y, \"|\" + (x + 1) + \"|\" + (y - 1)]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public edgeVecsABOB() {\r\n const m = this.m;\r\n const n = this.n;\r\n\r\n const B = new _IsoVector(-n, m + n);\r\n\r\n for (let y = 1; y < m + n; y++) {\r\n const point = new _IsoVector(this.min[y], y);\r\n const prev = new _IsoVector(this.min[y - 1], y - 1);\r\n const next = new _IsoVector(this.min[y + 1], y + 1);\r\n const pointR = point.clone();\r\n const prevR = prev.clone();\r\n const nextR = next.clone();\r\n\r\n pointR.rotate60About(B);\r\n prevR.rotate60About(B);\r\n nextR.rotate60About(B);\r\n\r\n const maxPoint = new _IsoVector(this.max[pointR.y], pointR.y);\r\n const maxPrev = new _IsoVector(this.max[pointR.y - 1], pointR.y - 1);\r\n const maxLeftPrev = new _IsoVector(this.max[pointR.y - 1] - 1, pointR.y - 1);\r\n\r\n if (pointR.x !== maxPoint.x || pointR.y !== maxPoint.y) {\r\n if (pointR.x !== maxPrev.x) {\r\n // type2\r\n //up\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxLeftPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxLeftPrev, maxPoint]);\r\n } else if (pointR.y === nextR.y) {\r\n // type1\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 1]);\r\n this.isoVecsABOB.push([point, maxPrev, next]);\r\n } else {\r\n // type 0\r\n //up\r\n this.vertexTypes.push([1, 1, 0]);\r\n this.isoVecsABOB.push([point, prev, maxPrev]);\r\n //down\r\n this.vertexTypes.push([1, 0, 0]);\r\n this.isoVecsABOB.push([point, maxPrev, maxPoint]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public mapABOBtoOBOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 0) {\r\n point.rotateNeg120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsOBOA.push(temp);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public mapABOBtoBAOA() {\r\n const point = new _IsoVector(0, 0);\r\n for (let i = 0; i < this.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n point.x = this.isoVecsABOB[i][j].x;\r\n point.y = this.isoVecsABOB[i][j].y;\r\n if (this.vertexTypes[i][j] === 1) {\r\n point.rotate120(this.m, this.n);\r\n }\r\n temp.push(point.clone());\r\n }\r\n this.isoVecsBAOA.push(temp);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public MapToFace(faceNb: number, geodesicData: PolyhedronData) {\r\n const F = this.IDATA.face[faceNb];\r\n const oidx = F[2];\r\n const aidx = F[1];\r\n const bidx = F[0];\r\n\r\n const O = Vector3.FromArray(this.IDATA.vertex[oidx]);\r\n const A = Vector3.FromArray(this.IDATA.vertex[aidx]);\r\n const B = Vector3.FromArray(this.IDATA.vertex[bidx]);\r\n\r\n const OA = A.subtract(O);\r\n const OB = B.subtract(O);\r\n\r\n const x: Vector3 = OA.scale(this.coau).add(OB.scale(this.cobu));\r\n const y: Vector3 = OA.scale(this.coav).add(OB.scale(this.cobv));\r\n\r\n const mapped = [];\r\n\r\n let idx: string;\r\n let tempVec: Vector3;\r\n for (let i = 0; i < this.cartesian.length; i++) {\r\n tempVec = x.scale(this.cartesian[i].x).add(y.scale(this.cartesian[i].y)).add(O);\r\n mapped[i] = [tempVec.x, tempVec.y, tempVec.z];\r\n idx = faceNb + \"|\" + this.vertices[i].x + \"|\" + this.vertices[i].y;\r\n geodesicData.vertex[this.vecToidx[idx]] = [tempVec.x, tempVec.y, tempVec.z];\r\n }\r\n }\r\n\r\n //statics\r\n /**Creates a primary triangle\r\n * @internal\r\n */\r\n\r\n public build(m: number, n: number) {\r\n const vertices: _IsoVector[] = [];\r\n\r\n const O: _IsoVector = _IsoVector.Zero();\r\n const A: _IsoVector = new _IsoVector(m, n);\r\n const B: _IsoVector = new _IsoVector(-n, m + n);\r\n vertices.push(O, A, B);\r\n\r\n //max internal isoceles triangle vertices\r\n for (let y = n; y < m + 1; y++) {\r\n for (let x = 0; x < m + 1 - y; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n }\r\n }\r\n\r\n //shared vertices along edges when needed\r\n if (n > 0) {\r\n const g = HighestCommonFactor(m, n);\r\n const m1 = m / g;\r\n const n1 = n / g;\r\n\r\n for (let i = 1; i < g; i++) {\r\n vertices.push(new _IsoVector(i * m1, i * n1)); //OA\r\n vertices.push(new _IsoVector(-i * n1, i * (m1 + n1))); //OB\r\n vertices.push(new _IsoVector(m - i * (m1 + n1), n + i * m1)); // AB\r\n }\r\n\r\n //lower rows vertices and their rotations\r\n const ratio = m / n;\r\n for (let y = 1; y < n; y++) {\r\n for (let x = 0; x < y * ratio; x++) {\r\n vertices.push(new _IsoVector(x, y));\r\n vertices.push(new _IsoVector(x, y).rotate120(m, n));\r\n vertices.push(new _IsoVector(x, y).rotateNeg120(m, n));\r\n }\r\n }\r\n }\r\n //order vertices by x and then y\r\n vertices.sort((a, b) => {\r\n return a.x - b.x;\r\n });\r\n\r\n vertices.sort((a, b) => {\r\n return a.y - b.y;\r\n });\r\n\r\n const min = new Array<number>(m + n + 1);\r\n const max = new Array<number>(m + n + 1);\r\n for (let i = 0; i < min.length; i++) {\r\n min[i] = Infinity;\r\n max[i] = -Infinity;\r\n }\r\n\r\n let y: number;\r\n let x: number;\r\n\r\n const len: number = vertices.length;\r\n for (let i = 0; i < len; i++) {\r\n x = vertices[i].x;\r\n y = vertices[i].y;\r\n min[y] = Math.min(x, min[y]);\r\n max[y] = Math.max(x, max[y]);\r\n }\r\n\r\n //calculates the distance of a vertex from a given primary vertex\r\n const distFrom = (vert: _IsoVector, primVert: string) => {\r\n const v = vert.clone();\r\n if (primVert === \"A\") {\r\n v.rotateNeg120(m, n);\r\n }\r\n if (primVert === \"B\") {\r\n v.rotate120(m, n);\r\n }\r\n if (v.x < 0) {\r\n return v.y;\r\n }\r\n return v.x + v.y;\r\n };\r\n\r\n const cartesian: Vector3[] = [];\r\n const distFromO: number[] = [];\r\n const distFromA: number[] = [];\r\n const distFromB: number[] = [];\r\n const vertByDist: { [key: string]: number[] } = {};\r\n const vertData: number[][] = [];\r\n let closest: number = -1;\r\n let dist: number = -1;\r\n for (let i = 0; i < len; i++) {\r\n cartesian[i] = vertices[i].toCartesianOrigin(new _IsoVector(0, 0), 0.5);\r\n distFromO[i] = distFrom(vertices[i], \"O\");\r\n distFromA[i] = distFrom(vertices[i], \"A\");\r\n distFromB[i] = distFrom(vertices[i], \"B\");\r\n\r\n if (distFromO[i] === distFromA[i] && distFromA[i] === distFromB[i]) {\r\n closest = 3;\r\n dist = distFromO[i];\r\n } else if (distFromO[i] === distFromA[i]) {\r\n closest = 4;\r\n dist = distFromO[i];\r\n } else if (distFromA[i] === distFromB[i]) {\r\n closest = 5;\r\n dist = distFromA[i];\r\n } else if (distFromB[i] === distFromO[i]) {\r\n closest = 6;\r\n dist = distFromO[i];\r\n }\r\n if (distFromO[i] < distFromA[i] && distFromO[i] < distFromB[i]) {\r\n closest = 2;\r\n dist = distFromO[i];\r\n }\r\n if (distFromA[i] < distFromO[i] && distFromA[i] < distFromB[i]) {\r\n closest = 1;\r\n dist = distFromA[i];\r\n }\r\n if (distFromB[i] < distFromA[i] && distFromB[i] < distFromO[i]) {\r\n closest = 0;\r\n dist = distFromB[i];\r\n }\r\n vertData.push([closest, dist, vertices[i].x, vertices[i].y]);\r\n }\r\n\r\n vertData.sort((a, b) => {\r\n return a[2] - b[2];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[1] - b[1];\r\n });\r\n vertData.sort((a, b) => {\r\n return a[0] - b[0];\r\n });\r\n\r\n for (let v = 0; v < vertData.length; v++) {\r\n vertByDist[vertData[v][2] + \"|\" + vertData[v][3]] = [vertData[v][0], vertData[v][1], v];\r\n }\r\n\r\n this.m = m;\r\n this.n = n;\r\n this.vertices = vertices;\r\n this.vertByDist = vertByDist;\r\n this.cartesian = cartesian;\r\n this.min = min;\r\n this.max = max;\r\n\r\n return this;\r\n }\r\n}\r\n\r\n/** Builds Polyhedron Data\r\n * @internal\r\n */\r\nexport class PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public edgematch: (number | string)[][];\r\n\r\n /** @internal */\r\n constructor(\r\n /**\r\n * The name of the polyhedron\r\n */\r\n public name: string,\r\n /**\r\n * The category of the polyhedron\r\n */\r\n public category: string,\r\n /**\r\n * vertex data\r\n */\r\n public vertex: number[][],\r\n /**\r\n * face data\r\n */\r\n public face: number[][]\r\n ) {}\r\n}\r\n\r\n/**\r\n * This class Extends the PolyhedronData Class to provide measures for a Geodesic Polyhedron\r\n */\r\nexport class GeodesicData extends PolyhedronData {\r\n /**\r\n * @internal\r\n */\r\n public override edgematch: (number | string)[][];\r\n /**\r\n * @internal\r\n */\r\n public adjacentFaces: number[][];\r\n /**\r\n * @internal\r\n */\r\n public sharedNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public poleNodes: number;\r\n /**\r\n * @internal\r\n */\r\n public innerToData(face: number, primTri: _PrimaryIsoTriangle) {\r\n for (let i = 0; i < primTri.innerFacets.length; i++) {\r\n this.face.push(primTri.innerFacets[i].map((el) => primTri.vecToidx[face + el]));\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapABOBtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsABOB.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 0) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsABOB[i][j].x + \"|\" + primTri.isoVecsABOB[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapOBOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][0];\r\n for (let i = 0; i < primTri.isoVecsOBOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsOBOA[i][j].x + \"|\" + primTri.isoVecsOBOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public mapBAOAtoDATA(faceNb: number, primTri: _PrimaryIsoTriangle) {\r\n const fr = primTri.IDATA.edgematch[faceNb][2];\r\n for (let i = 0; i < primTri.isoVecsBAOA.length; i++) {\r\n const temp = [];\r\n for (let j = 0; j < 3; j++) {\r\n if (primTri.vertexTypes[i][j] === 1) {\r\n temp.push(faceNb + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n } else {\r\n temp.push(fr + \"|\" + primTri.isoVecsBAOA[i][j].x + \"|\" + primTri.isoVecsBAOA[i][j].y);\r\n }\r\n }\r\n this.face.push([primTri.vecToidx[temp[0]], primTri.vecToidx[temp[1]], primTri.vecToidx[temp[2]]]);\r\n }\r\n }\r\n /**\r\n * @internal\r\n */\r\n public orderData(primTri: _PrimaryIsoTriangle) {\r\n const nearTo: number[][][] = [];\r\n for (let i = 0; i < 13; i++) {\r\n nearTo[i] = [];\r\n }\r\n const close: number[][] = primTri.closestTo;\r\n for (let i = 0; i < close.length; i++) {\r\n if (close[i][0] > -1) {\r\n if (close[i][1] > 0) {\r\n nearTo[close[i][0]].push([i, close[i][1]]);\r\n }\r\n } else {\r\n nearTo[12].push([i, close[i][0]]);\r\n }\r\n }\r\n\r\n const near: number[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n near[i] = i;\r\n }\r\n let nearIndex = 12;\r\n for (let i = 0; i < 12; i++) {\r\n nearTo[i].sort((a: number[], b: number[]) => {\r\n return a[1] - b[1];\r\n });\r\n for (let j = 0; j < nearTo[i].length; j++) {\r\n near[nearTo[i][j][0]] = nearIndex++;\r\n }\r\n }\r\n\r\n for (let j = 0; j < nearTo[12].length; j++) {\r\n near[nearTo[12][j][0]] = nearIndex++;\r\n }\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].push(near[i]);\r\n }\r\n\r\n this.vertex.sort((a, b) => {\r\n return a[3] - b[3];\r\n });\r\n\r\n for (let i = 0; i < this.vertex.length; i++) {\r\n this.vertex[i].pop();\r\n }\r\n\r\n for (let i = 0; i < this.face.length; i++) {\r\n for (let j = 0; j < this.face[i].length; j++) {\r\n this.face[i][j] = near[this.face[i][j]];\r\n }\r\n }\r\n\r\n this.sharedNodes = nearTo[12].length;\r\n this.poleNodes = this.vertex.length - this.sharedNodes;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public setOrder(m: number, faces: number[]) {\r\n const adjVerts: number[] = [];\r\n const dualFaces: number[] = [];\r\n let face: number = <number>faces.pop();\r\n dualFaces.push(face);\r\n let index = this.face[face].indexOf(m);\r\n index = (index + 2) % 3;\r\n let v = this.face[face][index];\r\n adjVerts.push(v);\r\n let f = 0;\r\n while (faces.length > 0) {\r\n face = faces[f];\r\n if (this.face[face].indexOf(v) > -1) {\r\n // v is a vertex of face f\r\n index = (this.face[face].indexOf(v) + 1) % 3;\r\n v = this.face[face][index];\r\n adjVerts.push(v);\r\n dualFaces.push(face);\r\n faces.splice(f, 1);\r\n f = 0;\r\n } else {\r\n f++;\r\n }\r\n }\r\n this.adjacentFaces.push(adjVerts);\r\n return dualFaces;\r\n }\r\n /**\r\n * @internal\r\n */\r\n public toGoldbergPolyhedronData(): PolyhedronData {\r\n const goldbergPolyhedronData: PolyhedronData = new PolyhedronData(\"GeoDual\", \"Goldberg\", [], []);\r\n goldbergPolyhedronData.name = \"GD dual\";\r\n const verticesNb: number = this.vertex.length;\r\n const map = new Array(verticesNb);\r\n for (let v = 0; v < verticesNb; v++) {\r\n map[v] = [];\r\n }\r\n for (let f = 0; f < this.face.length; f++) {\r\n for (let i = 0; i < 3; i++) {\r\n map[this.face[f][i]].push(f);\r\n }\r\n }\r\n let cx: number;\r\n let cy: number;\r\n let cz: number;\r\n let face: number[];\r\n let vertex: number[];\r\n this.adjacentFaces = [];\r\n for (let m = 0; m < map.length; m++) {\r\n goldbergPolyhedronData.face[m] = this.setOrder(m, map[m].concat([]));\r\n for (const el of map[m]) {\r\n cx = 0;\r\n cy = 0;\r\n cz = 0;\r\n face = this.face[el];\r\n for (let i = 0; i < 3; i++) {\r\n vertex = this.vertex[face[i]];\r\n cx += vertex[0];\r\n cy += vertex[1];\r\n cz += vertex[2];\r\n }\r\n goldbergPolyhedronData.vertex[el] = [cx / 3, cy / 3, cz / 3];\r\n }\r\n }\r\n return goldbergPolyhedronData;\r\n }\r\n\r\n //statics\r\n /**Builds the data for a Geodesic Polyhedron from a primary triangle\r\n * @param primTri the primary triangle\r\n * @internal\r\n */\r\n\r\n public static BuildGeodesicData(primTri: _PrimaryIsoTriangle) {\r\n const geodesicData = new GeodesicData(\r\n \"Geodesic-m-n\",\r\n \"Geodesic\",\r\n [\r\n [0, PHI, -1],\r\n [-PHI, 1, 0],\r\n [-1, 0, -PHI],\r\n [1, 0, -PHI],\r\n [PHI, 1, 0],\r\n [0, PHI, 1],\r\n [-1, 0, PHI],\r\n [-PHI, -1, 0],\r\n [0, -PHI, -1],\r\n [PHI, -1, 0],\r\n [1, 0, PHI],\r\n [0, -PHI, 1],\r\n ],\r\n []\r\n );\r\n\r\n primTri.setIndices();\r\n primTri.calcCoeffs();\r\n primTri.createInnerFacets();\r\n primTri.edgeVecsABOB();\r\n primTri.mapABOBtoOBOA();\r\n primTri.mapABOBtoBAOA();\r\n\r\n for (let f = 0; f < primTri.IDATA.face.length; f++) {\r\n primTri.MapToFace(f, geodesicData);\r\n geodesicData.innerToData(f, primTri);\r\n if (primTri.IDATA.edgematch[f][1] === \"B\") {\r\n geodesicData.mapABOBtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][1] === \"O\") {\r\n geodesicData.mapOBOAtoDATA(f, primTri);\r\n }\r\n if (primTri.IDATA.edgematch[f][3] === \"A\") {\r\n geodesicData.mapBAOAtoDATA(f, primTri);\r\n }\r\n }\r\n\r\n geodesicData.orderData(primTri);\r\n const radius = 1;\r\n geodesicData.vertex = geodesicData.vertex.map(function (el) {\r\n const a = el[0];\r\n const b = el[1];\r\n const c = el[2];\r\n const d = Math.sqrt(a * a + b * b + c * c);\r\n el[0] *= radius / d;\r\n el[1] *= radius / d;\r\n el[2] *= radius / d;\r\n return el;\r\n });\r\n\r\n return geodesicData;\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
1
  import { type Nullable, type FloatArray, type DataArray, type IndicesArray } from "../types.js";
2
2
  import { type Scene } from "../scene.js";
3
- import { type Vector2, Vector3 } from "../Maths/math.vector.js";
3
+ import { type Vector2, Vector3 } from "../Maths/math.vector.pure.js";
4
4
  import { type IGetSetVerticesData, VertexData } from "../Meshes/mesh.vertexData.js";
5
- import { VertexBuffer } from "../Buffers/buffer.js";
5
+ import { VertexBuffer } from "../Buffers/buffer.pure.js";
6
6
  import { type Effect } from "../Materials/effect.js";
7
7
  import { BoundingInfo } from "../Culling/boundingInfo.js";
8
8
  import { type DataBuffer } from "../Buffers/dataBuffer.js";
@@ -1,12 +1,12 @@
1
- import { Vector3 } from "../Maths/math.vector.js";
2
- import { Color4 } from "../Maths/math.color.js";
1
+ import { Vector3 } from "../Maths/math.vector.pure.js";
2
+ import { Color4 } from "../Maths/math.color.pure.js";
3
3
  import { VertexData } from "../Meshes/mesh.vertexData.js";
4
- import { VertexBuffer } from "../Buffers/buffer.js";
4
+ import { VertexBuffer } from "../Buffers/buffer.pure.js";
5
5
  import { SubMesh } from "../Meshes/subMesh.js";
6
6
  import { SceneLoaderFlags } from "../Loading/sceneLoaderFlags.js";
7
7
  import { BoundingInfo } from "../Culling/boundingInfo.js";
8
8
 
9
- import { Tools } from "../Misc/tools.js";
9
+ import { Tools } from "../Misc/tools.pure.js";
10
10
  import { Tags } from "../Misc/tags.js";
11
11
  import { extractMinAndMax } from "../Maths/math.functions.js";
12
12
  import { EngineStore } from "../Engines/engineStore.js";