@babylonjs/core 9.11.0 → 9.12.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.
- package/Actions/actionManager.d.ts +1 -1
- package/Actions/actionManager.js +8 -5
- package/Actions/actionManager.js.map +1 -1
- package/Animations/animatable.core.d.ts +1 -1
- package/Animations/animatable.core.js +2 -2
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationPropertiesOverride.js +1 -1
- package/Animations/animationPropertiesOverride.js.map +1 -1
- package/Animations/animatorAvatar.d.ts +2 -2
- package/Animations/animatorAvatar.js +3 -3
- package/Animations/animatorAvatar.js.map +1 -1
- package/Animations/pathCursor.d.ts +1 -1
- package/Animations/pathCursor.js +1 -1
- package/Animations/pathCursor.js.map +1 -1
- package/Animations/runtimeAnimation.d.ts +1 -1
- package/Animations/runtimeAnimation.js +2 -2
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/analyser.js +1 -1
- package/Audio/analyser.js.map +1 -1
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
- package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
- package/Behaviors/Cameras/bouncingBehavior.js +1 -1
- package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
- package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
- package/Behaviors/Cameras/framingBehavior.js +2 -2
- package/Behaviors/Cameras/framingBehavior.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +28 -1
- package/Behaviors/Cameras/interpolatingBehavior.js +64 -22
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
- package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +1 -1
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
- package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
- package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
- package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
- package/Bones/boneIKController.d.ts +1 -1
- package/Bones/boneIKController.js +1 -1
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.d.ts +1 -1
- package/Bones/boneLookController.js +1 -1
- package/Bones/boneLookController.js.map +1 -1
- package/Bones/skeleton.d.ts +2 -2
- package/Bones/skeleton.functions.d.ts +1 -1
- package/Bones/skeleton.functions.js +3 -3
- package/Bones/skeleton.functions.js.map +1 -1
- package/Bones/skeleton.js +3 -4
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.align.pure.js +6 -0
- package/Buffers/buffer.align.pure.js.map +1 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
- package/Buffers/buffer.pure.d.ts +8 -0
- package/Buffers/buffer.pure.js +31 -2
- package/Buffers/buffer.pure.js.map +1 -1
- package/Buffers/bufferUtils.js +17 -5
- package/Buffers/bufferUtils.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +11 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -0
- package/Cameras/Inputs/flyCameraMouseInput.js +16 -4
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +27 -7
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +14 -0
- package/Cameras/Inputs/freeCameraMouseInput.js +27 -5
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +18 -7
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +9 -2
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Limits/geospatialLimits.d.ts +1 -1
- package/Cameras/Limits/geospatialLimits.js +1 -1
- package/Cameras/Limits/geospatialLimits.js.map +1 -1
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
- package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
- package/Cameras/RigModes/vrRigMode.js +2 -2
- package/Cameras/RigModes/vrRigMode.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
- package/Cameras/VR/vrCameraMetrics.js +1 -1
- package/Cameras/VR/vrCameraMetrics.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/cameraInputsManager.d.ts +1 -1
- package/Cameras/cameraInputsManager.js +1 -1
- package/Cameras/cameraInputsManager.js.map +1 -1
- package/Cameras/flyCamera.pure.d.ts +8 -0
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.d.ts +8 -0
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +39 -14
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/index.d.ts +1 -0
- package/Cameras/index.js +1 -0
- package/Cameras/index.js.map +1 -1
- package/Cameras/pure.d.ts +1 -0
- package/Cameras/pure.js +1 -0
- package/Cameras/pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +25 -0
- package/Cameras/targetCamera.pure.js +83 -25
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/targetCameraMovement.d.ts +56 -0
- package/Cameras/targetCameraMovement.js +63 -0
- package/Cameras/targetCameraMovement.js.map +1 -0
- package/Collisions/collider.d.ts +1 -1
- package/Collisions/collider.js +1 -1
- package/Collisions/collider.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Collisions/meshCollisionData.d.ts +1 -1
- package/Collisions/meshCollisionData.js +1 -1
- package/Collisions/meshCollisionData.js.map +1 -1
- package/Collisions/pickingInfo.d.ts +1 -1
- package/Collisions/pickingInfo.js +2 -2
- package/Collisions/pickingInfo.js.map +1 -1
- package/Culling/Octrees/octreeBlock.d.ts +1 -1
- package/Culling/Octrees/octreeBlock.js +1 -1
- package/Culling/Octrees/octreeBlock.js.map +1 -1
- package/Culling/boundingBox.d.ts +1 -1
- package/Culling/boundingBox.js +1 -1
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/boundingInfo.d.ts +1 -1
- package/Culling/boundingInfo.js +1 -1
- package/Culling/boundingInfo.js.map +1 -1
- package/Culling/boundingSphere.d.ts +1 -1
- package/Culling/boundingSphere.js +1 -1
- package/Culling/boundingSphere.js.map +1 -1
- package/Culling/ray.core.d.ts +1 -1
- package/Culling/ray.core.js +1 -1
- package/Culling/ray.core.js.map +1 -1
- package/Debug/axesViewer.d.ts +1 -1
- package/Debug/axesViewer.js +3 -3
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/boneAxesViewer.d.ts +1 -1
- package/Debug/boneAxesViewer.js +1 -1
- package/Debug/boneAxesViewer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.d.ts +1 -1
- package/Debug/directionalLightFrustumViewer.js +6 -6
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/rayHelper.d.ts +1 -1
- package/Debug/rayHelper.js +2 -2
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.d.ts +2 -2
- package/Debug/skeletonViewer.js +10 -10
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
- package/DeviceInput/internalDeviceSourceManager.js +0 -1
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +1 -1
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.scissor.d.ts +18 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js +2 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js.map +1 -0
- package/Engines/Extensions/engine.views.d.ts +1 -1
- package/Engines/Extensions/engine.views.js +1 -1
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +4 -1
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/abstractEngine.pure.js +2 -2
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +1 -0
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engine.pure.d.ts +0 -12
- package/Engines/engine.pure.js +0 -20
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/engineFactory.d.ts +2 -2
- package/Engines/engineFactory.js +3 -3
- package/Engines/engineFactory.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +93 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/pure.d.ts +1 -0
- package/Engines/pure.js +1 -0
- package/Engines/pure.js.map +1 -1
- package/Engines/thinEngine.scissor.d.ts +6 -0
- package/Engines/thinEngine.scissor.js +9 -0
- package/Engines/thinEngine.scissor.js.map +1 -0
- package/Engines/thinEngine.scissor.pure.d.ts +6 -0
- package/Engines/thinEngine.scissor.pure.js +24 -0
- package/Engines/thinEngine.scissor.pure.js.map +1 -0
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.js +7 -0
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/Events/pointerEvents.d.ts +1 -1
- package/Events/pointerEvents.js +1 -1
- package/Events/pointerEvents.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
- package/FlowGraph/flowGraphBlock.d.ts +1 -1
- package/FlowGraph/flowGraphBlock.js +1 -1
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
- package/FlowGraph/flowGraphExecutionBlock.js +1 -1
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/FlowGraph/flowGraphMath.d.ts +1 -1
- package/FlowGraph/flowGraphMath.js +1 -1
- package/FlowGraph/flowGraphMath.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +1 -1
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
- package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
- package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
- package/FlowGraph/flowGraphValidator.js.map +1 -1
- package/FlowGraph/serialization.js +4 -4
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/utils.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
- package/FrameGraph/Node/nodeRenderGraph.js +7 -7
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
- package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
- package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
- package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.js +1 -1
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
- package/FrameGraph/frameGraphTextureManager.js +1 -1
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/axisDragGizmo.d.ts +5 -5
- package/Gizmos/axisDragGizmo.js +6 -6
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.d.ts +4 -4
- package/Gizmos/axisScaleGizmo.js +6 -6
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.d.ts +5 -5
- package/Gizmos/boundingBoxGizmo.js +7 -7
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/cameraGizmo.d.ts +3 -3
- package/Gizmos/cameraGizmo.js +7 -7
- package/Gizmos/cameraGizmo.js.map +1 -1
- package/Gizmos/gizmo.d.ts +2 -2
- package/Gizmos/gizmo.js +3 -3
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.d.ts +2 -2
- package/Gizmos/gizmoManager.js +2 -2
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/lightGizmo.d.ts +4 -4
- package/Gizmos/lightGizmo.js +11 -11
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeDragGizmo.d.ts +4 -4
- package/Gizmos/planeDragGizmo.js +5 -5
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.d.ts +1 -1
- package/Gizmos/positionGizmo.js +2 -2
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.d.ts +3 -3
- package/Gizmos/rotationGizmo.js +3 -3
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.d.ts +2 -2
- package/Gizmos/scaleGizmo.js +4 -4
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Gizmos/spatialAudioGizmo.d.ts +2 -2
- package/Gizmos/spatialAudioGizmo.js +6 -6
- package/Gizmos/spatialAudioGizmo.js.map +1 -1
- package/Helpers/environmentHelper.d.ts +6 -6
- package/Helpers/environmentHelper.js +12 -12
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/materialConversionHelper.d.ts +1 -1
- package/Helpers/materialConversionHelper.js +1 -1
- package/Helpers/materialConversionHelper.js.map +1 -1
- package/Helpers/photoDome.d.ts +1 -1
- package/Helpers/photoDome.js +1 -1
- package/Helpers/photoDome.js.map +1 -1
- package/Helpers/textureDome.d.ts +4 -4
- package/Helpers/textureDome.js +6 -6
- package/Helpers/textureDome.js.map +1 -1
- package/Helpers/videoDome.d.ts +1 -1
- package/Helpers/videoDome.js +2 -2
- package/Helpers/videoDome.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +1 -1
- package/Inputs/scene.inputManager.js +1 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +1 -1
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.d.ts +1 -1
- package/Layers/effectLayer.js +3 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/layer.d.ts +2 -2
- package/Layers/layer.js +4 -4
- package/Layers/layer.js.map +1 -1
- package/Layers/thinEffectLayer.d.ts +2 -2
- package/Layers/thinEffectLayer.js +3 -3
- package/Layers/thinEffectLayer.js.map +1 -1
- package/Layers/thinGlowLayer.d.ts +1 -1
- package/Layers/thinGlowLayer.js +3 -3
- package/Layers/thinGlowLayer.js.map +1 -1
- package/Layers/thinHighlightLayer.d.ts +1 -1
- package/Layers/thinHighlightLayer.js +3 -3
- package/Layers/thinHighlightLayer.js.map +1 -1
- package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
- package/Layers/thinSelectionOutlineLayer.js +3 -3
- package/Layers/thinSelectionOutlineLayer.js.map +1 -1
- package/Legacy/legacy.js +12 -1
- package/Legacy/legacy.js.map +1 -1
- package/LensFlares/lensFlare.d.ts +2 -2
- package/LensFlares/lensFlare.js +3 -3
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.d.ts +1 -1
- package/LensFlares/lensFlareSystem.js +6 -6
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/LTC/ltcTextureTool.js +1 -1
- package/Lights/LTC/ltcTextureTool.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
- package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
- package/Lights/Shadows/pure.d.ts +1 -0
- package/Lights/Shadows/pure.js +1 -0
- package/Lights/Shadows/pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +3 -3
- package/Lights/Shadows/shadowGenerator.js +7 -7
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.d.ts +1 -1
- package/Lights/areaLight.js +0 -1
- package/Lights/areaLight.js.map +1 -1
- package/Lights/light.d.ts +2 -2
- package/Lights/light.js +2 -2
- package/Lights/light.js.map +1 -1
- package/Lights/shadowLight.d.ts +1 -1
- package/Lights/shadowLight.js +1 -1
- package/Lights/shadowLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +2 -2
- package/Loading/sceneLoader.js +3 -3
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +10 -3
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
- package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
- package/Materials/Node/nodeMaterial.pure.js +68 -13
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialDefault.js +14 -14
- package/Materials/Node/nodeMaterialDefault.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.js +19 -4
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
- package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
- package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
- package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
- package/Materials/PBR/pbrSheenConfiguration.js +41 -2
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
- package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
- package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Packer/packer.d.ts +1 -1
- package/Materials/Textures/Packer/packer.js +6 -6
- package/Materials/Textures/Packer/packer.js.map +1 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
- package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
- package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
- package/Materials/Textures/prePassRenderTarget.js +1 -1
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.d.ts +1 -1
- package/Materials/Textures/rawCubeTexture.js +2 -2
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.d.ts +1 -1
- package/Materials/Textures/rawTexture.js +1 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
- package/Materials/Textures/rawTexture2DArray.js +1 -1
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/refractionTexture.d.ts +1 -1
- package/Materials/Textures/refractionTexture.js +1 -1
- package/Materials/Textures/refractionTexture.js.map +1 -1
- package/Materials/Textures/textureMerger.d.ts +1 -1
- package/Materials/Textures/textureMerger.js +1 -1
- package/Materials/Textures/textureMerger.js.map +1 -1
- package/Materials/Textures/textureProcessor.d.ts +1 -1
- package/Materials/Textures/textureProcessor.js +2 -2
- package/Materials/Textures/textureProcessor.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.d.ts +4 -4
- package/Materials/Textures/thinRenderTargetTexture.js +2 -2
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/clipPlaneMaterialHelper.js +1 -1
- package/Materials/clipPlaneMaterialHelper.js.map +1 -1
- package/Materials/effectRenderer.pure.js +4 -2
- package/Materials/effectRenderer.pure.js.map +1 -1
- package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
- package/Materials/floatingOriginMatrixOverrides.js +1 -1
- package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +39 -1
- package/Materials/material.detailMapConfiguration.js +39 -1
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/materialHelper.functions.js +45 -1
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +1 -1
- package/Materials/materialHelper.geometryrendering.js +1 -1
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/materialPluginFactoryExport.js +2 -2
- package/Materials/materialPluginFactoryExport.js.map +1 -1
- package/Materials/pushMaterial.d.ts +7 -1
- package/Materials/pushMaterial.js +7 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +1 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/math.axis.d.ts +1 -1
- package/Maths/math.axis.js +1 -1
- package/Maths/math.axis.js.map +1 -1
- package/Maths/math.d.ts +2 -2
- package/Maths/math.functions.d.ts +1 -1
- package/Maths/math.functions.js +1 -1
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.isovector.d.ts +1 -1
- package/Maths/math.isovector.js +1 -1
- package/Maths/math.isovector.js.map +1 -1
- package/Maths/math.js +2 -2
- package/Maths/math.js.map +1 -1
- package/Maths/math.path.d.ts +1 -1
- package/Maths/math.path.js +1 -1
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.plane.d.ts +1 -1
- package/Maths/math.plane.js +1 -1
- package/Maths/math.plane.js.map +1 -1
- package/Maths/math.polar.d.ts +1 -1
- package/Maths/math.polar.js +1 -1
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.vertexFormat.d.ts +1 -1
- package/Maths/math.vertexFormat.js +1 -1
- package/Maths/math.vertexFormat.js.map +1 -1
- package/Maths/pure.d.ts +1 -0
- package/Maths/pure.js +1 -0
- package/Maths/pure.js.map +1 -1
- package/Meshes/Builders/geodesicBuilder.js +1 -1
- package/Meshes/Builders/geodesicBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
- package/Meshes/Builders/goldbergBuilder.js +4 -4
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
- package/Meshes/Builders/greasedLineBuilder.js +5 -5
- package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
- package/Meshes/Builders/textBuilder.d.ts +2 -2
- package/Meshes/Builders/textBuilder.js +4 -4
- package/Meshes/Builders/textBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
- package/Meshes/Builders/tiledBoxBuilder.js +3 -3
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCodec.js +1 -1
- package/Meshes/Compression/dracoCodec.js.map +1 -1
- package/Meshes/Compression/dracoDecoder.js +1 -1
- package/Meshes/Compression/dracoDecoder.js.map +1 -1
- package/Meshes/Compression/dracoEncoder.d.ts +1 -1
- package/Meshes/Compression/dracoEncoder.js +2 -2
- package/Meshes/Compression/dracoEncoder.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +1 -1
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +50 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +263 -107
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +37 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +160 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
- package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
- package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
- package/Meshes/Node/nodeGeometry.d.ts +2 -2
- package/Meshes/Node/nodeGeometry.js +4 -4
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
- package/Meshes/Node/nodeGeometryBuildState.js +1 -1
- package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
- package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
- package/Meshes/abstractMesh.hotSpot.js +2 -2
- package/Meshes/abstractMesh.hotSpot.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2 -13
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/buffer.d.ts +1 -1
- package/Meshes/buffer.js +1 -1
- package/Meshes/buffer.js.map +1 -1
- package/Meshes/csg.d.ts +3 -3
- package/Meshes/csg.js +4 -4
- package/Meshes/csg.js.map +1 -1
- package/Meshes/csg2.d.ts +1 -1
- package/Meshes/csg2.js +38 -11
- package/Meshes/csg2.js.map +1 -1
- package/Meshes/geodesicMesh.d.ts +1 -1
- package/Meshes/geodesicMesh.js +1 -1
- package/Meshes/geodesicMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +2 -2
- package/Meshes/geometry.js +34 -19
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/lattice.d.ts +1 -1
- package/Meshes/lattice.js +1 -1
- package/Meshes/lattice.js.map +1 -1
- package/Meshes/lattice.material.d.ts +1 -1
- package/Meshes/lattice.material.js +1 -1
- package/Meshes/lattice.material.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +2 -2
- package/Meshes/mesh.vertexData.js +3 -4
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/mesh.vertexData.subdivide.js +1 -1
- package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +18 -18
- package/Meshes/meshBuilder.js +18 -18
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshSimplification.d.ts +1 -1
- package/Meshes/meshSimplification.js +4 -4
- package/Meshes/meshSimplification.js.map +1 -1
- package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
- package/Meshes/meshUVSpaceRenderer.js +0 -1
- package/Meshes/meshUVSpaceRenderer.js.map +1 -1
- package/Meshes/meshUtils.d.ts +1 -1
- package/Meshes/meshUtils.js +2 -2
- package/Meshes/meshUtils.js.map +1 -1
- package/Meshes/polygonMesh.d.ts +2 -2
- package/Meshes/polygonMesh.js +3 -3
- package/Meshes/polygonMesh.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
- package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/areaLightsTextureTools.d.ts +1 -1
- package/Misc/areaLightsTextureTools.js +3 -3
- package/Misc/areaLightsTextureTools.js.map +1 -1
- package/Misc/assetsManager.d.ts +4 -4
- package/Misc/assetsManager.js +5 -5
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basisWorker.js +1 -1
- package/Misc/basisWorker.js.map +1 -1
- package/Misc/brdfTextureTools.js +1 -1
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +1 -1
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/decorators.serialization.js +2 -2
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/depthReducer.d.ts +2 -2
- package/Misc/depthReducer.js +2 -2
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/gradients.d.ts +1 -1
- package/Misc/gradients.js +1 -1
- package/Misc/gradients.js.map +1 -1
- package/Misc/greasedLineTools.d.ts +1 -1
- package/Misc/greasedLineTools.js +3 -3
- package/Misc/greasedLineTools.js.map +1 -1
- package/Misc/halfFloat.d.ts +17 -0
- package/Misc/halfFloat.js +131 -0
- package/Misc/halfFloat.js.map +1 -0
- package/Misc/khronosTextureContainer2.js +1 -1
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/meshExploder.js +1 -1
- package/Misc/meshExploder.js.map +1 -1
- package/Misc/pivotTools.js +1 -1
- package/Misc/pivotTools.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -1
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneOptimizer.js +1 -1
- package/Misc/sceneOptimizer.js.map +1 -1
- package/Misc/sceneRecorder.js +7 -7
- package/Misc/sceneRecorder.js.map +1 -1
- package/Misc/sceneSerializer.js +3 -3
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +1 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/textureTools.d.ts +3 -13
- package/Misc/textureTools.js +6 -64
- package/Misc/textureTools.js.map +1 -1
- package/Misc/thinMinMaxReducer.d.ts +1 -1
- package/Misc/thinMinMaxReducer.js +1 -1
- package/Misc/thinMinMaxReducer.js.map +1 -1
- package/Misc/tools.internals.js +1 -1
- package/Misc/tools.internals.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Misc/trajectoryClassifier.d.ts +1 -1
- package/Misc/trajectoryClassifier.js +1 -1
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Misc/videoRecorder.js +1 -1
- package/Misc/videoRecorder.js.map +1 -1
- package/Misc/virtualJoystick.d.ts +1 -1
- package/Misc/virtualJoystick.js +1 -1
- package/Misc/virtualJoystick.js.map +1 -1
- package/Morph/morphTarget.js +1 -1
- package/Morph/morphTarget.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +2 -2
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
- package/Particles/Node/nodeParticleBuildState.js +2 -2
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
- package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +8 -8
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/attractor.d.ts +1 -1
- package/Particles/attractor.js +1 -1
- package/Particles/attractor.js.map +1 -1
- package/Particles/flowMap.d.ts +7 -1
- package/Particles/flowMap.js +7 -1
- package/Particles/flowMap.js.map +1 -1
- package/Particles/particle.d.ts +2 -2
- package/Particles/particle.js +2 -2
- package/Particles/particle.js.map +1 -1
- package/Particles/particleHelper.js +5 -5
- package/Particles/particleHelper.js.map +1 -1
- package/Particles/particleSystem.functions.d.ts +1 -1
- package/Particles/particleSystem.functions.js +1 -1
- package/Particles/particleSystem.functions.js.map +1 -1
- package/Particles/particleSystemSet.d.ts +1 -1
- package/Particles/particleSystemSet.js +5 -5
- package/Particles/particleSystemSet.js.map +1 -1
- package/Particles/pointsCloudSystem.d.ts +1 -1
- package/Particles/pointsCloudSystem.js +6 -6
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.d.ts +2 -2
- package/Particles/solidParticle.js +3 -3
- package/Particles/solidParticle.js.map +1 -1
- package/Particles/solidParticleSystem.d.ts +4 -4
- package/Particles/solidParticleSystem.js +7 -7
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/subEmitter.js +1 -1
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/thinParticleSystem.function.js +2 -2
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
- package/Physics/Plugins/cannonJSPlugin.js +1 -1
- package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
- package/Physics/castingResult.d.ts +1 -1
- package/Physics/castingResult.js +1 -1
- package/Physics/castingResult.js.map +1 -1
- package/Physics/physicsHelper.d.ts +1 -1
- package/Physics/physicsHelper.js +4 -4
- package/Physics/physicsHelper.js.map +1 -1
- package/Physics/physicsImpostor.d.ts +1 -1
- package/Physics/physicsImpostor.js +1 -1
- package/Physics/physicsImpostor.js.map +1 -1
- package/Physics/physicsRaycastResult.d.ts +1 -1
- package/Physics/physicsRaycastResult.js +1 -1
- package/Physics/physicsRaycastResult.js.map +1 -1
- package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
- package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
- package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
- package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
- package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
- package/Physics/v1/physicsEngine.d.ts +1 -1
- package/Physics/v1/physicsEngine.js +1 -1
- package/Physics/v1/physicsEngine.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
- package/Physics/v2/Plugins/havokPlugin.js +45 -7
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/characterController.d.ts +1 -1
- package/Physics/v2/characterController.js +2 -2
- package/Physics/v2/characterController.js.map +1 -1
- package/Physics/v2/physicsAggregate.d.ts +3 -3
- package/Physics/v2/physicsAggregate.js +10 -6
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +1 -1
- package/Physics/v2/physicsBody.js +1 -1
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsEngine.d.ts +1 -1
- package/Physics/v2/physicsEngine.js +1 -1
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/Physics/v2/physicsShape.d.ts +1 -1
- package/Physics/v2/physicsShape.js +1 -1
- package/Physics/v2/physicsShape.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +2 -2
- package/Physics/v2/ragdoll.js +2 -2
- package/Physics/v2/ragdoll.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/bloomEffect.d.ts +1 -1
- package/PostProcesses/bloomEffect.js +4 -4
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
- package/PostProcesses/depthOfFieldEffect.js +3 -3
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.d.ts +1 -1
- package/PostProcesses/highlightsPostProcess.js +1 -1
- package/PostProcesses/highlightsPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.d.ts +3 -0
- package/PostProcesses/postProcessManager.js +4 -1
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/thinBloomEffect.js +1 -1
- package/PostProcesses/thinBloomEffect.js.map +1 -1
- package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
- package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinBlurPostProcess.js +1 -1
- package/PostProcesses/thinBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
- package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
- package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
- package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
- package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
- package/PostProcesses/thinConvolutionPostProcess.js +1 -1
- package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
- package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
- package/PostProcesses/thinCustomPostProcess.js +1 -1
- package/PostProcesses/thinCustomPostProcess.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
- package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
- package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
- package/PostProcesses/thinFXAAPostProcess.js +2 -2
- package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
- package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
- package/PostProcesses/thinFilterPostProcess.js +2 -2
- package/PostProcesses/thinFilterPostProcess.js.map +1 -1
- package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
- package/PostProcesses/thinGrainPostProcess.js +1 -1
- package/PostProcesses/thinGrainPostProcess.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
- package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
- package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinPassPostProcess.d.ts +1 -1
- package/PostProcesses/thinPassPostProcess.js +1 -1
- package/PostProcesses/thinPassPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
- package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
- package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
- package/PostProcesses/thinSSAO2PostProcess.js +36 -4
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
- package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSRPostProcess.js +2 -2
- package/PostProcesses/thinSSRPostProcess.js.map +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
- package/PostProcesses/thinSharpenPostProcess.js +1 -1
- package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
- package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
- package/PostProcesses/thinTAAPostProcess.js +4 -4
- package/PostProcesses/thinTAAPostProcess.js.map +1 -1
- package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
- package/PostProcesses/thinTonemapPostProcess.js +1 -1
- package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
- package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
- package/Rendering/depthPeelingRenderer.d.ts +1 -1
- package/Rendering/depthPeelingRenderer.js +2 -2
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/iblCdfGenerator.d.ts +3 -3
- package/Rendering/iblCdfGenerator.js +5 -5
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Rendering/renderingGroup.js +1 -1
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.d.ts +2 -2
- package/Rendering/subSurfaceConfiguration.js +2 -2
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/utilityLayerRenderer.d.ts +2 -2
- package/Rendering/utilityLayerRenderer.js +4 -4
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/greasedLine.vertex.js +19 -3
- package/Shaders/greasedLine.vertex.js.map +1 -1
- package/Shaders/ssao2.fragment.js +10 -2
- package/Shaders/ssao2.fragment.js.map +1 -1
- package/ShadersWGSL/ssao2.fragment.js +10 -2
- package/ShadersWGSL/ssao2.fragment.js.map +1 -1
- package/SmartAssets/smartAssetSerializer.js +1 -1
- package/SmartAssets/smartAssetSerializer.js.map +1 -1
- package/Sprites/sprite.d.ts +2 -2
- package/Sprites/sprite.js +2 -2
- package/Sprites/sprite.js.map +1 -1
- package/Sprites/spriteManager.d.ts +2 -2
- package/Sprites/spriteManager.js +4 -5
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spritePackedManager.js +1 -1
- package/Sprites/spritePackedManager.js.map +1 -1
- package/Sprites/spriteRenderer.js +2 -2
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
- package/XR/features/WebXRHitTestLegacy.js +2 -2
- package/XR/features/WebXRHitTestLegacy.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.js +2 -2
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/motionController/webXRGenericMotionController.js +2 -2
- package/XR/motionController/webXRGenericMotionController.js.map +1 -1
- package/XR/motionController/webXRProfiledMotionController.js +4 -4
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.d.ts +3 -3
- package/XR/webXRCamera.js +4 -4
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +4 -4
- package/XR/webXRDefaultExperience.js +4 -4
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.js +1 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/XR/webXRExperienceHelper.js +2 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +47 -0
- package/XR/webXRFeaturesManager.js +1 -1
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRInput.js +1 -1
- package/XR/webXRInput.js.map +1 -1
- package/XR/webXRInputSource.js +4 -4
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.js +1 -1
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
- package/XR/webXRRenderTargetTextureProvider.js +1 -1
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/assetContainer.d.ts +4 -4
- package/assetContainer.js +6 -6
- package/assetContainer.js.map +1 -1
- package/node.d.ts +1 -1
- package/node.js +6 -2
- package/node.js.map +1 -1
- package/package.json +46 -175
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeCameraMouseInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraMouseInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Observer, type EventState, Observable } from \"../../Misc/observable\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { type IMouseEvent, type IPointerEvent } from \"../../Events/deviceInputEvents\";\r\n/**\r\n * Manage the mouse inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraMouseInput implements ICameraInput<FreeCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\r\n\r\n /**\r\n * Defines the buttons associated with the input to handle camera move.\r\n */\r\n @serialize()\r\n public buttons = [0, 1, 2];\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the X and Y axis or how fast is the camera rotating.\r\n */\r\n @serialize()\r\n public angularSensibility = 2000.0;\r\n\r\n private _pointerInput: (p: PointerInfo, s: EventState) => void;\r\n private _onMouseMove: Nullable<(e: IMouseEvent) => any>;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n private _previousPosition: Nullable<{ x: number; y: number }> = null;\r\n\r\n /**\r\n * Observable for when a pointer move event occurs containing the move offset\r\n */\r\n public onPointerMovedObservable = new Observable<{ offsetX: number; offsetY: number }>();\r\n /**\r\n * @internal\r\n * If the camera should be rotated automatically based on pointer movement\r\n */\r\n public _allowCameraRotation = true;\r\n\r\n private _currentActiveButton: number = -1;\r\n private _activePointerId: number = -1;\r\n private _contextMenuBind: (evt: MouseEvent) => void;\r\n\r\n /**\r\n * Manage the mouse inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n * @param touchEnabled Defines if touch is enabled or not\r\n */\r\n constructor(\r\n /**\r\n * [true] Define if touch is enabled in the mouse input\r\n */\r\n public touchEnabled = true\r\n ) {}\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 const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n\r\n if (!this._pointerInput) {\r\n this._pointerInput = (p) => {\r\n const evt = <IPointerEvent>p.event;\r\n const isTouch = evt.pointerType === \"touch\";\r\n\r\n if (!this.touchEnabled && isTouch) {\r\n return;\r\n }\r\n\r\n if (p.type !== PointerEventTypes.POINTERMOVE && this.buttons.indexOf(evt.button) === -1) {\r\n return;\r\n }\r\n\r\n const srcElement = <HTMLElement>evt.target;\r\n\r\n if (p.type === PointerEventTypes.POINTERDOWN) {\r\n // If the input is touch with more than one touch OR if the input is mouse and there is already an active button, return\r\n if ((isTouch && this._activePointerId !== -1) || (!isTouch && this._currentActiveButton !== -1)) {\r\n return;\r\n }\r\n\r\n this._activePointerId = evt.pointerId;\r\n try {\r\n srcElement?.setPointerCapture(evt.pointerId);\r\n } catch (e) {\r\n //Nothing to do with the error. Execution will continue.\r\n }\r\n\r\n if (this._currentActiveButton === -1) {\r\n this._currentActiveButton = evt.button;\r\n }\r\n\r\n this._previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n // This is required to move while pointer button is down\r\n if (engine.isPointerLock && this._onMouseMove) {\r\n this._onMouseMove(p.event);\r\n }\r\n } else if (p.type === PointerEventTypes.POINTERUP) {\r\n // If input is touch with a different touch id OR if input is mouse with a different button, return\r\n if ((isTouch && this._activePointerId !== evt.pointerId) || (!isTouch && this._currentActiveButton !== evt.button)) {\r\n return;\r\n }\r\n\r\n try {\r\n srcElement?.releasePointerCapture(evt.pointerId);\r\n } catch (e) {\r\n //Nothing to do with the error.\r\n }\r\n this._currentActiveButton = -1;\r\n\r\n this._previousPosition = null;\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n this._activePointerId = -1;\r\n } else if (p.type === PointerEventTypes.POINTERMOVE && (this._activePointerId === evt.pointerId || !isTouch)) {\r\n if (engine.isPointerLock && this._onMouseMove) {\r\n this._onMouseMove(p.event);\r\n } else if (this._previousPosition) {\r\n const handednessMultiplier = this.camera._calculateHandednessMultiplier();\r\n const offsetX = (evt.clientX - this._previousPosition.x) * handednessMultiplier;\r\n const offsetY = (evt.clientY - this._previousPosition.y) * handednessMultiplier;\r\n\r\n if (this._allowCameraRotation) {\r\n this.camera.cameraRotation.y += offsetX / this.angularSensibility;\r\n this.camera.cameraRotation.x += offsetY / this.angularSensibility;\r\n }\r\n this.onPointerMovedObservable.notifyObservers({ offsetX: offsetX, offsetY: offsetY });\r\n\r\n this._previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n this._onMouseMove = (evt) => {\r\n if (!engine.isPointerLock) {\r\n return;\r\n }\r\n\r\n const handednessMultiplier = this.camera._calculateHandednessMultiplier();\r\n this.camera.cameraRotation.y += (evt.movementX * handednessMultiplier) / this.angularSensibility;\r\n this.camera.cameraRotation.x += (evt.movementY * handednessMultiplier) / this.angularSensibility;\r\n\r\n this._previousPosition = null;\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n };\r\n\r\n this._observer = this.camera\r\n .getScene()\r\n ._inputManager._addCameraPointerObserver(this._pointerInput, PointerEventTypes.POINTERDOWN | PointerEventTypes.POINTERUP | PointerEventTypes.POINTERMOVE);\r\n\r\n if (element) {\r\n this._contextMenuBind = (evt: MouseEvent) => this.onContextMenu(evt as PointerEvent);\r\n element.addEventListener(\"contextmenu\", this._contextMenuBind, false); // TODO: We need to figure out how to handle this for Native\r\n }\r\n }\r\n\r\n /**\r\n * Called on JS contextmenu event.\r\n * Override this method to provide functionality.\r\n * @param evt the context menu event\r\n */\r\n public onContextMenu(evt: PointerEvent): void {\r\n evt.preventDefault();\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\r\n if (this._contextMenuBind) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.removeEventListener(\"contextmenu\", this._contextMenuBind);\r\n }\r\n }\r\n\r\n if (this.onPointerMovedObservable) {\r\n this.onPointerMovedObservable.clear();\r\n }\r\n\r\n this._observer = null;\r\n this._onMouseMove = null;\r\n this._previousPosition = null;\r\n }\r\n\r\n this._activePointerId = -1;\r\n this._currentActiveButton = -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 \"FreeCameraMouseInput\";\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 \"mouse\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraMouseInput\"] = FreeCameraMouseInput;\r\n"]}
|
|
1
|
+
{"version":3,"file":"freeCameraMouseInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraMouseInput.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkC,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAExF,OAAO,EAAoB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG9C;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAwC7B;;;;;;;;;;OAUG;IACK,qBAAqB,CAAC,OAAe,EAAE,OAAe;QAC1D,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC5F,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,OAAO,GAAG,YAAY,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,OAAO,GAAG,YAAY,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH;IACI;;OAEG;IACI,eAAe,IAAI;QAAnB,iBAAY,GAAZ,YAAY,CAAO;QAlE9B;;WAEG;QAEI,YAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B;;WAEG;QAEI,uBAAkB,GAAG,MAAM,CAAC;QAK3B,sBAAiB,GAAuC,IAAI,CAAC;QAErE;;WAEG;QACI,6BAAwB,GAAG,IAAI,UAAU,EAAwC,CAAC;QACzF;;;WAGG;QACI,yBAAoB,GAAG,IAAI,CAAC;QAE3B,yBAAoB,GAAW,CAAC,CAAC,CAAC;QAClC,qBAAgB,GAAW,CAAC,CAAC,CAAC;QAGtC,uFAAuF;QACtE,uBAAkB,GAAoB,EAAE,CAAC;IAmCvD,CAAC;IAEJ;;;OAGG;IACI,aAAa,CAAC,gBAA0B;QAC3C,gBAAgB,GAAG,KAAK,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBACvB,MAAM,GAAG,GAAkB,CAAC,CAAC,KAAK,CAAC;gBACnC,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC;gBAE5C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,EAAE,CAAC;oBAChC,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtF,OAAO;gBACX,CAAC;gBAED,MAAM,UAAU,GAAgB,GAAG,CAAC,MAAM,CAAC;gBAE3C,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC;oBAC3C,wHAAwH;oBACxH,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9F,OAAO;oBACX,CAAC;oBAED,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC;oBACtC,IAAI,CAAC;wBACD,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,wDAAwD;oBAC5D,CAAC;oBAED,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC;oBAC3C,CAAC;oBAED,IAAI,CAAC,iBAAiB,GAAG;wBACrB,CAAC,EAAE,GAAG,CAAC,OAAO;wBACd,CAAC,EAAE,GAAG,CAAC,OAAO;qBACjB,CAAC;oBAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;wBACrB,IAAI,OAAO,EAAE,CAAC;4BACV,OAAO,CAAC,KAAK,EAAE,CAAC;wBACpB,CAAC;oBACL,CAAC;oBAED,wDAAwD;oBACxD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC5C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;gBACL,CAAC;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;oBAChD,mGAAmG;oBACnG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjH,OAAO;oBACX,CAAC;oBAED,IAAI,CAAC;wBACD,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACrD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,+BAA+B;oBACnC,CAAC;oBACD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;oBAE/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;oBACzB,CAAC;oBAED,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3G,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC5C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;yBAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAChC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAC;wBAC1E,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;wBAChF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;wBAEhF,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC5B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBACjD,CAAC;wBACD,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;wBAEtF,IAAI,CAAC,iBAAiB,GAAG;4BACrB,CAAC,EAAE,GAAG,CAAC,OAAO;4BACd,CAAC,EAAE,GAAG,CAAC,OAAO;yBACjB,CAAC;wBAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACpB,GAAG,CAAC,cAAc,EAAE,CAAC;wBACzB,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;YAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAC;YAC1E,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,GAAG,oBAAoB,EAAE,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;YAEvG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;aACvB,QAAQ,EAAE;aACV,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,WAAW,GAAG,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAE9J,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAe,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAmB,CAAC,CAAC;YACrF,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,4DAA4D;QACvI,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,GAAiB;QAClC,GAAG,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAElF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,aAAa;QAChB,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AApPU;IADN,SAAS,EAAE;qDACe;AAMpB;IADN,SAAS,EAAE;gEACuB;AAgPjC,gBAAiB,CAAC,sBAAsB,CAAC,GAAG,oBAAoB,CAAC","sourcesContent":["import { type Observer, type EventState, Observable } from \"../../Misc/observable\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { type IMouseEvent, type IPointerEvent } from \"../../Events/deviceInputEvents\";\r\nimport { type InputConditions } from \"../inputMapper\";\r\n/**\r\n * Manage the mouse inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraMouseInput implements ICameraInput<FreeCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\r\n\r\n /**\r\n * Defines the buttons associated with the input to handle camera move.\r\n */\r\n @serialize()\r\n public buttons = [0, 1, 2];\r\n\r\n /**\r\n * Defines the pointer angular sensibility along the X and Y axis or how fast is the camera rotating.\r\n */\r\n @serialize()\r\n public angularSensibility = 2000.0;\r\n\r\n private _pointerInput: (p: PointerInfo, s: EventState) => void;\r\n private _onMouseMove: Nullable<(e: IMouseEvent) => any>;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n private _previousPosition: Nullable<{ x: number; y: number }> = null;\r\n\r\n /**\r\n * Observable for when a pointer move event occurs containing the move offset\r\n */\r\n public onPointerMovedObservable = new Observable<{ offsetX: number; offsetY: number }>();\r\n /**\r\n * @internal\r\n * If the camera should be rotated automatically based on pointer movement\r\n */\r\n public _allowCameraRotation = true;\r\n\r\n private _currentActiveButton: number = -1;\r\n private _activePointerId: number = -1;\r\n private _contextMenuBind: (evt: MouseEvent) => void;\r\n\r\n /** Reused conditions object for `resolveInteraction` to avoid per-move allocations. */\r\n private readonly _pointerConditions: InputConditions = {};\r\n\r\n /**\r\n * Applies a pointer-drag delta as camera rotation, but only if the camera's configurable\r\n * input map resolves the current pointer interaction to \"rotate\". The map is consulted with\r\n * the currently active mouse button so consumers can remap or disable pointer-driven rotation.\r\n * The applied scale comes from the resolved entry's `sensitivity`/`sensitivityX`/`sensitivityY`,\r\n * falling back to the legacy `angularSensibility` for backward compatibility. The rotation is\r\n * still written to `camera.cameraRotation` (not the movement accumulators) so existing code that\r\n * reads `cameraRotation` immediately after a pointer event keeps working.\r\n * @param offsetX Horizontal pointer delta (already handedness-adjusted).\r\n * @param offsetY Vertical pointer delta (already handedness-adjusted).\r\n */\r\n private _applyPointerRotation(offsetX: number, offsetY: number): void {\r\n this._pointerConditions.button = this._currentActiveButton;\r\n const entry = this.camera.movement.input.resolveInteraction(\"pointer\", this._pointerConditions);\r\n if (!entry || entry.interaction !== \"rotate\") {\r\n return;\r\n }\r\n const sensitivityX = entry.sensitivityX ?? entry.sensitivity ?? 1 / this.angularSensibility;\r\n const sensitivityY = entry.sensitivityY ?? entry.sensitivity ?? 1 / this.angularSensibility;\r\n this.camera.cameraRotation.y += offsetX * sensitivityX;\r\n this.camera.cameraRotation.x += offsetY * sensitivityY;\r\n }\r\n\r\n /**\r\n * Manage the mouse inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n * @param touchEnabled Defines if touch is enabled or not\r\n */\r\n constructor(\r\n /**\r\n * [true] Define if touch is enabled in the mouse input\r\n */\r\n public touchEnabled = true\r\n ) {}\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 const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n\r\n if (!this._pointerInput) {\r\n this._pointerInput = (p) => {\r\n const evt = <IPointerEvent>p.event;\r\n const isTouch = evt.pointerType === \"touch\";\r\n\r\n if (!this.touchEnabled && isTouch) {\r\n return;\r\n }\r\n\r\n if (p.type !== PointerEventTypes.POINTERMOVE && this.buttons.indexOf(evt.button) === -1) {\r\n return;\r\n }\r\n\r\n const srcElement = <HTMLElement>evt.target;\r\n\r\n if (p.type === PointerEventTypes.POINTERDOWN) {\r\n // If the input is touch with more than one touch OR if the input is mouse and there is already an active button, return\r\n if ((isTouch && this._activePointerId !== -1) || (!isTouch && this._currentActiveButton !== -1)) {\r\n return;\r\n }\r\n\r\n this._activePointerId = evt.pointerId;\r\n try {\r\n srcElement?.setPointerCapture(evt.pointerId);\r\n } catch (e) {\r\n //Nothing to do with the error. Execution will continue.\r\n }\r\n\r\n if (this._currentActiveButton === -1) {\r\n this._currentActiveButton = evt.button;\r\n }\r\n\r\n this._previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n // This is required to move while pointer button is down\r\n if (engine.isPointerLock && this._onMouseMove) {\r\n this._onMouseMove(p.event);\r\n }\r\n } else if (p.type === PointerEventTypes.POINTERUP) {\r\n // If input is touch with a different touch id OR if input is mouse with a different button, return\r\n if ((isTouch && this._activePointerId !== evt.pointerId) || (!isTouch && this._currentActiveButton !== evt.button)) {\r\n return;\r\n }\r\n\r\n try {\r\n srcElement?.releasePointerCapture(evt.pointerId);\r\n } catch (e) {\r\n //Nothing to do with the error.\r\n }\r\n this._currentActiveButton = -1;\r\n\r\n this._previousPosition = null;\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n this._activePointerId = -1;\r\n } else if (p.type === PointerEventTypes.POINTERMOVE && (this._activePointerId === evt.pointerId || !isTouch)) {\r\n if (engine.isPointerLock && this._onMouseMove) {\r\n this._onMouseMove(p.event);\r\n } else if (this._previousPosition) {\r\n const handednessMultiplier = this.camera._calculateHandednessMultiplier();\r\n const offsetX = (evt.clientX - this._previousPosition.x) * handednessMultiplier;\r\n const offsetY = (evt.clientY - this._previousPosition.y) * handednessMultiplier;\r\n\r\n if (this._allowCameraRotation) {\r\n this._applyPointerRotation(offsetX, offsetY);\r\n }\r\n this.onPointerMovedObservable.notifyObservers({ offsetX: offsetX, offsetY: offsetY });\r\n\r\n this._previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n this._onMouseMove = (evt) => {\r\n if (!engine.isPointerLock) {\r\n return;\r\n }\r\n\r\n const handednessMultiplier = this.camera._calculateHandednessMultiplier();\r\n this._applyPointerRotation(evt.movementX * handednessMultiplier, evt.movementY * handednessMultiplier);\r\n\r\n this._previousPosition = null;\r\n\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n };\r\n\r\n this._observer = this.camera\r\n .getScene()\r\n ._inputManager._addCameraPointerObserver(this._pointerInput, PointerEventTypes.POINTERDOWN | PointerEventTypes.POINTERUP | PointerEventTypes.POINTERMOVE);\r\n\r\n if (element) {\r\n this._contextMenuBind = (evt: MouseEvent) => this.onContextMenu(evt as PointerEvent);\r\n element.addEventListener(\"contextmenu\", this._contextMenuBind, false); // TODO: We need to figure out how to handle this for Native\r\n }\r\n }\r\n\r\n /**\r\n * Called on JS contextmenu event.\r\n * Override this method to provide functionality.\r\n * @param evt the context menu event\r\n */\r\n public onContextMenu(evt: PointerEvent): void {\r\n evt.preventDefault();\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\r\n if (this._contextMenuBind) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.removeEventListener(\"contextmenu\", this._contextMenuBind);\r\n }\r\n }\r\n\r\n if (this.onPointerMovedObservable) {\r\n this.onPointerMovedObservable.clear();\r\n }\r\n\r\n this._observer = null;\r\n this._onMouseMove = null;\r\n this._previousPosition = null;\r\n }\r\n\r\n this._activePointerId = -1;\r\n this._currentActiveButton = -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 \"FreeCameraMouseInput\";\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 \"mouse\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraMouseInput\"] = FreeCameraMouseInput;\r\n"]}
|
|
@@ -2,7 +2,7 @@ import { __decorate } from "../../tslib.es6.js";
|
|
|
2
2
|
import { serialize } from "../../Misc/decorators.js";
|
|
3
3
|
import { CameraInputTypes } from "../../Cameras/cameraInputsManager.js";
|
|
4
4
|
import { BaseCameraMouseWheelInput } from "../../Cameras/Inputs/BaseCameraMouseWheelInput.js";
|
|
5
|
-
import { Matrix, Vector3 } from "../../Maths/math.vector.js";
|
|
5
|
+
import { Matrix, Vector3 } from "../../Maths/math.vector.pure.js";
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
7
7
|
var _CameraProperty;
|
|
8
8
|
(function (_CameraProperty) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeCameraMouseWheelInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraMouseWheelInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { BaseCameraMouseWheelInput } from \"../../Cameras/Inputs/BaseCameraMouseWheelInput\";\r\nimport { Matrix, Vector3 } from \"../../Maths/math.vector\";\r\nimport { Coordinate } from \"../../Maths/math.axis\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nenum _CameraProperty {\r\n MoveRelative,\r\n RotateRelative,\r\n MoveScene,\r\n}\r\n\r\n/**\r\n * Manage the mouse wheel inputs to control a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraMouseWheelInput extends BaseCameraMouseWheelInput {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\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 \"FreeCameraMouseWheelInput\";\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's X axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.MoveRelative;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's Y axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.MoveRelative;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's Z axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.MoveRelative;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's X axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.RotateRelative;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's Y axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.RotateRelative;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's Z axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.RotateRelative;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's X axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.MoveScene;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's Y axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.MoveScene;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's Z axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.MoveScene;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Called for each rendered frame.\r\n */\r\n public override checkInputs(): void {\r\n if (this._wheelDeltaX === 0 && this._wheelDeltaY === 0 && this._wheelDeltaZ == 0) {\r\n return;\r\n }\r\n\r\n // Clear the camera properties that we might be updating.\r\n this._moveRelative.setAll(0);\r\n this._rotateRelative.setAll(0);\r\n this._moveScene.setAll(0);\r\n\r\n // Set the camera properties that are to be updated.\r\n this._updateCamera();\r\n\r\n if (this.camera.getScene().useRightHandedSystem) {\r\n // TODO: Does this need done for worldUpdate too?\r\n this._moveRelative.z *= -1;\r\n }\r\n\r\n // Convert updates relative to camera to world position update.\r\n const cameraTransformMatrix = Matrix.Zero();\r\n this.camera.getViewMatrix().invertToRef(cameraTransformMatrix);\r\n\r\n const transformedDirection = Vector3.Zero();\r\n Vector3.TransformNormalToRef(this._moveRelative, cameraTransformMatrix, transformedDirection);\r\n\r\n // Apply updates to camera position.\r\n this.camera.cameraRotation.x += this._rotateRelative.x / 200;\r\n this.camera.cameraRotation.y += this._rotateRelative.y / 200;\r\n this.camera.cameraDirection.addInPlace(transformedDirection);\r\n this.camera.cameraDirection.addInPlace(this._moveScene);\r\n\r\n // Call the base class implementation to handle observers and do cleanup.\r\n super.checkInputs();\r\n }\r\n\r\n private _moveRelative = Vector3.Zero();\r\n private _rotateRelative = Vector3.Zero();\r\n private _moveScene = Vector3.Zero();\r\n\r\n /**\r\n * These are set to the desired default behaviour.\r\n */\r\n private _wheelXAction: Nullable<_CameraProperty> = _CameraProperty.MoveRelative;\r\n private _wheelXActionCoordinate: Nullable<Coordinate> = Coordinate.X;\r\n private _wheelYAction: Nullable<_CameraProperty> = _CameraProperty.MoveRelative;\r\n private _wheelYActionCoordinate: Nullable<Coordinate> = Coordinate.Z;\r\n private _wheelZAction: Nullable<_CameraProperty> = null;\r\n private _wheelZActionCoordinate: Nullable<Coordinate> = null;\r\n\r\n /**\r\n * Update the camera according to any configured properties for the 3\r\n * mouse-wheel axis.\r\n */\r\n private _updateCamera(): void {\r\n // Do the camera updates for each of the 3 touch-wheel axis.\r\n this._updateCameraProperty(this._wheelDeltaX, this._wheelXAction, this._wheelXActionCoordinate);\r\n this._updateCameraProperty(this._wheelDeltaY, this._wheelYAction, this._wheelYActionCoordinate);\r\n this._updateCameraProperty(this._wheelDeltaZ, this._wheelZAction, this._wheelZActionCoordinate);\r\n }\r\n\r\n /**\r\n * Update one property of the camera.\r\n * @param value\r\n * @param cameraProperty\r\n * @param coordinate\r\n */\r\n private _updateCameraProperty(\r\n /* Mouse-wheel delta. */\r\n value: number,\r\n /* Camera property to be changed. */\r\n cameraProperty: Nullable<_CameraProperty>,\r\n /* Axis of Camera property to be changed. */\r\n coordinate: Nullable<Coordinate>\r\n ): void {\r\n if (value === 0) {\r\n // Mouse wheel has not moved.\r\n return;\r\n }\r\n if (cameraProperty === null || coordinate === null) {\r\n // Mouse wheel axis not configured.\r\n return;\r\n }\r\n\r\n let action = null;\r\n switch (cameraProperty) {\r\n case _CameraProperty.MoveRelative:\r\n action = this._moveRelative;\r\n break;\r\n case _CameraProperty.RotateRelative:\r\n action = this._rotateRelative;\r\n break;\r\n case _CameraProperty.MoveScene:\r\n action = this._moveScene;\r\n break;\r\n }\r\n\r\n switch (coordinate) {\r\n case Coordinate.X:\r\n action.set(value, 0, 0);\r\n break;\r\n case Coordinate.Y:\r\n action.set(0, value, 0);\r\n break;\r\n case Coordinate.Z:\r\n action.set(0, 0, value);\r\n break;\r\n }\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraMouseWheelInput\"] = FreeCameraMouseWheelInput;\r\n"]}
|
|
1
|
+
{"version":3,"file":"freeCameraMouseWheelInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraMouseWheelInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { BaseCameraMouseWheelInput } from \"../../Cameras/Inputs/BaseCameraMouseWheelInput\";\r\nimport { Matrix, Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { Coordinate } from \"../../Maths/math.axis\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nenum _CameraProperty {\r\n MoveRelative,\r\n RotateRelative,\r\n MoveScene,\r\n}\r\n\r\n/**\r\n * Manage the mouse wheel inputs to control a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraMouseWheelInput extends BaseCameraMouseWheelInput {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\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 \"FreeCameraMouseWheelInput\";\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's X axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.MoveRelative;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's Y axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.MoveRelative;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to camera's orientation) the mouse\r\n * wheel's Z axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZMoveRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.MoveRelative) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.MoveRelative;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to camera's orientation) the\r\n * mouse wheel's Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZMoveRelative(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.MoveRelative) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's X axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.RotateRelative;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's Y axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.RotateRelative;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which rotation axis (relative to camera's orientation) the mouse\r\n * wheel's Z axis controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZRotateRelative(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.RotateRelative) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.RotateRelative;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured rotation axis (relative to camera's orientation) the\r\n * mouse wheel's Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZRotateRelative(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.RotateRelative) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's X axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelXMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelXAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelXAction.\r\n return;\r\n }\r\n this._wheelXAction = _CameraProperty.MoveScene;\r\n this._wheelXActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * X axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelXMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelXAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelXActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's Y axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelYMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelYAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelYAction.\r\n return;\r\n }\r\n this._wheelYAction = _CameraProperty.MoveScene;\r\n this._wheelYActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * Y axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelYMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelYAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelYActionCoordinate;\r\n }\r\n\r\n /**\r\n * Set which movement axis (relative to the scene) the mouse wheel's Z axis\r\n * controls.\r\n * @param axis The axis to be moved. Set null to clear.\r\n */\r\n @serialize()\r\n public set wheelZMoveScene(axis: Nullable<Coordinate>) {\r\n if (axis === null && this._wheelZAction !== _CameraProperty.MoveScene) {\r\n // Attempting to clear different _wheelZAction.\r\n return;\r\n }\r\n this._wheelZAction = _CameraProperty.MoveScene;\r\n this._wheelZActionCoordinate = axis;\r\n }\r\n\r\n /**\r\n * Get the configured movement axis (relative to the scene) the mouse wheel's\r\n * Z axis controls.\r\n * @returns The configured axis or null if none.\r\n */\r\n public get wheelZMoveScene(): Nullable<Coordinate> {\r\n if (this._wheelZAction !== _CameraProperty.MoveScene) {\r\n return null;\r\n }\r\n return this._wheelZActionCoordinate;\r\n }\r\n\r\n /**\r\n * Called for each rendered frame.\r\n */\r\n public override checkInputs(): void {\r\n if (this._wheelDeltaX === 0 && this._wheelDeltaY === 0 && this._wheelDeltaZ == 0) {\r\n return;\r\n }\r\n\r\n // Clear the camera properties that we might be updating.\r\n this._moveRelative.setAll(0);\r\n this._rotateRelative.setAll(0);\r\n this._moveScene.setAll(0);\r\n\r\n // Set the camera properties that are to be updated.\r\n this._updateCamera();\r\n\r\n if (this.camera.getScene().useRightHandedSystem) {\r\n // TODO: Does this need done for worldUpdate too?\r\n this._moveRelative.z *= -1;\r\n }\r\n\r\n // Convert updates relative to camera to world position update.\r\n const cameraTransformMatrix = Matrix.Zero();\r\n this.camera.getViewMatrix().invertToRef(cameraTransformMatrix);\r\n\r\n const transformedDirection = Vector3.Zero();\r\n Vector3.TransformNormalToRef(this._moveRelative, cameraTransformMatrix, transformedDirection);\r\n\r\n // Apply updates to camera position.\r\n this.camera.cameraRotation.x += this._rotateRelative.x / 200;\r\n this.camera.cameraRotation.y += this._rotateRelative.y / 200;\r\n this.camera.cameraDirection.addInPlace(transformedDirection);\r\n this.camera.cameraDirection.addInPlace(this._moveScene);\r\n\r\n // Call the base class implementation to handle observers and do cleanup.\r\n super.checkInputs();\r\n }\r\n\r\n private _moveRelative = Vector3.Zero();\r\n private _rotateRelative = Vector3.Zero();\r\n private _moveScene = Vector3.Zero();\r\n\r\n /**\r\n * These are set to the desired default behaviour.\r\n */\r\n private _wheelXAction: Nullable<_CameraProperty> = _CameraProperty.MoveRelative;\r\n private _wheelXActionCoordinate: Nullable<Coordinate> = Coordinate.X;\r\n private _wheelYAction: Nullable<_CameraProperty> = _CameraProperty.MoveRelative;\r\n private _wheelYActionCoordinate: Nullable<Coordinate> = Coordinate.Z;\r\n private _wheelZAction: Nullable<_CameraProperty> = null;\r\n private _wheelZActionCoordinate: Nullable<Coordinate> = null;\r\n\r\n /**\r\n * Update the camera according to any configured properties for the 3\r\n * mouse-wheel axis.\r\n */\r\n private _updateCamera(): void {\r\n // Do the camera updates for each of the 3 touch-wheel axis.\r\n this._updateCameraProperty(this._wheelDeltaX, this._wheelXAction, this._wheelXActionCoordinate);\r\n this._updateCameraProperty(this._wheelDeltaY, this._wheelYAction, this._wheelYActionCoordinate);\r\n this._updateCameraProperty(this._wheelDeltaZ, this._wheelZAction, this._wheelZActionCoordinate);\r\n }\r\n\r\n /**\r\n * Update one property of the camera.\r\n * @param value\r\n * @param cameraProperty\r\n * @param coordinate\r\n */\r\n private _updateCameraProperty(\r\n /* Mouse-wheel delta. */\r\n value: number,\r\n /* Camera property to be changed. */\r\n cameraProperty: Nullable<_CameraProperty>,\r\n /* Axis of Camera property to be changed. */\r\n coordinate: Nullable<Coordinate>\r\n ): void {\r\n if (value === 0) {\r\n // Mouse wheel has not moved.\r\n return;\r\n }\r\n if (cameraProperty === null || coordinate === null) {\r\n // Mouse wheel axis not configured.\r\n return;\r\n }\r\n\r\n let action = null;\r\n switch (cameraProperty) {\r\n case _CameraProperty.MoveRelative:\r\n action = this._moveRelative;\r\n break;\r\n case _CameraProperty.RotateRelative:\r\n action = this._rotateRelative;\r\n break;\r\n case _CameraProperty.MoveScene:\r\n action = this._moveScene;\r\n break;\r\n }\r\n\r\n switch (coordinate) {\r\n case Coordinate.X:\r\n action.set(value, 0, 0);\r\n break;\r\n case Coordinate.Y:\r\n action.set(0, value, 0);\r\n break;\r\n case Coordinate.Z:\r\n action.set(0, 0, value);\r\n break;\r\n }\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraMouseWheelInput\"] = FreeCameraMouseWheelInput;\r\n"]}
|
|
@@ -2,8 +2,8 @@ import { __decorate } from "../../tslib.es6.js";
|
|
|
2
2
|
import { serialize } from "../../Misc/decorators.js";
|
|
3
3
|
import { CameraInputTypes } from "../../Cameras/cameraInputsManager.js";
|
|
4
4
|
import { PointerEventTypes } from "../../Events/pointerEvents.js";
|
|
5
|
-
import { Matrix, TmpVectors, Vector3 } from "../../Maths/math.vector.js";
|
|
6
|
-
import { Tools } from "../../Misc/tools.js";
|
|
5
|
+
import { Matrix, TmpVectors, Vector3 } from "../../Maths/math.vector.pure.js";
|
|
6
|
+
import { Tools } from "../../Misc/tools.pure.js";
|
|
7
7
|
/**
|
|
8
8
|
* Manage the touch inputs to control the movement of a free camera.
|
|
9
9
|
* @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs
|
|
@@ -147,16 +147,27 @@ export class FreeCameraTouchInput {
|
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
const camera = this.camera;
|
|
150
|
+
// Touch look (yaw/pitch) is gated on touch→rotate and the forward drag-move on
|
|
151
|
+
// touch→translate. Removing an entry disables that touch behavior. An entry's optional
|
|
152
|
+
// `sensitivity` replaces the legacy 1/touchAngularSensibility (rotate) or
|
|
153
|
+
// 1/touchMoveSensibility (translate) scale factor.
|
|
154
|
+
const input = camera.movement.input;
|
|
155
|
+
const rotateEntry = input.getEntry("touch", "rotate");
|
|
156
|
+
const translateEntry = input.getEntry("touch", "translate");
|
|
150
157
|
const handednessMultiplier = camera._calculateHandednessMultiplier();
|
|
151
|
-
camera.cameraRotation.y = (this._offsetX * handednessMultiplier) / this.touchAngularSensibility;
|
|
152
158
|
const rotateCamera = (this.singleFingerRotate && this._pointerPressed.length === 1) || (!this.singleFingerRotate && this._pointerPressed.length > 1);
|
|
153
|
-
if (
|
|
154
|
-
|
|
159
|
+
if (rotateEntry) {
|
|
160
|
+
const rotateSensitivity = rotateEntry.sensitivity ?? 1 / this.touchAngularSensibility;
|
|
161
|
+
camera.cameraRotation.y = this._offsetX * handednessMultiplier * rotateSensitivity;
|
|
162
|
+
if (rotateCamera) {
|
|
163
|
+
camera.cameraRotation.x = -(this._offsetY * handednessMultiplier) * rotateSensitivity;
|
|
164
|
+
}
|
|
155
165
|
}
|
|
156
|
-
|
|
166
|
+
if (!rotateCamera && translateEntry) {
|
|
157
167
|
const speed = camera._computeLocalCameraSpeed();
|
|
168
|
+
const moveSensitivity = translateEntry.sensitivity ?? (this.touchMoveSensibility !== 0 ? 1 / this.touchMoveSensibility : 0);
|
|
158
169
|
const direction = TmpVectors.Vector3[0];
|
|
159
|
-
direction.copyFromFloats(0, 0,
|
|
170
|
+
direction.copyFromFloats(0, 0, speed * this._offsetY * moveSensitivity);
|
|
160
171
|
Matrix.RotationYawPitchRollToRef(camera.rotation.y, camera.rotation.x, 0, camera._cameraRotationMatrix);
|
|
161
172
|
Vector3.TransformCoordinatesToRef(direction, camera._cameraRotationMatrix, direction);
|
|
162
173
|
camera.cameraDirection.addInPlace(direction);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freeCameraTouchInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraTouchInput.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAExF,OAAO,EAAoB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAkC7B;;;;OAIG;IACH;IACI;;OAEG;IACI,aAAa,KAAK;QAAlB,eAAU,GAAV,UAAU,CAAQ;QArC7B;;;WAGG;QAEI,4BAAuB,GAAW,QAAQ,CAAC;QAElD;;;WAGG;QAEI,yBAAoB,GAAW,KAAK,CAAC;QAE5C;;WAEG;QACI,uBAAkB,GAAY,KAAK,CAAC;QAEnC,aAAQ,GAAqB,IAAI,CAAC;QAClC,aAAQ,GAAqB,IAAI,CAAC;QAElC,oBAAe,GAAG,IAAI,KAAK,EAAU,CAAC;QAiB1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,gBAA0B;QAC3C,gBAAgB,GAAG,KAAK,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,gBAAgB,GAAuC,IAAI,CAAC;QAEhE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACzB,CAAC,CAAC;YAEF,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;gBACvB,MAAM,GAAG,GAAkB,CAAC,CAAC,KAAK,CAAC;gBAEnC,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;gBAE/G,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;oBACnC,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC;oBAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;oBACzB,CAAC;oBAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAEzC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACpC,OAAO;oBACX,CAAC;oBAED,gBAAgB,GAAG;wBACf,CAAC,EAAE,GAAG,CAAC,OAAO;wBACd,CAAC,EAAE,GAAG,CAAC,OAAO;qBACjB,CAAC;gBACN,CAAC;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;oBACzB,CAAC;oBAED,MAAM,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAElE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;wBACf,OAAO;oBACX,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAEtC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACb,OAAO;oBACX,CAAC;oBACD,gBAAgB,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACzB,CAAC;qBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC;oBAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,GAAG,CAAC,cAAc,EAAE,CAAC;oBACzB,CAAC;oBAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACpB,OAAO;oBACX,CAAC;oBAED,MAAM,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAElE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACb,OAAO;oBACX,CAAC;oBAED,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;aACvB,QAAQ,EAAE;aACV,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,WAAW,GAAG,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAE9J,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,WAAW;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,EAAE,CAAC;QACrE,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAEhG,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErJ,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACrG,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1H,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACxG,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;YACtF,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,aAAa;QAChB,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAtMU;IADN,SAAS,EAAE;qEACsC;AAO3C;IADN,SAAS,EAAE;kEACgC;AAiM1C,gBAAiB,CAAC,sBAAsB,CAAC,GAAG,oBAAoB,CAAC","sourcesContent":["import { serialize } from \"../../Misc/decorators\";\r\nimport { type Observer, type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { Matrix, TmpVectors, Vector3 } from \"../../Maths/math.vector\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { type IPointerEvent } from \"../../Events/deviceInputEvents\";\r\n/**\r\n * Manage the touch inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraTouchInput implements ICameraInput<FreeCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\r\n\r\n /**\r\n * Defines the touch sensibility for rotation.\r\n * The lower the faster.\r\n */\r\n @serialize()\r\n public touchAngularSensibility: number = 200000.0;\r\n\r\n /**\r\n * Defines the touch sensibility for move.\r\n * The lower the faster.\r\n */\r\n @serialize()\r\n public touchMoveSensibility: number = 250.0;\r\n\r\n /**\r\n * Swap touch actions so that one touch is used for rotation and multiple for movement\r\n */\r\n public singleFingerRotate: boolean = false;\r\n\r\n private _offsetX: Nullable<number> = null;\r\n private _offsetY: Nullable<number> = null;\r\n\r\n private _pointerPressed = new Array<number>();\r\n private _pointerInput?: (p: PointerInfo, s: EventState) => void;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n private _onLostFocus: Nullable<(e: FocusEvent) => any>;\r\n private _isSafari: boolean;\r\n\r\n /**\r\n * Manage the touch inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n * @param allowMouse Defines if mouse events can be treated as touch events\r\n */\r\n constructor(\r\n /**\r\n * [false] Define if mouse events can be treated as touch events\r\n */\r\n public allowMouse = false\r\n ) {\r\n this._isSafari = Tools.IsSafari();\r\n }\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 let previousPosition: Nullable<{ x: number; y: number }> = null;\r\n\r\n if (this._pointerInput === undefined) {\r\n this._onLostFocus = () => {\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n };\r\n\r\n this._pointerInput = (p) => {\r\n const evt = <IPointerEvent>p.event;\r\n\r\n const isMouseEvent = evt.pointerType === \"mouse\" || (this._isSafari && typeof evt.pointerType === \"undefined\");\r\n\r\n if (!this.allowMouse && isMouseEvent) {\r\n return;\r\n }\r\n\r\n if (p.type === PointerEventTypes.POINTERDOWN) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n this._pointerPressed.push(evt.pointerId);\r\n\r\n if (this._pointerPressed.length !== 1) {\r\n return;\r\n }\r\n\r\n previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n } else if (p.type === PointerEventTypes.POINTERUP) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n const index: number = this._pointerPressed.indexOf(evt.pointerId);\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n this._pointerPressed.splice(index, 1);\r\n\r\n if (index != 0) {\r\n return;\r\n }\r\n previousPosition = null;\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n } else if (p.type === PointerEventTypes.POINTERMOVE) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n if (!previousPosition) {\r\n return;\r\n }\r\n\r\n const index: number = this._pointerPressed.indexOf(evt.pointerId);\r\n\r\n if (index != 0) {\r\n return;\r\n }\r\n\r\n this._offsetX = evt.clientX - previousPosition.x;\r\n this._offsetY = -(evt.clientY - previousPosition.y);\r\n }\r\n };\r\n }\r\n\r\n this._observer = this.camera\r\n .getScene()\r\n ._inputManager._addCameraPointerObserver(this._pointerInput, PointerEventTypes.POINTERDOWN | PointerEventTypes.POINTERUP | PointerEventTypes.POINTERMOVE);\r\n\r\n if (this._onLostFocus) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.addEventListener(\"blur\", this._onLostFocus);\r\n }\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 if (this._pointerInput) {\r\n if (this._observer) {\r\n this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer);\r\n this._observer = null;\r\n }\r\n\r\n if (this._onLostFocus) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.removeEventListener(\"blur\", this._onLostFocus);\r\n }\r\n\r\n this._onLostFocus = null;\r\n }\r\n this._pointerPressed.length = 0;\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n }\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 (this._offsetX === null || this._offsetY === null) {\r\n return;\r\n }\r\n if (this._offsetX === 0 && this._offsetY === 0) {\r\n return;\r\n }\r\n\r\n const camera = this.camera;\r\n const handednessMultiplier = camera._calculateHandednessMultiplier();\r\n camera.cameraRotation.y = (this._offsetX * handednessMultiplier) / this.touchAngularSensibility;\r\n\r\n const rotateCamera = (this.singleFingerRotate && this._pointerPressed.length === 1) || (!this.singleFingerRotate && this._pointerPressed.length > 1);\r\n\r\n if (rotateCamera) {\r\n camera.cameraRotation.x = -(this._offsetY * handednessMultiplier) / this.touchAngularSensibility;\r\n } else {\r\n const speed = camera._computeLocalCameraSpeed();\r\n const direction = TmpVectors.Vector3[0];\r\n direction.copyFromFloats(0, 0, this.touchMoveSensibility !== 0 ? (speed * this._offsetY) / this.touchMoveSensibility : 0);\r\n\r\n Matrix.RotationYawPitchRollToRef(camera.rotation.y, camera.rotation.x, 0, camera._cameraRotationMatrix);\r\n Vector3.TransformCoordinatesToRef(direction, camera._cameraRotationMatrix, direction);\r\n camera.cameraDirection.addInPlace(direction);\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 \"FreeCameraTouchInput\";\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 \"touch\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraTouchInput\"] = FreeCameraTouchInput;\r\n"]}
|
|
1
|
+
{"version":3,"file":"freeCameraTouchInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/freeCameraTouchInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"../../Misc/decorators\";\r\nimport { type Observer, type EventState } from \"../../Misc/observable\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../../Cameras/cameraInputsManager\";\r\nimport { type FreeCamera } from \"../../Cameras/freeCamera\";\r\nimport { type PointerInfo, PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { Matrix, TmpVectors, Vector3 } from \"../../Maths/math.vector.pure\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { type IPointerEvent } from \"../../Events/deviceInputEvents\";\r\n/**\r\n * Manage the touch inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class FreeCameraTouchInput implements ICameraInput<FreeCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: FreeCamera;\r\n\r\n /**\r\n * Defines the touch sensibility for rotation.\r\n * The lower the faster.\r\n */\r\n @serialize()\r\n public touchAngularSensibility: number = 200000.0;\r\n\r\n /**\r\n * Defines the touch sensibility for move.\r\n * The lower the faster.\r\n */\r\n @serialize()\r\n public touchMoveSensibility: number = 250.0;\r\n\r\n /**\r\n * Swap touch actions so that one touch is used for rotation and multiple for movement\r\n */\r\n public singleFingerRotate: boolean = false;\r\n\r\n private _offsetX: Nullable<number> = null;\r\n private _offsetY: Nullable<number> = null;\r\n\r\n private _pointerPressed = new Array<number>();\r\n private _pointerInput?: (p: PointerInfo, s: EventState) => void;\r\n private _observer: Nullable<Observer<PointerInfo>>;\r\n private _onLostFocus: Nullable<(e: FocusEvent) => any>;\r\n private _isSafari: boolean;\r\n\r\n /**\r\n * Manage the touch inputs to control the movement of a free camera.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n * @param allowMouse Defines if mouse events can be treated as touch events\r\n */\r\n constructor(\r\n /**\r\n * [false] Define if mouse events can be treated as touch events\r\n */\r\n public allowMouse = false\r\n ) {\r\n this._isSafari = Tools.IsSafari();\r\n }\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 let previousPosition: Nullable<{ x: number; y: number }> = null;\r\n\r\n if (this._pointerInput === undefined) {\r\n this._onLostFocus = () => {\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n };\r\n\r\n this._pointerInput = (p) => {\r\n const evt = <IPointerEvent>p.event;\r\n\r\n const isMouseEvent = evt.pointerType === \"mouse\" || (this._isSafari && typeof evt.pointerType === \"undefined\");\r\n\r\n if (!this.allowMouse && isMouseEvent) {\r\n return;\r\n }\r\n\r\n if (p.type === PointerEventTypes.POINTERDOWN) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n this._pointerPressed.push(evt.pointerId);\r\n\r\n if (this._pointerPressed.length !== 1) {\r\n return;\r\n }\r\n\r\n previousPosition = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n } else if (p.type === PointerEventTypes.POINTERUP) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n const index: number = this._pointerPressed.indexOf(evt.pointerId);\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n this._pointerPressed.splice(index, 1);\r\n\r\n if (index != 0) {\r\n return;\r\n }\r\n previousPosition = null;\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n } else if (p.type === PointerEventTypes.POINTERMOVE) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n\r\n if (!previousPosition) {\r\n return;\r\n }\r\n\r\n const index: number = this._pointerPressed.indexOf(evt.pointerId);\r\n\r\n if (index != 0) {\r\n return;\r\n }\r\n\r\n this._offsetX = evt.clientX - previousPosition.x;\r\n this._offsetY = -(evt.clientY - previousPosition.y);\r\n }\r\n };\r\n }\r\n\r\n this._observer = this.camera\r\n .getScene()\r\n ._inputManager._addCameraPointerObserver(this._pointerInput, PointerEventTypes.POINTERDOWN | PointerEventTypes.POINTERUP | PointerEventTypes.POINTERMOVE);\r\n\r\n if (this._onLostFocus) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.addEventListener(\"blur\", this._onLostFocus);\r\n }\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 if (this._pointerInput) {\r\n if (this._observer) {\r\n this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer);\r\n this._observer = null;\r\n }\r\n\r\n if (this._onLostFocus) {\r\n const engine = this.camera.getEngine();\r\n const element = engine.getInputElement();\r\n if (element) {\r\n element.removeEventListener(\"blur\", this._onLostFocus);\r\n }\r\n\r\n this._onLostFocus = null;\r\n }\r\n this._pointerPressed.length = 0;\r\n this._offsetX = null;\r\n this._offsetY = null;\r\n }\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 (this._offsetX === null || this._offsetY === null) {\r\n return;\r\n }\r\n if (this._offsetX === 0 && this._offsetY === 0) {\r\n return;\r\n }\r\n\r\n const camera = this.camera;\r\n // Touch look (yaw/pitch) is gated on touch→rotate and the forward drag-move on\r\n // touch→translate. Removing an entry disables that touch behavior. An entry's optional\r\n // `sensitivity` replaces the legacy 1/touchAngularSensibility (rotate) or\r\n // 1/touchMoveSensibility (translate) scale factor.\r\n const input = camera.movement.input;\r\n const rotateEntry = input.getEntry(\"touch\", \"rotate\");\r\n const translateEntry = input.getEntry(\"touch\", \"translate\");\r\n const handednessMultiplier = camera._calculateHandednessMultiplier();\r\n\r\n const rotateCamera = (this.singleFingerRotate && this._pointerPressed.length === 1) || (!this.singleFingerRotate && this._pointerPressed.length > 1);\r\n\r\n if (rotateEntry) {\r\n const rotateSensitivity = rotateEntry.sensitivity ?? 1 / this.touchAngularSensibility;\r\n camera.cameraRotation.y = this._offsetX * handednessMultiplier * rotateSensitivity;\r\n if (rotateCamera) {\r\n camera.cameraRotation.x = -(this._offsetY * handednessMultiplier) * rotateSensitivity;\r\n }\r\n }\r\n\r\n if (!rotateCamera && translateEntry) {\r\n const speed = camera._computeLocalCameraSpeed();\r\n const moveSensitivity = translateEntry.sensitivity ?? (this.touchMoveSensibility !== 0 ? 1 / this.touchMoveSensibility : 0);\r\n const direction = TmpVectors.Vector3[0];\r\n direction.copyFromFloats(0, 0, speed * this._offsetY * moveSensitivity);\r\n\r\n Matrix.RotationYawPitchRollToRef(camera.rotation.y, camera.rotation.x, 0, camera._cameraRotationMatrix);\r\n Vector3.TransformCoordinatesToRef(direction, camera._cameraRotationMatrix, direction);\r\n camera.cameraDirection.addInPlace(direction);\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 \"FreeCameraTouchInput\";\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 \"touch\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"FreeCameraTouchInput\"] = FreeCameraTouchInput;\r\n"]}
|
|
@@ -2,7 +2,7 @@ import { __decorate } from "../../tslib.es6.js";
|
|
|
2
2
|
import { serialize } from "../../Misc/decorators.js";
|
|
3
3
|
import { CameraInputTypes } from "../cameraInputsManager.js";
|
|
4
4
|
import { KeyboardEventTypes } from "../../Events/keyboardEvents.js";
|
|
5
|
-
import { Tools } from "../../Misc/tools.js";
|
|
5
|
+
import { Tools } from "../../Misc/tools.pure.js";
|
|
6
6
|
/**
|
|
7
7
|
* Manage the keyboard inputs to control the movement of a geospatial camera.
|
|
8
8
|
* Arrow keys + Modifier key (ctrl/alt/option on mac): rotate
|
|
@@ -106,7 +106,14 @@ export class GeospatialCameraKeyboardInput {
|
|
|
106
106
|
});
|
|
107
107
|
this._onKeyboardObserver = this._scene.onKeyboardObservable.add((info) => {
|
|
108
108
|
const evt = info.event;
|
|
109
|
-
|
|
109
|
+
const isArrowKey = this.keysUp.indexOf(evt.keyCode) !== -1 ||
|
|
110
|
+
this.keysDown.indexOf(evt.keyCode) !== -1 ||
|
|
111
|
+
this.keysLeft.indexOf(evt.keyCode) !== -1 ||
|
|
112
|
+
this.keysRight.indexOf(evt.keyCode) !== -1;
|
|
113
|
+
// Allow metaKey (Cmd on Mac) through for arrow keys so Cmd+Arrow
|
|
114
|
+
// works as the Mac equivalent of Ctrl+Arrow for rotation.
|
|
115
|
+
// Block metaKey for other keys to avoid capturing browser shortcuts (e.g., Cmd+=/Cmd+-).
|
|
116
|
+
if (!evt.metaKey || isArrowKey) {
|
|
110
117
|
if (info.type === KeyboardEventTypes.KEYDOWN) {
|
|
111
118
|
this._ctrlPressed = evt.ctrlKey;
|
|
112
119
|
this._altPressed = evt.altKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geospatialCameraKeyboardInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/geospatialCameraKeyboardInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Observer } from \"../../Misc/observable\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { type GeospatialCamera } from \"../geospatialCamera\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../cameraInputsManager\";\r\nimport { type KeyboardInfo, KeyboardEventTypes } from \"../../Events/keyboardEvents\";\r\nimport { Tools } from \"../../Misc/tools\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type KeyboardConditions } from \"../inputMapper\";\r\n\r\n/**\r\n * Manage the keyboard inputs to control the movement of a geospatial camera.\r\n * Arrow keys + Modifier key (ctrl/alt/option on mac): rotate\r\n * Arrow keys alone: pan\r\n * + / - keys: zoom in/out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class GeospatialCameraKeyboardInput implements ICameraInput<GeospatialCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: GeospatialCamera;\r\n\r\n /**\r\n * Defines the list of key codes associated with the up action (pan up)\r\n */\r\n @serialize()\r\n public keysUp = [38];\r\n\r\n /**\r\n * Defines the list of key codes associated with the down action (pan down)\r\n */\r\n @serialize()\r\n public keysDown = [40];\r\n\r\n /**\r\n * Defines the list of key codes associated with the left action (pan left)\r\n */\r\n @serialize()\r\n public keysLeft = [37];\r\n\r\n /**\r\n * Defines the list of key codes associated with the right action (pan right)\r\n */\r\n @serialize()\r\n public keysRight = [39];\r\n\r\n /**\r\n * Defines the list of key codes associated with zoom in (+ or =)\r\n */\r\n @serialize()\r\n public keysZoomIn = [187, 107]; // 187 = + key, 107 = numpad +\r\n\r\n /**\r\n * Defines the list of key codes associated with zoom out (-)\r\n */\r\n @serialize()\r\n public keysZoomOut = [189, 109]; // 189 = - key, 109 = numpad -\r\n\r\n /**\r\n * Defines the rotation sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before rotation speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard rotate entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get rotationSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"rotate\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set rotationSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"rotate\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the panning sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before pan speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard pan entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get panSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"pan\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set panSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"pan\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the zooming sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before zoom speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard zoom entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get zoomSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"zoom\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set zoomSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"zoom\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n private _keys = new Array<number>();\r\n private _ctrlPressed: boolean;\r\n private _altPressed: boolean;\r\n private _shiftPressed: boolean;\r\n private _onCanvasBlurObserver: Nullable<Observer<AbstractEngine>>;\r\n private _onKeyboardObserver: Nullable<Observer<KeyboardInfo>>;\r\n private _engine: AbstractEngine;\r\n private _scene: Scene;\r\n\r\n /**\r\n * Modifier state stored separately from `_keyboardConditions` so it can be typed as a\r\n * concrete (non-optional) object. This avoids non-null assertions when updating modifier\r\n * fields each frame, and the conditions object holds the same reference so\r\n * resolveInteraction sees the live state.\r\n */\r\n private _keyboardModifiers: { ctrl: boolean; alt: boolean; shift: boolean } = { ctrl: false, alt: false, shift: false };\r\n\r\n /** Cached conditions object to avoid per-frame allocations in checkInputs */\r\n private _keyboardConditions: KeyboardConditions = { modifiers: this._keyboardModifiers };\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 // was there a second variable defined?\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n\r\n if (this._onCanvasBlurObserver) {\r\n return;\r\n }\r\n\r\n this._scene = this.camera.getScene();\r\n this._engine = this._scene.getEngine();\r\n\r\n this._onCanvasBlurObserver = this._engine.onCanvasBlurObservable.add(() => {\r\n this._keys.length = 0;\r\n });\r\n\r\n this._onKeyboardObserver = this._scene.onKeyboardObservable.add((info) => {\r\n const evt = info.event;\r\n if (!evt.metaKey) {\r\n if (info.type === KeyboardEventTypes.KEYDOWN) {\r\n this._ctrlPressed = evt.ctrlKey;\r\n this._altPressed = evt.altKey;\r\n this._shiftPressed = evt.shiftKey;\r\n\r\n if (\r\n this.keysUp.indexOf(evt.keyCode) !== -1 ||\r\n this.keysDown.indexOf(evt.keyCode) !== -1 ||\r\n this.keysLeft.indexOf(evt.keyCode) !== -1 ||\r\n this.keysRight.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomIn.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomOut.indexOf(evt.keyCode) !== -1\r\n ) {\r\n const index = this._keys.indexOf(evt.keyCode);\r\n\r\n if (index === -1) {\r\n this._keys.push(evt.keyCode);\r\n }\r\n\r\n if (evt.preventDefault) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n } else {\r\n if (\r\n this.keysUp.indexOf(evt.keyCode) !== -1 ||\r\n this.keysDown.indexOf(evt.keyCode) !== -1 ||\r\n this.keysLeft.indexOf(evt.keyCode) !== -1 ||\r\n this.keysRight.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomIn.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomOut.indexOf(evt.keyCode) !== -1\r\n ) {\r\n const index = this._keys.indexOf(evt.keyCode);\r\n\r\n if (index >= 0) {\r\n this._keys.splice(index, 1);\r\n }\r\n\r\n if (evt.preventDefault) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n }\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 if (this._scene) {\r\n this._onKeyboardObserver?.remove();\r\n this._onKeyboardObserver = null;\r\n this._onCanvasBlurObserver?.remove();\r\n this._onCanvasBlurObserver = null;\r\n }\r\n\r\n this._keys.length = 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 (this._onKeyboardObserver) {\r\n const camera = this.camera;\r\n const input = camera.movement.input;\r\n\r\n // Update cached modifier state\r\n this._keyboardModifiers.ctrl = this._ctrlPressed;\r\n this._keyboardModifiers.alt = this._altPressed;\r\n this._keyboardModifiers.shift = this._shiftPressed;\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const keyCode = this._keys[index];\r\n\r\n // Resolve per key — allows different keys to map to different interactions\r\n this._keyboardConditions.key = keyCode;\r\n const resolved = input.resolveInteraction(\"keyboard\", this._keyboardConditions);\r\n\r\n if (resolved) {\r\n const sens = resolved.sensitivity ?? 1;\r\n if (resolved.interaction === \"zoom\") {\r\n if (this.keysZoomIn.indexOf(keyCode) !== -1 || this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.zoom(sens, false);\r\n } else if (this.keysZoomOut.indexOf(keyCode) !== -1 || this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.zoom(-sens, false);\r\n }\r\n } else if (resolved.interaction === \"rotate\") {\r\n if (this.keysLeft.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(-sens, 0);\r\n } else if (this.keysRight.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(sens, 0);\r\n } else if (this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(0, -sens);\r\n } else if (this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(0, sens);\r\n }\r\n } else if (resolved.interaction === \"pan\") {\r\n // Call into movement class handleDrag so that behavior matches that of pointer input, simulating drag from center of screen.\r\n // getRenderWidth/Height return render buffer pixels (scaled by hardwareScalingLevel relative to CSS pixels),\r\n // but the picking logic (scene.pick via CreatePickingRayToRef) expects CSS pixels (it divides by hardwareScalingLevel internally).\r\n const hardwareScaling = this._engine.getHardwareScalingLevel();\r\n const centerX = (this._engine.getRenderWidth() / 2) * hardwareScaling;\r\n const centerY = (this._engine.getRenderHeight() / 2) * hardwareScaling;\r\n input.handlers.pan.start(centerX, centerY);\r\n if (this.keysLeft.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX + sens, centerY);\r\n } else if (this.keysRight.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX - sens, centerY);\r\n } else if (this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX, centerY + sens);\r\n } else if (this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX, centerY - sens);\r\n }\r\n input.handlers.pan.stop();\r\n }\r\n }\r\n }\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 \"GeospatialCameraKeyboardInput\";\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 \"keyboard\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"GeospatialCameraKeyboardInput\"] = GeospatialCameraKeyboardInput;\r\n"]}
|
|
1
|
+
{"version":3,"file":"geospatialCameraKeyboardInput.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Inputs/geospatialCameraKeyboardInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { serialize } from \"../../Misc/decorators\";\r\nimport { type Observer } from \"../../Misc/observable\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { type GeospatialCamera } from \"../geospatialCamera\";\r\nimport { type ICameraInput, CameraInputTypes } from \"../cameraInputsManager\";\r\nimport { type KeyboardInfo, KeyboardEventTypes } from \"../../Events/keyboardEvents\";\r\nimport { Tools } from \"../../Misc/tools.pure\";\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine\";\r\nimport { type KeyboardConditions } from \"../inputMapper\";\r\n\r\n/**\r\n * Manage the keyboard inputs to control the movement of a geospatial camera.\r\n * Arrow keys + Modifier key (ctrl/alt/option on mac): rotate\r\n * Arrow keys alone: pan\r\n * + / - keys: zoom in/out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/customizingCameraInputs\r\n */\r\nexport class GeospatialCameraKeyboardInput implements ICameraInput<GeospatialCamera> {\r\n /**\r\n * Defines the camera the input is attached to.\r\n */\r\n public camera: GeospatialCamera;\r\n\r\n /**\r\n * Defines the list of key codes associated with the up action (pan up)\r\n */\r\n @serialize()\r\n public keysUp = [38];\r\n\r\n /**\r\n * Defines the list of key codes associated with the down action (pan down)\r\n */\r\n @serialize()\r\n public keysDown = [40];\r\n\r\n /**\r\n * Defines the list of key codes associated with the left action (pan left)\r\n */\r\n @serialize()\r\n public keysLeft = [37];\r\n\r\n /**\r\n * Defines the list of key codes associated with the right action (pan right)\r\n */\r\n @serialize()\r\n public keysRight = [39];\r\n\r\n /**\r\n * Defines the list of key codes associated with zoom in (+ or =)\r\n */\r\n @serialize()\r\n public keysZoomIn = [187, 107]; // 187 = + key, 107 = numpad +\r\n\r\n /**\r\n * Defines the list of key codes associated with zoom out (-)\r\n */\r\n @serialize()\r\n public keysZoomOut = [189, 109]; // 189 = - key, 109 = numpad -\r\n\r\n /**\r\n * Defines the rotation sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before rotation speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard rotate entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get rotationSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"rotate\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set rotationSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"rotate\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the panning sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before pan speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard pan entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get panSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"pan\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set panSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"pan\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n /**\r\n * Defines the zooming sensitivity of the inputs.\r\n * (How many pixels of pointer input to apply per keypress, before zoom speed factor is applied by movement class)\r\n * @deprecated Use the `sensitivity` field on the keyboard zoom entry in `camera.movement.input.inputMap` instead.\r\n */\r\n @serialize()\r\n public get zoomSensitivity(): number {\r\n const entry = this.camera?.movement.input.getEntry(\"keyboard\", \"zoom\");\r\n return entry?.sensitivity ?? 1;\r\n }\r\n\r\n public set zoomSensitivity(value: number) {\r\n for (const entry of this.camera?.movement.input.getEntries(\"keyboard\", \"zoom\") ?? []) {\r\n entry.sensitivity = value;\r\n }\r\n }\r\n\r\n private _keys = new Array<number>();\r\n private _ctrlPressed: boolean;\r\n private _altPressed: boolean;\r\n private _shiftPressed: boolean;\r\n private _onCanvasBlurObserver: Nullable<Observer<AbstractEngine>>;\r\n private _onKeyboardObserver: Nullable<Observer<KeyboardInfo>>;\r\n private _engine: AbstractEngine;\r\n private _scene: Scene;\r\n\r\n /**\r\n * Modifier state stored separately from `_keyboardConditions` so it can be typed as a\r\n * concrete (non-optional) object. This avoids non-null assertions when updating modifier\r\n * fields each frame, and the conditions object holds the same reference so\r\n * resolveInteraction sees the live state.\r\n */\r\n private _keyboardModifiers: { ctrl: boolean; alt: boolean; shift: boolean } = { ctrl: false, alt: false, shift: false };\r\n\r\n /** Cached conditions object to avoid per-frame allocations in checkInputs */\r\n private _keyboardConditions: KeyboardConditions = { modifiers: this._keyboardModifiers };\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 // was there a second variable defined?\r\n noPreventDefault = Tools.BackCompatCameraNoPreventDefault(arguments);\r\n\r\n if (this._onCanvasBlurObserver) {\r\n return;\r\n }\r\n\r\n this._scene = this.camera.getScene();\r\n this._engine = this._scene.getEngine();\r\n\r\n this._onCanvasBlurObserver = this._engine.onCanvasBlurObservable.add(() => {\r\n this._keys.length = 0;\r\n });\r\n\r\n this._onKeyboardObserver = this._scene.onKeyboardObservable.add((info) => {\r\n const evt = info.event;\r\n const isArrowKey =\r\n this.keysUp.indexOf(evt.keyCode) !== -1 ||\r\n this.keysDown.indexOf(evt.keyCode) !== -1 ||\r\n this.keysLeft.indexOf(evt.keyCode) !== -1 ||\r\n this.keysRight.indexOf(evt.keyCode) !== -1;\r\n // Allow metaKey (Cmd on Mac) through for arrow keys so Cmd+Arrow\r\n // works as the Mac equivalent of Ctrl+Arrow for rotation.\r\n // Block metaKey for other keys to avoid capturing browser shortcuts (e.g., Cmd+=/Cmd+-).\r\n if (!evt.metaKey || isArrowKey) {\r\n if (info.type === KeyboardEventTypes.KEYDOWN) {\r\n this._ctrlPressed = evt.ctrlKey;\r\n this._altPressed = evt.altKey;\r\n this._shiftPressed = evt.shiftKey;\r\n\r\n if (\r\n this.keysUp.indexOf(evt.keyCode) !== -1 ||\r\n this.keysDown.indexOf(evt.keyCode) !== -1 ||\r\n this.keysLeft.indexOf(evt.keyCode) !== -1 ||\r\n this.keysRight.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomIn.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomOut.indexOf(evt.keyCode) !== -1\r\n ) {\r\n const index = this._keys.indexOf(evt.keyCode);\r\n\r\n if (index === -1) {\r\n this._keys.push(evt.keyCode);\r\n }\r\n\r\n if (evt.preventDefault) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n } else {\r\n if (\r\n this.keysUp.indexOf(evt.keyCode) !== -1 ||\r\n this.keysDown.indexOf(evt.keyCode) !== -1 ||\r\n this.keysLeft.indexOf(evt.keyCode) !== -1 ||\r\n this.keysRight.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomIn.indexOf(evt.keyCode) !== -1 ||\r\n this.keysZoomOut.indexOf(evt.keyCode) !== -1\r\n ) {\r\n const index = this._keys.indexOf(evt.keyCode);\r\n\r\n if (index >= 0) {\r\n this._keys.splice(index, 1);\r\n }\r\n\r\n if (evt.preventDefault) {\r\n if (!noPreventDefault) {\r\n evt.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n }\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 if (this._scene) {\r\n this._onKeyboardObserver?.remove();\r\n this._onKeyboardObserver = null;\r\n this._onCanvasBlurObserver?.remove();\r\n this._onCanvasBlurObserver = null;\r\n }\r\n\r\n this._keys.length = 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 (this._onKeyboardObserver) {\r\n const camera = this.camera;\r\n const input = camera.movement.input;\r\n\r\n // Update cached modifier state\r\n this._keyboardModifiers.ctrl = this._ctrlPressed;\r\n this._keyboardModifiers.alt = this._altPressed;\r\n this._keyboardModifiers.shift = this._shiftPressed;\r\n\r\n for (let index = 0; index < this._keys.length; index++) {\r\n const keyCode = this._keys[index];\r\n\r\n // Resolve per key — allows different keys to map to different interactions\r\n this._keyboardConditions.key = keyCode;\r\n const resolved = input.resolveInteraction(\"keyboard\", this._keyboardConditions);\r\n\r\n if (resolved) {\r\n const sens = resolved.sensitivity ?? 1;\r\n if (resolved.interaction === \"zoom\") {\r\n if (this.keysZoomIn.indexOf(keyCode) !== -1 || this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.zoom(sens, false);\r\n } else if (this.keysZoomOut.indexOf(keyCode) !== -1 || this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.zoom(-sens, false);\r\n }\r\n } else if (resolved.interaction === \"rotate\") {\r\n if (this.keysLeft.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(-sens, 0);\r\n } else if (this.keysRight.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(sens, 0);\r\n } else if (this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(0, -sens);\r\n } else if (this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.rotate(0, sens);\r\n }\r\n } else if (resolved.interaction === \"pan\") {\r\n // Call into movement class handleDrag so that behavior matches that of pointer input, simulating drag from center of screen.\r\n // getRenderWidth/Height return render buffer pixels (scaled by hardwareScalingLevel relative to CSS pixels),\r\n // but the picking logic (scene.pick via CreatePickingRayToRef) expects CSS pixels (it divides by hardwareScalingLevel internally).\r\n const hardwareScaling = this._engine.getHardwareScalingLevel();\r\n const centerX = (this._engine.getRenderWidth() / 2) * hardwareScaling;\r\n const centerY = (this._engine.getRenderHeight() / 2) * hardwareScaling;\r\n input.handlers.pan.start(centerX, centerY);\r\n if (this.keysLeft.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX + sens, centerY);\r\n } else if (this.keysRight.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX - sens, centerY);\r\n } else if (this.keysUp.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX, centerY + sens);\r\n } else if (this.keysDown.indexOf(keyCode) !== -1) {\r\n input.handlers.pan.update(centerX, centerY - sens);\r\n }\r\n input.handlers.pan.stop();\r\n }\r\n }\r\n }\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 \"GeospatialCameraKeyboardInput\";\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 \"keyboard\";\r\n }\r\n}\r\n\r\n(<any>CameraInputTypes)[\"GeospatialCameraKeyboardInput\"] = GeospatialCameraKeyboardInput;\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Epsilon } from "../../Maths/math.constants.js";
|
|
2
|
-
import { Vector2 } from "../../Maths/math.vector.js";
|
|
2
|
+
import { Vector2 } from "../../Maths/math.vector.pure.js";
|
|
3
3
|
import { Clamp } from "../../Maths/math.scalar.functions.js";
|
|
4
4
|
/**
|
|
5
5
|
* Limits for geospatial camera
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geospatialLimits.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Limits/geospatialLimits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"geospatialLimits.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/Limits/geospatialLimits.ts"],"names":[],"mappings":"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","sourcesContent":["import { Epsilon } from \"../../Maths/math.constants\";\r\nimport { Vector2 } from \"../../Maths/math.vector.pure\";\r\nimport { Clamp } from \"../../Maths/math.scalar.functions\";\r\n/**\r\n * Limits for geospatial camera\r\n */\r\nexport class GeospatialLimits {\r\n private _planetRadius: number;\r\n private _radiusMin: number = 10;\r\n private _radiusMax: number = Infinity;\r\n\r\n /** Gets the minimum pitch angle (angle from horizon) -- 0 means looking straight down at planet */\r\n public pitchMin: number = Epsilon;\r\n\r\n /** Gets the maximum pitch angle (angle from horizon) -- Pi/2 means looking at horizon */\r\n public pitchMax: number = Math.PI / 2 - 0.01;\r\n\r\n /**\r\n * Controls how pitch is disabled as the camera zooms out.\r\n * x = radius scale at which full pitch is allowed (e.g., 1.5 means 1.5 * planetRadius)\r\n * y = radius scale at which pitch is fully disabled (forced to pitchMin)\r\n * Set to undefined to disable this feature.\r\n */\r\n public pitchDisabledRadiusScale?: Vector2 = new Vector2(2, 4);\r\n\r\n /** Gets the minimum yaw angle (rotation around up axis) */\r\n public yawMin: number = -Infinity;\r\n\r\n /** Gets the maximum yaw angle (rotation around up axis) */\r\n public yawMax: number = Infinity;\r\n\r\n /**\r\n * @param planetRadius The radius of the planet\r\n */\r\n constructor(planetRadius: number) {\r\n this._planetRadius = planetRadius;\r\n this.radiusMax = planetRadius * 4;\r\n }\r\n\r\n public get radiusMin(): number {\r\n return this._radiusMin;\r\n }\r\n\r\n /**\r\n * Sets the minimum radius\r\n */\r\n public set radiusMin(value: number) {\r\n this._radiusMin = value;\r\n }\r\n\r\n public get radiusMax(): number {\r\n return this._radiusMax;\r\n }\r\n\r\n /**\r\n * Sets the maximum radius\r\n */\r\n public set radiusMax(value: number) {\r\n this._radiusMax = value;\r\n }\r\n\r\n /**\r\n * Gets the planet radius used for altitude/radius conversions\r\n */\r\n public get planetRadius(): number {\r\n return this._planetRadius;\r\n }\r\n\r\n /** Sets the planet radius and updates the radius limits to maintain current altitude */\r\n public set planetRadius(value: number) {\r\n this._planetRadius = value;\r\n }\r\n\r\n /**\r\n * Clamps a zoom distance to respect the radius limits.\r\n * @param zoomDistance The requested zoom distance (positive = zoom in, negative = zoom out)\r\n * @param currentRadius The current camera radius\r\n * @param distanceToTarget Optional distance to the zoom target point (used for zoom-in clamping)\r\n * @returns The clamped zoom distance\r\n */\r\n public clampZoomDistance(zoomDistance: number, currentRadius: number, distanceToTarget?: number): number {\r\n if (zoomDistance > 0) {\r\n // Zooming IN - don't zoom past the surface or below radiusMin\r\n const maxZoomIn = (distanceToTarget ?? currentRadius) - this._radiusMin;\r\n return Math.min(zoomDistance, Math.max(0, maxZoomIn));\r\n } else {\r\n // Zooming OUT - don't exceed radiusMax\r\n const maxZoomOut = this._radiusMax - currentRadius;\r\n return Math.max(zoomDistance, -Math.max(0, maxZoomOut));\r\n }\r\n }\r\n\r\n /**\r\n * Computes the effective maximum pitch based on the current camera radius.\r\n * When pitchDisabledRadiusScale is set, pitch is interpolated from pitchMax to pitchMin\r\n * as the camera zooms out from x*planetRadius to y*planetRadius.\r\n * @param currentRadius The current camera radius\r\n * @returns The effective maximum pitch angle\r\n */\r\n public getEffectivePitchMax(currentRadius: number): number {\r\n if (!this.pitchDisabledRadiusScale) {\r\n return this.pitchMax;\r\n }\r\n\r\n const fullPitchRadius = this.pitchDisabledRadiusScale.x * this._planetRadius;\r\n const noPitchRadius = this.pitchDisabledRadiusScale.y * this._planetRadius;\r\n\r\n if (currentRadius <= fullPitchRadius) {\r\n // Full pitch allowed\r\n return this.pitchMax;\r\n } else if (currentRadius >= noPitchRadius) {\r\n // No pitch allowed\r\n return this.pitchMin;\r\n } else {\r\n // Interpolate between pitchMax and pitchMin\r\n const t = (currentRadius - fullPitchRadius) / (noPitchRadius - fullPitchRadius);\r\n const clampedT = Clamp(t, 0, 1);\r\n return this.pitchMax * (1 - clampedT) + this.pitchMin * clampedT;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PassPostProcess } from "../../PostProcesses/passPostProcess.js";
|
|
2
|
-
import { AnaglyphPostProcess } from "../../PostProcesses/anaglyphPostProcess.js";
|
|
1
|
+
import { PassPostProcess } from "../../PostProcesses/passPostProcess.pure.js";
|
|
2
|
+
import { AnaglyphPostProcess } from "../../PostProcesses/anaglyphPostProcess.pure.js";
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stereoscopicAnaglyphRigMode.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/RigModes/stereoscopicAnaglyphRigMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stereoscopicAnaglyphRigMode.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/RigModes/stereoscopicAnaglyphRigMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAc;IAC1D,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnH,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACxH,CAAC","sourcesContent":["import { type Camera } from \"../camera\";\r\nimport { PassPostProcess } from \"../../PostProcesses/passPostProcess.pure\";\r\nimport { AnaglyphPostProcess } from \"../../PostProcesses/anaglyphPostProcess.pure\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _SetStereoscopicAnaglyphRigMode(camera: Camera) {\r\n camera._rigCameras[0]._rigPostProcess = new PassPostProcess(camera.name + \"_passthru\", 1.0, camera._rigCameras[0]);\r\n camera._rigCameras[1]._rigPostProcess = new AnaglyphPostProcess(camera.name + \"_anaglyph\", 1.0, camera._rigCameras);\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Camera } from "../camera.js";
|
|
1
|
+
import { Camera } from "../camera.pure.js";
|
|
2
2
|
import { Viewport } from "../../Maths/math.viewport.js";
|
|
3
|
-
import { PassPostProcess } from "../../PostProcesses/passPostProcess.js";
|
|
4
|
-
import { StereoscopicInterlacePostProcessI } from "../../PostProcesses/stereoscopicInterlacePostProcess.js";
|
|
3
|
+
import { PassPostProcess } from "../../PostProcesses/passPostProcess.pure.js";
|
|
4
|
+
import { StereoscopicInterlacePostProcessI } from "../../PostProcesses/stereoscopicInterlacePostProcess.pure.js";
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stereoscopicRigMode.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/RigModes/stereoscopicRigMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stereoscopicRigMode.js","sourceRoot":"","sources":["../../../../../dev/core/src/Cameras/RigModes/stereoscopicRigMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,2DAA2D,CAAC;AAE9G;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc;IAClD,MAAM,mBAAmB,GACrB,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,yCAAyC,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,0CAA0C,CAAC;IAC5J,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,0CAA0C,CAAC;IAC9F,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,gCAAgC,CAAC;IACtF,sCAAsC;IACtC,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACnH,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,iCAAiC,CAAC,MAAM,CAAC,IAAI,GAAG,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrJ,CAAC;IACD,0CAA0C;SACrC,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvI,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAC1D,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC7B,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAC7B,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAC/B,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClC,CAAC;IACN,CAAC;AACL,CAAC","sourcesContent":["import { Camera } from \"../camera.pure\";\r\nimport { Viewport } from \"../../Maths/math.viewport\";\r\nimport { PassPostProcess } from \"../../PostProcesses/passPostProcess.pure\";\r\nimport { StereoscopicInterlacePostProcessI } from \"../../PostProcesses/stereoscopicInterlacePostProcess.pure\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function _SetStereoscopicRigMode(camera: Camera): void {\r\n const isStereoscopicHoriz =\r\n camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL || camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED;\r\n const isCrossEye = camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED;\r\n const isInterlaced = camera.cameraRigMode === Camera.RIG_MODE_STEREOSCOPIC_INTERLACED;\r\n // Use post-processors for interlacing\r\n if (isInterlaced) {\r\n camera._rigCameras[0]._rigPostProcess = new PassPostProcess(camera.name + \"_passthru\", 1.0, camera._rigCameras[0]);\r\n camera._rigCameras[1]._rigPostProcess = new StereoscopicInterlacePostProcessI(camera.name + \"_stereoInterlace\", camera._rigCameras, false, true);\r\n }\r\n // Otherwise, create appropriate viewports\r\n else {\r\n camera._rigCameras[isCrossEye ? 1 : 0].viewport = new Viewport(0, 0, isStereoscopicHoriz ? 0.5 : 1.0, isStereoscopicHoriz ? 1.0 : 0.5);\r\n camera._rigCameras[isCrossEye ? 0 : 1].viewport = new Viewport(\r\n isStereoscopicHoriz ? 0.5 : 0,\r\n isStereoscopicHoriz ? 0 : 0.5,\r\n isStereoscopicHoriz ? 0.5 : 1.0,\r\n isStereoscopicHoriz ? 1.0 : 0.5\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Matrix } from "../../Maths/math.vector.js";
|
|
1
|
+
import { Matrix } from "../../Maths/math.vector.pure.js";
|
|
2
2
|
import { VRDistortionCorrectionPostProcess } from "../../PostProcesses/vrDistortionCorrectionPostProcess.js";
|
|
3
|
-
import { VRMultiviewToSingleviewPostProcess } from "../../PostProcesses/vrMultiviewToSingleviewPostProcess.js";
|
|
3
|
+
import { VRMultiviewToSingleviewPostProcess } from "../../PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js";
|
|
4
4
|
import { VRCameraMetrics } from "../VR/vrCameraMetrics.js";
|
|
5
5
|
import { Logger } from "../../Misc/logger.js";
|
|
6
6
|
import { Viewport } from "../../Maths/math.viewport.js";
|