@babylonjs/core 8.8.0 → 8.8.1

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 (342) hide show
  1. package/Actions/actionManager.js +2 -0
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Animations/animatable.core.js +1 -1
  4. package/Animations/animatable.core.js.map +1 -1
  5. package/Animations/animation.js +4 -2
  6. package/Animations/animation.js.map +1 -1
  7. package/Audio/audioEngine.d.ts +1 -1
  8. package/Audio/audioEngine.js +20 -10
  9. package/Audio/audioEngine.js.map +1 -1
  10. package/Audio/audioSceneComponent.js +2 -0
  11. package/Audio/audioSceneComponent.js.map +1 -1
  12. package/Audio/sound.js +2 -0
  13. package/Audio/sound.js.map +1 -1
  14. package/AudioV2/abstractAudio/audioEngineV2.js +8 -1
  15. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  16. package/AudioV2/abstractAudio/streamingSound.js +3 -1
  17. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  18. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js +6 -2
  19. package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js.map +1 -1
  20. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +3 -0
  21. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/spatialAudio.js +1 -0
  23. package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
  24. package/AudioV2/webAudio/webAudioEngine.js +5 -1
  25. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  26. package/AudioV2/webAudio/webAudioStaticSound.js +2 -0
  27. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  28. package/AudioV2/webAudio/webAudioStreamingSound.js +3 -0
  29. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  30. package/AudioV2/webAudio/webAudioUnmuteUI.js +1 -0
  31. package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -1
  32. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +1 -0
  33. package/BakedVertexAnimation/vertexAnimationBaker.js +3 -1
  34. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  35. package/Buffers/buffer.nonFloatVertexBuffers.js +1 -0
  36. package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
  37. package/Buffers/storageBuffer.js +1 -1
  38. package/Buffers/storageBuffer.js.map +1 -1
  39. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +2 -0
  40. package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js.map +1 -1
  41. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +6 -1
  42. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  43. package/Cameras/VR/vrExperienceHelper.js +2 -0
  44. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  45. package/Collisions/gpuPicker.js +9 -6
  46. package/Collisions/gpuPicker.js.map +1 -1
  47. package/Compute/computeShader.js +1 -1
  48. package/Compute/computeShader.js.map +1 -1
  49. package/Culling/Helper/boundingInfoHelper.js +3 -3
  50. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  51. package/Culling/Helper/computeShaderBoundingHelper.js +3 -1
  52. package/Culling/Helper/computeShaderBoundingHelper.js.map +1 -1
  53. package/Culling/Helper/transformFeedbackBoundingHelper.js +3 -0
  54. package/Culling/Helper/transformFeedbackBoundingHelper.js.map +1 -1
  55. package/Debug/debugLayer.js +1 -1
  56. package/Debug/debugLayer.js.map +1 -1
  57. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +1 -0
  58. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
  59. package/Engines/Extensions/engine.prefilteredCubeTexture.js +1 -0
  60. package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
  61. package/Engines/Extensions/engine.readTexture.js +1 -0
  62. package/Engines/Extensions/engine.readTexture.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -0
  64. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -0
  66. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  67. package/Engines/WebGPU/Extensions/engine.videoTexture.js +2 -0
  68. package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
  69. package/Engines/WebGPU/webgpuBufferManager.js +3 -1
  70. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  71. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -0
  72. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  73. package/Engines/WebGPU/webgpuQuerySet.js +15 -9
  74. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  75. package/Engines/WebGPU/webgpuTextureManager.js +1 -0
  76. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  77. package/Engines/WebGPU/webgpuTimestampQuery.js +4 -2
  78. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  79. package/Engines/WebGPU/webgpuTintWASM.js +1 -0
  80. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  81. package/Engines/abstractEngine.js +5 -2
  82. package/Engines/abstractEngine.js.map +1 -1
  83. package/Engines/engine.common.js +7 -1
  84. package/Engines/engine.common.js.map +1 -1
  85. package/Engines/engine.js +5 -3
  86. package/Engines/engine.js.map +1 -1
  87. package/Engines/engineFactory.js +1 -1
  88. package/Engines/engineFactory.js.map +1 -1
  89. package/Engines/nativeEngine.js +19 -11
  90. package/Engines/nativeEngine.js.map +1 -1
  91. package/Engines/webgpuEngine.js +30 -11
  92. package/Engines/webgpuEngine.js.map +1 -1
  93. package/FlowGraph/flowGraphParser.js +2 -2
  94. package/FlowGraph/flowGraphParser.js.map +1 -1
  95. package/FrameGraph/Node/nodeRenderGraph.js +5 -1
  96. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  97. package/FrameGraph/Node/nodeRenderGraphBlock.js +1 -1
  98. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  99. package/FrameGraph/frameGraph.js +1 -1
  100. package/FrameGraph/frameGraph.js.map +1 -1
  101. package/Helpers/sceneHelpers.js +1 -3
  102. package/Helpers/sceneHelpers.js.map +1 -1
  103. package/Helpers/videoDome.js +1 -0
  104. package/Helpers/videoDome.js.map +1 -1
  105. package/Layers/thinEffectLayer.js +1 -0
  106. package/Layers/thinEffectLayer.js.map +1 -1
  107. package/LensFlares/lensFlareSystem.js +1 -0
  108. package/LensFlares/lensFlareSystem.js.map +1 -1
  109. package/Lights/Shadows/shadowGenerator.js +3 -2
  110. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  111. package/Lights/areaLight.js +2 -0
  112. package/Lights/areaLight.js.map +1 -1
  113. package/Loading/sceneLoader.js +56 -22
  114. package/Loading/sceneLoader.js.map +1 -1
  115. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +15 -1
  116. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +34 -7
  117. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  118. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +1 -0
  119. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  120. package/Materials/Node/Blocks/Dual/fogBlock.js +1 -0
  121. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  122. package/Materials/Node/Blocks/Dual/lightBlock.js +1 -0
  123. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  124. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -0
  125. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  126. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +1 -0
  127. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  128. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +1 -0
  129. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  130. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +1 -0
  131. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +1 -0
  133. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/Vertex/bonesBlock.js +1 -0
  135. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  136. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +1 -0
  137. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  138. package/Materials/Node/nodeMaterial.js +11 -3
  139. package/Materials/Node/nodeMaterial.js.map +1 -1
  140. package/Materials/Node/nodeMaterialBuildState.js +1 -0
  141. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  142. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +1 -0
  143. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  144. package/Materials/Textures/Loaders/basisTextureLoader.js +4 -0
  145. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  146. package/Materials/Textures/Loaders/envTextureLoader.js +1 -0
  147. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  148. package/Materials/Textures/Loaders/exrTextureLoader.js +2 -0
  149. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  150. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -0
  151. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  152. package/Materials/Textures/Loaders/textureLoaderManager.js +9 -9
  153. package/Materials/Textures/Loaders/textureLoaderManager.js.map +1 -1
  154. package/Materials/Textures/Packer/packer.js +3 -1
  155. package/Materials/Textures/Packer/packer.js.map +1 -1
  156. package/Materials/Textures/Procedurals/proceduralTexture.js +1 -0
  157. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  158. package/Materials/Textures/baseTexture.polynomial.js +1 -0
  159. package/Materials/Textures/baseTexture.polynomial.js.map +1 -1
  160. package/Materials/Textures/hdrCubeTexture.js +1 -0
  161. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  162. package/Materials/Textures/internalTexture.js +1 -0
  163. package/Materials/Textures/internalTexture.js.map +1 -1
  164. package/Materials/Textures/rawCubeTexture.js +3 -0
  165. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  166. package/Materials/Textures/renderTargetTexture.js +2 -0
  167. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  168. package/Materials/Textures/videoTexture.js +6 -0
  169. package/Materials/Textures/videoTexture.js.map +1 -1
  170. package/Materials/effect.js +2 -1
  171. package/Materials/effect.js.map +1 -1
  172. package/Materials/effect.webgl.functions.js +3 -1
  173. package/Materials/effect.webgl.functions.js.map +1 -1
  174. package/Materials/effectRenderer.js +1 -0
  175. package/Materials/effectRenderer.js.map +1 -1
  176. package/Materials/material.js +2 -1
  177. package/Materials/material.js.map +1 -1
  178. package/Materials/shaderMaterial.js +4 -2
  179. package/Materials/shaderMaterial.js.map +1 -1
  180. package/Meshes/Compression/dracoCodec.js +5 -1
  181. package/Meshes/Compression/dracoCodec.js.map +1 -1
  182. package/Meshes/Compression/dracoCompression.js +4 -3
  183. package/Meshes/Compression/dracoCompression.js.map +1 -1
  184. package/Meshes/Compression/dracoCompressionWorker.js +5 -2
  185. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  186. package/Meshes/Compression/dracoDecoder.js +5 -1
  187. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  188. package/Meshes/Compression/dracoEncoder.js +3 -2
  189. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  190. package/Meshes/Compression/meshoptCompression.js +18 -18
  191. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  192. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +14 -15
  193. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  194. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +20 -10
  195. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  196. package/Meshes/Node/Blocks/booleanGeometryBlock.js +1 -0
  197. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  198. package/Meshes/Node/nodeGeometry.js +5 -1
  199. package/Meshes/Node/nodeGeometry.js.map +1 -1
  200. package/Meshes/mesh.js +2 -2
  201. package/Meshes/mesh.js.map +1 -1
  202. package/Meshes/meshUVSpaceRenderer.js +1 -0
  203. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  204. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +1 -0
  205. package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
  206. package/Misc/assetsManager.js +2 -1
  207. package/Misc/assetsManager.js.map +1 -1
  208. package/Misc/asyncLock.js +5 -2
  209. package/Misc/asyncLock.js.map +1 -1
  210. package/Misc/basis.js +9 -2
  211. package/Misc/basis.js.map +1 -1
  212. package/Misc/basisWorker.js +3 -1
  213. package/Misc/basisWorker.js.map +1 -1
  214. package/Misc/copyTextureToTexture.js +1 -0
  215. package/Misc/copyTextureToTexture.js.map +1 -1
  216. package/Misc/coroutine.js +2 -1
  217. package/Misc/coroutine.js.map +1 -1
  218. package/Misc/dataReader.js +3 -4
  219. package/Misc/dataReader.js.map +1 -1
  220. package/Misc/dumpTools.js +7 -1
  221. package/Misc/dumpTools.js.map +1 -1
  222. package/Misc/environmentTextureTools.d.ts +0 -2
  223. package/Misc/environmentTextureTools.js +20 -7
  224. package/Misc/environmentTextureTools.js.map +1 -1
  225. package/Misc/equirectangularCapture.js +2 -1
  226. package/Misc/equirectangularCapture.js.map +1 -1
  227. package/Misc/fileTools.js +2 -0
  228. package/Misc/fileTools.js.map +1 -1
  229. package/Misc/filesInput.js +5 -1
  230. package/Misc/filesInput.js.map +1 -1
  231. package/Misc/khronosTextureContainer2.js +10 -3
  232. package/Misc/khronosTextureContainer2.js.map +1 -1
  233. package/Misc/khronosTextureContainer2Worker.js +4 -1
  234. package/Misc/khronosTextureContainer2Worker.js.map +1 -1
  235. package/Misc/minMaxReducer.js +1 -0
  236. package/Misc/minMaxReducer.js.map +1 -1
  237. package/Misc/observable.extensions.js +3 -1
  238. package/Misc/observable.extensions.js.map +1 -1
  239. package/Misc/observable.js +2 -0
  240. package/Misc/observable.js.map +1 -1
  241. package/Misc/observableCoroutine.js +1 -0
  242. package/Misc/observableCoroutine.js.map +1 -1
  243. package/Misc/reflector.js +1 -0
  244. package/Misc/reflector.js.map +1 -1
  245. package/Misc/rgbdTextureTools.js +2 -1
  246. package/Misc/rgbdTextureTools.js.map +1 -1
  247. package/Misc/sceneSerializer.js +2 -2
  248. package/Misc/sceneSerializer.js.map +1 -1
  249. package/Misc/screenshotTools.js +9 -4
  250. package/Misc/screenshotTools.js.map +1 -1
  251. package/Misc/textureTools.js +2 -0
  252. package/Misc/textureTools.js.map +1 -1
  253. package/Misc/tools.internals.js +2 -1
  254. package/Misc/tools.internals.js.map +1 -1
  255. package/Misc/tools.js +9 -3
  256. package/Misc/tools.js.map +1 -1
  257. package/Misc/videoRecorder.js +1 -0
  258. package/Misc/videoRecorder.js.map +1 -1
  259. package/Misc/webRequest.fetch.js +2 -1
  260. package/Misc/webRequest.fetch.js.map +1 -1
  261. package/Misc/workerPool.js +3 -0
  262. package/Misc/workerPool.js.map +1 -1
  263. package/Particles/flowMap.js +1 -1
  264. package/Particles/flowMap.js.map +1 -1
  265. package/Particles/particleHelper.js +7 -0
  266. package/Particles/particleHelper.js.map +1 -1
  267. package/Particles/pointsCloudSystem.js +7 -7
  268. package/Particles/pointsCloudSystem.js.map +1 -1
  269. package/Particles/thinParticleSystem.js +2 -0
  270. package/Particles/thinParticleSystem.js.map +1 -1
  271. package/Physics/physicsHelper.js +2 -2
  272. package/Physics/physicsHelper.js.map +1 -1
  273. package/Physics/v1/Plugins/oimoJSPlugin.js +1 -1
  274. package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
  275. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -0
  276. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  277. package/Rendering/GlobalIllumination/giRSMManager.js +1 -0
  278. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  279. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +1 -0
  280. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  281. package/Rendering/depthRenderer.js +1 -0
  282. package/Rendering/depthRenderer.js.map +1 -1
  283. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -1
  284. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  285. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  286. package/Rendering/geometryBufferRenderer.js +1 -0
  287. package/Rendering/geometryBufferRenderer.js.map +1 -1
  288. package/Rendering/iblCdfGenerator.js +4 -1
  289. package/Rendering/iblCdfGenerator.js.map +1 -1
  290. package/Sprites/spriteManager.js +5 -1
  291. package/Sprites/spriteManager.js.map +1 -1
  292. package/Sprites/spriteRenderer.js +1 -0
  293. package/Sprites/spriteRenderer.js.map +1 -1
  294. package/XR/features/WebXRAnchorSystem.js +4 -3
  295. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  296. package/XR/features/WebXRDepthSensing.js +1 -1
  297. package/XR/features/WebXRDepthSensing.js.map +1 -1
  298. package/XR/features/WebXRHandTracking.js +4 -1
  299. package/XR/features/WebXRHandTracking.js.map +1 -1
  300. package/XR/features/WebXRHitTest.js +4 -1
  301. package/XR/features/WebXRHitTest.js.map +1 -1
  302. package/XR/features/WebXRHitTestLegacy.js +6 -5
  303. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  304. package/XR/features/WebXRImageTracking.js +2 -1
  305. package/XR/features/WebXRImageTracking.js.map +1 -1
  306. package/XR/features/WebXRLightEstimation.js +3 -0
  307. package/XR/features/WebXRLightEstimation.js.map +1 -1
  308. package/XR/features/WebXRNearInteraction.js +2 -0
  309. package/XR/features/WebXRNearInteraction.js.map +1 -1
  310. package/XR/features/WebXRPlaneDetector.js +2 -2
  311. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  312. package/XR/motionController/webXRAbstractMotionController.js +3 -2
  313. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  314. package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
  315. package/XR/motionController/webXRMicrosoftMixedRealityController.js.map +1 -1
  316. package/XR/motionController/webXRMotionControllerManager.js +15 -9
  317. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  318. package/XR/motionController/webXRProfiledMotionController.js +1 -1
  319. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  320. package/XR/native/nativeXRFrame.js +1 -0
  321. package/XR/native/nativeXRFrame.js.map +1 -1
  322. package/XR/webXRDefaultExperience.js +10 -12
  323. package/XR/webXRDefaultExperience.js.map +1 -1
  324. package/XR/webXREnterExitUI.js +2 -1
  325. package/XR/webXREnterExitUI.js.map +1 -1
  326. package/XR/webXRExperienceHelper.js +5 -2
  327. package/XR/webXRExperienceHelper.js.map +1 -1
  328. package/XR/webXRFeaturesManager.js +1 -0
  329. package/XR/webXRFeaturesManager.js.map +1 -1
  330. package/XR/webXRInput.js +1 -0
  331. package/XR/webXRInput.js.map +1 -1
  332. package/XR/webXRInputSource.js +2 -0
  333. package/XR/webXRInputSource.js.map +1 -1
  334. package/XR/webXRManagedOutputCanvas.js +5 -1
  335. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  336. package/XR/webXRSessionManager.js +56 -60
  337. package/XR/webXRSessionManager.js.map +1 -1
  338. package/assetContainer.js +28 -28
  339. package/assetContainer.js.map +1 -1
  340. package/package.json +1 -1
  341. package/scene.js +5 -4
  342. package/scene.js.map +1 -1
@@ -30,7 +30,7 @@ export class FreeCameraDeviceOrientationInput {
30
30
  * @returns a promise that will resolve on orientation change
31
31
  */
32
32
  static async WaitForOrientationChangeAsync(timeout) {
33
- return new Promise((res, rej) => {
33
+ return await new Promise((res, rej) => {
34
34
  let gotValue = false;
35
35
  const eventHandler = () => {
36
36
  window.removeEventListener("deviceorientation", eventHandler);
@@ -42,6 +42,7 @@ export class FreeCameraDeviceOrientationInput {
42
42
  setTimeout(() => {
43
43
  if (!gotValue) {
44
44
  window.removeEventListener("deviceorientation", eventHandler);
45
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
45
46
  rej("WaitForOrientationChangeAsync timed out");
46
47
  }
47
48
  }, timeout);
@@ -49,6 +50,7 @@ export class FreeCameraDeviceOrientationInput {
49
50
  if (typeof DeviceOrientationEvent !== "undefined" && typeof DeviceOrientationEvent.requestPermission === "function") {
50
51
  DeviceOrientationEvent
51
52
  .requestPermission()
53
+ // eslint-disable-next-line github/no-then
52
54
  .then((response) => {
53
55
  if (response == "granted") {
54
56
  window.addEventListener("deviceorientation", eventHandler);
@@ -57,6 +59,7 @@ export class FreeCameraDeviceOrientationInput {
57
59
  Tools.Warn("Permission not granted.");
58
60
  }
59
61
  })
62
+ // eslint-disable-next-line github/no-then
60
63
  .catch((error) => {
61
64
  Tools.Error(error);
62
65
  });
@@ -143,6 +146,7 @@ export class FreeCameraDeviceOrientationInput {
143
146
  if (typeof DeviceOrientationEvent !== "undefined" && typeof DeviceOrientationEvent.requestPermission === "function") {
144
147
  DeviceOrientationEvent
145
148
  .requestPermission()
149
+ // eslint-disable-next-line github/no-then
146
150
  .then((response) => {
147
151
  if (response === "granted") {
148
152
  eventHandler();
@@ -151,6 +155,7 @@ export class FreeCameraDeviceOrientationInput {
151
155
  Tools.Warn("Permission not granted.");
152
156
  }
153
157
  })
158
+ // eslint-disable-next-line github/no-then
154
159
  .catch((error) => {
155
160
  Tools.Error(error);
156
161
  });
@@ -1 +1 @@
1
- {"version":3,"file":"freeCameraDeviceOrientationInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraDeviceOrientationInput.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { ICameraInput } from \"../../Cameras/cameraInputsManager\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport type { FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { Quaternion } from \"../../Maths/math.vector\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { FreeCameraInputsManager } from \"../../Cameras/freeCameraInputsManager\";\r\nimport { Observable } from \"../../Misc/observable\";\r\n\r\n// Module augmentation to abstract orientation inputs from camera.\r\ndeclare module \"../../Cameras/freeCameraInputsManager\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface FreeCameraInputsManager {\r\n /**\r\n * @internal\r\n */\r\n _deviceOrientationInput: Nullable<FreeCameraDeviceOrientationInput>;\r\n /**\r\n * Add orientation input support to the input manager.\r\n * @param smoothFactor deviceOrientation smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing\r\n * @returns the current input manager\r\n */\r\n addDeviceOrientation(smoothFactor?: number): FreeCameraInputsManager;\r\n }\r\n}\r\n\r\n/**\r\n * Add orientation input support to the input manager.\r\n * @param smoothFactor deviceOrientation smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing\r\n * @returns the current input manager\r\n */\r\nFreeCameraInputsManager.prototype.addDeviceOrientation = function (smoothFactor?: number): FreeCameraInputsManager {\r\n if (!this._deviceOrientationInput) {\r\n this._deviceOrientationInput = new FreeCameraDeviceOrientationInput();\r\n if (smoothFactor) {\r\n this._deviceOrientationInput.smoothFactor = smoothFactor;\r\n }\r\n this.add(this._deviceOrientationInput);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Takes information about the orientation of the device as reported by the deviceorientation event to orient the camera.\r\n * Screen rotation is taken into account.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraDeviceOrientationInput implements ICameraInput<FreeCamera> {\r\n private _camera: FreeCamera;\r\n\r\n private _screenOrientationAngle: number = 0;\r\n\r\n private _constantTransform: Quaternion;\r\n private _screenQuaternion: Quaternion = new Quaternion();\r\n\r\n private _alpha: number = 0;\r\n private _beta: number = 0;\r\n private _gamma: number = 0;\r\n\r\n /** alpha+beta+gamma smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing */\r\n public smoothFactor: number = 0;\r\n\r\n /**\r\n * Can be used to detect if a device orientation sensor is available on a device\r\n * @param timeout amount of time in milliseconds to wait for a response from the sensor (default: infinite)\r\n * @returns a promise that will resolve on orientation change\r\n */\r\n public static async WaitForOrientationChangeAsync(timeout?: number): Promise<void> {\r\n return new Promise((res, rej) => {\r\n let gotValue = false;\r\n const eventHandler = () => {\r\n window.removeEventListener(\"deviceorientation\", eventHandler);\r\n gotValue = true;\r\n res();\r\n };\r\n\r\n // If timeout is populated reject the promise\r\n if (timeout) {\r\n setTimeout(() => {\r\n if (!gotValue) {\r\n window.removeEventListener(\"deviceorientation\", eventHandler);\r\n rej(\"WaitForOrientationChangeAsync timed out\");\r\n }\r\n }, timeout);\r\n }\r\n\r\n if (typeof DeviceOrientationEvent !== \"undefined\" && typeof (<any>DeviceOrientationEvent).requestPermission === \"function\") {\r\n (<any>DeviceOrientationEvent)\r\n .requestPermission()\r\n .then((response: string) => {\r\n if (response == \"granted\") {\r\n window.addEventListener(\"deviceorientation\", eventHandler);\r\n } else {\r\n Tools.Warn(\"Permission not granted.\");\r\n }\r\n })\r\n .catch((error: any) => {\r\n Tools.Error(error);\r\n });\r\n } else {\r\n window.addEventListener(\"deviceorientation\", eventHandler);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _onDeviceOrientationChangedObservable = new Observable<void>();\r\n /**\r\n * Instantiates a new input\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\n constructor() {\r\n this._constantTransform = new Quaternion(-Math.sqrt(0.5), 0, 0, Math.sqrt(0.5));\r\n this._orientationChanged();\r\n }\r\n\r\n /**\r\n * Define the camera controlled by the input.\r\n */\r\n public get camera(): FreeCamera {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: FreeCamera) {\r\n this._camera = camera;\r\n if (this._camera != null && !this._camera.rotationQuaternion) {\r\n this._camera.rotationQuaternion = new Quaternion();\r\n }\r\n if (this._camera) {\r\n this._camera.onDisposeObservable.add(() => {\r\n this._onDeviceOrientationChangedObservable.clear();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n */\r\n public attachControl(): void {\r\n const hostWindow = this.camera.getScene().getEngine().getHostWindow();\r\n\r\n if (hostWindow) {\r\n const eventHandler = () => {\r\n hostWindow.addEventListener(\"orientationchange\", this._orientationChanged);\r\n hostWindow.addEventListener(\"deviceorientation\", this._deviceOrientation);\r\n //In certain cases, the attach control is called AFTER orientation was changed,\r\n //So this is needed.\r\n this._orientationChanged();\r\n };\r\n if (typeof DeviceOrientationEvent !== \"undefined\" && typeof (<any>DeviceOrientationEvent).requestPermission === \"function\") {\r\n (<any>DeviceOrientationEvent)\r\n .requestPermission()\r\n .then((response: string) => {\r\n if (response === \"granted\") {\r\n eventHandler();\r\n } else {\r\n Tools.Warn(\"Permission not granted.\");\r\n }\r\n })\r\n .catch((error: any) => {\r\n Tools.Error(error);\r\n });\r\n } else {\r\n eventHandler();\r\n }\r\n }\r\n }\r\n\r\n private _orientationChanged = () => {\r\n this._screenOrientationAngle =\r\n <any>window.orientation !== undefined\r\n ? +(<any>window.orientation)\r\n : (<any>window.screen).orientation && (<any>window.screen).orientation[\"angle\"]\r\n ? (<any>window.screen).orientation.angle\r\n : 0;\r\n this._screenOrientationAngle = -Tools.ToRadians(this._screenOrientationAngle / 2);\r\n this._screenQuaternion.copyFromFloats(0, Math.sin(this._screenOrientationAngle), 0, Math.cos(this._screenOrientationAngle));\r\n };\r\n\r\n private _deviceOrientation = (evt: DeviceOrientationEvent) => {\r\n if (this.smoothFactor) {\r\n this._alpha = evt.alpha !== null ? Tools.SmoothAngleChange(this._alpha, evt.alpha, this.smoothFactor) : 0;\r\n this._beta = evt.beta !== null ? Tools.SmoothAngleChange(this._beta, evt.beta, this.smoothFactor) : 0;\r\n this._gamma = evt.gamma !== null ? Tools.SmoothAngleChange(this._gamma, evt.gamma, this.smoothFactor) : 0;\r\n } else {\r\n this._alpha = evt.alpha !== null ? evt.alpha : 0;\r\n this._beta = evt.beta !== null ? evt.beta : 0;\r\n this._gamma = evt.gamma !== null ? evt.gamma : 0;\r\n }\r\n\r\n if (evt.alpha !== null) {\r\n this._onDeviceOrientationChangedObservable.notifyObservers();\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 window.removeEventListener(\"orientationchange\", this._orientationChanged);\r\n window.removeEventListener(\"deviceorientation\", this._deviceOrientation);\r\n this._alpha = 0;\r\n }\r\n\r\n /**\r\n * Update the current camera state depending on the inputs that have been used this frame.\r\n * This is a dynamically created lambda to avoid the performance penalty of looping for inputs in the render loop.\r\n */\r\n public checkInputs(): void {\r\n // if no device orientation provided, don't update the rotation.\r\n // Only testing against alpha under the assumption that orientation will never be so exact when set.\r\n if (!this._alpha) {\r\n return;\r\n }\r\n Quaternion.RotationYawPitchRollToRef(Tools.ToRadians(this._alpha), Tools.ToRadians(this._beta), -Tools.ToRadians(this._gamma), this.camera.rotationQuaternion);\r\n this._camera.rotationQuaternion.multiplyInPlace(this._screenQuaternion);\r\n this._camera.rotationQuaternion.multiplyInPlace(this._constantTransform);\r\n if (this._camera.getScene().useRightHandedSystem) {\r\n this._camera.rotationQuaternion.y *= -1;\r\n } else {\r\n this._camera.rotationQuaternion.z *= -1;\r\n }\r\n this._camera.rotationQuaternion.w *= -1;\r\n }\r\n\r\n /**\r\n * Gets the class name of the current input.\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FreeCameraDeviceOrientationInput\";\r\n }\r\n\r\n /**\r\n * Get the friendly name associated with the input class.\r\n * @returns the input friendly name\r\n */\r\n public getSimpleName(): string {\r\n return \"deviceOrientation\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraDeviceOrientationInput\"] = FreeCameraDeviceOrientationInput;\r\n"]}
1
+ {"version":3,"file":"freeCameraDeviceOrientationInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraDeviceOrientationInput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAmBnD;;;;GAIG;AACH,uBAAuB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,YAAqB;IACpF,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,IAAI,gCAAgC,EAAE,CAAC;QACtE,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,gCAAgC;IAezC;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,OAAgB;QAC9D,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,YAAY,GAAG,GAAG,EAAE;gBACtB,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;gBAC9D,QAAQ,GAAG,IAAI,CAAC;gBAChB,GAAG,EAAE,CAAC;YACV,CAAC,CAAC;YAEF,6CAA6C;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACV,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;wBAC9D,2EAA2E;wBAC3E,GAAG,CAAC,yCAAyC,CAAC,CAAC;oBACnD,CAAC;gBACL,CAAC,EAAE,OAAO,CAAC,CAAC;YAChB,CAAC;YAED,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,OAAa,sBAAuB,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBACnH,sBAAuB;qBACxB,iBAAiB,EAAE;oBACpB,0CAA0C;qBACzC,IAAI,CAAC,CAAC,QAAgB,EAAE,EAAE;oBACvB,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACxB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;oBAC/D,CAAC;yBAAM,CAAC;wBACJ,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC,CAAC;oBACF,0CAA0C;qBACzC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;oBAClB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAMD;;;OAGG;IACH;QAlEQ,4BAAuB,GAAW,CAAC,CAAC;QAGpC,sBAAiB,GAAe,IAAI,UAAU,EAAE,CAAC;QAEjD,WAAM,GAAW,CAAC,CAAC;QACnB,UAAK,GAAW,CAAC,CAAC;QAClB,WAAM,GAAW,CAAC,CAAC;QAE3B,sGAAsG;QAC/F,iBAAY,GAAW,CAAC,CAAC;QAgDhC;;WAEG;QACI,0CAAqC,GAAG,IAAI,UAAU,EAAQ,CAAC;QAgE9D,wBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,uBAAuB;gBACnB,MAAM,CAAC,WAAW,KAAK,SAAS;oBACjC,CAAC,CAAC,CAAO,MAAM,CAAC,WAAY;oBAC5B,CAAC,CAAO,MAAM,CAAC,MAAO,CAAC,WAAW,IAAU,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,OAAO,CAAC;wBAC7E,CAAC,CAAO,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,KAAK;wBACxC,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAChI,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,GAA2B,EAAE,EAAE;YACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1G,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9G,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,qCAAqC,CAAC,eAAe,EAAE,CAAC;YACjE,CAAC;QACL,CAAC,CAAC;QAnFE,IAAI,CAAC,kBAAkB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,MAAM,CAAC,MAAkB;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,UAAU,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACtC,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC;QAEtE,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,EAAE;gBACtB,UAAU,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC3E,UAAU,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC1E,+EAA+E;gBAC/E,oBAAoB;gBACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,CAAC,CAAC;YACF,IAAI,OAAO,sBAAsB,KAAK,WAAW,IAAI,OAAa,sBAAuB,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBACnH,sBAAuB;qBACxB,iBAAiB,EAAE;oBACpB,0CAA0C;qBACzC,IAAI,CAAC,CAAC,QAAgB,EAAE,EAAE;oBACvB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBACzB,YAAY,EAAE,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACJ,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC,CAAC;oBACF,0CAA0C;qBACzC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;oBAClB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,YAAY,EAAE,CAAC;YACnB,CAAC;QACL,CAAC;IACL,CAAC;IA6BD;;OAEG;IACI,aAAa;QAChB,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1E,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,WAAW;QACd,gEAAgE;QAChE,oGAAoG;QACpG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QACD,UAAU,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/J,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,kCAAkC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,aAAa;QAChB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;CACJ;AAEK,gBAAiB,CAAC,kCAAkC,CAAC,GAAG,gCAAgC,CAAC","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { ICameraInput } from \"../../Cameras/cameraInputsManager\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport type { FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { Quaternion } from \"../../Maths/math.vector\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { FreeCameraInputsManager } from \"../../Cameras/freeCameraInputsManager\";\r\nimport { Observable } from \"../../Misc/observable\";\r\n\r\n// Module augmentation to abstract orientation inputs from camera.\r\ndeclare module \"../../Cameras/freeCameraInputsManager\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface FreeCameraInputsManager {\r\n /**\r\n * @internal\r\n */\r\n _deviceOrientationInput: Nullable<FreeCameraDeviceOrientationInput>;\r\n /**\r\n * Add orientation input support to the input manager.\r\n * @param smoothFactor deviceOrientation smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing\r\n * @returns the current input manager\r\n */\r\n addDeviceOrientation(smoothFactor?: number): FreeCameraInputsManager;\r\n }\r\n}\r\n\r\n/**\r\n * Add orientation input support to the input manager.\r\n * @param smoothFactor deviceOrientation smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing\r\n * @returns the current input manager\r\n */\r\nFreeCameraInputsManager.prototype.addDeviceOrientation = function (smoothFactor?: number): FreeCameraInputsManager {\r\n if (!this._deviceOrientationInput) {\r\n this._deviceOrientationInput = new FreeCameraDeviceOrientationInput();\r\n if (smoothFactor) {\r\n this._deviceOrientationInput.smoothFactor = smoothFactor;\r\n }\r\n this.add(this._deviceOrientationInput);\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Takes information about the orientation of the device as reported by the deviceorientation event to orient the camera.\r\n * Screen rotation is taken into account.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraDeviceOrientationInput implements ICameraInput<FreeCamera> {\r\n private _camera: FreeCamera;\r\n\r\n private _screenOrientationAngle: number = 0;\r\n\r\n private _constantTransform: Quaternion;\r\n private _screenQuaternion: Quaternion = new Quaternion();\r\n\r\n private _alpha: number = 0;\r\n private _beta: number = 0;\r\n private _gamma: number = 0;\r\n\r\n /** alpha+beta+gamma smoothing. 0: no smoothing, 1: new data ignored, 0.9 recommended for smoothing */\r\n public smoothFactor: number = 0;\r\n\r\n /**\r\n * Can be used to detect if a device orientation sensor is available on a device\r\n * @param timeout amount of time in milliseconds to wait for a response from the sensor (default: infinite)\r\n * @returns a promise that will resolve on orientation change\r\n */\r\n public static async WaitForOrientationChangeAsync(timeout?: number): Promise<void> {\r\n return await new Promise((res, rej) => {\r\n let gotValue = false;\r\n const eventHandler = () => {\r\n window.removeEventListener(\"deviceorientation\", eventHandler);\r\n gotValue = true;\r\n res();\r\n };\r\n\r\n // If timeout is populated reject the promise\r\n if (timeout) {\r\n setTimeout(() => {\r\n if (!gotValue) {\r\n window.removeEventListener(\"deviceorientation\", eventHandler);\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n rej(\"WaitForOrientationChangeAsync timed out\");\r\n }\r\n }, timeout);\r\n }\r\n\r\n if (typeof DeviceOrientationEvent !== \"undefined\" && typeof (<any>DeviceOrientationEvent).requestPermission === \"function\") {\r\n (<any>DeviceOrientationEvent)\r\n .requestPermission()\r\n // eslint-disable-next-line github/no-then\r\n .then((response: string) => {\r\n if (response == \"granted\") {\r\n window.addEventListener(\"deviceorientation\", eventHandler);\r\n } else {\r\n Tools.Warn(\"Permission not granted.\");\r\n }\r\n })\r\n // eslint-disable-next-line github/no-then\r\n .catch((error: any) => {\r\n Tools.Error(error);\r\n });\r\n } else {\r\n window.addEventListener(\"deviceorientation\", eventHandler);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _onDeviceOrientationChangedObservable = new Observable<void>();\r\n /**\r\n * Instantiates a new input\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\n constructor() {\r\n this._constantTransform = new Quaternion(-Math.sqrt(0.5), 0, 0, Math.sqrt(0.5));\r\n this._orientationChanged();\r\n }\r\n\r\n /**\r\n * Define the camera controlled by the input.\r\n */\r\n public get camera(): FreeCamera {\r\n return this._camera;\r\n }\r\n\r\n public set camera(camera: FreeCamera) {\r\n this._camera = camera;\r\n if (this._camera != null && !this._camera.rotationQuaternion) {\r\n this._camera.rotationQuaternion = new Quaternion();\r\n }\r\n if (this._camera) {\r\n this._camera.onDisposeObservable.add(() => {\r\n this._onDeviceOrientationChangedObservable.clear();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n */\r\n public attachControl(): void {\r\n const hostWindow = this.camera.getScene().getEngine().getHostWindow();\r\n\r\n if (hostWindow) {\r\n const eventHandler = () => {\r\n hostWindow.addEventListener(\"orientationchange\", this._orientationChanged);\r\n hostWindow.addEventListener(\"deviceorientation\", this._deviceOrientation);\r\n //In certain cases, the attach control is called AFTER orientation was changed,\r\n //So this is needed.\r\n this._orientationChanged();\r\n };\r\n if (typeof DeviceOrientationEvent !== \"undefined\" && typeof (<any>DeviceOrientationEvent).requestPermission === \"function\") {\r\n (<any>DeviceOrientationEvent)\r\n .requestPermission()\r\n // eslint-disable-next-line github/no-then\r\n .then((response: string) => {\r\n if (response === \"granted\") {\r\n eventHandler();\r\n } else {\r\n Tools.Warn(\"Permission not granted.\");\r\n }\r\n })\r\n // eslint-disable-next-line github/no-then\r\n .catch((error: any) => {\r\n Tools.Error(error);\r\n });\r\n } else {\r\n eventHandler();\r\n }\r\n }\r\n }\r\n\r\n private _orientationChanged = () => {\r\n this._screenOrientationAngle =\r\n <any>window.orientation !== undefined\r\n ? +(<any>window.orientation)\r\n : (<any>window.screen).orientation && (<any>window.screen).orientation[\"angle\"]\r\n ? (<any>window.screen).orientation.angle\r\n : 0;\r\n this._screenOrientationAngle = -Tools.ToRadians(this._screenOrientationAngle / 2);\r\n this._screenQuaternion.copyFromFloats(0, Math.sin(this._screenOrientationAngle), 0, Math.cos(this._screenOrientationAngle));\r\n };\r\n\r\n private _deviceOrientation = (evt: DeviceOrientationEvent) => {\r\n if (this.smoothFactor) {\r\n this._alpha = evt.alpha !== null ? Tools.SmoothAngleChange(this._alpha, evt.alpha, this.smoothFactor) : 0;\r\n this._beta = evt.beta !== null ? Tools.SmoothAngleChange(this._beta, evt.beta, this.smoothFactor) : 0;\r\n this._gamma = evt.gamma !== null ? Tools.SmoothAngleChange(this._gamma, evt.gamma, this.smoothFactor) : 0;\r\n } else {\r\n this._alpha = evt.alpha !== null ? evt.alpha : 0;\r\n this._beta = evt.beta !== null ? evt.beta : 0;\r\n this._gamma = evt.gamma !== null ? evt.gamma : 0;\r\n }\r\n\r\n if (evt.alpha !== null) {\r\n this._onDeviceOrientationChangedObservable.notifyObservers();\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 window.removeEventListener(\"orientationchange\", this._orientationChanged);\r\n window.removeEventListener(\"deviceorientation\", this._deviceOrientation);\r\n this._alpha = 0;\r\n }\r\n\r\n /**\r\n * Update the current camera state depending on the inputs that have been used this frame.\r\n * This is a dynamically created lambda to avoid the performance penalty of looping for inputs in the render loop.\r\n */\r\n public checkInputs(): void {\r\n // if no device orientation provided, don't update the rotation.\r\n // Only testing against alpha under the assumption that orientation will never be so exact when set.\r\n if (!this._alpha) {\r\n return;\r\n }\r\n Quaternion.RotationYawPitchRollToRef(Tools.ToRadians(this._alpha), Tools.ToRadians(this._beta), -Tools.ToRadians(this._gamma), this.camera.rotationQuaternion);\r\n this._camera.rotationQuaternion.multiplyInPlace(this._screenQuaternion);\r\n this._camera.rotationQuaternion.multiplyInPlace(this._constantTransform);\r\n if (this._camera.getScene().useRightHandedSystem) {\r\n this._camera.rotationQuaternion.y *= -1;\r\n } else {\r\n this._camera.rotationQuaternion.z *= -1;\r\n }\r\n this._camera.rotationQuaternion.w *= -1;\r\n }\r\n\r\n /**\r\n * Gets the class name of the current input.\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FreeCameraDeviceOrientationInput\";\r\n }\r\n\r\n /**\r\n * Get the friendly name associated with the input class.\r\n * @returns the input friendly name\r\n */\r\n public getSimpleName(): string {\r\n return \"deviceOrientation\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraDeviceOrientationInput\"] = FreeCameraDeviceOrientationInput;\r\n"]}
@@ -1,3 +1,5 @@
1
+ /* eslint-disable github/no-then */
2
+ /* eslint-disable @typescript-eslint/no-floating-promises */
1
3
  import { Logger } from "../../Misc/logger.js";
2
4
  import { Observable } from "../../Misc/observable.js";
3
5
  import { FreeCamera } from "../../Cameras/freeCamera.js";