@babylonjs/core 5.0.0-alpha.48 → 5.0.0-alpha.51

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 (1305) hide show
  1. package/Actions/action.js +5 -5
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/actionManager.js +11 -11
  4. package/Actions/actionManager.js.map +1 -1
  5. package/Actions/condition.js +5 -5
  6. package/Actions/condition.js.map +1 -1
  7. package/Actions/directActions.js +13 -13
  8. package/Actions/directActions.js.map +1 -1
  9. package/Actions/directAudioActions.js +4 -4
  10. package/Actions/directAudioActions.js.map +1 -1
  11. package/Actions/index.js +8 -8
  12. package/Actions/interpolateValueAction.js +8 -8
  13. package/Actions/interpolateValueAction.js.map +1 -1
  14. package/Animations/animatable.js +12 -7
  15. package/Animations/animatable.js.map +1 -1
  16. package/Animations/animation.js +11 -11
  17. package/Animations/animation.js.map +1 -1
  18. package/Animations/animationGroup.js +4 -14
  19. package/Animations/animationGroup.js.map +1 -1
  20. package/Animations/animationPropertiesOverride.js +1 -1
  21. package/Animations/easing.js +1 -1
  22. package/Animations/index.js +12 -12
  23. package/Animations/pathCursor.js +1 -1
  24. package/Animations/runtimeAnimation.js +12 -7
  25. package/Animations/runtimeAnimation.js.map +1 -1
  26. package/Audio/analyser.js +2 -2
  27. package/Audio/audioEngine.js +5 -5
  28. package/Audio/audioEngine.js.map +1 -1
  29. package/Audio/audioSceneComponent.js +9 -9
  30. package/Audio/index.js +8 -8
  31. package/Audio/sound.js +7 -7
  32. package/Audio/sound.js.map +1 -1
  33. package/Audio/soundTrack.js +1 -1
  34. package/Audio/weightedsound.js +1 -1
  35. package/Behaviors/Cameras/autoRotationBehavior.js +2 -2
  36. package/Behaviors/Cameras/bouncingBehavior.js +2 -2
  37. package/Behaviors/Cameras/framingBehavior.js +5 -5
  38. package/Behaviors/Cameras/index.js +3 -3
  39. package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
  40. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +9 -1
  41. package/Behaviors/Meshes/baseSixDofDragBehavior.js +119 -62
  42. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  43. package/Behaviors/Meshes/followBehavior.js +3 -3
  44. package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
  45. package/Behaviors/Meshes/index.js +9 -9
  46. package/Behaviors/Meshes/multiPointerScaleBehavior.js +2 -2
  47. package/Behaviors/Meshes/pointerDragBehavior.js +10 -9
  48. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  49. package/Behaviors/Meshes/sixDofDragBehavior.d.ts +4 -0
  50. package/Behaviors/Meshes/sixDofDragBehavior.js +24 -13
  51. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  52. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +2 -2
  53. package/Behaviors/index.js +3 -3
  54. package/Bones/bone.js +4 -4
  55. package/Bones/boneIKController.js +2 -2
  56. package/Bones/boneLookController.js +3 -3
  57. package/Bones/index.js +4 -4
  58. package/Bones/skeleton.js +9 -9
  59. package/Buffers/buffer.js +2 -5
  60. package/Buffers/buffer.js.map +1 -1
  61. package/Buffers/index.js +3 -3
  62. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +5 -5
  63. package/Cameras/Inputs/BaseCameraPointersInput.js +3 -3
  64. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +3 -3
  65. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +4 -4
  66. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +9 -9
  67. package/Cameras/Inputs/arcRotateCameraPointersInput.js +3 -3
  68. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +3 -3
  69. package/Cameras/Inputs/flyCameraKeyboardInput.js +5 -5
  70. package/Cameras/Inputs/flyCameraMouseInput.js +6 -6
  71. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +4 -4
  72. package/Cameras/Inputs/followCameraMouseWheelInput.js +4 -4
  73. package/Cameras/Inputs/followCameraPointersInput.js +3 -3
  74. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +5 -5
  75. package/Cameras/Inputs/freeCameraGamepadInput.js +4 -4
  76. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +5 -5
  77. package/Cameras/Inputs/freeCameraMouseInput.js +5 -5
  78. package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -5
  79. package/Cameras/Inputs/freeCameraTouchInput.js +5 -5
  80. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +4 -4
  81. package/Cameras/Inputs/index.js +19 -19
  82. package/Cameras/RigModes/index.js +4 -4
  83. package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
  84. package/Cameras/RigModes/stereoscopicRigMode.js +4 -4
  85. package/Cameras/RigModes/vrRigMode.js +6 -6
  86. package/Cameras/RigModes/webVRRigMode.js +2 -2
  87. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +5 -5
  88. package/Cameras/Stereoscopic/anaglyphFreeCamera.js +5 -5
  89. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +5 -5
  90. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +5 -5
  91. package/Cameras/Stereoscopic/index.js +9 -9
  92. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +5 -5
  93. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +5 -5
  94. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +5 -5
  95. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
  96. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +29 -16
  97. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  98. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +5 -5
  99. package/Cameras/VR/index.js +6 -6
  100. package/Cameras/VR/vrCameraMetrics.js +1 -1
  101. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +7 -7
  102. package/Cameras/VR/vrDeviceOrientationFreeCamera.js +6 -6
  103. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +6 -6
  104. package/Cameras/VR/vrExperienceHelper.d.ts +0 -3
  105. package/Cameras/VR/vrExperienceHelper.js +52 -39
  106. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  107. package/Cameras/VR/webVRCamera.js +13 -13
  108. package/Cameras/arcRotateCamera.d.ts +10 -0
  109. package/Cameras/arcRotateCamera.js +40 -13
  110. package/Cameras/arcRotateCamera.js.map +1 -1
  111. package/Cameras/arcRotateCameraInputsManager.js +4 -4
  112. package/Cameras/camera.js +15 -15
  113. package/Cameras/camera.js.map +1 -1
  114. package/Cameras/cameraInputsManager.js +3 -3
  115. package/Cameras/deviceOrientationCamera.js +5 -5
  116. package/Cameras/flyCamera.js +6 -6
  117. package/Cameras/flyCameraInputsManager.js +3 -3
  118. package/Cameras/followCamera.js +6 -6
  119. package/Cameras/followCameraInputsManager.js +4 -4
  120. package/Cameras/freeCamera.js +6 -6
  121. package/Cameras/freeCameraInputsManager.js +5 -5
  122. package/Cameras/gamepadCamera.js +3 -3
  123. package/Cameras/index.js +20 -20
  124. package/Cameras/targetCamera.js +5 -5
  125. package/Cameras/touchCamera.js +3 -3
  126. package/Cameras/universalCamera.js +5 -5
  127. package/Cameras/virtualJoysticksCamera.js +4 -4
  128. package/Collisions/collider.js +2 -2
  129. package/Collisions/collisionCoordinator.js +4 -4
  130. package/Collisions/index.js +5 -5
  131. package/Collisions/meshCollisionData.js +1 -1
  132. package/Collisions/pickingInfo.d.ts +12 -2
  133. package/Collisions/pickingInfo.js +13 -4
  134. package/Collisions/pickingInfo.js.map +1 -1
  135. package/Compute/computeEffect.js +8 -8
  136. package/Compute/computeEffect.js.map +1 -1
  137. package/Compute/computeShader.js +8 -8
  138. package/Compute/computeShader.js.map +1 -1
  139. package/Compute/index.js +2 -2
  140. package/Culling/Octrees/index.js +3 -3
  141. package/Culling/Octrees/octree.js +2 -2
  142. package/Culling/Octrees/octreeBlock.js +2 -2
  143. package/Culling/Octrees/octreeSceneComponent.js +6 -6
  144. package/Culling/boundingBox.js +3 -3
  145. package/Culling/boundingInfo.js +4 -4
  146. package/Culling/boundingSphere.js +2 -2
  147. package/Culling/index.js +5 -5
  148. package/Culling/ray.js +6 -6
  149. package/Debug/axesViewer.js +4 -4
  150. package/Debug/boneAxesViewer.js +3 -3
  151. package/Debug/debugLayer.js +4 -4
  152. package/Debug/directionalLightFrustumViewer.js +19 -19
  153. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  154. package/Debug/index.js +8 -8
  155. package/Debug/physicsViewer.js +15 -15
  156. package/Debug/physicsViewer.js.map +1 -1
  157. package/Debug/rayHelper.js +5 -5
  158. package/Debug/rayHelper.js.map +1 -1
  159. package/Debug/skeletonViewer.js +17 -17
  160. package/Debug/skeletonViewer.js.map +1 -1
  161. package/DeviceInput/Helpers/eventFactory.js +2 -2
  162. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +3 -3
  163. package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -5
  164. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  165. package/DeviceInput/InputDevices/deviceSourceManager.js +3 -3
  166. package/DeviceInput/deviceInputSystem.js +2 -2
  167. package/DeviceInput/index.js +8 -8
  168. package/Engines/Extensions/engine.alpha.js +1 -1
  169. package/Engines/Extensions/engine.computeShader.js +1 -1
  170. package/Engines/Extensions/engine.cubeTexture.js +7 -7
  171. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  172. package/Engines/Extensions/engine.debugging.js +1 -1
  173. package/Engines/Extensions/engine.dynamicBuffer.js +1 -1
  174. package/Engines/Extensions/engine.dynamicTexture.js +2 -2
  175. package/Engines/Extensions/engine.externalTexture.js +1 -1
  176. package/Engines/Extensions/engine.multiRender.js +3 -3
  177. package/Engines/Extensions/engine.multiview.js +8 -8
  178. package/Engines/Extensions/engine.query.js +4 -4
  179. package/Engines/Extensions/engine.rawTexture.js +4 -4
  180. package/Engines/Extensions/engine.readTexture.js +1 -1
  181. package/Engines/Extensions/engine.renderTarget.js +5 -5
  182. package/Engines/Extensions/engine.renderTargetCube.js +3 -3
  183. package/Engines/Extensions/engine.storageBuffer.js +1 -1
  184. package/Engines/Extensions/engine.textureSampler.js +1 -1
  185. package/Engines/Extensions/engine.textureSelector.js +1 -1
  186. package/Engines/Extensions/engine.transformFeedback.js +1 -1
  187. package/Engines/Extensions/engine.uniformBuffer.js +2 -2
  188. package/Engines/Extensions/engine.videoTexture.js +1 -1
  189. package/Engines/Extensions/engine.views.js +1 -1
  190. package/Engines/Extensions/engine.webVR.js +7 -7
  191. package/Engines/Extensions/engine.webVR.js.map +1 -1
  192. package/Engines/Extensions/index.js +23 -23
  193. package/Engines/Processors/Expressions/Operators/index.js +4 -4
  194. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js +1 -1
  195. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +1 -1
  196. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js +1 -1
  197. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js +1 -1
  198. package/Engines/Processors/Expressions/index.js +2 -2
  199. package/Engines/Processors/index.js +9 -9
  200. package/Engines/Processors/shaderCodeConditionNode.js +1 -1
  201. package/Engines/Processors/shaderCodeInliner.js +13 -13
  202. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  203. package/Engines/Processors/shaderCodeNode.js +4 -4
  204. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  205. package/Engines/Processors/shaderCodeTestNode.js +1 -1
  206. package/Engines/Processors/shaderProcessor.js +12 -12
  207. package/Engines/Processors/shaderProcessor.js.map +1 -1
  208. package/Engines/WebGL/webGL2ShaderProcessors.js +1 -1
  209. package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
  210. package/Engines/WebGL/webGLShaderProcessors.js +1 -1
  211. package/Engines/WebGPU/Extensions/engine.alpha.js +2 -2
  212. package/Engines/WebGPU/Extensions/engine.computeShader.js +4 -4
  213. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
  214. package/Engines/WebGPU/Extensions/engine.debugging.js +1 -1
  215. package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js +1 -1
  216. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +1 -1
  217. package/Engines/WebGPU/Extensions/engine.externalTexture.js +3 -3
  218. package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -3
  219. package/Engines/WebGPU/Extensions/engine.query.js +1 -1
  220. package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
  221. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -1
  222. package/Engines/WebGPU/Extensions/engine.renderTarget.js +4 -4
  223. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
  224. package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -3
  225. package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -2
  226. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +2 -2
  227. package/Engines/WebGPU/Extensions/engine.videoTexture.js +1 -1
  228. package/Engines/WebGPU/Extensions/index.js +17 -17
  229. package/Engines/WebGPU/webgpuBufferManager.js +5 -5
  230. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  231. package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -1
  232. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -3
  233. package/Engines/WebGPU/webgpuCacheRenderPipelineString.js +1 -1
  234. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +1 -1
  235. package/Engines/WebGPU/webgpuCacheSampler.js +2 -2
  236. package/Engines/WebGPU/webgpuClearQuad.js +4 -4
  237. package/Engines/WebGPU/webgpuComputeContext.js +3 -3
  238. package/Engines/WebGPU/webgpuDepthCullingState.js +1 -1
  239. package/Engines/WebGPU/webgpuExternalTexture.js +1 -1
  240. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -3
  241. package/Engines/WebGPU/webgpuMaterialContext.js +2 -2
  242. package/Engines/WebGPU/webgpuOcclusionQuery.js +2 -2
  243. package/Engines/WebGPU/webgpuPipelineContext.js +2 -2
  244. package/Engines/WebGPU/webgpuQuerySet.js +1 -1
  245. package/Engines/WebGPU/webgpuShaderProcessor.js +2 -2
  246. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +5 -5
  247. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +17 -17
  248. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  249. package/Engines/WebGPU/webgpuStencilStateComposer.js +1 -1
  250. package/Engines/WebGPU/webgpuTextureHelper.js +5 -5
  251. package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
  252. package/Engines/WebGPU/webgpuTintWASM.js +3 -3
  253. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  254. package/Engines/engine.js +21 -20
  255. package/Engines/engine.js.map +1 -1
  256. package/Engines/engineFactory.js +3 -3
  257. package/Engines/index.js +30 -30
  258. package/Engines/nativeEngine.d.ts +4 -12
  259. package/Engines/nativeEngine.js +32 -42
  260. package/Engines/nativeEngine.js.map +1 -1
  261. package/Engines/nullEngine.d.ts +25 -0
  262. package/Engines/nullEngine.js +62 -8
  263. package/Engines/nullEngine.js.map +1 -1
  264. package/Engines/renderTargetWrapper.js +2 -2
  265. package/Engines/shaderStore.js +1 -1
  266. package/Engines/thinEngine.js +40 -37
  267. package/Engines/thinEngine.js.map +1 -1
  268. package/Engines/webgpuEngine.js +37 -37
  269. package/Engines/webgpuEngine.js.map +1 -1
  270. package/Events/index.js +4 -4
  271. package/Events/pointerEvents.js +1 -1
  272. package/Gamepads/Controllers/daydreamController.js +4 -4
  273. package/Gamepads/Controllers/gearVRController.js +5 -5
  274. package/Gamepads/Controllers/genericController.js +3 -3
  275. package/Gamepads/Controllers/index.js +8 -8
  276. package/Gamepads/Controllers/oculusTouchController.js +5 -5
  277. package/Gamepads/Controllers/poseEnabledController.js +5 -5
  278. package/Gamepads/Controllers/viveController.js +3 -3
  279. package/Gamepads/Controllers/webVRController.js +2 -2
  280. package/Gamepads/Controllers/windowsMotionController.js +9 -9
  281. package/Gamepads/dualShockGamepad.js +2 -2
  282. package/Gamepads/gamepad.js +1 -1
  283. package/Gamepads/gamepadManager.js +9 -9
  284. package/Gamepads/gamepadManager.js.map +1 -1
  285. package/Gamepads/gamepadSceneComponent.js +7 -7
  286. package/Gamepads/index.js +6 -6
  287. package/Gamepads/xboxGamepad.js +2 -2
  288. package/Gizmos/axisDragGizmo.js +36 -22
  289. package/Gizmos/axisDragGizmo.js.map +1 -1
  290. package/Gizmos/axisScaleGizmo.js +12 -12
  291. package/Gizmos/axisScaleGizmo.js.map +1 -1
  292. package/Gizmos/boundingBoxGizmo.js +31 -32
  293. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  294. package/Gizmos/cameraGizmo.js +19 -19
  295. package/Gizmos/cameraGizmo.js.map +1 -1
  296. package/Gizmos/gizmo.js +5 -5
  297. package/Gizmos/gizmoManager.js +11 -11
  298. package/Gizmos/index.js +12 -12
  299. package/Gizmos/lightGizmo.js +45 -23
  300. package/Gizmos/lightGizmo.js.map +1 -1
  301. package/Gizmos/planeDragGizmo.js +10 -10
  302. package/Gizmos/planeDragGizmo.js.map +1 -1
  303. package/Gizmos/planeRotationGizmo.js +24 -14
  304. package/Gizmos/planeRotationGizmo.js.map +1 -1
  305. package/Gizmos/positionGizmo.js +8 -8
  306. package/Gizmos/rotationGizmo.js +7 -7
  307. package/Gizmos/scaleGizmo.js +11 -11
  308. package/Gizmos/scaleGizmo.js.map +1 -1
  309. package/Helpers/environmentHelper.js +17 -15
  310. package/Helpers/environmentHelper.js.map +1 -1
  311. package/Helpers/index.js +4 -4
  312. package/Helpers/photoDome.js +2 -2
  313. package/Helpers/sceneHelpers.js +18 -18
  314. package/Helpers/sceneHelpers.js.map +1 -1
  315. package/Helpers/textureDome.js +11 -11
  316. package/Helpers/textureDome.js.map +1 -1
  317. package/Helpers/videoDome.js +3 -3
  318. package/Inputs/scene.inputManager.js +8 -8
  319. package/Inputs/scene.inputManager.js.map +1 -1
  320. package/Instrumentation/engineInstrumentation.js +1 -1
  321. package/Instrumentation/index.js +3 -3
  322. package/Instrumentation/sceneInstrumentation.js +2 -2
  323. package/Layers/effectLayer.js +17 -17
  324. package/Layers/effectLayer.js.map +1 -1
  325. package/Layers/effectLayerSceneComponent.js +4 -4
  326. package/Layers/glowLayer.js +19 -16
  327. package/Layers/glowLayer.js.map +1 -1
  328. package/Layers/highlightLayer.js +20 -20
  329. package/Layers/highlightLayer.js.map +1 -1
  330. package/Layers/index.js +6 -6
  331. package/Layers/layer.js +12 -12
  332. package/Layers/layerSceneComponent.js +1 -1
  333. package/Legacy/legacy.js +3 -3
  334. package/LensFlares/index.js +3 -3
  335. package/LensFlares/lensFlare.js +2 -2
  336. package/LensFlares/lensFlareSystem.js +14 -14
  337. package/LensFlares/lensFlareSystem.js.map +1 -1
  338. package/LensFlares/lensFlareSystemSceneComponent.js +4 -4
  339. package/Lights/Shadows/cascadedShadowGenerator.js +12 -12
  340. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  341. package/Lights/Shadows/index.js +3 -3
  342. package/Lights/Shadows/shadowGenerator.js +19 -19
  343. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  344. package/Lights/Shadows/shadowGeneratorSceneComponent.js +4 -4
  345. package/Lights/directionalLight.js +5 -5
  346. package/Lights/hemisphericLight.js +5 -5
  347. package/Lights/index.js +7 -7
  348. package/Lights/light.js +8 -8
  349. package/Lights/light.js.map +1 -1
  350. package/Lights/pointLight.js +5 -5
  351. package/Lights/shadowLight.js +4 -4
  352. package/Lights/spotLight.js +6 -6
  353. package/Loading/Plugins/babylonFileLoader.js +30 -30
  354. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  355. package/Loading/Plugins/index.js +1 -1
  356. package/Loading/index.js +4 -4
  357. package/Loading/loadingScreen.js +1 -1
  358. package/Loading/sceneLoader.js +11 -11
  359. package/Loading/sceneLoader.js.map +1 -1
  360. package/Materials/Background/backgroundMaterial.js +17 -17
  361. package/Materials/Background/backgroundMaterial.js.map +1 -1
  362. package/Materials/Background/index.js +1 -1
  363. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +6 -6
  364. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  365. package/Materials/Node/Blocks/Dual/fogBlock.js +9 -9
  366. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  367. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +10 -10
  368. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  369. package/Materials/Node/Blocks/Dual/index.js +7 -7
  370. package/Materials/Node/Blocks/Dual/lightBlock.js +17 -17
  371. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  372. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +10 -10
  373. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  374. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +7 -7
  375. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  376. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +6 -6
  377. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  378. package/Materials/Node/Blocks/Dual/textureBlock.js +14 -14
  379. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  380. package/Materials/Node/Blocks/Fragment/derivativeBlock.js +5 -5
  381. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  382. package/Materials/Node/Blocks/Fragment/discardBlock.js +5 -5
  383. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  384. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +5 -5
  385. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  386. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +6 -6
  387. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  388. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +5 -5
  389. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  390. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +9 -9
  391. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  392. package/Materials/Node/Blocks/Fragment/index.js +8 -8
  393. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +10 -10
  394. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  395. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +5 -5
  396. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  397. package/Materials/Node/Blocks/Input/index.js +2 -2
  398. package/Materials/Node/Blocks/Input/inputBlock.js +12 -12
  399. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  400. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +7 -7
  401. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  402. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +10 -10
  403. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  404. package/Materials/Node/Blocks/PBR/index.js +7 -7
  405. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +21 -21
  406. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  407. package/Materials/Node/Blocks/PBR/reflectionBlock.js +10 -10
  408. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  409. package/Materials/Node/Blocks/PBR/refractionBlock.js +13 -13
  410. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  411. package/Materials/Node/Blocks/PBR/sheenBlock.js +8 -8
  412. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  413. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +9 -9
  414. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  415. package/Materials/Node/Blocks/Particle/index.js +3 -3
  416. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +5 -5
  417. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  418. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +5 -5
  419. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  420. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
  421. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  422. package/Materials/Node/Blocks/Vertex/bonesBlock.js +10 -10
  423. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  424. package/Materials/Node/Blocks/Vertex/index.js +5 -5
  425. package/Materials/Node/Blocks/Vertex/instancesBlock.js +7 -7
  426. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  427. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +6 -6
  428. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  429. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +10 -10
  430. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  431. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +5 -5
  432. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  433. package/Materials/Node/Blocks/addBlock.js +5 -5
  434. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  435. package/Materials/Node/Blocks/arcTan2Block.js +5 -5
  436. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  437. package/Materials/Node/Blocks/clampBlock.js +6 -6
  438. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  439. package/Materials/Node/Blocks/colorMergerBlock.js +5 -5
  440. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  441. package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
  442. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  443. package/Materials/Node/Blocks/conditionalBlock.js +5 -5
  444. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  445. package/Materials/Node/Blocks/crossBlock.js +5 -5
  446. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  447. package/Materials/Node/Blocks/desaturateBlock.js +5 -5
  448. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  449. package/Materials/Node/Blocks/distanceBlock.js +5 -5
  450. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  451. package/Materials/Node/Blocks/divideBlock.js +5 -5
  452. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  453. package/Materials/Node/Blocks/dotBlock.js +5 -5
  454. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  455. package/Materials/Node/Blocks/fresnelBlock.js +8 -8
  456. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  457. package/Materials/Node/Blocks/gradientBlock.js +7 -7
  458. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  459. package/Materials/Node/Blocks/index.js +52 -52
  460. package/Materials/Node/Blocks/lengthBlock.js +5 -5
  461. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  462. package/Materials/Node/Blocks/lerpBlock.js +5 -5
  463. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  464. package/Materials/Node/Blocks/matrixBuilderBlock.js +7 -7
  465. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  466. package/Materials/Node/Blocks/maxBlock.js +5 -5
  467. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  468. package/Materials/Node/Blocks/minBlock.js +5 -5
  469. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  470. package/Materials/Node/Blocks/modBlock.js +5 -5
  471. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  472. package/Materials/Node/Blocks/multiplyBlock.js +5 -5
  473. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  474. package/Materials/Node/Blocks/nLerpBlock.js +5 -5
  475. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  476. package/Materials/Node/Blocks/negateBlock.js +5 -5
  477. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  478. package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
  479. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  480. package/Materials/Node/Blocks/normalizeBlock.js +5 -5
  481. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  482. package/Materials/Node/Blocks/oneMinusBlock.js +6 -6
  483. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  484. package/Materials/Node/Blocks/posterizeBlock.js +5 -5
  485. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  486. package/Materials/Node/Blocks/powBlock.js +5 -5
  487. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  488. package/Materials/Node/Blocks/randomNumberBlock.js +6 -6
  489. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  490. package/Materials/Node/Blocks/reciprocalBlock.js +5 -5
  491. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  492. package/Materials/Node/Blocks/reflectBlock.js +5 -5
  493. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  494. package/Materials/Node/Blocks/refractBlock.js +5 -5
  495. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  496. package/Materials/Node/Blocks/remapBlock.js +7 -7
  497. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  498. package/Materials/Node/Blocks/replaceColorBlock.js +5 -5
  499. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  500. package/Materials/Node/Blocks/rotate2dBlock.js +6 -6
  501. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  502. package/Materials/Node/Blocks/scaleBlock.js +5 -5
  503. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  504. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +5 -5
  505. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  506. package/Materials/Node/Blocks/smoothStepBlock.js +5 -5
  507. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  508. package/Materials/Node/Blocks/stepBlock.js +5 -5
  509. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  510. package/Materials/Node/Blocks/subtractBlock.js +5 -5
  511. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  512. package/Materials/Node/Blocks/transformBlock.js +5 -5
  513. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  514. package/Materials/Node/Blocks/trigonometryBlock.js +5 -5
  515. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  516. package/Materials/Node/Blocks/vectorMergerBlock.js +5 -5
  517. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  518. package/Materials/Node/Blocks/vectorSplitterBlock.js +5 -5
  519. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  520. package/Materials/Node/Blocks/viewDirectionBlock.js +7 -7
  521. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  522. package/Materials/Node/Blocks/waveBlock.js +5 -5
  523. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  524. package/Materials/Node/Blocks/worleyNoise3DBlock.js +6 -6
  525. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  526. package/Materials/Node/Enums/index.js +5 -5
  527. package/Materials/Node/Optimizers/index.js +1 -1
  528. package/Materials/Node/index.js +7 -7
  529. package/Materials/Node/nodeMaterial.js +40 -40
  530. package/Materials/Node/nodeMaterial.js.map +1 -1
  531. package/Materials/Node/nodeMaterialBlock.js +6 -6
  532. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  533. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +3 -3
  534. package/Materials/Node/nodeMaterialBuildState.js +6 -6
  535. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  536. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +1 -1
  537. package/Materials/Occlusion/index.js +1 -1
  538. package/Materials/Occlusion/occlusionMaterial.js +4 -4
  539. package/Materials/PBR/index.js +5 -5
  540. package/Materials/PBR/pbrAnisotropicConfiguration.js +11 -5
  541. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  542. package/Materials/PBR/pbrBRDFConfiguration.js +1 -1
  543. package/Materials/PBR/pbrBaseMaterial.js +28 -28
  544. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  545. package/Materials/PBR/pbrBaseSimpleMaterial.js +3 -3
  546. package/Materials/PBR/pbrClearCoatConfiguration.js +10 -4
  547. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  548. package/Materials/PBR/pbrMaterial.js +7 -7
  549. package/Materials/PBR/pbrMaterial.js.map +1 -1
  550. package/Materials/PBR/pbrMetallicRoughnessMaterial.js +4 -4
  551. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  552. package/Materials/PBR/pbrSheenConfiguration.js +10 -4
  553. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  554. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +4 -4
  555. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  556. package/Materials/PBR/pbrSubSurfaceConfiguration.js +19 -6
  557. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  558. package/Materials/Textures/Filtering/hdrFiltering.js +6 -6
  559. package/Materials/Textures/Loaders/basisTextureLoader.js +9 -9
  560. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  561. package/Materials/Textures/Loaders/ddsTextureLoader.js +5 -5
  562. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  563. package/Materials/Textures/Loaders/envTextureLoader.js +7 -7
  564. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  565. package/Materials/Textures/Loaders/hdrTextureLoader.js +4 -4
  566. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  567. package/Materials/Textures/Loaders/index.js +6 -6
  568. package/Materials/Textures/Loaders/ktxTextureLoader.js +6 -6
  569. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  570. package/Materials/Textures/Loaders/tgaTextureLoader.js +6 -6
  571. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  572. package/Materials/Textures/MultiviewRenderTarget.js +1 -1
  573. package/Materials/Textures/Packer/index.js +2 -2
  574. package/Materials/Textures/Packer/packer.js +9 -9
  575. package/Materials/Textures/Procedurals/customProceduralTexture.js +6 -6
  576. package/Materials/Textures/Procedurals/index.js +4 -4
  577. package/Materials/Textures/Procedurals/noiseProceduralTexture.js +5 -5
  578. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  579. package/Materials/Textures/Procedurals/proceduralTexture.js +15 -15
  580. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  581. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +2 -2
  582. package/Materials/Textures/baseTexture.js +8 -8
  583. package/Materials/Textures/baseTexture.js.map +1 -1
  584. package/Materials/Textures/baseTexture.polynomial.js +2 -2
  585. package/Materials/Textures/colorGradingTexture.js +5 -5
  586. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  587. package/Materials/Textures/cubeTexture.js +12 -12
  588. package/Materials/Textures/cubeTexture.js.map +1 -1
  589. package/Materials/Textures/dynamicTexture.js +3 -3
  590. package/Materials/Textures/equiRectangularCubeTexture.js +10 -12
  591. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  592. package/Materials/Textures/externalTexture.js +1 -1
  593. package/Materials/Textures/hdrCubeTexture.js +16 -16
  594. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  595. package/Materials/Textures/htmlElementTexture.js +4 -4
  596. package/Materials/Textures/index.js +27 -27
  597. package/Materials/Textures/internalTexture.d.ts +15 -2
  598. package/Materials/Textures/internalTexture.js +29 -13
  599. package/Materials/Textures/internalTexture.js.map +1 -1
  600. package/Materials/Textures/mirrorTexture.js +5 -5
  601. package/Materials/Textures/multiRenderTarget.js +3 -3
  602. package/Materials/Textures/prePassRenderTarget.js +2 -2
  603. package/Materials/Textures/rawCubeTexture.d.ts +0 -3
  604. package/Materials/Textures/rawCubeTexture.js +6 -17
  605. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  606. package/Materials/Textures/rawTexture.js +2 -2
  607. package/Materials/Textures/rawTexture2DArray.js +2 -2
  608. package/Materials/Textures/rawTexture3D.js +2 -2
  609. package/Materials/Textures/refractionTexture.js +2 -2
  610. package/Materials/Textures/renderTargetTexture.js +9 -9
  611. package/Materials/Textures/texture.js +30 -25
  612. package/Materials/Textures/texture.js.map +1 -1
  613. package/Materials/Textures/thinTexture.js +1 -1
  614. package/Materials/Textures/videoTexture.js +6 -6
  615. package/Materials/colorCurves.js +2 -2
  616. package/Materials/effect.js +8 -8
  617. package/Materials/effect.js.map +1 -1
  618. package/Materials/effectRenderer.js +6 -6
  619. package/Materials/fresnelParameters.js +4 -4
  620. package/Materials/imageProcessingConfiguration.js +6 -6
  621. package/Materials/index.js +25 -25
  622. package/Materials/material.detailMapConfiguration.js +7 -4
  623. package/Materials/material.detailMapConfiguration.js.map +1 -1
  624. package/Materials/material.js +11 -11
  625. package/Materials/materialFlags.js +1 -1
  626. package/Materials/materialHelper.js +7 -7
  627. package/Materials/materialStencilState.js +1 -1
  628. package/Materials/multiMaterial.js +4 -4
  629. package/Materials/multiMaterial.js.map +1 -1
  630. package/Materials/prePassConfiguration.d.ts +1 -0
  631. package/Materials/prePassConfiguration.js +8 -2
  632. package/Materials/prePassConfiguration.js.map +1 -1
  633. package/Materials/pushMaterial.js +2 -2
  634. package/Materials/shaderMaterial.d.ts +0 -2
  635. package/Materials/shaderMaterial.js +12 -30
  636. package/Materials/shaderMaterial.js.map +1 -1
  637. package/Materials/shadowDepthWrapper.js +6 -5
  638. package/Materials/shadowDepthWrapper.js.map +1 -1
  639. package/Materials/standardMaterial.js +20 -20
  640. package/Materials/standardMaterial.js.map +1 -1
  641. package/Materials/uniformBuffer.js +3 -3
  642. package/Maths/index.js +4 -4
  643. package/Maths/math.axis.js +1 -1
  644. package/Maths/math.color.js +6 -6
  645. package/Maths/math.color.js.map +1 -1
  646. package/Maths/math.frustum.js +1 -1
  647. package/Maths/math.functions.js +2 -2
  648. package/Maths/math.isovector.js +2 -2
  649. package/Maths/math.js +10 -10
  650. package/Maths/math.path.js +3 -3
  651. package/Maths/math.plane.js +1 -1
  652. package/Maths/math.vector.js +9 -9
  653. package/Maths/math.vector.js.map +1 -1
  654. package/Maths/math.vertexFormat.js +1 -1
  655. package/Maths/sphericalPolynomial.js +2 -2
  656. package/Meshes/Builders/boxBuilder.d.ts +63 -32
  657. package/Meshes/Builders/boxBuilder.js +53 -39
  658. package/Meshes/Builders/boxBuilder.js.map +1 -1
  659. package/Meshes/Builders/capsuleBuilder.d.ts +20 -10
  660. package/Meshes/Builders/capsuleBuilder.js +36 -37
  661. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  662. package/Meshes/Builders/cylinderBuilder.d.ts +87 -48
  663. package/Meshes/Builders/cylinderBuilder.js +71 -53
  664. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  665. package/Meshes/Builders/decalBuilder.d.ts +26 -24
  666. package/Meshes/Builders/decalBuilder.js +211 -213
  667. package/Meshes/Builders/decalBuilder.js.map +1 -1
  668. package/Meshes/Builders/discBuilder.d.ts +27 -25
  669. package/Meshes/Builders/discBuilder.js +46 -36
  670. package/Meshes/Builders/discBuilder.js.map +1 -1
  671. package/Meshes/Builders/geodesicBuilder.d.ts +34 -39
  672. package/Meshes/Builders/geodesicBuilder.js +58 -67
  673. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  674. package/Meshes/Builders/goldbergBuilder.d.ts +56 -29
  675. package/Meshes/Builders/goldbergBuilder.js +97 -84
  676. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  677. package/Meshes/Builders/groundBuilder.d.ts +151 -79
  678. package/Meshes/Builders/groundBuilder.js +174 -137
  679. package/Meshes/Builders/groundBuilder.js.map +1 -1
  680. package/Meshes/Builders/hemisphereBuilder.d.ts +16 -14
  681. package/Meshes/Builders/hemisphereBuilder.js +33 -34
  682. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  683. package/Meshes/Builders/icoSphereBuilder.d.ts +57 -29
  684. package/Meshes/Builders/icoSphereBuilder.js +51 -38
  685. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  686. package/Meshes/Builders/index.js +23 -23
  687. package/Meshes/Builders/latheBuilder.d.ts +38 -36
  688. package/Meshes/Builders/latheBuilder.js +70 -72
  689. package/Meshes/Builders/latheBuilder.js.map +1 -1
  690. package/Meshes/Builders/linesBuilder.d.ts +113 -82
  691. package/Meshes/Builders/linesBuilder.js +202 -184
  692. package/Meshes/Builders/linesBuilder.js.map +1 -1
  693. package/Meshes/Builders/planeBuilder.d.ts +48 -26
  694. package/Meshes/Builders/planeBuilder.js +50 -40
  695. package/Meshes/Builders/planeBuilder.js.map +1 -1
  696. package/Meshes/Builders/polygonBuilder.d.ts +68 -51
  697. package/Meshes/Builders/polygonBuilder.js +91 -79
  698. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  699. package/Meshes/Builders/polyhedronBuilder.d.ts +73 -36
  700. package/Meshes/Builders/polyhedronBuilder.js +63 -43
  701. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  702. package/Meshes/Builders/ribbonBuilder.d.ts +69 -39
  703. package/Meshes/Builders/ribbonBuilder.js +166 -152
  704. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  705. package/Meshes/Builders/shapeBuilder.d.ts +83 -81
  706. package/Meshes/Builders/shapeBuilder.js +185 -186
  707. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  708. package/Meshes/Builders/sphereBuilder.d.ts +62 -31
  709. package/Meshes/Builders/sphereBuilder.js +53 -39
  710. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  711. package/Meshes/Builders/tiledBoxBuilder.d.ts +56 -29
  712. package/Meshes/Builders/tiledBoxBuilder.js +45 -36
  713. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  714. package/Meshes/Builders/tiledPlaneBuilder.d.ts +67 -38
  715. package/Meshes/Builders/tiledPlaneBuilder.js +51 -40
  716. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  717. package/Meshes/Builders/torusBuilder.d.ts +47 -25
  718. package/Meshes/Builders/torusBuilder.js +46 -36
  719. package/Meshes/Builders/torusBuilder.js.map +1 -1
  720. package/Meshes/Builders/torusKnotBuilder.d.ts +57 -29
  721. package/Meshes/Builders/torusKnotBuilder.js +51 -37
  722. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  723. package/Meshes/Builders/tubeBuilder.d.ts +42 -40
  724. package/Meshes/Builders/tubeBuilder.js +140 -142
  725. package/Meshes/Builders/tubeBuilder.js.map +1 -1
  726. package/Meshes/Compression/dracoCompression.js +3 -3
  727. package/Meshes/Compression/index.js +2 -2
  728. package/Meshes/Compression/meshoptCompression.js +1 -1
  729. package/Meshes/WebGL/webGLDataBuffer.js +1 -1
  730. package/Meshes/WebGPU/webgpuDataBuffer.js +1 -1
  731. package/Meshes/abstractMesh.js +20 -20
  732. package/Meshes/abstractMesh.js.map +1 -1
  733. package/Meshes/csg.js +5 -5
  734. package/Meshes/geodesicMesh.js +4 -4
  735. package/Meshes/geometry.js +13 -17
  736. package/Meshes/geometry.js.map +1 -1
  737. package/Meshes/groundMesh.js +3 -3
  738. package/Meshes/index.d.ts +1 -0
  739. package/Meshes/index.js +25 -24
  740. package/Meshes/index.js.map +1 -1
  741. package/Meshes/instancedMesh.js +8 -8
  742. package/Meshes/linesMesh.js +9 -9
  743. package/Meshes/mesh.d.ts +2 -383
  744. package/Meshes/mesh.js +32 -439
  745. package/Meshes/mesh.js.map +1 -1
  746. package/Meshes/mesh.lts.d.ts +417 -0
  747. package/Meshes/mesh.lts.js +25 -0
  748. package/Meshes/mesh.lts.js.map +1 -0
  749. package/Meshes/mesh.vertexData.d.ts +21 -64
  750. package/Meshes/mesh.vertexData.js +46 -71
  751. package/Meshes/mesh.vertexData.js.map +1 -1
  752. package/Meshes/meshBuilder.d.ts +52 -799
  753. package/Meshes/meshBuilder.js +52 -609
  754. package/Meshes/meshBuilder.js.map +1 -1
  755. package/Meshes/meshSimplification.js +6 -6
  756. package/Meshes/meshSimplificationSceneComponent.js +4 -4
  757. package/Meshes/polygonMesh.js +8 -8
  758. package/Meshes/subMesh.js +5 -5
  759. package/Meshes/subMesh.project.js +2 -2
  760. package/Meshes/thinInstanceMesh.js +3 -3
  761. package/Meshes/trailMesh.js +5 -5
  762. package/Meshes/transformNode.js +5 -5
  763. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +5 -5
  764. package/Misc/HighDynamicRange/hdr.js +1 -1
  765. package/Misc/HighDynamicRange/index.js +3 -3
  766. package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
  767. package/Misc/PerformanceViewer/index.js +4 -4
  768. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +2 -2
  769. package/Misc/PerformanceViewer/performanceViewerCollector.js +4 -4
  770. package/Misc/PerformanceViewer/performanceViewerSceneExtension.js +2 -2
  771. package/Misc/assetsManager.js +8 -8
  772. package/Misc/basis.d.ts +40 -12
  773. package/Misc/basis.js +172 -145
  774. package/Misc/basis.js.map +1 -1
  775. package/Misc/brdfTextureTools.d.ts +9 -8
  776. package/Misc/brdfTextureTools.js +49 -50
  777. package/Misc/brdfTextureTools.js.map +1 -1
  778. package/Misc/codeStringParsingTools.d.ts +40 -45
  779. package/Misc/codeStringParsingTools.js +154 -163
  780. package/Misc/codeStringParsingTools.js.map +1 -1
  781. package/Misc/computePressure.js +2 -2
  782. package/Misc/computePressure.js.map +1 -1
  783. package/Misc/copyTools.d.ts +30 -5
  784. package/Misc/copyTools.js +108 -87
  785. package/Misc/copyTools.js.map +1 -1
  786. package/Misc/dataReader.js +2 -2
  787. package/Misc/dataReader.js.map +1 -1
  788. package/Misc/dds.js +23 -23
  789. package/Misc/dds.js.map +1 -1
  790. package/Misc/decorators.js +8 -8
  791. package/Misc/decorators.js.map +1 -1
  792. package/Misc/deepCopier.js +3 -3
  793. package/Misc/deepCopier.js.map +1 -1
  794. package/Misc/depthReducer.js +2 -2
  795. package/Misc/devTools.d.ts +1 -3
  796. package/Misc/devTools.js +3 -9
  797. package/Misc/devTools.js.map +1 -1
  798. package/Misc/domManagement.d.ts +27 -6
  799. package/Misc/domManagement.js +43 -26
  800. package/Misc/domManagement.js.map +1 -1
  801. package/Misc/environmentTextureTools.d.ts +61 -28
  802. package/Misc/environmentTextureTools.js +550 -503
  803. package/Misc/environmentTextureTools.js.map +1 -1
  804. package/Misc/fileTools.d.ts +91 -101
  805. package/Misc/fileTools.js +414 -396
  806. package/Misc/fileTools.js.map +1 -1
  807. package/Misc/fileTools.lts.d.ts +9 -0
  808. package/Misc/fileTools.lts.js +64 -0
  809. package/Misc/fileTools.lts.js.map +1 -0
  810. package/Misc/filesInput.d.ts +1 -1
  811. package/Misc/filesInput.js +4 -4
  812. package/Misc/filesInput.js.map +1 -1
  813. package/Misc/gradients.js +1 -1
  814. package/Misc/guid.d.ts +10 -3
  815. package/Misc/guid.js +15 -12
  816. package/Misc/guid.js.map +1 -1
  817. package/Misc/index.d.ts +1 -0
  818. package/Misc/index.js +61 -60
  819. package/Misc/index.js.map +1 -1
  820. package/Misc/instantiationTools.js +3 -3
  821. package/Misc/instantiationTools.js.map +1 -1
  822. package/Misc/khronosTextureContainer.js +1 -1
  823. package/Misc/khronosTextureContainer2.js +2 -2
  824. package/Misc/meshExploder.js +1 -1
  825. package/Misc/minMaxReducer.js +4 -4
  826. package/Misc/observable.d.ts +7 -0
  827. package/Misc/observable.js +22 -0
  828. package/Misc/observable.js.map +1 -1
  829. package/Misc/observableCoroutine.js +1 -1
  830. package/Misc/perfCounter.js +1 -1
  831. package/Misc/performanceMonitor.js +1 -1
  832. package/Misc/pivotTools.js +1 -1
  833. package/Misc/precisionDate.js +1 -1
  834. package/Misc/reflector.js +4 -4
  835. package/Misc/reflector.js.map +1 -1
  836. package/Misc/rgbdTextureTools.js +5 -5
  837. package/Misc/rgbdTextureTools.js.map +1 -1
  838. package/Misc/sceneOptimizer.js +3 -3
  839. package/Misc/sceneRecorder.js +14 -14
  840. package/Misc/sceneSerializer.js +4 -4
  841. package/Misc/screenshotTools.d.ts +96 -12
  842. package/Misc/screenshotTools.js +302 -207
  843. package/Misc/screenshotTools.js.map +1 -1
  844. package/Misc/stringTools.d.ts +54 -47
  845. package/Misc/stringTools.js +108 -105
  846. package/Misc/stringTools.js.map +1 -1
  847. package/Misc/tags.js +1 -1
  848. package/Misc/textureTools.d.ts +38 -8
  849. package/Misc/textureTools.js +169 -138
  850. package/Misc/textureTools.js.map +1 -1
  851. package/Misc/tga.d.ts +34 -22
  852. package/Misc/tga.js +279 -260
  853. package/Misc/tga.js.map +1 -1
  854. package/Misc/timer.js +1 -1
  855. package/Misc/timingTools.js +2 -2
  856. package/Misc/timingTools.js.map +1 -1
  857. package/Misc/tools.d.ts +5 -5
  858. package/Misc/tools.js +42 -42
  859. package/Misc/tools.js.map +1 -1
  860. package/Misc/trajectoryClassifier.js +1 -1
  861. package/Misc/typeStore.d.ts +3 -8
  862. package/Misc/typeStore.js +9 -15
  863. package/Misc/typeStore.js.map +1 -1
  864. package/Misc/videoRecorder.js +1 -1
  865. package/Misc/virtualJoystick.js +2 -2
  866. package/Morph/index.js +2 -2
  867. package/Morph/morphTarget.js +6 -6
  868. package/Morph/morphTarget.js.map +1 -1
  869. package/Morph/morphTargetManager.d.ts +1 -1
  870. package/Morph/morphTargetManager.js +11 -10
  871. package/Morph/morphTargetManager.js.map +1 -1
  872. package/Navigation/Plugins/index.js +1 -1
  873. package/Navigation/Plugins/recastJSPlugin.js +6 -6
  874. package/Navigation/index.js +2 -2
  875. package/Offline/database.js +6 -6
  876. package/Offline/database.js.map +1 -1
  877. package/Offline/index.js +2 -2
  878. package/Particles/EmitterTypes/boxParticleEmitter.js +3 -3
  879. package/Particles/EmitterTypes/coneParticleEmitter.js +3 -3
  880. package/Particles/EmitterTypes/customParticleEmitter.js +2 -2
  881. package/Particles/EmitterTypes/cylinderParticleEmitter.js +3 -3
  882. package/Particles/EmitterTypes/hemisphericParticleEmitter.js +3 -3
  883. package/Particles/EmitterTypes/index.js +9 -9
  884. package/Particles/EmitterTypes/meshParticleEmitter.js +4 -4
  885. package/Particles/EmitterTypes/pointParticleEmitter.js +3 -3
  886. package/Particles/EmitterTypes/sphereParticleEmitter.js +3 -3
  887. package/Particles/baseParticleSystem.js +5 -5
  888. package/Particles/cloudPoint.js +1 -1
  889. package/Particles/computeShaderParticleSystem.js +7 -7
  890. package/Particles/computeShaderParticleSystem.js.map +1 -1
  891. package/Particles/gpuParticleSystem.js +24 -24
  892. package/Particles/gpuParticleSystem.js.map +1 -1
  893. package/Particles/index.js +17 -17
  894. package/Particles/particle.js +3 -3
  895. package/Particles/particleHelper.js +8 -8
  896. package/Particles/particleSystem.js +26 -26
  897. package/Particles/particleSystem.js.map +1 -1
  898. package/Particles/particleSystemComponent.js +7 -7
  899. package/Particles/particleSystemSet.js +7 -7
  900. package/Particles/particleSystemSet.js.map +1 -1
  901. package/Particles/pointsCloudSystem.js +12 -12
  902. package/Particles/solidParticle.js +5 -5
  903. package/Particles/solidParticleSystem.js +15 -15
  904. package/Particles/solidParticleSystem.js.map +1 -1
  905. package/Particles/subEmitter.d.ts +2 -1
  906. package/Particles/subEmitter.js +10 -8
  907. package/Particles/subEmitter.js.map +1 -1
  908. package/Particles/webgl2ParticleSystem.js +7 -7
  909. package/Particles/webgl2ParticleSystem.js.map +1 -1
  910. package/Physics/Plugins/ammoJSPlugin.js +35 -27
  911. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  912. package/Physics/Plugins/cannonJSPlugin.js +7 -7
  913. package/Physics/Plugins/index.js +3 -3
  914. package/Physics/Plugins/oimoJSPlugin.js +6 -6
  915. package/Physics/index.js +7 -7
  916. package/Physics/physicsEngine.js +3 -3
  917. package/Physics/physicsEngine.js.map +1 -1
  918. package/Physics/physicsEngineComponent.js +7 -7
  919. package/Physics/physicsHelper.js +8 -8
  920. package/Physics/physicsHelper.js.map +1 -1
  921. package/Physics/physicsImpostor.js +7 -7
  922. package/Physics/physicsRaycastResult.js +1 -1
  923. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +18 -18
  924. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  925. package/PostProcesses/RenderPipeline/Pipelines/index.js +5 -5
  926. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +9 -9
  927. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +17 -17
  928. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  929. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +12 -12
  930. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +16 -16
  931. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  932. package/PostProcesses/RenderPipeline/index.js +5 -5
  933. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  934. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +2 -2
  935. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js +3 -3
  936. package/PostProcesses/anaglyphPostProcess.js +4 -4
  937. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  938. package/PostProcesses/blackAndWhitePostProcess.js +5 -5
  939. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  940. package/PostProcesses/bloomEffect.js +6 -6
  941. package/PostProcesses/bloomMergePostProcess.js +5 -5
  942. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  943. package/PostProcesses/blurPostProcess.js +7 -7
  944. package/PostProcesses/blurPostProcess.js.map +1 -1
  945. package/PostProcesses/chromaticAberrationPostProcess.js +6 -6
  946. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  947. package/PostProcesses/circleOfConfusionPostProcess.js +6 -6
  948. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  949. package/PostProcesses/colorCorrectionPostProcess.js +6 -6
  950. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  951. package/PostProcesses/convolutionPostProcess.js +5 -5
  952. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  953. package/PostProcesses/depthOfFieldBlurPostProcess.js +5 -5
  954. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  955. package/PostProcesses/depthOfFieldEffect.js +6 -6
  956. package/PostProcesses/depthOfFieldMergePostProcess.js +2 -2
  957. package/PostProcesses/displayPassPostProcess.js +5 -5
  958. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  959. package/PostProcesses/extractHighlightsPostProcess.js +6 -6
  960. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  961. package/PostProcesses/filterPostProcess.js +5 -5
  962. package/PostProcesses/filterPostProcess.js.map +1 -1
  963. package/PostProcesses/fxaaPostProcess.js +7 -7
  964. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  965. package/PostProcesses/grainPostProcess.js +5 -5
  966. package/PostProcesses/grainPostProcess.js.map +1 -1
  967. package/PostProcesses/highlightsPostProcess.js +2 -2
  968. package/PostProcesses/imageProcessingPostProcess.js +6 -6
  969. package/PostProcesses/index.js +33 -33
  970. package/PostProcesses/motionBlurPostProcess.js +11 -11
  971. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  972. package/PostProcesses/passPostProcess.js +7 -7
  973. package/PostProcesses/passPostProcess.js.map +1 -1
  974. package/PostProcesses/postProcess.js +11 -11
  975. package/PostProcesses/postProcess.js.map +1 -1
  976. package/PostProcesses/postProcessManager.js +1 -1
  977. package/PostProcesses/refractionPostProcess.js +6 -6
  978. package/PostProcesses/refractionPostProcess.js.map +1 -1
  979. package/PostProcesses/screenSpaceCurvaturePostProcess.js +8 -8
  980. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  981. package/PostProcesses/screenSpaceReflectionPostProcess.js +7 -7
  982. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  983. package/PostProcesses/sharpenPostProcess.js +5 -5
  984. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  985. package/PostProcesses/stereoscopicInterlacePostProcess.js +3 -3
  986. package/PostProcesses/subSurfaceScatteringPostProcess.js +6 -6
  987. package/PostProcesses/tonemapPostProcess.js +2 -2
  988. package/PostProcesses/volumetricLightScatteringPostProcess.js +23 -23
  989. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  990. package/PostProcesses/vrDistortionCorrectionPostProcess.js +4 -4
  991. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +4 -4
  992. package/Probes/index.js +1 -1
  993. package/Probes/reflectionProbe.js +4 -4
  994. package/Rendering/boundingBoxRenderer.js +15 -15
  995. package/Rendering/boundingBoxRenderer.js.map +1 -1
  996. package/Rendering/depthRenderer.js +11 -11
  997. package/Rendering/depthRenderer.js.map +1 -1
  998. package/Rendering/depthRendererSceneComponent.js +3 -3
  999. package/Rendering/edgesRenderer.js +11 -11
  1000. package/Rendering/geometryBufferRenderer.js +13 -13
  1001. package/Rendering/geometryBufferRenderer.js.map +1 -1
  1002. package/Rendering/geometryBufferRendererSceneComponent.js +3 -3
  1003. package/Rendering/index.js +13 -13
  1004. package/Rendering/motionBlurConfiguration.js.map +1 -1
  1005. package/Rendering/outlineRenderer.js +8 -8
  1006. package/Rendering/prePassRenderer.js +6 -6
  1007. package/Rendering/prePassRenderer.js.map +1 -1
  1008. package/Rendering/prePassRendererSceneComponent.js +4 -4
  1009. package/Rendering/renderingGroup.js +2 -2
  1010. package/Rendering/renderingManager.js +1 -1
  1011. package/Rendering/screenSpaceReflectionsConfiguration.js.map +1 -1
  1012. package/Rendering/ssao2Configuration.js.map +1 -1
  1013. package/Rendering/subSurfaceConfiguration.js +6 -6
  1014. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  1015. package/Rendering/subSurfaceSceneComponent.js +5 -5
  1016. package/Rendering/utilityLayerRenderer.js +8 -8
  1017. package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +1 -1
  1018. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +2 -2
  1019. package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +1 -1
  1020. package/Shaders/ShadersInclude/bayerDitherFunctions.js +1 -1
  1021. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  1022. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  1023. package/Shaders/ShadersInclude/bumpFragment.js +1 -1
  1024. package/Shaders/ShadersInclude/bumpFragmentFunctions.js +2 -2
  1025. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +1 -1
  1026. package/Shaders/ShadersInclude/bumpVertex.js +1 -1
  1027. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
  1028. package/Shaders/ShadersInclude/clipPlaneFragment.js +1 -1
  1029. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
  1030. package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +1 -1
  1031. package/Shaders/ShadersInclude/clipPlaneVertex.js +1 -1
  1032. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
  1033. package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +1 -1
  1034. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  1035. package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -3
  1036. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  1037. package/Shaders/ShadersInclude/depthPrePass.js +1 -1
  1038. package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
  1039. package/Shaders/ShadersInclude/fibonacci.js +1 -1
  1040. package/Shaders/ShadersInclude/fogFragment.js +2 -2
  1041. package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
  1042. package/Shaders/ShadersInclude/fogFragmentDeclaration.js +1 -1
  1043. package/Shaders/ShadersInclude/fogVertex.js +1 -1
  1044. package/Shaders/ShadersInclude/fogVertexDeclaration.js +1 -1
  1045. package/Shaders/ShadersInclude/fresnelFunction.js +1 -1
  1046. package/Shaders/ShadersInclude/geometryUboDeclaration.js +2 -2
  1047. package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
  1048. package/Shaders/ShadersInclude/harmonicsFunctions.js +1 -1
  1049. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
  1050. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  1051. package/Shaders/ShadersInclude/imageProcessingCompatibility.js +1 -1
  1052. package/Shaders/ShadersInclude/imageProcessingDeclaration.js +1 -1
  1053. package/Shaders/ShadersInclude/imageProcessingFunctions.js +1 -1
  1054. package/Shaders/ShadersInclude/importanceSampling.js +1 -1
  1055. package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
  1056. package/Shaders/ShadersInclude/instancesVertex.js +1 -1
  1057. package/Shaders/ShadersInclude/kernelBlurFragment.js +1 -1
  1058. package/Shaders/ShadersInclude/kernelBlurFragment2.js +1 -1
  1059. package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +1 -1
  1060. package/Shaders/ShadersInclude/kernelBlurVertex.js +1 -1
  1061. package/Shaders/ShadersInclude/lightFragment.js +1 -1
  1062. package/Shaders/ShadersInclude/lightFragmentDeclaration.js +1 -1
  1063. package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
  1064. package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
  1065. package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
  1066. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
  1067. package/Shaders/ShadersInclude/logDepthDeclaration.js +1 -1
  1068. package/Shaders/ShadersInclude/logDepthFragment.js +1 -1
  1069. package/Shaders/ShadersInclude/logDepthVertex.js +1 -1
  1070. package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +1 -1
  1071. package/Shaders/ShadersInclude/meshFragmentDeclaration.js +1 -1
  1072. package/Shaders/ShadersInclude/meshUboDeclaration.js +1 -1
  1073. package/Shaders/ShadersInclude/meshVertexDeclaration.js +1 -1
  1074. package/Shaders/ShadersInclude/morphTargetsVertex.js +1 -1
  1075. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
  1076. package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
  1077. package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
  1078. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
  1079. package/Shaders/ShadersInclude/packingFunctions.js +1 -1
  1080. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  1081. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
  1082. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +1 -1
  1083. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +1 -1
  1084. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +1 -1
  1085. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +1 -1
  1086. package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
  1087. package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +1 -1
  1088. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +1 -1
  1089. package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
  1090. package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +1 -1
  1091. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  1092. package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +1 -1
  1093. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +1 -1
  1094. package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +1 -1
  1095. package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
  1096. package/Shaders/ShadersInclude/pbrBlockReflectance0.js +1 -1
  1097. package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
  1098. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +1 -1
  1099. package/Shaders/ShadersInclude/pbrBlockSheen.js +1 -1
  1100. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
  1101. package/Shaders/ShadersInclude/pbrDebug.js +1 -1
  1102. package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +1 -1
  1103. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  1104. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  1105. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  1106. package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +2 -2
  1107. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -3
  1108. package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
  1109. package/Shaders/ShadersInclude/pbrIBLFunctions.js +1 -1
  1110. package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -3
  1111. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  1112. package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
  1113. package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +1 -1
  1114. package/Shaders/ShadersInclude/prePassDeclaration.js +1 -1
  1115. package/Shaders/ShadersInclude/prePassVertex.js +1 -1
  1116. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +1 -1
  1117. package/Shaders/ShadersInclude/reflectionFunction.js +1 -1
  1118. package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +1 -1
  1119. package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +1 -1
  1120. package/Shaders/ShadersInclude/samplerVertexDeclaration.js +1 -1
  1121. package/Shaders/ShadersInclude/samplerVertexImplementation.js +1 -1
  1122. package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +1 -1
  1123. package/Shaders/ShadersInclude/sceneUboDeclaration.js +1 -1
  1124. package/Shaders/ShadersInclude/sceneVertexDeclaration.js +1 -1
  1125. package/Shaders/ShadersInclude/shadowMapFragment.js +1 -1
  1126. package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -3
  1127. package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +1 -1
  1128. package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -3
  1129. package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -3
  1130. package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +1 -1
  1131. package/Shaders/ShadersInclude/shadowMapVertexMetric.js +1 -1
  1132. package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +1 -1
  1133. package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
  1134. package/Shaders/ShadersInclude/shadowsVertex.js +1 -1
  1135. package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +1 -1
  1136. package/Shaders/ShadersInclude/uvAttributeDeclaration.js +1 -1
  1137. package/Shaders/ShadersInclude/uvVariableDeclaration.js +1 -1
  1138. package/Shaders/anaglyph.fragment.js +1 -1
  1139. package/Shaders/background.fragment.js +16 -16
  1140. package/Shaders/background.vertex.js +15 -15
  1141. package/Shaders/blackAndWhite.fragment.js +1 -1
  1142. package/Shaders/bloomMerge.fragment.js +1 -1
  1143. package/Shaders/blur.fragment.js +1 -1
  1144. package/Shaders/chromaticAberration.fragment.js +1 -1
  1145. package/Shaders/circleOfConfusion.fragment.js +1 -1
  1146. package/Shaders/clearQuad.fragment.js +1 -1
  1147. package/Shaders/clearQuad.vertex.js +1 -1
  1148. package/Shaders/color.fragment.js +3 -3
  1149. package/Shaders/color.vertex.js +7 -7
  1150. package/Shaders/colorCorrection.fragment.js +1 -1
  1151. package/Shaders/convolution.fragment.js +1 -1
  1152. package/Shaders/default.fragment.js +26 -26
  1153. package/Shaders/default.vertex.js +31 -31
  1154. package/Shaders/depth.fragment.js +2 -2
  1155. package/Shaders/depth.vertex.js +9 -9
  1156. package/Shaders/depthBoxBlur.fragment.js +1 -1
  1157. package/Shaders/depthOfField.fragment.js +1 -1
  1158. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  1159. package/Shaders/displayPass.fragment.js +1 -1
  1160. package/Shaders/extractHighlights.fragment.js +2 -2
  1161. package/Shaders/filter.fragment.js +1 -1
  1162. package/Shaders/fxaa.fragment.js +1 -1
  1163. package/Shaders/fxaa.vertex.js +1 -1
  1164. package/Shaders/geometry.fragment.js +5 -5
  1165. package/Shaders/geometry.vertex.js +12 -12
  1166. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  1167. package/Shaders/glowMapGeneration.fragment.js +2 -2
  1168. package/Shaders/glowMapGeneration.vertex.js +9 -9
  1169. package/Shaders/glowMapMerge.fragment.js +1 -1
  1170. package/Shaders/glowMapMerge.vertex.js +1 -1
  1171. package/Shaders/gpuRenderParticles.fragment.js +6 -6
  1172. package/Shaders/gpuRenderParticles.vertex.js +3 -3
  1173. package/Shaders/gpuUpdateParticles.fragment.js +1 -1
  1174. package/Shaders/gpuUpdateParticles.vertex.js +1 -1
  1175. package/Shaders/grain.fragment.js +2 -2
  1176. package/Shaders/hdrFiltering.fragment.js +5 -5
  1177. package/Shaders/hdrFiltering.vertex.js +1 -1
  1178. package/Shaders/highlights.fragment.js +1 -1
  1179. package/Shaders/imageProcessing.fragment.js +4 -4
  1180. package/Shaders/kernelBlur.fragment.js +5 -5
  1181. package/Shaders/kernelBlur.vertex.js +3 -3
  1182. package/Shaders/layer.fragment.js +2 -2
  1183. package/Shaders/layer.vertex.js +1 -1
  1184. package/Shaders/lensFlare.fragment.js +1 -1
  1185. package/Shaders/lensFlare.vertex.js +1 -1
  1186. package/Shaders/lensHighlights.fragment.js +1 -1
  1187. package/Shaders/line.fragment.js +3 -3
  1188. package/Shaders/line.vertex.js +5 -5
  1189. package/Shaders/minmaxRedux.fragment.js +1 -1
  1190. package/Shaders/motionBlur.fragment.js +1 -1
  1191. package/Shaders/noise.fragment.js +1 -1
  1192. package/Shaders/outline.fragment.js +3 -3
  1193. package/Shaders/outline.vertex.js +11 -11
  1194. package/Shaders/particles.fragment.js +6 -6
  1195. package/Shaders/particles.vertex.js +3 -3
  1196. package/Shaders/pass.fragment.js +1 -1
  1197. package/Shaders/passCube.fragment.js +1 -1
  1198. package/Shaders/pbr.fragment.js +55 -55
  1199. package/Shaders/pbr.vertex.js +31 -31
  1200. package/Shaders/postprocess.vertex.js +1 -1
  1201. package/Shaders/procedural.vertex.js +1 -1
  1202. package/Shaders/refraction.fragment.js +1 -1
  1203. package/Shaders/rgbdDecode.fragment.js +2 -2
  1204. package/Shaders/rgbdEncode.fragment.js +2 -2
  1205. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  1206. package/Shaders/screenSpaceReflection.fragment.js +1 -1
  1207. package/Shaders/shadowMap.fragment.js +5 -5
  1208. package/Shaders/shadowMap.vertex.js +16 -16
  1209. package/Shaders/sharpen.fragment.js +1 -1
  1210. package/Shaders/spriteMap.fragment.js +1 -1
  1211. package/Shaders/spriteMap.vertex.js +1 -1
  1212. package/Shaders/sprites.fragment.js +4 -4
  1213. package/Shaders/sprites.vertex.js +2 -2
  1214. package/Shaders/ssao.fragment.js +1 -1
  1215. package/Shaders/ssao2.fragment.js +1 -1
  1216. package/Shaders/ssaoCombine.fragment.js +1 -1
  1217. package/Shaders/standard.fragment.js +2 -2
  1218. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  1219. package/Shaders/subSurfaceScattering.fragment.js +5 -5
  1220. package/Shaders/tonemap.fragment.js +1 -1
  1221. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  1222. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  1223. package/Shaders/volumetricLightScatteringPass.vertex.js +9 -9
  1224. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  1225. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  1226. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  1227. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  1228. package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
  1229. package/ShadersWGSL/ShadersInclude/instancesVertex.js +1 -1
  1230. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
  1231. package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +1 -1
  1232. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
  1233. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
  1234. package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
  1235. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
  1236. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  1237. package/Sprites/index.js +6 -6
  1238. package/Sprites/sprite.js +4 -4
  1239. package/Sprites/spriteManager.js +11 -11
  1240. package/Sprites/spriteMap.js +11 -11
  1241. package/Sprites/spriteMap.js.map +1 -1
  1242. package/Sprites/spritePackedManager.js +2 -2
  1243. package/Sprites/spriteRenderer.js +6 -6
  1244. package/Sprites/spriteSceneComponent.js +6 -6
  1245. package/States/index.js +4 -4
  1246. package/XR/features/WebXRAnchorSystem.js +5 -5
  1247. package/XR/features/WebXRBackgroundRemover.js +3 -3
  1248. package/XR/features/WebXRControllerMovement.js +5 -5
  1249. package/XR/features/WebXRControllerPhysics.js +8 -8
  1250. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  1251. package/XR/features/WebXRControllerPointerSelection.js +19 -15
  1252. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  1253. package/XR/features/WebXRControllerTeleportation.js +24 -24
  1254. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  1255. package/XR/features/WebXRDOMOverlay.js +3 -3
  1256. package/XR/features/WebXREyeTracking.js +5 -5
  1257. package/XR/features/WebXRFeaturePointSystem.js +4 -4
  1258. package/XR/features/WebXRHandTracking.js +15 -15
  1259. package/XR/features/WebXRHandTracking.js.map +1 -1
  1260. package/XR/features/WebXRHitTest.js +5 -5
  1261. package/XR/features/WebXRHitTestLegacy.js +5 -5
  1262. package/XR/features/WebXRImageTracking.js +5 -5
  1263. package/XR/features/WebXRLightEstimation.js +12 -12
  1264. package/XR/features/WebXRMeshDetector.js +4 -4
  1265. package/XR/features/WebXRNearInteraction.js +14 -12
  1266. package/XR/features/WebXRNearInteraction.js.map +1 -1
  1267. package/XR/features/WebXRPlaneDetector.js +4 -4
  1268. package/XR/features/WebXRWalkingLocomotion.js +5 -5
  1269. package/XR/features/index.js +19 -19
  1270. package/XR/index.js +12 -12
  1271. package/XR/motionController/index.js +9 -9
  1272. package/XR/motionController/webXRAbstractMotionController.js +6 -6
  1273. package/XR/motionController/webXRControllerComponent.js +1 -1
  1274. package/XR/motionController/webXRGenericHandController.js +2 -2
  1275. package/XR/motionController/webXRGenericMotionController.js +3 -3
  1276. package/XR/motionController/webXRHTCViveMotionController.js +4 -4
  1277. package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
  1278. package/XR/motionController/webXRMotionControllerManager.js +3 -3
  1279. package/XR/motionController/webXROculusTouchMotionController.js +4 -4
  1280. package/XR/motionController/webXRProfiledMotionController.js +10 -10
  1281. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  1282. package/XR/webXRCamera.js +7 -7
  1283. package/XR/webXRDefaultExperience.js +7 -7
  1284. package/XR/webXREnterExitUI.js +3 -3
  1285. package/XR/webXRExperienceHelper.js +8 -8
  1286. package/XR/webXRFeaturesManager.js +1 -1
  1287. package/XR/webXRInput.js +3 -3
  1288. package/XR/webXRInputSource.js +5 -5
  1289. package/XR/webXRManagedOutputCanvas.js +2 -2
  1290. package/XR/webXRSessionManager.js +5 -5
  1291. package/assetContainer.js +4 -4
  1292. package/index.d.ts +1 -0
  1293. package/index.js +44 -43
  1294. package/index.js.map +1 -1
  1295. package/license.md +12 -13
  1296. package/node.js +6 -6
  1297. package/node.js.map +1 -1
  1298. package/package.json +10 -1
  1299. package/readme.md +12 -13
  1300. package/scene.d.ts +5 -147
  1301. package/scene.js +46 -229
  1302. package/scene.js.map +1 -1
  1303. package/scene.lts.d.ts +165 -0
  1304. package/scene.lts.js +68 -0
  1305. package/scene.lts.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"axisScaleGizmo.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/axisScaleGizmo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { PointerInfo } from \"../Events/pointerEvents\";\r\nimport { Vector3, Matrix } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Node } from \"../node\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { LinesMesh } from \"../Meshes/linesMesh\";\r\nimport { BoxBuilder } from \"../Meshes/Builders/boxBuilder\";\r\nimport { CylinderBuilder } from \"../Meshes/Builders/cylinderBuilder\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport { PointerDragBehavior } from \"../Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Gizmo, GizmoAxisCache } from \"./gizmo\";\r\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\r\nimport { ScaleGizmo } from \"./scaleGizmo\";\r\nimport { Color3 } from '../Maths/math.color';\r\n\r\n/**\r\n * Single axis scale gizmo\r\n */\r\nexport class AxisScaleGizmo extends Gizmo {\r\n /**\r\n * Drag behavior responsible for the gizmos dragging interactions\r\n */\r\n public dragBehavior: PointerDragBehavior;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>> = null;\r\n /**\r\n * Scale distance in babylon units that the gizmo will snap to when dragged (Default: 0)\r\n */\r\n public snapDistance = 0;\r\n /**\r\n * Event that fires each time the gizmo snaps to a new location.\r\n * * snapDistance is the the change in distance\r\n */\r\n public onSnapObservable = new Observable<{ snapDistance: number }>();\r\n /**\r\n * If the scaling operation should be done on all axis (default: false)\r\n */\r\n public uniformScaling = false;\r\n /**\r\n * Custom sensitivity value for the drag strength\r\n */\r\n public sensitivity = 1;\r\n /**\r\n * The magnitude of the drag strength (scaling factor)\r\n */\r\n public dragScale = 1;\r\n\r\n private _isEnabled: boolean = true;\r\n private _parent: Nullable<ScaleGizmo> = null;\r\n\r\n private _gizmoMesh: Mesh;\r\n private _coloredMaterial: StandardMaterial;\r\n private _hoverMaterial: StandardMaterial;\r\n private _disableMaterial: StandardMaterial;\r\n private _dragging: boolean = false;\r\n private _tmpVector = new Vector3();\r\n private _tmpMatrix = new Matrix();\r\n private _tmpMatrix2 = new Matrix();\r\n\r\n /**\r\n * Creates an AxisScaleGizmo\r\n * @param gizmoLayer The utility layer the gizmo will be added to\r\n * @param dragAxis The axis which the gizmo will be able to scale on\r\n * @param color The color of the gizmo\r\n * @param thickness display gizmo axis thickness\r\n */\r\n constructor(dragAxis: Vector3, color: Color3 = Color3.Gray(), gizmoLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultUtilityLayer, parent: Nullable<ScaleGizmo> = null, thickness: number = 1) {\r\n super(gizmoLayer);\r\n this._parent = parent;\r\n // Create Material\r\n this._coloredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._coloredMaterial.diffuseColor = color;\r\n this._coloredMaterial.specularColor = color.subtract(new Color3(0.1, 0.1, 0.1));\r\n\r\n this._hoverMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._hoverMaterial.diffuseColor = Color3.Yellow();\r\n\r\n this._disableMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._disableMaterial.diffuseColor = Color3.Gray();\r\n this._disableMaterial.alpha = 0.4;\r\n\r\n // Build mesh + Collider\r\n this._gizmoMesh = new Mesh(\"axis\", gizmoLayer.utilityLayerScene);\r\n const { arrowMesh, arrowTail } = this._createGizmoMesh(this._gizmoMesh, thickness);\r\n const collider = this._createGizmoMesh(this._gizmoMesh, thickness + 4, true);\r\n\r\n this._gizmoMesh.lookAt(this._rootMesh.position.add(dragAxis));\r\n this._rootMesh.addChild(this._gizmoMesh);\r\n this._gizmoMesh.scaling.scaleInPlace(1 / 3);\r\n\r\n // Closure of initial prop values for resetting\r\n const nodePosition = arrowMesh.position.clone();\r\n const linePosition = arrowTail.position.clone();\r\n const lineScale = arrowTail.scaling.clone();\r\n\r\n const increaseGizmoMesh = (dragDistance: number) => {\r\n const dragStrength = (dragDistance * (3 / this._rootMesh.scaling.length())) * 6;\r\n\r\n arrowMesh.position.z += dragStrength / 3.5;\r\n arrowTail.scaling.y += dragStrength;\r\n this.dragScale = arrowTail.scaling.y;\r\n arrowTail.position.z = arrowMesh.position.z / 2;\r\n };\r\n\r\n const resetGizmoMesh = () => {\r\n arrowMesh.position.set(nodePosition.x, nodePosition.y, nodePosition.z);\r\n arrowTail.position.set(linePosition.x, linePosition.y, linePosition.z);\r\n arrowTail.scaling.set(lineScale.x, lineScale.y, lineScale.z);\r\n this.dragScale = arrowTail.scaling.y;\r\n this._dragging = false;\r\n };\r\n\r\n // Add drag behavior to handle events when the gizmo is dragged\r\n this.dragBehavior = new PointerDragBehavior({ dragAxis: dragAxis });\r\n this.dragBehavior.moveAttached = false;\r\n this._rootMesh.addBehavior(this.dragBehavior);\r\n\r\n var currentSnapDragDistance = 0;\r\n var tmpVector = new Vector3();\r\n var tmpSnapEvent = { snapDistance: 0 };\r\n this.dragBehavior.onDragObservable.add((event) => {\r\n if (this.attachedNode) {\r\n this._handlePivot();\r\n // Drag strength is modified by the scale of the gizmo (eg. for small objects like boombox the strength will be increased to match the behavior of larger objects)\r\n var dragStrength = this.sensitivity * event.dragDistance * ((this.scaleRatio * 3) / this._rootMesh.scaling.length());\r\n\r\n // Snapping logic\r\n var snapped = false;\r\n var dragSteps = 0;\r\n if (this.uniformScaling) {\r\n tmpVector.setAll(0.57735); // 1 / sqrt(3)\r\n } else {\r\n tmpVector.copyFrom(dragAxis);\r\n }\r\n if (this.snapDistance == 0) {\r\n tmpVector.scaleToRef(dragStrength, tmpVector);\r\n } else {\r\n currentSnapDragDistance += dragStrength;\r\n if (Math.abs(currentSnapDragDistance) > this.snapDistance) {\r\n dragSteps = Math.floor(Math.abs(currentSnapDragDistance) / this.snapDistance);\r\n if (currentSnapDragDistance < 0) {\r\n dragSteps *= -1;\r\n }\r\n currentSnapDragDistance = currentSnapDragDistance % this.snapDistance;\r\n tmpVector.scaleToRef(this.snapDistance * dragSteps, tmpVector);\r\n snapped = true;\r\n } else {\r\n tmpVector.scaleInPlace(0);\r\n }\r\n }\r\n\r\n Matrix.ScalingToRef(1 + tmpVector.x, 1 + tmpVector.y, 1 + tmpVector.z, this._tmpMatrix2);\r\n\r\n this._tmpMatrix2.multiplyToRef(this.attachedNode.getWorldMatrix(), this._tmpMatrix);\r\n this._tmpMatrix.decompose(this._tmpVector);\r\n\r\n let maxScale = 100000;\r\n if (Math.abs(this._tmpVector.x) < maxScale && Math.abs(this._tmpVector.y) < maxScale && Math.abs(this._tmpVector.z) < maxScale) {\r\n this.attachedNode.getWorldMatrix().copyFrom(this._tmpMatrix);\r\n }\r\n\r\n if (snapped) {\r\n tmpSnapEvent.snapDistance = this.snapDistance * dragSteps;\r\n this.onSnapObservable.notifyObservers(tmpSnapEvent);\r\n }\r\n this._matrixChanged();\r\n }\r\n });\r\n // On Drag Listener: to move gizmo mesh with user action\r\n this.dragBehavior.onDragStartObservable.add(() => { this._dragging = true; });\r\n this.dragBehavior.onDragObservable.add((e) => increaseGizmoMesh(e.dragDistance));\r\n this.dragBehavior.onDragEndObservable.add(resetGizmoMesh);\r\n\r\n // Listeners for Universal Scalar\r\n parent?.uniformScaleGizmo?.dragBehavior?.onDragObservable?.add((e) => increaseGizmoMesh(e.delta.y));\r\n parent?.uniformScaleGizmo?.dragBehavior?.onDragEndObservable?.add(resetGizmoMesh);\r\n\r\n const cache: GizmoAxisCache = {\r\n gizmoMeshes: [arrowMesh, arrowTail],\r\n colliderMeshes: [collider.arrowMesh, collider.arrowTail],\r\n material: this._coloredMaterial,\r\n hoverMaterial: this._hoverMaterial,\r\n disableMaterial: this._disableMaterial,\r\n active: false,\r\n dragBehavior: this.dragBehavior\r\n };\r\n this._parent?.addToAxisCache(this._gizmoMesh, cache);\r\n\r\n this._pointerObserver = gizmoLayer.utilityLayerScene.onPointerObservable.add((pointerInfo) => {\r\n if (this._customMeshSet) {\r\n return;\r\n }\r\n this._isHovered = !!(cache.colliderMeshes.indexOf(<Mesh>pointerInfo?.pickInfo?.pickedMesh) != -1);\r\n if (!this._parent) {\r\n const material = this.dragBehavior.enabled ? (this._isHovered || this._dragging ? this._hoverMaterial : this._coloredMaterial) : this._disableMaterial;\r\n this._setGizmoMeshMaterial(cache.gizmoMeshes, material);\r\n }\r\n });\r\n\r\n this.dragBehavior.onEnabledObservable.add((newState) => {\r\n this._setGizmoMeshMaterial(cache.gizmoMeshes, newState ? this._coloredMaterial : this._disableMaterial);\r\n });\r\n\r\n var light = gizmoLayer._getSharedGizmoLight();\r\n light.includedOnlyMeshes = light.includedOnlyMeshes.concat(this._rootMesh.getChildMeshes());\r\n }\r\n\r\n /** Create Geometry for Gizmo */\r\n private _createGizmoMesh(parentMesh: AbstractMesh, thickness: number, isCollider = false) {\r\n var arrowMesh = BoxBuilder.CreateBox(\"yPosMesh\", { size: 0.4 * (1 + (thickness - 1) / 4) }, this.gizmoLayer.utilityLayerScene);\r\n var arrowTail = CylinderBuilder.CreateCylinder(\"cylinder\", { diameterTop: 0.005 * thickness, height: 0.275, diameterBottom: 0.005 * thickness, tessellation: 96 }, this.gizmoLayer.utilityLayerScene);\r\n\r\n // Position arrow pointing in its drag axis\r\n arrowMesh.scaling.scaleInPlace(0.1);\r\n arrowMesh.material = this._coloredMaterial;\r\n arrowMesh.rotation.x = Math.PI / 2;\r\n arrowMesh.position.z += 0.3;\r\n\r\n arrowTail.material = this._coloredMaterial;\r\n arrowTail.position.z += 0.275 / 2;\r\n arrowTail.rotation.x = Math.PI / 2;\r\n\r\n if (isCollider) {\r\n arrowMesh.visibility = 0;\r\n arrowTail.visibility = 0;\r\n }\r\n\r\n parentMesh.addChild(arrowMesh);\r\n parentMesh.addChild(arrowTail);\r\n\r\n return { arrowMesh, arrowTail };\r\n }\r\n\r\n protected _attachedNodeChanged(value: Nullable<Node>) {\r\n if (this.dragBehavior) {\r\n this.dragBehavior.enabled = value ? true : false;\r\n }\r\n }\r\n\r\n /**\r\n * If the gizmo is enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n this._isEnabled = value;\r\n if (!value) {\r\n this.attachedMesh = null;\r\n this.attachedNode = null;\r\n }\r\n else {\r\n if (this._parent) {\r\n this.attachedMesh = this._parent.attachedMesh;\r\n this.attachedNode = this._parent.attachedNode;\r\n }\r\n }\r\n }\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n\r\n /**\r\n * Disposes of the gizmo\r\n */\r\n public dispose() {\r\n this.onSnapObservable.clear();\r\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this.dragBehavior.detach();\r\n if (this._gizmoMesh) {\r\n this._gizmoMesh.dispose();\r\n }\r\n [this._coloredMaterial, this._hoverMaterial, this._disableMaterial].forEach((matl) => {\r\n if (matl) {\r\n matl.dispose();\r\n }\r\n });\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Disposes and replaces the current meshes in the gizmo with the specified mesh\r\n * @param mesh The mesh to replace the default mesh of the gizmo\r\n * @param useGizmoMaterial If the gizmo's default material should be used (default: false)\r\n */\r\n public setCustomMesh(mesh: Mesh, useGizmoMaterial: boolean = false) {\r\n super.setCustomMesh(mesh);\r\n if (useGizmoMaterial) {\r\n this._rootMesh.getChildMeshes().forEach((m) => {\r\n m.material = this._coloredMaterial;\r\n if ((<LinesMesh>m).color) {\r\n (<LinesMesh>m).color = this._coloredMaterial.diffuseColor;\r\n }\r\n });\r\n this._customMeshSet = false;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"axisScaleGizmo.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/axisScaleGizmo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { PointerInfo } from \"../Events/pointerEvents\";\r\nimport { Vector3, Matrix } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Node } from \"../node\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { LinesMesh } from \"../Meshes/linesMesh\";\r\nimport { CreateBox } from \"../Meshes/Builders/boxBuilder\";\r\nimport { CreateCylinder } from \"../Meshes/Builders/cylinderBuilder\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport { PointerDragBehavior } from \"../Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Gizmo, GizmoAxisCache } from \"./gizmo\";\r\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\r\nimport { ScaleGizmo } from \"./scaleGizmo\";\r\nimport { Color3 } from '../Maths/math.color';\r\n\r\n/**\r\n * Single axis scale gizmo\r\n */\r\nexport class AxisScaleGizmo extends Gizmo {\r\n /**\r\n * Drag behavior responsible for the gizmos dragging interactions\r\n */\r\n public dragBehavior: PointerDragBehavior;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>> = null;\r\n /**\r\n * Scale distance in babylon units that the gizmo will snap to when dragged (Default: 0)\r\n */\r\n public snapDistance = 0;\r\n /**\r\n * Event that fires each time the gizmo snaps to a new location.\r\n * * snapDistance is the the change in distance\r\n */\r\n public onSnapObservable = new Observable<{ snapDistance: number }>();\r\n /**\r\n * If the scaling operation should be done on all axis (default: false)\r\n */\r\n public uniformScaling = false;\r\n /**\r\n * Custom sensitivity value for the drag strength\r\n */\r\n public sensitivity = 1;\r\n /**\r\n * The magnitude of the drag strength (scaling factor)\r\n */\r\n public dragScale = 1;\r\n\r\n private _isEnabled: boolean = true;\r\n private _parent: Nullable<ScaleGizmo> = null;\r\n\r\n private _gizmoMesh: Mesh;\r\n private _coloredMaterial: StandardMaterial;\r\n private _hoverMaterial: StandardMaterial;\r\n private _disableMaterial: StandardMaterial;\r\n private _dragging: boolean = false;\r\n private _tmpVector = new Vector3();\r\n private _tmpMatrix = new Matrix();\r\n private _tmpMatrix2 = new Matrix();\r\n\r\n /**\r\n * Creates an AxisScaleGizmo\r\n * @param gizmoLayer The utility layer the gizmo will be added to\r\n * @param dragAxis The axis which the gizmo will be able to scale on\r\n * @param color The color of the gizmo\r\n * @param thickness display gizmo axis thickness\r\n */\r\n constructor(dragAxis: Vector3, color: Color3 = Color3.Gray(), gizmoLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultUtilityLayer, parent: Nullable<ScaleGizmo> = null, thickness: number = 1) {\r\n super(gizmoLayer);\r\n this._parent = parent;\r\n // Create Material\r\n this._coloredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._coloredMaterial.diffuseColor = color;\r\n this._coloredMaterial.specularColor = color.subtract(new Color3(0.1, 0.1, 0.1));\r\n\r\n this._hoverMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._hoverMaterial.diffuseColor = Color3.Yellow();\r\n\r\n this._disableMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this._disableMaterial.diffuseColor = Color3.Gray();\r\n this._disableMaterial.alpha = 0.4;\r\n\r\n // Build mesh + Collider\r\n this._gizmoMesh = new Mesh(\"axis\", gizmoLayer.utilityLayerScene);\r\n const { arrowMesh, arrowTail } = this._createGizmoMesh(this._gizmoMesh, thickness);\r\n const collider = this._createGizmoMesh(this._gizmoMesh, thickness + 4, true);\r\n\r\n this._gizmoMesh.lookAt(this._rootMesh.position.add(dragAxis));\r\n this._rootMesh.addChild(this._gizmoMesh);\r\n this._gizmoMesh.scaling.scaleInPlace(1 / 3);\r\n\r\n // Closure of initial prop values for resetting\r\n const nodePosition = arrowMesh.position.clone();\r\n const linePosition = arrowTail.position.clone();\r\n const lineScale = arrowTail.scaling.clone();\r\n\r\n const increaseGizmoMesh = (dragDistance: number) => {\r\n const dragStrength = (dragDistance * (3 / this._rootMesh.scaling.length())) * 6;\r\n\r\n arrowMesh.position.z += dragStrength / 3.5;\r\n arrowTail.scaling.y += dragStrength;\r\n this.dragScale = arrowTail.scaling.y;\r\n arrowTail.position.z = arrowMesh.position.z / 2;\r\n };\r\n\r\n const resetGizmoMesh = () => {\r\n arrowMesh.position.set(nodePosition.x, nodePosition.y, nodePosition.z);\r\n arrowTail.position.set(linePosition.x, linePosition.y, linePosition.z);\r\n arrowTail.scaling.set(lineScale.x, lineScale.y, lineScale.z);\r\n this.dragScale = arrowTail.scaling.y;\r\n this._dragging = false;\r\n };\r\n\r\n // Add drag behavior to handle events when the gizmo is dragged\r\n this.dragBehavior = new PointerDragBehavior({ dragAxis: dragAxis });\r\n this.dragBehavior.moveAttached = false;\r\n this._rootMesh.addBehavior(this.dragBehavior);\r\n\r\n var currentSnapDragDistance = 0;\r\n var tmpVector = new Vector3();\r\n var tmpSnapEvent = { snapDistance: 0 };\r\n this.dragBehavior.onDragObservable.add((event) => {\r\n if (this.attachedNode) {\r\n this._handlePivot();\r\n // Drag strength is modified by the scale of the gizmo (eg. for small objects like boombox the strength will be increased to match the behavior of larger objects)\r\n var dragStrength = this.sensitivity * event.dragDistance * ((this.scaleRatio * 3) / this._rootMesh.scaling.length());\r\n\r\n // Snapping logic\r\n var snapped = false;\r\n var dragSteps = 0;\r\n if (this.uniformScaling) {\r\n tmpVector.setAll(0.57735); // 1 / sqrt(3)\r\n } else {\r\n tmpVector.copyFrom(dragAxis);\r\n }\r\n if (this.snapDistance == 0) {\r\n tmpVector.scaleToRef(dragStrength, tmpVector);\r\n } else {\r\n currentSnapDragDistance += dragStrength;\r\n if (Math.abs(currentSnapDragDistance) > this.snapDistance) {\r\n dragSteps = Math.floor(Math.abs(currentSnapDragDistance) / this.snapDistance);\r\n if (currentSnapDragDistance < 0) {\r\n dragSteps *= -1;\r\n }\r\n currentSnapDragDistance = currentSnapDragDistance % this.snapDistance;\r\n tmpVector.scaleToRef(this.snapDistance * dragSteps, tmpVector);\r\n snapped = true;\r\n } else {\r\n tmpVector.scaleInPlace(0);\r\n }\r\n }\r\n\r\n Matrix.ScalingToRef(1 + tmpVector.x, 1 + tmpVector.y, 1 + tmpVector.z, this._tmpMatrix2);\r\n\r\n this._tmpMatrix2.multiplyToRef(this.attachedNode.getWorldMatrix(), this._tmpMatrix);\r\n this._tmpMatrix.decompose(this._tmpVector);\r\n\r\n let maxScale = 100000;\r\n if (Math.abs(this._tmpVector.x) < maxScale && Math.abs(this._tmpVector.y) < maxScale && Math.abs(this._tmpVector.z) < maxScale) {\r\n this.attachedNode.getWorldMatrix().copyFrom(this._tmpMatrix);\r\n }\r\n\r\n if (snapped) {\r\n tmpSnapEvent.snapDistance = this.snapDistance * dragSteps;\r\n this.onSnapObservable.notifyObservers(tmpSnapEvent);\r\n }\r\n this._matrixChanged();\r\n }\r\n });\r\n // On Drag Listener: to move gizmo mesh with user action\r\n this.dragBehavior.onDragStartObservable.add(() => { this._dragging = true; });\r\n this.dragBehavior.onDragObservable.add((e) => increaseGizmoMesh(e.dragDistance));\r\n this.dragBehavior.onDragEndObservable.add(resetGizmoMesh);\r\n\r\n // Listeners for Universal Scalar\r\n parent?.uniformScaleGizmo?.dragBehavior?.onDragObservable?.add((e) => increaseGizmoMesh(e.delta.y));\r\n parent?.uniformScaleGizmo?.dragBehavior?.onDragEndObservable?.add(resetGizmoMesh);\r\n\r\n const cache: GizmoAxisCache = {\r\n gizmoMeshes: [arrowMesh, arrowTail],\r\n colliderMeshes: [collider.arrowMesh, collider.arrowTail],\r\n material: this._coloredMaterial,\r\n hoverMaterial: this._hoverMaterial,\r\n disableMaterial: this._disableMaterial,\r\n active: false,\r\n dragBehavior: this.dragBehavior\r\n };\r\n this._parent?.addToAxisCache(this._gizmoMesh, cache);\r\n\r\n this._pointerObserver = gizmoLayer.utilityLayerScene.onPointerObservable.add((pointerInfo) => {\r\n if (this._customMeshSet) {\r\n return;\r\n }\r\n this._isHovered = !!(cache.colliderMeshes.indexOf(<Mesh>pointerInfo?.pickInfo?.pickedMesh) != -1);\r\n if (!this._parent) {\r\n const material = this.dragBehavior.enabled ? (this._isHovered || this._dragging ? this._hoverMaterial : this._coloredMaterial) : this._disableMaterial;\r\n this._setGizmoMeshMaterial(cache.gizmoMeshes, material);\r\n }\r\n });\r\n\r\n this.dragBehavior.onEnabledObservable.add((newState) => {\r\n this._setGizmoMeshMaterial(cache.gizmoMeshes, newState ? this._coloredMaterial : this._disableMaterial);\r\n });\r\n\r\n var light = gizmoLayer._getSharedGizmoLight();\r\n light.includedOnlyMeshes = light.includedOnlyMeshes.concat(this._rootMesh.getChildMeshes());\r\n }\r\n\r\n /** Create Geometry for Gizmo */\r\n private _createGizmoMesh(parentMesh: AbstractMesh, thickness: number, isCollider = false) {\r\n var arrowMesh = CreateBox(\"yPosMesh\", { size: 0.4 * (1 + (thickness - 1) / 4) }, this.gizmoLayer.utilityLayerScene);\r\n var arrowTail = CreateCylinder(\"cylinder\", { diameterTop: 0.005 * thickness, height: 0.275, diameterBottom: 0.005 * thickness, tessellation: 96 }, this.gizmoLayer.utilityLayerScene);\r\n\r\n // Position arrow pointing in its drag axis\r\n arrowMesh.scaling.scaleInPlace(0.1);\r\n arrowMesh.material = this._coloredMaterial;\r\n arrowMesh.rotation.x = Math.PI / 2;\r\n arrowMesh.position.z += 0.3;\r\n\r\n arrowTail.material = this._coloredMaterial;\r\n arrowTail.position.z += 0.275 / 2;\r\n arrowTail.rotation.x = Math.PI / 2;\r\n\r\n if (isCollider) {\r\n arrowMesh.visibility = 0;\r\n arrowTail.visibility = 0;\r\n }\r\n\r\n parentMesh.addChild(arrowMesh);\r\n parentMesh.addChild(arrowTail);\r\n\r\n return { arrowMesh, arrowTail };\r\n }\r\n\r\n protected _attachedNodeChanged(value: Nullable<Node>) {\r\n if (this.dragBehavior) {\r\n this.dragBehavior.enabled = value ? true : false;\r\n }\r\n }\r\n\r\n /**\r\n * If the gizmo is enabled\r\n */\r\n public set isEnabled(value: boolean) {\r\n this._isEnabled = value;\r\n if (!value) {\r\n this.attachedMesh = null;\r\n this.attachedNode = null;\r\n }\r\n else {\r\n if (this._parent) {\r\n this.attachedMesh = this._parent.attachedMesh;\r\n this.attachedNode = this._parent.attachedNode;\r\n }\r\n }\r\n }\r\n public get isEnabled(): boolean {\r\n return this._isEnabled;\r\n }\r\n\r\n /**\r\n * Disposes of the gizmo\r\n */\r\n public dispose() {\r\n this.onSnapObservable.clear();\r\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this.dragBehavior.detach();\r\n if (this._gizmoMesh) {\r\n this._gizmoMesh.dispose();\r\n }\r\n [this._coloredMaterial, this._hoverMaterial, this._disableMaterial].forEach((matl) => {\r\n if (matl) {\r\n matl.dispose();\r\n }\r\n });\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Disposes and replaces the current meshes in the gizmo with the specified mesh\r\n * @param mesh The mesh to replace the default mesh of the gizmo\r\n * @param useGizmoMaterial If the gizmo's default material should be used (default: false)\r\n */\r\n public setCustomMesh(mesh: Mesh, useGizmoMaterial: boolean = false) {\r\n super.setCustomMesh(mesh);\r\n if (useGizmoMaterial) {\r\n this._rootMesh.getChildMeshes().forEach((m) => {\r\n m.material = this._coloredMaterial;\r\n if ((<LinesMesh>m).color) {\r\n (<LinesMesh>m).color = this._coloredMaterial.diffuseColor;\r\n }\r\n });\r\n this._customMeshSet = false;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,20 +1,19 @@
1
1
  import { __extends } from "tslib";
2
- import { Observable } from "../Misc/observable";
3
- import { Logger } from "../Misc/logger";
4
- import { Quaternion, Matrix, Vector3 } from "../Maths/math.vector";
5
- import { AbstractMesh } from "../Meshes/abstractMesh";
6
- import { Mesh } from "../Meshes/mesh";
7
- import { SphereBuilder } from "../Meshes/Builders/sphereBuilder";
8
- import { BoxBuilder } from "../Meshes/Builders/boxBuilder";
9
- import { LinesBuilder } from "../Meshes/Builders/linesBuilder";
10
- import { PointerDragBehavior } from "../Behaviors/Meshes/pointerDragBehavior";
11
- import { Gizmo } from "./gizmo";
12
- import { UtilityLayerRenderer } from "../Rendering/utilityLayerRenderer";
13
- import { StandardMaterial } from "../Materials/standardMaterial";
14
- import { PivotTools } from "../Misc/pivotTools";
15
- import { Color3 } from '../Maths/math.color';
16
- import "../Meshes/Builders/boxBuilder";
17
- import { Epsilon } from '../Maths/math.constants';
2
+ import { Observable } from "../Misc/observable.js";
3
+ import { Logger } from "../Misc/logger.js";
4
+ import { Quaternion, Matrix, Vector3 } from "../Maths/math.vector.js";
5
+ import { AbstractMesh } from "../Meshes/abstractMesh.js";
6
+ import { CreateSphere } from "../Meshes/Builders/sphereBuilder.js";
7
+ import { CreateBox } from "../Meshes/Builders/boxBuilder.js";
8
+ import { CreateLines } from "../Meshes/Builders/linesBuilder.js";
9
+ import { PointerDragBehavior } from "../Behaviors/Meshes/pointerDragBehavior.js";
10
+ import { Gizmo } from "./gizmo.js";
11
+ import { UtilityLayerRenderer } from "../Rendering/utilityLayerRenderer.js";
12
+ import { StandardMaterial } from "../Materials/standardMaterial.js";
13
+ import { PivotTools } from "../Misc/pivotTools.js";
14
+ import { Color3 } from '../Maths/math.color.js';
15
+ import "../Meshes/Builders/boxBuilder.js";
16
+ import { Epsilon } from '../Maths/math.constants.js';
18
17
  /**
19
18
  * Bounding box gizmo
20
19
  */
@@ -110,18 +109,18 @@ var BoundingBoxGizmo = /** @class */ (function (_super) {
110
109
  _this._lineBoundingBox = new AbstractMesh("", gizmoLayer.utilityLayerScene);
111
110
  _this._lineBoundingBox.rotationQuaternion = new Quaternion();
112
111
  var lines = [];
113
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(_this._boundingDimensions.x, 0, 0)] }, gizmoLayer.utilityLayerScene));
114
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(0, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
115
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(0, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
116
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, 0, 0), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
117
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, 0, 0), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
118
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, _this._boundingDimensions.y, 0), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
119
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, _this._boundingDimensions.y, 0), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
120
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, 0, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
121
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(0, 0, _this._boundingDimensions.z), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
122
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
123
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
124
- lines.push(LinesBuilder.CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
112
+ lines.push(CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(_this._boundingDimensions.x, 0, 0)] }, gizmoLayer.utilityLayerScene));
113
+ lines.push(CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(0, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
114
+ lines.push(CreateLines("lines", { points: [new Vector3(0, 0, 0), new Vector3(0, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
115
+ lines.push(CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, 0, 0), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
116
+ lines.push(CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, 0, 0), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
117
+ lines.push(CreateLines("lines", { points: [new Vector3(0, _this._boundingDimensions.y, 0), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
118
+ lines.push(CreateLines("lines", { points: [new Vector3(0, _this._boundingDimensions.y, 0), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
119
+ lines.push(CreateLines("lines", { points: [new Vector3(0, 0, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
120
+ lines.push(CreateLines("lines", { points: [new Vector3(0, 0, _this._boundingDimensions.z), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
121
+ lines.push(CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(0, _this._boundingDimensions.y, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
122
+ lines.push(CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, 0, _this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));
123
+ lines.push(CreateLines("lines", { points: [new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, _this._boundingDimensions.z), new Vector3(_this._boundingDimensions.x, _this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));
125
124
  lines.forEach(function (l) {
126
125
  l.color = color;
127
126
  l.position.addInPlace(new Vector3(-_this._boundingDimensions.x / 2, -_this._boundingDimensions.y / 2, -_this._boundingDimensions.z / 2));
@@ -134,7 +133,7 @@ var BoundingBoxGizmo = /** @class */ (function (_super) {
134
133
  _this._rotateSpheresParent = new AbstractMesh("", gizmoLayer.utilityLayerScene);
135
134
  _this._rotateSpheresParent.rotationQuaternion = new Quaternion();
136
135
  var _loop_1 = function (i_1) {
137
- var sphere = SphereBuilder.CreateSphere("", { diameter: 1 }, gizmoLayer.utilityLayerScene);
136
+ var sphere = CreateSphere("", { diameter: 1 }, gizmoLayer.utilityLayerScene);
138
137
  sphere.rotationQuaternion = new Quaternion();
139
138
  sphere.material = this_1.coloredMaterial;
140
139
  sphere.isNearGrabbable = true;
@@ -224,7 +223,7 @@ var BoundingBoxGizmo = /** @class */ (function (_super) {
224
223
  if (zeroAxisCount === 1 || zeroAxisCount === 3) {
225
224
  return "continue";
226
225
  }
227
- var box = BoxBuilder.CreateBox("", { size: 1 }, gizmoLayer.utilityLayerScene);
226
+ var box = CreateBox("", { size: 1 }, gizmoLayer.utilityLayerScene);
228
227
  box.material = this_2.coloredMaterial;
229
228
  box.metadata = zeroAxisCount === 2; // None homogenous scale handle
230
229
  box.isNearGrabbable = true;
@@ -599,7 +598,7 @@ var BoundingBoxGizmo = /** @class */ (function (_super) {
599
598
  * Enables a pointer drag behavior on the bounding box of the gizmo
600
599
  */
601
600
  BoundingBoxGizmo.prototype.enableDragBehavior = function () {
602
- this._dragMesh = Mesh.CreateBox("dummy", 1, this.gizmoLayer.utilityLayerScene);
601
+ this._dragMesh = CreateBox("dummy", { size: 1 }, this.gizmoLayer.utilityLayerScene);
603
602
  this._dragMesh.visibility = 0;
604
603
  this._dragMesh.rotationQuaternion = new Quaternion();
605
604
  this.pointerDragBehavior.useObjectOrientationForDragging = false;
@@ -641,7 +640,7 @@ var BoundingBoxGizmo = /** @class */ (function (_super) {
641
640
  mesh.rotationQuaternion.set(0, 0, 0, 1);
642
641
  mesh.position.set(0, 0, 0);
643
642
  // Update bounding dimensions/positions
644
- var box = BoxBuilder.CreateBox("box", { size: 1 }, mesh.getScene());
643
+ var box = CreateBox("box", { size: 1 }, mesh.getScene());
645
644
  var boundingMinMax = mesh.getHierarchyBoundingVectors();
646
645
  boundingMinMax.max.subtractToRef(boundingMinMax.min, box.scaling);
647
646
  // Adjust scale to avoid undefined behavior when adding child
@@ -1 +1 @@
1
- {"version":3,"file":"boundingBoxGizmo.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/boundingBoxGizmo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Nullable } from \"../types\";\r\nimport { PointerInfo } from \"../Events/pointerEvents\";\r\nimport { Scene } from \"../scene\";\r\nimport { Quaternion, Matrix, Vector3 } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { SphereBuilder } from \"../Meshes/Builders/sphereBuilder\";\r\nimport { BoxBuilder } from \"../Meshes/Builders/boxBuilder\";\r\nimport { LinesBuilder } from \"../Meshes/Builders/linesBuilder\";\r\nimport { PointerDragBehavior } from \"../Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Gizmo } from \"./gizmo\";\r\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport { PivotTools } from \"../Misc/pivotTools\";\r\nimport { Color3 } from '../Maths/math.color';\r\n\r\nimport \"../Meshes/Builders/boxBuilder\";\r\nimport { LinesMesh } from '../Meshes/linesMesh';\r\nimport { Epsilon } from '../Maths/math.constants';\r\n\r\n/**\r\n * Bounding box gizmo\r\n */\r\nexport class BoundingBoxGizmo extends Gizmo {\r\n private _lineBoundingBox: AbstractMesh;\r\n private _rotateSpheresParent: AbstractMesh;\r\n private _scaleBoxesParent: AbstractMesh;\r\n private _boundingDimensions = new Vector3(1, 1, 1);\r\n private _renderObserver: Nullable<Observer<Scene>> = null;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>> = null;\r\n private _scaleDragSpeed = 0.2;\r\n\r\n private _tmpQuaternion = new Quaternion();\r\n private _tmpVector = new Vector3(0, 0, 0);\r\n private _tmpRotationMatrix = new Matrix();\r\n /**\r\n * If child meshes should be ignored when calculating the bounding box. This should be set to true to avoid perf hits with heavily nested meshes (Default: false)\r\n */\r\n public ignoreChildren = false;\r\n /**\r\n * Returns true if a descendant should be included when computing the bounding box. When null, all descendants are included. If ignoreChildren is set this will be ignored. (Default: null)\r\n */\r\n public includeChildPredicate: Nullable<(abstractMesh: AbstractMesh) => boolean> = null;\r\n\r\n /**\r\n * The size of the rotation spheres attached to the bounding box (Default: 0.1)\r\n */\r\n public rotationSphereSize = 0.1;\r\n /**\r\n * The size of the scale boxes attached to the bounding box (Default: 0.1)\r\n */\r\n public scaleBoxSize = 0.1;\r\n /**\r\n * If set, the rotation spheres and scale boxes will increase in size based on the distance away from the camera to have a consistent screen size (Default: false)\r\n * Note : fixedDragMeshScreenSize takes precedence over fixedDragMeshBoundsSize if both are true\r\n */\r\n public fixedDragMeshScreenSize = false;\r\n /**\r\n * If set, the rotation spheres and scale boxes will increase in size based on the size of the bounding box\r\n * Note : fixedDragMeshScreenSize takes precedence over fixedDragMeshBoundsSize if both are true\r\n */\r\n public fixedDragMeshBoundsSize = false;\r\n /**\r\n * The distance away from the object which the draggable meshes should appear world sized when fixedDragMeshScreenSize is set to true (default: 10)\r\n */\r\n public fixedDragMeshScreenSizeDistanceFactor = 10;\r\n /**\r\n * Fired when a rotation sphere or scale box is dragged\r\n */\r\n public onDragStartObservable = new Observable<{}>();\r\n /**\r\n * Fired when a scale box is dragged\r\n */\r\n public onScaleBoxDragObservable = new Observable<{}>();\r\n /**\r\n * Fired when a scale box drag is ended\r\n */\r\n public onScaleBoxDragEndObservable = new Observable<{}>();\r\n /**\r\n * Fired when a rotation sphere is dragged\r\n */\r\n public onRotationSphereDragObservable = new Observable<{}>();\r\n /**\r\n * Fired when a rotation sphere drag is ended\r\n */\r\n public onRotationSphereDragEndObservable = new Observable<{}>();\r\n /**\r\n * Relative bounding box pivot used when scaling the attached node. When null object with scale from the opposite corner. 0.5,0.5,0.5 for center and 0.5,0,0.5 for bottom (Default: null)\r\n */\r\n public scalePivot: Nullable<Vector3> = null;\r\n /**\r\n * Scale factor used for masking some axis\r\n */\r\n private _axisFactor = new Vector3(1, 1, 1);\r\n\r\n /**\r\n * Sets the axis factor\r\n * @param factor the Vector3 value\r\n */\r\n public set axisFactor(factor: Vector3) {\r\n this._axisFactor = factor;\r\n // update scale cube visibility\r\n var scaleBoxes = this._scaleBoxesParent.getChildMeshes();\r\n var index = 0;\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n if (scaleBoxes[index]) {\r\n let dragAxis = new Vector3(i - 1, j - 1, k - 1);\r\n dragAxis.multiplyInPlace(this._axisFactor);\r\n scaleBoxes[index].setEnabled(dragAxis.lengthSquared() > Epsilon);\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the axis factor\r\n * @returns the Vector3 factor value\r\n */\r\n public get axisFactor(): Vector3 {\r\n return this._axisFactor;\r\n }\r\n\r\n /**\r\n * Sets scale drag speed value\r\n * @param value the new speed value\r\n */\r\n public set scaleDragSpeed(value: number) {\r\n this._scaleDragSpeed = value;\r\n }\r\n\r\n /**\r\n * Gets scale drag speed\r\n * @returns the scale speed number\r\n */\r\n public get scaleDragSpeed(): number {\r\n return this._scaleDragSpeed;\r\n }\r\n\r\n /**\r\n * Mesh used as a pivot to rotate the attached node\r\n */\r\n private _anchorMesh: AbstractMesh;\r\n\r\n private _existingMeshScale = new Vector3();\r\n\r\n // Dragging\r\n private _dragMesh: Nullable<Mesh> = null;\r\n private pointerDragBehavior = new PointerDragBehavior();\r\n\r\n private coloredMaterial: StandardMaterial;\r\n private hoverColoredMaterial: StandardMaterial;\r\n\r\n /**\r\n * Sets the color of the bounding box gizmo\r\n * @param color the color to set\r\n */\r\n public setColor(color: Color3) {\r\n this.coloredMaterial.emissiveColor = color;\r\n this.hoverColoredMaterial.emissiveColor = color.clone().add(new Color3(0.3, 0.3, 0.3));\r\n this._lineBoundingBox.getChildren().forEach((l) => {\r\n if ((l as LinesMesh).color) {\r\n (l as LinesMesh).color = color;\r\n }\r\n });\r\n }\r\n /**\r\n * Creates an BoundingBoxGizmo\r\n * @param gizmoLayer The utility layer the gizmo will be added to\r\n * @param color The color of the gizmo\r\n */\r\n constructor(color: Color3 = Color3.Gray(), gizmoLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultKeepDepthUtilityLayer) {\r\n super(gizmoLayer);\r\n\r\n // Do not update the gizmo's scale so it has a fixed size to the object its attached to\r\n this.updateScale = false;\r\n\r\n this._anchorMesh = new AbstractMesh(\"anchor\", gizmoLayer.utilityLayerScene);\r\n // Create Materials\r\n this.coloredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this.coloredMaterial.disableLighting = true;\r\n this.hoverColoredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this.hoverColoredMaterial.disableLighting = true;\r\n\r\n // Build bounding box out of lines\r\n this._lineBoundingBox = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._lineBoundingBox.rotationQuaternion = new Quaternion();\r\n var lines = [];\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(this._boundingDimensions.x, 0, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(0, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(0, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, 0, 0), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, 0, 0), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, this._boundingDimensions.y, 0), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, this._boundingDimensions.y, 0), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, 0, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(0, 0, this._boundingDimensions.z), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(LinesBuilder.CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.forEach((l) => {\r\n l.color = color;\r\n l.position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n l.isPickable = false;\r\n this._lineBoundingBox.addChild(l);\r\n });\r\n this._rootMesh.addChild(this._lineBoundingBox);\r\n\r\n this.setColor(color);\r\n\r\n // Create rotation spheres\r\n this._rotateSpheresParent = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._rotateSpheresParent.rotationQuaternion = new Quaternion();\r\n for (let i = 0; i < 12; i++) {\r\n let sphere = SphereBuilder.CreateSphere(\"\", { diameter: 1 }, gizmoLayer.utilityLayerScene);\r\n sphere.rotationQuaternion = new Quaternion();\r\n sphere.material = this.coloredMaterial;\r\n sphere.isNearGrabbable = true;\r\n\r\n // Drag behavior\r\n var _dragBehavior = new PointerDragBehavior({});\r\n _dragBehavior.moveAttached = false;\r\n _dragBehavior.updateDragPlane = false;\r\n sphere.addBehavior(_dragBehavior);\r\n let startingTurnDirection = new Vector3(1, 0, 0);\r\n let totalTurnAmountOfDrag = 0;\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n startingTurnDirection.copyFrom(sphere.forward);\r\n totalTurnAmountOfDrag = 0;\r\n });\r\n _dragBehavior.onDragObservable.add((event) => {\r\n this.onRotationSphereDragObservable.notifyObservers({});\r\n if (this.attachedMesh) {\r\n var originalParent = this.attachedMesh.parent;\r\n if (originalParent && ((originalParent as Mesh).scaling && (originalParent as Mesh).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n Logger.Warn(\"BoundingBoxGizmo controls are not supported on child meshes with non-uniform parent scaling\");\r\n return;\r\n }\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n\r\n var worldDragDirection = startingTurnDirection;\r\n\r\n // Project the world right on to the drag plane\r\n var toSub = event.dragPlaneNormal.scale(Vector3.Dot(event.dragPlaneNormal, worldDragDirection));\r\n var dragAxis = worldDragDirection.subtract(toSub).normalizeToNew();\r\n\r\n // project drag delta on to the resulting drag axis and rotate based on that\r\n var projectDist = Vector3.Dot(dragAxis, event.delta) < 0 ? Math.abs(event.delta.length()) : -Math.abs(event.delta.length());\r\n\r\n // Make rotation relative to size of mesh.\r\n projectDist = (projectDist / this._boundingDimensions.length()) * this._anchorMesh.scaling.length();\r\n\r\n // Rotate based on axis\r\n if (!this.attachedMesh.rotationQuaternion) {\r\n this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);\r\n }\r\n if (!this._anchorMesh.rotationQuaternion) {\r\n this._anchorMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._anchorMesh.rotation.y, this._anchorMesh.rotation.x, this._anchorMesh.rotation.z);\r\n }\r\n\r\n // Do not allow the object to turn more than a full circle\r\n totalTurnAmountOfDrag += projectDist;\r\n if (Math.abs(totalTurnAmountOfDrag) <= 2 * Math.PI) {\r\n if (i >= 8) {\r\n Quaternion.RotationYawPitchRollToRef(0, 0, projectDist, this._tmpQuaternion);\r\n } else if (i >= 4) {\r\n Quaternion.RotationYawPitchRollToRef(projectDist, 0, 0, this._tmpQuaternion);\r\n } else {\r\n Quaternion.RotationYawPitchRollToRef(0, projectDist, 0, this._tmpQuaternion);\r\n }\r\n\r\n // Rotate around center of bounding box\r\n this._anchorMesh.addChild(this.attachedMesh);\r\n this._anchorMesh.rotationQuaternion!.multiplyToRef(this._tmpQuaternion, this._anchorMesh.rotationQuaternion!);\r\n this._anchorMesh.removeChild(this.attachedMesh);\r\n this.attachedMesh.setParent(originalParent);\r\n }\r\n this.updateBoundingBox();\r\n\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n this._updateDummy();\r\n });\r\n\r\n // Selection/deselection\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n this.onDragStartObservable.notifyObservers({});\r\n this._selectNode(sphere);\r\n });\r\n _dragBehavior.onDragEndObservable.add(() => {\r\n this.onRotationSphereDragEndObservable.notifyObservers({});\r\n this._selectNode(null);\r\n this._updateDummy();\r\n });\r\n\r\n this._rotateSpheresParent.addChild(sphere);\r\n }\r\n this._rootMesh.addChild(this._rotateSpheresParent);\r\n\r\n // Create scale cubes\r\n this._scaleBoxesParent = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._scaleBoxesParent.rotationQuaternion = new Quaternion();\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n // create box for relevant axis\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n\r\n let box = BoxBuilder.CreateBox(\"\", { size: 1 }, gizmoLayer.utilityLayerScene);\r\n box.material = this.coloredMaterial;\r\n box.metadata = zeroAxisCount === 2; // None homogenous scale handle\r\n box.isNearGrabbable = true;\r\n\r\n // Dragging logic\r\n let dragAxis = new Vector3(i - 1, j - 1, k - 1).normalize();\r\n var _dragBehavior = new PointerDragBehavior({ dragAxis: dragAxis });\r\n _dragBehavior.updateDragPlane = false;\r\n _dragBehavior.moveAttached = false;\r\n box.addBehavior(_dragBehavior);\r\n _dragBehavior.onDragObservable.add((event) => {\r\n this.onScaleBoxDragObservable.notifyObservers({});\r\n if (this.attachedMesh) {\r\n var originalParent = this.attachedMesh.parent;\r\n if (originalParent && ((originalParent as Mesh).scaling && (originalParent as Mesh).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n Logger.Warn(\"BoundingBoxGizmo controls are not supported on child meshes with non-uniform parent scaling\");\r\n return;\r\n }\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n var relativeDragDistance = (event.dragDistance / this._boundingDimensions.length()) * this._anchorMesh.scaling.length();\r\n var deltaScale = new Vector3(relativeDragDistance, relativeDragDistance, relativeDragDistance);\r\n if (zeroAxisCount === 2) {\r\n // scale on 1 axis when using the anchor box in the face middle\r\n deltaScale.x *= Math.abs(dragAxis.x);\r\n deltaScale.y *= Math.abs(dragAxis.y);\r\n deltaScale.z *= Math.abs(dragAxis.z);\r\n }\r\n deltaScale.scaleInPlace(this._scaleDragSpeed);\r\n deltaScale.multiplyInPlace(this._axisFactor);\r\n this.updateBoundingBox();\r\n if (this.scalePivot) {\r\n this.attachedMesh.getWorldMatrix().getRotationMatrixToRef(this._tmpRotationMatrix);\r\n // Move anchor to desired pivot point (Bottom left corner + dimension/2)\r\n this._boundingDimensions.scaleToRef(0.5, this._tmpVector);\r\n Vector3.TransformCoordinatesToRef(this._tmpVector, this._tmpRotationMatrix, this._tmpVector);\r\n this._anchorMesh.position.subtractInPlace(this._tmpVector);\r\n this._boundingDimensions.multiplyToRef(this.scalePivot, this._tmpVector);\r\n Vector3.TransformCoordinatesToRef(this._tmpVector, this._tmpRotationMatrix, this._tmpVector);\r\n this._anchorMesh.position.addInPlace(this._tmpVector);\r\n } else {\r\n // Scale from the position of the opposite corner\r\n box.absolutePosition.subtractToRef(this._anchorMesh.position, this._tmpVector);\r\n this._anchorMesh.position.subtractInPlace(this._tmpVector);\r\n }\r\n\r\n this._anchorMesh.addChild(this.attachedMesh);\r\n this._anchorMesh.scaling.addInPlace(deltaScale);\r\n if (this._anchorMesh.scaling.x < 0 || this._anchorMesh.scaling.y < 0 || this._anchorMesh.scaling.z < 0) {\r\n this._anchorMesh.scaling.subtractInPlace(deltaScale);\r\n }\r\n this._anchorMesh.removeChild(this.attachedMesh);\r\n this.attachedMesh.setParent(originalParent);\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n this._updateDummy();\r\n });\r\n\r\n // Selection/deselection\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n this.onDragStartObservable.notifyObservers({});\r\n this._selectNode(box);\r\n });\r\n _dragBehavior.onDragEndObservable.add(() => {\r\n this.onScaleBoxDragEndObservable.notifyObservers({});\r\n this._selectNode(null);\r\n this._updateDummy();\r\n });\r\n\r\n this._scaleBoxesParent.addChild(box);\r\n }\r\n }\r\n }\r\n this._rootMesh.addChild(this._scaleBoxesParent);\r\n\r\n // Hover color change\r\n var pointerIds = new Array<AbstractMesh>();\r\n this._pointerObserver = gizmoLayer.utilityLayerScene.onPointerObservable.add((pointerInfo) => {\r\n if (!pointerIds[(<PointerEvent>pointerInfo.event).pointerId]) {\r\n this._rotateSpheresParent.getChildMeshes().concat(this._scaleBoxesParent.getChildMeshes()).forEach((mesh) => {\r\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh == mesh) {\r\n pointerIds[(<PointerEvent>pointerInfo.event).pointerId] = mesh;\r\n mesh.material = this.hoverColoredMaterial;\r\n }\r\n });\r\n } else {\r\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh != pointerIds[(<PointerEvent>pointerInfo.event).pointerId]) {\r\n pointerIds[(<PointerEvent>pointerInfo.event).pointerId].material = this.coloredMaterial;\r\n delete pointerIds[(<PointerEvent>pointerInfo.event).pointerId];\r\n }\r\n }\r\n });\r\n\r\n // Update bounding box positions\r\n this._renderObserver = this.gizmoLayer.originalScene.onBeforeRenderObservable.add(() => {\r\n // Only update the bounding box if scaling has changed\r\n if (this.attachedMesh && !this._existingMeshScale.equals(this.attachedMesh.scaling)) {\r\n this.updateBoundingBox();\r\n } else if (this.fixedDragMeshScreenSize || this.fixedDragMeshBoundsSize) {\r\n this._updateRotationSpheres();\r\n this._updateScaleBoxes();\r\n }\r\n\r\n // If drag mesh is enabled and dragging, update the attached mesh pose to match the drag mesh\r\n if (this._dragMesh && this.attachedMesh && this.pointerDragBehavior.dragging) {\r\n this._lineBoundingBox.position.rotateByQuaternionToRef(this._rootMesh.rotationQuaternion!, this._tmpVector);\r\n this.attachedMesh.setAbsolutePosition(this._dragMesh.position.add(this._tmpVector.scale(-1)));\r\n }\r\n });\r\n this.updateBoundingBox();\r\n }\r\n\r\n protected _attachedNodeChanged(value: Nullable<AbstractMesh>) {\r\n if (value) {\r\n // Reset anchor mesh to match attached mesh's scale\r\n // This is needed to avoid invalid box/sphere position on first drag\r\n this._anchorMesh.scaling.setAll(1);\r\n PivotTools._RemoveAndStorePivotPoint(value);\r\n var originalParent = value.parent;\r\n this._anchorMesh.addChild(value);\r\n this._anchorMesh.removeChild(value);\r\n value.setParent(originalParent);\r\n PivotTools._RestorePivotPoint(value);\r\n this.updateBoundingBox();\r\n value.getChildMeshes(false).forEach((m) => {\r\n m.markAsDirty(\"scaling\");\r\n });\r\n\r\n this.gizmoLayer.utilityLayerScene.onAfterRenderObservable.addOnce(() => {\r\n this._updateDummy();\r\n });\r\n }\r\n }\r\n\r\n private _selectNode(selectedMesh: Nullable<Mesh>) {\r\n this._rotateSpheresParent.getChildMeshes()\r\n .concat(this._scaleBoxesParent.getChildMeshes()).forEach((m) => {\r\n m.isVisible = (!selectedMesh || m == selectedMesh);\r\n });\r\n }\r\n\r\n /**\r\n * Updates the bounding box information for the Gizmo\r\n */\r\n public updateBoundingBox() {\r\n if (this.attachedMesh) {\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n\r\n // Store original parent\r\n var originalParent = this.attachedMesh.parent;\r\n this.attachedMesh.setParent(null);\r\n\r\n // Store original skeleton override mesh\r\n var originalSkeletonOverrideMesh = null;\r\n if (this.attachedMesh.skeleton) {\r\n originalSkeletonOverrideMesh = this.attachedMesh.skeleton.overrideMesh;\r\n this.attachedMesh.skeleton.overrideMesh = null;\r\n }\r\n\r\n this._update();\r\n\r\n // Rotate based on axis\r\n if (!this.attachedMesh.rotationQuaternion) {\r\n this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);\r\n }\r\n if (!this._anchorMesh.rotationQuaternion) {\r\n this._anchorMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._anchorMesh.rotation.y, this._anchorMesh.rotation.x, this._anchorMesh.rotation.z);\r\n }\r\n this._anchorMesh.rotationQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);\r\n\r\n // Store original position and reset mesh to origin before computing the bounding box\r\n this._tmpQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);\r\n this._tmpVector.copyFrom(this.attachedMesh.position);\r\n this.attachedMesh.rotationQuaternion.set(0, 0, 0, 1);\r\n this.attachedMesh.position.set(0, 0, 0);\r\n\r\n // Update bounding dimensions/positions\r\n var boundingMinMax = this.attachedMesh.getHierarchyBoundingVectors(!this.ignoreChildren, this.includeChildPredicate);\r\n boundingMinMax.max.subtractToRef(boundingMinMax.min, this._boundingDimensions);\r\n\r\n // Update gizmo to match bounding box scaling and rotation\r\n // The position set here is the offset from the origin for the boundingbox when the attached mesh is at the origin\r\n // The position of the gizmo is then set to the attachedMesh in gizmo._update\r\n this._lineBoundingBox.scaling.copyFrom(this._boundingDimensions);\r\n this._lineBoundingBox.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);\r\n this._rotateSpheresParent.position.copyFrom(this._lineBoundingBox.position);\r\n this._scaleBoxesParent.position.copyFrom(this._lineBoundingBox.position);\r\n this._lineBoundingBox.computeWorldMatrix();\r\n this._anchorMesh.position.copyFrom(this._lineBoundingBox.absolutePosition);\r\n\r\n // Restore position/rotation values\r\n this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);\r\n this.attachedMesh.position.copyFrom(this._tmpVector);\r\n\r\n // Restore original parent\r\n this.attachedMesh.setParent(originalParent);\r\n\r\n // Restore original skeleton override mesh\r\n if (this.attachedMesh.skeleton) {\r\n this.attachedMesh.skeleton.overrideMesh = originalSkeletonOverrideMesh;\r\n }\r\n }\r\n\r\n this._updateRotationSpheres();\r\n this._updateScaleBoxes();\r\n\r\n if (this.attachedMesh) {\r\n this._existingMeshScale.copyFrom(this.attachedMesh.scaling);\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n }\r\n\r\n private _updateRotationSpheres() {\r\n var rotateSpheres = this._rotateSpheresParent.getChildMeshes();\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 2; j++) {\r\n for (var k = 0; k < 2; k++) {\r\n var index = ((i * 4) + (j * 2)) + k;\r\n if (i == 0) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x / 2, this._boundingDimensions.y * j, this._boundingDimensions.z * k);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Right()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (i == 1) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x * j, this._boundingDimensions.y / 2, this._boundingDimensions.z * k);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Up()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (i == 2) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x * j, this._boundingDimensions.y * k, this._boundingDimensions.z / 2);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Forward()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {\r\n rotateSpheres[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);\r\n var distanceFromCamera = this.rotationSphereSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;\r\n rotateSpheres[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);\r\n } else if (this.fixedDragMeshBoundsSize) {\r\n rotateSpheres[index].scaling.set(this.rotationSphereSize * this._boundingDimensions.x, this.rotationSphereSize * this._boundingDimensions.y, this.rotationSphereSize * this._boundingDimensions.z);\r\n } else {\r\n rotateSpheres[index].scaling.set(this.rotationSphereSize, this.rotationSphereSize, this.rotationSphereSize);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _updateScaleBoxes() {\r\n var scaleBoxes = this._scaleBoxesParent.getChildMeshes();\r\n var index = 0;\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n if (scaleBoxes[index]) {\r\n scaleBoxes[index].position.set(this._boundingDimensions.x * (i / 2), this._boundingDimensions.y * (j / 2), this._boundingDimensions.z * (k / 2));\r\n scaleBoxes[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {\r\n scaleBoxes[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);\r\n var distanceFromCamera = this.scaleBoxSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;\r\n scaleBoxes[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);\r\n } else if (this.fixedDragMeshBoundsSize) {\r\n scaleBoxes[index].scaling.set(this.scaleBoxSize * this._boundingDimensions.x, this.scaleBoxSize * this._boundingDimensions.y, this.scaleBoxSize * this._boundingDimensions.z);\r\n } else {\r\n scaleBoxes[index].scaling.set(this.scaleBoxSize, this.scaleBoxSize, this.scaleBoxSize);\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enables rotation on the specified axis and disables rotation on the others\r\n * @param axis The list of axis that should be enabled (eg. \"xy\" or \"xyz\")\r\n */\r\n public setEnabledRotationAxis(axis: string) {\r\n this._rotateSpheresParent.getChildMeshes().forEach((m, i) => {\r\n if (i < 4) {\r\n m.setEnabled(axis.indexOf(\"x\") != -1);\r\n } else if (i < 8) {\r\n m.setEnabled(axis.indexOf(\"y\") != -1);\r\n } else {\r\n m.setEnabled(axis.indexOf(\"z\") != -1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Enables/disables scaling\r\n * @param enable if scaling should be enabled\r\n * @param homogeneousScaling defines if scaling should only be homogeneous\r\n */\r\n public setEnabledScaling(enable: boolean, homogeneousScaling = false) {\r\n this._scaleBoxesParent.getChildMeshes().forEach((m, i) => {\r\n let enableMesh = enable;\r\n // Disable heterogeneous scale handles if requested.\r\n if (homogeneousScaling && m.metadata === true) {\r\n enableMesh = false;\r\n }\r\n m.setEnabled(enableMesh);\r\n });\r\n }\r\n\r\n private _updateDummy() {\r\n if (this._dragMesh) {\r\n this._dragMesh.position.copyFrom(this._lineBoundingBox.getAbsolutePosition());\r\n this._dragMesh.scaling.copyFrom(this._lineBoundingBox.scaling);\r\n this._dragMesh.rotationQuaternion!.copyFrom(this._rootMesh.rotationQuaternion!);\r\n }\r\n }\r\n\r\n /**\r\n * Enables a pointer drag behavior on the bounding box of the gizmo\r\n */\r\n public enableDragBehavior() {\r\n this._dragMesh = Mesh.CreateBox(\"dummy\", 1, this.gizmoLayer.utilityLayerScene);\r\n this._dragMesh.visibility = 0;\r\n this._dragMesh.rotationQuaternion = new Quaternion();\r\n this.pointerDragBehavior.useObjectOrientationForDragging = false;\r\n this._dragMesh.addBehavior(this.pointerDragBehavior);\r\n }\r\n\r\n /**\r\n * Disposes of the gizmo\r\n */\r\n public dispose() {\r\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this.gizmoLayer.originalScene.onBeforeRenderObservable.remove(this._renderObserver);\r\n this._lineBoundingBox.dispose();\r\n this._rotateSpheresParent.dispose();\r\n this._scaleBoxesParent.dispose();\r\n if (this._dragMesh) {\r\n this._dragMesh.dispose();\r\n }\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Makes a mesh not pickable and wraps the mesh inside of a bounding box mesh that is pickable. (This is useful to avoid picking within complex geometry)\r\n * @param mesh the mesh to wrap in the bounding box mesh and make not pickable\r\n * @returns the bounding box mesh with the passed in mesh as a child\r\n */\r\n public static MakeNotPickableAndWrapInBoundingBox(mesh: Mesh): Mesh {\r\n var makeNotPickable = (root: AbstractMesh) => {\r\n root.isPickable = false;\r\n root.getChildMeshes().forEach((c) => {\r\n makeNotPickable(c);\r\n });\r\n };\r\n makeNotPickable(mesh);\r\n\r\n // Reset position to get bounding box from origin with no rotation\r\n if (!mesh.rotationQuaternion) {\r\n mesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(mesh.rotation.y, mesh.rotation.x, mesh.rotation.z);\r\n }\r\n var oldPos = mesh.position.clone();\r\n var oldRot = mesh.rotationQuaternion.clone();\r\n mesh.rotationQuaternion.set(0, 0, 0, 1);\r\n mesh.position.set(0, 0, 0);\r\n\r\n // Update bounding dimensions/positions\r\n var box = BoxBuilder.CreateBox(\"box\", { size: 1 }, mesh.getScene());\r\n var boundingMinMax = mesh.getHierarchyBoundingVectors();\r\n boundingMinMax.max.subtractToRef(boundingMinMax.min, box.scaling);\r\n\r\n // Adjust scale to avoid undefined behavior when adding child\r\n if (box.scaling.y === 0) {\r\n box.scaling.y = Epsilon;\r\n }\r\n if (box.scaling.x === 0) {\r\n box.scaling.x = Epsilon;\r\n }\r\n if (box.scaling.z === 0) {\r\n box.scaling.z = Epsilon;\r\n }\r\n\r\n box.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);\r\n\r\n // Restore original positions\r\n mesh.addChild(box);\r\n mesh.rotationQuaternion.copyFrom(oldRot);\r\n mesh.position.copyFrom(oldPos);\r\n\r\n // Reverse parenting\r\n mesh.removeChild(box);\r\n\r\n box.addChild(mesh);\r\n box.visibility = 0;\r\n return box;\r\n }\r\n /**\r\n * CustomMeshes are not supported by this gizmo\r\n * @param mesh The mesh to replace the default mesh of the gizmo\r\n */\r\n public setCustomMesh(mesh: Mesh) {\r\n Logger.Error(\"Custom meshes are not supported on this gizmo\");\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"boundingBoxGizmo.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/boundingBoxGizmo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Nullable } from \"../types\";\r\nimport { PointerInfo } from \"../Events/pointerEvents\";\r\nimport { Scene } from \"../scene\";\r\nimport { Quaternion, Matrix, Vector3 } from \"../Maths/math.vector\";\r\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { CreateSphere } from \"../Meshes/Builders/sphereBuilder\";\r\nimport { CreateBox } from \"../Meshes/Builders/boxBuilder\";\r\nimport { CreateLines } from \"../Meshes/Builders/linesBuilder\";\r\nimport { PointerDragBehavior } from \"../Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Gizmo } from \"./gizmo\";\r\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport { PivotTools } from \"../Misc/pivotTools\";\r\nimport { Color3 } from '../Maths/math.color';\r\n\r\nimport \"../Meshes/Builders/boxBuilder\";\r\nimport { LinesMesh } from '../Meshes/linesMesh';\r\nimport { Epsilon } from '../Maths/math.constants';\r\n\r\n/**\r\n * Bounding box gizmo\r\n */\r\nexport class BoundingBoxGizmo extends Gizmo {\r\n private _lineBoundingBox: AbstractMesh;\r\n private _rotateSpheresParent: AbstractMesh;\r\n private _scaleBoxesParent: AbstractMesh;\r\n private _boundingDimensions = new Vector3(1, 1, 1);\r\n private _renderObserver: Nullable<Observer<Scene>> = null;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>> = null;\r\n private _scaleDragSpeed = 0.2;\r\n\r\n private _tmpQuaternion = new Quaternion();\r\n private _tmpVector = new Vector3(0, 0, 0);\r\n private _tmpRotationMatrix = new Matrix();\r\n /**\r\n * If child meshes should be ignored when calculating the bounding box. This should be set to true to avoid perf hits with heavily nested meshes (Default: false)\r\n */\r\n public ignoreChildren = false;\r\n /**\r\n * Returns true if a descendant should be included when computing the bounding box. When null, all descendants are included. If ignoreChildren is set this will be ignored. (Default: null)\r\n */\r\n public includeChildPredicate: Nullable<(abstractMesh: AbstractMesh) => boolean> = null;\r\n\r\n /**\r\n * The size of the rotation spheres attached to the bounding box (Default: 0.1)\r\n */\r\n public rotationSphereSize = 0.1;\r\n /**\r\n * The size of the scale boxes attached to the bounding box (Default: 0.1)\r\n */\r\n public scaleBoxSize = 0.1;\r\n /**\r\n * If set, the rotation spheres and scale boxes will increase in size based on the distance away from the camera to have a consistent screen size (Default: false)\r\n * Note : fixedDragMeshScreenSize takes precedence over fixedDragMeshBoundsSize if both are true\r\n */\r\n public fixedDragMeshScreenSize = false;\r\n /**\r\n * If set, the rotation spheres and scale boxes will increase in size based on the size of the bounding box\r\n * Note : fixedDragMeshScreenSize takes precedence over fixedDragMeshBoundsSize if both are true\r\n */\r\n public fixedDragMeshBoundsSize = false;\r\n /**\r\n * The distance away from the object which the draggable meshes should appear world sized when fixedDragMeshScreenSize is set to true (default: 10)\r\n */\r\n public fixedDragMeshScreenSizeDistanceFactor = 10;\r\n /**\r\n * Fired when a rotation sphere or scale box is dragged\r\n */\r\n public onDragStartObservable = new Observable<{}>();\r\n /**\r\n * Fired when a scale box is dragged\r\n */\r\n public onScaleBoxDragObservable = new Observable<{}>();\r\n /**\r\n * Fired when a scale box drag is ended\r\n */\r\n public onScaleBoxDragEndObservable = new Observable<{}>();\r\n /**\r\n * Fired when a rotation sphere is dragged\r\n */\r\n public onRotationSphereDragObservable = new Observable<{}>();\r\n /**\r\n * Fired when a rotation sphere drag is ended\r\n */\r\n public onRotationSphereDragEndObservable = new Observable<{}>();\r\n /**\r\n * Relative bounding box pivot used when scaling the attached node. When null object with scale from the opposite corner. 0.5,0.5,0.5 for center and 0.5,0,0.5 for bottom (Default: null)\r\n */\r\n public scalePivot: Nullable<Vector3> = null;\r\n /**\r\n * Scale factor used for masking some axis\r\n */\r\n private _axisFactor = new Vector3(1, 1, 1);\r\n\r\n /**\r\n * Sets the axis factor\r\n * @param factor the Vector3 value\r\n */\r\n public set axisFactor(factor: Vector3) {\r\n this._axisFactor = factor;\r\n // update scale cube visibility\r\n var scaleBoxes = this._scaleBoxesParent.getChildMeshes();\r\n var index = 0;\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n if (scaleBoxes[index]) {\r\n let dragAxis = new Vector3(i - 1, j - 1, k - 1);\r\n dragAxis.multiplyInPlace(this._axisFactor);\r\n scaleBoxes[index].setEnabled(dragAxis.lengthSquared() > Epsilon);\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the axis factor\r\n * @returns the Vector3 factor value\r\n */\r\n public get axisFactor(): Vector3 {\r\n return this._axisFactor;\r\n }\r\n\r\n /**\r\n * Sets scale drag speed value\r\n * @param value the new speed value\r\n */\r\n public set scaleDragSpeed(value: number) {\r\n this._scaleDragSpeed = value;\r\n }\r\n\r\n /**\r\n * Gets scale drag speed\r\n * @returns the scale speed number\r\n */\r\n public get scaleDragSpeed(): number {\r\n return this._scaleDragSpeed;\r\n }\r\n\r\n /**\r\n * Mesh used as a pivot to rotate the attached node\r\n */\r\n private _anchorMesh: AbstractMesh;\r\n\r\n private _existingMeshScale = new Vector3();\r\n\r\n // Dragging\r\n private _dragMesh: Nullable<Mesh> = null;\r\n private pointerDragBehavior = new PointerDragBehavior();\r\n\r\n private coloredMaterial: StandardMaterial;\r\n private hoverColoredMaterial: StandardMaterial;\r\n\r\n /**\r\n * Sets the color of the bounding box gizmo\r\n * @param color the color to set\r\n */\r\n public setColor(color: Color3) {\r\n this.coloredMaterial.emissiveColor = color;\r\n this.hoverColoredMaterial.emissiveColor = color.clone().add(new Color3(0.3, 0.3, 0.3));\r\n this._lineBoundingBox.getChildren().forEach((l) => {\r\n if ((l as LinesMesh).color) {\r\n (l as LinesMesh).color = color;\r\n }\r\n });\r\n }\r\n /**\r\n * Creates an BoundingBoxGizmo\r\n * @param gizmoLayer The utility layer the gizmo will be added to\r\n * @param color The color of the gizmo\r\n */\r\n constructor(color: Color3 = Color3.Gray(), gizmoLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultKeepDepthUtilityLayer) {\r\n super(gizmoLayer);\r\n\r\n // Do not update the gizmo's scale so it has a fixed size to the object its attached to\r\n this.updateScale = false;\r\n\r\n this._anchorMesh = new AbstractMesh(\"anchor\", gizmoLayer.utilityLayerScene);\r\n // Create Materials\r\n this.coloredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this.coloredMaterial.disableLighting = true;\r\n this.hoverColoredMaterial = new StandardMaterial(\"\", gizmoLayer.utilityLayerScene);\r\n this.hoverColoredMaterial.disableLighting = true;\r\n\r\n // Build bounding box out of lines\r\n this._lineBoundingBox = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._lineBoundingBox.rotationQuaternion = new Quaternion();\r\n var lines = [];\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(this._boundingDimensions.x, 0, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(0, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, 0, 0), new Vector3(0, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, 0, 0), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, 0, 0), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, this._boundingDimensions.y, 0), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, this._boundingDimensions.y, 0), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, 0, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(0, 0, this._boundingDimensions.z), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(0, this._boundingDimensions.y, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, 0, this._boundingDimensions.z)] }, gizmoLayer.utilityLayerScene));\r\n lines.push(CreateLines(\"lines\", { points: [new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, this._boundingDimensions.z), new Vector3(this._boundingDimensions.x, this._boundingDimensions.y, 0)] }, gizmoLayer.utilityLayerScene));\r\n lines.forEach((l) => {\r\n l.color = color;\r\n l.position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n l.isPickable = false;\r\n this._lineBoundingBox.addChild(l);\r\n });\r\n this._rootMesh.addChild(this._lineBoundingBox);\r\n\r\n this.setColor(color);\r\n\r\n // Create rotation spheres\r\n this._rotateSpheresParent = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._rotateSpheresParent.rotationQuaternion = new Quaternion();\r\n for (let i = 0; i < 12; i++) {\r\n let sphere = CreateSphere(\"\", { diameter: 1 }, gizmoLayer.utilityLayerScene);\r\n sphere.rotationQuaternion = new Quaternion();\r\n sphere.material = this.coloredMaterial;\r\n sphere.isNearGrabbable = true;\r\n\r\n // Drag behavior\r\n var _dragBehavior = new PointerDragBehavior({});\r\n _dragBehavior.moveAttached = false;\r\n _dragBehavior.updateDragPlane = false;\r\n sphere.addBehavior(_dragBehavior);\r\n let startingTurnDirection = new Vector3(1, 0, 0);\r\n let totalTurnAmountOfDrag = 0;\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n startingTurnDirection.copyFrom(sphere.forward);\r\n totalTurnAmountOfDrag = 0;\r\n });\r\n _dragBehavior.onDragObservable.add((event) => {\r\n this.onRotationSphereDragObservable.notifyObservers({});\r\n if (this.attachedMesh) {\r\n var originalParent = this.attachedMesh.parent;\r\n if (originalParent && ((originalParent as Mesh).scaling && (originalParent as Mesh).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n Logger.Warn(\"BoundingBoxGizmo controls are not supported on child meshes with non-uniform parent scaling\");\r\n return;\r\n }\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n\r\n var worldDragDirection = startingTurnDirection;\r\n\r\n // Project the world right on to the drag plane\r\n var toSub = event.dragPlaneNormal.scale(Vector3.Dot(event.dragPlaneNormal, worldDragDirection));\r\n var dragAxis = worldDragDirection.subtract(toSub).normalizeToNew();\r\n\r\n // project drag delta on to the resulting drag axis and rotate based on that\r\n var projectDist = Vector3.Dot(dragAxis, event.delta) < 0 ? Math.abs(event.delta.length()) : -Math.abs(event.delta.length());\r\n\r\n // Make rotation relative to size of mesh.\r\n projectDist = (projectDist / this._boundingDimensions.length()) * this._anchorMesh.scaling.length();\r\n\r\n // Rotate based on axis\r\n if (!this.attachedMesh.rotationQuaternion) {\r\n this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);\r\n }\r\n if (!this._anchorMesh.rotationQuaternion) {\r\n this._anchorMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._anchorMesh.rotation.y, this._anchorMesh.rotation.x, this._anchorMesh.rotation.z);\r\n }\r\n\r\n // Do not allow the object to turn more than a full circle\r\n totalTurnAmountOfDrag += projectDist;\r\n if (Math.abs(totalTurnAmountOfDrag) <= 2 * Math.PI) {\r\n if (i >= 8) {\r\n Quaternion.RotationYawPitchRollToRef(0, 0, projectDist, this._tmpQuaternion);\r\n } else if (i >= 4) {\r\n Quaternion.RotationYawPitchRollToRef(projectDist, 0, 0, this._tmpQuaternion);\r\n } else {\r\n Quaternion.RotationYawPitchRollToRef(0, projectDist, 0, this._tmpQuaternion);\r\n }\r\n\r\n // Rotate around center of bounding box\r\n this._anchorMesh.addChild(this.attachedMesh);\r\n this._anchorMesh.rotationQuaternion!.multiplyToRef(this._tmpQuaternion, this._anchorMesh.rotationQuaternion!);\r\n this._anchorMesh.removeChild(this.attachedMesh);\r\n this.attachedMesh.setParent(originalParent);\r\n }\r\n this.updateBoundingBox();\r\n\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n this._updateDummy();\r\n });\r\n\r\n // Selection/deselection\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n this.onDragStartObservable.notifyObservers({});\r\n this._selectNode(sphere);\r\n });\r\n _dragBehavior.onDragEndObservable.add(() => {\r\n this.onRotationSphereDragEndObservable.notifyObservers({});\r\n this._selectNode(null);\r\n this._updateDummy();\r\n });\r\n\r\n this._rotateSpheresParent.addChild(sphere);\r\n }\r\n this._rootMesh.addChild(this._rotateSpheresParent);\r\n\r\n // Create scale cubes\r\n this._scaleBoxesParent = new AbstractMesh(\"\", gizmoLayer.utilityLayerScene);\r\n this._scaleBoxesParent.rotationQuaternion = new Quaternion();\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n // create box for relevant axis\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n\r\n let box = CreateBox(\"\", { size: 1 }, gizmoLayer.utilityLayerScene);\r\n box.material = this.coloredMaterial;\r\n box.metadata = zeroAxisCount === 2; // None homogenous scale handle\r\n box.isNearGrabbable = true;\r\n\r\n // Dragging logic\r\n let dragAxis = new Vector3(i - 1, j - 1, k - 1).normalize();\r\n var _dragBehavior = new PointerDragBehavior({ dragAxis: dragAxis });\r\n _dragBehavior.updateDragPlane = false;\r\n _dragBehavior.moveAttached = false;\r\n box.addBehavior(_dragBehavior);\r\n _dragBehavior.onDragObservable.add((event) => {\r\n this.onScaleBoxDragObservable.notifyObservers({});\r\n if (this.attachedMesh) {\r\n var originalParent = this.attachedMesh.parent;\r\n if (originalParent && ((originalParent as Mesh).scaling && (originalParent as Mesh).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n Logger.Warn(\"BoundingBoxGizmo controls are not supported on child meshes with non-uniform parent scaling\");\r\n return;\r\n }\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n var relativeDragDistance = (event.dragDistance / this._boundingDimensions.length()) * this._anchorMesh.scaling.length();\r\n var deltaScale = new Vector3(relativeDragDistance, relativeDragDistance, relativeDragDistance);\r\n if (zeroAxisCount === 2) {\r\n // scale on 1 axis when using the anchor box in the face middle\r\n deltaScale.x *= Math.abs(dragAxis.x);\r\n deltaScale.y *= Math.abs(dragAxis.y);\r\n deltaScale.z *= Math.abs(dragAxis.z);\r\n }\r\n deltaScale.scaleInPlace(this._scaleDragSpeed);\r\n deltaScale.multiplyInPlace(this._axisFactor);\r\n this.updateBoundingBox();\r\n if (this.scalePivot) {\r\n this.attachedMesh.getWorldMatrix().getRotationMatrixToRef(this._tmpRotationMatrix);\r\n // Move anchor to desired pivot point (Bottom left corner + dimension/2)\r\n this._boundingDimensions.scaleToRef(0.5, this._tmpVector);\r\n Vector3.TransformCoordinatesToRef(this._tmpVector, this._tmpRotationMatrix, this._tmpVector);\r\n this._anchorMesh.position.subtractInPlace(this._tmpVector);\r\n this._boundingDimensions.multiplyToRef(this.scalePivot, this._tmpVector);\r\n Vector3.TransformCoordinatesToRef(this._tmpVector, this._tmpRotationMatrix, this._tmpVector);\r\n this._anchorMesh.position.addInPlace(this._tmpVector);\r\n } else {\r\n // Scale from the position of the opposite corner\r\n box.absolutePosition.subtractToRef(this._anchorMesh.position, this._tmpVector);\r\n this._anchorMesh.position.subtractInPlace(this._tmpVector);\r\n }\r\n\r\n this._anchorMesh.addChild(this.attachedMesh);\r\n this._anchorMesh.scaling.addInPlace(deltaScale);\r\n if (this._anchorMesh.scaling.x < 0 || this._anchorMesh.scaling.y < 0 || this._anchorMesh.scaling.z < 0) {\r\n this._anchorMesh.scaling.subtractInPlace(deltaScale);\r\n }\r\n this._anchorMesh.removeChild(this.attachedMesh);\r\n this.attachedMesh.setParent(originalParent);\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n this._updateDummy();\r\n });\r\n\r\n // Selection/deselection\r\n _dragBehavior.onDragStartObservable.add(() => {\r\n this.onDragStartObservable.notifyObservers({});\r\n this._selectNode(box);\r\n });\r\n _dragBehavior.onDragEndObservable.add(() => {\r\n this.onScaleBoxDragEndObservable.notifyObservers({});\r\n this._selectNode(null);\r\n this._updateDummy();\r\n });\r\n\r\n this._scaleBoxesParent.addChild(box);\r\n }\r\n }\r\n }\r\n this._rootMesh.addChild(this._scaleBoxesParent);\r\n\r\n // Hover color change\r\n var pointerIds = new Array<AbstractMesh>();\r\n this._pointerObserver = gizmoLayer.utilityLayerScene.onPointerObservable.add((pointerInfo) => {\r\n if (!pointerIds[(<PointerEvent>pointerInfo.event).pointerId]) {\r\n this._rotateSpheresParent.getChildMeshes().concat(this._scaleBoxesParent.getChildMeshes()).forEach((mesh) => {\r\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh == mesh) {\r\n pointerIds[(<PointerEvent>pointerInfo.event).pointerId] = mesh;\r\n mesh.material = this.hoverColoredMaterial;\r\n }\r\n });\r\n } else {\r\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh != pointerIds[(<PointerEvent>pointerInfo.event).pointerId]) {\r\n pointerIds[(<PointerEvent>pointerInfo.event).pointerId].material = this.coloredMaterial;\r\n delete pointerIds[(<PointerEvent>pointerInfo.event).pointerId];\r\n }\r\n }\r\n });\r\n\r\n // Update bounding box positions\r\n this._renderObserver = this.gizmoLayer.originalScene.onBeforeRenderObservable.add(() => {\r\n // Only update the bounding box if scaling has changed\r\n if (this.attachedMesh && !this._existingMeshScale.equals(this.attachedMesh.scaling)) {\r\n this.updateBoundingBox();\r\n } else if (this.fixedDragMeshScreenSize || this.fixedDragMeshBoundsSize) {\r\n this._updateRotationSpheres();\r\n this._updateScaleBoxes();\r\n }\r\n\r\n // If drag mesh is enabled and dragging, update the attached mesh pose to match the drag mesh\r\n if (this._dragMesh && this.attachedMesh && this.pointerDragBehavior.dragging) {\r\n this._lineBoundingBox.position.rotateByQuaternionToRef(this._rootMesh.rotationQuaternion!, this._tmpVector);\r\n this.attachedMesh.setAbsolutePosition(this._dragMesh.position.add(this._tmpVector.scale(-1)));\r\n }\r\n });\r\n this.updateBoundingBox();\r\n }\r\n\r\n protected _attachedNodeChanged(value: Nullable<AbstractMesh>) {\r\n if (value) {\r\n // Reset anchor mesh to match attached mesh's scale\r\n // This is needed to avoid invalid box/sphere position on first drag\r\n this._anchorMesh.scaling.setAll(1);\r\n PivotTools._RemoveAndStorePivotPoint(value);\r\n var originalParent = value.parent;\r\n this._anchorMesh.addChild(value);\r\n this._anchorMesh.removeChild(value);\r\n value.setParent(originalParent);\r\n PivotTools._RestorePivotPoint(value);\r\n this.updateBoundingBox();\r\n value.getChildMeshes(false).forEach((m) => {\r\n m.markAsDirty(\"scaling\");\r\n });\r\n\r\n this.gizmoLayer.utilityLayerScene.onAfterRenderObservable.addOnce(() => {\r\n this._updateDummy();\r\n });\r\n }\r\n }\r\n\r\n private _selectNode(selectedMesh: Nullable<Mesh>) {\r\n this._rotateSpheresParent.getChildMeshes()\r\n .concat(this._scaleBoxesParent.getChildMeshes()).forEach((m) => {\r\n m.isVisible = (!selectedMesh || m == selectedMesh);\r\n });\r\n }\r\n\r\n /**\r\n * Updates the bounding box information for the Gizmo\r\n */\r\n public updateBoundingBox() {\r\n if (this.attachedMesh) {\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n\r\n // Store original parent\r\n var originalParent = this.attachedMesh.parent;\r\n this.attachedMesh.setParent(null);\r\n\r\n // Store original skeleton override mesh\r\n var originalSkeletonOverrideMesh = null;\r\n if (this.attachedMesh.skeleton) {\r\n originalSkeletonOverrideMesh = this.attachedMesh.skeleton.overrideMesh;\r\n this.attachedMesh.skeleton.overrideMesh = null;\r\n }\r\n\r\n this._update();\r\n\r\n // Rotate based on axis\r\n if (!this.attachedMesh.rotationQuaternion) {\r\n this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);\r\n }\r\n if (!this._anchorMesh.rotationQuaternion) {\r\n this._anchorMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._anchorMesh.rotation.y, this._anchorMesh.rotation.x, this._anchorMesh.rotation.z);\r\n }\r\n this._anchorMesh.rotationQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);\r\n\r\n // Store original position and reset mesh to origin before computing the bounding box\r\n this._tmpQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);\r\n this._tmpVector.copyFrom(this.attachedMesh.position);\r\n this.attachedMesh.rotationQuaternion.set(0, 0, 0, 1);\r\n this.attachedMesh.position.set(0, 0, 0);\r\n\r\n // Update bounding dimensions/positions\r\n var boundingMinMax = this.attachedMesh.getHierarchyBoundingVectors(!this.ignoreChildren, this.includeChildPredicate);\r\n boundingMinMax.max.subtractToRef(boundingMinMax.min, this._boundingDimensions);\r\n\r\n // Update gizmo to match bounding box scaling and rotation\r\n // The position set here is the offset from the origin for the boundingbox when the attached mesh is at the origin\r\n // The position of the gizmo is then set to the attachedMesh in gizmo._update\r\n this._lineBoundingBox.scaling.copyFrom(this._boundingDimensions);\r\n this._lineBoundingBox.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);\r\n this._rotateSpheresParent.position.copyFrom(this._lineBoundingBox.position);\r\n this._scaleBoxesParent.position.copyFrom(this._lineBoundingBox.position);\r\n this._lineBoundingBox.computeWorldMatrix();\r\n this._anchorMesh.position.copyFrom(this._lineBoundingBox.absolutePosition);\r\n\r\n // Restore position/rotation values\r\n this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);\r\n this.attachedMesh.position.copyFrom(this._tmpVector);\r\n\r\n // Restore original parent\r\n this.attachedMesh.setParent(originalParent);\r\n\r\n // Restore original skeleton override mesh\r\n if (this.attachedMesh.skeleton) {\r\n this.attachedMesh.skeleton.overrideMesh = originalSkeletonOverrideMesh;\r\n }\r\n }\r\n\r\n this._updateRotationSpheres();\r\n this._updateScaleBoxes();\r\n\r\n if (this.attachedMesh) {\r\n this._existingMeshScale.copyFrom(this.attachedMesh.scaling);\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n }\r\n }\r\n\r\n private _updateRotationSpheres() {\r\n var rotateSpheres = this._rotateSpheresParent.getChildMeshes();\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 2; j++) {\r\n for (var k = 0; k < 2; k++) {\r\n var index = ((i * 4) + (j * 2)) + k;\r\n if (i == 0) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x / 2, this._boundingDimensions.y * j, this._boundingDimensions.z * k);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Right()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (i == 1) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x * j, this._boundingDimensions.y / 2, this._boundingDimensions.z * k);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Up()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (i == 2) {\r\n rotateSpheres[index].position.set(this._boundingDimensions.x * j, this._boundingDimensions.y * k, this._boundingDimensions.z / 2);\r\n rotateSpheres[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n rotateSpheres[index].lookAt(Vector3.Cross(rotateSpheres[index].position.normalizeToNew(), Vector3.Forward()).normalizeToNew().add(rotateSpheres[index].position));\r\n }\r\n if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {\r\n rotateSpheres[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);\r\n var distanceFromCamera = this.rotationSphereSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;\r\n rotateSpheres[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);\r\n } else if (this.fixedDragMeshBoundsSize) {\r\n rotateSpheres[index].scaling.set(this.rotationSphereSize * this._boundingDimensions.x, this.rotationSphereSize * this._boundingDimensions.y, this.rotationSphereSize * this._boundingDimensions.z);\r\n } else {\r\n rotateSpheres[index].scaling.set(this.rotationSphereSize, this.rotationSphereSize, this.rotationSphereSize);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _updateScaleBoxes() {\r\n var scaleBoxes = this._scaleBoxesParent.getChildMeshes();\r\n var index = 0;\r\n for (var i = 0; i < 3; i++) {\r\n for (var j = 0; j < 3; j++) {\r\n for (var k = 0; k < 3; k++) {\r\n let zeroAxisCount = ((i === 1) ? 1 : 0) + ((j === 1) ? 1 : 0) + ((k === 1) ? 1 : 0);\r\n if (zeroAxisCount === 1 || zeroAxisCount === 3) {\r\n continue;\r\n }\r\n if (scaleBoxes[index]) {\r\n scaleBoxes[index].position.set(this._boundingDimensions.x * (i / 2), this._boundingDimensions.y * (j / 2), this._boundingDimensions.z * (k / 2));\r\n scaleBoxes[index].position.addInPlace(new Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));\r\n if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {\r\n scaleBoxes[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);\r\n var distanceFromCamera = this.scaleBoxSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;\r\n scaleBoxes[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);\r\n } else if (this.fixedDragMeshBoundsSize) {\r\n scaleBoxes[index].scaling.set(this.scaleBoxSize * this._boundingDimensions.x, this.scaleBoxSize * this._boundingDimensions.y, this.scaleBoxSize * this._boundingDimensions.z);\r\n } else {\r\n scaleBoxes[index].scaling.set(this.scaleBoxSize, this.scaleBoxSize, this.scaleBoxSize);\r\n }\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enables rotation on the specified axis and disables rotation on the others\r\n * @param axis The list of axis that should be enabled (eg. \"xy\" or \"xyz\")\r\n */\r\n public setEnabledRotationAxis(axis: string) {\r\n this._rotateSpheresParent.getChildMeshes().forEach((m, i) => {\r\n if (i < 4) {\r\n m.setEnabled(axis.indexOf(\"x\") != -1);\r\n } else if (i < 8) {\r\n m.setEnabled(axis.indexOf(\"y\") != -1);\r\n } else {\r\n m.setEnabled(axis.indexOf(\"z\") != -1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Enables/disables scaling\r\n * @param enable if scaling should be enabled\r\n * @param homogeneousScaling defines if scaling should only be homogeneous\r\n */\r\n public setEnabledScaling(enable: boolean, homogeneousScaling = false) {\r\n this._scaleBoxesParent.getChildMeshes().forEach((m, i) => {\r\n let enableMesh = enable;\r\n // Disable heterogeneous scale handles if requested.\r\n if (homogeneousScaling && m.metadata === true) {\r\n enableMesh = false;\r\n }\r\n m.setEnabled(enableMesh);\r\n });\r\n }\r\n\r\n private _updateDummy() {\r\n if (this._dragMesh) {\r\n this._dragMesh.position.copyFrom(this._lineBoundingBox.getAbsolutePosition());\r\n this._dragMesh.scaling.copyFrom(this._lineBoundingBox.scaling);\r\n this._dragMesh.rotationQuaternion!.copyFrom(this._rootMesh.rotationQuaternion!);\r\n }\r\n }\r\n\r\n /**\r\n * Enables a pointer drag behavior on the bounding box of the gizmo\r\n */\r\n public enableDragBehavior() {\r\n this._dragMesh = CreateBox(\"dummy\", { size: 1 }, this.gizmoLayer.utilityLayerScene);\r\n this._dragMesh.visibility = 0;\r\n this._dragMesh.rotationQuaternion = new Quaternion();\r\n this.pointerDragBehavior.useObjectOrientationForDragging = false;\r\n this._dragMesh.addBehavior(this.pointerDragBehavior);\r\n }\r\n\r\n /**\r\n * Disposes of the gizmo\r\n */\r\n public dispose() {\r\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this.gizmoLayer.originalScene.onBeforeRenderObservable.remove(this._renderObserver);\r\n this._lineBoundingBox.dispose();\r\n this._rotateSpheresParent.dispose();\r\n this._scaleBoxesParent.dispose();\r\n if (this._dragMesh) {\r\n this._dragMesh.dispose();\r\n }\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Makes a mesh not pickable and wraps the mesh inside of a bounding box mesh that is pickable. (This is useful to avoid picking within complex geometry)\r\n * @param mesh the mesh to wrap in the bounding box mesh and make not pickable\r\n * @returns the bounding box mesh with the passed in mesh as a child\r\n */\r\n public static MakeNotPickableAndWrapInBoundingBox(mesh: Mesh): Mesh {\r\n var makeNotPickable = (root: AbstractMesh) => {\r\n root.isPickable = false;\r\n root.getChildMeshes().forEach((c) => {\r\n makeNotPickable(c);\r\n });\r\n };\r\n makeNotPickable(mesh);\r\n\r\n // Reset position to get bounding box from origin with no rotation\r\n if (!mesh.rotationQuaternion) {\r\n mesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(mesh.rotation.y, mesh.rotation.x, mesh.rotation.z);\r\n }\r\n var oldPos = mesh.position.clone();\r\n var oldRot = mesh.rotationQuaternion.clone();\r\n mesh.rotationQuaternion.set(0, 0, 0, 1);\r\n mesh.position.set(0, 0, 0);\r\n\r\n // Update bounding dimensions/positions\r\n var box = CreateBox(\"box\", { size: 1 }, mesh.getScene());\r\n var boundingMinMax = mesh.getHierarchyBoundingVectors();\r\n boundingMinMax.max.subtractToRef(boundingMinMax.min, box.scaling);\r\n\r\n // Adjust scale to avoid undefined behavior when adding child\r\n if (box.scaling.y === 0) {\r\n box.scaling.y = Epsilon;\r\n }\r\n if (box.scaling.x === 0) {\r\n box.scaling.x = Epsilon;\r\n }\r\n if (box.scaling.z === 0) {\r\n box.scaling.z = Epsilon;\r\n }\r\n\r\n box.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);\r\n\r\n // Restore original positions\r\n mesh.addChild(box);\r\n mesh.rotationQuaternion.copyFrom(oldRot);\r\n mesh.position.copyFrom(oldPos);\r\n\r\n // Reverse parenting\r\n mesh.removeChild(box);\r\n\r\n box.addChild(mesh);\r\n box.visibility = 0;\r\n return box;\r\n }\r\n /**\r\n * CustomMeshes are not supported by this gizmo\r\n * @param mesh The mesh to replace the default mesh of the gizmo\r\n */\r\n public setCustomMesh(mesh: Mesh) {\r\n Logger.Error(\"Custom meshes are not supported on this gizmo\");\r\n }\r\n}\r\n"]}