@babylonjs/core 5.24.0 → 5.26.0
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/action.d.ts +12 -21
- package/Actions/action.js +8 -17
- package/Actions/action.js.map +1 -1
- package/Actions/actionManager.d.ts +2 -5
- package/Actions/actionManager.js +2 -5
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.d.ts +9 -50
- package/Actions/condition.js +3 -26
- package/Actions/condition.js.map +1 -1
- package/Actions/directActions.d.ts +7 -7
- package/Actions/directActions.js +7 -7
- package/Actions/directActions.js.map +1 -1
- package/Actions/directAudioActions.d.ts +2 -2
- package/Actions/directAudioActions.js +2 -2
- package/Actions/directAudioActions.js.map +1 -1
- package/Actions/interpolateValueAction.d.ts +1 -1
- package/Actions/interpolateValueAction.js +1 -1
- package/Actions/interpolateValueAction.js.map +1 -1
- package/Animations/animatable.d.ts +5 -6
- package/Animations/animatable.js +1 -2
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.d.ts +6 -20
- package/Animations/animation.js +6 -20
- package/Animations/animation.js.map +1 -1
- package/Animations/animationEvent.d.ts +1 -1
- package/Animations/animationEvent.js +1 -1
- package/Animations/animationEvent.js.map +1 -1
- package/Animations/animationGroup.d.ts +1 -1
- package/Animations/animationGroup.js +1 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/easing.d.ts +13 -26
- package/Animations/easing.js +13 -26
- package/Animations/easing.js.map +1 -1
- package/Animations/runtimeAnimation.d.ts +3 -4
- package/Animations/runtimeAnimation.js +1 -2
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioEngine.js +1 -2
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.d.ts +1 -1
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.d.ts +3 -4
- package/Audio/sound.js +2 -3
- package/Audio/sound.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/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
- package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +5 -5
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.d.ts +1 -1
- package/Behaviors/Meshes/followBehavior.js +1 -1
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.d.ts +7 -9
- package/Bones/bone.js +7 -9
- package/Bones/bone.js.map +1 -1
- package/Bones/skeleton.d.ts +6 -8
- package/Bones/skeleton.js +6 -8
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.d.ts +6 -6
- package/Buffers/buffer.js +14 -16
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/storageBuffer.d.ts +1 -1
- package/Buffers/storageBuffer.js +1 -1
- package/Buffers/storageBuffer.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.d.ts +1 -2
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +1 -2
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.d.ts +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.d.ts +6 -3
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +18 -5
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.d.ts +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.d.ts +1 -2
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +1 -2
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -2
- package/Cameras/RigModes/stereoscopicRigMode.js +1 -2
- package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
- package/Cameras/RigModes/vrRigMode.d.ts +1 -3
- package/Cameras/RigModes/vrRigMode.js +1 -3
- package/Cameras/RigModes/vrRigMode.js.map +1 -1
- package/Cameras/RigModes/webVRRigMode.d.ts +1 -3
- package/Cameras/RigModes/webVRRigMode.js +1 -3
- package/Cameras/RigModes/webVRRigMode.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +2 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +2 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrCameraMetrics.d.ts +4 -4
- package/Cameras/VR/vrCameraMetrics.js +4 -4
- package/Cameras/VR/vrCameraMetrics.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +20 -48
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.d.ts +9 -9
- package/Cameras/VR/webVRCamera.js +9 -9
- package/Cameras/VR/webVRCamera.js.map +1 -1
- package/Cameras/arcRotateCamera.d.ts +11 -12
- package/Cameras/arcRotateCamera.js +8 -9
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.d.ts +29 -38
- package/Cameras/camera.js +27 -36
- package/Cameras/camera.js.map +1 -1
- package/Cameras/deviceOrientationCamera.d.ts +1 -1
- package/Cameras/deviceOrientationCamera.js +1 -1
- package/Cameras/deviceOrientationCamera.js.map +1 -1
- package/Cameras/flyCamera.d.ts +8 -12
- package/Cameras/flyCamera.js +6 -10
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/followCamera.d.ts +2 -2
- package/Cameras/followCamera.js +2 -2
- package/Cameras/followCamera.js.map +1 -1
- package/Cameras/freeCamera.d.ts +6 -7
- package/Cameras/freeCamera.js +4 -5
- package/Cameras/freeCamera.js.map +1 -1
- package/Cameras/freeCameraInputsManager.d.ts +2 -2
- package/Cameras/freeCameraInputsManager.js +2 -2
- package/Cameras/freeCameraInputsManager.js.map +1 -1
- package/Cameras/targetCamera.d.ts +21 -24
- package/Cameras/targetCamera.js +20 -23
- package/Cameras/targetCamera.js.map +1 -1
- package/Cameras/touchCamera.d.ts +1 -1
- package/Cameras/touchCamera.js +1 -1
- package/Cameras/touchCamera.js.map +1 -1
- package/Collisions/collider.d.ts +13 -44
- package/Collisions/collider.js +10 -41
- package/Collisions/collider.js.map +1 -1
- package/Collisions/collisionCoordinator.d.ts +2 -2
- package/Collisions/collisionCoordinator.js +1 -1
- package/Collisions/collisionCoordinator.js.map +1 -1
- package/Collisions/intersectionInfo.d.ts +1 -1
- package/Collisions/intersectionInfo.js +1 -1
- package/Collisions/intersectionInfo.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 +1 -1
- package/Collisions/pickingInfo.js.map +1 -1
- package/Compute/IComputeContext.d.ts +1 -1
- package/Compute/IComputeContext.js.map +1 -1
- package/Compute/IComputePipelineContext.d.ts +2 -2
- package/Compute/IComputePipelineContext.js.map +1 -1
- package/Compute/computeEffect.d.ts +5 -5
- package/Compute/computeEffect.js +5 -5
- package/Compute/computeEffect.js.map +1 -1
- package/Culling/Octrees/octreeBlock.d.ts +1 -9
- package/Culling/Octrees/octreeBlock.js +1 -9
- package/Culling/Octrees/octreeBlock.js.map +1 -1
- package/Culling/Octrees/octreeSceneComponent.d.ts +2 -2
- package/Culling/Octrees/octreeSceneComponent.js +1 -5
- package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
- package/Culling/boundingBox.d.ts +4 -5
- package/Culling/boundingBox.js +3 -4
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/boundingInfo.d.ts +1 -2
- package/Culling/boundingInfo.js +1 -2
- package/Culling/boundingInfo.js.map +1 -1
- package/Culling/boundingSphere.d.ts +1 -2
- package/Culling/boundingSphere.js +1 -2
- package/Culling/boundingSphere.js.map +1 -1
- package/Culling/ray.d.ts +6 -6
- package/Culling/ray.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/physicsViewer.d.ts +6 -6
- package/Debug/physicsViewer.js +4 -4
- package/Debug/physicsViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +1 -1
- package/DeviceInput/InputDevices/deviceEnums.js +1 -1
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -3
- package/DeviceInput/InputDevices/deviceSourceManager.js +3 -3
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +3 -3
- package/DeviceInput/internalDeviceSourceManager.js +1 -1
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/nativeDeviceInputSystem.d.ts +1 -1
- package/DeviceInput/nativeDeviceInputSystem.js +1 -1
- package/DeviceInput/nativeDeviceInputSystem.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.d.ts +1 -1
- package/DeviceInput/webDeviceInputSystem.js +1 -19
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +7 -7
- package/Engines/Extensions/engine.computeShader.js +1 -1
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +6 -6
- package/Engines/Extensions/engine.cubeTexture.js +3 -2
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.debugging.d.ts +4 -4
- package/Engines/Extensions/engine.debugging.js.map +1 -1
- package/Engines/Extensions/engine.multiview.d.ts +9 -9
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +22 -22
- package/Engines/Extensions/engine.query.js +8 -8
- package/Engines/Extensions/engine.query.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +3 -7
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.d.ts +2 -2
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +2 -2
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.textureSelector.d.ts +2 -2
- package/Engines/Extensions/engine.textureSelector.js.map +1 -1
- package/Engines/Extensions/engine.transformFeedback.d.ts +1 -1
- package/Engines/Extensions/engine.transformFeedback.js +1 -1
- package/Engines/Extensions/engine.transformFeedback.js.map +1 -1
- package/Engines/Extensions/engine.views.d.ts +2 -2
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Extensions/engine.webVR.d.ts +13 -13
- package/Engines/Extensions/engine.webVR.js.map +1 -1
- package/Engines/IDrawContext.d.ts +1 -1
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/IMaterialContext.d.ts +1 -1
- package/Engines/IMaterialContext.js.map +1 -1
- package/Engines/IPipelineContext.d.ts +5 -5
- package/Engines/IPipelineContext.js.map +1 -1
- package/Engines/Native/nativeDataStream.d.ts +2 -2
- package/Engines/Native/nativeDataStream.js +1 -1
- package/Engines/Native/nativeDataStream.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +10 -10
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js.map +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js.map +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.d.ts +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
- package/Engines/Processors/iShaderProcessor.d.ts +1 -1
- package/Engines/Processors/iShaderProcessor.js.map +1 -1
- package/Engines/Processors/shaderCodeConditionNode.d.ts +1 -1
- package/Engines/Processors/shaderCodeConditionNode.js +1 -1
- package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
- package/Engines/Processors/shaderCodeCursor.d.ts +1 -1
- package/Engines/Processors/shaderCodeCursor.js +1 -1
- package/Engines/Processors/shaderCodeCursor.js.map +1 -1
- package/Engines/Processors/shaderCodeNode.d.ts +1 -1
- package/Engines/Processors/shaderCodeNode.js +1 -1
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/Processors/shaderCodeTestNode.d.ts +1 -1
- package/Engines/Processors/shaderCodeTestNode.js +1 -1
- package/Engines/Processors/shaderCodeTestNode.js.map +1 -1
- package/Engines/Processors/shaderProcessingOptions.d.ts +2 -2
- package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
- package/Engines/Processors/shaderProcessor.d.ts +2 -2
- package/Engines/Processors/shaderProcessor.js +2 -2
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.d.ts +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
- package/Engines/WebGL/webGLHardwareTexture.d.ts +1 -1
- package/Engines/WebGL/webGLHardwareTexture.js +1 -1
- package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
- package/Engines/WebGL/webGLPipelineContext.d.ts +6 -25
- package/Engines/WebGL/webGLPipelineContext.js +6 -25
- package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.d.ts +2 -2
- package/Engines/WebGL/webGLRenderTargetWrapper.js +2 -2
- package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGL/webGLShaderProcessors.d.ts +1 -1
- package/Engines/WebGL/webGLShaderProcessors.js +1 -1
- package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.d.ts +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +1 -5
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +8 -8
- package/Engines/WebGPU/webgpuBundleList.js +7 -7
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +2 -2
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +2 -2
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.d.ts +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.d.ts +2 -2
- package/Engines/WebGPU/webgpuComputePipelineContext.js +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuConstants.d.ts +38 -38
- package/Engines/WebGPU/webgpuConstants.js +38 -38
- package/Engines/WebGPU/webgpuConstants.js.map +1 -1
- package/Engines/WebGPU/webgpuDepthCullingState.d.ts +1 -1
- package/Engines/WebGPU/webgpuDepthCullingState.js +1 -1
- package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuExternalTexture.d.ts +1 -1
- package/Engines/WebGPU/webgpuExternalTexture.js +1 -1
- package/Engines/WebGPU/webgpuExternalTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.d.ts +9 -9
- package/Engines/WebGPU/webgpuHardwareTexture.js +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.d.ts +3 -3
- package/Engines/WebGPU/webgpuMaterialContext.js +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.d.ts +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.d.ts +4 -4
- package/Engines/WebGPU/webgpuPipelineContext.js +2 -2
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.d.ts +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuRenderPassWrapper.d.ts +1 -1
- package/Engines/WebGPU/webgpuRenderPassWrapper.js +1 -1
- package/Engines/WebGPU/webgpuRenderPassWrapper.js.map +1 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +2 -2
- package/Engines/WebGPU/webgpuRenderTargetWrapper.js +1 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +7 -7
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -2
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.d.ts +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.js +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.d.ts +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.d.ts +2 -2
- package/Engines/WebGPU/webgpuTimestampQuery.js +2 -2
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.d.ts +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/constants.d.ts +1 -1
- package/Engines/constants.js +1 -1
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +16 -35
- package/Engines/engine.js +19 -69
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFeatures.d.ts +2 -2
- package/Engines/engineFeatures.js.map +1 -1
- package/Engines/engineStore.d.ts +1 -1
- package/Engines/engineStore.js +1 -1
- package/Engines/engineStore.js.map +1 -1
- package/Engines/nativeEngine.d.ts +15 -47
- package/Engines/nativeEngine.js +20 -66
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +12 -40
- package/Engines/nullEngine.js +12 -40
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/performanceConfigurator.d.ts +6 -7
- package/Engines/performanceConfigurator.js +6 -7
- package/Engines/performanceConfigurator.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +8 -9
- package/Engines/renderTargetWrapper.js +7 -8
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.d.ts +90 -187
- package/Engines/thinEngine.js +73 -182
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +89 -145
- package/Engines/webgpuEngine.js +71 -127
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/pointerEvents.d.ts +4 -0
- package/Events/pointerEvents.js +4 -0
- package/Events/pointerEvents.js.map +1 -1
- package/Gamepads/Controllers/oculusTouchController.d.ts +1 -1
- package/Gamepads/Controllers/oculusTouchController.js +1 -1
- package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
- package/Gamepads/Controllers/poseEnabledController.d.ts +9 -10
- package/Gamepads/Controllers/poseEnabledController.js +6 -7
- package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
- package/Gamepads/Controllers/windowsMotionController.d.ts +1 -1
- package/Gamepads/Controllers/windowsMotionController.js +1 -1
- package/Gamepads/Controllers/windowsMotionController.js.map +1 -1
- package/Gamepads/gamepad.d.ts +1 -1
- package/Gamepads/gamepad.js +1 -1
- package/Gamepads/gamepad.js.map +1 -1
- package/Gamepads/gamepadManager.d.ts +2 -2
- package/Gamepads/gamepadManager.js +4 -4
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gamepads/gamepadSceneComponent.d.ts +1 -1
- package/Gamepads/gamepadSceneComponent.js.map +1 -1
- package/Gizmos/axisDragGizmo.d.ts +2 -8
- package/Gizmos/axisDragGizmo.js +2 -8
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/cameraGizmo.d.ts +1 -1
- package/Gizmos/cameraGizmo.js +1 -1
- package/Gizmos/cameraGizmo.js.map +1 -1
- package/Gizmos/lightGizmo.d.ts +1 -1
- package/Gizmos/lightGizmo.js +1 -1
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeDragGizmo.d.ts +1 -3
- package/Gizmos/planeDragGizmo.js +1 -3
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Helpers/sceneHelpers.d.ts +1 -1
- package/Helpers/sceneHelpers.js +1 -1
- package/Helpers/sceneHelpers.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +3 -3
- package/Inputs/scene.inputManager.js +5 -4
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/timeToken.d.ts +1 -1
- package/Instrumentation/timeToken.js +1 -1
- package/Instrumentation/timeToken.js.map +1 -1
- package/Layers/effectLayer.d.ts +2 -3
- package/Layers/effectLayer.js +2 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.d.ts +1 -1
- package/Layers/glowLayer.js +1 -1
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.d.ts +1 -1
- package/Layers/highlightLayer.js +1 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layer.d.ts +8 -1
- package/Layers/layer.js +12 -1
- package/Layers/layer.js.map +1 -1
- package/Layers/layerSceneComponent.d.ts +4 -2
- package/Layers/layerSceneComponent.js +27 -11
- package/Layers/layerSceneComponent.js.map +1 -1
- package/LensFlares/lensFlare.d.ts +1 -1
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.d.ts +4 -6
- package/LensFlares/lensFlareSystem.js +4 -6
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -2
- package/Lights/Shadows/cascadedShadowGenerator.js +1 -2
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +1 -2
- package/Lights/Shadows/shadowGenerator.js +1 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/light.d.ts +9 -9
- package/Lights/light.js +6 -6
- package/Lights/light.js.map +1 -1
- package/Lights/shadowLight.d.ts +3 -3
- package/Lights/shadowLight.js +3 -3
- package/Lights/shadowLight.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.d.ts +1 -1
- package/Loading/Plugins/babylonFileLoader.js +1 -1
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/loadingScreen.js +6 -6
- package/Loading/loadingScreen.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +1 -1
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +18 -18
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.d.ts +4 -11
- package/Materials/Node/Blocks/Input/inputBlock.js +4 -11
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +2 -2
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +9 -9
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +12 -12
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -2
- package/Materials/Node/nodeMaterial.js +2 -2
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.d.ts +8 -14
- package/Materials/Node/nodeMaterialBlock.js +6 -12
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +8 -8
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +7 -7
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +22 -58
- package/Materials/Node/nodeMaterialBuildState.js +21 -57
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +2 -2
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrBRDFConfiguration.js +2 -2
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +65 -65
- package/Materials/PBR/pbrBaseMaterial.js +65 -65
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +4 -4
- package/Materials/PBR/pbrClearCoatConfiguration.js +3 -3
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +6 -6
- package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrSheenConfiguration.js +2 -2
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +6 -6
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +5 -5
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.d.ts +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.d.ts +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.d.ts +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/tgaTextureLoader.d.ts +1 -1
- package/Materials/Textures/Loaders/tgaTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/tgaTextureLoader.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/Procedurals/proceduralTexture.d.ts +6 -7
- package/Materials/Textures/Procedurals/proceduralTexture.js +4 -5
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +17 -23
- package/Materials/Textures/baseTexture.js +20 -23
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +1 -1
- package/Materials/Textures/cubeTexture.js +1 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +1 -1
- package/Materials/Textures/dynamicTexture.js +1 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/hardwareTextureWrapper.d.ts +1 -1
- package/Materials/Textures/hardwareTextureWrapper.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +35 -37
- package/Materials/Textures/internalTexture.js +34 -36
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +1 -3
- package/Materials/Textures/multiRenderTarget.js +1 -3
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.d.ts +9 -9
- package/Materials/Textures/prePassRenderTarget.js +6 -6
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +7 -11
- package/Materials/Textures/renderTargetTexture.js +8 -9
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +6 -18
- package/Materials/Textures/texture.js +13 -23
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureSampler.d.ts +5 -5
- package/Materials/Textures/textureSampler.js +5 -5
- package/Materials/Textures/textureSampler.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.d.ts +2 -2
- package/Materials/Textures/thinTexture.js +2 -2
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.d.ts +1 -1
- package/Materials/Textures/videoTexture.js +3 -3
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.d.ts +1 -1
- package/Materials/drawWrapper.js +1 -1
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.d.ts +17 -17
- package/Materials/effect.js +28 -22
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.d.ts +1 -1
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/imageProcessingConfiguration.d.ts +5 -5
- package/Materials/imageProcessingConfiguration.js +4 -4
- package/Materials/imageProcessingConfiguration.js.map +1 -1
- package/Materials/material.d.ts +21 -26
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +2 -2
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +22 -24
- package/Materials/material.js.map +1 -1
- package/Materials/materialDefines.d.ts +14 -14
- package/Materials/materialDefines.js +13 -13
- package/Materials/materialDefines.js.map +1 -1
- package/Materials/materialHelper.js +2 -7
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginEvent.d.ts +15 -15
- package/Materials/materialPluginEvent.js +1 -1
- package/Materials/materialPluginEvent.js.map +1 -1
- package/Materials/materialPluginManager.d.ts +2 -4
- package/Materials/materialPluginManager.js +2 -4
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/multiMaterial.d.ts +1 -1
- package/Materials/multiMaterial.js +1 -1
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/pushMaterial.d.ts +1 -1
- package/Materials/pushMaterial.js +1 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/standardMaterial.d.ts +3 -3
- package/Materials/standardMaterial.js +3 -3
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +4 -4
- package/Materials/uniformBuffer.js +4 -4
- package/Materials/uniformBuffer.js.map +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.d.ts +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.js +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
- package/Maths/math.color.d.ts +1 -1
- package/Maths/math.color.js +1 -1
- package/Maths/math.color.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.like.d.ts +8 -8
- package/Maths/math.like.js.map +1 -1
- package/Maths/math.polar.d.ts +343 -0
- package/Maths/math.polar.js +537 -0
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.vector.d.ts +58 -24
- package/Maths/math.vector.js +94 -18
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/tubeBuilder.d.ts +2 -2
- package/Meshes/Builders/tubeBuilder.js +2 -2
- package/Meshes/Builders/tubeBuilder.js.map +1 -1
- package/Meshes/WebGL/webGLDataBuffer.d.ts +1 -1
- package/Meshes/WebGL/webGLDataBuffer.js +1 -1
- package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.d.ts +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +48 -70
- package/Meshes/abstractMesh.js +47 -69
- package/Meshes/abstractMesh.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/geodesicMesh.d.ts +15 -28
- package/Meshes/geodesicMesh.js +11 -24
- package/Meshes/geodesicMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +15 -20
- package/Meshes/geometry.js +7 -12
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/groundMesh.d.ts +8 -8
- package/Meshes/groundMesh.js.map +1 -1
- package/Meshes/instancedMesh.d.ts +12 -16
- package/Meshes/instancedMesh.js +11 -15
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/linesMesh.d.ts +5 -8
- package/Meshes/linesMesh.js +5 -8
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +47 -92
- package/Meshes/mesh.js +50 -98
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +3 -18
- package/Meshes/mesh.vertexData.js +3 -18
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/meshSimplificationSceneComponent.d.ts +1 -1
- package/Meshes/meshSimplificationSceneComponent.js.map +1 -1
- package/Meshes/subMesh.d.ts +23 -51
- package/Meshes/subMesh.js +20 -48
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/subMesh.project.d.ts +2 -2
- package/Meshes/subMesh.project.js +2 -12
- package/Meshes/subMesh.project.js.map +1 -1
- package/Meshes/thinInstanceMesh.d.ts +4 -4
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Meshes/transformNode.d.ts +8 -9
- package/Meshes/transformNode.js +8 -9
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/arrayTools.d.ts +3 -3
- package/Misc/arrayTools.js +1 -1
- package/Misc/arrayTools.js.map +1 -1
- package/Misc/assetsManager.d.ts +1 -3
- package/Misc/assetsManager.js +1 -3
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basis.js +1 -1
- package/Misc/basis.js.map +1 -1
- package/Misc/coroutine.d.ts +11 -25
- package/Misc/coroutine.js +7 -21
- package/Misc/coroutine.js.map +1 -1
- package/Misc/dds.d.ts +1 -10
- package/Misc/dds.js +1 -10
- package/Misc/dds.js.map +1 -1
- package/Misc/decorators.d.ts +5 -15
- package/Misc/decorators.js +6 -16
- package/Misc/decorators.js.map +1 -1
- package/Misc/depthReducer.d.ts +1 -5
- package/Misc/depthReducer.js +1 -5
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/devTools.d.ts +1 -2
- package/Misc/devTools.js +1 -2
- package/Misc/devTools.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +1 -6
- package/Misc/environmentTextureTools.js +1 -6
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.d.ts +12 -24
- package/Misc/fileTools.js +14 -26
- package/Misc/fileTools.js.map +1 -1
- package/Misc/khronosTextureContainer.d.ts +1 -3
- package/Misc/khronosTextureContainer.js +1 -3
- package/Misc/khronosTextureContainer.js.map +1 -1
- package/Misc/khronosTextureContainer2.d.ts +1 -4
- package/Misc/khronosTextureContainer2.js +1 -4
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/observable.d.ts +3 -4
- package/Misc/observable.js +2 -3
- package/Misc/observable.js.map +1 -1
- package/Misc/pivotTools.d.ts +3 -5
- package/Misc/pivotTools.js +3 -5
- package/Misc/pivotTools.js.map +1 -1
- package/Misc/screenshotTools.js +1 -1
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/tags.d.ts +2 -6
- package/Misc/tags.js +2 -6
- package/Misc/tags.js.map +1 -1
- package/Misc/tga.d.ts +14 -70
- package/Misc/tga.js +14 -70
- package/Misc/tga.js.map +1 -1
- package/Misc/tools.d.ts +9 -0
- package/Misc/tools.js +14 -5
- package/Misc/tools.js.map +1 -1
- package/Misc/typeStore.d.ts +2 -5
- package/Misc/typeStore.js +3 -6
- package/Misc/typeStore.js.map +1 -1
- package/Misc/virtualJoystick.js +0 -1
- package/Misc/virtualJoystick.js.map +1 -1
- package/Misc/webRequest.d.ts +2 -2
- package/Misc/webRequest.js +1 -1
- package/Misc/webRequest.js.map +1 -1
- package/Morph/morphTarget.d.ts +1 -1
- package/Morph/morphTarget.js +1 -1
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +3 -4
- package/Morph/morphTargetManager.js +2 -3
- package/Morph/morphTargetManager.js.map +1 -1
- package/Particles/IGPUParticleSystemPlatform.d.ts +1 -1
- package/Particles/IGPUParticleSystemPlatform.js.map +1 -1
- package/Particles/IParticleSystem.d.ts +6 -0
- package/Particles/IParticleSystem.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +14 -9
- package/Particles/baseParticleSystem.js +17 -8
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/cloudPoint.d.ts +16 -19
- package/Particles/cloudPoint.js +21 -29
- package/Particles/cloudPoint.js.map +1 -1
- package/Particles/computeShaderParticleSystem.d.ts +1 -1
- package/Particles/computeShaderParticleSystem.js +1 -1
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +14 -20
- package/Particles/gpuParticleSystem.js +17 -13
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particle.d.ts +30 -31
- package/Particles/particle.js +16 -17
- package/Particles/particle.js.map +1 -1
- package/Particles/particleSystem.d.ts +16 -32
- package/Particles/particleSystem.js +30 -31
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/pointsCloudSystem.d.ts +3 -4
- package/Particles/pointsCloudSystem.js +27 -20
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.d.ts +21 -31
- package/Particles/solidParticle.js +9 -19
- package/Particles/solidParticle.js.map +1 -1
- package/Particles/solidParticleSystem.d.ts +14 -16
- package/Particles/solidParticleSystem.js +14 -16
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/subEmitter.d.ts +1 -5
- package/Particles/subEmitter.js +1 -5
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/webgl2ParticleSystem.d.ts +1 -1
- package/Particles/webgl2ParticleSystem.js +1 -1
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/Physics/IPhysicsEngine.d.ts +1 -1
- package/Physics/IPhysicsEngine.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.d.ts +3 -0
- package/Physics/Plugins/ammoJSPlugin.js +21 -2
- package/Physics/Plugins/ammoJSPlugin.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/Plugins/oimoJSPlugin.d.ts +1 -1
- package/Physics/Plugins/oimoJSPlugin.js +3 -3
- package/Physics/Plugins/oimoJSPlugin.js.map +1 -1
- package/Physics/physicsEngineComponent.d.ts +4 -4
- package/Physics/physicsEngineComponent.js +1 -2
- package/Physics/physicsEngineComponent.js.map +1 -1
- package/Physics/physicsImpostor.d.ts +13 -7
- package/Physics/physicsImpostor.js +9 -6
- package/Physics/physicsImpostor.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +2 -4
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +2 -4
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +10 -10
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +5 -5
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +13 -13
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +7 -14
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.d.ts +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.d.ts +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.d.ts +1 -5
- package/PostProcesses/blackAndWhitePostProcess.js +1 -5
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.d.ts +4 -4
- package/PostProcesses/bloomEffect.js +3 -3
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/blurPostProcess.d.ts +1 -5
- package/PostProcesses/blurPostProcess.js +1 -5
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.d.ts +1 -5
- package/PostProcesses/chromaticAberrationPostProcess.js +1 -5
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.d.ts +1 -5
- package/PostProcesses/colorCorrectionPostProcess.js +1 -5
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.d.ts +1 -5
- package/PostProcesses/convolutionPostProcess.js +1 -5
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +4 -4
- package/PostProcesses/depthOfFieldEffect.js +3 -3
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/displayPassPostProcess.d.ts +1 -5
- package/PostProcesses/displayPassPostProcess.js +1 -5
- package/PostProcesses/displayPassPostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.d.ts +2 -2
- package/PostProcesses/extractHighlightsPostProcess.js +2 -2
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.d.ts +1 -5
- package/PostProcesses/filterPostProcess.js +1 -5
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.d.ts +1 -5
- package/PostProcesses/fxaaPostProcess.js +1 -5
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.d.ts +1 -5
- package/PostProcesses/grainPostProcess.js +1 -5
- package/PostProcesses/grainPostProcess.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/motionBlurPostProcess.d.ts +1 -5
- package/PostProcesses/motionBlurPostProcess.js +1 -5
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.d.ts +2 -10
- package/PostProcesses/passPostProcess.js +2 -10
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +8 -12
- package/PostProcesses/postProcess.js +6 -10
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.d.ts +3 -3
- package/PostProcesses/postProcessManager.js +3 -3
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/PostProcesses/refractionPostProcess.d.ts +1 -5
- package/PostProcesses/refractionPostProcess.js +1 -5
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +1 -5
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -5
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +1 -5
- package/PostProcesses/screenSpaceReflectionPostProcess.js +1 -5
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.d.ts +1 -5
- package/PostProcesses/sharpenPostProcess.js +1 -5
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/Probes/reflectionProbe.d.ts +1 -1
- package/Probes/reflectionProbe.js +1 -1
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/boundingBoxRenderer.d.ts +5 -5
- package/Rendering/boundingBoxRenderer.js +2 -2
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthPeelingSceneComponent.d.ts +2 -2
- package/Rendering/depthPeelingSceneComponent.js.map +1 -1
- package/Rendering/depthRenderer.d.ts +1 -2
- package/Rendering/depthRenderer.js +1 -2
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRendererSceneComponent.d.ts +1 -1
- package/Rendering/depthRendererSceneComponent.js.map +1 -1
- package/Rendering/edgesRenderer.d.ts +2 -2
- package/Rendering/edgesRenderer.js +1 -1
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.d.ts +10 -16
- package/Rendering/geometryBufferRenderer.js +9 -15
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/geometryBufferRendererSceneComponent.d.ts +1 -1
- package/Rendering/geometryBufferRendererSceneComponent.js.map +1 -1
- package/Rendering/outlineRenderer.d.ts +3 -3
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +7 -14
- package/Rendering/prePassRenderer.js +8 -15
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRendererSceneComponent.d.ts +2 -2
- package/Rendering/prePassRendererSceneComponent.js.map +1 -1
- package/Rendering/renderingGroup.d.ts +3 -3
- package/Rendering/renderingGroup.js +3 -3
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/renderingManager.d.ts +15 -8
- package/Rendering/renderingManager.js +59 -17
- package/Rendering/renderingManager.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.d.ts +2 -4
- package/Rendering/subSurfaceConfiguration.js +2 -4
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/subSurfaceSceneComponent.d.ts +1 -1
- package/Rendering/subSurfaceSceneComponent.js.map +1 -1
- package/Rendering/utilityLayerRenderer.d.ts +4 -4
- package/Rendering/utilityLayerRenderer.js +15 -10
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimation.js +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bonesVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/bonesVertex.js +1 -1
- package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpFragment.js +1 -1
- package/Shaders/ShadersInclude/bumpFragment.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +1 -1
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.d.ts +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/depthPrePass.d.ts +1 -1
- package/Shaders/ShadersInclude/depthPrePass.js +1 -1
- package/Shaders/ShadersInclude/depthPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.d.ts +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js.map +1 -1
- package/Shaders/ShadersInclude/fibonacci.d.ts +1 -1
- package/Shaders/ShadersInclude/fibonacci.js +1 -1
- package/Shaders/ShadersInclude/fibonacci.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/fogFragment.js +1 -1
- package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/fogVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/fogVertex.js +1 -1
- package/Shaders/ShadersInclude/fogVertex.js.map +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.d.ts +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.js +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.js.map +1 -1
- package/Shaders/ShadersInclude/geometryUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/geometryUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/geometryUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.js +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.d.ts +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/importanceSampling.d.ts +1 -1
- package/Shaders/ShadersInclude/importanceSampling.js +1 -1
- package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/instancesVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/instancesVertex.js +1 -1
- package/Shaders/ShadersInclude/instancesVertex.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.d.ts +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/kernelBlurVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/kernelBlurVertex.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVertex.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +1 -1
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.js +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.js.map +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.js +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.js.map +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.d.ts +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
- package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/oitFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/oitFragment.js +1 -1
- package/Shaders/ShadersInclude/oitFragment.js.map +1 -1
- package/Shaders/ShadersInclude/packingFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/packingFunctions.js +1 -1
- package/Shaders/ShadersInclude/packingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +3 -3
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +2 -2
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.d.ts +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.js +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.js.map +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.d.ts +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.js.map +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js.map +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.js +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.js.map +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.js +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/vertexColorMixing.d.ts +1 -1
- package/Shaders/ShadersInclude/vertexColorMixing.js +2 -2
- package/Shaders/ShadersInclude/vertexColorMixing.js.map +1 -1
- package/Shaders/anaglyph.fragment.d.ts +1 -1
- package/Shaders/anaglyph.fragment.js +1 -1
- package/Shaders/anaglyph.fragment.js.map +1 -1
- package/Shaders/background.fragment.d.ts +1 -1
- package/Shaders/background.fragment.js +1 -1
- package/Shaders/background.fragment.js.map +1 -1
- package/Shaders/background.vertex.d.ts +1 -1
- package/Shaders/background.vertex.js +1 -1
- package/Shaders/background.vertex.js.map +1 -1
- package/Shaders/blackAndWhite.fragment.d.ts +1 -1
- package/Shaders/blackAndWhite.fragment.js +1 -1
- package/Shaders/blackAndWhite.fragment.js.map +1 -1
- package/Shaders/bloomMerge.fragment.d.ts +1 -1
- package/Shaders/bloomMerge.fragment.js +1 -1
- package/Shaders/bloomMerge.fragment.js.map +1 -1
- package/Shaders/blur.fragment.d.ts +1 -1
- package/Shaders/blur.fragment.js +1 -1
- package/Shaders/blur.fragment.js.map +1 -1
- package/Shaders/boundingBoxRenderer.fragment.d.ts +1 -1
- package/Shaders/boundingBoxRenderer.fragment.js +1 -1
- package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
- package/Shaders/boundingBoxRenderer.vertex.d.ts +1 -1
- package/Shaders/boundingBoxRenderer.vertex.js +1 -1
- package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
- package/Shaders/chromaticAberration.fragment.d.ts +1 -1
- package/Shaders/chromaticAberration.fragment.js +2 -1
- package/Shaders/chromaticAberration.fragment.js.map +1 -1
- package/Shaders/circleOfConfusion.fragment.d.ts +1 -1
- package/Shaders/circleOfConfusion.fragment.js +1 -1
- package/Shaders/circleOfConfusion.fragment.js.map +1 -1
- package/Shaders/clearQuad.fragment.d.ts +1 -1
- package/Shaders/clearQuad.fragment.js +1 -1
- package/Shaders/clearQuad.fragment.js.map +1 -1
- package/Shaders/clearQuad.vertex.d.ts +1 -1
- package/Shaders/clearQuad.vertex.js +1 -1
- package/Shaders/clearQuad.vertex.js.map +1 -1
- package/Shaders/color.fragment.d.ts +1 -1
- package/Shaders/color.fragment.js +4 -3
- package/Shaders/color.fragment.js.map +1 -1
- package/Shaders/color.vertex.d.ts +1 -1
- package/Shaders/color.vertex.js +2 -2
- package/Shaders/color.vertex.js.map +1 -1
- package/Shaders/colorCorrection.fragment.d.ts +1 -1
- package/Shaders/colorCorrection.fragment.js +1 -1
- package/Shaders/colorCorrection.fragment.js.map +1 -1
- package/Shaders/convolution.fragment.d.ts +1 -1
- package/Shaders/convolution.fragment.js +1 -1
- package/Shaders/convolution.fragment.js.map +1 -1
- package/Shaders/default.fragment.d.ts +1 -1
- package/Shaders/default.fragment.js +4 -4
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.d.ts +1 -1
- package/Shaders/default.vertex.js +2 -2
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/depth.fragment.d.ts +1 -1
- package/Shaders/depth.fragment.js +1 -1
- package/Shaders/depth.fragment.js.map +1 -1
- package/Shaders/depth.vertex.d.ts +1 -1
- package/Shaders/depth.vertex.js +1 -1
- package/Shaders/depth.vertex.js.map +1 -1
- package/Shaders/depthBoxBlur.fragment.d.ts +1 -1
- package/Shaders/depthBoxBlur.fragment.js +1 -1
- package/Shaders/depthBoxBlur.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.d.ts +1 -1
- package/Shaders/depthOfField.fragment.js +1 -1
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/depthOfFieldMerge.fragment.d.ts +1 -1
- package/Shaders/depthOfFieldMerge.fragment.js +1 -1
- package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
- package/Shaders/displayPass.fragment.d.ts +1 -1
- package/Shaders/displayPass.fragment.js +1 -1
- package/Shaders/displayPass.fragment.js.map +1 -1
- package/Shaders/extractHighlights.fragment.d.ts +1 -1
- package/Shaders/extractHighlights.fragment.js +1 -1
- package/Shaders/extractHighlights.fragment.js.map +1 -1
- package/Shaders/filter.fragment.d.ts +1 -1
- package/Shaders/filter.fragment.js +1 -1
- package/Shaders/filter.fragment.js.map +1 -1
- package/Shaders/fxaa.fragment.d.ts +1 -1
- package/Shaders/fxaa.fragment.js +1 -1
- package/Shaders/fxaa.fragment.js.map +1 -1
- package/Shaders/fxaa.vertex.d.ts +1 -1
- package/Shaders/fxaa.vertex.js +1 -1
- package/Shaders/fxaa.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.d.ts +1 -1
- package/Shaders/geometry.fragment.js +14 -2
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/geometry.vertex.d.ts +1 -1
- package/Shaders/geometry.vertex.js +1 -1
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Shaders/glowBlurPostProcess.fragment.d.ts +1 -1
- package/Shaders/glowBlurPostProcess.fragment.js +1 -1
- package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
- package/Shaders/glowMapGeneration.fragment.d.ts +1 -1
- package/Shaders/glowMapGeneration.fragment.js +1 -1
- package/Shaders/glowMapGeneration.fragment.js.map +1 -1
- package/Shaders/glowMapGeneration.vertex.d.ts +1 -1
- package/Shaders/glowMapGeneration.vertex.js +1 -1
- package/Shaders/glowMapGeneration.vertex.js.map +1 -1
- package/Shaders/glowMapMerge.fragment.d.ts +1 -1
- package/Shaders/glowMapMerge.fragment.js +1 -1
- package/Shaders/glowMapMerge.fragment.js.map +1 -1
- package/Shaders/glowMapMerge.vertex.d.ts +1 -1
- package/Shaders/glowMapMerge.vertex.js +1 -1
- package/Shaders/glowMapMerge.vertex.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.d.ts +3 -1
- package/Shaders/gpuRenderParticles.fragment.js +9 -2
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.d.ts +3 -1
- package/Shaders/gpuRenderParticles.vertex.js +5 -1
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/gpuUpdateParticles.fragment.d.ts +1 -1
- package/Shaders/gpuUpdateParticles.fragment.js +1 -1
- package/Shaders/gpuUpdateParticles.fragment.js.map +1 -1
- package/Shaders/gpuUpdateParticles.vertex.d.ts +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
- package/Shaders/grain.fragment.d.ts +1 -1
- package/Shaders/grain.fragment.js +1 -1
- package/Shaders/grain.fragment.js.map +1 -1
- package/Shaders/hdrFiltering.fragment.d.ts +1 -1
- package/Shaders/hdrFiltering.fragment.js +1 -1
- package/Shaders/hdrFiltering.fragment.js.map +1 -1
- package/Shaders/hdrFiltering.vertex.d.ts +1 -1
- package/Shaders/hdrFiltering.vertex.js +1 -1
- package/Shaders/hdrFiltering.vertex.js.map +1 -1
- package/Shaders/highlights.fragment.d.ts +1 -1
- package/Shaders/highlights.fragment.js +1 -1
- package/Shaders/highlights.fragment.js.map +1 -1
- package/Shaders/imageProcessing.fragment.d.ts +1 -1
- package/Shaders/imageProcessing.fragment.js +1 -1
- package/Shaders/imageProcessing.fragment.js.map +1 -1
- package/Shaders/kernelBlur.fragment.d.ts +1 -1
- package/Shaders/kernelBlur.fragment.js +1 -1
- package/Shaders/kernelBlur.fragment.js.map +1 -1
- package/Shaders/kernelBlur.vertex.d.ts +1 -1
- package/Shaders/kernelBlur.vertex.js +1 -1
- package/Shaders/kernelBlur.vertex.js.map +1 -1
- package/Shaders/layer.fragment.d.ts +1 -1
- package/Shaders/layer.fragment.js +1 -1
- package/Shaders/layer.fragment.js.map +1 -1
- package/Shaders/layer.vertex.d.ts +1 -1
- package/Shaders/layer.vertex.js +1 -1
- package/Shaders/layer.vertex.js.map +1 -1
- package/Shaders/lensFlare.fragment.d.ts +1 -1
- package/Shaders/lensFlare.fragment.js +1 -1
- package/Shaders/lensFlare.fragment.js.map +1 -1
- package/Shaders/lensFlare.vertex.d.ts +1 -1
- package/Shaders/lensFlare.vertex.js +1 -1
- package/Shaders/lensFlare.vertex.js.map +1 -1
- package/Shaders/lensHighlights.fragment.d.ts +1 -1
- package/Shaders/lensHighlights.fragment.js +1 -1
- package/Shaders/lensHighlights.fragment.js.map +1 -1
- package/Shaders/line.fragment.d.ts +1 -1
- package/Shaders/line.fragment.js +1 -1
- package/Shaders/line.fragment.js.map +1 -1
- package/Shaders/line.vertex.d.ts +1 -1
- package/Shaders/line.vertex.js +1 -1
- package/Shaders/line.vertex.js.map +1 -1
- package/Shaders/minmaxRedux.fragment.d.ts +1 -1
- package/Shaders/minmaxRedux.fragment.js +1 -1
- package/Shaders/minmaxRedux.fragment.js.map +1 -1
- package/Shaders/motionBlur.fragment.d.ts +1 -1
- package/Shaders/motionBlur.fragment.js +1 -1
- package/Shaders/motionBlur.fragment.js.map +1 -1
- package/Shaders/noise.fragment.d.ts +1 -1
- package/Shaders/noise.fragment.js +1 -1
- package/Shaders/noise.fragment.js.map +1 -1
- package/Shaders/oitBackBlend.fragment.d.ts +1 -1
- package/Shaders/oitBackBlend.fragment.js +1 -1
- package/Shaders/oitBackBlend.fragment.js.map +1 -1
- package/Shaders/oitFinal.fragment.d.ts +1 -1
- package/Shaders/oitFinal.fragment.js +1 -1
- package/Shaders/oitFinal.fragment.js.map +1 -1
- package/Shaders/outline.fragment.d.ts +1 -1
- package/Shaders/outline.fragment.js +1 -1
- package/Shaders/outline.fragment.js.map +1 -1
- package/Shaders/outline.vertex.d.ts +1 -1
- package/Shaders/outline.vertex.js +1 -1
- package/Shaders/outline.vertex.js.map +1 -1
- package/Shaders/particles.fragment.d.ts +3 -1
- package/Shaders/particles.fragment.js +9 -2
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.d.ts +3 -1
- package/Shaders/particles.vertex.js +5 -1
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/pass.fragment.d.ts +1 -1
- package/Shaders/pass.fragment.js +1 -1
- package/Shaders/pass.fragment.js.map +1 -1
- package/Shaders/passCube.fragment.d.ts +1 -1
- package/Shaders/passCube.fragment.js +1 -1
- package/Shaders/passCube.fragment.js.map +1 -1
- package/Shaders/pbr.fragment.d.ts +1 -1
- package/Shaders/pbr.fragment.js +1 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.d.ts +1 -1
- package/Shaders/pbr.vertex.js +2 -2
- package/Shaders/pbr.vertex.js.map +1 -1
- package/Shaders/postprocess.vertex.d.ts +1 -1
- package/Shaders/postprocess.vertex.js +1 -1
- package/Shaders/postprocess.vertex.js.map +1 -1
- package/Shaders/procedural.vertex.d.ts +1 -1
- package/Shaders/procedural.vertex.js +1 -1
- package/Shaders/procedural.vertex.js.map +1 -1
- package/Shaders/refraction.fragment.d.ts +1 -1
- package/Shaders/refraction.fragment.js +1 -1
- package/Shaders/refraction.fragment.js.map +1 -1
- package/Shaders/rgbdDecode.fragment.d.ts +1 -1
- package/Shaders/rgbdDecode.fragment.js +1 -1
- package/Shaders/rgbdDecode.fragment.js.map +1 -1
- package/Shaders/rgbdEncode.fragment.d.ts +1 -1
- package/Shaders/rgbdEncode.fragment.js +1 -1
- package/Shaders/rgbdEncode.fragment.js.map +1 -1
- package/Shaders/screenSpaceCurvature.fragment.d.ts +1 -1
- package/Shaders/screenSpaceCurvature.fragment.js +1 -1
- package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection.fragment.d.ts +1 -1
- package/Shaders/screenSpaceReflection.fragment.js +1 -1
- package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
- package/Shaders/shadowMap.fragment.d.ts +1 -1
- package/Shaders/shadowMap.fragment.js +1 -1
- package/Shaders/shadowMap.fragment.js.map +1 -1
- package/Shaders/shadowMap.vertex.d.ts +1 -1
- package/Shaders/shadowMap.vertex.js +1 -1
- package/Shaders/shadowMap.vertex.js.map +1 -1
- package/Shaders/sharpen.fragment.d.ts +1 -1
- package/Shaders/sharpen.fragment.js +1 -1
- package/Shaders/sharpen.fragment.js.map +1 -1
- package/Shaders/spriteMap.fragment.d.ts +1 -1
- package/Shaders/spriteMap.fragment.js +1 -1
- package/Shaders/spriteMap.fragment.js.map +1 -1
- package/Shaders/spriteMap.vertex.d.ts +1 -1
- package/Shaders/spriteMap.vertex.js +1 -1
- package/Shaders/spriteMap.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.d.ts +1 -1
- package/Shaders/sprites.fragment.js +1 -1
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.d.ts +1 -1
- package/Shaders/sprites.vertex.js +1 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/Shaders/ssao.fragment.d.ts +1 -1
- package/Shaders/ssao.fragment.js +1 -1
- package/Shaders/ssao.fragment.js.map +1 -1
- package/Shaders/ssao2.fragment.d.ts +1 -1
- package/Shaders/ssao2.fragment.js +1 -1
- package/Shaders/ssao2.fragment.js.map +1 -1
- package/Shaders/ssaoCombine.fragment.d.ts +1 -1
- package/Shaders/ssaoCombine.fragment.js +1 -1
- package/Shaders/ssaoCombine.fragment.js.map +1 -1
- package/Shaders/standard.fragment.d.ts +1 -1
- package/Shaders/standard.fragment.js +1 -1
- package/Shaders/standard.fragment.js.map +1 -1
- package/Shaders/stereoscopicInterlace.fragment.d.ts +1 -1
- package/Shaders/stereoscopicInterlace.fragment.js +1 -1
- package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
- package/Shaders/subSurfaceScattering.fragment.d.ts +1 -1
- package/Shaders/subSurfaceScattering.fragment.js +1 -1
- package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
- package/Shaders/tonemap.fragment.d.ts +1 -1
- package/Shaders/tonemap.fragment.js +1 -1
- package/Shaders/tonemap.fragment.js.map +1 -1
- package/Shaders/volumetricLightScattering.fragment.d.ts +1 -1
- package/Shaders/volumetricLightScattering.fragment.js +1 -1
- package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.d.ts +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.d.ts +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.js +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
- package/Shaders/vrDistortionCorrection.fragment.d.ts +1 -1
- package/Shaders/vrDistortionCorrection.fragment.js +1 -1
- package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.d.ts +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.d.ts +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
- package/Sprites/spriteManager.d.ts +4 -0
- package/Sprites/spriteManager.js +2 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteSceneComponent.d.ts +6 -6
- package/Sprites/spriteSceneComponent.js.map +1 -1
- package/Sprites/thinSprite.d.ts +5 -6
- package/Sprites/thinSprite.js +1 -2
- package/Sprites/thinSprite.js.map +1 -1
- package/States/IStencilState.d.ts +1 -1
- package/States/IStencilState.js.map +1 -1
- package/States/alphaCullingState.d.ts +1 -1
- package/States/alphaCullingState.js +1 -1
- package/States/alphaCullingState.js.map +1 -1
- package/States/depthCullingState.d.ts +1 -1
- package/States/depthCullingState.js +1 -1
- package/States/depthCullingState.js.map +1 -1
- package/States/stencilState.d.ts +1 -1
- package/States/stencilState.js +1 -1
- package/States/stencilState.js.map +1 -1
- package/States/stencilStateComposer.d.ts +1 -1
- package/States/stencilStateComposer.js +1 -1
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.d.ts +1 -1
- package/XR/features/WebXRControllerPhysics.js +1 -1
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.d.ts +3 -6
- package/XR/features/WebXRControllerPointerSelection.js +3 -6
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRLayers.d.ts +2 -2
- package/XR/features/WebXRLayers.js +4 -4
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRNearInteraction.js +2 -2
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +3 -4
- package/XR/motionController/webXRAbstractMotionController.js +2 -3
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/native/nativeXRFrame.d.ts +2 -2
- package/XR/native/nativeXRFrame.js +1 -1
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +3 -3
- package/XR/native/nativeXRRenderTarget.js +3 -3
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRCamera.d.ts +2 -2
- package/XR/webXRCamera.js +1 -1
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +6 -6
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXRExperienceHelper.d.ts +21 -1
- package/XR/webXRExperienceHelper.js +37 -7
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRInputSource.d.ts +1 -1
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRLayerWrapper.d.ts +1 -1
- package/XR/webXRLayerWrapper.js +1 -1
- package/XR/webXRLayerWrapper.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/XR/webXRSessionManager.d.ts +1 -2
- package/XR/webXRSessionManager.js +1 -2
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/abstractScene.d.ts +1 -1
- package/abstractScene.js +1 -1
- package/abstractScene.js.map +1 -1
- package/node.d.ts +40 -52
- package/node.js +40 -55
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +83 -107
- package/scene.js +94 -108
- package/scene.js.map +1 -1
- package/sceneComponent.d.ts +4 -2
- package/sceneComponent.js +4 -2
- package/sceneComponent.js.map +1 -1
- package/types.d.ts +2 -2
- package/types.js +1 -1
- package/types.js.map +1 -1
|
@@ -76,6 +76,10 @@ export declare class PointerInfoPre extends PointerInfoBase {
|
|
|
76
76
|
* Defines picking info coming from a near interaction (proximity instead of ray-based picking)
|
|
77
77
|
*/
|
|
78
78
|
nearInteractionPickingInfo: Nullable<PickingInfo>;
|
|
79
|
+
/**
|
|
80
|
+
* The original picking info that was used to trigger the pointer event
|
|
81
|
+
*/
|
|
82
|
+
originalPickingInfo: Nullable<PickingInfo>;
|
|
79
83
|
/**
|
|
80
84
|
* Defines the local position of the pointer on the canvas.
|
|
81
85
|
*/
|
package/Events/pointerEvents.js
CHANGED
|
@@ -72,6 +72,10 @@ export class PointerInfoPre extends PointerInfoBase {
|
|
|
72
72
|
* Ray from a pointer if available (eg. 6dof controller)
|
|
73
73
|
*/
|
|
74
74
|
this.ray = null;
|
|
75
|
+
/**
|
|
76
|
+
* The original picking info that was used to trigger the pointer event
|
|
77
|
+
*/
|
|
78
|
+
this.originalPickingInfo = null;
|
|
75
79
|
this.skipOnPointerObservable = false;
|
|
76
80
|
this.localPosition = new Vector2(localX, localY);
|
|
77
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointerEvents.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Events/pointerEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;GAEG;AACH,MAAM,OAAO,iBAAiB;;AAC1B;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,2BAAS,GAAG,IAAI,CAAC;AACxC;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,8BAAY,GAAG,IAAI,CAAC;AAC3C;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,4BAAU,GAAG,IAAI,CAAC;AACzC;;GAEG;AACoB,kCAAgB,GAAG,IAAI,CAAC;AAGnD;;GAEG;AACH,MAAM,OAAO,eAAe;IACxB;;;;OAIG;IACH;IACI;;OAEG;IACI,IAAY;IACnB;;OAEG;IACI,KAAkB;QAJlB,SAAI,GAAJ,IAAI,CAAQ;QAIZ,UAAK,GAAL,KAAK,CAAa;IAC1B,CAAC;CACP;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"pointerEvents.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Events/pointerEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C;;GAEG;AACH,MAAM,OAAO,iBAAiB;;AAC1B;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,2BAAS,GAAG,IAAI,CAAC;AACxC;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,8BAAY,GAAG,IAAI,CAAC;AAC3C;;GAEG;AACoB,6BAAW,GAAG,IAAI,CAAC;AAC1C;;GAEG;AACoB,4BAAU,GAAG,IAAI,CAAC;AACzC;;GAEG;AACoB,kCAAgB,GAAG,IAAI,CAAC;AAGnD;;GAEG;AACH,MAAM,OAAO,eAAe;IACxB;;;;OAIG;IACH;IACI;;OAEG;IACI,IAAY;IACnB;;OAEG;IACI,KAAkB;QAJlB,SAAI,GAAJ,IAAI,CAAQ;QAIZ,UAAK,GAAL,KAAK,CAAa;IAC1B,CAAC;CACP;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IA0B/C;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,KAAkB,EAAE,MAAc,EAAE,MAAc;QACxE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAjCvB;;WAEG;QACI,QAAG,GAAkB,IAAI,CAAC;QAOjC;;WAEG;QACI,wBAAmB,GAA0B,IAAI,CAAC;QAqBrD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,eAAe;IAC5C;;;;;OAKG;IACH,YACI,IAAY,EACZ,KAAkB;IAClB;;OAEG;IACI,QAA+B;QAEtC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAFZ,aAAQ,GAAR,QAAQ,CAAuB;IAG1C,CAAC;CACJ","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\nimport type { PickingInfo } from \"../Collisions/pickingInfo\";\r\nimport type { IMouseEvent } from \"./deviceInputEvents\";\r\n\r\ndeclare type Ray = import(\"../Culling/ray\").Ray;\r\n\r\n/**\r\n * Gather the list of pointer event types as constants.\r\n */\r\nexport class PointerEventTypes {\r\n /**\r\n * The pointerdown event is fired when a pointer becomes active. For mouse, it is fired when the device transitions from no buttons depressed to at least one button depressed. For touch, it is fired when physical contact is made with the digitizer. For pen, it is fired when the stylus makes physical contact with the digitizer.\r\n */\r\n public static readonly POINTERDOWN = 0x01;\r\n /**\r\n * The pointerup event is fired when a pointer is no longer active.\r\n */\r\n public static readonly POINTERUP = 0x02;\r\n /**\r\n * The pointermove event is fired when a pointer changes coordinates.\r\n */\r\n public static readonly POINTERMOVE = 0x04;\r\n /**\r\n * The pointerwheel event is fired when a mouse wheel has been rotated.\r\n */\r\n public static readonly POINTERWHEEL = 0x08;\r\n /**\r\n * The pointerpick event is fired when a mesh or sprite has been picked by the pointer.\r\n */\r\n public static readonly POINTERPICK = 0x10;\r\n /**\r\n * The pointertap event is fired when a the object has been touched and released without drag.\r\n */\r\n public static readonly POINTERTAP = 0x20;\r\n /**\r\n * The pointerdoubletap event is fired when a the object has been touched and released twice without drag.\r\n */\r\n public static readonly POINTERDOUBLETAP = 0x40;\r\n}\r\n\r\n/**\r\n * Base class of pointer info types.\r\n */\r\nexport class PointerInfoBase {\r\n /**\r\n * Instantiates the base class of pointers info.\r\n * @param type Defines the type of event (PointerEventTypes)\r\n * @param event Defines the related dom event\r\n */\r\n constructor(\r\n /**\r\n * Defines the type of event (PointerEventTypes)\r\n */\r\n public type: number,\r\n /**\r\n * Defines the related dom event\r\n */\r\n public event: IMouseEvent\r\n ) {}\r\n}\r\n\r\n/**\r\n * This class is used to store pointer related info for the onPrePointerObservable event.\r\n * Set the skipOnPointerObservable property to true if you want the engine to stop any process after this event is triggered, even not calling onPointerObservable\r\n */\r\nexport class PointerInfoPre extends PointerInfoBase {\r\n /**\r\n * Ray from a pointer if available (eg. 6dof controller)\r\n */\r\n public ray: Nullable<Ray> = null;\r\n\r\n /**\r\n * Defines picking info coming from a near interaction (proximity instead of ray-based picking)\r\n */\r\n public nearInteractionPickingInfo: Nullable<PickingInfo>;\r\n\r\n /**\r\n * The original picking info that was used to trigger the pointer event\r\n */\r\n public originalPickingInfo: Nullable<PickingInfo> = null;\r\n\r\n /**\r\n * Defines the local position of the pointer on the canvas.\r\n */\r\n public localPosition: Vector2;\r\n\r\n /**\r\n * Defines whether the engine should skip the next OnPointerObservable associated to this pre.\r\n */\r\n public skipOnPointerObservable: boolean;\r\n\r\n /**\r\n * Instantiates a PointerInfoPre to store pointer related info to the onPrePointerObservable event.\r\n * @param type Defines the type of event (PointerEventTypes)\r\n * @param event Defines the related dom event\r\n * @param localX Defines the local x coordinates of the pointer when the event occured\r\n * @param localY Defines the local y coordinates of the pointer when the event occured\r\n */\r\n constructor(type: number, event: IMouseEvent, localX: number, localY: number) {\r\n super(type, event);\r\n this.skipOnPointerObservable = false;\r\n this.localPosition = new Vector2(localX, localY);\r\n }\r\n}\r\n\r\n/**\r\n * This type contains all the data related to a pointer event in Babylon.js.\r\n * The event member is an instance of PointerEvent for all types except PointerWheel and is of type MouseWheelEvent when type equals PointerWheel. The different event types can be found in the PointerEventTypes class.\r\n */\r\nexport class PointerInfo extends PointerInfoBase {\r\n /**\r\n * Instantiates a PointerInfo to store pointer related info to the onPointerObservable event.\r\n * @param type Defines the type of event (PointerEventTypes)\r\n * @param event Defines the related dom event\r\n * @param pickInfo Defines the picking info associated to the info (if any)\\\r\n */\r\n constructor(\r\n type: number,\r\n event: IMouseEvent,\r\n /**\r\n * Defines the picking info associated to the info (if any)\\\r\n */\r\n public pickInfo: Nullable<PickingInfo>\r\n ) {\r\n super(type, event);\r\n }\r\n}\r\n\r\n/**\r\n * Data relating to a touch event on the screen.\r\n */\r\nexport interface PointerTouch {\r\n /**\r\n * X coordinate of touch.\r\n */\r\n x: number;\r\n /**\r\n * Y coordinate of touch.\r\n */\r\n y: number;\r\n /**\r\n * Id of touch. Unique for each finger.\r\n */\r\n pointerId: number;\r\n /**\r\n * Event type passed from DOM.\r\n */\r\n type: any;\r\n}\r\n"]}
|
|
@@ -24,7 +24,7 @@ export declare class OculusTouchController extends WebVRController {
|
|
|
24
24
|
*/
|
|
25
25
|
static QUEST_MODEL_BASE_URL: string;
|
|
26
26
|
/**
|
|
27
|
-
* @
|
|
27
|
+
* @internal
|
|
28
28
|
* If the controllers are running on a device that needs the updated Quest controller models
|
|
29
29
|
*/
|
|
30
30
|
static _IsQuest: boolean;
|
|
@@ -177,7 +177,7 @@ OculusTouchController.MODEL_RIGHT_FILENAME = "right.babylon";
|
|
|
177
177
|
*/
|
|
178
178
|
OculusTouchController.QUEST_MODEL_BASE_URL = "https://controllers.babylonjs.com/oculusQuest/";
|
|
179
179
|
/**
|
|
180
|
-
* @
|
|
180
|
+
* @internal
|
|
181
181
|
* If the controllers are running on a device that needs the updated Quest controller models
|
|
182
182
|
*/
|
|
183
183
|
OculusTouchController._IsQuest = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oculusTouchController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/oculusTouchController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../Misc/observable\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { WebVRController } from \"./webVRController\";\r\nimport type { ExtendedGamepadButton } from \"./poseEnabledController\";\r\nimport { PoseEnabledControllerType, PoseEnabledControllerHelper } from \"./poseEnabledController\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\n/**\r\n * Oculus Touch Controller\r\n */\r\nexport class OculusTouchController extends WebVRController {\r\n /**\r\n * Base Url for the controller model.\r\n */\r\n public static MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/oculus/\";\r\n /**\r\n * File name for the left controller model.\r\n */\r\n public static MODEL_LEFT_FILENAME: string = \"left.babylon\";\r\n /**\r\n * File name for the right controller model.\r\n */\r\n public static MODEL_RIGHT_FILENAME: string = \"right.babylon\";\r\n\r\n /**\r\n * Base Url for the Quest controller model.\r\n */\r\n public static QUEST_MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/oculusQuest/\";\r\n\r\n /**\r\n * @hidden\r\n * If the controllers are running on a device that needs the updated Quest controller models\r\n */\r\n public static _IsQuest = false;\r\n\r\n /**\r\n * Fired when the secondary trigger on this controller is modified\r\n */\r\n public onSecondaryTriggerStateChangedObservable = new Observable<ExtendedGamepadButton>();\r\n\r\n /**\r\n * Fired when the thumb rest on this controller is modified\r\n */\r\n public onThumbRestChangedObservable = new Observable<ExtendedGamepadButton>();\r\n\r\n /**\r\n * Creates a new OculusTouchController from a gamepad\r\n * @param vrGamepad the gamepad that the controller should be created from\r\n */\r\n constructor(vrGamepad: any) {\r\n super(vrGamepad);\r\n this.controllerType = PoseEnabledControllerType.OCULUS;\r\n }\r\n\r\n /**\r\n * Implements abstract method on WebVRController class, loading controller meshes and calling this.attachToMesh if successful.\r\n * @param scene scene in which to add meshes\r\n * @param meshLoaded optional callback function that will be called if the mesh loads successfully.\r\n */\r\n public initControllerMesh(scene: Scene, meshLoaded?: (mesh: AbstractMesh) => void) {\r\n let meshName;\r\n\r\n // Hand\r\n if (this.hand === \"left\") {\r\n meshName = OculusTouchController.MODEL_LEFT_FILENAME;\r\n } else {\r\n // Right is the default if no hand is specified\r\n meshName = OculusTouchController.MODEL_RIGHT_FILENAME;\r\n }\r\n\r\n SceneLoader.ImportMesh(\r\n \"\",\r\n OculusTouchController._IsQuest ? OculusTouchController.QUEST_MODEL_BASE_URL : OculusTouchController.MODEL_BASE_URL,\r\n meshName,\r\n scene,\r\n (newMeshes) => {\r\n /*\r\n Parent Mesh name: oculus_touch_left\r\n - body\r\n - trigger\r\n - thumbstick\r\n - grip\r\n - button_y\r\n - button_x\r\n - button_enter\r\n */\r\n\r\n this._defaultModel = OculusTouchController._IsQuest ? newMeshes[0] : newMeshes[1];\r\n this.attachToMesh(this._defaultModel);\r\n if (meshLoaded) {\r\n meshLoaded(this._defaultModel);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Fired when the A button on this controller is modified\r\n */\r\n public get onAButtonStateChangedObservable() {\r\n if (this.hand === \"right\") {\r\n return this.onMainButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No A button on left hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the B button on this controller is modified\r\n */\r\n public get onBButtonStateChangedObservable() {\r\n if (this.hand === \"right\") {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No B button on left hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the X button on this controller is modified\r\n */\r\n public get onXButtonStateChangedObservable() {\r\n if (this.hand === \"left\") {\r\n return this.onMainButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No X button on right hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the Y button on this controller is modified\r\n */\r\n public get onYButtonStateChangedObservable() {\r\n if (this.hand === \"left\") {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No Y button on right hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Called once for each button that changed state since the last frame\r\n * 0) thumb stick (touch, press, value = pressed (0,1)). value is in this.leftStick\r\n * 1) index trigger (touch (?), press (only when value > 0.1), value 0 to 1)\r\n * 2) secondary trigger (same)\r\n * 3) A (right) X (left), touch, pressed = value\r\n * 4) B / Y\r\n * 5) thumb rest\r\n * @param buttonIdx Which button index changed\r\n * @param state New state of the button\r\n */\r\n protected _handleButtonChange(buttonIdx: number, state: ExtendedGamepadButton) {\r\n const notifyObject = state; //{ state: state, changes: changes };\r\n const triggerDirection = this.hand === \"right\" ? -1 : 1;\r\n switch (buttonIdx) {\r\n case 0:\r\n this.onPadStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 1: // index trigger\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).rotation.x = -notifyObject.value * 0.2;\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).position.y = -notifyObject.value * 0.005;\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).position.z = -notifyObject.value * 0.005;\r\n }\r\n this.onTriggerStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 2: // secondary trigger\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[4]).position.x = triggerDirection * notifyObject.value * 0.0035;\r\n }\r\n this.onSecondaryTriggerStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 3:\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n if (notifyObject.pressed) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[1]).position.y = -0.001;\r\n } else {\r\n (<AbstractMesh>this._defaultModel.getChildren()[1]).position.y = 0;\r\n }\r\n }\r\n this.onMainButtonStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 4:\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n if (notifyObject.pressed) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[2]).position.y = -0.001;\r\n } else {\r\n (<AbstractMesh>this._defaultModel.getChildren()[2]).position.y = 0;\r\n }\r\n }\r\n this.onSecondaryButtonStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 5:\r\n this.onThumbRestChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n }\r\n }\r\n}\r\n\r\nPoseEnabledControllerHelper._ControllerFactories.push({\r\n canCreate: (gamepadInfo) => {\r\n // If the headset reports being an Oculus Quest, use the Quest controller models\r\n if (EngineStore.LastCreatedEngine && EngineStore.LastCreatedEngine._vrDisplay && EngineStore.LastCreatedEngine._vrDisplay.displayName === \"Oculus Quest\") {\r\n OculusTouchController._IsQuest = true;\r\n }\r\n return gamepadInfo.id.indexOf(\"Oculus Touch\") !== -1;\r\n },\r\n create: (gamepadInfo) => {\r\n return new OculusTouchController(gamepadInfo);\r\n },\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"oculusTouchController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/oculusTouchController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../Misc/observable\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { WebVRController } from \"./webVRController\";\r\nimport type { ExtendedGamepadButton } from \"./poseEnabledController\";\r\nimport { PoseEnabledControllerType, PoseEnabledControllerHelper } from \"./poseEnabledController\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\n/**\r\n * Oculus Touch Controller\r\n */\r\nexport class OculusTouchController extends WebVRController {\r\n /**\r\n * Base Url for the controller model.\r\n */\r\n public static MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/oculus/\";\r\n /**\r\n * File name for the left controller model.\r\n */\r\n public static MODEL_LEFT_FILENAME: string = \"left.babylon\";\r\n /**\r\n * File name for the right controller model.\r\n */\r\n public static MODEL_RIGHT_FILENAME: string = \"right.babylon\";\r\n\r\n /**\r\n * Base Url for the Quest controller model.\r\n */\r\n public static QUEST_MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/oculusQuest/\";\r\n\r\n /**\r\n * @internal\r\n * If the controllers are running on a device that needs the updated Quest controller models\r\n */\r\n public static _IsQuest = false;\r\n\r\n /**\r\n * Fired when the secondary trigger on this controller is modified\r\n */\r\n public onSecondaryTriggerStateChangedObservable = new Observable<ExtendedGamepadButton>();\r\n\r\n /**\r\n * Fired when the thumb rest on this controller is modified\r\n */\r\n public onThumbRestChangedObservable = new Observable<ExtendedGamepadButton>();\r\n\r\n /**\r\n * Creates a new OculusTouchController from a gamepad\r\n * @param vrGamepad the gamepad that the controller should be created from\r\n */\r\n constructor(vrGamepad: any) {\r\n super(vrGamepad);\r\n this.controllerType = PoseEnabledControllerType.OCULUS;\r\n }\r\n\r\n /**\r\n * Implements abstract method on WebVRController class, loading controller meshes and calling this.attachToMesh if successful.\r\n * @param scene scene in which to add meshes\r\n * @param meshLoaded optional callback function that will be called if the mesh loads successfully.\r\n */\r\n public initControllerMesh(scene: Scene, meshLoaded?: (mesh: AbstractMesh) => void) {\r\n let meshName;\r\n\r\n // Hand\r\n if (this.hand === \"left\") {\r\n meshName = OculusTouchController.MODEL_LEFT_FILENAME;\r\n } else {\r\n // Right is the default if no hand is specified\r\n meshName = OculusTouchController.MODEL_RIGHT_FILENAME;\r\n }\r\n\r\n SceneLoader.ImportMesh(\r\n \"\",\r\n OculusTouchController._IsQuest ? OculusTouchController.QUEST_MODEL_BASE_URL : OculusTouchController.MODEL_BASE_URL,\r\n meshName,\r\n scene,\r\n (newMeshes) => {\r\n /*\r\n Parent Mesh name: oculus_touch_left\r\n - body\r\n - trigger\r\n - thumbstick\r\n - grip\r\n - button_y\r\n - button_x\r\n - button_enter\r\n */\r\n\r\n this._defaultModel = OculusTouchController._IsQuest ? newMeshes[0] : newMeshes[1];\r\n this.attachToMesh(this._defaultModel);\r\n if (meshLoaded) {\r\n meshLoaded(this._defaultModel);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Fired when the A button on this controller is modified\r\n */\r\n public get onAButtonStateChangedObservable() {\r\n if (this.hand === \"right\") {\r\n return this.onMainButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No A button on left hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the B button on this controller is modified\r\n */\r\n public get onBButtonStateChangedObservable() {\r\n if (this.hand === \"right\") {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No B button on left hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the X button on this controller is modified\r\n */\r\n public get onXButtonStateChangedObservable() {\r\n if (this.hand === \"left\") {\r\n return this.onMainButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No X button on right hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Fired when the Y button on this controller is modified\r\n */\r\n public get onYButtonStateChangedObservable() {\r\n if (this.hand === \"left\") {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n } else {\r\n throw new Error(\"No Y button on right hand\");\r\n }\r\n }\r\n\r\n /**\r\n * Called once for each button that changed state since the last frame\r\n * 0) thumb stick (touch, press, value = pressed (0,1)). value is in this.leftStick\r\n * 1) index trigger (touch (?), press (only when value > 0.1), value 0 to 1)\r\n * 2) secondary trigger (same)\r\n * 3) A (right) X (left), touch, pressed = value\r\n * 4) B / Y\r\n * 5) thumb rest\r\n * @param buttonIdx Which button index changed\r\n * @param state New state of the button\r\n */\r\n protected _handleButtonChange(buttonIdx: number, state: ExtendedGamepadButton) {\r\n const notifyObject = state; //{ state: state, changes: changes };\r\n const triggerDirection = this.hand === \"right\" ? -1 : 1;\r\n switch (buttonIdx) {\r\n case 0:\r\n this.onPadStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 1: // index trigger\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).rotation.x = -notifyObject.value * 0.2;\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).position.y = -notifyObject.value * 0.005;\r\n (<AbstractMesh>this._defaultModel.getChildren()[3]).position.z = -notifyObject.value * 0.005;\r\n }\r\n this.onTriggerStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 2: // secondary trigger\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[4]).position.x = triggerDirection * notifyObject.value * 0.0035;\r\n }\r\n this.onSecondaryTriggerStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 3:\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n if (notifyObject.pressed) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[1]).position.y = -0.001;\r\n } else {\r\n (<AbstractMesh>this._defaultModel.getChildren()[1]).position.y = 0;\r\n }\r\n }\r\n this.onMainButtonStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 4:\r\n if (!OculusTouchController._IsQuest && this._defaultModel) {\r\n if (notifyObject.pressed) {\r\n (<AbstractMesh>this._defaultModel.getChildren()[2]).position.y = -0.001;\r\n } else {\r\n (<AbstractMesh>this._defaultModel.getChildren()[2]).position.y = 0;\r\n }\r\n }\r\n this.onSecondaryButtonStateChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n case 5:\r\n this.onThumbRestChangedObservable.notifyObservers(notifyObject);\r\n return;\r\n }\r\n }\r\n}\r\n\r\nPoseEnabledControllerHelper._ControllerFactories.push({\r\n canCreate: (gamepadInfo) => {\r\n // If the headset reports being an Oculus Quest, use the Quest controller models\r\n if (EngineStore.LastCreatedEngine && EngineStore.LastCreatedEngine._vrDisplay && EngineStore.LastCreatedEngine._vrDisplay.displayName === \"Oculus Quest\") {\r\n OculusTouchController._IsQuest = true;\r\n }\r\n return gamepadInfo.id.indexOf(\"Oculus Touch\") !== -1;\r\n },\r\n create: (gamepadInfo) => {\r\n return new OculusTouchController(gamepadInfo);\r\n },\r\n});\r\n"]}
|
|
@@ -55,7 +55,7 @@ export interface MutableGamepadButton {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Defines the ExtendedGamepadButton interface for a gamepad button which includes state provided by a pose controller
|
|
58
|
-
* @
|
|
58
|
+
* @internal
|
|
59
59
|
*/
|
|
60
60
|
export interface ExtendedGamepadButton extends GamepadButton {
|
|
61
61
|
/**
|
|
@@ -71,7 +71,7 @@ export interface ExtendedGamepadButton extends GamepadButton {
|
|
|
71
71
|
*/
|
|
72
72
|
readonly value: number;
|
|
73
73
|
}
|
|
74
|
-
/** @
|
|
74
|
+
/** @internal */
|
|
75
75
|
export interface _GamePadFactory {
|
|
76
76
|
/**
|
|
77
77
|
* Returns whether or not the current gamepad can be created for this type of controller.
|
|
@@ -90,9 +90,9 @@ export interface _GamePadFactory {
|
|
|
90
90
|
* Defines the PoseEnabledControllerHelper object that is used initialize a gamepad as the controller type it is specified as (eg. windows mixed reality controller)
|
|
91
91
|
*/
|
|
92
92
|
export declare class PoseEnabledControllerHelper {
|
|
93
|
-
/** @
|
|
93
|
+
/** @internal */
|
|
94
94
|
static _ControllerFactories: _GamePadFactory[];
|
|
95
|
-
/** @
|
|
95
|
+
/** @internal */
|
|
96
96
|
static _DefaultControllerFactory: Nullable<(gamepadInfo: any) => Gamepad>;
|
|
97
97
|
/**
|
|
98
98
|
* Initializes a gamepad as the controller type it is specified as (eg. windows mixed reality controller)
|
|
@@ -145,25 +145,24 @@ export declare class PoseEnabledController extends Gamepad implements PoseContro
|
|
|
145
145
|
private _maxRotationDistFromHeadset;
|
|
146
146
|
private _draggedRoomRotation;
|
|
147
147
|
/**
|
|
148
|
-
* @
|
|
149
|
-
* @hidden
|
|
148
|
+
* @internal
|
|
150
149
|
*/
|
|
151
150
|
_disableTrackPosition(fixedPosition: Vector3): void;
|
|
152
151
|
/**
|
|
153
152
|
* Internal, the mesh attached to the controller
|
|
154
|
-
* @
|
|
153
|
+
* @internal
|
|
155
154
|
*/
|
|
156
155
|
_mesh: Nullable<AbstractMesh>;
|
|
157
156
|
private _poseControlledCamera;
|
|
158
157
|
private _leftHandSystemQuaternion;
|
|
159
158
|
/**
|
|
160
159
|
* Internal, matrix used to convert room space to babylon space
|
|
161
|
-
* @
|
|
160
|
+
* @internal
|
|
162
161
|
*/
|
|
163
162
|
_deviceToWorld: Matrix;
|
|
164
163
|
/**
|
|
165
164
|
* Node to be used when casting a ray from the controller
|
|
166
|
-
* @
|
|
165
|
+
* @internal
|
|
167
166
|
*/
|
|
168
167
|
_pointingPoseNode: Nullable<TransformNode>;
|
|
169
168
|
/**
|
|
@@ -190,7 +189,7 @@ export declare class PoseEnabledController extends Gamepad implements PoseContro
|
|
|
190
189
|
*/
|
|
191
190
|
updateFromDevice(poseData: DevicePose): void;
|
|
192
191
|
/**
|
|
193
|
-
* @
|
|
192
|
+
* @internal
|
|
194
193
|
*/
|
|
195
194
|
_meshAttachedObservable: Observable<AbstractMesh>;
|
|
196
195
|
/**
|
|
@@ -54,9 +54,9 @@ export class PoseEnabledControllerHelper {
|
|
|
54
54
|
throw "The type of gamepad you are trying to load needs to be imported first or is not supported.";
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
/** @
|
|
57
|
+
/** @internal */
|
|
58
58
|
PoseEnabledControllerHelper._ControllerFactories = [];
|
|
59
|
-
/** @
|
|
59
|
+
/** @internal */
|
|
60
60
|
PoseEnabledControllerHelper._DefaultControllerFactory = null;
|
|
61
61
|
/**
|
|
62
62
|
* Defines the PoseEnabledController object that contains state of a vr capable controller
|
|
@@ -94,17 +94,17 @@ export class PoseEnabledController extends Gamepad {
|
|
|
94
94
|
this._leftHandSystemQuaternion = new Quaternion();
|
|
95
95
|
/**
|
|
96
96
|
* Internal, matrix used to convert room space to babylon space
|
|
97
|
-
* @
|
|
97
|
+
* @internal
|
|
98
98
|
*/
|
|
99
99
|
this._deviceToWorld = Matrix.Identity();
|
|
100
100
|
/**
|
|
101
101
|
* Node to be used when casting a ray from the controller
|
|
102
|
-
* @
|
|
102
|
+
* @internal
|
|
103
103
|
*/
|
|
104
104
|
this._pointingPoseNode = null;
|
|
105
105
|
this._workingMatrix = Matrix.Identity();
|
|
106
106
|
/**
|
|
107
|
-
* @
|
|
107
|
+
* @internal
|
|
108
108
|
*/
|
|
109
109
|
this._meshAttachedObservable = new Observable();
|
|
110
110
|
this.type = Gamepad.POSE_ENABLED;
|
|
@@ -116,8 +116,7 @@ export class PoseEnabledController extends Gamepad {
|
|
|
116
116
|
Quaternion.RotationYawPitchRollToRef(Math.PI, 0, 0, this._leftHandSystemQuaternion);
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
|
-
* @
|
|
120
|
-
* @hidden
|
|
119
|
+
* @internal
|
|
121
120
|
*/
|
|
122
121
|
_disableTrackPosition(fixedPosition) {
|
|
123
122
|
if (this._trackPosition) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poseEnabledController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/poseEnabledController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../Misc/observable\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Quaternion, Matrix, Vector3, TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Node } from \"../../node\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\n\r\nimport { Gamepad } from \"../../Gamepads/gamepad\";\r\nimport type { WebVRFreeCamera, PoseControlled, DevicePose } from \"../../Cameras/VR/webVRCamera\";\r\nimport type { TargetCamera } from \"../../Cameras/targetCamera\";\r\n\r\n/**\r\n * Defines the types of pose enabled controllers that are supported\r\n */\r\nexport enum PoseEnabledControllerType {\r\n /**\r\n * HTC Vive\r\n */\r\n VIVE,\r\n /**\r\n * Oculus Rift\r\n */\r\n OCULUS,\r\n /**\r\n * Windows mixed reality\r\n */\r\n WINDOWS,\r\n /**\r\n * Samsung gear VR\r\n */\r\n GEAR_VR,\r\n /**\r\n * Google Daydream\r\n */\r\n DAYDREAM,\r\n /**\r\n * Generic\r\n */\r\n GENERIC,\r\n}\r\n\r\n/**\r\n * Defines the MutableGamepadButton interface for the state of a gamepad button\r\n */\r\nexport interface MutableGamepadButton {\r\n /**\r\n * Value of the button/trigger\r\n */\r\n value: number;\r\n /**\r\n * If the button/trigger is currently touched\r\n */\r\n touched: boolean;\r\n /**\r\n * If the button/trigger is currently pressed\r\n */\r\n pressed: boolean;\r\n}\r\n\r\n/**\r\n * Defines the ExtendedGamepadButton interface for a gamepad button which includes state provided by a pose controller\r\n * @hidden\r\n */\r\nexport interface ExtendedGamepadButton extends GamepadButton {\r\n /**\r\n * If the button/trigger is currently pressed\r\n */\r\n readonly pressed: boolean;\r\n /**\r\n * If the button/trigger is currently touched\r\n */\r\n readonly touched: boolean;\r\n /**\r\n * Value of the button/trigger\r\n */\r\n readonly value: number;\r\n}\r\n\r\n/** @hidden */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface _GamePadFactory {\r\n /**\r\n * Returns whether or not the current gamepad can be created for this type of controller.\r\n * @param gamepadInfo Defines the gamepad info as received from the controller APIs.\r\n * @returns true if it can be created, otherwise false\r\n */\r\n canCreate(gamepadInfo: any): boolean;\r\n\r\n /**\r\n * Creates a new instance of the Gamepad.\r\n * @param gamepadInfo Defines the gamepad info as received from the controller APIs.\r\n * @returns the new gamepad instance\r\n */\r\n create(gamepadInfo: any): Gamepad;\r\n}\r\n\r\n/**\r\n * Defines the PoseEnabledControllerHelper object that is used initialize a gamepad as the controller type it is specified as (eg. windows mixed reality controller)\r\n */\r\nexport class PoseEnabledControllerHelper {\r\n /** @hidden */\r\n public static _ControllerFactories: _GamePadFactory[] = [];\r\n\r\n /** @hidden */\r\n public static _DefaultControllerFactory: Nullable<(gamepadInfo: any) => Gamepad> = null;\r\n\r\n /**\r\n * Initializes a gamepad as the controller type it is specified as (eg. windows mixed reality controller)\r\n * @param vrGamepad the gamepad to initialized\r\n * @returns a vr controller of the type the gamepad identified as\r\n */\r\n public static InitiateController(vrGamepad: any) {\r\n for (const factory of this._ControllerFactories) {\r\n if (factory.canCreate(vrGamepad)) {\r\n return factory.create(vrGamepad);\r\n }\r\n }\r\n\r\n if (this._DefaultControllerFactory) {\r\n return this._DefaultControllerFactory(vrGamepad);\r\n }\r\n\r\n throw \"The type of gamepad you are trying to load needs to be imported first or is not supported.\";\r\n }\r\n}\r\n\r\n/**\r\n * Defines the PoseEnabledController object that contains state of a vr capable controller\r\n */\r\nexport class PoseEnabledController extends Gamepad implements PoseControlled {\r\n /**\r\n * If the controller is used in a webXR session\r\n */\r\n public isXR = false;\r\n // Represents device position and rotation in room space. Should only be used to help calculate babylon space values\r\n private _deviceRoomPosition = Vector3.Zero();\r\n private _deviceRoomRotationQuaternion = new Quaternion();\r\n\r\n /**\r\n * The device position in babylon space\r\n */\r\n public devicePosition = Vector3.Zero();\r\n /**\r\n * The device rotation in babylon space\r\n */\r\n public deviceRotationQuaternion = new Quaternion();\r\n /**\r\n * The scale factor of the device in babylon space\r\n */\r\n public deviceScaleFactor: number = 1;\r\n\r\n /**\r\n * (Likely devicePosition should be used instead) The device position in its room space\r\n */\r\n public position: Vector3;\r\n /**\r\n * (Likely deviceRotationQuaternion should be used instead) The device rotation in its room space\r\n */\r\n public rotationQuaternion: Quaternion;\r\n /**\r\n * The type of controller (Eg. Windows mixed reality)\r\n */\r\n public controllerType: PoseEnabledControllerType;\r\n\r\n protected _calculatedPosition: Vector3;\r\n private _calculatedRotation: Quaternion;\r\n\r\n /**\r\n * The raw pose from the device\r\n */\r\n public rawPose: DevicePose; //GamepadPose;\r\n\r\n // Used to convert 6dof controllers to 3dof\r\n private _trackPosition = true;\r\n private _maxRotationDistFromHeadset = Math.PI / 5;\r\n private _draggedRoomRotation = 0;\r\n /**\r\n * @param fixedPosition\r\n * @hidden\r\n */\r\n public _disableTrackPosition(fixedPosition: Vector3) {\r\n if (this._trackPosition) {\r\n this._calculatedPosition.copyFrom(fixedPosition);\r\n this._trackPosition = false;\r\n }\r\n }\r\n\r\n /**\r\n * Internal, the mesh attached to the controller\r\n * @hidden\r\n */\r\n public _mesh: Nullable<AbstractMesh>; // a node that will be attached to this Gamepad\r\n private _poseControlledCamera: TargetCamera;\r\n\r\n private _leftHandSystemQuaternion: Quaternion = new Quaternion();\r\n\r\n /**\r\n * Internal, matrix used to convert room space to babylon space\r\n * @hidden\r\n */\r\n public _deviceToWorld = Matrix.Identity();\r\n\r\n /**\r\n * Node to be used when casting a ray from the controller\r\n * @hidden\r\n */\r\n public _pointingPoseNode: Nullable<TransformNode> = null;\r\n /**\r\n * Name of the child mesh that can be used to cast a ray from the controller\r\n */\r\n public static readonly POINTING_POSE = \"POINTING_POSE\";\r\n /**\r\n * Creates a new PoseEnabledController from a gamepad\r\n * @param browserGamepad the gamepad that the PoseEnabledController should be created from\r\n */\r\n constructor(browserGamepad: any) {\r\n super(browserGamepad.id, browserGamepad.index, browserGamepad);\r\n this.type = Gamepad.POSE_ENABLED;\r\n this.controllerType = PoseEnabledControllerType.GENERIC;\r\n this.position = Vector3.Zero();\r\n this.rotationQuaternion = new Quaternion();\r\n\r\n this._calculatedPosition = Vector3.Zero();\r\n this._calculatedRotation = new Quaternion();\r\n Quaternion.RotationYawPitchRollToRef(Math.PI, 0, 0, this._leftHandSystemQuaternion);\r\n }\r\n\r\n private _workingMatrix = Matrix.Identity();\r\n /**\r\n * Updates the state of the pose enabled controller and mesh based on the current position and rotation of the controller\r\n */\r\n public update() {\r\n super.update();\r\n this._updatePoseAndMesh();\r\n }\r\n\r\n /**\r\n * Updates only the pose device and mesh without doing any button event checking\r\n */\r\n protected _updatePoseAndMesh() {\r\n if (this.isXR) {\r\n return;\r\n }\r\n const pose: DevicePose = this.browserGamepad.pose;\r\n this.updateFromDevice(pose);\r\n\r\n if (\r\n !this._trackPosition &&\r\n EngineStore.LastCreatedScene &&\r\n EngineStore.LastCreatedScene.activeCamera &&\r\n (<WebVRFreeCamera>EngineStore.LastCreatedScene.activeCamera).devicePosition\r\n ) {\r\n const camera = <WebVRFreeCamera>EngineStore.LastCreatedScene.activeCamera;\r\n camera._computeDevicePosition();\r\n\r\n this._deviceToWorld.setTranslation(camera.devicePosition);\r\n if (camera.deviceRotationQuaternion) {\r\n camera._deviceRoomRotationQuaternion.toEulerAnglesToRef(TmpVectors.Vector3[0]);\r\n\r\n // Find the radian distance away that the headset is from the controllers rotation\r\n const distanceAway = Math.atan2(Math.sin(TmpVectors.Vector3[0].y - this._draggedRoomRotation), Math.cos(TmpVectors.Vector3[0].y - this._draggedRoomRotation));\r\n if (Math.abs(distanceAway) > this._maxRotationDistFromHeadset) {\r\n // Only rotate enouph to be within the _maxRotationDistFromHeadset\r\n const rotationAmount = distanceAway - (distanceAway < 0 ? -this._maxRotationDistFromHeadset : this._maxRotationDistFromHeadset);\r\n this._draggedRoomRotation += rotationAmount;\r\n\r\n // Rotate controller around headset\r\n const sin = Math.sin(-rotationAmount);\r\n const cos = Math.cos(-rotationAmount);\r\n this._calculatedPosition.x = this._calculatedPosition.x * cos - this._calculatedPosition.z * sin;\r\n this._calculatedPosition.z = this._calculatedPosition.x * sin + this._calculatedPosition.z * cos;\r\n }\r\n }\r\n }\r\n\r\n Vector3.TransformCoordinatesToRef(this._calculatedPosition, this._deviceToWorld, this.devicePosition);\r\n this._deviceToWorld.getRotationMatrixToRef(this._workingMatrix);\r\n Quaternion.FromRotationMatrixToRef(this._workingMatrix, this.deviceRotationQuaternion);\r\n this.deviceRotationQuaternion.multiplyInPlace(this._calculatedRotation);\r\n\r\n if (this._mesh) {\r\n this._mesh.position.copyFrom(this.devicePosition);\r\n\r\n if (this._mesh.rotationQuaternion) {\r\n this._mesh.rotationQuaternion.copyFrom(this.deviceRotationQuaternion);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Updates the state of the pose enbaled controller based on the raw pose data from the device\r\n * @param poseData raw pose fromthe device\r\n */\r\n updateFromDevice(poseData: DevicePose) {\r\n if (this.isXR) {\r\n return;\r\n }\r\n if (poseData) {\r\n this.rawPose = poseData;\r\n if (poseData.position) {\r\n this._deviceRoomPosition.copyFromFloats(poseData.position[0], poseData.position[1], -poseData.position[2]);\r\n if (this._mesh && this._mesh.getScene().useRightHandedSystem) {\r\n this._deviceRoomPosition.z *= -1;\r\n }\r\n if (this._trackPosition) {\r\n this._deviceRoomPosition.scaleToRef(this.deviceScaleFactor, this._calculatedPosition);\r\n }\r\n this._calculatedPosition.addInPlace(this.position);\r\n }\r\n const pose = this.rawPose;\r\n if (poseData.orientation && pose.orientation && pose.orientation.length === 4) {\r\n this._deviceRoomRotationQuaternion.copyFromFloats(pose.orientation[0], pose.orientation[1], -pose.orientation[2], -pose.orientation[3]);\r\n if (this._mesh) {\r\n if (this._mesh.getScene().useRightHandedSystem) {\r\n this._deviceRoomRotationQuaternion.z *= -1;\r\n this._deviceRoomRotationQuaternion.w *= -1;\r\n } else {\r\n this._deviceRoomRotationQuaternion.multiplyToRef(this._leftHandSystemQuaternion, this._deviceRoomRotationQuaternion);\r\n }\r\n }\r\n\r\n // if the camera is set, rotate to the camera's rotation\r\n this._deviceRoomRotationQuaternion.multiplyToRef(this.rotationQuaternion, this._calculatedRotation);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n public _meshAttachedObservable = new Observable<AbstractMesh>();\r\n\r\n /**\r\n * Attaches a mesh to the controller\r\n * @param mesh the mesh to be attached\r\n */\r\n public attachToMesh(mesh: AbstractMesh) {\r\n if (this._mesh) {\r\n this._mesh.parent = null;\r\n }\r\n this._mesh = mesh;\r\n if (this._poseControlledCamera) {\r\n this._mesh.parent = this._poseControlledCamera;\r\n }\r\n if (!this._mesh.rotationQuaternion) {\r\n this._mesh.rotationQuaternion = new Quaternion();\r\n }\r\n\r\n // Sync controller mesh and pointing pose node's state with controller, this is done to avoid a frame where position is 0,0,0 when attaching mesh\r\n if (!this.isXR) {\r\n this._updatePoseAndMesh();\r\n if (this._pointingPoseNode) {\r\n const parents = [];\r\n let obj: Node = this._pointingPoseNode;\r\n while (obj.parent) {\r\n parents.push(obj.parent);\r\n obj = obj.parent;\r\n }\r\n parents.reverse().forEach((p) => {\r\n p.computeWorldMatrix(true);\r\n });\r\n }\r\n }\r\n\r\n this._meshAttachedObservable.notifyObservers(mesh);\r\n }\r\n\r\n /**\r\n * Attaches the controllers mesh to a camera\r\n * @param camera the camera the mesh should be attached to\r\n */\r\n public attachToPoseControlledCamera(camera: TargetCamera) {\r\n this._poseControlledCamera = camera;\r\n if (this._mesh) {\r\n this._mesh.parent = this._poseControlledCamera;\r\n }\r\n }\r\n\r\n /**\r\n * Disposes of the controller\r\n */\r\n public dispose() {\r\n if (this._mesh) {\r\n this._mesh.dispose();\r\n }\r\n this._mesh = null;\r\n\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * The mesh that is attached to the controller\r\n */\r\n public get mesh(): Nullable<AbstractMesh> {\r\n return this._mesh;\r\n }\r\n\r\n /**\r\n * Gets the ray of the controller in the direction the controller is pointing\r\n * @param length the length the resulting ray should be\r\n * @returns a ray in the direction the controller is pointing\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (!this.mesh) {\r\n return new Ray(Vector3.Zero(), new Vector3(0, 0, 1), length);\r\n }\r\n\r\n const m = this._pointingPoseNode ? this._pointingPoseNode.getWorldMatrix() : this.mesh.getWorldMatrix();\r\n const origin = m.getTranslation();\r\n\r\n const forward = new Vector3(0, 0, -1);\r\n const forwardWorld = Vector3.TransformNormal(forward, m);\r\n\r\n const direction = Vector3.Normalize(forwardWorld);\r\n\r\n return new Ray(origin, direction, length);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"poseEnabledController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/poseEnabledController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../Misc/observable\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Quaternion, Matrix, Vector3, TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Node } from \"../../node\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { EngineStore } from \"../../Engines/engineStore\";\r\n\r\nimport { Gamepad } from \"../../Gamepads/gamepad\";\r\nimport type { WebVRFreeCamera, PoseControlled, DevicePose } from \"../../Cameras/VR/webVRCamera\";\r\nimport type { TargetCamera } from \"../../Cameras/targetCamera\";\r\n\r\n/**\r\n * Defines the types of pose enabled controllers that are supported\r\n */\r\nexport enum PoseEnabledControllerType {\r\n /**\r\n * HTC Vive\r\n */\r\n VIVE,\r\n /**\r\n * Oculus Rift\r\n */\r\n OCULUS,\r\n /**\r\n * Windows mixed reality\r\n */\r\n WINDOWS,\r\n /**\r\n * Samsung gear VR\r\n */\r\n GEAR_VR,\r\n /**\r\n * Google Daydream\r\n */\r\n DAYDREAM,\r\n /**\r\n * Generic\r\n */\r\n GENERIC,\r\n}\r\n\r\n/**\r\n * Defines the MutableGamepadButton interface for the state of a gamepad button\r\n */\r\nexport interface MutableGamepadButton {\r\n /**\r\n * Value of the button/trigger\r\n */\r\n value: number;\r\n /**\r\n * If the button/trigger is currently touched\r\n */\r\n touched: boolean;\r\n /**\r\n * If the button/trigger is currently pressed\r\n */\r\n pressed: boolean;\r\n}\r\n\r\n/**\r\n * Defines the ExtendedGamepadButton interface for a gamepad button which includes state provided by a pose controller\r\n * @internal\r\n */\r\nexport interface ExtendedGamepadButton extends GamepadButton {\r\n /**\r\n * If the button/trigger is currently pressed\r\n */\r\n readonly pressed: boolean;\r\n /**\r\n * If the button/trigger is currently touched\r\n */\r\n readonly touched: boolean;\r\n /**\r\n * Value of the button/trigger\r\n */\r\n readonly value: number;\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface _GamePadFactory {\r\n /**\r\n * Returns whether or not the current gamepad can be created for this type of controller.\r\n * @param gamepadInfo Defines the gamepad info as received from the controller APIs.\r\n * @returns true if it can be created, otherwise false\r\n */\r\n canCreate(gamepadInfo: any): boolean;\r\n\r\n /**\r\n * Creates a new instance of the Gamepad.\r\n * @param gamepadInfo Defines the gamepad info as received from the controller APIs.\r\n * @returns the new gamepad instance\r\n */\r\n create(gamepadInfo: any): Gamepad;\r\n}\r\n\r\n/**\r\n * Defines the PoseEnabledControllerHelper object that is used initialize a gamepad as the controller type it is specified as (eg. windows mixed reality controller)\r\n */\r\nexport class PoseEnabledControllerHelper {\r\n /** @internal */\r\n public static _ControllerFactories: _GamePadFactory[] = [];\r\n\r\n /** @internal */\r\n public static _DefaultControllerFactory: Nullable<(gamepadInfo: any) => Gamepad> = null;\r\n\r\n /**\r\n * Initializes a gamepad as the controller type it is specified as (eg. windows mixed reality controller)\r\n * @param vrGamepad the gamepad to initialized\r\n * @returns a vr controller of the type the gamepad identified as\r\n */\r\n public static InitiateController(vrGamepad: any) {\r\n for (const factory of this._ControllerFactories) {\r\n if (factory.canCreate(vrGamepad)) {\r\n return factory.create(vrGamepad);\r\n }\r\n }\r\n\r\n if (this._DefaultControllerFactory) {\r\n return this._DefaultControllerFactory(vrGamepad);\r\n }\r\n\r\n throw \"The type of gamepad you are trying to load needs to be imported first or is not supported.\";\r\n }\r\n}\r\n\r\n/**\r\n * Defines the PoseEnabledController object that contains state of a vr capable controller\r\n */\r\nexport class PoseEnabledController extends Gamepad implements PoseControlled {\r\n /**\r\n * If the controller is used in a webXR session\r\n */\r\n public isXR = false;\r\n // Represents device position and rotation in room space. Should only be used to help calculate babylon space values\r\n private _deviceRoomPosition = Vector3.Zero();\r\n private _deviceRoomRotationQuaternion = new Quaternion();\r\n\r\n /**\r\n * The device position in babylon space\r\n */\r\n public devicePosition = Vector3.Zero();\r\n /**\r\n * The device rotation in babylon space\r\n */\r\n public deviceRotationQuaternion = new Quaternion();\r\n /**\r\n * The scale factor of the device in babylon space\r\n */\r\n public deviceScaleFactor: number = 1;\r\n\r\n /**\r\n * (Likely devicePosition should be used instead) The device position in its room space\r\n */\r\n public position: Vector3;\r\n /**\r\n * (Likely deviceRotationQuaternion should be used instead) The device rotation in its room space\r\n */\r\n public rotationQuaternion: Quaternion;\r\n /**\r\n * The type of controller (Eg. Windows mixed reality)\r\n */\r\n public controllerType: PoseEnabledControllerType;\r\n\r\n protected _calculatedPosition: Vector3;\r\n private _calculatedRotation: Quaternion;\r\n\r\n /**\r\n * The raw pose from the device\r\n */\r\n public rawPose: DevicePose; //GamepadPose;\r\n\r\n // Used to convert 6dof controllers to 3dof\r\n private _trackPosition = true;\r\n private _maxRotationDistFromHeadset = Math.PI / 5;\r\n private _draggedRoomRotation = 0;\r\n /**\r\n * @internal\r\n */\r\n public _disableTrackPosition(fixedPosition: Vector3) {\r\n if (this._trackPosition) {\r\n this._calculatedPosition.copyFrom(fixedPosition);\r\n this._trackPosition = false;\r\n }\r\n }\r\n\r\n /**\r\n * Internal, the mesh attached to the controller\r\n * @internal\r\n */\r\n public _mesh: Nullable<AbstractMesh>; // a node that will be attached to this Gamepad\r\n private _poseControlledCamera: TargetCamera;\r\n\r\n private _leftHandSystemQuaternion: Quaternion = new Quaternion();\r\n\r\n /**\r\n * Internal, matrix used to convert room space to babylon space\r\n * @internal\r\n */\r\n public _deviceToWorld = Matrix.Identity();\r\n\r\n /**\r\n * Node to be used when casting a ray from the controller\r\n * @internal\r\n */\r\n public _pointingPoseNode: Nullable<TransformNode> = null;\r\n /**\r\n * Name of the child mesh that can be used to cast a ray from the controller\r\n */\r\n public static readonly POINTING_POSE = \"POINTING_POSE\";\r\n /**\r\n * Creates a new PoseEnabledController from a gamepad\r\n * @param browserGamepad the gamepad that the PoseEnabledController should be created from\r\n */\r\n constructor(browserGamepad: any) {\r\n super(browserGamepad.id, browserGamepad.index, browserGamepad);\r\n this.type = Gamepad.POSE_ENABLED;\r\n this.controllerType = PoseEnabledControllerType.GENERIC;\r\n this.position = Vector3.Zero();\r\n this.rotationQuaternion = new Quaternion();\r\n\r\n this._calculatedPosition = Vector3.Zero();\r\n this._calculatedRotation = new Quaternion();\r\n Quaternion.RotationYawPitchRollToRef(Math.PI, 0, 0, this._leftHandSystemQuaternion);\r\n }\r\n\r\n private _workingMatrix = Matrix.Identity();\r\n /**\r\n * Updates the state of the pose enabled controller and mesh based on the current position and rotation of the controller\r\n */\r\n public update() {\r\n super.update();\r\n this._updatePoseAndMesh();\r\n }\r\n\r\n /**\r\n * Updates only the pose device and mesh without doing any button event checking\r\n */\r\n protected _updatePoseAndMesh() {\r\n if (this.isXR) {\r\n return;\r\n }\r\n const pose: DevicePose = this.browserGamepad.pose;\r\n this.updateFromDevice(pose);\r\n\r\n if (\r\n !this._trackPosition &&\r\n EngineStore.LastCreatedScene &&\r\n EngineStore.LastCreatedScene.activeCamera &&\r\n (<WebVRFreeCamera>EngineStore.LastCreatedScene.activeCamera).devicePosition\r\n ) {\r\n const camera = <WebVRFreeCamera>EngineStore.LastCreatedScene.activeCamera;\r\n camera._computeDevicePosition();\r\n\r\n this._deviceToWorld.setTranslation(camera.devicePosition);\r\n if (camera.deviceRotationQuaternion) {\r\n camera._deviceRoomRotationQuaternion.toEulerAnglesToRef(TmpVectors.Vector3[0]);\r\n\r\n // Find the radian distance away that the headset is from the controllers rotation\r\n const distanceAway = Math.atan2(Math.sin(TmpVectors.Vector3[0].y - this._draggedRoomRotation), Math.cos(TmpVectors.Vector3[0].y - this._draggedRoomRotation));\r\n if (Math.abs(distanceAway) > this._maxRotationDistFromHeadset) {\r\n // Only rotate enouph to be within the _maxRotationDistFromHeadset\r\n const rotationAmount = distanceAway - (distanceAway < 0 ? -this._maxRotationDistFromHeadset : this._maxRotationDistFromHeadset);\r\n this._draggedRoomRotation += rotationAmount;\r\n\r\n // Rotate controller around headset\r\n const sin = Math.sin(-rotationAmount);\r\n const cos = Math.cos(-rotationAmount);\r\n this._calculatedPosition.x = this._calculatedPosition.x * cos - this._calculatedPosition.z * sin;\r\n this._calculatedPosition.z = this._calculatedPosition.x * sin + this._calculatedPosition.z * cos;\r\n }\r\n }\r\n }\r\n\r\n Vector3.TransformCoordinatesToRef(this._calculatedPosition, this._deviceToWorld, this.devicePosition);\r\n this._deviceToWorld.getRotationMatrixToRef(this._workingMatrix);\r\n Quaternion.FromRotationMatrixToRef(this._workingMatrix, this.deviceRotationQuaternion);\r\n this.deviceRotationQuaternion.multiplyInPlace(this._calculatedRotation);\r\n\r\n if (this._mesh) {\r\n this._mesh.position.copyFrom(this.devicePosition);\r\n\r\n if (this._mesh.rotationQuaternion) {\r\n this._mesh.rotationQuaternion.copyFrom(this.deviceRotationQuaternion);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Updates the state of the pose enbaled controller based on the raw pose data from the device\r\n * @param poseData raw pose fromthe device\r\n */\r\n updateFromDevice(poseData: DevicePose) {\r\n if (this.isXR) {\r\n return;\r\n }\r\n if (poseData) {\r\n this.rawPose = poseData;\r\n if (poseData.position) {\r\n this._deviceRoomPosition.copyFromFloats(poseData.position[0], poseData.position[1], -poseData.position[2]);\r\n if (this._mesh && this._mesh.getScene().useRightHandedSystem) {\r\n this._deviceRoomPosition.z *= -1;\r\n }\r\n if (this._trackPosition) {\r\n this._deviceRoomPosition.scaleToRef(this.deviceScaleFactor, this._calculatedPosition);\r\n }\r\n this._calculatedPosition.addInPlace(this.position);\r\n }\r\n const pose = this.rawPose;\r\n if (poseData.orientation && pose.orientation && pose.orientation.length === 4) {\r\n this._deviceRoomRotationQuaternion.copyFromFloats(pose.orientation[0], pose.orientation[1], -pose.orientation[2], -pose.orientation[3]);\r\n if (this._mesh) {\r\n if (this._mesh.getScene().useRightHandedSystem) {\r\n this._deviceRoomRotationQuaternion.z *= -1;\r\n this._deviceRoomRotationQuaternion.w *= -1;\r\n } else {\r\n this._deviceRoomRotationQuaternion.multiplyToRef(this._leftHandSystemQuaternion, this._deviceRoomRotationQuaternion);\r\n }\r\n }\r\n\r\n // if the camera is set, rotate to the camera's rotation\r\n this._deviceRoomRotationQuaternion.multiplyToRef(this.rotationQuaternion, this._calculatedRotation);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _meshAttachedObservable = new Observable<AbstractMesh>();\r\n\r\n /**\r\n * Attaches a mesh to the controller\r\n * @param mesh the mesh to be attached\r\n */\r\n public attachToMesh(mesh: AbstractMesh) {\r\n if (this._mesh) {\r\n this._mesh.parent = null;\r\n }\r\n this._mesh = mesh;\r\n if (this._poseControlledCamera) {\r\n this._mesh.parent = this._poseControlledCamera;\r\n }\r\n if (!this._mesh.rotationQuaternion) {\r\n this._mesh.rotationQuaternion = new Quaternion();\r\n }\r\n\r\n // Sync controller mesh and pointing pose node's state with controller, this is done to avoid a frame where position is 0,0,0 when attaching mesh\r\n if (!this.isXR) {\r\n this._updatePoseAndMesh();\r\n if (this._pointingPoseNode) {\r\n const parents = [];\r\n let obj: Node = this._pointingPoseNode;\r\n while (obj.parent) {\r\n parents.push(obj.parent);\r\n obj = obj.parent;\r\n }\r\n parents.reverse().forEach((p) => {\r\n p.computeWorldMatrix(true);\r\n });\r\n }\r\n }\r\n\r\n this._meshAttachedObservable.notifyObservers(mesh);\r\n }\r\n\r\n /**\r\n * Attaches the controllers mesh to a camera\r\n * @param camera the camera the mesh should be attached to\r\n */\r\n public attachToPoseControlledCamera(camera: TargetCamera) {\r\n this._poseControlledCamera = camera;\r\n if (this._mesh) {\r\n this._mesh.parent = this._poseControlledCamera;\r\n }\r\n }\r\n\r\n /**\r\n * Disposes of the controller\r\n */\r\n public dispose() {\r\n if (this._mesh) {\r\n this._mesh.dispose();\r\n }\r\n this._mesh = null;\r\n\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * The mesh that is attached to the controller\r\n */\r\n public get mesh(): Nullable<AbstractMesh> {\r\n return this._mesh;\r\n }\r\n\r\n /**\r\n * Gets the ray of the controller in the direction the controller is pointing\r\n * @param length the length the resulting ray should be\r\n * @returns a ray in the direction the controller is pointing\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (!this.mesh) {\r\n return new Ray(Vector3.Zero(), new Vector3(0, 0, 1), length);\r\n }\r\n\r\n const m = this._pointingPoseNode ? this._pointingPoseNode.getWorldMatrix() : this.mesh.getWorldMatrix();\r\n const origin = m.getTranslation();\r\n\r\n const forward = new Vector3(0, 0, -1);\r\n const forwardWorld = Vector3.TransformNormal(forward, m);\r\n\r\n const direction = Vector3.Normalize(forwardWorld);\r\n\r\n return new Ray(origin, direction, length);\r\n }\r\n}\r\n"]}
|
|
@@ -111,7 +111,7 @@ export declare class WindowsMotionController extends WebVRController {
|
|
|
111
111
|
* Moves the axis on the controller mesh based on its current state
|
|
112
112
|
* @param axis the index of the axis
|
|
113
113
|
* @param axisValue the value of the axis which determines the meshes new position
|
|
114
|
-
* @
|
|
114
|
+
* @internal
|
|
115
115
|
*/
|
|
116
116
|
protected _lerpAxisTransform(axis: number, axisValue: number): void;
|
|
117
117
|
/**
|
|
@@ -174,7 +174,7 @@ export class WindowsMotionController extends WebVRController {
|
|
|
174
174
|
* Moves the axis on the controller mesh based on its current state
|
|
175
175
|
* @param axis the index of the axis
|
|
176
176
|
* @param axisValue the value of the axis which determines the meshes new position
|
|
177
|
-
* @
|
|
177
|
+
* @internal
|
|
178
178
|
*/
|
|
179
179
|
_lerpAxisTransform(axis, axisValue) {
|
|
180
180
|
if (!this._loadedMeshInfo) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowsMotionController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/windowsMotionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Quaternion, Vector3 } from \"../../Maths/math.vector\";\r\nimport type { Node } from \"../../node\";\r\nimport { Mesh } from \"../../Meshes/mesh\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { WebVRController } from \"./webVRController\";\r\nimport { GenericController } from \"./genericController\";\r\nimport type { ExtendedGamepadButton } from \"./poseEnabledController\";\r\nimport { PoseEnabledController, PoseEnabledControllerType, PoseEnabledControllerHelper } from \"./poseEnabledController\";\r\nimport type { StickValues } from \"../../Gamepads/gamepad\";\r\n\r\n/**\r\n * Defines the LoadedMeshInfo object that describes information about the loaded webVR controller mesh\r\n */\r\nclass LoadedMeshInfo {\r\n /**\r\n * Root of the mesh\r\n */\r\n public rootNode: AbstractMesh;\r\n /**\r\n * Node of the mesh corresponding to the direction the ray should be cast from the controller\r\n */\r\n public pointingPoseNode: TransformNode;\r\n /**\r\n * Map of the button meshes contained in the controller\r\n */\r\n public buttonMeshes: { [id: string]: IButtonMeshInfo } = {};\r\n /**\r\n * Map of the axis meshes contained in the controller\r\n */\r\n public axisMeshes: { [id: number]: IAxisMeshInfo } = {};\r\n}\r\n\r\n/**\r\n * Defines the IMeshInfo object that describes information a webvr controller mesh\r\n */\r\ninterface IMeshInfo {\r\n /**\r\n * Index of the mesh inside the root mesh\r\n */\r\n index: number;\r\n /**\r\n * The mesh\r\n */\r\n value: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the IButtonMeshInfo object that describes a button mesh\r\n */\r\ninterface IButtonMeshInfo extends IMeshInfo {\r\n /**\r\n * The mesh that should be displayed when pressed\r\n */\r\n pressed: TransformNode;\r\n /**\r\n * The mesh that should be displayed when not pressed\r\n */\r\n unpressed: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the IAxisMeshInfo object that describes an axis mesh\r\n */\r\ninterface IAxisMeshInfo extends IMeshInfo {\r\n /**\r\n * The mesh that should be set when at its min\r\n */\r\n min: TransformNode;\r\n /**\r\n * The mesh that should be set when at its max\r\n */\r\n max: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the WindowsMotionController object that the state of the windows motion controller\r\n */\r\nexport class WindowsMotionController extends WebVRController {\r\n /**\r\n * The base url used to load the left and right controller models\r\n */\r\n public static MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/microsoft/\";\r\n /**\r\n * The name of the left controller model file\r\n */\r\n public static MODEL_LEFT_FILENAME: string = \"left.glb\";\r\n /**\r\n * The name of the right controller model file\r\n */\r\n public static MODEL_RIGHT_FILENAME: string = \"right.glb\";\r\n\r\n /**\r\n * The controller name prefix for this controller type\r\n */\r\n public static readonly GAMEPAD_ID_PREFIX: string = \"Spatial Controller (Spatial Interaction Source) \";\r\n /**\r\n * The controller id pattern for this controller type\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private static readonly GAMEPAD_ID_PATTERN = /([0-9a-zA-Z]+-[0-9a-zA-Z]+)$/;\r\n\r\n private _loadedMeshInfo: Nullable<LoadedMeshInfo>;\r\n protected readonly _mapping = {\r\n // Semantic button names\r\n buttons: [\"thumbstick\", \"trigger\", \"grip\", \"menu\", \"trackpad\"],\r\n // trigger, grip, trackpad, thumbstick, menu\r\n\r\n // A mapping of the button name to glTF model node name\r\n // that should be transformed by button value.\r\n buttonMeshNames: {\r\n trigger: \"SELECT\",\r\n menu: \"MENU\",\r\n grip: \"GRASP\",\r\n thumbstick: \"THUMBSTICK_PRESS\",\r\n trackpad: \"TOUCHPAD_PRESS\",\r\n },\r\n // This mapping is used to translate from the Motion Controller to Babylon semantics\r\n buttonObservableNames: {\r\n trigger: \"onTriggerStateChangedObservable\",\r\n menu: \"onSecondaryButtonStateChangedObservable\",\r\n grip: \"onMainButtonStateChangedObservable\",\r\n thumbstick: \"onPadStateChangedObservable\",\r\n trackpad: \"onTrackpadChangedObservable\",\r\n },\r\n // A mapping of the axis name to glTF model node name\r\n // that should be transformed by axis value.\r\n // This array mirrors the browserGamepad.axes array, such that\r\n // the mesh corresponding to axis 0 is in this array index 0.\r\n axisMeshNames: [\"THUMBSTICK_X\", \"THUMBSTICK_Y\", \"TOUCHPAD_TOUCH_X\", \"TOUCHPAD_TOUCH_Y\"],\r\n // upside down in webxr\r\n pointingPoseMeshName: PoseEnabledController.POINTING_POSE,\r\n };\r\n\r\n /**\r\n * Fired when the trackpad on this controller is clicked\r\n */\r\n public onTrackpadChangedObservable = new Observable<ExtendedGamepadButton>();\r\n /**\r\n * Fired when the trackpad on this controller is modified\r\n */\r\n public onTrackpadValuesChangedObservable = new Observable<StickValues>();\r\n /**\r\n * The current x and y values of this controller's trackpad\r\n */\r\n public trackpad: StickValues = { x: 0, y: 0 };\r\n\r\n /**\r\n * Creates a new WindowsMotionController from a gamepad\r\n * @param vrGamepad the gamepad that the controller should be created from\r\n */\r\n constructor(vrGamepad: any) {\r\n super(vrGamepad);\r\n this.controllerType = PoseEnabledControllerType.WINDOWS;\r\n this._loadedMeshInfo = null;\r\n }\r\n\r\n /**\r\n * Fired when the trigger on this controller is modified\r\n */\r\n public get onTriggerButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onTriggerStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the menu button on this controller is modified\r\n */\r\n public get onMenuButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the grip button on this controller is modified\r\n */\r\n public get onGripButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onMainButtonStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the thumbstick button on this controller is modified\r\n */\r\n public get onThumbstickButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onPadStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the touchpad button on this controller is modified\r\n */\r\n public get onTouchpadButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onTrackpadChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the touchpad values on this controller are modified\r\n */\r\n public get onTouchpadValuesChangedObservable(): Observable<StickValues> {\r\n return this.onTrackpadValuesChangedObservable;\r\n }\r\n\r\n protected _updateTrackpad() {\r\n if (this.browserGamepad.axes && (this.browserGamepad.axes[2] != this.trackpad.x || this.browserGamepad.axes[3] != this.trackpad.y)) {\r\n this.trackpad.x = this.browserGamepad[\"axes\"][this._mapping.axisMeshNames.indexOf(\"TOUCHPAD_TOUCH_X\")];\r\n this.trackpad.y = this.browserGamepad[\"axes\"][this._mapping.axisMeshNames.indexOf(\"TOUCHPAD_TOUCH_Y\")];\r\n this.onTrackpadValuesChangedObservable.notifyObservers(this.trackpad);\r\n }\r\n }\r\n\r\n /**\r\n * Called once per frame by the engine.\r\n */\r\n public update() {\r\n super.update();\r\n if (this.browserGamepad.axes) {\r\n this._updateTrackpad();\r\n // Only need to animate axes if there is a loaded mesh\r\n if (this._loadedMeshInfo) {\r\n for (let axis = 0; axis < this._mapping.axisMeshNames.length; axis++) {\r\n this._lerpAxisTransform(axis, this.browserGamepad.axes[axis]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called once for each button that changed state since the last frame\r\n * @param buttonIdx Which button index changed\r\n * @param state New state of the button\r\n */\r\n protected _handleButtonChange(buttonIdx: number, state: ExtendedGamepadButton) {\r\n const buttonName = this._mapping.buttons[buttonIdx];\r\n if (!buttonName) {\r\n return;\r\n }\r\n\r\n // Update the trackpad to ensure trackpad.x/y are accurate during button events between frames\r\n this._updateTrackpad();\r\n\r\n // Only emit events for buttons that we know how to map from index to name\r\n const observable = (<any>this)[(<any>this._mapping.buttonObservableNames)[buttonName]];\r\n if (observable) {\r\n observable.notifyObservers(state);\r\n }\r\n\r\n this._lerpButtonTransform(buttonName, state.value);\r\n }\r\n\r\n /**\r\n * Moves the buttons on the controller mesh based on their current state\r\n * @param buttonName the name of the button to move\r\n * @param buttonValue the value of the button which determines the buttons new position\r\n */\r\n protected _lerpButtonTransform(buttonName: string, buttonValue: number) {\r\n // If there is no loaded mesh, there is nothing to transform.\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n const meshInfo = this._loadedMeshInfo.buttonMeshes[buttonName];\r\n\r\n if (!meshInfo || !meshInfo.unpressed.rotationQuaternion || !meshInfo.pressed.rotationQuaternion || !meshInfo.value.rotationQuaternion) {\r\n return;\r\n }\r\n\r\n Quaternion.SlerpToRef(meshInfo.unpressed.rotationQuaternion, meshInfo.pressed.rotationQuaternion, buttonValue, meshInfo.value.rotationQuaternion);\r\n Vector3.LerpToRef(meshInfo.unpressed.position, meshInfo.pressed.position, buttonValue, meshInfo.value.position);\r\n }\r\n\r\n /**\r\n * Moves the axis on the controller mesh based on its current state\r\n * @param axis the index of the axis\r\n * @param axisValue the value of the axis which determines the meshes new position\r\n * @hidden\r\n */\r\n protected _lerpAxisTransform(axis: number, axisValue: number) {\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n const meshInfo = this._loadedMeshInfo.axisMeshes[axis];\r\n if (!meshInfo) {\r\n return;\r\n }\r\n\r\n if (!meshInfo.min.rotationQuaternion || !meshInfo.max.rotationQuaternion || !meshInfo.value.rotationQuaternion) {\r\n return;\r\n }\r\n\r\n // Convert from gamepad value range (-1 to +1) to lerp range (0 to 1)\r\n const lerpValue = axisValue * 0.5 + 0.5;\r\n Quaternion.SlerpToRef(meshInfo.min.rotationQuaternion, meshInfo.max.rotationQuaternion, lerpValue, meshInfo.value.rotationQuaternion);\r\n Vector3.LerpToRef(meshInfo.min.position, meshInfo.max.position, lerpValue, meshInfo.value.position);\r\n }\r\n\r\n /**\r\n * Implements abstract method on WebVRController class, loading controller meshes and calling this.attachToMesh if successful.\r\n * @param scene scene in which to add meshes\r\n * @param meshLoaded optional callback function that will be called if the mesh loads successfully.\r\n * @param forceDefault\r\n */\r\n public initControllerMesh(scene: Scene, meshLoaded?: (mesh: AbstractMesh) => void, forceDefault = false) {\r\n let path: string;\r\n let filename: string;\r\n\r\n // Checking if GLB loader is present\r\n if (SceneLoader.IsPluginForExtensionAvailable(\".glb\")) {\r\n // Determine the device specific folder based on the ID suffix\r\n let device = \"default\";\r\n if (this.id && !forceDefault) {\r\n const match = this.id.match(WindowsMotionController.GAMEPAD_ID_PATTERN);\r\n device = (match && match[0]) || device;\r\n }\r\n\r\n // Hand\r\n if (this.hand === \"left\") {\r\n filename = WindowsMotionController.MODEL_LEFT_FILENAME;\r\n } else {\r\n // Right is the default if no hand is specified\r\n filename = WindowsMotionController.MODEL_RIGHT_FILENAME;\r\n }\r\n\r\n path = WindowsMotionController.MODEL_BASE_URL + device + \"/\";\r\n } else {\r\n Logger.Warn(\"You need to reference GLTF loader to load Windows Motion Controllers model. Falling back to generic models\");\r\n path = GenericController.MODEL_BASE_URL;\r\n filename = GenericController.MODEL_FILENAME;\r\n }\r\n\r\n SceneLoader.ImportMesh(\r\n \"\",\r\n path,\r\n filename,\r\n scene,\r\n (meshes: AbstractMesh[]) => {\r\n // glTF files successfully loaded from the remote server, now process them to ensure they are in the right format.\r\n this._loadedMeshInfo = this._processModel(scene, meshes);\r\n\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n this._defaultModel = this._loadedMeshInfo.rootNode;\r\n this.attachToMesh(this._defaultModel);\r\n\r\n if (meshLoaded) {\r\n meshLoaded(this._defaultModel);\r\n }\r\n },\r\n null,\r\n (scene: Scene, message: string) => {\r\n Logger.Log(message);\r\n Logger.Warn(\"Failed to retrieve controller model from the remote server: \" + path + filename);\r\n if (!forceDefault) {\r\n this.initControllerMesh(scene, meshLoaded, true);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Takes a list of meshes (as loaded from the glTF file) and finds the root node, as well as nodes that\r\n * can be transformed by button presses and axes values, based on this._mapping.\r\n *\r\n * @param scene scene in which the meshes exist\r\n * @param meshes list of meshes that make up the controller model to process\r\n * @returns structured view of the given meshes, with mapping of buttons and axes to meshes that can be transformed.\r\n */\r\n private _processModel(scene: Scene, meshes: AbstractMesh[]): Nullable<LoadedMeshInfo> {\r\n let loadedMeshInfo = null;\r\n\r\n // Create a new mesh to contain the glTF hierarchy\r\n const parentMesh = new Mesh(this.id + \" \" + this.hand, scene);\r\n\r\n // Find the root node in the loaded glTF scene, and attach it as a child of 'parentMesh'\r\n let childMesh: Nullable<AbstractMesh> = null;\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n\r\n if (!mesh.parent) {\r\n // Exclude controller meshes from picking results\r\n mesh.isPickable = false;\r\n\r\n // Handle root node, attach to the new parentMesh\r\n childMesh = mesh;\r\n break;\r\n }\r\n }\r\n\r\n if (childMesh) {\r\n childMesh.setParent(parentMesh);\r\n\r\n // Create our mesh info. Note that this method will always return non-null.\r\n loadedMeshInfo = this._createMeshInfo(parentMesh);\r\n } else {\r\n Logger.Warn(\"Could not find root node in model file.\");\r\n }\r\n\r\n return loadedMeshInfo;\r\n }\r\n\r\n private _createMeshInfo(rootNode: AbstractMesh): LoadedMeshInfo {\r\n const loadedMeshInfo = new LoadedMeshInfo();\r\n let i;\r\n loadedMeshInfo.rootNode = rootNode;\r\n\r\n // Reset the caches\r\n loadedMeshInfo.buttonMeshes = {};\r\n loadedMeshInfo.axisMeshes = {};\r\n\r\n // Button Meshes\r\n for (i = 0; i < this._mapping.buttons.length; i++) {\r\n const buttonMeshName = (<any>this._mapping.buttonMeshNames)[this._mapping.buttons[i]];\r\n if (!buttonMeshName) {\r\n Logger.Log(\"Skipping unknown button at index: \" + i + \" with mapped name: \" + this._mapping.buttons[i]);\r\n continue;\r\n }\r\n\r\n const buttonMesh = getChildByName(rootNode, buttonMeshName);\r\n if (!buttonMesh) {\r\n Logger.Warn(\"Missing button mesh with name: \" + buttonMeshName);\r\n continue;\r\n }\r\n\r\n const buttonMeshInfo = {\r\n index: i,\r\n value: getImmediateChildByName(buttonMesh, \"VALUE\"),\r\n pressed: getImmediateChildByName(buttonMesh, \"PRESSED\"),\r\n unpressed: getImmediateChildByName(buttonMesh, \"UNPRESSED\"),\r\n };\r\n if (buttonMeshInfo.value && buttonMeshInfo.pressed && buttonMeshInfo.unpressed) {\r\n loadedMeshInfo.buttonMeshes[this._mapping.buttons[i]] = buttonMeshInfo;\r\n } else {\r\n // If we didn't find the mesh, it simply means this button won't have transforms applied as mapped button value changes.\r\n Logger.Warn(\r\n \"Missing button submesh under mesh with name: \" +\r\n buttonMeshName +\r\n \"(VALUE: \" +\r\n !!buttonMeshInfo.value +\r\n \", PRESSED: \" +\r\n !!buttonMeshInfo.pressed +\r\n \", UNPRESSED:\" +\r\n !!buttonMeshInfo.unpressed +\r\n \")\"\r\n );\r\n }\r\n }\r\n\r\n // Axis Meshes\r\n for (i = 0; i < this._mapping.axisMeshNames.length; i++) {\r\n const axisMeshName = this._mapping.axisMeshNames[i];\r\n if (!axisMeshName) {\r\n Logger.Log(\"Skipping unknown axis at index: \" + i);\r\n continue;\r\n }\r\n\r\n const axisMesh = getChildByName(rootNode, axisMeshName);\r\n if (!axisMesh) {\r\n Logger.Warn(\"Missing axis mesh with name: \" + axisMeshName);\r\n continue;\r\n }\r\n\r\n const axisMeshInfo = {\r\n index: i,\r\n value: getImmediateChildByName(axisMesh, \"VALUE\"),\r\n min: getImmediateChildByName(axisMesh, \"MIN\"),\r\n max: getImmediateChildByName(axisMesh, \"MAX\"),\r\n };\r\n if (axisMeshInfo.value && axisMeshInfo.min && axisMeshInfo.max) {\r\n loadedMeshInfo.axisMeshes[i] = axisMeshInfo;\r\n } else {\r\n // If we didn't find the mesh, it simply means thit axis won't have transforms applied as mapped axis values change.\r\n Logger.Warn(\r\n \"Missing axis submesh under mesh with name: \" +\r\n axisMeshName +\r\n \"(VALUE: \" +\r\n !!axisMeshInfo.value +\r\n \", MIN: \" +\r\n !!axisMeshInfo.min +\r\n \", MAX:\" +\r\n !!axisMeshInfo.max +\r\n \")\"\r\n );\r\n }\r\n }\r\n\r\n // Pointing Ray\r\n loadedMeshInfo.pointingPoseNode = getChildByName(rootNode, this._mapping.pointingPoseMeshName);\r\n if (!loadedMeshInfo.pointingPoseNode) {\r\n Logger.Warn(\"Missing pointing pose mesh with name: \" + this._mapping.pointingPoseMeshName);\r\n } else {\r\n this._pointingPoseNode = loadedMeshInfo.pointingPoseNode;\r\n }\r\n\r\n return loadedMeshInfo;\r\n\r\n // Look through all children recursively. This will return null if no mesh exists with the given name.\r\n function getChildByName(node: Node, name: string) {\r\n return <TransformNode>node.getChildren((n) => n.name === name, false)[0];\r\n }\r\n // Look through only immediate children. This will return null if no mesh exists with the given name.\r\n function getImmediateChildByName(node: Node, name: string): TransformNode {\r\n return <TransformNode>node.getChildren((n) => n.name == name, true)[0];\r\n }\r\n }\r\n\r\n /**\r\n * Gets the ray of the controller in the direction the controller is pointing\r\n * @param length the length the resulting ray should be\r\n * @returns a ray in the direction the controller is pointing\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (!(this._loadedMeshInfo && this._loadedMeshInfo.pointingPoseNode)) {\r\n return super.getForwardRay(length);\r\n }\r\n\r\n const m = this._loadedMeshInfo.pointingPoseNode.getWorldMatrix();\r\n const origin = m.getTranslation();\r\n\r\n const forward = new Vector3(0, 0, -1);\r\n const forwardWorld = Vector3.TransformNormal(forward, m);\r\n\r\n const direction = Vector3.Normalize(forwardWorld);\r\n\r\n return new Ray(origin, direction, length);\r\n }\r\n\r\n /**\r\n * Disposes of the controller\r\n */\r\n public dispose(): void {\r\n super.dispose();\r\n\r\n this.onTrackpadChangedObservable.clear();\r\n this.onTrackpadValuesChangedObservable.clear();\r\n }\r\n}\r\n\r\n/**\r\n * This class represents a new windows motion controller in XR.\r\n */\r\nexport class XRWindowsMotionController extends WindowsMotionController {\r\n /**\r\n * Changing the original WIndowsMotionController mapping to fir the new mapping\r\n */\r\n protected readonly _mapping = {\r\n // Semantic button names\r\n buttons: [\"trigger\", \"grip\", \"trackpad\", \"thumbstick\", \"menu\"],\r\n // trigger, grip, trackpad, thumbstick, menu\r\n\r\n // A mapping of the button name to glTF model node name\r\n // that should be transformed by button value.\r\n buttonMeshNames: {\r\n trigger: \"SELECT\",\r\n menu: \"MENU\",\r\n grip: \"GRASP\",\r\n thumbstick: \"THUMBSTICK_PRESS\",\r\n trackpad: \"TOUCHPAD_PRESS\",\r\n },\r\n // This mapping is used to translate from the Motion Controller to Babylon semantics\r\n buttonObservableNames: {\r\n trigger: \"onTriggerStateChangedObservable\",\r\n menu: \"onSecondaryButtonStateChangedObservable\",\r\n grip: \"onMainButtonStateChangedObservable\",\r\n thumbstick: \"onThumbstickStateChangedObservable\",\r\n trackpad: \"onTrackpadChangedObservable\",\r\n },\r\n // A mapping of the axis name to glTF model node name\r\n // that should be transformed by axis value.\r\n // This array mirrors the browserGamepad.axes array, such that\r\n // the mesh corresponding to axis 0 is in this array index 0.\r\n axisMeshNames: [\"TOUCHPAD_TOUCH_X\", \"TOUCHPAD_TOUCH_Y\", \"THUMBSTICK_X\", \"THUMBSTICK_Y\"],\r\n // upside down in webxr\r\n pointingPoseMeshName: PoseEnabledController.POINTING_POSE,\r\n };\r\n\r\n /**\r\n * Construct a new XR-Based windows motion controller\r\n *\r\n * @param gamepadInfo the gamepad object from the browser\r\n */\r\n constructor(gamepadInfo: any) {\r\n super(gamepadInfo);\r\n }\r\n\r\n /**\r\n * holds the thumbstick values (X,Y)\r\n */\r\n public thumbstickValues: StickValues = { x: 0, y: 0 };\r\n\r\n /**\r\n * Fired when the thumbstick on this controller is clicked\r\n */\r\n public onThumbstickStateChangedObservable = new Observable<ExtendedGamepadButton>();\r\n /**\r\n * Fired when the thumbstick on this controller is modified\r\n */\r\n public onThumbstickValuesChangedObservable = new Observable<StickValues>();\r\n\r\n /**\r\n * Fired when the touchpad button on this controller is modified\r\n */\r\n public onTrackpadChangedObservable = this.onPadStateChangedObservable;\r\n\r\n /**\r\n * Fired when the touchpad values on this controller are modified\r\n */\r\n public onTrackpadValuesChangedObservable = this.onPadValuesChangedObservable;\r\n\r\n /**\r\n * Fired when the thumbstick button on this controller is modified\r\n * here to prevent breaking changes\r\n */\r\n public get onThumbstickButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onThumbstickStateChangedObservable;\r\n }\r\n\r\n /**\r\n * updating the thumbstick(!) and not the trackpad.\r\n * This is named this way due to the difference between WebVR and XR and to avoid\r\n * changing the parent class.\r\n */\r\n protected _updateTrackpad() {\r\n if (this.browserGamepad.axes && (this.browserGamepad.axes[2] != this.thumbstickValues.x || this.browserGamepad.axes[3] != this.thumbstickValues.y)) {\r\n this.trackpad.x = this.browserGamepad[\"axes\"][2];\r\n this.trackpad.y = this.browserGamepad[\"axes\"][3];\r\n this.onThumbstickValuesChangedObservable.notifyObservers(this.trackpad);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the class with joy\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this.onThumbstickStateChangedObservable.clear();\r\n this.onThumbstickValuesChangedObservable.clear();\r\n }\r\n}\r\n\r\nPoseEnabledControllerHelper._ControllerFactories.push({\r\n canCreate: (gamepadInfo) => {\r\n return gamepadInfo.id.indexOf(WindowsMotionController.GAMEPAD_ID_PREFIX) === 0;\r\n },\r\n create: (gamepadInfo) => {\r\n return new WindowsMotionController(gamepadInfo);\r\n },\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"windowsMotionController.js","sourceRoot":"","sources":["../../../../../../lts/core/generated/Gamepads/Controllers/windowsMotionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { Quaternion, Vector3 } from \"../../Maths/math.vector\";\r\nimport type { Node } from \"../../node\";\r\nimport { Mesh } from \"../../Meshes/mesh\";\r\nimport type { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport type { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\nimport { WebVRController } from \"./webVRController\";\r\nimport { GenericController } from \"./genericController\";\r\nimport type { ExtendedGamepadButton } from \"./poseEnabledController\";\r\nimport { PoseEnabledController, PoseEnabledControllerType, PoseEnabledControllerHelper } from \"./poseEnabledController\";\r\nimport type { StickValues } from \"../../Gamepads/gamepad\";\r\n\r\n/**\r\n * Defines the LoadedMeshInfo object that describes information about the loaded webVR controller mesh\r\n */\r\nclass LoadedMeshInfo {\r\n /**\r\n * Root of the mesh\r\n */\r\n public rootNode: AbstractMesh;\r\n /**\r\n * Node of the mesh corresponding to the direction the ray should be cast from the controller\r\n */\r\n public pointingPoseNode: TransformNode;\r\n /**\r\n * Map of the button meshes contained in the controller\r\n */\r\n public buttonMeshes: { [id: string]: IButtonMeshInfo } = {};\r\n /**\r\n * Map of the axis meshes contained in the controller\r\n */\r\n public axisMeshes: { [id: number]: IAxisMeshInfo } = {};\r\n}\r\n\r\n/**\r\n * Defines the IMeshInfo object that describes information a webvr controller mesh\r\n */\r\ninterface IMeshInfo {\r\n /**\r\n * Index of the mesh inside the root mesh\r\n */\r\n index: number;\r\n /**\r\n * The mesh\r\n */\r\n value: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the IButtonMeshInfo object that describes a button mesh\r\n */\r\ninterface IButtonMeshInfo extends IMeshInfo {\r\n /**\r\n * The mesh that should be displayed when pressed\r\n */\r\n pressed: TransformNode;\r\n /**\r\n * The mesh that should be displayed when not pressed\r\n */\r\n unpressed: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the IAxisMeshInfo object that describes an axis mesh\r\n */\r\ninterface IAxisMeshInfo extends IMeshInfo {\r\n /**\r\n * The mesh that should be set when at its min\r\n */\r\n min: TransformNode;\r\n /**\r\n * The mesh that should be set when at its max\r\n */\r\n max: TransformNode;\r\n}\r\n\r\n/**\r\n * Defines the WindowsMotionController object that the state of the windows motion controller\r\n */\r\nexport class WindowsMotionController extends WebVRController {\r\n /**\r\n * The base url used to load the left and right controller models\r\n */\r\n public static MODEL_BASE_URL: string = \"https://controllers.babylonjs.com/microsoft/\";\r\n /**\r\n * The name of the left controller model file\r\n */\r\n public static MODEL_LEFT_FILENAME: string = \"left.glb\";\r\n /**\r\n * The name of the right controller model file\r\n */\r\n public static MODEL_RIGHT_FILENAME: string = \"right.glb\";\r\n\r\n /**\r\n * The controller name prefix for this controller type\r\n */\r\n public static readonly GAMEPAD_ID_PREFIX: string = \"Spatial Controller (Spatial Interaction Source) \";\r\n /**\r\n * The controller id pattern for this controller type\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private static readonly GAMEPAD_ID_PATTERN = /([0-9a-zA-Z]+-[0-9a-zA-Z]+)$/;\r\n\r\n private _loadedMeshInfo: Nullable<LoadedMeshInfo>;\r\n protected readonly _mapping = {\r\n // Semantic button names\r\n buttons: [\"thumbstick\", \"trigger\", \"grip\", \"menu\", \"trackpad\"],\r\n // trigger, grip, trackpad, thumbstick, menu\r\n\r\n // A mapping of the button name to glTF model node name\r\n // that should be transformed by button value.\r\n buttonMeshNames: {\r\n trigger: \"SELECT\",\r\n menu: \"MENU\",\r\n grip: \"GRASP\",\r\n thumbstick: \"THUMBSTICK_PRESS\",\r\n trackpad: \"TOUCHPAD_PRESS\",\r\n },\r\n // This mapping is used to translate from the Motion Controller to Babylon semantics\r\n buttonObservableNames: {\r\n trigger: \"onTriggerStateChangedObservable\",\r\n menu: \"onSecondaryButtonStateChangedObservable\",\r\n grip: \"onMainButtonStateChangedObservable\",\r\n thumbstick: \"onPadStateChangedObservable\",\r\n trackpad: \"onTrackpadChangedObservable\",\r\n },\r\n // A mapping of the axis name to glTF model node name\r\n // that should be transformed by axis value.\r\n // This array mirrors the browserGamepad.axes array, such that\r\n // the mesh corresponding to axis 0 is in this array index 0.\r\n axisMeshNames: [\"THUMBSTICK_X\", \"THUMBSTICK_Y\", \"TOUCHPAD_TOUCH_X\", \"TOUCHPAD_TOUCH_Y\"],\r\n // upside down in webxr\r\n pointingPoseMeshName: PoseEnabledController.POINTING_POSE,\r\n };\r\n\r\n /**\r\n * Fired when the trackpad on this controller is clicked\r\n */\r\n public onTrackpadChangedObservable = new Observable<ExtendedGamepadButton>();\r\n /**\r\n * Fired when the trackpad on this controller is modified\r\n */\r\n public onTrackpadValuesChangedObservable = new Observable<StickValues>();\r\n /**\r\n * The current x and y values of this controller's trackpad\r\n */\r\n public trackpad: StickValues = { x: 0, y: 0 };\r\n\r\n /**\r\n * Creates a new WindowsMotionController from a gamepad\r\n * @param vrGamepad the gamepad that the controller should be created from\r\n */\r\n constructor(vrGamepad: any) {\r\n super(vrGamepad);\r\n this.controllerType = PoseEnabledControllerType.WINDOWS;\r\n this._loadedMeshInfo = null;\r\n }\r\n\r\n /**\r\n * Fired when the trigger on this controller is modified\r\n */\r\n public get onTriggerButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onTriggerStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the menu button on this controller is modified\r\n */\r\n public get onMenuButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onSecondaryButtonStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the grip button on this controller is modified\r\n */\r\n public get onGripButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onMainButtonStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the thumbstick button on this controller is modified\r\n */\r\n public get onThumbstickButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onPadStateChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the touchpad button on this controller is modified\r\n */\r\n public get onTouchpadButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onTrackpadChangedObservable;\r\n }\r\n\r\n /**\r\n * Fired when the touchpad values on this controller are modified\r\n */\r\n public get onTouchpadValuesChangedObservable(): Observable<StickValues> {\r\n return this.onTrackpadValuesChangedObservable;\r\n }\r\n\r\n protected _updateTrackpad() {\r\n if (this.browserGamepad.axes && (this.browserGamepad.axes[2] != this.trackpad.x || this.browserGamepad.axes[3] != this.trackpad.y)) {\r\n this.trackpad.x = this.browserGamepad[\"axes\"][this._mapping.axisMeshNames.indexOf(\"TOUCHPAD_TOUCH_X\")];\r\n this.trackpad.y = this.browserGamepad[\"axes\"][this._mapping.axisMeshNames.indexOf(\"TOUCHPAD_TOUCH_Y\")];\r\n this.onTrackpadValuesChangedObservable.notifyObservers(this.trackpad);\r\n }\r\n }\r\n\r\n /**\r\n * Called once per frame by the engine.\r\n */\r\n public update() {\r\n super.update();\r\n if (this.browserGamepad.axes) {\r\n this._updateTrackpad();\r\n // Only need to animate axes if there is a loaded mesh\r\n if (this._loadedMeshInfo) {\r\n for (let axis = 0; axis < this._mapping.axisMeshNames.length; axis++) {\r\n this._lerpAxisTransform(axis, this.browserGamepad.axes[axis]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called once for each button that changed state since the last frame\r\n * @param buttonIdx Which button index changed\r\n * @param state New state of the button\r\n */\r\n protected _handleButtonChange(buttonIdx: number, state: ExtendedGamepadButton) {\r\n const buttonName = this._mapping.buttons[buttonIdx];\r\n if (!buttonName) {\r\n return;\r\n }\r\n\r\n // Update the trackpad to ensure trackpad.x/y are accurate during button events between frames\r\n this._updateTrackpad();\r\n\r\n // Only emit events for buttons that we know how to map from index to name\r\n const observable = (<any>this)[(<any>this._mapping.buttonObservableNames)[buttonName]];\r\n if (observable) {\r\n observable.notifyObservers(state);\r\n }\r\n\r\n this._lerpButtonTransform(buttonName, state.value);\r\n }\r\n\r\n /**\r\n * Moves the buttons on the controller mesh based on their current state\r\n * @param buttonName the name of the button to move\r\n * @param buttonValue the value of the button which determines the buttons new position\r\n */\r\n protected _lerpButtonTransform(buttonName: string, buttonValue: number) {\r\n // If there is no loaded mesh, there is nothing to transform.\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n const meshInfo = this._loadedMeshInfo.buttonMeshes[buttonName];\r\n\r\n if (!meshInfo || !meshInfo.unpressed.rotationQuaternion || !meshInfo.pressed.rotationQuaternion || !meshInfo.value.rotationQuaternion) {\r\n return;\r\n }\r\n\r\n Quaternion.SlerpToRef(meshInfo.unpressed.rotationQuaternion, meshInfo.pressed.rotationQuaternion, buttonValue, meshInfo.value.rotationQuaternion);\r\n Vector3.LerpToRef(meshInfo.unpressed.position, meshInfo.pressed.position, buttonValue, meshInfo.value.position);\r\n }\r\n\r\n /**\r\n * Moves the axis on the controller mesh based on its current state\r\n * @param axis the index of the axis\r\n * @param axisValue the value of the axis which determines the meshes new position\r\n * @internal\r\n */\r\n protected _lerpAxisTransform(axis: number, axisValue: number) {\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n const meshInfo = this._loadedMeshInfo.axisMeshes[axis];\r\n if (!meshInfo) {\r\n return;\r\n }\r\n\r\n if (!meshInfo.min.rotationQuaternion || !meshInfo.max.rotationQuaternion || !meshInfo.value.rotationQuaternion) {\r\n return;\r\n }\r\n\r\n // Convert from gamepad value range (-1 to +1) to lerp range (0 to 1)\r\n const lerpValue = axisValue * 0.5 + 0.5;\r\n Quaternion.SlerpToRef(meshInfo.min.rotationQuaternion, meshInfo.max.rotationQuaternion, lerpValue, meshInfo.value.rotationQuaternion);\r\n Vector3.LerpToRef(meshInfo.min.position, meshInfo.max.position, lerpValue, meshInfo.value.position);\r\n }\r\n\r\n /**\r\n * Implements abstract method on WebVRController class, loading controller meshes and calling this.attachToMesh if successful.\r\n * @param scene scene in which to add meshes\r\n * @param meshLoaded optional callback function that will be called if the mesh loads successfully.\r\n * @param forceDefault\r\n */\r\n public initControllerMesh(scene: Scene, meshLoaded?: (mesh: AbstractMesh) => void, forceDefault = false) {\r\n let path: string;\r\n let filename: string;\r\n\r\n // Checking if GLB loader is present\r\n if (SceneLoader.IsPluginForExtensionAvailable(\".glb\")) {\r\n // Determine the device specific folder based on the ID suffix\r\n let device = \"default\";\r\n if (this.id && !forceDefault) {\r\n const match = this.id.match(WindowsMotionController.GAMEPAD_ID_PATTERN);\r\n device = (match && match[0]) || device;\r\n }\r\n\r\n // Hand\r\n if (this.hand === \"left\") {\r\n filename = WindowsMotionController.MODEL_LEFT_FILENAME;\r\n } else {\r\n // Right is the default if no hand is specified\r\n filename = WindowsMotionController.MODEL_RIGHT_FILENAME;\r\n }\r\n\r\n path = WindowsMotionController.MODEL_BASE_URL + device + \"/\";\r\n } else {\r\n Logger.Warn(\"You need to reference GLTF loader to load Windows Motion Controllers model. Falling back to generic models\");\r\n path = GenericController.MODEL_BASE_URL;\r\n filename = GenericController.MODEL_FILENAME;\r\n }\r\n\r\n SceneLoader.ImportMesh(\r\n \"\",\r\n path,\r\n filename,\r\n scene,\r\n (meshes: AbstractMesh[]) => {\r\n // glTF files successfully loaded from the remote server, now process them to ensure they are in the right format.\r\n this._loadedMeshInfo = this._processModel(scene, meshes);\r\n\r\n if (!this._loadedMeshInfo) {\r\n return;\r\n }\r\n\r\n this._defaultModel = this._loadedMeshInfo.rootNode;\r\n this.attachToMesh(this._defaultModel);\r\n\r\n if (meshLoaded) {\r\n meshLoaded(this._defaultModel);\r\n }\r\n },\r\n null,\r\n (scene: Scene, message: string) => {\r\n Logger.Log(message);\r\n Logger.Warn(\"Failed to retrieve controller model from the remote server: \" + path + filename);\r\n if (!forceDefault) {\r\n this.initControllerMesh(scene, meshLoaded, true);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Takes a list of meshes (as loaded from the glTF file) and finds the root node, as well as nodes that\r\n * can be transformed by button presses and axes values, based on this._mapping.\r\n *\r\n * @param scene scene in which the meshes exist\r\n * @param meshes list of meshes that make up the controller model to process\r\n * @returns structured view of the given meshes, with mapping of buttons and axes to meshes that can be transformed.\r\n */\r\n private _processModel(scene: Scene, meshes: AbstractMesh[]): Nullable<LoadedMeshInfo> {\r\n let loadedMeshInfo = null;\r\n\r\n // Create a new mesh to contain the glTF hierarchy\r\n const parentMesh = new Mesh(this.id + \" \" + this.hand, scene);\r\n\r\n // Find the root node in the loaded glTF scene, and attach it as a child of 'parentMesh'\r\n let childMesh: Nullable<AbstractMesh> = null;\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n\r\n if (!mesh.parent) {\r\n // Exclude controller meshes from picking results\r\n mesh.isPickable = false;\r\n\r\n // Handle root node, attach to the new parentMesh\r\n childMesh = mesh;\r\n break;\r\n }\r\n }\r\n\r\n if (childMesh) {\r\n childMesh.setParent(parentMesh);\r\n\r\n // Create our mesh info. Note that this method will always return non-null.\r\n loadedMeshInfo = this._createMeshInfo(parentMesh);\r\n } else {\r\n Logger.Warn(\"Could not find root node in model file.\");\r\n }\r\n\r\n return loadedMeshInfo;\r\n }\r\n\r\n private _createMeshInfo(rootNode: AbstractMesh): LoadedMeshInfo {\r\n const loadedMeshInfo = new LoadedMeshInfo();\r\n let i;\r\n loadedMeshInfo.rootNode = rootNode;\r\n\r\n // Reset the caches\r\n loadedMeshInfo.buttonMeshes = {};\r\n loadedMeshInfo.axisMeshes = {};\r\n\r\n // Button Meshes\r\n for (i = 0; i < this._mapping.buttons.length; i++) {\r\n const buttonMeshName = (<any>this._mapping.buttonMeshNames)[this._mapping.buttons[i]];\r\n if (!buttonMeshName) {\r\n Logger.Log(\"Skipping unknown button at index: \" + i + \" with mapped name: \" + this._mapping.buttons[i]);\r\n continue;\r\n }\r\n\r\n const buttonMesh = getChildByName(rootNode, buttonMeshName);\r\n if (!buttonMesh) {\r\n Logger.Warn(\"Missing button mesh with name: \" + buttonMeshName);\r\n continue;\r\n }\r\n\r\n const buttonMeshInfo = {\r\n index: i,\r\n value: getImmediateChildByName(buttonMesh, \"VALUE\"),\r\n pressed: getImmediateChildByName(buttonMesh, \"PRESSED\"),\r\n unpressed: getImmediateChildByName(buttonMesh, \"UNPRESSED\"),\r\n };\r\n if (buttonMeshInfo.value && buttonMeshInfo.pressed && buttonMeshInfo.unpressed) {\r\n loadedMeshInfo.buttonMeshes[this._mapping.buttons[i]] = buttonMeshInfo;\r\n } else {\r\n // If we didn't find the mesh, it simply means this button won't have transforms applied as mapped button value changes.\r\n Logger.Warn(\r\n \"Missing button submesh under mesh with name: \" +\r\n buttonMeshName +\r\n \"(VALUE: \" +\r\n !!buttonMeshInfo.value +\r\n \", PRESSED: \" +\r\n !!buttonMeshInfo.pressed +\r\n \", UNPRESSED:\" +\r\n !!buttonMeshInfo.unpressed +\r\n \")\"\r\n );\r\n }\r\n }\r\n\r\n // Axis Meshes\r\n for (i = 0; i < this._mapping.axisMeshNames.length; i++) {\r\n const axisMeshName = this._mapping.axisMeshNames[i];\r\n if (!axisMeshName) {\r\n Logger.Log(\"Skipping unknown axis at index: \" + i);\r\n continue;\r\n }\r\n\r\n const axisMesh = getChildByName(rootNode, axisMeshName);\r\n if (!axisMesh) {\r\n Logger.Warn(\"Missing axis mesh with name: \" + axisMeshName);\r\n continue;\r\n }\r\n\r\n const axisMeshInfo = {\r\n index: i,\r\n value: getImmediateChildByName(axisMesh, \"VALUE\"),\r\n min: getImmediateChildByName(axisMesh, \"MIN\"),\r\n max: getImmediateChildByName(axisMesh, \"MAX\"),\r\n };\r\n if (axisMeshInfo.value && axisMeshInfo.min && axisMeshInfo.max) {\r\n loadedMeshInfo.axisMeshes[i] = axisMeshInfo;\r\n } else {\r\n // If we didn't find the mesh, it simply means thit axis won't have transforms applied as mapped axis values change.\r\n Logger.Warn(\r\n \"Missing axis submesh under mesh with name: \" +\r\n axisMeshName +\r\n \"(VALUE: \" +\r\n !!axisMeshInfo.value +\r\n \", MIN: \" +\r\n !!axisMeshInfo.min +\r\n \", MAX:\" +\r\n !!axisMeshInfo.max +\r\n \")\"\r\n );\r\n }\r\n }\r\n\r\n // Pointing Ray\r\n loadedMeshInfo.pointingPoseNode = getChildByName(rootNode, this._mapping.pointingPoseMeshName);\r\n if (!loadedMeshInfo.pointingPoseNode) {\r\n Logger.Warn(\"Missing pointing pose mesh with name: \" + this._mapping.pointingPoseMeshName);\r\n } else {\r\n this._pointingPoseNode = loadedMeshInfo.pointingPoseNode;\r\n }\r\n\r\n return loadedMeshInfo;\r\n\r\n // Look through all children recursively. This will return null if no mesh exists with the given name.\r\n function getChildByName(node: Node, name: string) {\r\n return <TransformNode>node.getChildren((n) => n.name === name, false)[0];\r\n }\r\n // Look through only immediate children. This will return null if no mesh exists with the given name.\r\n function getImmediateChildByName(node: Node, name: string): TransformNode {\r\n return <TransformNode>node.getChildren((n) => n.name == name, true)[0];\r\n }\r\n }\r\n\r\n /**\r\n * Gets the ray of the controller in the direction the controller is pointing\r\n * @param length the length the resulting ray should be\r\n * @returns a ray in the direction the controller is pointing\r\n */\r\n public getForwardRay(length = 100): Ray {\r\n if (!(this._loadedMeshInfo && this._loadedMeshInfo.pointingPoseNode)) {\r\n return super.getForwardRay(length);\r\n }\r\n\r\n const m = this._loadedMeshInfo.pointingPoseNode.getWorldMatrix();\r\n const origin = m.getTranslation();\r\n\r\n const forward = new Vector3(0, 0, -1);\r\n const forwardWorld = Vector3.TransformNormal(forward, m);\r\n\r\n const direction = Vector3.Normalize(forwardWorld);\r\n\r\n return new Ray(origin, direction, length);\r\n }\r\n\r\n /**\r\n * Disposes of the controller\r\n */\r\n public dispose(): void {\r\n super.dispose();\r\n\r\n this.onTrackpadChangedObservable.clear();\r\n this.onTrackpadValuesChangedObservable.clear();\r\n }\r\n}\r\n\r\n/**\r\n * This class represents a new windows motion controller in XR.\r\n */\r\nexport class XRWindowsMotionController extends WindowsMotionController {\r\n /**\r\n * Changing the original WIndowsMotionController mapping to fir the new mapping\r\n */\r\n protected readonly _mapping = {\r\n // Semantic button names\r\n buttons: [\"trigger\", \"grip\", \"trackpad\", \"thumbstick\", \"menu\"],\r\n // trigger, grip, trackpad, thumbstick, menu\r\n\r\n // A mapping of the button name to glTF model node name\r\n // that should be transformed by button value.\r\n buttonMeshNames: {\r\n trigger: \"SELECT\",\r\n menu: \"MENU\",\r\n grip: \"GRASP\",\r\n thumbstick: \"THUMBSTICK_PRESS\",\r\n trackpad: \"TOUCHPAD_PRESS\",\r\n },\r\n // This mapping is used to translate from the Motion Controller to Babylon semantics\r\n buttonObservableNames: {\r\n trigger: \"onTriggerStateChangedObservable\",\r\n menu: \"onSecondaryButtonStateChangedObservable\",\r\n grip: \"onMainButtonStateChangedObservable\",\r\n thumbstick: \"onThumbstickStateChangedObservable\",\r\n trackpad: \"onTrackpadChangedObservable\",\r\n },\r\n // A mapping of the axis name to glTF model node name\r\n // that should be transformed by axis value.\r\n // This array mirrors the browserGamepad.axes array, such that\r\n // the mesh corresponding to axis 0 is in this array index 0.\r\n axisMeshNames: [\"TOUCHPAD_TOUCH_X\", \"TOUCHPAD_TOUCH_Y\", \"THUMBSTICK_X\", \"THUMBSTICK_Y\"],\r\n // upside down in webxr\r\n pointingPoseMeshName: PoseEnabledController.POINTING_POSE,\r\n };\r\n\r\n /**\r\n * Construct a new XR-Based windows motion controller\r\n *\r\n * @param gamepadInfo the gamepad object from the browser\r\n */\r\n constructor(gamepadInfo: any) {\r\n super(gamepadInfo);\r\n }\r\n\r\n /**\r\n * holds the thumbstick values (X,Y)\r\n */\r\n public thumbstickValues: StickValues = { x: 0, y: 0 };\r\n\r\n /**\r\n * Fired when the thumbstick on this controller is clicked\r\n */\r\n public onThumbstickStateChangedObservable = new Observable<ExtendedGamepadButton>();\r\n /**\r\n * Fired when the thumbstick on this controller is modified\r\n */\r\n public onThumbstickValuesChangedObservable = new Observable<StickValues>();\r\n\r\n /**\r\n * Fired when the touchpad button on this controller is modified\r\n */\r\n public onTrackpadChangedObservable = this.onPadStateChangedObservable;\r\n\r\n /**\r\n * Fired when the touchpad values on this controller are modified\r\n */\r\n public onTrackpadValuesChangedObservable = this.onPadValuesChangedObservable;\r\n\r\n /**\r\n * Fired when the thumbstick button on this controller is modified\r\n * here to prevent breaking changes\r\n */\r\n public get onThumbstickButtonStateChangedObservable(): Observable<ExtendedGamepadButton> {\r\n return this.onThumbstickStateChangedObservable;\r\n }\r\n\r\n /**\r\n * updating the thumbstick(!) and not the trackpad.\r\n * This is named this way due to the difference between WebVR and XR and to avoid\r\n * changing the parent class.\r\n */\r\n protected _updateTrackpad() {\r\n if (this.browserGamepad.axes && (this.browserGamepad.axes[2] != this.thumbstickValues.x || this.browserGamepad.axes[3] != this.thumbstickValues.y)) {\r\n this.trackpad.x = this.browserGamepad[\"axes\"][2];\r\n this.trackpad.y = this.browserGamepad[\"axes\"][3];\r\n this.onThumbstickValuesChangedObservable.notifyObservers(this.trackpad);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the class with joy\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this.onThumbstickStateChangedObservable.clear();\r\n this.onThumbstickValuesChangedObservable.clear();\r\n }\r\n}\r\n\r\nPoseEnabledControllerHelper._ControllerFactories.push({\r\n canCreate: (gamepadInfo) => {\r\n return gamepadInfo.id.indexOf(WindowsMotionController.GAMEPAD_ID_PREFIX) === 0;\r\n },\r\n create: (gamepadInfo) => {\r\n return new WindowsMotionController(gamepadInfo);\r\n },\r\n});\r\n"]}
|