@onerjs/core 8.55.7 → 8.55.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/Animations/animation.pure.js +2 -2
  2. package/Animations/animation.pure.js.map +1 -1
  3. package/Animations/runtimeAnimation.js +4 -0
  4. package/Animations/runtimeAnimation.js.map +1 -1
  5. package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
  6. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  7. package/Behaviors/Meshes/followBehavior.js +1 -0
  8. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  9. package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -0
  10. package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
  11. package/Cameras/Inputs/followCameraMouseWheelInput.js +2 -2
  12. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  13. package/Cameras/Inputs/followCameraPointersInput.d.ts +15 -0
  14. package/Cameras/Inputs/followCameraPointersInput.js +18 -3
  15. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js.map +1 -1
  20. package/Cameras/arcRotateCamera.pure.js +1 -1
  21. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  22. package/Collisions/gpuPicker.d.ts +1 -0
  23. package/Collisions/gpuPicker.js +5 -4
  24. package/Collisions/gpuPicker.js.map +1 -1
  25. package/Culling/Helper/boundingInfoHelper.js +1 -1
  26. package/Culling/Helper/boundingInfoHelper.js.map +1 -1
  27. package/Culling/boundingSphere.js +7 -4
  28. package/Culling/boundingSphere.js.map +1 -1
  29. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +1 -1
  30. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  31. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +48 -6
  32. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  33. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  34. package/Engines/Native/nativeInterfaces.js.map +1 -1
  35. package/Engines/abstractEngine.pure.js +2 -2
  36. package/Engines/abstractEngine.pure.js.map +1 -1
  37. package/Engines/engine.d.ts +10 -1
  38. package/Engines/thinNativeEngine.pure.d.ts +6 -1
  39. package/Engines/thinNativeEngine.pure.js +29 -2
  40. package/Engines/thinNativeEngine.pure.js.map +1 -1
  41. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +3 -63
  42. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +5 -71
  43. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -1
  44. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.d.ts +71 -0
  45. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js +86 -0
  46. package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js.map +1 -0
  47. package/FlowGraph/Blocks/Data/pure.d.ts +1 -0
  48. package/FlowGraph/Blocks/Data/pure.js +1 -0
  49. package/FlowGraph/Blocks/Data/pure.js.map +1 -1
  50. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +3 -37
  51. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +5 -39
  52. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -1
  53. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.d.ts +45 -0
  54. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js +54 -0
  55. package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js.map +1 -0
  56. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +3 -17
  57. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +5 -22
  58. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -1
  59. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.d.ts +25 -0
  60. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js +37 -0
  61. package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js.map +1 -0
  62. package/FlowGraph/Blocks/Event/pure.d.ts +2 -0
  63. package/FlowGraph/Blocks/Event/pure.js +2 -0
  64. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  65. package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +1 -1
  66. package/FlowGraph/Blocks/flowGraphBlockFactory.js +198 -172
  67. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  68. package/FrameGraph/frameGraph.js +10 -1
  69. package/FrameGraph/frameGraph.js.map +1 -1
  70. package/Gamepads/gamepadManager.d.ts +1 -0
  71. package/Gamepads/gamepadManager.js +5 -2
  72. package/Gamepads/gamepadManager.js.map +1 -1
  73. package/Gizmos/scaleGizmo.js +1 -0
  74. package/Gizmos/scaleGizmo.js.map +1 -1
  75. package/Lights/IES/iesLoader.js +6 -8
  76. package/Lights/IES/iesLoader.js.map +1 -1
  77. package/Lights/Shadows/cascadedShadowGenerator.pure.js +4 -6
  78. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  79. package/Lights/Shadows/shadowGenerator.js +2 -2
  80. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  81. package/Lights/light.js +3 -5
  82. package/Lights/light.js.map +1 -1
  83. package/Lights/spotLight.pure.js +1 -1
  84. package/Lights/spotLight.pure.js.map +1 -1
  85. package/Materials/Background/backgroundMaterial.pure.d.ts +1 -1
  86. package/Materials/Background/backgroundMaterial.pure.js +3 -12
  87. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  88. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -0
  89. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  90. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js +1 -1
  91. package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js.map +1 -1
  92. package/Materials/PBR/openpbrMaterial.pure.d.ts +1 -1
  93. package/Materials/PBR/openpbrMaterial.pure.js +3 -12
  94. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  95. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  96. package/Materials/PBR/pbrBaseMaterial.pure.js +3 -12
  97. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  98. package/Materials/Textures/renderTargetTexture.pure.js +1 -1
  99. package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
  100. package/Materials/material.pure.js +2 -2
  101. package/Materials/material.pure.js.map +1 -1
  102. package/Materials/standardMaterial.pure.d.ts +1 -1
  103. package/Materials/standardMaterial.pure.js +4 -13
  104. package/Materials/standardMaterial.pure.js.map +1 -1
  105. package/Maths/math.path.js +1 -1
  106. package/Maths/math.path.js.map +1 -1
  107. package/Maths/math.polar.js +1 -1
  108. package/Maths/math.polar.js.map +1 -1
  109. package/Maths/math.vector.pure.js +4 -3
  110. package/Maths/math.vector.pure.js.map +1 -1
  111. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +72 -0
  112. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +164 -1
  113. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  114. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -1
  115. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +36 -18
  116. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  117. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +5 -4
  118. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +25 -8
  119. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
  120. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  121. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
  122. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +1 -1
  123. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  124. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +2 -2
  125. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  126. package/Meshes/Node/Blocks/mappingBlock.pure.js +2 -2
  127. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  128. package/Meshes/csg.js +5 -5
  129. package/Meshes/csg.js.map +1 -1
  130. package/Meshes/groundMesh.pure.js +1 -1
  131. package/Meshes/groundMesh.pure.js.map +1 -1
  132. package/Meshes/mesh.pure.js +2 -2
  133. package/Meshes/mesh.pure.js.map +1 -1
  134. package/Misc/deepMerger.js +1 -1
  135. package/Misc/deepMerger.js.map +1 -1
  136. package/Misc/dumpTools.pure.js +1 -1
  137. package/Misc/dumpTools.pure.js.map +1 -1
  138. package/Misc/index.d.ts +1 -0
  139. package/Misc/index.js +1 -0
  140. package/Misc/index.js.map +1 -1
  141. package/Misc/pure.d.ts +1 -0
  142. package/Misc/pure.js +1 -0
  143. package/Misc/pure.js.map +1 -1
  144. package/Misc/shaderImportLoader.d.ts +25 -0
  145. package/Misc/shaderImportLoader.js +54 -0
  146. package/Misc/shaderImportLoader.js.map +1 -0
  147. package/Misc/tools.pure.js +1 -1
  148. package/Misc/tools.pure.js.map +1 -1
  149. package/Particles/Node/Blocks/particleClampBlock.pure.d.ts +0 -1
  150. package/Particles/Node/Blocks/particleClampBlock.pure.js +1 -6
  151. package/Particles/Node/Blocks/particleClampBlock.pure.js.map +1 -1
  152. package/Particles/Node/Blocks/particleMathBlock.pure.js +1 -1
  153. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  154. package/Particles/Node/Blocks/particleNLerpBlock.pure.js +8 -3
  155. package/Particles/Node/Blocks/particleNLerpBlock.pure.js.map +1 -1
  156. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js +3 -2
  157. package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js.map +1 -1
  158. package/Particles/Node/Blocks/particleStepBlock.pure.js +3 -2
  159. package/Particles/Node/Blocks/particleStepBlock.pure.js.map +1 -1
  160. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +1 -1
  161. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  162. package/PostProcesses/depthOfFieldEffect.js +1 -1
  163. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  164. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +1 -1
  165. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  166. package/PostProcesses/sharpenPostProcess.pure.js +1 -1
  167. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  168. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.d.ts +12 -0
  169. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +15 -1
  170. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  171. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +14 -0
  172. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +122 -6
  173. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  174. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +7 -0
  175. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +17 -0
  176. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  177. package/Rendering/boundingBoxRenderer.pure.js +3 -3
  178. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  179. package/Rendering/outlineRenderer.pure.js +1 -0
  180. package/Rendering/outlineRenderer.pure.js.map +1 -1
  181. package/Rendering/subSurfaceConfiguration.js +1 -1
  182. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  183. package/Rendering/subSurfaceSceneComponent.pure.d.ts +1 -1
  184. package/Rendering/subSurfaceSceneComponent.pure.js +1 -1
  185. package/Rendering/subSurfaceSceneComponent.pure.js.map +1 -1
  186. package/Rendering/utilityLayerRenderer.js +1 -1
  187. package/Rendering/utilityLayerRenderer.js.map +1 -1
  188. package/Shaders/gaussianSplattingVoxel.fragment.js +4 -10
  189. package/Shaders/gaussianSplattingVoxel.fragment.js.map +1 -1
  190. package/Shaders/iblCombineVoxelGrids.fragment.js +1 -1
  191. package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
  192. package/Shaders/iblShadowVoxelTracing.fragment.js +24 -7
  193. package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
  194. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.d.ts +5 -0
  195. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js +13 -0
  196. package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js.map +1 -0
  197. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js +15 -9
  198. package/ShadersWGSL/gaussianSplattingVoxel.fragment.js.map +1 -1
  199. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +1 -1
  200. package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
  201. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.d.ts +5 -0
  202. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js +14 -0
  203. package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js.map +1 -0
  204. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +24 -7
  205. package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
  206. package/ShadersWGSL/iblVoxelGrid.fragment.js +26 -6
  207. package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
  208. package/SmartAssets/smartAssetManager.pure.js +1 -1
  209. package/SmartAssets/smartAssetManager.pure.js.map +1 -1
  210. package/Sprites/thinSprite.js +1 -1
  211. package/Sprites/thinSprite.js.map +1 -1
  212. package/XR/features/Layers/WebXRCompositionLayer.d.ts +130 -12
  213. package/XR/features/Layers/WebXRCompositionLayer.js +192 -3
  214. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  215. package/XR/features/Layers/WebXRFallbackLayer.d.ts +84 -0
  216. package/XR/features/Layers/WebXRFallbackLayer.js +137 -0
  217. package/XR/features/Layers/WebXRFallbackLayer.js.map +1 -0
  218. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +4 -4
  219. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
  220. package/XR/features/WebXRAnchorSystem.pure.d.ts +45 -0
  221. package/XR/features/WebXRAnchorSystem.pure.js +153 -13
  222. package/XR/features/WebXRAnchorSystem.pure.js.map +1 -1
  223. package/XR/features/WebXRLayers.pure.d.ts +171 -8
  224. package/XR/features/WebXRLayers.pure.js +500 -98
  225. package/XR/features/WebXRLayers.pure.js.map +1 -1
  226. package/XR/features/WebXRLayersFallback.d.ts +5 -0
  227. package/XR/features/WebXRLayersFallback.js +8 -0
  228. package/XR/features/WebXRLayersFallback.js.map +1 -0
  229. package/XR/features/WebXRLayersFallback.pure.d.ts +6 -0
  230. package/XR/features/WebXRLayersFallback.pure.js +44 -0
  231. package/XR/features/WebXRLayersFallback.pure.js.map +1 -0
  232. package/XR/features/WebXRLightEstimation.pure.d.ts +3 -4
  233. package/XR/features/WebXRLightEstimation.pure.js +22 -21
  234. package/XR/features/WebXRLightEstimation.pure.js.map +1 -1
  235. package/XR/features/WebXRMeshDetector.pure.d.ts +5 -0
  236. package/XR/features/WebXRMeshDetector.pure.js +1 -0
  237. package/XR/features/WebXRMeshDetector.pure.js.map +1 -1
  238. package/XR/features/WebXRNearInteraction.pure.js +3 -3
  239. package/XR/features/WebXRNearInteraction.pure.js.map +1 -1
  240. package/XR/features/WebXRPlaneDetector.pure.d.ts +9 -5
  241. package/XR/features/WebXRPlaneDetector.pure.js +12 -8
  242. package/XR/features/WebXRPlaneDetector.pure.js.map +1 -1
  243. package/XR/features/pure.d.ts +1 -0
  244. package/XR/features/pure.js +1 -0
  245. package/XR/features/pure.js.map +1 -1
  246. package/XR/webXRCamera.d.ts +2 -0
  247. package/XR/webXRCamera.js +8 -2
  248. package/XR/webXRCamera.js.map +1 -1
  249. package/XR/webXRLayerWrapper.d.ts +19 -5
  250. package/XR/webXRLayerWrapper.js +9 -0
  251. package/XR/webXRLayerWrapper.js.map +1 -1
  252. package/XR/webXRRenderTargetTextureProvider.d.ts +4 -4
  253. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  254. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +2 -1
  255. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -1
  256. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +3 -3
  257. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
  258. package/package.json +1 -1
  259. package/scene.pure.d.ts +5 -0
  260. package/scene.pure.js +25 -0
  261. package/scene.pure.js.map +1 -1
@@ -66,7 +66,7 @@ let FollowCameraMouseWheelInput = (() => {
66
66
  let delta = 0;
67
67
  const wheelDelta = Math.max(-1, Math.min(1, event.deltaY));
68
68
  if (this.wheelDeltaPercentage) {
69
- if (+this.axisControlRadius + +this.axisControlHeight + +this.axisControlRotation) {
69
+ if (+this.axisControlRadius + +this.axisControlHeight + +this.axisControlRotation > 1) {
70
70
  Logger.Warn("wheelDeltaPercentage only usable when mouse wheel " +
71
71
  "controls ONE axis. " +
72
72
  "Currently enabled: " +
@@ -124,7 +124,7 @@ let FollowCameraMouseWheelInput = (() => {
124
124
  * @returns the class name
125
125
  */
126
126
  getClassName() {
127
- return "ArcRotateCameraMouseWheelInput";
127
+ return "FollowCameraMouseWheelInput";
128
128
  }
129
129
  /**
130
130
  * Get the friendly name associated with the input class.
@@ -1 +1 @@
1
- {"version":3,"file":"followCameraMouseWheelInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/followCameraMouseWheelInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type EventState, type Observer } from \"../../Misc/observable\";\r\nimport { type FollowCamera } from \"../../Cameras/followCamera\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { type IWheelEvent } from \"../../Events/deviceInputEvents\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Manage the mouse wheel inputs to control a follow camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FollowCameraMouseWheelInput implements ICameraInput<FollowCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FollowCamera;\r\n\r\n /**\r\n * Moue wheel controls zoom. (Mouse wheel modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisControlRadius: boolean = true;\r\n\r\n /**\r\n * Moue wheel controls height. (Mouse wheel modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisControlHeight: boolean = false;\r\n\r\n /**\r\n * Moue wheel controls angle. (Mouse wheel modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisControlRotation: boolean = false;\r\n\r\n /**\r\n * Gets or Set the mouse wheel precision or how fast is the camera moves in\r\n * relation to mouseWheel events.\r\n */\r\n @serialize()\r\n public wheelPrecision = 3.0;\r\n\r\n /**\r\n * wheelDeltaPercentage will be used instead of wheelPrecision if different from 0.\r\n * It defines the percentage of current camera.radius to use as delta when wheel is used.\r\n */\r\n @serialize()\r\n public wheelDeltaPercentage = 0;\r\n\r\n private _wheel: Nullable<(p: PointerInfo, s: EventState) => void>;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this._wheel = (p) => {\r\n // sanity check - this should be a PointerWheel event.\r\n if (p.type !== PointerEventTypes.POINTERWHEEL) {\r\n return;\r\n }\r\n const event = <IWheelEvent>p.event;\r\n let delta = 0;\r\n\r\n const wheelDelta = Math.max(-1, Math.min(1, event.deltaY));\r\n if (this.wheelDeltaPercentage) {\r\n if (+this.axisControlRadius + +this.axisControlHeight + +this.axisControlRotation) {\r\n Logger.Warn(\r\n \"wheelDeltaPercentage only usable when mouse wheel \" +\r\n \"controls ONE axis. \" +\r\n \"Currently enabled: \" +\r\n \"axisControlRadius: \" +\r\n this.axisControlRadius +\r\n \", axisControlHeightOffset: \" +\r\n this.axisControlHeight +\r\n \", axisControlRotationOffset: \" +\r\n this.axisControlRotation\r\n );\r\n }\r\n\r\n if (this.axisControlRadius) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.radius;\r\n } else if (this.axisControlHeight) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.heightOffset;\r\n } else if (this.axisControlRotation) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.rotationOffset;\r\n }\r\n } else {\r\n delta = wheelDelta * this.wheelPrecision;\r\n }\r\n\r\n if (delta) {\r\n if (this.axisControlRadius) {\r\n this.camera.radius += delta;\r\n } else if (this.axisControlHeight) {\r\n this.camera.heightOffset -= delta;\r\n } else if (this.axisControlRotation) {\r\n this.camera.rotationOffset -= delta;\r\n }\r\n }\r\n\r\n if (event.preventDefault) {\r\n if (!noPreventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n this._observer = this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel, PointerEventTypes.POINTERWHEEL);\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 if (this._observer) {\r\n this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer);\r\n this._observer = null;\r\n this._wheel = null;\r\n }\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 \"ArcRotateCameraMouseWheelInput\";\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 \"mousewheel\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FollowCameraMouseWheelInput\"] = FollowCameraMouseWheelInput;\r\n"]}
1
+ {"version":3,"file":"followCameraMouseWheelInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/followCameraMouseWheelInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type EventState, type Observer } from \"../../Misc/observable\";\r\nimport { type FollowCamera } from \"../../Cameras/followCamera\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { type IWheelEvent } from \"../../Events/deviceInputEvents\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Manage the mouse wheel inputs to control a follow camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FollowCameraMouseWheelInput implements ICameraInput<FollowCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FollowCamera;\r\n\r\n /**\r\n * Moue wheel controls zoom. (Mouse wheel modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisControlRadius: boolean = true;\r\n\r\n /**\r\n * Moue wheel controls height. (Mouse wheel modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisControlHeight: boolean = false;\r\n\r\n /**\r\n * Moue wheel controls angle. (Mouse wheel modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisControlRotation: boolean = false;\r\n\r\n /**\r\n * Gets or Set the mouse wheel precision or how fast is the camera moves in\r\n * relation to mouseWheel events.\r\n */\r\n @serialize()\r\n public wheelPrecision = 3.0;\r\n\r\n /**\r\n * wheelDeltaPercentage will be used instead of wheelPrecision if different from 0.\r\n * It defines the percentage of current camera.radius to use as delta when wheel is used.\r\n */\r\n @serialize()\r\n public wheelDeltaPercentage = 0;\r\n\r\n private _wheel: Nullable<(p: PointerInfo, s: EventState) => void>;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n\r\n /**\r\n * Attach the input controls to a specific dom element to get the input from.\r\n * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\r\n */\r\n public attachControl(noPreventDefault?: boolean): void {\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n this._wheel = (p) => {\r\n // sanity check - this should be a PointerWheel event.\r\n if (p.type !== PointerEventTypes.POINTERWHEEL) {\r\n return;\r\n }\r\n const event = <IWheelEvent>p.event;\r\n let delta = 0;\r\n\r\n const wheelDelta = Math.max(-1, Math.min(1, event.deltaY));\r\n if (this.wheelDeltaPercentage) {\r\n if (+this.axisControlRadius + +this.axisControlHeight + +this.axisControlRotation > 1) {\r\n Logger.Warn(\r\n \"wheelDeltaPercentage only usable when mouse wheel \" +\r\n \"controls ONE axis. \" +\r\n \"Currently enabled: \" +\r\n \"axisControlRadius: \" +\r\n this.axisControlRadius +\r\n \", axisControlHeightOffset: \" +\r\n this.axisControlHeight +\r\n \", axisControlRotationOffset: \" +\r\n this.axisControlRotation\r\n );\r\n }\r\n\r\n if (this.axisControlRadius) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.radius;\r\n } else if (this.axisControlHeight) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.heightOffset;\r\n } else if (this.axisControlRotation) {\r\n delta = wheelDelta * 0.01 * this.wheelDeltaPercentage * this.camera.rotationOffset;\r\n }\r\n } else {\r\n delta = wheelDelta * this.wheelPrecision;\r\n }\r\n\r\n if (delta) {\r\n if (this.axisControlRadius) {\r\n this.camera.radius += delta;\r\n } else if (this.axisControlHeight) {\r\n this.camera.heightOffset -= delta;\r\n } else if (this.axisControlRotation) {\r\n this.camera.rotationOffset -= delta;\r\n }\r\n }\r\n\r\n if (event.preventDefault) {\r\n if (!noPreventDefault) {\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n this._observer = this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel, PointerEventTypes.POINTERWHEEL);\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 if (this._observer) {\r\n this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer);\r\n this._observer = null;\r\n this._wheel = null;\r\n }\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 \"FollowCameraMouseWheelInput\";\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 \"mousewheel\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FollowCameraMouseWheelInput\"] = FollowCameraMouseWheelInput;\r\n"]}
@@ -80,7 +80,22 @@ export declare class FollowCameraPointersInput extends BaseCameraPointersInput {
80
80
  * Log error messages if basic misconfiguration has occurred.
81
81
  */
82
82
  warningEnable: boolean;
83
+ /**
84
+ * Called on pointer POINTERMOVE event if only a single touch is active.
85
+ * @param pointA The current position of the pointer
86
+ * @param offsetX The offsetX of the pointer when the event occurred
87
+ * @param offsetY The offsetY of the pointer when the event occurred
88
+ */
83
89
  onTouch(pointA: Nullable<PointerTouch>, offsetX: number, offsetY: number): void;
90
+ /**
91
+ * Called on pointer POINTERMOVE event if multiple touches are active.
92
+ * @param pointA First point in the pair
93
+ * @param pointB Second point in the pair
94
+ * @param previousPinchSquaredDistance Sqr Distance between the points the last time this event was fired (by this input)
95
+ * @param pinchSquaredDistance Sqr Distance between the points this time
96
+ * @param previousMultiTouchPanPosition Previous center point between the points
97
+ * @param multiTouchPanPosition Current center point between the points
98
+ */
84
99
  onMultiTouch(pointA: Nullable<PointerTouch>, pointB: Nullable<PointerTouch>, previousPinchSquaredDistance: number, pinchSquaredDistance: number, previousMultiTouchPanPosition: Nullable<PointerTouch>, multiTouchPanPosition: Nullable<PointerTouch>): void;
85
100
  private _warningCounter;
86
101
  private _warning;
@@ -126,6 +126,12 @@ let FollowCameraPointersInput = (() => {
126
126
  getClassName() {
127
127
  return "FollowCameraPointersInput";
128
128
  }
129
+ /**
130
+ * Called on pointer POINTERMOVE event if only a single touch is active.
131
+ * @param pointA The current position of the pointer
132
+ * @param offsetX The offsetX of the pointer when the event occurred
133
+ * @param offsetY The offsetY of the pointer when the event occurred
134
+ */
129
135
  onTouch(pointA, offsetX, offsetY) {
130
136
  this._warning();
131
137
  if (this.axisXControlRotation) {
@@ -147,6 +153,15 @@ let FollowCameraPointersInput = (() => {
147
153
  this.camera.radius -= offsetY / this.angularSensibilityY;
148
154
  }
149
155
  }
156
+ /**
157
+ * Called on pointer POINTERMOVE event if multiple touches are active.
158
+ * @param pointA First point in the pair
159
+ * @param pointB Second point in the pair
160
+ * @param previousPinchSquaredDistance Sqr Distance between the points the last time this event was fired (by this input)
161
+ * @param pinchSquaredDistance Sqr Distance between the points this time
162
+ * @param previousMultiTouchPanPosition Previous center point between the points
163
+ * @param multiTouchPanPosition Current center point between the points
164
+ */
150
165
  onMultiTouch(pointA, pointB, previousPinchSquaredDistance, pinchSquaredDistance, previousMultiTouchPanPosition, multiTouchPanPosition) {
151
166
  if (previousPinchSquaredDistance === 0 && previousMultiTouchPanPosition === null) {
152
167
  // First time this method is called for new pinch.
@@ -188,7 +203,7 @@ let FollowCameraPointersInput = (() => {
188
203
  return;
189
204
  }
190
205
  const warn = "It probably only makes sense to control ONE camera " + "property with each pointer axis. Set 'warningEnable = false' " + "if you are sure. Currently enabled: ";
191
- if (+this.axisXControlRotation + +this.axisXControlHeight + +this.axisXControlRadius <= 1) {
206
+ if (+this.axisXControlRotation + +this.axisXControlHeight + +this.axisXControlRadius > 1) {
192
207
  Logger.Warn(warn +
193
208
  "axisXControlRotation: " +
194
209
  this.axisXControlRotation +
@@ -197,7 +212,7 @@ let FollowCameraPointersInput = (() => {
197
212
  ", axisXControlRadius: " +
198
213
  this.axisXControlRadius);
199
214
  }
200
- if (+this.axisYControlRotation + +this.axisYControlHeight + +this.axisYControlRadius <= 1) {
215
+ if (+this.axisYControlRotation + +this.axisYControlHeight + +this.axisYControlRadius > 1) {
201
216
  Logger.Warn(warn +
202
217
  "axisYControlRotation: " +
203
218
  this.axisYControlRotation +
@@ -206,7 +221,7 @@ let FollowCameraPointersInput = (() => {
206
221
  ", axisYControlRadius: " +
207
222
  this.axisYControlRadius);
208
223
  }
209
- if (+this.axisPinchControlRotation + +this.axisPinchControlHeight + +this.axisPinchControlRadius <= 1) {
224
+ if (+this.axisPinchControlRotation + +this.axisPinchControlHeight + +this.axisPinchControlRadius > 1) {
210
225
  Logger.Warn(warn +
211
226
  "axisPinchControlRotation: " +
212
227
  this.axisPinchControlRotation +
@@ -1 +1 @@
1
- {"version":3,"file":"followCameraPointersInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/followCameraPointersInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type FollowCamera } from \"../../Cameras/followCamera\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { BaseCameraPointersInput } from \"../../Cameras/Inputs/BaseCameraPointersInput\";\r\nimport { type PointerTouch } from \"../../Events/pointerEvents\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Manage the pointers inputs to control an follow camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FollowCameraPointersInput extends BaseCameraPointersInput {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FollowCamera;\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 override getClassName(): string {\r\n return \"FollowCameraPointersInput\";\r\n }\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the X axis or how fast is\r\n * the camera rotating.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public angularSensibilityX = 1;\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the Y axis or how fast is\r\n * the camera rotating.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public angularSensibilityY = 1;\r\n\r\n /**\r\n * Defines the pointer pinch precision or how fast is the camera zooming.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public pinchPrecision = 10000.0;\r\n\r\n /**\r\n * pinchDeltaPercentage will be used instead of pinchPrecision if different\r\n * from 0.\r\n * It defines the percentage of current camera.radius to use as delta when\r\n * pinch zoom is used.\r\n */\r\n @serialize()\r\n public pinchDeltaPercentage = 0;\r\n\r\n /**\r\n * Pointer X axis controls zoom. (X axis modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisXControlRadius: boolean = false;\r\n\r\n /**\r\n * Pointer X axis controls height. (X axis modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisXControlHeight: boolean = false;\r\n\r\n /**\r\n * Pointer X axis controls angle. (X axis modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisXControlRotation: boolean = true;\r\n\r\n /**\r\n * Pointer Y axis controls zoom. (Y axis modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisYControlRadius: boolean = false;\r\n\r\n /**\r\n * Pointer Y axis controls height. (Y axis modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisYControlHeight: boolean = true;\r\n\r\n /**\r\n * Pointer Y axis controls angle. (Y axis modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisYControlRotation: boolean = false;\r\n\r\n /**\r\n * Pinch controls zoom. (Pinch modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisPinchControlRadius: boolean = true;\r\n\r\n /**\r\n * Pinch controls height. (Pinch modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisPinchControlHeight: boolean = false;\r\n\r\n /**\r\n * Pinch controls angle. (Pinch modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisPinchControlRotation: boolean = false;\r\n\r\n /**\r\n * Log error messages if basic misconfiguration has occurred.\r\n */\r\n public warningEnable: boolean = true;\r\n\r\n public override onTouch(pointA: Nullable<PointerTouch>, offsetX: number, offsetY: number): void {\r\n this._warning();\r\n\r\n if (this.axisXControlRotation) {\r\n this.camera.rotationOffset += offsetX / this.angularSensibilityX;\r\n } else if (this.axisYControlRotation) {\r\n this.camera.rotationOffset += offsetY / this.angularSensibilityX;\r\n }\r\n\r\n if (this.axisXControlHeight) {\r\n this.camera.heightOffset += offsetX / this.angularSensibilityY;\r\n } else if (this.axisYControlHeight) {\r\n this.camera.heightOffset += offsetY / this.angularSensibilityY;\r\n }\r\n\r\n if (this.axisXControlRadius) {\r\n this.camera.radius -= offsetX / this.angularSensibilityY;\r\n } else if (this.axisYControlRadius) {\r\n this.camera.radius -= offsetY / this.angularSensibilityY;\r\n }\r\n }\r\n\r\n public override onMultiTouch(\r\n pointA: Nullable<PointerTouch>,\r\n pointB: Nullable<PointerTouch>,\r\n previousPinchSquaredDistance: number,\r\n pinchSquaredDistance: number,\r\n previousMultiTouchPanPosition: Nullable<PointerTouch>,\r\n multiTouchPanPosition: Nullable<PointerTouch>\r\n ): void {\r\n if (previousPinchSquaredDistance === 0 && previousMultiTouchPanPosition === null) {\r\n // First time this method is called for new pinch.\r\n // Next time this is called there will be a\r\n // previousPinchSquaredDistance and pinchSquaredDistance to compare.\r\n return;\r\n }\r\n if (pinchSquaredDistance === 0 && multiTouchPanPosition === null) {\r\n // Last time this method is called at the end of a pinch.\r\n return;\r\n }\r\n let pinchDelta = (pinchSquaredDistance - previousPinchSquaredDistance) / ((this.pinchPrecision * (this.angularSensibilityX + this.angularSensibilityY)) / 2);\r\n\r\n if (this.pinchDeltaPercentage) {\r\n pinchDelta *= 0.01 * this.pinchDeltaPercentage;\r\n if (this.axisPinchControlRotation) {\r\n this.camera.rotationOffset += pinchDelta * this.camera.rotationOffset;\r\n }\r\n if (this.axisPinchControlHeight) {\r\n this.camera.heightOffset += pinchDelta * this.camera.heightOffset;\r\n }\r\n if (this.axisPinchControlRadius) {\r\n this.camera.radius -= pinchDelta * this.camera.radius;\r\n }\r\n } else {\r\n if (this.axisPinchControlRotation) {\r\n this.camera.rotationOffset += pinchDelta;\r\n }\r\n\r\n if (this.axisPinchControlHeight) {\r\n this.camera.heightOffset += pinchDelta;\r\n }\r\n\r\n if (this.axisPinchControlRadius) {\r\n this.camera.radius -= pinchDelta;\r\n }\r\n }\r\n }\r\n\r\n /* Check for obvious misconfiguration. */\r\n private _warningCounter: number = 0;\r\n private _warning(): void {\r\n if (!this.warningEnable || this._warningCounter++ % 100 !== 0) {\r\n return;\r\n }\r\n const warn =\r\n \"It probably only makes sense to control ONE camera \" + \"property with each pointer axis. Set 'warningEnable = false' \" + \"if you are sure. Currently enabled: \";\r\n\r\n if (+this.axisXControlRotation + +this.axisXControlHeight + +this.axisXControlRadius <= 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisXControlRotation: \" +\r\n this.axisXControlRotation +\r\n \", axisXControlHeight: \" +\r\n this.axisXControlHeight +\r\n \", axisXControlRadius: \" +\r\n this.axisXControlRadius\r\n );\r\n }\r\n if (+this.axisYControlRotation + +this.axisYControlHeight + +this.axisYControlRadius <= 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisYControlRotation: \" +\r\n this.axisYControlRotation +\r\n \", axisYControlHeight: \" +\r\n this.axisYControlHeight +\r\n \", axisYControlRadius: \" +\r\n this.axisYControlRadius\r\n );\r\n }\r\n if (+this.axisPinchControlRotation + +this.axisPinchControlHeight + +this.axisPinchControlRadius <= 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisPinchControlRotation: \" +\r\n this.axisPinchControlRotation +\r\n \", axisPinchControlHeight: \" +\r\n this.axisPinchControlHeight +\r\n \", axisPinchControlRadius: \" +\r\n this.axisPinchControlRadius\r\n );\r\n }\r\n }\r\n}\r\n(<any>CameraInputTypes)[\"FollowCameraPointersInput\"] = FollowCameraPointersInput;\r\n"]}
1
+ {"version":3,"file":"followCameraPointersInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/followCameraPointersInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type FollowCamera } from \"../../Cameras/followCamera\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { BaseCameraPointersInput } from \"../../Cameras/Inputs/BaseCameraPointersInput\";\r\nimport { type PointerTouch } from \"../../Events/pointerEvents\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Manage the pointers inputs to control an follow camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FollowCameraPointersInput extends BaseCameraPointersInput {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FollowCamera;\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 override getClassName(): string {\r\n return \"FollowCameraPointersInput\";\r\n }\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the X axis or how fast is\r\n * the camera rotating.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public angularSensibilityX = 1;\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the Y axis or how fast is\r\n * the camera rotating.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public angularSensibilityY = 1;\r\n\r\n /**\r\n * Defines the pointer pinch precision or how fast is the camera zooming.\r\n * A negative number will reverse the axis direction.\r\n */\r\n @serialize()\r\n public pinchPrecision = 10000.0;\r\n\r\n /**\r\n * pinchDeltaPercentage will be used instead of pinchPrecision if different\r\n * from 0.\r\n * It defines the percentage of current camera.radius to use as delta when\r\n * pinch zoom is used.\r\n */\r\n @serialize()\r\n public pinchDeltaPercentage = 0;\r\n\r\n /**\r\n * Pointer X axis controls zoom. (X axis modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisXControlRadius: boolean = false;\r\n\r\n /**\r\n * Pointer X axis controls height. (X axis modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisXControlHeight: boolean = false;\r\n\r\n /**\r\n * Pointer X axis controls angle. (X axis modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisXControlRotation: boolean = true;\r\n\r\n /**\r\n * Pointer Y axis controls zoom. (Y axis modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisYControlRadius: boolean = false;\r\n\r\n /**\r\n * Pointer Y axis controls height. (Y axis modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisYControlHeight: boolean = true;\r\n\r\n /**\r\n * Pointer Y axis controls angle. (Y axis modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisYControlRotation: boolean = false;\r\n\r\n /**\r\n * Pinch controls zoom. (Pinch modifies camera.radius value.)\r\n */\r\n @serialize()\r\n public axisPinchControlRadius: boolean = true;\r\n\r\n /**\r\n * Pinch controls height. (Pinch modifies camera.heightOffset value.)\r\n */\r\n @serialize()\r\n public axisPinchControlHeight: boolean = false;\r\n\r\n /**\r\n * Pinch controls angle. (Pinch modifies camera.rotationOffset value.)\r\n */\r\n @serialize()\r\n public axisPinchControlRotation: boolean = false;\r\n\r\n /**\r\n * Log error messages if basic misconfiguration has occurred.\r\n */\r\n public warningEnable: boolean = true;\r\n\r\n /**\r\n * Called on pointer POINTERMOVE event if only a single touch is active.\r\n * @param pointA The current position of the pointer\r\n * @param offsetX The offsetX of the pointer when the event occurred\r\n * @param offsetY The offsetY of the pointer when the event occurred\r\n */\r\n public override onTouch(pointA: Nullable<PointerTouch>, offsetX: number, offsetY: number): void {\r\n this._warning();\r\n\r\n if (this.axisXControlRotation) {\r\n this.camera.rotationOffset += offsetX / this.angularSensibilityX;\r\n } else if (this.axisYControlRotation) {\r\n this.camera.rotationOffset += offsetY / this.angularSensibilityX;\r\n }\r\n\r\n if (this.axisXControlHeight) {\r\n this.camera.heightOffset += offsetX / this.angularSensibilityY;\r\n } else if (this.axisYControlHeight) {\r\n this.camera.heightOffset += offsetY / this.angularSensibilityY;\r\n }\r\n\r\n if (this.axisXControlRadius) {\r\n this.camera.radius -= offsetX / this.angularSensibilityY;\r\n } else if (this.axisYControlRadius) {\r\n this.camera.radius -= offsetY / this.angularSensibilityY;\r\n }\r\n }\r\n\r\n /**\r\n * Called on pointer POINTERMOVE event if multiple touches are active.\r\n * @param pointA First point in the pair\r\n * @param pointB Second point in the pair\r\n * @param previousPinchSquaredDistance Sqr Distance between the points the last time this event was fired (by this input)\r\n * @param pinchSquaredDistance Sqr Distance between the points this time\r\n * @param previousMultiTouchPanPosition Previous center point between the points\r\n * @param multiTouchPanPosition Current center point between the points\r\n */\r\n public override onMultiTouch(\r\n pointA: Nullable<PointerTouch>,\r\n pointB: Nullable<PointerTouch>,\r\n previousPinchSquaredDistance: number,\r\n pinchSquaredDistance: number,\r\n previousMultiTouchPanPosition: Nullable<PointerTouch>,\r\n multiTouchPanPosition: Nullable<PointerTouch>\r\n ): void {\r\n if (previousPinchSquaredDistance === 0 && previousMultiTouchPanPosition === null) {\r\n // First time this method is called for new pinch.\r\n // Next time this is called there will be a\r\n // previousPinchSquaredDistance and pinchSquaredDistance to compare.\r\n return;\r\n }\r\n if (pinchSquaredDistance === 0 && multiTouchPanPosition === null) {\r\n // Last time this method is called at the end of a pinch.\r\n return;\r\n }\r\n let pinchDelta = (pinchSquaredDistance - previousPinchSquaredDistance) / ((this.pinchPrecision * (this.angularSensibilityX + this.angularSensibilityY)) / 2);\r\n\r\n if (this.pinchDeltaPercentage) {\r\n pinchDelta *= 0.01 * this.pinchDeltaPercentage;\r\n if (this.axisPinchControlRotation) {\r\n this.camera.rotationOffset += pinchDelta * this.camera.rotationOffset;\r\n }\r\n if (this.axisPinchControlHeight) {\r\n this.camera.heightOffset += pinchDelta * this.camera.heightOffset;\r\n }\r\n if (this.axisPinchControlRadius) {\r\n this.camera.radius -= pinchDelta * this.camera.radius;\r\n }\r\n } else {\r\n if (this.axisPinchControlRotation) {\r\n this.camera.rotationOffset += pinchDelta;\r\n }\r\n\r\n if (this.axisPinchControlHeight) {\r\n this.camera.heightOffset += pinchDelta;\r\n }\r\n\r\n if (this.axisPinchControlRadius) {\r\n this.camera.radius -= pinchDelta;\r\n }\r\n }\r\n }\r\n\r\n /* Check for obvious misconfiguration. */\r\n private _warningCounter: number = 0;\r\n private _warning(): void {\r\n if (!this.warningEnable || this._warningCounter++ % 100 !== 0) {\r\n return;\r\n }\r\n const warn =\r\n \"It probably only makes sense to control ONE camera \" + \"property with each pointer axis. Set 'warningEnable = false' \" + \"if you are sure. Currently enabled: \";\r\n\r\n if (+this.axisXControlRotation + +this.axisXControlHeight + +this.axisXControlRadius > 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisXControlRotation: \" +\r\n this.axisXControlRotation +\r\n \", axisXControlHeight: \" +\r\n this.axisXControlHeight +\r\n \", axisXControlRadius: \" +\r\n this.axisXControlRadius\r\n );\r\n }\r\n if (+this.axisYControlRotation + +this.axisYControlHeight + +this.axisYControlRadius > 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisYControlRotation: \" +\r\n this.axisYControlRotation +\r\n \", axisYControlHeight: \" +\r\n this.axisYControlHeight +\r\n \", axisYControlRadius: \" +\r\n this.axisYControlRadius\r\n );\r\n }\r\n if (+this.axisPinchControlRotation + +this.axisPinchControlHeight + +this.axisPinchControlRadius > 1) {\r\n Logger.Warn(\r\n warn +\r\n \"axisPinchControlRotation: \" +\r\n this.axisPinchControlRotation +\r\n \", axisPinchControlHeight: \" +\r\n this.axisPinchControlHeight +\r\n \", axisPinchControlRadius: \" +\r\n this.axisPinchControlRadius\r\n );\r\n }\r\n }\r\n}\r\n(<any>CameraInputTypes)[\"FollowCameraPointersInput\"] = FollowCameraPointersInput;\r\n"]}
@@ -50,7 +50,7 @@ export class StereoscopicScreenUniversalCamera extends UniversalCamera {
50
50
  * @returns StereoscopicScreenUniversalCamera
51
51
  */
52
52
  getClassName() {
53
- return "StereoscopicUniversalCamera";
53
+ return "StereoscopicScreenUniversalCamera";
54
54
  }
55
55
  /**
56
56
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"stereoscopicScreenUniversalCamera.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera.pure\";\r\nimport { UniversalCamera } from \"../../Cameras/universalCamera.pure\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Matrix, Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { TargetCamera } from \"../targetCamera.pure\";\r\nimport { TransformNode } from \"../../Meshes/transformNode.pure\";\r\nimport { Viewport } from \"../../Maths/math.viewport\";\r\n\r\n/**\r\n * Camera used to simulate stereoscopic rendering on real screens (based on UniversalCamera)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class StereoscopicScreenUniversalCamera extends UniversalCamera {\r\n private _distanceToProjectionPlane: number;\r\n private _distanceBetweenEyes: number;\r\n\r\n public set distanceBetweenEyes(newValue: number) {\r\n this._distanceBetweenEyes = newValue;\r\n }\r\n\r\n /**\r\n * distance between the eyes\r\n */\r\n public get distanceBetweenEyes(): number {\r\n return this._distanceBetweenEyes;\r\n }\r\n\r\n public set distanceToProjectionPlane(newValue: number) {\r\n this._distanceToProjectionPlane = newValue;\r\n }\r\n\r\n /**\r\n * Distance to projection plane (should be the same units the like distance between the eyes)\r\n */\r\n public get distanceToProjectionPlane(): number {\r\n return this._distanceToProjectionPlane;\r\n }\r\n /**\r\n * Creates a new StereoscopicScreenUniversalCamera\r\n * @param name defines camera name\r\n * @param position defines initial position\r\n * @param scene defines the hosting scene\r\n * @param distanceToProjectionPlane defines distance between each color axis. The rig cameras will receive this as their negative z position!\r\n * @param distanceBetweenEyes defines is stereoscopic is done side by side or over under\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, distanceToProjectionPlane: number = 1, distanceBetweenEyes: number = 0.065) {\r\n super(name, position, scene);\r\n this._distanceBetweenEyes = distanceBetweenEyes;\r\n this._distanceToProjectionPlane = distanceToProjectionPlane;\r\n this.setCameraRigMode(Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL, {\r\n stereoHalfAngle: 0,\r\n });\r\n this._cameraRigParams.stereoHalfAngle = 0;\r\n this._cameraRigParams.interaxialDistance = distanceBetweenEyes;\r\n }\r\n\r\n /**\r\n * Gets camera class name\r\n * @returns StereoscopicScreenUniversalCamera\r\n */\r\n public override getClassName(): string {\r\n return \"StereoscopicUniversalCamera\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override createRigCamera(name: string): Nullable<Camera> {\r\n const camera = new TargetCamera(name, Vector3.Zero(), this.getScene());\r\n const transform = new TransformNode(\"tm_\" + name, this.getScene());\r\n camera.parent = transform;\r\n transform.setPivotMatrix(Matrix.Identity(), false);\r\n camera.isRigCamera = true;\r\n camera.rigParent = this;\r\n return camera;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateRigCameras() {\r\n for (let cameraIndex = 0; cameraIndex < this._rigCameras.length; cameraIndex++) {\r\n const cam = this._rigCameras[cameraIndex] as TargetCamera;\r\n cam.minZ = this.minZ;\r\n cam.maxZ = this.maxZ;\r\n cam.fov = this.fov;\r\n cam.upVector.copyFrom(this.upVector);\r\n if (cam.rotationQuaternion && this.rotationQuaternion) {\r\n cam.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n } else {\r\n cam.rotation.copyFrom(this.rotation);\r\n }\r\n this._updateCamera(this._rigCameras[cameraIndex] as TargetCamera, cameraIndex);\r\n }\r\n }\r\n\r\n private _updateCamera(camera: TargetCamera, cameraIndex: number) {\r\n const b = this.distanceBetweenEyes / 2;\r\n const z = b / this.distanceToProjectionPlane;\r\n camera.position.copyFrom(this.position);\r\n camera.position.addInPlaceFromFloats(cameraIndex === 0 ? -b : b, 0, -this._distanceToProjectionPlane);\r\n const transform = camera.parent as TransformNode;\r\n const m = transform.getPivotMatrix();\r\n m.setTranslationFromFloats(cameraIndex === 0 ? b : -b, 0, 0);\r\n m.setRowFromFloats(2, cameraIndex === 0 ? z : -z, 0, 1, 0);\r\n transform.setPivotMatrix(m, false);\r\n }\r\n\r\n protected override _setRigMode() {\r\n this._rigCameras[0].viewport = new Viewport(0, 0, 0.5, 1);\r\n this._rigCameras[1].viewport = new Viewport(0.5, 0, 0.5, 1.0);\r\n for (let cameraIndex = 0; cameraIndex < this._rigCameras.length; cameraIndex++) {\r\n this._updateCamera(this._rigCameras[cameraIndex] as TargetCamera, cameraIndex);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"stereoscopicScreenUniversalCamera.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.ts"],"names":[],"mappings":"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","sourcesContent":["import { Camera } from \"../../Cameras/camera.pure\";\r\nimport { UniversalCamera } from \"../../Cameras/universalCamera.pure\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { Matrix, Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { TargetCamera } from \"../targetCamera.pure\";\r\nimport { TransformNode } from \"../../Meshes/transformNode.pure\";\r\nimport { Viewport } from \"../../Maths/math.viewport\";\r\n\r\n/**\r\n * Camera used to simulate stereoscopic rendering on real screens (based on UniversalCamera)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class StereoscopicScreenUniversalCamera extends UniversalCamera {\r\n private _distanceToProjectionPlane: number;\r\n private _distanceBetweenEyes: number;\r\n\r\n public set distanceBetweenEyes(newValue: number) {\r\n this._distanceBetweenEyes = newValue;\r\n }\r\n\r\n /**\r\n * distance between the eyes\r\n */\r\n public get distanceBetweenEyes(): number {\r\n return this._distanceBetweenEyes;\r\n }\r\n\r\n public set distanceToProjectionPlane(newValue: number) {\r\n this._distanceToProjectionPlane = newValue;\r\n }\r\n\r\n /**\r\n * Distance to projection plane (should be the same units the like distance between the eyes)\r\n */\r\n public get distanceToProjectionPlane(): number {\r\n return this._distanceToProjectionPlane;\r\n }\r\n /**\r\n * Creates a new StereoscopicScreenUniversalCamera\r\n * @param name defines camera name\r\n * @param position defines initial position\r\n * @param scene defines the hosting scene\r\n * @param distanceToProjectionPlane defines distance between each color axis. The rig cameras will receive this as their negative z position!\r\n * @param distanceBetweenEyes defines is stereoscopic is done side by side or over under\r\n */\r\n constructor(name: string, position: Vector3, scene?: Scene, distanceToProjectionPlane: number = 1, distanceBetweenEyes: number = 0.065) {\r\n super(name, position, scene);\r\n this._distanceBetweenEyes = distanceBetweenEyes;\r\n this._distanceToProjectionPlane = distanceToProjectionPlane;\r\n this.setCameraRigMode(Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL, {\r\n stereoHalfAngle: 0,\r\n });\r\n this._cameraRigParams.stereoHalfAngle = 0;\r\n this._cameraRigParams.interaxialDistance = distanceBetweenEyes;\r\n }\r\n\r\n /**\r\n * Gets camera class name\r\n * @returns StereoscopicScreenUniversalCamera\r\n */\r\n public override getClassName(): string {\r\n return \"StereoscopicScreenUniversalCamera\";\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override createRigCamera(name: string): Nullable<Camera> {\r\n const camera = new TargetCamera(name, Vector3.Zero(), this.getScene());\r\n const transform = new TransformNode(\"tm_\" + name, this.getScene());\r\n camera.parent = transform;\r\n transform.setPivotMatrix(Matrix.Identity(), false);\r\n camera.isRigCamera = true;\r\n camera.rigParent = this;\r\n return camera;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _updateRigCameras() {\r\n for (let cameraIndex = 0; cameraIndex < this._rigCameras.length; cameraIndex++) {\r\n const cam = this._rigCameras[cameraIndex] as TargetCamera;\r\n cam.minZ = this.minZ;\r\n cam.maxZ = this.maxZ;\r\n cam.fov = this.fov;\r\n cam.upVector.copyFrom(this.upVector);\r\n if (cam.rotationQuaternion && this.rotationQuaternion) {\r\n cam.rotationQuaternion.copyFrom(this.rotationQuaternion);\r\n } else {\r\n cam.rotation.copyFrom(this.rotation);\r\n }\r\n this._updateCamera(this._rigCameras[cameraIndex] as TargetCamera, cameraIndex);\r\n }\r\n }\r\n\r\n private _updateCamera(camera: TargetCamera, cameraIndex: number) {\r\n const b = this.distanceBetweenEyes / 2;\r\n const z = b / this.distanceToProjectionPlane;\r\n camera.position.copyFrom(this.position);\r\n camera.position.addInPlaceFromFloats(cameraIndex === 0 ? -b : b, 0, -this._distanceToProjectionPlane);\r\n const transform = camera.parent as TransformNode;\r\n const m = transform.getPivotMatrix();\r\n m.setTranslationFromFloats(cameraIndex === 0 ? b : -b, 0, 0);\r\n m.setRowFromFloats(2, cameraIndex === 0 ? z : -z, 0, 1, 0);\r\n transform.setPivotMatrix(m, false);\r\n }\r\n\r\n protected override _setRigMode() {\r\n this._rigCameras[0].viewport = new Viewport(0, 0, 0.5, 1);\r\n this._rigCameras[1].viewport = new Viewport(0.5, 0, 0.5, 1.0);\r\n for (let cameraIndex = 0; cameraIndex < this._rigCameras.length; cameraIndex++) {\r\n this._updateCamera(this._rigCameras[cameraIndex] as TargetCamera, cameraIndex);\r\n }\r\n }\r\n}\r\n"]}
@@ -44,7 +44,7 @@ export function RegisterStereoscopicUniversalCamera() {
44
44
  return;
45
45
  }
46
46
  _Registered = true;
47
- Node.AddNodeConstructor("StereoscopicFreeCamera", (name, scene, options) => {
47
+ Node.AddNodeConstructor("StereoscopicUniversalCamera", (name, scene, options) => {
48
48
  return () => new StereoscopicUniversalCamera(name, Vector3.Zero(), options.interaxial_distance, options.isStereoscopicSideBySide, scene);
49
49
  });
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stereoscopicUniversalCamera.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAC5D;;;;;;;OAOG;IACH,YAAY,IAAY,EAAE,QAAiB,EAAE,kBAA0B,EAAE,wBAAiC,EAAE,KAAa;QACrH,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAgBd,gBAAW,GAAG,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAfjE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC,MAAM,CAAC,+BAA+B,EAAE;YACxI,kBAAkB,EAAE,kBAAkB;SACzC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,6BAA6B,CAAC;IACzC,CAAC;CAGJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,mCAAmC;IAC/C,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACvE,OAAO,GAAG,EAAE,CAAC,IAAI,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { Camera } from \"../../Cameras/camera.pure\";\r\nimport { UniversalCamera } from \"../../Cameras/universalCamera.pure\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { _SetStereoscopicRigMode } from \"../RigModes/stereoscopicRigMode\";\r\nimport { Node } from \"../../node\";\r\n\r\n/**\r\n * Camera used to simulate stereoscopic rendering (based on UniversalCamera)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class StereoscopicUniversalCamera extends UniversalCamera {\r\n /**\r\n * Creates a new StereoscopicUniversalCamera\r\n * @param name defines camera name\r\n * @param position defines initial position\r\n * @param interaxialDistance defines distance between each color axis\r\n * @param isStereoscopicSideBySide defines is stereoscopic is done side by side or over under\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(name: string, position: Vector3, interaxialDistance: number, isStereoscopicSideBySide: boolean, scene?: Scene) {\r\n super(name, position, scene);\r\n this.interaxialDistance = interaxialDistance;\r\n this.isStereoscopicSideBySide = isStereoscopicSideBySide;\r\n this.setCameraRigMode(isStereoscopicSideBySide ? Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, {\r\n interaxialDistance: interaxialDistance,\r\n });\r\n }\r\n\r\n /**\r\n * Gets camera class name\r\n * @returns StereoscopicUniversalCamera\r\n */\r\n public override getClassName(): string {\r\n return \"StereoscopicUniversalCamera\";\r\n }\r\n\r\n protected override _setRigMode = () => _SetStereoscopicRigMode(this);\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for stereoscopicUniversalCamera.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStereoscopicUniversalCamera(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n Node.AddNodeConstructor(\"StereoscopicFreeCamera\", (name, scene, options) => {\r\n return () => new StereoscopicUniversalCamera(name, Vector3.Zero(), options.interaxial_distance, options.isStereoscopicSideBySide, scene);\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"stereoscopicUniversalCamera.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAC5D;;;;;;;OAOG;IACH,YAAY,IAAY,EAAE,QAAiB,EAAE,kBAA0B,EAAE,wBAAiC,EAAE,KAAa;QACrH,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAgBd,gBAAW,GAAG,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAfjE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC,MAAM,CAAC,+BAA+B,EAAE;YACxI,kBAAkB,EAAE,kBAAkB;SACzC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,6BAA6B,CAAC;IACzC,CAAC;CAGJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,mCAAmC;IAC/C,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5E,OAAO,GAAG,EAAE,CAAC,IAAI,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { Camera } from \"../../Cameras/camera.pure\";\r\nimport { UniversalCamera } from \"../../Cameras/universalCamera.pure\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { _SetStereoscopicRigMode } from \"../RigModes/stereoscopicRigMode\";\r\nimport { Node } from \"../../node\";\r\n\r\n/**\r\n * Camera used to simulate stereoscopic rendering (based on UniversalCamera)\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras\r\n */\r\nexport class StereoscopicUniversalCamera extends UniversalCamera {\r\n /**\r\n * Creates a new StereoscopicUniversalCamera\r\n * @param name defines camera name\r\n * @param position defines initial position\r\n * @param interaxialDistance defines distance between each color axis\r\n * @param isStereoscopicSideBySide defines is stereoscopic is done side by side or over under\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(name: string, position: Vector3, interaxialDistance: number, isStereoscopicSideBySide: boolean, scene?: Scene) {\r\n super(name, position, scene);\r\n this.interaxialDistance = interaxialDistance;\r\n this.isStereoscopicSideBySide = isStereoscopicSideBySide;\r\n this.setCameraRigMode(isStereoscopicSideBySide ? Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL : Camera.RIG_MODE_STEREOSCOPIC_OVERUNDER, {\r\n interaxialDistance: interaxialDistance,\r\n });\r\n }\r\n\r\n /**\r\n * Gets camera class name\r\n * @returns StereoscopicUniversalCamera\r\n */\r\n public override getClassName(): string {\r\n return \"StereoscopicUniversalCamera\";\r\n }\r\n\r\n protected override _setRigMode = () => _SetStereoscopicRigMode(this);\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for stereoscopicUniversalCamera.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterStereoscopicUniversalCamera(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n Node.AddNodeConstructor(\"StereoscopicUniversalCamera\", (name, scene, options) => {\r\n return () => new StereoscopicUniversalCamera(name, Vector3.Zero(), options.interaxial_distance, options.isStereoscopicSideBySide, scene);\r\n });\r\n}\r\n"]}
@@ -1114,7 +1114,7 @@ let ArcRotateCamera = (() => {
1114
1114
  this._transformedDirection.y = 0;
1115
1115
  }
1116
1116
  if (!this._targetHost) {
1117
- if (this.panningDistanceLimit) {
1117
+ if (this.panningDistanceLimit !== null) {
1118
1118
  this._transformedDirection.addInPlace(this._target);
1119
1119
  const distanceSquared = Vector3.DistanceSquared(this._transformedDirection, this.panningOriginTarget);
1120
1120
  if (distanceSquared <= this.panningDistanceLimit * this.panningDistanceLimit) {