@babylonjs/core 5.32.0 → 5.32.2

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 (636) hide show
  1. package/Actions/abstractActionManager.d.ts +1 -1
  2. package/Actions/abstractActionManager.js +1 -1
  3. package/Actions/abstractActionManager.js.map +1 -1
  4. package/Actions/action.d.ts +1 -1
  5. package/Actions/action.js +1 -1
  6. package/Actions/action.js.map +1 -1
  7. package/Actions/actionManager.d.ts +18 -18
  8. package/Actions/actionManager.js +18 -18
  9. package/Actions/actionManager.js.map +1 -1
  10. package/Actions/directActions.d.ts +10 -10
  11. package/Actions/directActions.js +10 -10
  12. package/Actions/directActions.js.map +1 -1
  13. package/Actions/interpolateValueAction.d.ts +1 -1
  14. package/Actions/interpolateValueAction.js +1 -1
  15. package/Actions/interpolateValueAction.js.map +1 -1
  16. package/Animations/animatable.d.ts +2 -2
  17. package/Animations/animatable.js +2 -2
  18. package/Animations/animatable.js.map +1 -1
  19. package/Animations/animationGroup.d.ts +3 -3
  20. package/Animations/animationGroup.js +3 -3
  21. package/Animations/animationGroup.js.map +1 -1
  22. package/Animations/easing.d.ts +14 -14
  23. package/Animations/easing.js +13 -13
  24. package/Animations/easing.js.map +1 -1
  25. package/Audio/Interfaces/IAudioEngine.d.ts +2 -2
  26. package/Audio/Interfaces/IAudioEngine.js.map +1 -1
  27. package/Audio/Interfaces/ISoundOptions.d.ts +3 -3
  28. package/Audio/Interfaces/ISoundOptions.js.map +1 -1
  29. package/Audio/analyser.d.ts +1 -1
  30. package/Audio/analyser.js +1 -1
  31. package/Audio/analyser.js.map +1 -1
  32. package/Audio/audioEngine.d.ts +2 -2
  33. package/Audio/audioEngine.js +2 -2
  34. package/Audio/audioEngine.js.map +1 -1
  35. package/Audio/audioSceneComponent.d.ts +4 -4
  36. package/Audio/audioSceneComponent.js.map +1 -1
  37. package/Audio/sound.d.ts +13 -13
  38. package/Audio/sound.js +13 -13
  39. package/Audio/sound.js.map +1 -1
  40. package/Audio/soundTrack.d.ts +5 -5
  41. package/Audio/soundTrack.js +5 -5
  42. package/Audio/soundTrack.js.map +1 -1
  43. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
  44. package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
  45. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  46. package/Behaviors/Cameras/autoRotationBehavior.d.ts +1 -1
  47. package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
  48. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  49. package/Behaviors/Cameras/bouncingBehavior.d.ts +1 -1
  50. package/Behaviors/Cameras/bouncingBehavior.js +1 -1
  51. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  52. package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
  53. package/Behaviors/Cameras/framingBehavior.js +1 -1
  54. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  55. package/Behaviors/Meshes/pointerDragBehavior.d.ts +8 -0
  56. package/Behaviors/Meshes/pointerDragBehavior.js +9 -3
  57. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  58. package/Bones/bone.d.ts +1 -1
  59. package/Bones/bone.js +1 -1
  60. package/Bones/bone.js.map +1 -1
  61. package/Bones/boneIKController.d.ts +1 -1
  62. package/Bones/boneIKController.js +1 -1
  63. package/Bones/boneIKController.js.map +1 -1
  64. package/Bones/boneLookController.d.ts +1 -1
  65. package/Bones/boneLookController.js +1 -1
  66. package/Bones/boneLookController.js.map +1 -1
  67. package/Bones/skeleton.d.ts +3 -3
  68. package/Bones/skeleton.js +2 -2
  69. package/Bones/skeleton.js.map +1 -1
  70. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +2 -2
  71. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  72. package/Cameras/Inputs/BaseCameraPointersInput.js +2 -2
  73. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  74. package/Cameras/Inputs/arcRotateCameraGamepadInput.d.ts +1 -1
  75. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +1 -1
  76. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  77. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +1 -1
  78. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
  79. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  80. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.d.ts +1 -1
  81. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +3 -3
  82. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  83. package/Cameras/Inputs/arcRotateCameraPointersInput.d.ts +1 -1
  84. package/Cameras/Inputs/arcRotateCameraPointersInput.js +1 -1
  85. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  86. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.d.ts +1 -1
  87. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +1 -1
  88. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js.map +1 -1
  89. package/Cameras/Inputs/flyCameraKeyboardInput.d.ts +1 -1
  90. package/Cameras/Inputs/flyCameraKeyboardInput.js +1 -1
  91. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  92. package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -2
  93. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  94. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  95. package/Cameras/Inputs/followCameraKeyboardMoveInput.d.ts +1 -1
  96. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
  97. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  98. package/Cameras/Inputs/followCameraMouseWheelInput.d.ts +1 -1
  99. package/Cameras/Inputs/followCameraMouseWheelInput.js +3 -3
  100. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  101. package/Cameras/Inputs/followCameraPointersInput.d.ts +1 -1
  102. package/Cameras/Inputs/followCameraPointersInput.js +1 -1
  103. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  104. package/Cameras/Inputs/freeCameraDeviceOrientationInput.d.ts +2 -2
  105. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +2 -2
  106. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  107. package/Cameras/Inputs/freeCameraGamepadInput.d.ts +1 -1
  108. package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
  109. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  110. package/Cameras/Inputs/freeCameraKeyboardMoveInput.d.ts +1 -1
  111. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +1 -1
  112. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  113. package/Cameras/Inputs/freeCameraMouseInput.d.ts +3 -2
  114. package/Cameras/Inputs/freeCameraMouseInput.js +10 -7
  115. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  116. package/Cameras/Inputs/freeCameraMouseWheelInput.d.ts +1 -1
  117. package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
  118. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  119. package/Cameras/Inputs/freeCameraTouchInput.d.ts +2 -2
  120. package/Cameras/Inputs/freeCameraTouchInput.js +4 -4
  121. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  122. package/Cameras/Inputs/freeCameraVirtualJoystickInput.d.ts +1 -1
  123. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +1 -1
  124. package/Cameras/Inputs/freeCameraVirtualJoystickInput.js.map +1 -1
  125. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +1 -1
  126. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +1 -1
  127. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  128. package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +1 -1
  129. package/Cameras/Stereoscopic/anaglyphFreeCamera.js +1 -1
  130. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  131. package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +1 -1
  132. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +1 -1
  133. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  134. package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +1 -1
  135. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +1 -1
  136. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  137. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +1 -1
  138. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +1 -1
  139. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  140. package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +1 -1
  141. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +1 -1
  142. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  143. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +1 -1
  144. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +1 -1
  145. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  146. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +1 -1
  147. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
  148. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  149. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +1 -1
  150. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +1 -1
  151. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  152. package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
  153. package/Cameras/VR/vrCameraMetrics.js +1 -1
  154. package/Cameras/VR/vrCameraMetrics.js.map +1 -1
  155. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +1 -1
  156. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  157. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  158. package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +1 -1
  159. package/Cameras/VR/vrDeviceOrientationFreeCamera.js +1 -1
  160. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  161. package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +1 -1
  162. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +1 -1
  163. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  164. package/Cameras/VR/vrExperienceHelper.d.ts +2 -2
  165. package/Cameras/VR/vrExperienceHelper.js +2 -2
  166. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  167. package/Cameras/VR/webVRCamera.d.ts +2 -2
  168. package/Cameras/VR/webVRCamera.js +2 -2
  169. package/Cameras/VR/webVRCamera.js.map +1 -1
  170. package/Cameras/arcRotateCamera.d.ts +9 -9
  171. package/Cameras/arcRotateCamera.js +9 -9
  172. package/Cameras/arcRotateCamera.js.map +1 -1
  173. package/Cameras/arcRotateCameraInputsManager.d.ts +1 -1
  174. package/Cameras/arcRotateCameraInputsManager.js +1 -1
  175. package/Cameras/arcRotateCameraInputsManager.js.map +1 -1
  176. package/Cameras/camera.d.ts +4 -4
  177. package/Cameras/camera.js +4 -4
  178. package/Cameras/camera.js.map +1 -1
  179. package/Cameras/cameraInputsManager.d.ts +1 -1
  180. package/Cameras/cameraInputsManager.js +1 -1
  181. package/Cameras/cameraInputsManager.js.map +1 -1
  182. package/Cameras/flyCamera.d.ts +1 -1
  183. package/Cameras/flyCamera.js +1 -1
  184. package/Cameras/flyCamera.js.map +1 -1
  185. package/Cameras/flyCameraInputsManager.d.ts +1 -1
  186. package/Cameras/flyCameraInputsManager.js +1 -1
  187. package/Cameras/flyCameraInputsManager.js.map +1 -1
  188. package/Cameras/followCamera.d.ts +4 -4
  189. package/Cameras/followCamera.js +4 -4
  190. package/Cameras/followCamera.js.map +1 -1
  191. package/Cameras/followCameraInputsManager.d.ts +1 -1
  192. package/Cameras/followCameraInputsManager.js +1 -1
  193. package/Cameras/followCameraInputsManager.js.map +1 -1
  194. package/Cameras/freeCamera.d.ts +3 -3
  195. package/Cameras/freeCamera.js +3 -3
  196. package/Cameras/freeCamera.js.map +1 -1
  197. package/Cameras/freeCameraInputsManager.d.ts +1 -1
  198. package/Cameras/freeCameraInputsManager.js +1 -1
  199. package/Cameras/freeCameraInputsManager.js.map +1 -1
  200. package/Cameras/gamepadCamera.d.ts +2 -2
  201. package/Cameras/gamepadCamera.js +2 -2
  202. package/Cameras/gamepadCamera.js.map +1 -1
  203. package/Cameras/targetCamera.d.ts +2 -2
  204. package/Cameras/targetCamera.js +2 -2
  205. package/Cameras/targetCamera.js.map +1 -1
  206. package/Cameras/touchCamera.d.ts +2 -2
  207. package/Cameras/touchCamera.js +2 -2
  208. package/Cameras/touchCamera.js.map +1 -1
  209. package/Cameras/universalCamera.d.ts +2 -2
  210. package/Cameras/universalCamera.js +2 -2
  211. package/Cameras/universalCamera.js.map +1 -1
  212. package/Cameras/virtualJoysticksCamera.d.ts +2 -2
  213. package/Cameras/virtualJoysticksCamera.js +2 -2
  214. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  215. package/Collisions/pickingInfo.d.ts +1 -1
  216. package/Collisions/pickingInfo.js +1 -1
  217. package/Collisions/pickingInfo.js.map +1 -1
  218. package/Culling/Octrees/octree.d.ts +2 -2
  219. package/Culling/Octrees/octree.js +2 -2
  220. package/Culling/Octrees/octree.js.map +1 -1
  221. package/Culling/Octrees/octreeBlock.d.ts +1 -1
  222. package/Culling/Octrees/octreeBlock.js +1 -1
  223. package/Culling/Octrees/octreeBlock.js.map +1 -1
  224. package/Culling/Octrees/octreeSceneComponent.d.ts +3 -3
  225. package/Culling/Octrees/octreeSceneComponent.js +1 -1
  226. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  227. package/Culling/boundingInfo.d.ts +3 -3
  228. package/Culling/boundingInfo.js +2 -2
  229. package/Culling/boundingInfo.js.map +1 -1
  230. package/Debug/debugLayer.d.ts +1 -1
  231. package/Debug/debugLayer.js.map +1 -1
  232. package/Debug/rayHelper.d.ts +2 -2
  233. package/Debug/rayHelper.js +2 -2
  234. package/Debug/rayHelper.js.map +1 -1
  235. package/Engines/Extensions/engine.alpha.d.ts +2 -2
  236. package/Engines/Extensions/engine.alpha.js.map +1 -1
  237. package/Engines/Extensions/engine.multiRender.d.ts +2 -2
  238. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  239. package/Engines/Extensions/engine.query.d.ts +8 -8
  240. package/Engines/Extensions/engine.query.js.map +1 -1
  241. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  242. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  243. package/Engines/Extensions/engine.uniformBuffer.d.ts +3 -3
  244. package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
  245. package/Engines/Extensions/engine.views.d.ts +2 -2
  246. package/Engines/Extensions/engine.views.js +1 -1
  247. package/Engines/Extensions/engine.views.js.map +1 -1
  248. package/Engines/Extensions/engine.webVR.d.ts +1 -1
  249. package/Engines/Extensions/engine.webVR.js.map +1 -1
  250. package/Engines/Processors/shaderProcessor.d.ts +2 -2
  251. package/Engines/Processors/shaderProcessor.js +2 -2
  252. package/Engines/Processors/shaderProcessor.js.map +1 -1
  253. package/Engines/WebGPU/webgpuShaderProcessor.js +11 -9
  254. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  255. package/Engines/constants.d.ts +17 -17
  256. package/Engines/constants.js +17 -17
  257. package/Engines/constants.js.map +1 -1
  258. package/Engines/engine.d.ts +12 -12
  259. package/Engines/engine.js +11 -11
  260. package/Engines/engine.js.map +1 -1
  261. package/Engines/nativeEngine.d.ts +2 -2
  262. package/Engines/nativeEngine.js +23 -2
  263. package/Engines/nativeEngine.js.map +1 -1
  264. package/Engines/nullEngine.d.ts +5 -5
  265. package/Engines/nullEngine.js +5 -5
  266. package/Engines/nullEngine.js.map +1 -1
  267. package/Engines/thinEngine.d.ts +8 -8
  268. package/Engines/thinEngine.js +6 -6
  269. package/Engines/thinEngine.js.map +1 -1
  270. package/Engines/webgpuEngine.d.ts +4 -4
  271. package/Engines/webgpuEngine.js +1 -1
  272. package/Engines/webgpuEngine.js.map +1 -1
  273. package/Gamepads/gamepadSceneComponent.d.ts +1 -1
  274. package/Gamepads/gamepadSceneComponent.js.map +1 -1
  275. package/Gizmos/gizmo.d.ts +6 -7
  276. package/Gizmos/gizmo.js +43 -36
  277. package/Gizmos/gizmo.js.map +1 -1
  278. package/Gizmos/planeRotationGizmo.js +17 -7
  279. package/Gizmos/planeRotationGizmo.js.map +1 -1
  280. package/Gizmos/positionGizmo.d.ts +4 -0
  281. package/Gizmos/positionGizmo.js +21 -0
  282. package/Gizmos/positionGizmo.js.map +1 -1
  283. package/Gizmos/rotationGizmo.d.ts +4 -0
  284. package/Gizmos/rotationGizmo.js +20 -0
  285. package/Gizmos/rotationGizmo.js.map +1 -1
  286. package/Gizmos/scaleGizmo.d.ts +2 -0
  287. package/Gizmos/scaleGizmo.js +10 -0
  288. package/Gizmos/scaleGizmo.js.map +1 -1
  289. package/Helpers/sceneHelpers.d.ts +7 -7
  290. package/Helpers/sceneHelpers.js.map +1 -1
  291. package/Inputs/scene.inputManager.js +34 -25
  292. package/Inputs/scene.inputManager.js.map +1 -1
  293. package/Instrumentation/engineInstrumentation.d.ts +2 -2
  294. package/Instrumentation/engineInstrumentation.js +2 -2
  295. package/Instrumentation/engineInstrumentation.js.map +1 -1
  296. package/Instrumentation/sceneInstrumentation.d.ts +2 -2
  297. package/Instrumentation/sceneInstrumentation.js +2 -2
  298. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  299. package/Layers/effectLayerSceneComponent.d.ts +2 -2
  300. package/Layers/effectLayerSceneComponent.js.map +1 -1
  301. package/Layers/glowLayer.d.ts +1 -1
  302. package/Layers/glowLayer.js +1 -1
  303. package/Layers/glowLayer.js.map +1 -1
  304. package/LensFlares/lensFlare.d.ts +3 -3
  305. package/LensFlares/lensFlare.js +3 -3
  306. package/LensFlares/lensFlare.js.map +1 -1
  307. package/LensFlares/lensFlareSystem.d.ts +2 -2
  308. package/LensFlares/lensFlareSystem.js +2 -2
  309. package/LensFlares/lensFlareSystem.js.map +1 -1
  310. package/LensFlares/lensFlareSystemSceneComponent.d.ts +1 -1
  311. package/LensFlares/lensFlareSystemSceneComponent.js.map +1 -1
  312. package/Lights/Shadows/shadowGenerator.d.ts +2 -2
  313. package/Lights/Shadows/shadowGenerator.js +2 -2
  314. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  315. package/Lights/directionalLight.d.ts +2 -2
  316. package/Lights/directionalLight.js +2 -2
  317. package/Lights/directionalLight.js.map +1 -1
  318. package/Lights/hemisphericLight.d.ts +1 -1
  319. package/Lights/hemisphericLight.js +1 -1
  320. package/Lights/hemisphericLight.js.map +1 -1
  321. package/Lights/light.d.ts +1 -1
  322. package/Lights/light.js +1 -1
  323. package/Lights/light.js.map +1 -1
  324. package/Lights/pointLight.d.ts +2 -2
  325. package/Lights/pointLight.js +2 -2
  326. package/Lights/pointLight.js.map +1 -1
  327. package/Lights/spotLight.d.ts +2 -2
  328. package/Lights/spotLight.js +2 -2
  329. package/Lights/spotLight.js.map +1 -1
  330. package/Loading/loadingScreen.d.ts +2 -2
  331. package/Loading/loadingScreen.js +1 -1
  332. package/Loading/loadingScreen.js.map +1 -1
  333. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +1 -1
  334. package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -1
  335. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  336. package/Materials/Node/Blocks/reciprocalBlock.js +6 -2
  337. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  338. package/Materials/PBR/pbrBaseMaterial.d.ts +1 -1
  339. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  340. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  341. package/Materials/PBR/pbrMaterial.d.ts +1 -1
  342. package/Materials/PBR/pbrMaterial.js +1 -1
  343. package/Materials/PBR/pbrMaterial.js.map +1 -1
  344. package/Materials/Textures/Packer/packer.d.ts +1 -1
  345. package/Materials/Textures/Packer/packer.js +1 -1
  346. package/Materials/Textures/Packer/packer.js.map +1 -1
  347. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
  348. package/Materials/Textures/Procedurals/customProceduralTexture.js +2 -2
  349. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  350. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +2 -2
  351. package/Materials/Textures/Procedurals/proceduralTexture.js +2 -2
  352. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  353. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.d.ts +1 -1
  354. package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
  355. package/Materials/Textures/cubeTexture.d.ts +2 -2
  356. package/Materials/Textures/cubeTexture.js +2 -2
  357. package/Materials/Textures/cubeTexture.js.map +1 -1
  358. package/Materials/Textures/dynamicTexture.d.ts +1 -1
  359. package/Materials/Textures/dynamicTexture.js +1 -1
  360. package/Materials/Textures/dynamicTexture.js.map +1 -1
  361. package/Materials/Textures/mirrorTexture.d.ts +3 -3
  362. package/Materials/Textures/mirrorTexture.js +3 -3
  363. package/Materials/Textures/mirrorTexture.js.map +1 -1
  364. package/Materials/Textures/refractionTexture.d.ts +3 -3
  365. package/Materials/Textures/refractionTexture.js +3 -3
  366. package/Materials/Textures/refractionTexture.js.map +1 -1
  367. package/Materials/Textures/texture.d.ts +10 -10
  368. package/Materials/Textures/texture.js +10 -10
  369. package/Materials/Textures/texture.js.map +1 -1
  370. package/Materials/Textures/videoTexture.d.ts +2 -2
  371. package/Materials/Textures/videoTexture.js +2 -2
  372. package/Materials/Textures/videoTexture.js.map +1 -1
  373. package/Materials/effect.d.ts +20 -2
  374. package/Materials/effect.js +28 -4
  375. package/Materials/effect.js.map +1 -1
  376. package/Materials/effectRenderer.js +1 -0
  377. package/Materials/effectRenderer.js.map +1 -1
  378. package/Materials/fresnelParameters.d.ts +1 -1
  379. package/Materials/fresnelParameters.js +1 -1
  380. package/Materials/fresnelParameters.js.map +1 -1
  381. package/Materials/material.d.ts +1 -1
  382. package/Materials/material.js.map +1 -1
  383. package/Materials/multiMaterial.d.ts +2 -2
  384. package/Materials/multiMaterial.js +2 -2
  385. package/Materials/multiMaterial.js.map +1 -1
  386. package/Materials/shaderMaterial.d.ts +2 -2
  387. package/Materials/shaderMaterial.js +2 -2
  388. package/Materials/shaderMaterial.js.map +1 -1
  389. package/Materials/shadowDepthWrapper.d.ts +1 -1
  390. package/Materials/shadowDepthWrapper.js +2 -2
  391. package/Materials/shadowDepthWrapper.js.map +1 -1
  392. package/Materials/standardMaterial.d.ts +18 -18
  393. package/Materials/standardMaterial.js +6 -6
  394. package/Materials/standardMaterial.js.map +1 -1
  395. package/Maths/math.path.d.ts +7 -7
  396. package/Maths/math.path.js +7 -7
  397. package/Maths/math.path.js.map +1 -1
  398. package/Maths/math.vector.d.ts +4 -4
  399. package/Maths/math.vector.js +4 -4
  400. package/Maths/math.vector.js.map +1 -1
  401. package/Meshes/Builders/boxBuilder.d.ts +3 -3
  402. package/Meshes/Builders/boxBuilder.js +3 -3
  403. package/Meshes/Builders/boxBuilder.js.map +1 -1
  404. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  405. package/Meshes/Builders/capsuleBuilder.js +1 -1
  406. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  407. package/Meshes/Builders/cylinderBuilder.d.ts +2 -2
  408. package/Meshes/Builders/cylinderBuilder.js +2 -2
  409. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  410. package/Meshes/Builders/decalBuilder.d.ts +1 -1
  411. package/Meshes/Builders/decalBuilder.js +1 -1
  412. package/Meshes/Builders/decalBuilder.js.map +1 -1
  413. package/Meshes/Builders/discBuilder.d.ts +2 -2
  414. package/Meshes/Builders/discBuilder.js +2 -2
  415. package/Meshes/Builders/discBuilder.js.map +1 -1
  416. package/Meshes/Builders/geodesicBuilder.d.ts +1 -1
  417. package/Meshes/Builders/geodesicBuilder.js +1 -1
  418. package/Meshes/Builders/geodesicBuilder.js.map +1 -1
  419. package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
  420. package/Meshes/Builders/goldbergBuilder.js +1 -1
  421. package/Meshes/Builders/goldbergBuilder.js.map +1 -1
  422. package/Meshes/Builders/groundBuilder.d.ts +4 -4
  423. package/Meshes/Builders/groundBuilder.js +4 -4
  424. package/Meshes/Builders/groundBuilder.js.map +1 -1
  425. package/Meshes/Builders/icoSphereBuilder.d.ts +2 -2
  426. package/Meshes/Builders/icoSphereBuilder.js +2 -2
  427. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  428. package/Meshes/Builders/latheBuilder.d.ts +2 -2
  429. package/Meshes/Builders/latheBuilder.js +2 -2
  430. package/Meshes/Builders/latheBuilder.js.map +1 -1
  431. package/Meshes/Builders/linesBuilder.d.ts +6 -6
  432. package/Meshes/Builders/linesBuilder.js +6 -6
  433. package/Meshes/Builders/linesBuilder.js.map +1 -1
  434. package/Meshes/Builders/planeBuilder.d.ts +2 -2
  435. package/Meshes/Builders/planeBuilder.js +2 -2
  436. package/Meshes/Builders/planeBuilder.js.map +1 -1
  437. package/Meshes/Builders/polygonBuilder.d.ts +1 -1
  438. package/Meshes/Builders/polygonBuilder.js +1 -1
  439. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  440. package/Meshes/Builders/polyhedronBuilder.d.ts +3 -3
  441. package/Meshes/Builders/polyhedronBuilder.js +3 -3
  442. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  443. package/Meshes/Builders/ribbonBuilder.d.ts +4 -4
  444. package/Meshes/Builders/ribbonBuilder.js +4 -4
  445. package/Meshes/Builders/ribbonBuilder.js.map +1 -1
  446. package/Meshes/Builders/shapeBuilder.d.ts +9 -9
  447. package/Meshes/Builders/shapeBuilder.js +9 -9
  448. package/Meshes/Builders/shapeBuilder.js.map +1 -1
  449. package/Meshes/Builders/sphereBuilder.d.ts +2 -2
  450. package/Meshes/Builders/sphereBuilder.js +2 -2
  451. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  452. package/Meshes/Builders/tiledBoxBuilder.d.ts +2 -2
  453. package/Meshes/Builders/tiledBoxBuilder.js +2 -2
  454. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  455. package/Meshes/Builders/tiledPlaneBuilder.d.ts +2 -2
  456. package/Meshes/Builders/tiledPlaneBuilder.js +2 -2
  457. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  458. package/Meshes/Builders/torusBuilder.d.ts +2 -2
  459. package/Meshes/Builders/torusBuilder.js +2 -2
  460. package/Meshes/Builders/torusBuilder.js.map +1 -1
  461. package/Meshes/Builders/torusKnotBuilder.d.ts +2 -2
  462. package/Meshes/Builders/torusKnotBuilder.js +2 -2
  463. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  464. package/Meshes/Builders/tubeBuilder.d.ts +4 -4
  465. package/Meshes/Builders/tubeBuilder.js +4 -4
  466. package/Meshes/Builders/tubeBuilder.js.map +1 -1
  467. package/Meshes/abstractMesh.d.ts +35 -35
  468. package/Meshes/abstractMesh.js +34 -34
  469. package/Meshes/abstractMesh.js.map +1 -1
  470. package/Meshes/instancedMesh.d.ts +3 -3
  471. package/Meshes/instancedMesh.js +1 -1
  472. package/Meshes/instancedMesh.js.map +1 -1
  473. package/Meshes/linesMesh.d.ts +2 -2
  474. package/Meshes/linesMesh.js +2 -2
  475. package/Meshes/linesMesh.js.map +1 -1
  476. package/Meshes/mesh.d.ts +36 -36
  477. package/Meshes/mesh.js +9 -17
  478. package/Meshes/mesh.js.map +1 -1
  479. package/Meshes/meshLODLevel.d.ts +1 -1
  480. package/Meshes/meshLODLevel.js +1 -1
  481. package/Meshes/meshLODLevel.js.map +1 -1
  482. package/Meshes/meshSimplification.d.ts +6 -6
  483. package/Meshes/meshSimplification.js +4 -4
  484. package/Meshes/meshSimplification.js.map +1 -1
  485. package/Meshes/meshSimplificationSceneComponent.d.ts +1 -1
  486. package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
  487. package/Meshes/polygonMesh.d.ts +2 -2
  488. package/Meshes/polygonMesh.js +2 -2
  489. package/Meshes/polygonMesh.js.map +1 -1
  490. package/Meshes/transformNode.d.ts +1 -1
  491. package/Meshes/transformNode.js +1 -1
  492. package/Meshes/transformNode.js.map +1 -1
  493. package/Misc/assetsManager.d.ts +2 -2
  494. package/Misc/assetsManager.js +2 -2
  495. package/Misc/assetsManager.js.map +1 -1
  496. package/Misc/iInspectable.d.ts +1 -1
  497. package/Misc/iInspectable.js.map +1 -1
  498. package/Misc/sceneOptimizer.d.ts +12 -12
  499. package/Misc/sceneOptimizer.js +12 -12
  500. package/Misc/sceneOptimizer.js.map +1 -1
  501. package/Misc/screenshotTools.d.ts +10 -10
  502. package/Misc/screenshotTools.js +10 -10
  503. package/Misc/screenshotTools.js.map +1 -1
  504. package/Misc/tools.d.ts +4 -4
  505. package/Misc/tools.js +4 -4
  506. package/Misc/tools.js.map +1 -1
  507. package/Misc/videoRecorder.d.ts +1 -1
  508. package/Misc/videoRecorder.js +1 -1
  509. package/Misc/videoRecorder.js.map +1 -1
  510. package/Morph/morphTarget.d.ts +1 -1
  511. package/Morph/morphTarget.js +1 -1
  512. package/Morph/morphTarget.js.map +1 -1
  513. package/Morph/morphTargetManager.d.ts +1 -1
  514. package/Morph/morphTargetManager.js +1 -1
  515. package/Morph/morphTargetManager.js.map +1 -1
  516. package/Offline/IOfflineProvider.d.ts +1 -1
  517. package/Offline/IOfflineProvider.js.map +1 -1
  518. package/Offline/database.d.ts +1 -1
  519. package/Offline/database.js +1 -1
  520. package/Offline/database.js.map +1 -1
  521. package/Particles/IParticleSystem.d.ts +1 -1
  522. package/Particles/IParticleSystem.js.map +1 -1
  523. package/Particles/baseParticleSystem.d.ts +1 -1
  524. package/Particles/baseParticleSystem.js +1 -1
  525. package/Particles/baseParticleSystem.js.map +1 -1
  526. package/Particles/gpuParticleSystem.d.ts +1 -1
  527. package/Particles/gpuParticleSystem.js +1 -1
  528. package/Particles/gpuParticleSystem.js.map +1 -1
  529. package/Particles/particleSystem.d.ts +2 -2
  530. package/Particles/particleSystem.js +2 -2
  531. package/Particles/particleSystem.js.map +1 -1
  532. package/Particles/solidParticleSystem.d.ts +15 -15
  533. package/Particles/solidParticleSystem.js +13 -13
  534. package/Particles/solidParticleSystem.js.map +1 -1
  535. package/Physics/IPhysicsEngine.d.ts +1 -1
  536. package/Physics/IPhysicsEngine.js.map +1 -1
  537. package/Physics/Plugins/ammoJSPlugin.d.ts +1 -1
  538. package/Physics/Plugins/ammoJSPlugin.js +1 -1
  539. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  540. package/Physics/physicsEngine.d.ts +1 -1
  541. package/Physics/physicsEngine.js +1 -1
  542. package/Physics/physicsEngine.js.map +1 -1
  543. package/Physics/physicsEngineComponent.d.ts +3 -3
  544. package/Physics/physicsEngineComponent.js +2 -2
  545. package/Physics/physicsEngineComponent.js.map +1 -1
  546. package/Physics/physicsHelper.d.ts +12 -12
  547. package/Physics/physicsHelper.js +6 -6
  548. package/Physics/physicsHelper.js.map +1 -1
  549. package/Physics/physicsImpostor.d.ts +3 -3
  550. package/Physics/physicsImpostor.js +1 -1
  551. package/Physics/physicsImpostor.js.map +1 -1
  552. package/Physics/physicsJoint.d.ts +9 -9
  553. package/Physics/physicsJoint.js +5 -5
  554. package/Physics/physicsJoint.js.map +1 -1
  555. package/Physics/physicsRaycastResult.d.ts +1 -1
  556. package/Physics/physicsRaycastResult.js +1 -1
  557. package/Physics/physicsRaycastResult.js.map +1 -1
  558. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.d.ts +1 -1
  559. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +1 -1
  560. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  561. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.d.ts +1 -1
  562. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -1
  563. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  564. package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +1 -1
  565. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
  566. package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
  567. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +2 -2
  568. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +1 -1
  569. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  570. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.d.ts +2 -2
  571. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js +2 -2
  572. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js.map +1 -1
  573. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.d.ts +2 -2
  574. package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js.map +1 -1
  575. package/PostProcesses/blackAndWhitePostProcess.d.ts +1 -1
  576. package/PostProcesses/blackAndWhitePostProcess.js +1 -1
  577. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  578. package/PostProcesses/fxaaPostProcess.d.ts +1 -1
  579. package/PostProcesses/fxaaPostProcess.js +1 -1
  580. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  581. package/PostProcesses/highlightsPostProcess.d.ts +2 -2
  582. package/PostProcesses/highlightsPostProcess.js +2 -2
  583. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  584. package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
  585. package/PostProcesses/imageProcessingPostProcess.js +1 -1
  586. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  587. package/PostProcesses/postProcess.d.ts +2 -2
  588. package/PostProcesses/postProcess.js +1 -1
  589. package/PostProcesses/postProcess.js.map +1 -1
  590. package/PostProcesses/postProcessManager.d.ts +1 -1
  591. package/PostProcesses/postProcessManager.js +1 -1
  592. package/PostProcesses/postProcessManager.js.map +1 -1
  593. package/PostProcesses/refractionPostProcess.d.ts +2 -2
  594. package/PostProcesses/refractionPostProcess.js +2 -2
  595. package/PostProcesses/refractionPostProcess.js.map +1 -1
  596. package/Probes/reflectionProbe.d.ts +2 -2
  597. package/Probes/reflectionProbe.js +1 -1
  598. package/Probes/reflectionProbe.js.map +1 -1
  599. package/Rendering/geometryBufferRenderer.js +2 -2
  600. package/Rendering/geometryBufferRenderer.js.map +1 -1
  601. package/Sprites/sprite.d.ts +1 -1
  602. package/Sprites/sprite.js +1 -1
  603. package/Sprites/sprite.js.map +1 -1
  604. package/Sprites/spriteManager.d.ts +2 -2
  605. package/Sprites/spriteManager.js +1 -1
  606. package/Sprites/spriteManager.js.map +1 -1
  607. package/Sprites/spritePackedManager.d.ts +1 -1
  608. package/Sprites/spritePackedManager.js +1 -1
  609. package/Sprites/spritePackedManager.js.map +1 -1
  610. package/Sprites/spriteSceneComponent.d.ts +1 -1
  611. package/Sprites/spriteSceneComponent.js.map +1 -1
  612. package/Sprites/thinSprite.d.ts +1 -1
  613. package/Sprites/thinSprite.js +1 -1
  614. package/Sprites/thinSprite.js.map +1 -1
  615. package/XR/webXRCamera.d.ts +1 -1
  616. package/XR/webXRCamera.js +1 -1
  617. package/XR/webXRCamera.js.map +1 -1
  618. package/XR/webXRExperienceHelper.d.ts +1 -1
  619. package/XR/webXRExperienceHelper.js +1 -1
  620. package/XR/webXRExperienceHelper.js.map +1 -1
  621. package/XR/webXRInputSource.d.ts +1 -1
  622. package/XR/webXRInputSource.js +1 -1
  623. package/XR/webXRInputSource.js.map +1 -1
  624. package/XR/webXRSessionManager.d.ts +1 -1
  625. package/XR/webXRSessionManager.js +1 -1
  626. package/XR/webXRSessionManager.js.map +1 -1
  627. package/abstractScene.d.ts +9 -9
  628. package/abstractScene.js +9 -9
  629. package/abstractScene.js.map +1 -1
  630. package/node.d.ts +6 -6
  631. package/node.js +5 -5
  632. package/node.js.map +1 -1
  633. package/package.json +1 -1
  634. package/scene.d.ts +29 -24
  635. package/scene.js +24 -18
  636. package/scene.js.map +1 -1
@@ -123,8 +123,8 @@ export interface WebVROptions {
123
123
  /**
124
124
  * This represents a WebVR camera.
125
125
  * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.
126
- * @deprecated Use WebXR instead - https://doc.babylonjs.com/divingDeeper/webXR
127
- * @example https://doc.babylonjs.com/how_to/webvr_camera
126
+ * @deprecated Use WebXR instead - https://doc.babylonjs.com/features/featuresDeepDive/webXR
127
+ * @example https://doc.babylonjs.com/features/featuresDeepDive/cameras/webVRCamera
128
128
  */
129
129
  export declare class WebVRFreeCamera extends FreeCamera implements PoseControlled {
130
130
  private _webVROptions;
@@ -21,8 +21,8 @@ Node.AddNodeConstructor("WebVRGamepadCamera", (name, scene) => {
21
21
  /**
22
22
  * This represents a WebVR camera.
23
23
  * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.
24
- * @deprecated Use WebXR instead - https://doc.babylonjs.com/divingDeeper/webXR
25
- * @example https://doc.babylonjs.com/how_to/webvr_camera
24
+ * @deprecated Use WebXR instead - https://doc.babylonjs.com/features/featuresDeepDive/webXR
25
+ * @example https://doc.babylonjs.com/features/featuresDeepDive/cameras/webVRCamera
26
26
  */
27
27
  export class WebVRFreeCamera extends FreeCamera {
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"webVRCamera.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Cameras/VR/webVRCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Observer } from \"../../Misc/observable\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport type { TargetCamera } from \"../../Cameras/targetCamera\";\r\nimport { Camera } from \"../../Cameras/camera\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Quaternion, Matrix, Vector3 } from \"../../Maths/math.vector\";\r\nimport { Gamepad } from \"../../Gamepads/gamepad\";\r\nimport { PoseEnabledControllerType } from \"../../Gamepads/Controllers/poseEnabledController\";\r\nimport type { WebVRController } from \"../../Gamepads/Controllers/webVRController\";\r\nimport type { IDisplayChangedEventArgs } from \"../../Engines/engine\";\r\nimport { Node } from \"../../node\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport type { Ray } from \"../../Culling/ray\";\r\nimport { HemisphericLight } from \"../../Lights/hemisphericLight\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { VRMultiviewToSingleviewPostProcess } from \"../../PostProcesses/vrMultiviewToSingleviewPostProcess\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { setWebVRRigMode } from \"../RigModes/webVRRigMode\";\r\n\r\n// Side effect import to add webvr support to engine\r\nimport \"../../Engines/Extensions/engine.webVR\";\r\n\r\nNode.AddNodeConstructor(\"WebVRFreeCamera\", (name, scene) => {\r\n return () => new WebVRFreeCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\nNode.AddNodeConstructor(\"WebVRGamepadCamera\", (name, scene) => {\r\n return () => new WebVRFreeCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * This is a copy of VRPose. See https://developer.mozilla.org/en-US/docs/Web/API/VRPose\r\n * IMPORTANT!! The data is right-hand data.\r\n * @export\r\n * @interface DevicePose\r\n */\r\nexport interface DevicePose {\r\n /**\r\n * The position of the device, values in array are [x,y,z].\r\n */\r\n readonly position: Nullable<Float32Array>;\r\n /**\r\n * The linearVelocity of the device, values in array are [x,y,z].\r\n */\r\n readonly linearVelocity: Nullable<Float32Array>;\r\n /**\r\n * The linearAcceleration of the device, values in array are [x,y,z].\r\n */\r\n readonly linearAcceleration: Nullable<Float32Array>;\r\n\r\n /**\r\n * The orientation of the device in a quaternion array, values in array are [x,y,z,w].\r\n */\r\n readonly orientation: Nullable<Float32Array>;\r\n /**\r\n * The angularVelocity of the device, values in array are [x,y,z].\r\n */\r\n readonly angularVelocity: Nullable<Float32Array>;\r\n /**\r\n * The angularAcceleration of the device, values in array are [x,y,z].\r\n */\r\n readonly angularAcceleration: Nullable<Float32Array>;\r\n}\r\n\r\n/**\r\n * Interface representing a pose controlled object in Babylon.\r\n * A pose controlled object has both regular pose values as well as pose values\r\n * from an external device such as a VR head mounted display\r\n */\r\nexport interface PoseControlled {\r\n /**\r\n * The position of the object in babylon space.\r\n */\r\n position: Vector3;\r\n /**\r\n * The rotation quaternion of the object in babylon space.\r\n */\r\n rotationQuaternion: Quaternion;\r\n /**\r\n * The position of the device in babylon space.\r\n */\r\n devicePosition?: Vector3;\r\n /**\r\n * The rotation quaternion of the device in babylon space.\r\n */\r\n deviceRotationQuaternion: Quaternion;\r\n /**\r\n * The raw pose coming from the device.\r\n */\r\n rawPose: Nullable<DevicePose>;\r\n /**\r\n * The scale of the device to be used when translating from device space to babylon space.\r\n */\r\n deviceScaleFactor: number;\r\n /**\r\n * Updates the poseControlled values based on the input device pose.\r\n * @param poseData the pose data to update the object with\r\n */\r\n updateFromDevice(poseData: DevicePose): void;\r\n}\r\n\r\n/**\r\n * Set of options to customize the webVRCamera\r\n */\r\nexport interface WebVROptions {\r\n /**\r\n * Sets if the webVR camera should be tracked to the vrDevice. (default: true)\r\n */\r\n trackPosition?: boolean;\r\n /**\r\n * Sets the scale of the vrDevice in babylon space. (default: 1)\r\n */\r\n positionScale?: number;\r\n /**\r\n * If there are more than one VRDisplays, this will choose the display matching this name. (default: pick first vrDisplay)\r\n */\r\n displayName?: string;\r\n /**\r\n * Should the native controller meshes be initialized. (default: true)\r\n */\r\n controllerMeshes?: boolean;\r\n /**\r\n * Creating a default HemiLight only on controllers. (default: true)\r\n */\r\n defaultLightingOnControllers?: boolean;\r\n /**\r\n * If you don't want to use the default VR button of the helper. (default: false)\r\n */\r\n useCustomVRButton?: boolean;\r\n\r\n /**\r\n * If you'd like to provide your own button to the VRHelper. (default: standard babylon vr button)\r\n */\r\n customVRButton?: HTMLButtonElement;\r\n\r\n /**\r\n * To change the length of the ray for gaze/controllers. Will be scaled by positionScale. (default: 100)\r\n */\r\n rayLength?: number;\r\n\r\n /**\r\n * To change the default offset from the ground to account for user's height in meters. Will be scaled by positionScale. (default: 1.7)\r\n */\r\n defaultHeight?: number;\r\n\r\n /**\r\n * If multiview should be used if available (default: false)\r\n */\r\n useMultiview?: boolean;\r\n}\r\n\r\n/**\r\n * This represents a WebVR camera.\r\n * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.\r\n * @deprecated Use WebXR instead - https://doc.babylonjs.com/divingDeeper/webXR\r\n * @example https://doc.babylonjs.com/how_to/webvr_camera\r\n */\r\nexport class WebVRFreeCamera extends FreeCamera implements PoseControlled {\r\n /**\r\n * @internal\r\n * The vrDisplay tied to the camera. See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay\r\n */\r\n public _vrDevice: any = null;\r\n /**\r\n * The rawPose of the vrDevice.\r\n */\r\n public rawPose: Nullable<DevicePose> = null;\r\n private _onVREnabled: (success: boolean) => void;\r\n private _specsVersion: string = \"1.1\";\r\n private _attached: boolean = false;\r\n\r\n private _frameData: any;\r\n\r\n protected _descendants: Array<Node> = [];\r\n\r\n // Represents device position and rotation in room space. Should only be used to help calculate babylon space values\r\n private _deviceRoomPosition = Vector3.Zero();\r\n /** @internal */\r\n public _deviceRoomRotationQuaternion = Quaternion.Identity();\r\n\r\n private _standingMatrix: Nullable<Matrix> = null;\r\n\r\n /**\r\n * Represents device position in babylon space.\r\n */\r\n public devicePosition = Vector3.Zero();\r\n /**\r\n * Represents device rotation in babylon space.\r\n */\r\n public deviceRotationQuaternion = Quaternion.Identity();\r\n\r\n /**\r\n * The scale of the device to be used when translating from device space to babylon space.\r\n */\r\n public deviceScaleFactor: number = 1;\r\n\r\n private _deviceToWorld = Matrix.Identity();\r\n private _worldToDevice = Matrix.Identity();\r\n\r\n /**\r\n * References to the webVR controllers for the vrDevice.\r\n */\r\n public controllers: Array<WebVRController> = [];\r\n /**\r\n * Emits an event when a controller is attached.\r\n */\r\n public onControllersAttachedObservable = new Observable<Array<WebVRController>>();\r\n /**\r\n * Emits an event when a controller's mesh has been loaded;\r\n */\r\n public onControllerMeshLoadedObservable = new Observable<WebVRController>();\r\n /**\r\n * Emits an event when the HMD's pose has been updated.\r\n */\r\n public onPoseUpdatedFromDeviceObservable = new Observable<any>();\r\n private _poseSet = false;\r\n /**\r\n * If the rig cameras be used as parent instead of this camera.\r\n */\r\n public rigParenting: boolean = true;\r\n\r\n private _lightOnControllers: HemisphericLight;\r\n\r\n private _defaultHeight?: number = undefined;\r\n\r\n /**\r\n * Instantiates a WebVRFreeCamera.\r\n * @param name The name of the WebVRFreeCamera\r\n * @param position The starting anchor position for the camera\r\n * @param scene The scene the camera belongs to\r\n * @param _webVROptions a set of customizable options for the webVRCamera\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, private _webVROptions: WebVROptions = {}) {\r\n super(name, position, scene);\r\n this._cache.position = Vector3.Zero();\r\n if (_webVROptions.defaultHeight) {\r\n this._defaultHeight = _webVROptions.defaultHeight;\r\n this.position.y = this._defaultHeight;\r\n }\r\n\r\n this.minZ = 0.1;\r\n\r\n //legacy support - the compensation boolean was removed.\r\n if (arguments.length === 5) {\r\n // eslint-disable-next-line prefer-rest-params\r\n this._webVROptions = arguments[4];\r\n }\r\n\r\n // default webVR options\r\n if (this._webVROptions.trackPosition == undefined) {\r\n this._webVROptions.trackPosition = true;\r\n }\r\n if (this._webVROptions.controllerMeshes == undefined) {\r\n this._webVROptions.controllerMeshes = true;\r\n }\r\n if (this._webVROptions.defaultLightingOnControllers == undefined) {\r\n this._webVROptions.defaultLightingOnControllers = true;\r\n }\r\n\r\n this.rotationQuaternion = new Quaternion();\r\n\r\n if (this._webVROptions && this._webVROptions.positionScale) {\r\n this.deviceScaleFactor = this._webVROptions.positionScale;\r\n }\r\n\r\n //enable VR\r\n const engine = this.getEngine();\r\n this._onVREnabled = (success: boolean) => {\r\n if (success) {\r\n this.initControllers();\r\n }\r\n };\r\n engine.onVRRequestPresentComplete.add(this._onVREnabled);\r\n engine.initWebVR().add((event: IDisplayChangedEventArgs) => {\r\n if (!event.vrDisplay || this._vrDevice === event.vrDisplay) {\r\n return;\r\n }\r\n\r\n this._vrDevice = event.vrDisplay;\r\n\r\n //reset the rig parameters.\r\n this.setCameraRigMode(Camera.RIG_MODE_WEBVR, { parentCamera: this, vrDisplay: this._vrDevice, frameData: this._frameData, specs: this._specsVersion });\r\n\r\n if (this._attached) {\r\n this.getEngine().enableVR(this._webVROptions);\r\n }\r\n });\r\n\r\n if (typeof VRFrameData !== \"undefined\") {\r\n this._frameData = new VRFrameData();\r\n }\r\n\r\n if (_webVROptions.useMultiview) {\r\n if (!this.getScene().getEngine().getCaps().multiview) {\r\n Logger.Warn(\"Multiview is not supported, falling back to standard rendering\");\r\n this._useMultiviewToSingleView = false;\r\n } else {\r\n this._useMultiviewToSingleView = true;\r\n this._rigPostProcess = new VRMultiviewToSingleviewPostProcess(\"VRMultiviewToSingleview\", this, 1.0);\r\n }\r\n }\r\n\r\n /**\r\n * The idea behind the following lines:\r\n * objects that have the camera as parent should actually have the rig cameras as a parent.\r\n * BUT, each of those cameras has a different view matrix, which means that if we set the parent to the first rig camera,\r\n * the second will not show it correctly.\r\n *\r\n * To solve this - each object that has the camera as parent will be added to a protected array.\r\n * When the rig camera renders, it will take this array and set all of those to be its children.\r\n * This way, the right camera will be used as a parent, and the mesh will be rendered correctly.\r\n * Amazing!\r\n */\r\n this.getScene().onBeforeCameraRenderObservable.add((camera) => {\r\n if (camera.parent === this && this.rigParenting) {\r\n this._descendants = this.getDescendants(true, (n) => {\r\n // don't take the cameras or the controllers!\r\n const isController = this.controllers.some((controller) => {\r\n return controller._mesh === n;\r\n });\r\n const isRigCamera = this._rigCameras.indexOf(<Camera>n) !== -1;\r\n return !isController && !isRigCamera;\r\n });\r\n this._descendants.forEach((node) => {\r\n node.parent = camera;\r\n });\r\n }\r\n });\r\n\r\n this.getScene().onAfterCameraRenderObservable.add((camera) => {\r\n if (camera.parent === this && this.rigParenting) {\r\n this._descendants.forEach((node) => {\r\n node.parent = this;\r\n });\r\n }\r\n });\r\n }\r\n\r\n protected _setRigMode = setWebVRRigMode.bind(null, this);\r\n\r\n /**\r\n * Gets the device distance from the ground in meters.\r\n * @returns the distance in meters from the vrDevice to ground in device space. If standing matrix is not supported for the vrDevice 0 is returned.\r\n */\r\n public deviceDistanceToRoomGround(): number {\r\n if (this._standingMatrix) {\r\n // Add standing matrix offset to get real offset from ground in room\r\n this._standingMatrix.getTranslationToRef(this._workingVector);\r\n return this._deviceRoomPosition.y + this._workingVector.y;\r\n }\r\n //If VRDisplay does not inform stage parameters and no default height is set we fallback to zero.\r\n return this._defaultHeight || 0;\r\n }\r\n\r\n /**\r\n * Enables the standing matrix when supported. This can be used to position the user's view the correct height from the ground.\r\n * @param callback will be called when the standing matrix is set. Callback parameter is if the standing matrix is supported.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public useStandingMatrix(callback = (bool: boolean) => {}) {\r\n // Use standing matrix if available\r\n this.getEngine()\r\n .initWebVRAsync()\r\n .then((result) => {\r\n if (!result.vrDisplay || !result.vrDisplay.stageParameters || !result.vrDisplay.stageParameters.sittingToStandingTransform || !this._webVROptions.trackPosition) {\r\n callback(false);\r\n } else {\r\n this._standingMatrix = new Matrix();\r\n Matrix.FromFloat32ArrayToRefScaled(result.vrDisplay.stageParameters.sittingToStandingTransform, 0, 1, this._standingMatrix);\r\n if (!this.getScene().useRightHandedSystem) {\r\n if (this._standingMatrix) {\r\n this._standingMatrix.toggleModelMatrixHandInPlace();\r\n }\r\n }\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Enables the standing matrix when supported. This can be used to position the user's view the correct height from the ground.\r\n * @returns A promise with a boolean set to if the standing matrix is supported.\r\n */\r\n public useStandingMatrixAsync(): Promise<boolean> {\r\n return new Promise((res) => {\r\n this.useStandingMatrix((supported) => {\r\n res(supported);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Disposes the camera\r\n */\r\n public dispose(): void {\r\n this._detachIfAttached();\r\n this.getEngine().onVRRequestPresentComplete.removeCallback(this._onVREnabled);\r\n if (this._updateCacheWhenTrackingDisabledObserver) {\r\n this._scene.onBeforeRenderObservable.remove(this._updateCacheWhenTrackingDisabledObserver);\r\n }\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Gets a vrController by name.\r\n * @param name The name of the controller to retrieve\r\n * @returns the controller matching the name specified or null if not found\r\n */\r\n public getControllerByName(name: string): Nullable<WebVRController> {\r\n for (const gp of this.controllers) {\r\n if (gp.hand === name) {\r\n return gp;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _leftController: Nullable<WebVRController>;\r\n /**\r\n * The controller corresponding to the users left hand.\r\n */\r\n public get leftController(): Nullable<WebVRController> {\r\n if (!this._leftController) {\r\n this._leftController = this.getControllerByName(\"left\");\r\n }\r\n\r\n return this._leftController;\r\n }\r\n\r\n private _rightController: Nullable<WebVRController>;\r\n /**\r\n * The controller corresponding to the users right hand.\r\n */\r\n public get rightController(): Nullable<WebVRController> {\r\n if (!this._rightController) {\r\n this._rightController = this.getControllerByName(\"right\");\r\n }\r\n\r\n return this._rightController;\r\n }\r\n\r\n /**\r\n * Casts a ray forward from the vrCamera's gaze.\r\n * @param length Length of the ray (default: 100)\r\n * @returns the ray corresponding to the gaze\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (this.leftCamera) {\r\n // Use left eye to avoid computation to compute center on every call\r\n return super.getForwardRay(length, this.leftCamera.getWorldMatrix(), this.leftCamera.globalPosition); // Need the actual rendered camera\r\n } else {\r\n return super.getForwardRay(length);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the camera based on device's frame data\r\n */\r\n public _checkInputs(): void {\r\n if (this._vrDevice && this._vrDevice.isPresenting) {\r\n this._vrDevice.getFrameData(this._frameData);\r\n\r\n this.updateFromDevice(this._frameData.pose);\r\n }\r\n\r\n super._checkInputs();\r\n }\r\n\r\n /**\r\n * Updates the poseControlled values based on the input device pose.\r\n * @param poseData Pose coming from the device\r\n */\r\n updateFromDevice(poseData: DevicePose) {\r\n if (poseData && poseData.orientation && poseData.orientation.length === 4) {\r\n this.rawPose = poseData;\r\n this._deviceRoomRotationQuaternion.copyFromFloats(poseData.orientation[0], poseData.orientation[1], -poseData.orientation[2], -poseData.orientation[3]);\r\n\r\n if (this.getScene().useRightHandedSystem) {\r\n this._deviceRoomRotationQuaternion.z *= -1;\r\n this._deviceRoomRotationQuaternion.w *= -1;\r\n }\r\n if (this._webVROptions.trackPosition && this.rawPose.position) {\r\n this._deviceRoomPosition.copyFromFloats(this.rawPose.position[0], this.rawPose.position[1], -this.rawPose.position[2]);\r\n if (this.getScene().useRightHandedSystem) {\r\n this._deviceRoomPosition.z *= -1;\r\n }\r\n }\r\n this._poseSet = true;\r\n }\r\n }\r\n\r\n private _detachIfAttached = () => {\r\n const vrDisplay = this.getEngine().getVRDevice();\r\n if (vrDisplay && !vrDisplay.isPresenting) {\r\n this.detachControl();\r\n }\r\n };\r\n\r\n /**\r\n * WebVR's attach control will start broadcasting frames to the device.\r\n * Note that in certain browsers (chrome for example) this function must be called\r\n * within a user-interaction callback. Example:\r\n * <pre> scene.onPointerDown = function() { camera.attachControl(canvas); }</pre>\r\n *\r\n * @param noPreventDefault prevent the default html element operation when attaching the vrDevice\r\n */\r\n public attachControl(noPreventDefault?: boolean): void {\r\n // eslint-disable-next-line prefer-rest-params\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n super.attachControl(noPreventDefault);\r\n this._attached = true;\r\n\r\n noPreventDefault = Camera.ForceAttachControlToAlwaysPreventDefault ? false : noPreventDefault;\r\n\r\n if (this._vrDevice) {\r\n this.getEngine().enableVR(this._webVROptions);\r\n }\r\n\r\n const hostWindow = this._scene.getEngine().getHostWindow();\r\n\r\n if (hostWindow) {\r\n hostWindow.addEventListener(\"vrdisplaypresentchange\", this._detachIfAttached);\r\n }\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void {\r\n this.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver);\r\n this.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver);\r\n\r\n super.detachControl();\r\n this._attached = false;\r\n this.getEngine().disableVR();\r\n window.removeEventListener(\"vrdisplaypresentchange\", this._detachIfAttached);\r\n }\r\n\r\n /**\r\n * @returns the name of this class\r\n */\r\n public getClassName(): string {\r\n return \"WebVRFreeCamera\";\r\n }\r\n\r\n /**\r\n * Calls resetPose on the vrDisplay\r\n * See: https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/resetPose\r\n */\r\n public resetToCurrentRotation() {\r\n //uses the vrDisplay's \"resetPose()\".\r\n //pitch and roll won't be affected.\r\n this._vrDevice.resetPose();\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the rig cameras (left and right eye)\r\n */\r\n public _updateRigCameras() {\r\n const camLeft = <TargetCamera>this._rigCameras[0];\r\n const camRight = <TargetCamera>this._rigCameras[1];\r\n camLeft.rotationQuaternion.copyFrom(this._deviceRoomRotationQuaternion);\r\n camRight.rotationQuaternion.copyFrom(this._deviceRoomRotationQuaternion);\r\n\r\n camLeft.position.copyFrom(this._deviceRoomPosition);\r\n camRight.position.copyFrom(this._deviceRoomPosition);\r\n }\r\n\r\n private _workingVector = Vector3.Zero();\r\n private _oneVector = Vector3.One();\r\n private _workingMatrix = Matrix.Identity();\r\n\r\n private _updateCacheCalled: boolean;\r\n\r\n // Remove translation from 6dof headset if trackposition is set to false\r\n private _correctPositionIfNotTrackPosition(matrix: Matrix, isViewMatrix = false) {\r\n if (this.rawPose && this.rawPose.position && !this._webVROptions.trackPosition) {\r\n Matrix.TranslationToRef(this.rawPose.position[0], this.rawPose.position[1], -this.rawPose.position[2], this._tmpMatrix);\r\n if (!isViewMatrix) {\r\n this._tmpMatrix.invert();\r\n }\r\n this._tmpMatrix.multiplyToRef(matrix, matrix);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the cached values of the camera\r\n * @param ignoreParentClass ignores updating the parent class's cache (default: false)\r\n */\r\n public _updateCache(ignoreParentClass?: boolean): void {\r\n if (!this.rotationQuaternion.equals(this._cache.rotationQuaternion) || !this.position.equals(this._cache.position)) {\r\n // Update to ensure devicePosition is up to date with most recent _deviceRoomPosition\r\n if (!this._updateCacheCalled) {\r\n // make sure it is only called once per loop. this.update() might cause an infinite loop.\r\n this._updateCacheCalled = true;\r\n this.update();\r\n }\r\n\r\n // Set working vector to the device position in room space rotated by the new rotation\r\n this.rotationQuaternion.toRotationMatrix(this._workingMatrix);\r\n Vector3.TransformCoordinatesToRef(this._deviceRoomPosition, this._workingMatrix, this._workingVector);\r\n\r\n // Subtract this vector from the current device position in world to get the translation for the device world matrix\r\n this.devicePosition.subtractToRef(this._workingVector, this._workingVector);\r\n Matrix.ComposeToRef(this._oneVector, this.rotationQuaternion, this._workingVector, this._deviceToWorld);\r\n\r\n // Add translation from anchor position\r\n this._deviceToWorld.getTranslationToRef(this._workingVector);\r\n this._workingVector.addInPlace(this.position);\r\n this._workingVector.subtractInPlace(this._cache.position);\r\n this._deviceToWorld.setTranslation(this._workingVector);\r\n\r\n // Set an inverted matrix to be used when updating the camera\r\n this._deviceToWorld.invertToRef(this._worldToDevice);\r\n\r\n // Update the gamepad to ensure the mesh is updated on the same frame as camera\r\n this.controllers.forEach((controller) => {\r\n controller._deviceToWorld.copyFrom(this._deviceToWorld);\r\n this._correctPositionIfNotTrackPosition(controller._deviceToWorld);\r\n controller.update();\r\n });\r\n }\r\n\r\n if (!ignoreParentClass) {\r\n super._updateCache();\r\n }\r\n this._updateCacheCalled = false;\r\n }\r\n\r\n /**\r\n * @internal\r\n * Get current device position in babylon world\r\n */\r\n public _computeDevicePosition() {\r\n Vector3.TransformCoordinatesToRef(this._deviceRoomPosition, this._deviceToWorld, this.devicePosition);\r\n }\r\n\r\n /**\r\n * Updates the current device position and rotation in the babylon world\r\n */\r\n public update() {\r\n this._computeDevicePosition();\r\n\r\n // Get current device rotation in babylon world\r\n Matrix.FromQuaternionToRef(this._deviceRoomRotationQuaternion, this._workingMatrix);\r\n this._workingMatrix.multiplyToRef(this._deviceToWorld, this._workingMatrix);\r\n Quaternion.FromRotationMatrixToRef(this._workingMatrix, this.deviceRotationQuaternion);\r\n\r\n if (this._poseSet) {\r\n this.onPoseUpdatedFromDeviceObservable.notifyObservers(null);\r\n }\r\n super.update();\r\n }\r\n\r\n /**\r\n * @internal\r\n * Gets the view matrix of this camera (Always set to identity as left and right eye cameras contain the actual view matrix)\r\n * @returns an identity matrix\r\n */\r\n public _getViewMatrix(): Matrix {\r\n return Matrix.Identity();\r\n }\r\n\r\n private _tmpMatrix = new Matrix();\r\n /**\r\n * This function is called by the two RIG cameras.\r\n * 'this' is the left or right camera (and NOT (!!!) the WebVRFreeCamera instance)\r\n * @internal\r\n */\r\n public _getWebVRViewMatrix(): Matrix {\r\n // Update the parent camera prior to using a child camera to avoid desynchronization\r\n const parentCamera: WebVRFreeCamera = this._cameraRigParams[\"parentCamera\"];\r\n parentCamera._updateCache();\r\n\r\n //WebVR 1.1\r\n const viewArray = this._cameraRigParams[\"left\"] ? this._cameraRigParams[\"frameData\"].leftViewMatrix : this._cameraRigParams[\"frameData\"].rightViewMatrix;\r\n\r\n Matrix.FromArrayToRef(viewArray, 0, this._webvrViewMatrix);\r\n\r\n if (!this.getScene().useRightHandedSystem) {\r\n this._webvrViewMatrix.toggleModelMatrixHandInPlace();\r\n }\r\n\r\n // update the camera rotation matrix\r\n this._webvrViewMatrix.getRotationMatrixToRef(this._cameraRotationMatrix);\r\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\r\n\r\n // Computing target and final matrix\r\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\r\n\r\n // should the view matrix be updated with scale and position offset?\r\n if (parentCamera.deviceScaleFactor !== 1) {\r\n this._webvrViewMatrix.invert();\r\n // scale the position, if set\r\n if (parentCamera.deviceScaleFactor) {\r\n this._webvrViewMatrix.multiplyAtIndex(12, parentCamera.deviceScaleFactor);\r\n this._webvrViewMatrix.multiplyAtIndex(13, parentCamera.deviceScaleFactor);\r\n this._webvrViewMatrix.multiplyAtIndex(14, parentCamera.deviceScaleFactor);\r\n }\r\n\r\n this._webvrViewMatrix.invert();\r\n }\r\n\r\n // Remove translation from 6dof headset if trackposition is set to false\r\n parentCamera._correctPositionIfNotTrackPosition(this._webvrViewMatrix, true);\r\n\r\n parentCamera._worldToDevice.multiplyToRef(this._webvrViewMatrix, this._webvrViewMatrix);\r\n\r\n // Compute global position\r\n this._workingMatrix = this._workingMatrix || Matrix.Identity();\r\n this._webvrViewMatrix.invertToRef(this._workingMatrix);\r\n this._workingMatrix.multiplyToRef(parentCamera.getWorldMatrix(), this._workingMatrix);\r\n this._workingMatrix.getTranslationToRef(this._globalPosition);\r\n this._markSyncedWithParent();\r\n\r\n return this._webvrViewMatrix;\r\n }\r\n\r\n /** @internal */\r\n public _getWebVRProjectionMatrix(): Matrix {\r\n const parentCamera = <WebVRFreeCamera>this.parent;\r\n\r\n parentCamera._vrDevice.depthNear = parentCamera.minZ;\r\n parentCamera._vrDevice.depthFar = parentCamera.maxZ;\r\n\r\n const projectionArray = this._cameraRigParams[\"left\"] ? this._cameraRigParams[\"frameData\"].leftProjectionMatrix : this._cameraRigParams[\"frameData\"].rightProjectionMatrix;\r\n Matrix.FromArrayToRef(projectionArray, 0, this._projectionMatrix);\r\n\r\n //babylon compatible matrix\r\n if (!this.getScene().useRightHandedSystem) {\r\n this._projectionMatrix.toggleProjectionMatrixHandInPlace();\r\n }\r\n\r\n return this._projectionMatrix;\r\n }\r\n\r\n private _onGamepadConnectedObserver: Nullable<Observer<Gamepad>>;\r\n private _onGamepadDisconnectedObserver: Nullable<Observer<Gamepad>>;\r\n private _updateCacheWhenTrackingDisabledObserver: Nullable<Observer<Scene>>;\r\n /**\r\n * Initializes the controllers and their meshes\r\n */\r\n public initControllers() {\r\n this.controllers.length = 0;\r\n\r\n const manager = this.getScene().gamepadManager;\r\n this._onGamepadDisconnectedObserver = manager.onGamepadDisconnectedObservable.add((gamepad) => {\r\n if (gamepad.type === Gamepad.POSE_ENABLED) {\r\n const webVrController: WebVRController = <WebVRController>gamepad;\r\n\r\n if (webVrController.defaultModel) {\r\n webVrController.defaultModel.setEnabled(false);\r\n }\r\n\r\n if (webVrController.hand === \"right\") {\r\n this._rightController = null;\r\n }\r\n if (webVrController.hand === \"left\") {\r\n this._leftController = null;\r\n }\r\n const controllerIndex = this.controllers.indexOf(webVrController);\r\n if (controllerIndex !== -1) {\r\n this.controllers.splice(controllerIndex, 1);\r\n }\r\n }\r\n });\r\n\r\n this._onGamepadConnectedObserver = manager.onGamepadConnectedObservable.add((gamepad) => {\r\n if (gamepad.type === Gamepad.POSE_ENABLED) {\r\n const webVrController: WebVRController = <WebVRController>gamepad;\r\n if (!this._webVROptions.trackPosition) {\r\n webVrController._disableTrackPosition(new Vector3(webVrController.hand == \"left\" ? -0.15 : 0.15, -0.5, 0.25));\r\n // Cache must be updated before rendering controllers to avoid them being one frame behind\r\n if (!this._updateCacheWhenTrackingDisabledObserver) {\r\n this._updateCacheWhenTrackingDisabledObserver = this._scene.onBeforeRenderObservable.add(() => {\r\n this._updateCache();\r\n });\r\n }\r\n }\r\n webVrController.deviceScaleFactor = this.deviceScaleFactor;\r\n webVrController._deviceToWorld.copyFrom(this._deviceToWorld);\r\n this._correctPositionIfNotTrackPosition(webVrController._deviceToWorld);\r\n\r\n if (this._webVROptions.controllerMeshes) {\r\n if (webVrController.defaultModel) {\r\n webVrController.defaultModel.setEnabled(true);\r\n } else {\r\n // Load the meshes\r\n webVrController.initControllerMesh(this.getScene(), (loadedMesh) => {\r\n loadedMesh.scaling.scaleInPlace(this.deviceScaleFactor);\r\n this.onControllerMeshLoadedObservable.notifyObservers(webVrController);\r\n if (this._webVROptions.defaultLightingOnControllers) {\r\n if (!this._lightOnControllers) {\r\n this._lightOnControllers = new HemisphericLight(\"vrControllersLight\", new Vector3(0, 1, 0), this.getScene());\r\n }\r\n const activateLightOnSubMeshes = function (mesh: AbstractMesh, light: HemisphericLight) {\r\n const children = mesh.getChildren();\r\n if (children && children.length !== 0) {\r\n children.forEach((mesh) => {\r\n light.includedOnlyMeshes.push(<AbstractMesh>mesh);\r\n activateLightOnSubMeshes(<AbstractMesh>mesh, light);\r\n });\r\n }\r\n };\r\n this._lightOnControllers.includedOnlyMeshes.push(loadedMesh);\r\n activateLightOnSubMeshes(loadedMesh, this._lightOnControllers);\r\n }\r\n });\r\n }\r\n }\r\n webVrController.attachToPoseControlledCamera(this);\r\n\r\n // since this is async - sanity check. Is the controller already stored?\r\n if (this.controllers.indexOf(webVrController) === -1) {\r\n //add to the controllers array\r\n this.controllers.push(webVrController);\r\n\r\n // Forced to add some control code for Vive as it doesn't always fill properly the \"hand\" property\r\n // Sometimes, both controllers are set correctly (left and right), sometimes none, sometimes only one of them...\r\n // So we're overriding setting left & right manually to be sure\r\n let firstViveWandDetected = false;\r\n\r\n for (let i = 0; i < this.controllers.length; i++) {\r\n if (this.controllers[i].controllerType === PoseEnabledControllerType.VIVE) {\r\n if (!firstViveWandDetected) {\r\n firstViveWandDetected = true;\r\n this.controllers[i].hand = \"left\";\r\n } else {\r\n this.controllers[i].hand = \"right\";\r\n }\r\n }\r\n }\r\n\r\n //did we find enough controllers? Great! let the developer know.\r\n if (this.controllers.length >= 2) {\r\n this.onControllersAttachedObservable.notifyObservers(this.controllers);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webVRCamera.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Cameras/VR/webVRCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { Observer } from \"../../Misc/observable\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport type { TargetCamera } from \"../../Cameras/targetCamera\";\r\nimport { Camera } from \"../../Cameras/camera\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Quaternion, Matrix, Vector3 } from \"../../Maths/math.vector\";\r\nimport { Gamepad } from \"../../Gamepads/gamepad\";\r\nimport { PoseEnabledControllerType } from \"../../Gamepads/Controllers/poseEnabledController\";\r\nimport type { WebVRController } from \"../../Gamepads/Controllers/webVRController\";\r\nimport type { IDisplayChangedEventArgs } from \"../../Engines/engine\";\r\nimport { Node } from \"../../node\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport type { Ray } from \"../../Culling/ray\";\r\nimport { HemisphericLight } from \"../../Lights/hemisphericLight\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { VRMultiviewToSingleviewPostProcess } from \"../../PostProcesses/vrMultiviewToSingleviewPostProcess\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { setWebVRRigMode } from \"../RigModes/webVRRigMode\";\r\n\r\n// Side effect import to add webvr support to engine\r\nimport \"../../Engines/Extensions/engine.webVR\";\r\n\r\nNode.AddNodeConstructor(\"WebVRFreeCamera\", (name, scene) => {\r\n return () => new WebVRFreeCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\nNode.AddNodeConstructor(\"WebVRGamepadCamera\", (name, scene) => {\r\n return () => new WebVRFreeCamera(name, Vector3.Zero(), scene);\r\n});\r\n\r\n/**\r\n * This is a copy of VRPose. See https://developer.mozilla.org/en-US/docs/Web/API/VRPose\r\n * IMPORTANT!! The data is right-hand data.\r\n * @export\r\n * @interface DevicePose\r\n */\r\nexport interface DevicePose {\r\n /**\r\n * The position of the device, values in array are [x,y,z].\r\n */\r\n readonly position: Nullable<Float32Array>;\r\n /**\r\n * The linearVelocity of the device, values in array are [x,y,z].\r\n */\r\n readonly linearVelocity: Nullable<Float32Array>;\r\n /**\r\n * The linearAcceleration of the device, values in array are [x,y,z].\r\n */\r\n readonly linearAcceleration: Nullable<Float32Array>;\r\n\r\n /**\r\n * The orientation of the device in a quaternion array, values in array are [x,y,z,w].\r\n */\r\n readonly orientation: Nullable<Float32Array>;\r\n /**\r\n * The angularVelocity of the device, values in array are [x,y,z].\r\n */\r\n readonly angularVelocity: Nullable<Float32Array>;\r\n /**\r\n * The angularAcceleration of the device, values in array are [x,y,z].\r\n */\r\n readonly angularAcceleration: Nullable<Float32Array>;\r\n}\r\n\r\n/**\r\n * Interface representing a pose controlled object in Babylon.\r\n * A pose controlled object has both regular pose values as well as pose values\r\n * from an external device such as a VR head mounted display\r\n */\r\nexport interface PoseControlled {\r\n /**\r\n * The position of the object in babylon space.\r\n */\r\n position: Vector3;\r\n /**\r\n * The rotation quaternion of the object in babylon space.\r\n */\r\n rotationQuaternion: Quaternion;\r\n /**\r\n * The position of the device in babylon space.\r\n */\r\n devicePosition?: Vector3;\r\n /**\r\n * The rotation quaternion of the device in babylon space.\r\n */\r\n deviceRotationQuaternion: Quaternion;\r\n /**\r\n * The raw pose coming from the device.\r\n */\r\n rawPose: Nullable<DevicePose>;\r\n /**\r\n * The scale of the device to be used when translating from device space to babylon space.\r\n */\r\n deviceScaleFactor: number;\r\n /**\r\n * Updates the poseControlled values based on the input device pose.\r\n * @param poseData the pose data to update the object with\r\n */\r\n updateFromDevice(poseData: DevicePose): void;\r\n}\r\n\r\n/**\r\n * Set of options to customize the webVRCamera\r\n */\r\nexport interface WebVROptions {\r\n /**\r\n * Sets if the webVR camera should be tracked to the vrDevice. (default: true)\r\n */\r\n trackPosition?: boolean;\r\n /**\r\n * Sets the scale of the vrDevice in babylon space. (default: 1)\r\n */\r\n positionScale?: number;\r\n /**\r\n * If there are more than one VRDisplays, this will choose the display matching this name. (default: pick first vrDisplay)\r\n */\r\n displayName?: string;\r\n /**\r\n * Should the native controller meshes be initialized. (default: true)\r\n */\r\n controllerMeshes?: boolean;\r\n /**\r\n * Creating a default HemiLight only on controllers. (default: true)\r\n */\r\n defaultLightingOnControllers?: boolean;\r\n /**\r\n * If you don't want to use the default VR button of the helper. (default: false)\r\n */\r\n useCustomVRButton?: boolean;\r\n\r\n /**\r\n * If you'd like to provide your own button to the VRHelper. (default: standard babylon vr button)\r\n */\r\n customVRButton?: HTMLButtonElement;\r\n\r\n /**\r\n * To change the length of the ray for gaze/controllers. Will be scaled by positionScale. (default: 100)\r\n */\r\n rayLength?: number;\r\n\r\n /**\r\n * To change the default offset from the ground to account for user's height in meters. Will be scaled by positionScale. (default: 1.7)\r\n */\r\n defaultHeight?: number;\r\n\r\n /**\r\n * If multiview should be used if available (default: false)\r\n */\r\n useMultiview?: boolean;\r\n}\r\n\r\n/**\r\n * This represents a WebVR camera.\r\n * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.\r\n * @deprecated Use WebXR instead - https://doc.babylonjs.com/features/featuresDeepDive/webXR\r\n * @example https://doc.babylonjs.com/features/featuresDeepDive/cameras/webVRCamera\r\n */\r\nexport class WebVRFreeCamera extends FreeCamera implements PoseControlled {\r\n /**\r\n * @internal\r\n * The vrDisplay tied to the camera. See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay\r\n */\r\n public _vrDevice: any = null;\r\n /**\r\n * The rawPose of the vrDevice.\r\n */\r\n public rawPose: Nullable<DevicePose> = null;\r\n private _onVREnabled: (success: boolean) => void;\r\n private _specsVersion: string = \"1.1\";\r\n private _attached: boolean = false;\r\n\r\n private _frameData: any;\r\n\r\n protected _descendants: Array<Node> = [];\r\n\r\n // Represents device position and rotation in room space. Should only be used to help calculate babylon space values\r\n private _deviceRoomPosition = Vector3.Zero();\r\n /** @internal */\r\n public _deviceRoomRotationQuaternion = Quaternion.Identity();\r\n\r\n private _standingMatrix: Nullable<Matrix> = null;\r\n\r\n /**\r\n * Represents device position in babylon space.\r\n */\r\n public devicePosition = Vector3.Zero();\r\n /**\r\n * Represents device rotation in babylon space.\r\n */\r\n public deviceRotationQuaternion = Quaternion.Identity();\r\n\r\n /**\r\n * The scale of the device to be used when translating from device space to babylon space.\r\n */\r\n public deviceScaleFactor: number = 1;\r\n\r\n private _deviceToWorld = Matrix.Identity();\r\n private _worldToDevice = Matrix.Identity();\r\n\r\n /**\r\n * References to the webVR controllers for the vrDevice.\r\n */\r\n public controllers: Array<WebVRController> = [];\r\n /**\r\n * Emits an event when a controller is attached.\r\n */\r\n public onControllersAttachedObservable = new Observable<Array<WebVRController>>();\r\n /**\r\n * Emits an event when a controller's mesh has been loaded;\r\n */\r\n public onControllerMeshLoadedObservable = new Observable<WebVRController>();\r\n /**\r\n * Emits an event when the HMD's pose has been updated.\r\n */\r\n public onPoseUpdatedFromDeviceObservable = new Observable<any>();\r\n private _poseSet = false;\r\n /**\r\n * If the rig cameras be used as parent instead of this camera.\r\n */\r\n public rigParenting: boolean = true;\r\n\r\n private _lightOnControllers: HemisphericLight;\r\n\r\n private _defaultHeight?: number = undefined;\r\n\r\n /**\r\n * Instantiates a WebVRFreeCamera.\r\n * @param name The name of the WebVRFreeCamera\r\n * @param position The starting anchor position for the camera\r\n * @param scene The scene the camera belongs to\r\n * @param _webVROptions a set of customizable options for the webVRCamera\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, private _webVROptions: WebVROptions = {}) {\r\n super(name, position, scene);\r\n this._cache.position = Vector3.Zero();\r\n if (_webVROptions.defaultHeight) {\r\n this._defaultHeight = _webVROptions.defaultHeight;\r\n this.position.y = this._defaultHeight;\r\n }\r\n\r\n this.minZ = 0.1;\r\n\r\n //legacy support - the compensation boolean was removed.\r\n if (arguments.length === 5) {\r\n // eslint-disable-next-line prefer-rest-params\r\n this._webVROptions = arguments[4];\r\n }\r\n\r\n // default webVR options\r\n if (this._webVROptions.trackPosition == undefined) {\r\n this._webVROptions.trackPosition = true;\r\n }\r\n if (this._webVROptions.controllerMeshes == undefined) {\r\n this._webVROptions.controllerMeshes = true;\r\n }\r\n if (this._webVROptions.defaultLightingOnControllers == undefined) {\r\n this._webVROptions.defaultLightingOnControllers = true;\r\n }\r\n\r\n this.rotationQuaternion = new Quaternion();\r\n\r\n if (this._webVROptions && this._webVROptions.positionScale) {\r\n this.deviceScaleFactor = this._webVROptions.positionScale;\r\n }\r\n\r\n //enable VR\r\n const engine = this.getEngine();\r\n this._onVREnabled = (success: boolean) => {\r\n if (success) {\r\n this.initControllers();\r\n }\r\n };\r\n engine.onVRRequestPresentComplete.add(this._onVREnabled);\r\n engine.initWebVR().add((event: IDisplayChangedEventArgs) => {\r\n if (!event.vrDisplay || this._vrDevice === event.vrDisplay) {\r\n return;\r\n }\r\n\r\n this._vrDevice = event.vrDisplay;\r\n\r\n //reset the rig parameters.\r\n this.setCameraRigMode(Camera.RIG_MODE_WEBVR, { parentCamera: this, vrDisplay: this._vrDevice, frameData: this._frameData, specs: this._specsVersion });\r\n\r\n if (this._attached) {\r\n this.getEngine().enableVR(this._webVROptions);\r\n }\r\n });\r\n\r\n if (typeof VRFrameData !== \"undefined\") {\r\n this._frameData = new VRFrameData();\r\n }\r\n\r\n if (_webVROptions.useMultiview) {\r\n if (!this.getScene().getEngine().getCaps().multiview) {\r\n Logger.Warn(\"Multiview is not supported, falling back to standard rendering\");\r\n this._useMultiviewToSingleView = false;\r\n } else {\r\n this._useMultiviewToSingleView = true;\r\n this._rigPostProcess = new VRMultiviewToSingleviewPostProcess(\"VRMultiviewToSingleview\", this, 1.0);\r\n }\r\n }\r\n\r\n /**\r\n * The idea behind the following lines:\r\n * objects that have the camera as parent should actually have the rig cameras as a parent.\r\n * BUT, each of those cameras has a different view matrix, which means that if we set the parent to the first rig camera,\r\n * the second will not show it correctly.\r\n *\r\n * To solve this - each object that has the camera as parent will be added to a protected array.\r\n * When the rig camera renders, it will take this array and set all of those to be its children.\r\n * This way, the right camera will be used as a parent, and the mesh will be rendered correctly.\r\n * Amazing!\r\n */\r\n this.getScene().onBeforeCameraRenderObservable.add((camera) => {\r\n if (camera.parent === this && this.rigParenting) {\r\n this._descendants = this.getDescendants(true, (n) => {\r\n // don't take the cameras or the controllers!\r\n const isController = this.controllers.some((controller) => {\r\n return controller._mesh === n;\r\n });\r\n const isRigCamera = this._rigCameras.indexOf(<Camera>n) !== -1;\r\n return !isController && !isRigCamera;\r\n });\r\n this._descendants.forEach((node) => {\r\n node.parent = camera;\r\n });\r\n }\r\n });\r\n\r\n this.getScene().onAfterCameraRenderObservable.add((camera) => {\r\n if (camera.parent === this && this.rigParenting) {\r\n this._descendants.forEach((node) => {\r\n node.parent = this;\r\n });\r\n }\r\n });\r\n }\r\n\r\n protected _setRigMode = setWebVRRigMode.bind(null, this);\r\n\r\n /**\r\n * Gets the device distance from the ground in meters.\r\n * @returns the distance in meters from the vrDevice to ground in device space. If standing matrix is not supported for the vrDevice 0 is returned.\r\n */\r\n public deviceDistanceToRoomGround(): number {\r\n if (this._standingMatrix) {\r\n // Add standing matrix offset to get real offset from ground in room\r\n this._standingMatrix.getTranslationToRef(this._workingVector);\r\n return this._deviceRoomPosition.y + this._workingVector.y;\r\n }\r\n //If VRDisplay does not inform stage parameters and no default height is set we fallback to zero.\r\n return this._defaultHeight || 0;\r\n }\r\n\r\n /**\r\n * Enables the standing matrix when supported. This can be used to position the user's view the correct height from the ground.\r\n * @param callback will be called when the standing matrix is set. Callback parameter is if the standing matrix is supported.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public useStandingMatrix(callback = (bool: boolean) => {}) {\r\n // Use standing matrix if available\r\n this.getEngine()\r\n .initWebVRAsync()\r\n .then((result) => {\r\n if (!result.vrDisplay || !result.vrDisplay.stageParameters || !result.vrDisplay.stageParameters.sittingToStandingTransform || !this._webVROptions.trackPosition) {\r\n callback(false);\r\n } else {\r\n this._standingMatrix = new Matrix();\r\n Matrix.FromFloat32ArrayToRefScaled(result.vrDisplay.stageParameters.sittingToStandingTransform, 0, 1, this._standingMatrix);\r\n if (!this.getScene().useRightHandedSystem) {\r\n if (this._standingMatrix) {\r\n this._standingMatrix.toggleModelMatrixHandInPlace();\r\n }\r\n }\r\n callback(true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Enables the standing matrix when supported. This can be used to position the user's view the correct height from the ground.\r\n * @returns A promise with a boolean set to if the standing matrix is supported.\r\n */\r\n public useStandingMatrixAsync(): Promise<boolean> {\r\n return new Promise((res) => {\r\n this.useStandingMatrix((supported) => {\r\n res(supported);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Disposes the camera\r\n */\r\n public dispose(): void {\r\n this._detachIfAttached();\r\n this.getEngine().onVRRequestPresentComplete.removeCallback(this._onVREnabled);\r\n if (this._updateCacheWhenTrackingDisabledObserver) {\r\n this._scene.onBeforeRenderObservable.remove(this._updateCacheWhenTrackingDisabledObserver);\r\n }\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Gets a vrController by name.\r\n * @param name The name of the controller to retrieve\r\n * @returns the controller matching the name specified or null if not found\r\n */\r\n public getControllerByName(name: string): Nullable<WebVRController> {\r\n for (const gp of this.controllers) {\r\n if (gp.hand === name) {\r\n return gp;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _leftController: Nullable<WebVRController>;\r\n /**\r\n * The controller corresponding to the users left hand.\r\n */\r\n public get leftController(): Nullable<WebVRController> {\r\n if (!this._leftController) {\r\n this._leftController = this.getControllerByName(\"left\");\r\n }\r\n\r\n return this._leftController;\r\n }\r\n\r\n private _rightController: Nullable<WebVRController>;\r\n /**\r\n * The controller corresponding to the users right hand.\r\n */\r\n public get rightController(): Nullable<WebVRController> {\r\n if (!this._rightController) {\r\n this._rightController = this.getControllerByName(\"right\");\r\n }\r\n\r\n return this._rightController;\r\n }\r\n\r\n /**\r\n * Casts a ray forward from the vrCamera's gaze.\r\n * @param length Length of the ray (default: 100)\r\n * @returns the ray corresponding to the gaze\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (this.leftCamera) {\r\n // Use left eye to avoid computation to compute center on every call\r\n return super.getForwardRay(length, this.leftCamera.getWorldMatrix(), this.leftCamera.globalPosition); // Need the actual rendered camera\r\n } else {\r\n return super.getForwardRay(length);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the camera based on device's frame data\r\n */\r\n public _checkInputs(): void {\r\n if (this._vrDevice && this._vrDevice.isPresenting) {\r\n this._vrDevice.getFrameData(this._frameData);\r\n\r\n this.updateFromDevice(this._frameData.pose);\r\n }\r\n\r\n super._checkInputs();\r\n }\r\n\r\n /**\r\n * Updates the poseControlled values based on the input device pose.\r\n * @param poseData Pose coming from the device\r\n */\r\n updateFromDevice(poseData: DevicePose) {\r\n if (poseData && poseData.orientation && poseData.orientation.length === 4) {\r\n this.rawPose = poseData;\r\n this._deviceRoomRotationQuaternion.copyFromFloats(poseData.orientation[0], poseData.orientation[1], -poseData.orientation[2], -poseData.orientation[3]);\r\n\r\n if (this.getScene().useRightHandedSystem) {\r\n this._deviceRoomRotationQuaternion.z *= -1;\r\n this._deviceRoomRotationQuaternion.w *= -1;\r\n }\r\n if (this._webVROptions.trackPosition && this.rawPose.position) {\r\n this._deviceRoomPosition.copyFromFloats(this.rawPose.position[0], this.rawPose.position[1], -this.rawPose.position[2]);\r\n if (this.getScene().useRightHandedSystem) {\r\n this._deviceRoomPosition.z *= -1;\r\n }\r\n }\r\n this._poseSet = true;\r\n }\r\n }\r\n\r\n private _detachIfAttached = () => {\r\n const vrDisplay = this.getEngine().getVRDevice();\r\n if (vrDisplay && !vrDisplay.isPresenting) {\r\n this.detachControl();\r\n }\r\n };\r\n\r\n /**\r\n * WebVR's attach control will start broadcasting frames to the device.\r\n * Note that in certain browsers (chrome for example) this function must be called\r\n * within a user-interaction callback. Example:\r\n * <pre> scene.onPointerDown = function() { camera.attachControl(canvas); }</pre>\r\n *\r\n * @param noPreventDefault prevent the default html element operation when attaching the vrDevice\r\n */\r\n public attachControl(noPreventDefault?: boolean): void {\r\n // eslint-disable-next-line prefer-rest-params\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n super.attachControl(noPreventDefault);\r\n this._attached = true;\r\n\r\n noPreventDefault = Camera.ForceAttachControlToAlwaysPreventDefault ? false : noPreventDefault;\r\n\r\n if (this._vrDevice) {\r\n this.getEngine().enableVR(this._webVROptions);\r\n }\r\n\r\n const hostWindow = this._scene.getEngine().getHostWindow();\r\n\r\n if (hostWindow) {\r\n hostWindow.addEventListener(\"vrdisplaypresentchange\", this._detachIfAttached);\r\n }\r\n }\r\n\r\n /**\r\n * Detach the current controls from the specified dom element.\r\n */\r\n public detachControl(): void {\r\n this.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver);\r\n this.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver);\r\n\r\n super.detachControl();\r\n this._attached = false;\r\n this.getEngine().disableVR();\r\n window.removeEventListener(\"vrdisplaypresentchange\", this._detachIfAttached);\r\n }\r\n\r\n /**\r\n * @returns the name of this class\r\n */\r\n public getClassName(): string {\r\n return \"WebVRFreeCamera\";\r\n }\r\n\r\n /**\r\n * Calls resetPose on the vrDisplay\r\n * See: https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/resetPose\r\n */\r\n public resetToCurrentRotation() {\r\n //uses the vrDisplay's \"resetPose()\".\r\n //pitch and roll won't be affected.\r\n this._vrDevice.resetPose();\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the rig cameras (left and right eye)\r\n */\r\n public _updateRigCameras() {\r\n const camLeft = <TargetCamera>this._rigCameras[0];\r\n const camRight = <TargetCamera>this._rigCameras[1];\r\n camLeft.rotationQuaternion.copyFrom(this._deviceRoomRotationQuaternion);\r\n camRight.rotationQuaternion.copyFrom(this._deviceRoomRotationQuaternion);\r\n\r\n camLeft.position.copyFrom(this._deviceRoomPosition);\r\n camRight.position.copyFrom(this._deviceRoomPosition);\r\n }\r\n\r\n private _workingVector = Vector3.Zero();\r\n private _oneVector = Vector3.One();\r\n private _workingMatrix = Matrix.Identity();\r\n\r\n private _updateCacheCalled: boolean;\r\n\r\n // Remove translation from 6dof headset if trackposition is set to false\r\n private _correctPositionIfNotTrackPosition(matrix: Matrix, isViewMatrix = false) {\r\n if (this.rawPose && this.rawPose.position && !this._webVROptions.trackPosition) {\r\n Matrix.TranslationToRef(this.rawPose.position[0], this.rawPose.position[1], -this.rawPose.position[2], this._tmpMatrix);\r\n if (!isViewMatrix) {\r\n this._tmpMatrix.invert();\r\n }\r\n this._tmpMatrix.multiplyToRef(matrix, matrix);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n * Updates the cached values of the camera\r\n * @param ignoreParentClass ignores updating the parent class's cache (default: false)\r\n */\r\n public _updateCache(ignoreParentClass?: boolean): void {\r\n if (!this.rotationQuaternion.equals(this._cache.rotationQuaternion) || !this.position.equals(this._cache.position)) {\r\n // Update to ensure devicePosition is up to date with most recent _deviceRoomPosition\r\n if (!this._updateCacheCalled) {\r\n // make sure it is only called once per loop. this.update() might cause an infinite loop.\r\n this._updateCacheCalled = true;\r\n this.update();\r\n }\r\n\r\n // Set working vector to the device position in room space rotated by the new rotation\r\n this.rotationQuaternion.toRotationMatrix(this._workingMatrix);\r\n Vector3.TransformCoordinatesToRef(this._deviceRoomPosition, this._workingMatrix, this._workingVector);\r\n\r\n // Subtract this vector from the current device position in world to get the translation for the device world matrix\r\n this.devicePosition.subtractToRef(this._workingVector, this._workingVector);\r\n Matrix.ComposeToRef(this._oneVector, this.rotationQuaternion, this._workingVector, this._deviceToWorld);\r\n\r\n // Add translation from anchor position\r\n this._deviceToWorld.getTranslationToRef(this._workingVector);\r\n this._workingVector.addInPlace(this.position);\r\n this._workingVector.subtractInPlace(this._cache.position);\r\n this._deviceToWorld.setTranslation(this._workingVector);\r\n\r\n // Set an inverted matrix to be used when updating the camera\r\n this._deviceToWorld.invertToRef(this._worldToDevice);\r\n\r\n // Update the gamepad to ensure the mesh is updated on the same frame as camera\r\n this.controllers.forEach((controller) => {\r\n controller._deviceToWorld.copyFrom(this._deviceToWorld);\r\n this._correctPositionIfNotTrackPosition(controller._deviceToWorld);\r\n controller.update();\r\n });\r\n }\r\n\r\n if (!ignoreParentClass) {\r\n super._updateCache();\r\n }\r\n this._updateCacheCalled = false;\r\n }\r\n\r\n /**\r\n * @internal\r\n * Get current device position in babylon world\r\n */\r\n public _computeDevicePosition() {\r\n Vector3.TransformCoordinatesToRef(this._deviceRoomPosition, this._deviceToWorld, this.devicePosition);\r\n }\r\n\r\n /**\r\n * Updates the current device position and rotation in the babylon world\r\n */\r\n public update() {\r\n this._computeDevicePosition();\r\n\r\n // Get current device rotation in babylon world\r\n Matrix.FromQuaternionToRef(this._deviceRoomRotationQuaternion, this._workingMatrix);\r\n this._workingMatrix.multiplyToRef(this._deviceToWorld, this._workingMatrix);\r\n Quaternion.FromRotationMatrixToRef(this._workingMatrix, this.deviceRotationQuaternion);\r\n\r\n if (this._poseSet) {\r\n this.onPoseUpdatedFromDeviceObservable.notifyObservers(null);\r\n }\r\n super.update();\r\n }\r\n\r\n /**\r\n * @internal\r\n * Gets the view matrix of this camera (Always set to identity as left and right eye cameras contain the actual view matrix)\r\n * @returns an identity matrix\r\n */\r\n public _getViewMatrix(): Matrix {\r\n return Matrix.Identity();\r\n }\r\n\r\n private _tmpMatrix = new Matrix();\r\n /**\r\n * This function is called by the two RIG cameras.\r\n * 'this' is the left or right camera (and NOT (!!!) the WebVRFreeCamera instance)\r\n * @internal\r\n */\r\n public _getWebVRViewMatrix(): Matrix {\r\n // Update the parent camera prior to using a child camera to avoid desynchronization\r\n const parentCamera: WebVRFreeCamera = this._cameraRigParams[\"parentCamera\"];\r\n parentCamera._updateCache();\r\n\r\n //WebVR 1.1\r\n const viewArray = this._cameraRigParams[\"left\"] ? this._cameraRigParams[\"frameData\"].leftViewMatrix : this._cameraRigParams[\"frameData\"].rightViewMatrix;\r\n\r\n Matrix.FromArrayToRef(viewArray, 0, this._webvrViewMatrix);\r\n\r\n if (!this.getScene().useRightHandedSystem) {\r\n this._webvrViewMatrix.toggleModelMatrixHandInPlace();\r\n }\r\n\r\n // update the camera rotation matrix\r\n this._webvrViewMatrix.getRotationMatrixToRef(this._cameraRotationMatrix);\r\n Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);\r\n\r\n // Computing target and final matrix\r\n this.position.addToRef(this._transformedReferencePoint, this._currentTarget);\r\n\r\n // should the view matrix be updated with scale and position offset?\r\n if (parentCamera.deviceScaleFactor !== 1) {\r\n this._webvrViewMatrix.invert();\r\n // scale the position, if set\r\n if (parentCamera.deviceScaleFactor) {\r\n this._webvrViewMatrix.multiplyAtIndex(12, parentCamera.deviceScaleFactor);\r\n this._webvrViewMatrix.multiplyAtIndex(13, parentCamera.deviceScaleFactor);\r\n this._webvrViewMatrix.multiplyAtIndex(14, parentCamera.deviceScaleFactor);\r\n }\r\n\r\n this._webvrViewMatrix.invert();\r\n }\r\n\r\n // Remove translation from 6dof headset if trackposition is set to false\r\n parentCamera._correctPositionIfNotTrackPosition(this._webvrViewMatrix, true);\r\n\r\n parentCamera._worldToDevice.multiplyToRef(this._webvrViewMatrix, this._webvrViewMatrix);\r\n\r\n // Compute global position\r\n this._workingMatrix = this._workingMatrix || Matrix.Identity();\r\n this._webvrViewMatrix.invertToRef(this._workingMatrix);\r\n this._workingMatrix.multiplyToRef(parentCamera.getWorldMatrix(), this._workingMatrix);\r\n this._workingMatrix.getTranslationToRef(this._globalPosition);\r\n this._markSyncedWithParent();\r\n\r\n return this._webvrViewMatrix;\r\n }\r\n\r\n /** @internal */\r\n public _getWebVRProjectionMatrix(): Matrix {\r\n const parentCamera = <WebVRFreeCamera>this.parent;\r\n\r\n parentCamera._vrDevice.depthNear = parentCamera.minZ;\r\n parentCamera._vrDevice.depthFar = parentCamera.maxZ;\r\n\r\n const projectionArray = this._cameraRigParams[\"left\"] ? this._cameraRigParams[\"frameData\"].leftProjectionMatrix : this._cameraRigParams[\"frameData\"].rightProjectionMatrix;\r\n Matrix.FromArrayToRef(projectionArray, 0, this._projectionMatrix);\r\n\r\n //babylon compatible matrix\r\n if (!this.getScene().useRightHandedSystem) {\r\n this._projectionMatrix.toggleProjectionMatrixHandInPlace();\r\n }\r\n\r\n return this._projectionMatrix;\r\n }\r\n\r\n private _onGamepadConnectedObserver: Nullable<Observer<Gamepad>>;\r\n private _onGamepadDisconnectedObserver: Nullable<Observer<Gamepad>>;\r\n private _updateCacheWhenTrackingDisabledObserver: Nullable<Observer<Scene>>;\r\n /**\r\n * Initializes the controllers and their meshes\r\n */\r\n public initControllers() {\r\n this.controllers.length = 0;\r\n\r\n const manager = this.getScene().gamepadManager;\r\n this._onGamepadDisconnectedObserver = manager.onGamepadDisconnectedObservable.add((gamepad) => {\r\n if (gamepad.type === Gamepad.POSE_ENABLED) {\r\n const webVrController: WebVRController = <WebVRController>gamepad;\r\n\r\n if (webVrController.defaultModel) {\r\n webVrController.defaultModel.setEnabled(false);\r\n }\r\n\r\n if (webVrController.hand === \"right\") {\r\n this._rightController = null;\r\n }\r\n if (webVrController.hand === \"left\") {\r\n this._leftController = null;\r\n }\r\n const controllerIndex = this.controllers.indexOf(webVrController);\r\n if (controllerIndex !== -1) {\r\n this.controllers.splice(controllerIndex, 1);\r\n }\r\n }\r\n });\r\n\r\n this._onGamepadConnectedObserver = manager.onGamepadConnectedObservable.add((gamepad) => {\r\n if (gamepad.type === Gamepad.POSE_ENABLED) {\r\n const webVrController: WebVRController = <WebVRController>gamepad;\r\n if (!this._webVROptions.trackPosition) {\r\n webVrController._disableTrackPosition(new Vector3(webVrController.hand == \"left\" ? -0.15 : 0.15, -0.5, 0.25));\r\n // Cache must be updated before rendering controllers to avoid them being one frame behind\r\n if (!this._updateCacheWhenTrackingDisabledObserver) {\r\n this._updateCacheWhenTrackingDisabledObserver = this._scene.onBeforeRenderObservable.add(() => {\r\n this._updateCache();\r\n });\r\n }\r\n }\r\n webVrController.deviceScaleFactor = this.deviceScaleFactor;\r\n webVrController._deviceToWorld.copyFrom(this._deviceToWorld);\r\n this._correctPositionIfNotTrackPosition(webVrController._deviceToWorld);\r\n\r\n if (this._webVROptions.controllerMeshes) {\r\n if (webVrController.defaultModel) {\r\n webVrController.defaultModel.setEnabled(true);\r\n } else {\r\n // Load the meshes\r\n webVrController.initControllerMesh(this.getScene(), (loadedMesh) => {\r\n loadedMesh.scaling.scaleInPlace(this.deviceScaleFactor);\r\n this.onControllerMeshLoadedObservable.notifyObservers(webVrController);\r\n if (this._webVROptions.defaultLightingOnControllers) {\r\n if (!this._lightOnControllers) {\r\n this._lightOnControllers = new HemisphericLight(\"vrControllersLight\", new Vector3(0, 1, 0), this.getScene());\r\n }\r\n const activateLightOnSubMeshes = function (mesh: AbstractMesh, light: HemisphericLight) {\r\n const children = mesh.getChildren();\r\n if (children && children.length !== 0) {\r\n children.forEach((mesh) => {\r\n light.includedOnlyMeshes.push(<AbstractMesh>mesh);\r\n activateLightOnSubMeshes(<AbstractMesh>mesh, light);\r\n });\r\n }\r\n };\r\n this._lightOnControllers.includedOnlyMeshes.push(loadedMesh);\r\n activateLightOnSubMeshes(loadedMesh, this._lightOnControllers);\r\n }\r\n });\r\n }\r\n }\r\n webVrController.attachToPoseControlledCamera(this);\r\n\r\n // since this is async - sanity check. Is the controller already stored?\r\n if (this.controllers.indexOf(webVrController) === -1) {\r\n //add to the controllers array\r\n this.controllers.push(webVrController);\r\n\r\n // Forced to add some control code for Vive as it doesn't always fill properly the \"hand\" property\r\n // Sometimes, both controllers are set correctly (left and right), sometimes none, sometimes only one of them...\r\n // So we're overriding setting left & right manually to be sure\r\n let firstViveWandDetected = false;\r\n\r\n for (let i = 0; i < this.controllers.length; i++) {\r\n if (this.controllers[i].controllerType === PoseEnabledControllerType.VIVE) {\r\n if (!firstViveWandDetected) {\r\n firstViveWandDetected = true;\r\n this.controllers[i].hand = \"left\";\r\n } else {\r\n this.controllers[i].hand = \"right\";\r\n }\r\n }\r\n }\r\n\r\n //did we find enough controllers? Great! let the developer know.\r\n if (this.controllers.length >= 2) {\r\n this.onControllersAttachedObservable.notifyObservers(this.controllers);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n"]}
@@ -15,7 +15,7 @@ declare type Collider = import("../Collisions/collider").Collider;
15
15
  *
16
16
  * This camera always points towards a given target position and can be rotated around that target with the target as the centre of rotation. It can be controlled with cursors and mouse, or with touch events.
17
17
  * Think of this camera as one orbiting its target position, or more imaginatively as a spy satellite orbiting the earth. Its position relative to the target (earth) can be set by three parameters, alpha (radians) the longitudinal rotation, beta (radians) the latitudinal rotation and radius the distance from the target position.
18
- * @see https://doc.babylonjs.com/babylon101/cameras#arc-rotate-camera
18
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#arc-rotate-camera
19
19
  */
20
20
  export declare class ArcRotateCamera extends TargetCamera {
21
21
  /**
@@ -261,36 +261,36 @@ export declare class ArcRotateCamera extends TargetCamera {
261
261
  private _bouncingBehavior;
262
262
  /**
263
263
  * Gets the bouncing behavior of the camera if it has been enabled.
264
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
264
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#bouncing-behavior
265
265
  */
266
266
  get bouncingBehavior(): Nullable<BouncingBehavior>;
267
267
  /**
268
268
  * Defines if the bouncing behavior of the camera is enabled on the camera.
269
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
269
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#bouncing-behavior
270
270
  */
271
271
  get useBouncingBehavior(): boolean;
272
272
  set useBouncingBehavior(value: boolean);
273
273
  private _framingBehavior;
274
274
  /**
275
275
  * Gets the framing behavior of the camera if it has been enabled.
276
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
276
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#framing-behavior
277
277
  */
278
278
  get framingBehavior(): Nullable<FramingBehavior>;
279
279
  /**
280
280
  * Defines if the framing behavior of the camera is enabled on the camera.
281
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
281
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#framing-behavior
282
282
  */
283
283
  get useFramingBehavior(): boolean;
284
284
  set useFramingBehavior(value: boolean);
285
285
  private _autoRotationBehavior;
286
286
  /**
287
287
  * Gets the auto rotation behavior of the camera if it has been enabled.
288
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
288
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#autorotation-behavior
289
289
  */
290
290
  get autoRotationBehavior(): Nullable<AutoRotationBehavior>;
291
291
  /**
292
292
  * Defines if the auto rotation behavior of the camera is enabled on the camera.
293
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
293
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#autorotation-behavior
294
294
  */
295
295
  get useAutoRotationBehavior(): boolean;
296
296
  set useAutoRotationBehavior(value: boolean);
@@ -304,13 +304,13 @@ export declare class ArcRotateCamera extends TargetCamera {
304
304
  onCollide: (collidedMesh: AbstractMesh) => void;
305
305
  /**
306
306
  * Defines whether the camera should check collision with the objects oh the scene.
307
- * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#how-can-i-do-this
307
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#how-can-i-do-this-
308
308
  */
309
309
  checkCollisions: boolean;
310
310
  /**
311
311
  * Defines the collision radius of the camera.
312
312
  * This simulates a sphere around the camera.
313
- * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
313
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#arcrotatecamera
314
314
  */
315
315
  collisionRadius: Vector3;
316
316
  protected _collider: Collider;
@@ -20,7 +20,7 @@ Node.AddNodeConstructor("ArcRotateCamera", (name, scene) => {
20
20
  *
21
21
  * This camera always points towards a given target position and can be rotated around that target with the target as the centre of rotation. It can be controlled with cursors and mouse, or with touch events.
22
22
  * Think of this camera as one orbiting its target position, or more imaginatively as a spy satellite orbiting the earth. Its position relative to the target (earth) can be set by three parameters, alpha (radians) the longitudinal rotation, beta (radians) the latitudinal rotation and radius the distance from the target position.
23
- * @see https://doc.babylonjs.com/babylon101/cameras#arc-rotate-camera
23
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_introduction#arc-rotate-camera
24
24
  */
25
25
  export class ArcRotateCamera extends TargetCamera {
26
26
  /**
@@ -143,13 +143,13 @@ export class ArcRotateCamera extends TargetCamera {
143
143
  this.onMeshTargetChangedObservable = new Observable();
144
144
  /**
145
145
  * Defines whether the camera should check collision with the objects oh the scene.
146
- * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#how-can-i-do-this
146
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#how-can-i-do-this-
147
147
  */
148
148
  this.checkCollisions = false;
149
149
  /**
150
150
  * Defines the collision radius of the camera.
151
151
  * This simulates a sphere around the camera.
152
- * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
152
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions#arcrotatecamera
153
153
  */
154
154
  this.collisionRadius = new Vector3(0.5, 0.5, 0.5);
155
155
  this._previousPosition = Vector3.Zero();
@@ -485,14 +485,14 @@ export class ArcRotateCamera extends TargetCamera {
485
485
  }
486
486
  /**
487
487
  * Gets the bouncing behavior of the camera if it has been enabled.
488
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
488
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#bouncing-behavior
489
489
  */
490
490
  get bouncingBehavior() {
491
491
  return this._bouncingBehavior;
492
492
  }
493
493
  /**
494
494
  * Defines if the bouncing behavior of the camera is enabled on the camera.
495
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
495
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#bouncing-behavior
496
496
  */
497
497
  get useBouncingBehavior() {
498
498
  return this._bouncingBehavior != null;
@@ -512,14 +512,14 @@ export class ArcRotateCamera extends TargetCamera {
512
512
  }
513
513
  /**
514
514
  * Gets the framing behavior of the camera if it has been enabled.
515
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
515
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#framing-behavior
516
516
  */
517
517
  get framingBehavior() {
518
518
  return this._framingBehavior;
519
519
  }
520
520
  /**
521
521
  * Defines if the framing behavior of the camera is enabled on the camera.
522
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
522
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#framing-behavior
523
523
  */
524
524
  get useFramingBehavior() {
525
525
  return this._framingBehavior != null;
@@ -539,14 +539,14 @@ export class ArcRotateCamera extends TargetCamera {
539
539
  }
540
540
  /**
541
541
  * Gets the auto rotation behavior of the camera if it has been enabled.
542
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
542
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#autorotation-behavior
543
543
  */
544
544
  get autoRotationBehavior() {
545
545
  return this._autoRotationBehavior;
546
546
  }
547
547
  /**
548
548
  * Defines if the auto rotation behavior of the camera is enabled on the camera.
549
- * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
549
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors/cameraBehaviors#autorotation-behavior
550
550
  */
551
551
  get useAutoRotationBehavior() {
552
552
  return this._autoRotationBehavior != null;