@babylonjs/core 5.0.0-alpha.48 → 5.0.0-alpha.51
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.js +5 -5
- package/Actions/action.js.map +1 -1
- package/Actions/actionManager.js +11 -11
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.js +5 -5
- package/Actions/condition.js.map +1 -1
- package/Actions/directActions.js +13 -13
- package/Actions/directActions.js.map +1 -1
- package/Actions/directAudioActions.js +4 -4
- package/Actions/directAudioActions.js.map +1 -1
- package/Actions/index.js +8 -8
- package/Actions/interpolateValueAction.js +8 -8
- package/Actions/interpolateValueAction.js.map +1 -1
- package/Animations/animatable.js +12 -7
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.js +11 -11
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +4 -14
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationPropertiesOverride.js +1 -1
- package/Animations/easing.js +1 -1
- package/Animations/index.js +12 -12
- package/Animations/pathCursor.js +1 -1
- package/Animations/runtimeAnimation.js +12 -7
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/analyser.js +2 -2
- package/Audio/audioEngine.js +5 -5
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.js +9 -9
- package/Audio/index.js +8 -8
- package/Audio/sound.js +7 -7
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.js +1 -1
- package/Audio/weightedsound.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +2 -2
- package/Behaviors/Cameras/bouncingBehavior.js +2 -2
- package/Behaviors/Cameras/framingBehavior.js +5 -5
- package/Behaviors/Cameras/index.js +3 -3
- package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +9 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +119 -62
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +3 -3
- package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
- package/Behaviors/Meshes/index.js +9 -9
- package/Behaviors/Meshes/multiPointerScaleBehavior.js +2 -2
- package/Behaviors/Meshes/pointerDragBehavior.js +10 -9
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.d.ts +4 -0
- package/Behaviors/Meshes/sixDofDragBehavior.js +24 -13
- package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +2 -2
- package/Behaviors/index.js +3 -3
- package/Bones/bone.js +4 -4
- package/Bones/boneIKController.js +2 -2
- package/Bones/boneLookController.js +3 -3
- package/Bones/index.js +4 -4
- package/Bones/skeleton.js +9 -9
- package/Buffers/buffer.js +2 -5
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/index.js +3 -3
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +5 -5
- package/Cameras/Inputs/BaseCameraPointersInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +4 -4
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +9 -9
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +3 -3
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.js +3 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.js +5 -5
- package/Cameras/Inputs/flyCameraMouseInput.js +6 -6
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +4 -4
- package/Cameras/Inputs/followCameraMouseWheelInput.js +4 -4
- package/Cameras/Inputs/followCameraPointersInput.js +3 -3
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +5 -5
- package/Cameras/Inputs/freeCameraGamepadInput.js +4 -4
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +5 -5
- package/Cameras/Inputs/freeCameraMouseInput.js +5 -5
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +5 -5
- package/Cameras/Inputs/freeCameraTouchInput.js +5 -5
- package/Cameras/Inputs/freeCameraVirtualJoystickInput.js +4 -4
- package/Cameras/Inputs/index.js +19 -19
- package/Cameras/RigModes/index.js +4 -4
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
- package/Cameras/RigModes/stereoscopicRigMode.js +4 -4
- package/Cameras/RigModes/vrRigMode.js +6 -6
- package/Cameras/RigModes/webVRRigMode.js +2 -2
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphFreeCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.js +5 -5
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.js +5 -5
- package/Cameras/Stereoscopic/index.js +9 -9
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +29 -16
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js +5 -5
- package/Cameras/VR/index.js +6 -6
- package/Cameras/VR/vrCameraMetrics.js +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +7 -7
- package/Cameras/VR/vrDeviceOrientationFreeCamera.js +6 -6
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.js +6 -6
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -3
- package/Cameras/VR/vrExperienceHelper.js +52 -39
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/webVRCamera.js +13 -13
- package/Cameras/arcRotateCamera.d.ts +10 -0
- package/Cameras/arcRotateCamera.js +40 -13
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/arcRotateCameraInputsManager.js +4 -4
- package/Cameras/camera.js +15 -15
- package/Cameras/camera.js.map +1 -1
- package/Cameras/cameraInputsManager.js +3 -3
- package/Cameras/deviceOrientationCamera.js +5 -5
- package/Cameras/flyCamera.js +6 -6
- package/Cameras/flyCameraInputsManager.js +3 -3
- package/Cameras/followCamera.js +6 -6
- package/Cameras/followCameraInputsManager.js +4 -4
- package/Cameras/freeCamera.js +6 -6
- package/Cameras/freeCameraInputsManager.js +5 -5
- package/Cameras/gamepadCamera.js +3 -3
- package/Cameras/index.js +20 -20
- package/Cameras/targetCamera.js +5 -5
- package/Cameras/touchCamera.js +3 -3
- package/Cameras/universalCamera.js +5 -5
- package/Cameras/virtualJoysticksCamera.js +4 -4
- package/Collisions/collider.js +2 -2
- package/Collisions/collisionCoordinator.js +4 -4
- package/Collisions/index.js +5 -5
- package/Collisions/meshCollisionData.js +1 -1
- package/Collisions/pickingInfo.d.ts +12 -2
- package/Collisions/pickingInfo.js +13 -4
- package/Collisions/pickingInfo.js.map +1 -1
- package/Compute/computeEffect.js +8 -8
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.js +8 -8
- package/Compute/computeShader.js.map +1 -1
- package/Compute/index.js +2 -2
- package/Culling/Octrees/index.js +3 -3
- package/Culling/Octrees/octree.js +2 -2
- package/Culling/Octrees/octreeBlock.js +2 -2
- package/Culling/Octrees/octreeSceneComponent.js +6 -6
- package/Culling/boundingBox.js +3 -3
- package/Culling/boundingInfo.js +4 -4
- package/Culling/boundingSphere.js +2 -2
- package/Culling/index.js +5 -5
- package/Culling/ray.js +6 -6
- package/Debug/axesViewer.js +4 -4
- package/Debug/boneAxesViewer.js +3 -3
- package/Debug/debugLayer.js +4 -4
- package/Debug/directionalLightFrustumViewer.js +19 -19
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/index.js +8 -8
- package/Debug/physicsViewer.js +15 -15
- package/Debug/physicsViewer.js.map +1 -1
- package/Debug/rayHelper.js +5 -5
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +17 -17
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +2 -2
- package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +3 -3
- package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -5
- package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +3 -3
- package/DeviceInput/deviceInputSystem.js +2 -2
- package/DeviceInput/index.js +8 -8
- package/Engines/Extensions/engine.alpha.js +1 -1
- package/Engines/Extensions/engine.computeShader.js +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +7 -7
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.debugging.js +1 -1
- package/Engines/Extensions/engine.dynamicBuffer.js +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +2 -2
- package/Engines/Extensions/engine.externalTexture.js +1 -1
- package/Engines/Extensions/engine.multiRender.js +3 -3
- package/Engines/Extensions/engine.multiview.js +8 -8
- package/Engines/Extensions/engine.query.js +4 -4
- package/Engines/Extensions/engine.rawTexture.js +4 -4
- package/Engines/Extensions/engine.readTexture.js +1 -1
- package/Engines/Extensions/engine.renderTarget.js +5 -5
- package/Engines/Extensions/engine.renderTargetCube.js +3 -3
- package/Engines/Extensions/engine.storageBuffer.js +1 -1
- package/Engines/Extensions/engine.textureSampler.js +1 -1
- package/Engines/Extensions/engine.textureSelector.js +1 -1
- package/Engines/Extensions/engine.transformFeedback.js +1 -1
- package/Engines/Extensions/engine.uniformBuffer.js +2 -2
- package/Engines/Extensions/engine.videoTexture.js +1 -1
- package/Engines/Extensions/engine.views.js +1 -1
- package/Engines/Extensions/engine.webVR.js +7 -7
- package/Engines/Extensions/engine.webVR.js.map +1 -1
- package/Engines/Extensions/index.js +23 -23
- package/Engines/Processors/Expressions/Operators/index.js +4 -4
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js +1 -1
- package/Engines/Processors/Expressions/index.js +2 -2
- package/Engines/Processors/index.js +9 -9
- package/Engines/Processors/shaderCodeConditionNode.js +1 -1
- package/Engines/Processors/shaderCodeInliner.js +13 -13
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderCodeNode.js +4 -4
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/Processors/shaderCodeTestNode.js +1 -1
- package/Engines/Processors/shaderProcessor.js +12 -12
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.js +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.js +1 -1
- package/Engines/WebGL/webGLShaderProcessors.js +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +2 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.js +4 -4
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +2 -2
- package/Engines/WebGPU/Extensions/engine.debugging.js +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.externalTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -3
- package/Engines/WebGPU/Extensions/engine.query.js +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.readTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +4 -4
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -3
- package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -2
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +2 -2
- package/Engines/WebGPU/Extensions/engine.videoTexture.js +1 -1
- package/Engines/WebGPU/Extensions/index.js +17 -17
- package/Engines/WebGPU/webgpuBufferManager.js +5 -5
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +3 -3
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +2 -2
- package/Engines/WebGPU/webgpuClearQuad.js +4 -4
- package/Engines/WebGPU/webgpuComputeContext.js +3 -3
- package/Engines/WebGPU/webgpuDepthCullingState.js +1 -1
- package/Engines/WebGPU/webgpuExternalTexture.js +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -3
- package/Engines/WebGPU/webgpuMaterialContext.js +2 -2
- package/Engines/WebGPU/webgpuOcclusionQuery.js +2 -2
- package/Engines/WebGPU/webgpuPipelineContext.js +2 -2
- package/Engines/WebGPU/webgpuQuerySet.js +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -2
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +5 -5
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +17 -17
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +5 -5
- package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
- package/Engines/WebGPU/webgpuTintWASM.js +3 -3
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/engine.js +21 -20
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFactory.js +3 -3
- package/Engines/index.js +30 -30
- package/Engines/nativeEngine.d.ts +4 -12
- package/Engines/nativeEngine.js +32 -42
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +25 -0
- package/Engines/nullEngine.js +62 -8
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +2 -2
- package/Engines/shaderStore.js +1 -1
- package/Engines/thinEngine.js +40 -37
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +37 -37
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/index.js +4 -4
- package/Events/pointerEvents.js +1 -1
- package/Gamepads/Controllers/daydreamController.js +4 -4
- package/Gamepads/Controllers/gearVRController.js +5 -5
- package/Gamepads/Controllers/genericController.js +3 -3
- package/Gamepads/Controllers/index.js +8 -8
- package/Gamepads/Controllers/oculusTouchController.js +5 -5
- package/Gamepads/Controllers/poseEnabledController.js +5 -5
- package/Gamepads/Controllers/viveController.js +3 -3
- package/Gamepads/Controllers/webVRController.js +2 -2
- package/Gamepads/Controllers/windowsMotionController.js +9 -9
- package/Gamepads/dualShockGamepad.js +2 -2
- package/Gamepads/gamepad.js +1 -1
- package/Gamepads/gamepadManager.js +9 -9
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gamepads/gamepadSceneComponent.js +7 -7
- package/Gamepads/index.js +6 -6
- package/Gamepads/xboxGamepad.js +2 -2
- package/Gizmos/axisDragGizmo.js +36 -22
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +12 -12
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +31 -32
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/cameraGizmo.js +19 -19
- package/Gizmos/cameraGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +5 -5
- package/Gizmos/gizmoManager.js +11 -11
- package/Gizmos/index.js +12 -12
- package/Gizmos/lightGizmo.js +45 -23
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +10 -10
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +24 -14
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.js +8 -8
- package/Gizmos/rotationGizmo.js +7 -7
- package/Gizmos/scaleGizmo.js +11 -11
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Helpers/environmentHelper.js +17 -15
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/index.js +4 -4
- package/Helpers/photoDome.js +2 -2
- package/Helpers/sceneHelpers.js +18 -18
- package/Helpers/sceneHelpers.js.map +1 -1
- package/Helpers/textureDome.js +11 -11
- package/Helpers/textureDome.js.map +1 -1
- package/Helpers/videoDome.js +3 -3
- package/Inputs/scene.inputManager.js +8 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +1 -1
- package/Instrumentation/index.js +3 -3
- package/Instrumentation/sceneInstrumentation.js +2 -2
- package/Layers/effectLayer.js +17 -17
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.js +4 -4
- package/Layers/glowLayer.js +19 -16
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +20 -20
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/index.js +6 -6
- package/Layers/layer.js +12 -12
- package/Layers/layerSceneComponent.js +1 -1
- package/Legacy/legacy.js +3 -3
- package/LensFlares/index.js +3 -3
- package/LensFlares/lensFlare.js +2 -2
- package/LensFlares/lensFlareSystem.js +14 -14
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/LensFlares/lensFlareSystemSceneComponent.js +4 -4
- package/Lights/Shadows/cascadedShadowGenerator.js +12 -12
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/index.js +3 -3
- package/Lights/Shadows/shadowGenerator.js +19 -19
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGeneratorSceneComponent.js +4 -4
- package/Lights/directionalLight.js +5 -5
- package/Lights/hemisphericLight.js +5 -5
- package/Lights/index.js +7 -7
- package/Lights/light.js +8 -8
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.js +5 -5
- package/Lights/shadowLight.js +4 -4
- package/Lights/spotLight.js +6 -6
- package/Loading/Plugins/babylonFileLoader.js +30 -30
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/Plugins/index.js +1 -1
- package/Loading/index.js +4 -4
- package/Loading/loadingScreen.js +1 -1
- package/Loading/sceneLoader.js +11 -11
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +17 -17
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Background/index.js +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +9 -9
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/index.js +7 -7
- package/Materials/Node/Blocks/Dual/lightBlock.js +17 -17
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +14 -14
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +6 -6
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +9 -9
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/index.js +8 -8
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +10 -10
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +5 -5
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/index.js +2 -2
- package/Materials/Node/Blocks/Input/inputBlock.js +12 -12
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +7 -7
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +10 -10
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/index.js +7 -7
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +21 -21
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +10 -10
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +13 -13
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +8 -8
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +9 -9
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/index.js +3 -3
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +5 -5
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +5 -5
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +10 -10
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/index.js +5 -5
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +7 -7
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +6 -6
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +10 -10
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +5 -5
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/addBlock.js +5 -5
- package/Materials/Node/Blocks/addBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +5 -5
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +6 -6
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +5 -5
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.js +5 -5
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/crossBlock.js +5 -5
- package/Materials/Node/Blocks/crossBlock.js.map +1 -1
- package/Materials/Node/Blocks/desaturateBlock.js +5 -5
- package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
- package/Materials/Node/Blocks/distanceBlock.js +5 -5
- package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
- package/Materials/Node/Blocks/divideBlock.js +5 -5
- package/Materials/Node/Blocks/divideBlock.js.map +1 -1
- package/Materials/Node/Blocks/dotBlock.js +5 -5
- package/Materials/Node/Blocks/dotBlock.js.map +1 -1
- package/Materials/Node/Blocks/fresnelBlock.js +8 -8
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +7 -7
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.js +52 -52
- package/Materials/Node/Blocks/lengthBlock.js +5 -5
- package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
- package/Materials/Node/Blocks/lerpBlock.js +5 -5
- package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +7 -7
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/maxBlock.js +5 -5
- package/Materials/Node/Blocks/maxBlock.js.map +1 -1
- package/Materials/Node/Blocks/minBlock.js +5 -5
- package/Materials/Node/Blocks/minBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +5 -5
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js +5 -5
- package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js +5 -5
- package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/negateBlock.js +5 -5
- package/Materials/Node/Blocks/negateBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
- package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js +5 -5
- package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js +6 -6
- package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js +5 -5
- package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.js +5 -5
- package/Materials/Node/Blocks/powBlock.js.map +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js +6 -6
- package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js +5 -5
- package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
- package/Materials/Node/Blocks/reflectBlock.js +5 -5
- package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
- package/Materials/Node/Blocks/refractBlock.js +5 -5
- package/Materials/Node/Blocks/refractBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +7 -7
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/replaceColorBlock.js +5 -5
- package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js +6 -6
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/scaleBlock.js +5 -5
- package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +5 -5
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js +5 -5
- package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
- package/Materials/Node/Blocks/stepBlock.js +5 -5
- package/Materials/Node/Blocks/stepBlock.js.map +1 -1
- package/Materials/Node/Blocks/subtractBlock.js +5 -5
- package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +5 -5
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.js +5 -5
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +5 -5
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js +7 -7
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.js +5 -5
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +6 -6
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/Enums/index.js +5 -5
- package/Materials/Node/Optimizers/index.js +1 -1
- package/Materials/Node/index.js +7 -7
- package/Materials/Node/nodeMaterial.js +40 -40
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +6 -6
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +3 -3
- package/Materials/Node/nodeMaterialBuildState.js +6 -6
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialConnectionPointCustomObject.js +1 -1
- package/Materials/Occlusion/index.js +1 -1
- package/Materials/Occlusion/occlusionMaterial.js +4 -4
- package/Materials/PBR/index.js +5 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js +11 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +28 -28
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js +3 -3
- package/Materials/PBR/pbrClearCoatConfiguration.js +10 -4
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +7 -7
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js +4 -4
- package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +10 -4
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +4 -4
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +19 -6
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +6 -6
- package/Materials/Textures/Loaders/basisTextureLoader.js +9 -9
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +5 -5
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +7 -7
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/hdrTextureLoader.js +4 -4
- package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/index.js +6 -6
- package/Materials/Textures/Loaders/ktxTextureLoader.js +6 -6
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/tgaTextureLoader.js +6 -6
- package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js +1 -1
- package/Materials/Textures/Packer/index.js +2 -2
- package/Materials/Textures/Packer/packer.js +9 -9
- package/Materials/Textures/Procedurals/customProceduralTexture.js +6 -6
- package/Materials/Textures/Procedurals/index.js +4 -4
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js +5 -5
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +15 -15
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +2 -2
- package/Materials/Textures/baseTexture.js +8 -8
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.polynomial.js +2 -2
- package/Materials/Textures/colorGradingTexture.js +5 -5
- package/Materials/Textures/colorGradingTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +12 -12
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.js +3 -3
- package/Materials/Textures/equiRectangularCubeTexture.js +10 -12
- package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
- package/Materials/Textures/externalTexture.js +1 -1
- package/Materials/Textures/hdrCubeTexture.js +16 -16
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.js +4 -4
- package/Materials/Textures/index.js +27 -27
- package/Materials/Textures/internalTexture.d.ts +15 -2
- package/Materials/Textures/internalTexture.js +29 -13
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +5 -5
- package/Materials/Textures/multiRenderTarget.js +3 -3
- package/Materials/Textures/prePassRenderTarget.js +2 -2
- package/Materials/Textures/rawCubeTexture.d.ts +0 -3
- package/Materials/Textures/rawCubeTexture.js +6 -17
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.js +2 -2
- package/Materials/Textures/rawTexture2DArray.js +2 -2
- package/Materials/Textures/rawTexture3D.js +2 -2
- package/Materials/Textures/refractionTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js +9 -9
- package/Materials/Textures/texture.js +30 -25
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/thinTexture.js +1 -1
- package/Materials/Textures/videoTexture.js +6 -6
- package/Materials/colorCurves.js +2 -2
- package/Materials/effect.js +8 -8
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.js +6 -6
- package/Materials/fresnelParameters.js +4 -4
- package/Materials/imageProcessingConfiguration.js +6 -6
- package/Materials/index.js +25 -25
- package/Materials/material.detailMapConfiguration.js +7 -4
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +11 -11
- package/Materials/materialFlags.js +1 -1
- package/Materials/materialHelper.js +7 -7
- package/Materials/materialStencilState.js +1 -1
- package/Materials/multiMaterial.js +4 -4
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/prePassConfiguration.d.ts +1 -0
- package/Materials/prePassConfiguration.js +8 -2
- package/Materials/prePassConfiguration.js.map +1 -1
- package/Materials/pushMaterial.js +2 -2
- package/Materials/shaderMaterial.d.ts +0 -2
- package/Materials/shaderMaterial.js +12 -30
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +6 -5
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +20 -20
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +3 -3
- package/Maths/index.js +4 -4
- package/Maths/math.axis.js +1 -1
- package/Maths/math.color.js +6 -6
- package/Maths/math.color.js.map +1 -1
- package/Maths/math.frustum.js +1 -1
- package/Maths/math.functions.js +2 -2
- package/Maths/math.isovector.js +2 -2
- package/Maths/math.js +10 -10
- package/Maths/math.path.js +3 -3
- package/Maths/math.plane.js +1 -1
- package/Maths/math.vector.js +9 -9
- package/Maths/math.vector.js.map +1 -1
- package/Maths/math.vertexFormat.js +1 -1
- package/Maths/sphericalPolynomial.js +2 -2
- package/Meshes/Builders/boxBuilder.d.ts +63 -32
- package/Meshes/Builders/boxBuilder.js +53 -39
- package/Meshes/Builders/boxBuilder.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.d.ts +20 -10
- package/Meshes/Builders/capsuleBuilder.js +36 -37
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.d.ts +87 -48
- package/Meshes/Builders/cylinderBuilder.js +71 -53
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/decalBuilder.d.ts +26 -24
- package/Meshes/Builders/decalBuilder.js +211 -213
- package/Meshes/Builders/decalBuilder.js.map +1 -1
- package/Meshes/Builders/discBuilder.d.ts +27 -25
- package/Meshes/Builders/discBuilder.js +46 -36
- package/Meshes/Builders/discBuilder.js.map +1 -1
- package/Meshes/Builders/geodesicBuilder.d.ts +34 -39
- package/Meshes/Builders/geodesicBuilder.js +58 -67
- package/Meshes/Builders/geodesicBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +56 -29
- package/Meshes/Builders/goldbergBuilder.js +97 -84
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/groundBuilder.d.ts +151 -79
- package/Meshes/Builders/groundBuilder.js +174 -137
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Builders/hemisphereBuilder.d.ts +16 -14
- package/Meshes/Builders/hemisphereBuilder.js +33 -34
- package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
- package/Meshes/Builders/icoSphereBuilder.d.ts +57 -29
- package/Meshes/Builders/icoSphereBuilder.js +51 -38
- package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
- package/Meshes/Builders/index.js +23 -23
- package/Meshes/Builders/latheBuilder.d.ts +38 -36
- package/Meshes/Builders/latheBuilder.js +70 -72
- package/Meshes/Builders/latheBuilder.js.map +1 -1
- package/Meshes/Builders/linesBuilder.d.ts +113 -82
- package/Meshes/Builders/linesBuilder.js +202 -184
- package/Meshes/Builders/linesBuilder.js.map +1 -1
- package/Meshes/Builders/planeBuilder.d.ts +48 -26
- package/Meshes/Builders/planeBuilder.js +50 -40
- package/Meshes/Builders/planeBuilder.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.d.ts +68 -51
- package/Meshes/Builders/polygonBuilder.js +91 -79
- package/Meshes/Builders/polygonBuilder.js.map +1 -1
- package/Meshes/Builders/polyhedronBuilder.d.ts +73 -36
- package/Meshes/Builders/polyhedronBuilder.js +63 -43
- package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
- package/Meshes/Builders/ribbonBuilder.d.ts +69 -39
- package/Meshes/Builders/ribbonBuilder.js +166 -152
- package/Meshes/Builders/ribbonBuilder.js.map +1 -1
- package/Meshes/Builders/shapeBuilder.d.ts +83 -81
- package/Meshes/Builders/shapeBuilder.js +185 -186
- package/Meshes/Builders/shapeBuilder.js.map +1 -1
- package/Meshes/Builders/sphereBuilder.d.ts +62 -31
- package/Meshes/Builders/sphereBuilder.js +53 -39
- package/Meshes/Builders/sphereBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +56 -29
- package/Meshes/Builders/tiledBoxBuilder.js +45 -36
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +67 -38
- package/Meshes/Builders/tiledPlaneBuilder.js +51 -40
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Builders/torusBuilder.d.ts +47 -25
- package/Meshes/Builders/torusBuilder.js +46 -36
- package/Meshes/Builders/torusBuilder.js.map +1 -1
- package/Meshes/Builders/torusKnotBuilder.d.ts +57 -29
- package/Meshes/Builders/torusKnotBuilder.js +51 -37
- package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
- package/Meshes/Builders/tubeBuilder.d.ts +42 -40
- package/Meshes/Builders/tubeBuilder.js +140 -142
- package/Meshes/Builders/tubeBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompression.js +3 -3
- package/Meshes/Compression/index.js +2 -2
- package/Meshes/Compression/meshoptCompression.js +1 -1
- package/Meshes/WebGL/webGLDataBuffer.js +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js +1 -1
- package/Meshes/abstractMesh.js +20 -20
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg.js +5 -5
- package/Meshes/geodesicMesh.js +4 -4
- package/Meshes/geometry.js +13 -17
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/groundMesh.js +3 -3
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +25 -24
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.js +8 -8
- package/Meshes/linesMesh.js +9 -9
- package/Meshes/mesh.d.ts +2 -383
- package/Meshes/mesh.js +32 -439
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.lts.d.ts +417 -0
- package/Meshes/mesh.lts.js +25 -0
- package/Meshes/mesh.lts.js.map +1 -0
- package/Meshes/mesh.vertexData.d.ts +21 -64
- package/Meshes/mesh.vertexData.js +46 -71
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +52 -799
- package/Meshes/meshBuilder.js +52 -609
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshSimplification.js +6 -6
- package/Meshes/meshSimplificationSceneComponent.js +4 -4
- package/Meshes/polygonMesh.js +8 -8
- package/Meshes/subMesh.js +5 -5
- package/Meshes/subMesh.project.js +2 -2
- package/Meshes/thinInstanceMesh.js +3 -3
- package/Meshes/trailMesh.js +5 -5
- package/Meshes/transformNode.js +5 -5
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +5 -5
- package/Misc/HighDynamicRange/hdr.js +1 -1
- package/Misc/HighDynamicRange/index.js +3 -3
- package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
- package/Misc/PerformanceViewer/index.js +4 -4
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +2 -2
- package/Misc/PerformanceViewer/performanceViewerCollector.js +4 -4
- package/Misc/PerformanceViewer/performanceViewerSceneExtension.js +2 -2
- package/Misc/assetsManager.js +8 -8
- package/Misc/basis.d.ts +40 -12
- package/Misc/basis.js +172 -145
- package/Misc/basis.js.map +1 -1
- package/Misc/brdfTextureTools.d.ts +9 -8
- package/Misc/brdfTextureTools.js +49 -50
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/codeStringParsingTools.d.ts +40 -45
- package/Misc/codeStringParsingTools.js +154 -163
- package/Misc/codeStringParsingTools.js.map +1 -1
- package/Misc/computePressure.js +2 -2
- package/Misc/computePressure.js.map +1 -1
- package/Misc/copyTools.d.ts +30 -5
- package/Misc/copyTools.js +108 -87
- package/Misc/copyTools.js.map +1 -1
- package/Misc/dataReader.js +2 -2
- package/Misc/dataReader.js.map +1 -1
- package/Misc/dds.js +23 -23
- package/Misc/dds.js.map +1 -1
- package/Misc/decorators.js +8 -8
- package/Misc/decorators.js.map +1 -1
- package/Misc/deepCopier.js +3 -3
- package/Misc/deepCopier.js.map +1 -1
- package/Misc/depthReducer.js +2 -2
- package/Misc/devTools.d.ts +1 -3
- package/Misc/devTools.js +3 -9
- package/Misc/devTools.js.map +1 -1
- package/Misc/domManagement.d.ts +27 -6
- package/Misc/domManagement.js +43 -26
- package/Misc/domManagement.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +61 -28
- package/Misc/environmentTextureTools.js +550 -503
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.d.ts +91 -101
- package/Misc/fileTools.js +414 -396
- package/Misc/fileTools.js.map +1 -1
- package/Misc/fileTools.lts.d.ts +9 -0
- package/Misc/fileTools.lts.js +64 -0
- package/Misc/fileTools.lts.js.map +1 -0
- package/Misc/filesInput.d.ts +1 -1
- package/Misc/filesInput.js +4 -4
- package/Misc/filesInput.js.map +1 -1
- package/Misc/gradients.js +1 -1
- package/Misc/guid.d.ts +10 -3
- package/Misc/guid.js +15 -12
- package/Misc/guid.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +61 -60
- package/Misc/index.js.map +1 -1
- package/Misc/instantiationTools.js +3 -3
- package/Misc/instantiationTools.js.map +1 -1
- package/Misc/khronosTextureContainer.js +1 -1
- package/Misc/khronosTextureContainer2.js +2 -2
- package/Misc/meshExploder.js +1 -1
- package/Misc/minMaxReducer.js +4 -4
- package/Misc/observable.d.ts +7 -0
- package/Misc/observable.js +22 -0
- package/Misc/observable.js.map +1 -1
- package/Misc/observableCoroutine.js +1 -1
- package/Misc/perfCounter.js +1 -1
- package/Misc/performanceMonitor.js +1 -1
- package/Misc/pivotTools.js +1 -1
- package/Misc/precisionDate.js +1 -1
- package/Misc/reflector.js +4 -4
- package/Misc/reflector.js.map +1 -1
- package/Misc/rgbdTextureTools.js +5 -5
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneOptimizer.js +3 -3
- package/Misc/sceneRecorder.js +14 -14
- package/Misc/sceneSerializer.js +4 -4
- package/Misc/screenshotTools.d.ts +96 -12
- package/Misc/screenshotTools.js +302 -207
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/stringTools.d.ts +54 -47
- package/Misc/stringTools.js +108 -105
- package/Misc/stringTools.js.map +1 -1
- package/Misc/tags.js +1 -1
- package/Misc/textureTools.d.ts +38 -8
- package/Misc/textureTools.js +169 -138
- package/Misc/textureTools.js.map +1 -1
- package/Misc/tga.d.ts +34 -22
- package/Misc/tga.js +279 -260
- package/Misc/tga.js.map +1 -1
- package/Misc/timer.js +1 -1
- package/Misc/timingTools.js +2 -2
- package/Misc/timingTools.js.map +1 -1
- package/Misc/tools.d.ts +5 -5
- package/Misc/tools.js +42 -42
- package/Misc/tools.js.map +1 -1
- package/Misc/trajectoryClassifier.js +1 -1
- package/Misc/typeStore.d.ts +3 -8
- package/Misc/typeStore.js +9 -15
- package/Misc/typeStore.js.map +1 -1
- package/Misc/videoRecorder.js +1 -1
- package/Misc/virtualJoystick.js +2 -2
- package/Morph/index.js +2 -2
- package/Morph/morphTarget.js +6 -6
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.d.ts +1 -1
- package/Morph/morphTargetManager.js +11 -10
- package/Morph/morphTargetManager.js.map +1 -1
- package/Navigation/Plugins/index.js +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +6 -6
- package/Navigation/index.js +2 -2
- package/Offline/database.js +6 -6
- package/Offline/database.js.map +1 -1
- package/Offline/index.js +2 -2
- package/Particles/EmitterTypes/boxParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/coneParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/customParticleEmitter.js +2 -2
- package/Particles/EmitterTypes/cylinderParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/index.js +9 -9
- package/Particles/EmitterTypes/meshParticleEmitter.js +4 -4
- package/Particles/EmitterTypes/pointParticleEmitter.js +3 -3
- package/Particles/EmitterTypes/sphereParticleEmitter.js +3 -3
- package/Particles/baseParticleSystem.js +5 -5
- package/Particles/cloudPoint.js +1 -1
- package/Particles/computeShaderParticleSystem.js +7 -7
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +24 -24
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/index.js +17 -17
- package/Particles/particle.js +3 -3
- package/Particles/particleHelper.js +8 -8
- package/Particles/particleSystem.js +26 -26
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +7 -7
- package/Particles/particleSystemSet.js +7 -7
- package/Particles/particleSystemSet.js.map +1 -1
- package/Particles/pointsCloudSystem.js +12 -12
- package/Particles/solidParticle.js +5 -5
- package/Particles/solidParticleSystem.js +15 -15
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/subEmitter.d.ts +2 -1
- package/Particles/subEmitter.js +10 -8
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/webgl2ParticleSystem.js +7 -7
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.js +35 -27
- package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/Plugins/cannonJSPlugin.js +7 -7
- package/Physics/Plugins/index.js +3 -3
- package/Physics/Plugins/oimoJSPlugin.js +6 -6
- package/Physics/index.js +7 -7
- package/Physics/physicsEngine.js +3 -3
- package/Physics/physicsEngine.js.map +1 -1
- package/Physics/physicsEngineComponent.js +7 -7
- package/Physics/physicsHelper.js +8 -8
- package/Physics/physicsHelper.js.map +1 -1
- package/Physics/physicsImpostor.js +7 -7
- package/Physics/physicsRaycastResult.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +18 -18
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/index.js +5 -5
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +9 -9
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +17 -17
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +12 -12
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +16 -16
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/index.js +5 -5
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js +3 -3
- package/PostProcesses/anaglyphPostProcess.js +4 -4
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +5 -5
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.js +6 -6
- package/PostProcesses/bloomMergePostProcess.js +5 -5
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +7 -7
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +6 -6
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js +6 -6
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +6 -6
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +5 -5
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +5 -5
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +6 -6
- package/PostProcesses/depthOfFieldMergePostProcess.js +2 -2
- package/PostProcesses/displayPassPostProcess.js +5 -5
- package/PostProcesses/displayPassPostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +6 -6
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +5 -5
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.js +7 -7
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +5 -5
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.js +2 -2
- package/PostProcesses/imageProcessingPostProcess.js +6 -6
- package/PostProcesses/index.js +33 -33
- package/PostProcesses/motionBlurPostProcess.js +11 -11
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +7 -7
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +11 -11
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +1 -1
- package/PostProcesses/refractionPostProcess.js +6 -6
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +8 -8
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +7 -7
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +5 -5
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.js +3 -3
- package/PostProcesses/subSurfaceScatteringPostProcess.js +6 -6
- package/PostProcesses/tonemapPostProcess.js +2 -2
- package/PostProcesses/volumetricLightScatteringPostProcess.js +23 -23
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +4 -4
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +4 -4
- package/Probes/index.js +1 -1
- package/Probes/reflectionProbe.js +4 -4
- package/Rendering/boundingBoxRenderer.js +15 -15
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthRenderer.js +11 -11
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRendererSceneComponent.js +3 -3
- package/Rendering/edgesRenderer.js +11 -11
- package/Rendering/geometryBufferRenderer.js +13 -13
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/geometryBufferRendererSceneComponent.js +3 -3
- package/Rendering/index.js +13 -13
- package/Rendering/motionBlurConfiguration.js.map +1 -1
- package/Rendering/outlineRenderer.js +8 -8
- package/Rendering/prePassRenderer.js +6 -6
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRendererSceneComponent.js +4 -4
- package/Rendering/renderingGroup.js +2 -2
- package/Rendering/renderingManager.js +1 -1
- package/Rendering/screenSpaceReflectionsConfiguration.js.map +1 -1
- package/Rendering/ssao2Configuration.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +6 -6
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/subSurfaceSceneComponent.js +5 -5
- package/Rendering/utilityLayerRenderer.js +8 -8
- package/Shaders/ShadersInclude/backgroundFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/backgroundUboDeclaration.js +2 -2
- package/Shaders/ShadersInclude/backgroundVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bayerDitherFunctions.js +1 -1
- package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/bonesVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpFragment.js +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.js +2 -2
- package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +1 -1
- package/Shaders/ShadersInclude/bumpVertex.js +1 -1
- package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragment.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneFragmentDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertex.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/clipPlaneVertexDeclaration2.js +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/depthPrePass.js +1 -1
- package/Shaders/ShadersInclude/diffusionProfile.js +1 -1
- package/Shaders/ShadersInclude/fibonacci.js +1 -1
- package/Shaders/ShadersInclude/fogFragment.js +2 -2
- package/Shaders/ShadersInclude/fogFragment.js.map +1 -1
- package/Shaders/ShadersInclude/fogFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fogVertex.js +1 -1
- package/Shaders/ShadersInclude/fogVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/fresnelFunction.js +1 -1
- package/Shaders/ShadersInclude/geometryUboDeclaration.js +2 -2
- package/Shaders/ShadersInclude/geometryVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/harmonicsFunctions.js +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingCompatibility.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +1 -1
- package/Shaders/ShadersInclude/importanceSampling.js +1 -1
- package/Shaders/ShadersInclude/instancesDeclaration.js +1 -1
- package/Shaders/ShadersInclude/instancesVertex.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurFragment2.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/kernelBlurVertex.js +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +1 -1
- package/Shaders/ShadersInclude/lightFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightVxUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/logDepthDeclaration.js +1 -1
- package/Shaders/ShadersInclude/logDepthFragment.js +1 -1
- package/Shaders/ShadersInclude/logDepthVertex.js +1 -1
- package/Shaders/ShadersInclude/mainUVVaryingDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/meshVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertex.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/packingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalColorComposition.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockGeometryInfo.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockLightmapInit.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockNormalGeometric.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance0.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFalloffFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.js +2 -2
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +3 -3
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrIBLFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
- package/Shaders/ShadersInclude/pointCloudVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/reflectionFunction.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentAlternateDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/samplerVertexImplementation.js +1 -1
- package/Shaders/ShadersInclude/sceneFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/sceneVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragment.js +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapFragmentSoftTransparentShadow.js +1 -1
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.js +3 -3
- package/Shaders/ShadersInclude/shadowMapVertexExtraDeclaration.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexMetric.js +1 -1
- package/Shaders/ShadersInclude/shadowMapVertexNormalBias.js +1 -1
- package/Shaders/ShadersInclude/shadowsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/shadowsVertex.js +1 -1
- package/Shaders/ShadersInclude/subSurfaceScatteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/uvAttributeDeclaration.js +1 -1
- package/Shaders/ShadersInclude/uvVariableDeclaration.js +1 -1
- package/Shaders/anaglyph.fragment.js +1 -1
- package/Shaders/background.fragment.js +16 -16
- package/Shaders/background.vertex.js +15 -15
- package/Shaders/blackAndWhite.fragment.js +1 -1
- package/Shaders/bloomMerge.fragment.js +1 -1
- package/Shaders/blur.fragment.js +1 -1
- package/Shaders/chromaticAberration.fragment.js +1 -1
- package/Shaders/circleOfConfusion.fragment.js +1 -1
- package/Shaders/clearQuad.fragment.js +1 -1
- package/Shaders/clearQuad.vertex.js +1 -1
- package/Shaders/color.fragment.js +3 -3
- package/Shaders/color.vertex.js +7 -7
- package/Shaders/colorCorrection.fragment.js +1 -1
- package/Shaders/convolution.fragment.js +1 -1
- package/Shaders/default.fragment.js +26 -26
- package/Shaders/default.vertex.js +31 -31
- package/Shaders/depth.fragment.js +2 -2
- package/Shaders/depth.vertex.js +9 -9
- package/Shaders/depthBoxBlur.fragment.js +1 -1
- package/Shaders/depthOfField.fragment.js +1 -1
- package/Shaders/depthOfFieldMerge.fragment.js +1 -1
- package/Shaders/displayPass.fragment.js +1 -1
- package/Shaders/extractHighlights.fragment.js +2 -2
- package/Shaders/filter.fragment.js +1 -1
- package/Shaders/fxaa.fragment.js +1 -1
- package/Shaders/fxaa.vertex.js +1 -1
- package/Shaders/geometry.fragment.js +5 -5
- package/Shaders/geometry.vertex.js +12 -12
- package/Shaders/glowBlurPostProcess.fragment.js +1 -1
- package/Shaders/glowMapGeneration.fragment.js +2 -2
- package/Shaders/glowMapGeneration.vertex.js +9 -9
- package/Shaders/glowMapMerge.fragment.js +1 -1
- package/Shaders/glowMapMerge.vertex.js +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +6 -6
- package/Shaders/gpuRenderParticles.vertex.js +3 -3
- package/Shaders/gpuUpdateParticles.fragment.js +1 -1
- package/Shaders/gpuUpdateParticles.vertex.js +1 -1
- package/Shaders/grain.fragment.js +2 -2
- package/Shaders/hdrFiltering.fragment.js +5 -5
- package/Shaders/hdrFiltering.vertex.js +1 -1
- package/Shaders/highlights.fragment.js +1 -1
- package/Shaders/imageProcessing.fragment.js +4 -4
- package/Shaders/kernelBlur.fragment.js +5 -5
- package/Shaders/kernelBlur.vertex.js +3 -3
- package/Shaders/layer.fragment.js +2 -2
- package/Shaders/layer.vertex.js +1 -1
- package/Shaders/lensFlare.fragment.js +1 -1
- package/Shaders/lensFlare.vertex.js +1 -1
- package/Shaders/lensHighlights.fragment.js +1 -1
- package/Shaders/line.fragment.js +3 -3
- package/Shaders/line.vertex.js +5 -5
- package/Shaders/minmaxRedux.fragment.js +1 -1
- package/Shaders/motionBlur.fragment.js +1 -1
- package/Shaders/noise.fragment.js +1 -1
- package/Shaders/outline.fragment.js +3 -3
- package/Shaders/outline.vertex.js +11 -11
- package/Shaders/particles.fragment.js +6 -6
- package/Shaders/particles.vertex.js +3 -3
- package/Shaders/pass.fragment.js +1 -1
- package/Shaders/passCube.fragment.js +1 -1
- package/Shaders/pbr.fragment.js +55 -55
- package/Shaders/pbr.vertex.js +31 -31
- package/Shaders/postprocess.vertex.js +1 -1
- package/Shaders/procedural.vertex.js +1 -1
- package/Shaders/refraction.fragment.js +1 -1
- package/Shaders/rgbdDecode.fragment.js +2 -2
- package/Shaders/rgbdEncode.fragment.js +2 -2
- package/Shaders/screenSpaceCurvature.fragment.js +1 -1
- package/Shaders/screenSpaceReflection.fragment.js +1 -1
- package/Shaders/shadowMap.fragment.js +5 -5
- package/Shaders/shadowMap.vertex.js +16 -16
- package/Shaders/sharpen.fragment.js +1 -1
- package/Shaders/spriteMap.fragment.js +1 -1
- package/Shaders/spriteMap.vertex.js +1 -1
- package/Shaders/sprites.fragment.js +4 -4
- package/Shaders/sprites.vertex.js +2 -2
- package/Shaders/ssao.fragment.js +1 -1
- package/Shaders/ssao2.fragment.js +1 -1
- package/Shaders/ssaoCombine.fragment.js +1 -1
- package/Shaders/standard.fragment.js +2 -2
- package/Shaders/stereoscopicInterlace.fragment.js +1 -1
- package/Shaders/subSurfaceScattering.fragment.js +5 -5
- package/Shaders/tonemap.fragment.js +1 -1
- package/Shaders/volumetricLightScattering.fragment.js +1 -1
- package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
- package/Shaders/volumetricLightScatteringPass.vertex.js +9 -9
- package/Shaders/vrDistortionCorrection.fragment.js +1 -1
- package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/instancesVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertex.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobal.js +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexGlobalDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/Sprites/index.js +6 -6
- package/Sprites/sprite.js +4 -4
- package/Sprites/spriteManager.js +11 -11
- package/Sprites/spriteMap.js +11 -11
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spritePackedManager.js +2 -2
- package/Sprites/spriteRenderer.js +6 -6
- package/Sprites/spriteSceneComponent.js +6 -6
- package/States/index.js +4 -4
- package/XR/features/WebXRAnchorSystem.js +5 -5
- package/XR/features/WebXRBackgroundRemover.js +3 -3
- package/XR/features/WebXRControllerMovement.js +5 -5
- package/XR/features/WebXRControllerPhysics.js +8 -8
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +19 -15
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.js +24 -24
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.js +3 -3
- package/XR/features/WebXREyeTracking.js +5 -5
- package/XR/features/WebXRFeaturePointSystem.js +4 -4
- package/XR/features/WebXRHandTracking.js +15 -15
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRHitTest.js +5 -5
- package/XR/features/WebXRHitTestLegacy.js +5 -5
- package/XR/features/WebXRImageTracking.js +5 -5
- package/XR/features/WebXRLightEstimation.js +12 -12
- package/XR/features/WebXRMeshDetector.js +4 -4
- package/XR/features/WebXRNearInteraction.js +14 -12
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.js +4 -4
- package/XR/features/WebXRWalkingLocomotion.js +5 -5
- package/XR/features/index.js +19 -19
- package/XR/index.js +12 -12
- package/XR/motionController/index.js +9 -9
- package/XR/motionController/webXRAbstractMotionController.js +6 -6
- package/XR/motionController/webXRControllerComponent.js +1 -1
- package/XR/motionController/webXRGenericHandController.js +2 -2
- package/XR/motionController/webXRGenericMotionController.js +3 -3
- package/XR/motionController/webXRHTCViveMotionController.js +4 -4
- package/XR/motionController/webXRMicrosoftMixedRealityController.js +6 -6
- package/XR/motionController/webXRMotionControllerManager.js +3 -3
- package/XR/motionController/webXROculusTouchMotionController.js +4 -4
- package/XR/motionController/webXRProfiledMotionController.js +10 -10
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.js +7 -7
- package/XR/webXRDefaultExperience.js +7 -7
- package/XR/webXREnterExitUI.js +3 -3
- package/XR/webXRExperienceHelper.js +8 -8
- package/XR/webXRFeaturesManager.js +1 -1
- package/XR/webXRInput.js +3 -3
- package/XR/webXRInputSource.js +5 -5
- package/XR/webXRManagedOutputCanvas.js +2 -2
- package/XR/webXRSessionManager.js +5 -5
- package/assetContainer.js +4 -4
- package/index.d.ts +1 -0
- package/index.js +44 -43
- package/index.js.map +1 -1
- package/license.md +12 -13
- package/node.js +6 -6
- package/node.js.map +1 -1
- package/package.json +10 -1
- package/readme.md +12 -13
- package/scene.d.ts +5 -147
- package/scene.js +46 -229
- package/scene.js.map +1 -1
- package/scene.lts.d.ts +165 -0
- package/scene.lts.js +68 -0
- package/scene.lts.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebXRControllerTeleportation.js","sourceRoot":"","sources":["../../../../sourceES6/core/XR/features/WebXRControllerTeleportation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IWebXRFeature, WebXRFeaturesManager, WebXRFeatureName } from \"../webXRFeaturesManager\";\r\nimport { Observable, Observer } from \"../../Misc/observable\";\r\nimport { WebXRSessionManager } from \"../webXRSessionManager\";\r\nimport { Nullable } from \"../../types\";\r\nimport { WebXRInput } from \"../webXRInput\";\r\nimport { WebXRInputSource } from \"../webXRInputSource\";\r\nimport { WebXRControllerComponent, IWebXRMotionControllerAxesValue } from \"../motionController/webXRControllerComponent\";\r\nimport { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Vector3, Quaternion } from \"../../Maths/math.vector\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { Material } from \"../../Materials/material\";\r\nimport { DynamicTexture } from \"../../Materials/Textures/dynamicTexture\";\r\nimport { CylinderBuilder } from \"../../Meshes/Builders/cylinderBuilder\";\r\nimport { SineEase, EasingFunction } from \"../../Animations/easing\";\r\nimport { Animation } from \"../../Animations/animation\";\r\nimport { Axis } from \"../../Maths/math.axis\";\r\nimport { StandardMaterial } from \"../../Materials/standardMaterial\";\r\nimport { GroundBuilder } from \"../../Meshes/Builders/groundBuilder\";\r\nimport { TorusBuilder } from \"../../Meshes/Builders/torusBuilder\";\r\nimport { PickingInfo } from \"../../Collisions/pickingInfo\";\r\nimport { Curve3 } from \"../../Maths/math.path\";\r\nimport { LinesBuilder } from \"../../Meshes/Builders/linesBuilder\";\r\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature\";\r\nimport { Color3 } from \"../../Maths/math.color\";\r\nimport { Scene } from \"../../scene\";\r\nimport { UtilityLayerRenderer } from \"../../Rendering/utilityLayerRenderer\";\r\nimport { PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { setAndStartTimer } from \"../../Misc/timer\";\r\nimport { LinesMesh } from \"../../Meshes/linesMesh\";\r\n\r\n/**\r\n * The options container for the teleportation module\r\n */\r\nexport interface IWebXRTeleportationOptions {\r\n /**\r\n * if provided, this scene will be used to render meshes.\r\n */\r\n customUtilityLayerScene?: Scene;\r\n /**\r\n * Values to configure the default target mesh\r\n */\r\n defaultTargetMeshOptions?: {\r\n /**\r\n * Fill color of the teleportation area\r\n */\r\n teleportationFillColor?: string;\r\n /**\r\n * Border color for the teleportation area\r\n */\r\n teleportationBorderColor?: string;\r\n /**\r\n * Disable the mesh's animation sequence\r\n */\r\n disableAnimation?: boolean;\r\n /**\r\n * Disable lighting on the material or the ring and arrow\r\n */\r\n disableLighting?: boolean;\r\n /**\r\n * Override the default material of the torus and arrow\r\n */\r\n torusArrowMaterial?: Material;\r\n };\r\n /**\r\n * A list of meshes to use as floor meshes.\r\n * Meshes can be added and removed after initializing the feature using the\r\n * addFloorMesh and removeFloorMesh functions\r\n * If empty, rotation will still work\r\n */\r\n floorMeshes?: AbstractMesh[];\r\n /**\r\n * use this rendering group id for the meshes (optional)\r\n */\r\n renderingGroupId?: number;\r\n /**\r\n * Should teleportation move only to snap points\r\n */\r\n snapPointsOnly?: boolean;\r\n /**\r\n * An array of points to which the teleportation will snap to.\r\n * If the teleportation ray is in the proximity of one of those points, it will be corrected to this point.\r\n */\r\n snapPositions?: Vector3[];\r\n /**\r\n * How close should the teleportation ray be in order to snap to position.\r\n * Default to 0.8 units (meters)\r\n */\r\n snapToPositionRadius?: number;\r\n /**\r\n * Provide your own teleportation mesh instead of babylon's wonderful doughnut.\r\n * If you want to support rotation, make sure your mesh has a direction indicator.\r\n *\r\n * When left untouched, the default mesh will be initialized.\r\n */\r\n teleportationTargetMesh?: AbstractMesh;\r\n /**\r\n * If main component is used (no thumbstick), how long should the \"long press\" take before teleport\r\n */\r\n timeToTeleport?: number;\r\n /**\r\n * Disable using the thumbstick and use the main component (usually trigger) on long press.\r\n * This will be automatically true if the controller doesn't have a thumbstick or touchpad.\r\n */\r\n useMainComponentOnly?: boolean;\r\n /**\r\n * Should meshes created here be added to a utility layer or the main scene\r\n */\r\n useUtilityLayer?: boolean;\r\n /**\r\n * Babylon XR Input class for controller\r\n */\r\n xrInput: WebXRInput;\r\n\r\n /**\r\n * Meshes that the teleportation ray cannot go through\r\n */\r\n pickBlockerMeshes?: AbstractMesh[];\r\n\r\n /**\r\n * Should teleport work only on a specific hand?\r\n */\r\n forceHandedness?: XRHandedness;\r\n\r\n /**\r\n * If provided, this function will be used to generate the ray mesh instead of the lines mesh being used per default\r\n */\r\n generateRayPathMesh?: (points: Vector3[], pickingInfo: PickingInfo) => AbstractMesh;\r\n}\r\n\r\n/**\r\n * This is a teleportation feature to be used with WebXR-enabled motion controllers.\r\n * When enabled and attached, the feature will allow a user to move around and rotate in the scene using\r\n * the input of the attached controllers.\r\n */\r\nexport class WebXRMotionControllerTeleportation extends WebXRAbstractFeature {\r\n private _controllers: {\r\n [controllerUniqueId: string]: {\r\n xrController: WebXRInputSource;\r\n teleportationComponent?: WebXRControllerComponent;\r\n teleportationState: {\r\n forward: boolean;\r\n backwards: boolean;\r\n currentRotation: number;\r\n baseRotation: number;\r\n rotating: boolean;\r\n };\r\n onAxisChangedObserver?: Nullable<Observer<IWebXRMotionControllerAxesValue>>;\r\n onButtonChangedObserver?: Nullable<Observer<WebXRControllerComponent>>;\r\n };\r\n } = {};\r\n private _currentTeleportationControllerId: string;\r\n private _floorMeshes: AbstractMesh[];\r\n private _quadraticBezierCurve: Nullable<AbstractMesh>;\r\n private _selectionFeature: Nullable<IWebXRFeature>;\r\n private _snapToPositions: Vector3[];\r\n private _snappedToPoint: boolean = false;\r\n private _teleportationRingMaterial?: StandardMaterial;\r\n private _tmpRay = new Ray(new Vector3(), new Vector3());\r\n private _tmpVector = new Vector3();\r\n private _tmpQuaternion = new Quaternion();\r\n\r\n /**\r\n * Skip the next teleportation. This can be controlled by the user to prevent the user from teleportation\r\n * to sections that are not yet \"unlocked\", but should still show the teleportation mesh.\r\n */\r\n public skipNextTeleportation = false;\r\n\r\n /**\r\n * The module's name\r\n */\r\n public static readonly Name = WebXRFeatureName.TELEPORTATION;\r\n /**\r\n * The (Babylon) version of this module.\r\n * This is an integer representing the implementation version.\r\n * This number does not correspond to the webxr specs version\r\n */\r\n public static readonly Version = 1;\r\n\r\n /**\r\n * Is movement backwards enabled\r\n */\r\n public backwardsMovementEnabled = true;\r\n /**\r\n * Distance to travel when moving backwards\r\n */\r\n public backwardsTeleportationDistance: number = 0.7;\r\n /**\r\n * The distance from the user to the inspection point in the direction of the controller\r\n * A higher number will allow the user to move further\r\n * defaults to 5 (meters, in xr units)\r\n */\r\n public parabolicCheckRadius: number = 5;\r\n /**\r\n * Should the module support parabolic ray on top of direct ray\r\n * If enabled, the user will be able to point \"at the sky\" and move according to predefined radius distance\r\n * Very helpful when moving between floors / different heights\r\n */\r\n public parabolicRayEnabled: boolean = true;\r\n\r\n /**\r\n * The second type of ray - straight line.\r\n * Should it be enabled or should the parabolic line be the only one.\r\n */\r\n public straightRayEnabled: boolean = true;\r\n /**\r\n * How much rotation should be applied when rotating right and left\r\n */\r\n public rotationAngle: number = Math.PI / 8;\r\n\r\n /**\r\n * This observable will notify when the target mesh position was updated.\r\n * The picking info it provides contains the point to which the target mesh will move ()\r\n */\r\n public onTargetMeshPositionUpdatedObservable: Observable<PickingInfo> = new Observable();\r\n\r\n /**\r\n * Is teleportation enabled. Can be used to allow rotation only.\r\n */\r\n public teleportationEnabled: boolean = true;\r\n\r\n private _rotationEnabled: boolean = true;\r\n\r\n /**\r\n * Is rotation enabled when moving forward?\r\n * Disabling this feature will prevent the user from deciding the direction when teleporting\r\n */\r\n public get rotationEnabled(): boolean {\r\n return this._rotationEnabled;\r\n }\r\n\r\n /**\r\n * Sets whether rotation is enabled or not\r\n * @param enabled is rotation enabled when teleportation is shown\r\n */\r\n public set rotationEnabled(enabled: boolean) {\r\n this._rotationEnabled = enabled;\r\n\r\n if (this._options.teleportationTargetMesh) {\r\n const children = this._options.teleportationTargetMesh.getChildMeshes(false, (node) => node.name === \"rotationCone\");\r\n if (children[0]) {\r\n children[0].setEnabled(enabled);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Exposes the currently set teleportation target mesh.\r\n */\r\n public get teleportationTargetMesh(): Nullable<AbstractMesh> {\r\n return this._options.teleportationTargetMesh || null;\r\n }\r\n\r\n /**\r\n * constructs a new teleportation system\r\n * @param _xrSessionManager an instance of WebXRSessionManager\r\n * @param _options configuration object for this feature\r\n */\r\n constructor(_xrSessionManager: WebXRSessionManager, private _options: IWebXRTeleportationOptions) {\r\n super(_xrSessionManager);\r\n // create default mesh if not provided\r\n if (!this._options.teleportationTargetMesh) {\r\n this._createDefaultTargetMesh();\r\n }\r\n\r\n this._floorMeshes = this._options.floorMeshes || [];\r\n this._snapToPositions = this._options.snapPositions || [];\r\n\r\n this._setTargetMeshVisibility(false);\r\n }\r\n\r\n /**\r\n * Get the snapPointsOnly flag\r\n */\r\n public get snapPointsOnly(): boolean {\r\n return !!this._options.snapPointsOnly;\r\n }\r\n\r\n /**\r\n * Sets the snapPointsOnly flag\r\n * @param snapToPoints should teleportation be exclusively to snap points\r\n */\r\n public set snapPointsOnly(snapToPoints: boolean) {\r\n this._options.snapPointsOnly = snapToPoints;\r\n }\r\n\r\n /**\r\n * Add a new mesh to the floor meshes array\r\n * @param mesh the mesh to use as floor mesh\r\n */\r\n public addFloorMesh(mesh: AbstractMesh) {\r\n this._floorMeshes.push(mesh);\r\n }\r\n\r\n /**\r\n * Add a mesh to the list of meshes blocking the teleportation ray\r\n * @param mesh The mesh to add to the teleportation-blocking meshes\r\n */\r\n public addBlockerMesh(mesh: AbstractMesh) {\r\n this._options.pickBlockerMeshes = this._options.pickBlockerMeshes || [];\r\n this._options.pickBlockerMeshes.push(mesh);\r\n }\r\n\r\n /**\r\n * Add a new snap-to point to fix teleportation to this position\r\n * @param newSnapPoint The new Snap-To point\r\n */\r\n public addSnapPoint(newSnapPoint: Vector3) {\r\n this._snapToPositions.push(newSnapPoint);\r\n }\r\n\r\n public attach(): boolean {\r\n if (!super.attach()) {\r\n return false;\r\n }\r\n\r\n // Safety reset\r\n this._currentTeleportationControllerId = \"\";\r\n\r\n this._options.xrInput.controllers.forEach(this._attachController);\r\n this._addNewAttachObserver(this._options.xrInput.onControllerAddedObservable, this._attachController);\r\n this._addNewAttachObserver(this._options.xrInput.onControllerRemovedObservable, (controller) => {\r\n // REMOVE the controller\r\n this._detachController(controller.uniqueId);\r\n });\r\n\r\n return true;\r\n }\r\n\r\n public detach(): boolean {\r\n if (!super.detach()) {\r\n return false;\r\n }\r\n\r\n Object.keys(this._controllers).forEach((controllerId) => {\r\n this._detachController(controllerId);\r\n });\r\n\r\n this._setTargetMeshVisibility(false);\r\n this._currentTeleportationControllerId = \"\";\r\n this._controllers = {};\r\n\r\n return true;\r\n }\r\n\r\n public dispose(): void {\r\n super.dispose();\r\n this._options.teleportationTargetMesh && this._options.teleportationTargetMesh.dispose(false, true);\r\n }\r\n\r\n /**\r\n * Remove a mesh from the floor meshes array\r\n * @param mesh the mesh to remove\r\n */\r\n public removeFloorMesh(mesh: AbstractMesh) {\r\n const index = this._floorMeshes.indexOf(mesh);\r\n if (index !== -1) {\r\n this._floorMeshes.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the blocker meshes array\r\n * @param mesh the mesh to remove\r\n */\r\n public removeBlockerMesh(mesh: AbstractMesh) {\r\n this._options.pickBlockerMeshes = this._options.pickBlockerMeshes || [];\r\n const index = this._options.pickBlockerMeshes.indexOf(mesh);\r\n if (index !== -1) {\r\n this._options.pickBlockerMeshes.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the floor meshes array using its name\r\n * @param name the mesh name to remove\r\n */\r\n public removeFloorMeshByName(name: string) {\r\n const mesh = this._xrSessionManager.scene.getMeshByName(name);\r\n if (mesh) {\r\n this.removeFloorMesh(mesh);\r\n }\r\n }\r\n\r\n /**\r\n * This function will iterate through the array, searching for this point or equal to it. It will then remove it from the snap-to array\r\n * @param snapPointToRemove the point (or a clone of it) to be removed from the array\r\n * @returns was the point found and removed or not\r\n */\r\n public removeSnapPoint(snapPointToRemove: Vector3): boolean {\r\n // check if the object is in the array\r\n let index = this._snapToPositions.indexOf(snapPointToRemove);\r\n // if not found as an object, compare to the points\r\n if (index === -1) {\r\n for (let i = 0; i < this._snapToPositions.length; ++i) {\r\n // equals? index is i, break the loop\r\n if (this._snapToPositions[i].equals(snapPointToRemove)) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n // index is not -1? remove the object\r\n if (index !== -1) {\r\n this._snapToPositions.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * This function sets a selection feature that will be disabled when\r\n * the forward ray is shown and will be reattached when hidden.\r\n * This is used to remove the selection rays when moving.\r\n * @param selectionFeature the feature to disable when forward movement is enabled\r\n */\r\n public setSelectionFeature(selectionFeature: Nullable<IWebXRFeature>) {\r\n this._selectionFeature = selectionFeature;\r\n }\r\n\r\n protected _onXRFrame(_xrFrame: XRFrame) {\r\n const frame = this._xrSessionManager.currentFrame;\r\n const scene = this._xrSessionManager.scene;\r\n if (!this.attach || !frame) {\r\n return;\r\n }\r\n\r\n // render target if needed\r\n const targetMesh = this._options.teleportationTargetMesh;\r\n if (this._currentTeleportationControllerId) {\r\n if (!targetMesh) {\r\n return;\r\n }\r\n targetMesh.rotationQuaternion = targetMesh.rotationQuaternion || new Quaternion();\r\n const controllerData = this._controllers[this._currentTeleportationControllerId];\r\n if (controllerData && controllerData.teleportationState.forward) {\r\n // set the rotation\r\n Quaternion.RotationYawPitchRollToRef(\r\n controllerData.teleportationState.currentRotation + controllerData.teleportationState.baseRotation,\r\n 0,\r\n 0,\r\n targetMesh.rotationQuaternion\r\n );\r\n // set the ray and position\r\n\r\n let hitPossible = false;\r\n controllerData.xrController.getWorldPointerRayToRef(this._tmpRay);\r\n if (this.straightRayEnabled) {\r\n // first check if direct ray possible\r\n // pick grounds that are LOWER only. upper will use parabolic path\r\n let pick = scene.pickWithRay(this._tmpRay, (o) => {\r\n // check for mesh-blockers\r\n if (this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(o) !== -1) {\r\n return true;\r\n }\r\n const index = this._floorMeshes.indexOf(o);\r\n if (index === -1) {\r\n return false;\r\n }\r\n return this._floorMeshes[index].absolutePosition.y < this._options.xrInput.xrCamera.globalPosition.y;\r\n });\r\n if (pick && pick.pickedMesh && this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(pick.pickedMesh) !== -1) {\r\n return;\r\n } else if (pick && pick.pickedPoint) {\r\n hitPossible = true;\r\n this._setTargetMeshPosition(pick);\r\n this._setTargetMeshVisibility(true);\r\n this._showParabolicPath(pick);\r\n }\r\n }\r\n // straight ray is still the main ray, but disabling the straight line will force parabolic line.\r\n if (this.parabolicRayEnabled && !hitPossible) {\r\n // radius compensation according to pointer rotation around X\r\n const xRotation = controllerData.xrController.pointer.rotationQuaternion!.toEulerAngles().x;\r\n const compensation = 1 + (Math.PI / 2 - Math.abs(xRotation));\r\n // check parabolic ray\r\n const radius = this.parabolicCheckRadius * compensation;\r\n this._tmpRay.origin.addToRef(this._tmpRay.direction.scale(radius * 2), this._tmpVector);\r\n this._tmpVector.y = this._tmpRay.origin.y;\r\n this._tmpRay.origin.addInPlace(this._tmpRay.direction.scale(radius));\r\n this._tmpVector.subtractToRef(this._tmpRay.origin, this._tmpRay.direction);\r\n this._tmpRay.direction.normalize();\r\n\r\n let pick = scene.pickWithRay(this._tmpRay, (o) => {\r\n // check for mesh-blockers\r\n if (this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(o) !== -1) {\r\n return true;\r\n }\r\n return this._floorMeshes.indexOf(o) !== -1;\r\n });\r\n if (pick && pick.pickedMesh && this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(pick.pickedMesh) !== -1) {\r\n return;\r\n } else if (pick && pick.pickedPoint) {\r\n hitPossible = true;\r\n this._setTargetMeshPosition(pick);\r\n this._setTargetMeshVisibility(true);\r\n this._showParabolicPath(pick);\r\n }\r\n }\r\n\r\n // if needed, set visible:\r\n this._setTargetMeshVisibility(hitPossible);\r\n } else {\r\n this._setTargetMeshVisibility(false);\r\n }\r\n } else {\r\n this._setTargetMeshVisibility(false);\r\n }\r\n }\r\n\r\n private _attachController = (xrController: WebXRInputSource) => {\r\n if (this._controllers[xrController.uniqueId] || (this._options.forceHandedness && xrController.inputSource.handedness !== this._options.forceHandedness)) {\r\n // already attached\r\n return;\r\n }\r\n this._controllers[xrController.uniqueId] = {\r\n xrController,\r\n teleportationState: {\r\n forward: false,\r\n backwards: false,\r\n rotating: false,\r\n currentRotation: 0,\r\n baseRotation: 0,\r\n },\r\n };\r\n const controllerData = this._controllers[xrController.uniqueId];\r\n // motion controller only available to gamepad-enabled input sources.\r\n if (controllerData.xrController.inputSource.targetRayMode === \"tracked-pointer\" && controllerData.xrController.inputSource.gamepad) {\r\n // motion controller support\r\n const initMotionController = () => {\r\n if (xrController.motionController) {\r\n const movementController =\r\n xrController.motionController.getComponentOfType(WebXRControllerComponent.THUMBSTICK_TYPE) ||\r\n xrController.motionController.getComponentOfType(WebXRControllerComponent.TOUCHPAD_TYPE);\r\n if (!movementController || this._options.useMainComponentOnly) {\r\n // use trigger to move on long press\r\n const mainComponent = xrController.motionController.getMainComponent();\r\n if (!mainComponent) {\r\n return;\r\n }\r\n controllerData.teleportationComponent = mainComponent;\r\n controllerData.onButtonChangedObserver = mainComponent.onButtonStateChangedObservable.add(() => {\r\n if (!this.teleportationEnabled) {\r\n return;\r\n }\r\n // did \"pressed\" changed?\r\n if (mainComponent.changes.pressed) {\r\n if (mainComponent.changes.pressed.current) {\r\n // simulate \"forward\" thumbstick push\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n controllerData.teleportationState.currentRotation = 0;\r\n const timeToSelect = this._options.timeToTeleport || 3000;\r\n setAndStartTimer({\r\n timeout: timeToSelect,\r\n contextObservable: this._xrSessionManager.onXRFrameObservable,\r\n breakCondition: () => !mainComponent.pressed,\r\n onEnded: () => {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId && controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n },\r\n });\r\n } else {\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n }\r\n }\r\n });\r\n } else {\r\n controllerData.teleportationComponent = movementController;\r\n // use thumbstick (or touchpad if thumbstick not available)\r\n controllerData.onAxisChangedObserver = movementController.onAxisValueChangedObservable.add((axesData) => {\r\n if (axesData.y <= 0.7 && controllerData.teleportationState.backwards) {\r\n controllerData.teleportationState.backwards = false;\r\n }\r\n if (axesData.y > 0.7 && !controllerData.teleportationState.forward && this.backwardsMovementEnabled && !this.snapPointsOnly) {\r\n // teleport backwards\r\n\r\n // General gist: Go Back N units, cast a ray towards the floor. If collided, move.\r\n if (!controllerData.teleportationState.backwards) {\r\n controllerData.teleportationState.backwards = true;\r\n // teleport backwards ONCE\r\n this._tmpQuaternion.copyFrom(this._options.xrInput.xrCamera.rotationQuaternion!);\r\n this._tmpQuaternion.toEulerAnglesToRef(this._tmpVector);\r\n // get only the y rotation\r\n this._tmpVector.x = 0;\r\n this._tmpVector.z = 0;\r\n // get the quaternion\r\n Quaternion.FromEulerVectorToRef(this._tmpVector, this._tmpQuaternion);\r\n this._tmpVector.set(0, 0, this.backwardsTeleportationDistance * (this._xrSessionManager.scene.useRightHandedSystem ? 1.0 : -1.0));\r\n this._tmpVector.rotateByQuaternionToRef(this._tmpQuaternion, this._tmpVector);\r\n this._tmpVector.addInPlace(this._options.xrInput.xrCamera.position);\r\n this._tmpRay.origin.copyFrom(this._tmpVector);\r\n // This will prevent the user from \"falling\" to a lower platform!\r\n // TODO - should this be a flag? 'allow falling to lower platforms'?\r\n this._tmpRay.length = this._options.xrInput.xrCamera.realWorldHeight + 0.1;\r\n // Right handed system had here \"1\" instead of -1. This is unneeded.\r\n this._tmpRay.direction.set(0, -1, 0);\r\n let pick = this._xrSessionManager.scene.pickWithRay(this._tmpRay, (o) => {\r\n return this._floorMeshes.indexOf(o) !== -1;\r\n });\r\n\r\n // pick must exist, but stay safe\r\n if (pick && pick.pickedPoint) {\r\n // Teleport the users feet to where they targeted. Ignore the Y axis.\r\n // If the \"falling to lower platforms\" feature is implemented the Y axis should be set here as well\r\n this._options.xrInput.xrCamera.position.x = pick.pickedPoint.x;\r\n this._options.xrInput.xrCamera.position.z = pick.pickedPoint.z;\r\n }\r\n }\r\n }\r\n if (axesData.y < -0.7 && !this._currentTeleportationControllerId && !controllerData.teleportationState.rotating && this.teleportationEnabled) {\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n }\r\n if (axesData.x) {\r\n if (!controllerData.teleportationState.forward) {\r\n if (!controllerData.teleportationState.rotating && Math.abs(axesData.x) > 0.7) {\r\n // rotate in the right direction positive is right\r\n controllerData.teleportationState.rotating = true;\r\n const rotation = this.rotationAngle * (axesData.x > 0 ? 1 : -1) * (this._xrSessionManager.scene.useRightHandedSystem ? -1 : 1);\r\n Quaternion.FromEulerAngles(0, rotation, 0).multiplyToRef(\r\n this._options.xrInput.xrCamera.rotationQuaternion,\r\n this._options.xrInput.xrCamera.rotationQuaternion\r\n );\r\n }\r\n } else {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId) {\r\n // set the rotation of the forward movement\r\n if (this.rotationEnabled) {\r\n setTimeout(() => {\r\n controllerData.teleportationState.currentRotation = Math.atan2(\r\n axesData.x,\r\n axesData.y * (this._xrSessionManager.scene.useRightHandedSystem ? 1 : -1)\r\n );\r\n });\r\n } else {\r\n controllerData.teleportationState.currentRotation = 0;\r\n }\r\n }\r\n }\r\n } else {\r\n controllerData.teleportationState.rotating = false;\r\n }\r\n\r\n if (axesData.x === 0 && axesData.y === 0) {\r\n if (controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n if (xrController.motionController) {\r\n initMotionController();\r\n } else {\r\n xrController.onMotionControllerInitObservable.addOnce(() => {\r\n initMotionController();\r\n });\r\n }\r\n } else {\r\n this._xrSessionManager.scene.onPointerObservable.add((pointerInfo) => {\r\n if (pointerInfo.type === PointerEventTypes.POINTERDOWN) {\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n controllerData.teleportationState.currentRotation = 0;\r\n const timeToSelect = this._options.timeToTeleport || 3000;\r\n setAndStartTimer({\r\n timeout: timeToSelect,\r\n contextObservable: this._xrSessionManager.onXRFrameObservable,\r\n onEnded: () => {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId && controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n },\r\n });\r\n } else if (pointerInfo.type === PointerEventTypes.POINTERUP) {\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n }\r\n });\r\n }\r\n };\r\n\r\n private _createDefaultTargetMesh() {\r\n // set defaults\r\n this._options.defaultTargetMeshOptions = this._options.defaultTargetMeshOptions || {};\r\n const sceneToRenderTo = this._options.useUtilityLayer\r\n ? this._options.customUtilityLayerScene || UtilityLayerRenderer.DefaultUtilityLayer.utilityLayerScene\r\n : this._xrSessionManager.scene;\r\n const teleportationTarget = GroundBuilder.CreateGround(\"teleportationTarget\", { width: 2, height: 2, subdivisions: 2 }, sceneToRenderTo);\r\n teleportationTarget.isPickable = false;\r\n const length = 512;\r\n const dynamicTexture = new DynamicTexture(\"teleportationPlaneDynamicTexture\", length, sceneToRenderTo, true);\r\n dynamicTexture.hasAlpha = true;\r\n const context = dynamicTexture.getContext();\r\n const centerX = length / 2;\r\n const centerY = length / 2;\r\n const radius = 200;\r\n context.beginPath();\r\n context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);\r\n context.fillStyle = this._options.defaultTargetMeshOptions.teleportationFillColor || \"#444444\";\r\n context.fill();\r\n context.lineWidth = 10;\r\n context.strokeStyle = this._options.defaultTargetMeshOptions.teleportationBorderColor || \"#FFFFFF\";\r\n context.stroke();\r\n context.closePath();\r\n dynamicTexture.update();\r\n const teleportationCircleMaterial = new StandardMaterial(\"teleportationPlaneMaterial\", sceneToRenderTo);\r\n teleportationCircleMaterial.diffuseTexture = dynamicTexture;\r\n teleportationTarget.material = teleportationCircleMaterial;\r\n const torus = TorusBuilder.CreateTorus(\r\n \"torusTeleportation\",\r\n {\r\n diameter: 0.75,\r\n thickness: 0.1,\r\n tessellation: 20,\r\n },\r\n sceneToRenderTo\r\n );\r\n torus.isPickable = false;\r\n torus.parent = teleportationTarget;\r\n if (!this._options.defaultTargetMeshOptions.disableAnimation) {\r\n const animationInnerCircle = new Animation(\"animationInnerCircle\", \"position.y\", 30, Animation.ANIMATIONTYPE_FLOAT, Animation.ANIMATIONLOOPMODE_CYCLE);\r\n const keys = [];\r\n keys.push({\r\n frame: 0,\r\n value: 0,\r\n });\r\n keys.push({\r\n frame: 30,\r\n value: 0.4,\r\n });\r\n keys.push({\r\n frame: 60,\r\n value: 0,\r\n });\r\n animationInnerCircle.setKeys(keys);\r\n const easingFunction = new SineEase();\r\n easingFunction.setEasingMode(EasingFunction.EASINGMODE_EASEINOUT);\r\n animationInnerCircle.setEasingFunction(easingFunction);\r\n torus.animations = [];\r\n torus.animations.push(animationInnerCircle);\r\n sceneToRenderTo.beginAnimation(torus, 0, 60, true);\r\n }\r\n\r\n const cone = CylinderBuilder.CreateCylinder(\"rotationCone\", { diameterTop: 0, tessellation: 4 }, sceneToRenderTo);\r\n cone.isPickable = false;\r\n cone.scaling.set(0.5, 0.12, 0.2);\r\n\r\n cone.rotate(Axis.X, Math.PI / 2);\r\n\r\n cone.position.z = 0.6;\r\n cone.parent = torus;\r\n\r\n if (this._options.defaultTargetMeshOptions.torusArrowMaterial) {\r\n torus.material = this._options.defaultTargetMeshOptions.torusArrowMaterial;\r\n cone.material = this._options.defaultTargetMeshOptions.torusArrowMaterial;\r\n } else {\r\n const torusConeMaterial = new StandardMaterial(\"torusConsMat\", sceneToRenderTo);\r\n torusConeMaterial.disableLighting = !!this._options.defaultTargetMeshOptions.disableLighting;\r\n if (torusConeMaterial.disableLighting) {\r\n torusConeMaterial.emissiveColor = new Color3(0.3, 0.3, 1.0);\r\n } else {\r\n torusConeMaterial.diffuseColor = new Color3(0.3, 0.3, 1.0);\r\n }\r\n torusConeMaterial.alpha = 0.9;\r\n torus.material = torusConeMaterial;\r\n cone.material = torusConeMaterial;\r\n this._teleportationRingMaterial = torusConeMaterial;\r\n }\r\n\r\n if (this._options.renderingGroupId !== undefined) {\r\n teleportationTarget.renderingGroupId = this._options.renderingGroupId;\r\n torus.renderingGroupId = this._options.renderingGroupId;\r\n cone.renderingGroupId = this._options.renderingGroupId;\r\n }\r\n\r\n this._options.teleportationTargetMesh = teleportationTarget;\r\n }\r\n\r\n private _detachController(xrControllerUniqueId: string) {\r\n const controllerData = this._controllers[xrControllerUniqueId];\r\n if (!controllerData) {\r\n return;\r\n }\r\n if (controllerData.teleportationComponent) {\r\n if (controllerData.onAxisChangedObserver) {\r\n controllerData.teleportationComponent.onAxisValueChangedObservable.remove(controllerData.onAxisChangedObserver);\r\n }\r\n if (controllerData.onButtonChangedObserver) {\r\n controllerData.teleportationComponent.onButtonStateChangedObservable.remove(controllerData.onButtonChangedObserver);\r\n }\r\n }\r\n // remove from the map\r\n delete this._controllers[xrControllerUniqueId];\r\n }\r\n\r\n private _findClosestSnapPointWithRadius(realPosition: Vector3, radius: number = this._options.snapToPositionRadius || 0.8) {\r\n let closestPoint: Nullable<Vector3> = null;\r\n let closestDistance = Number.MAX_VALUE;\r\n if (this._snapToPositions.length) {\r\n const radiusSquared = radius * radius;\r\n this._snapToPositions.forEach((position) => {\r\n const dist = Vector3.DistanceSquared(position, realPosition);\r\n if (dist <= radiusSquared && dist < closestDistance) {\r\n closestDistance = dist;\r\n closestPoint = position;\r\n }\r\n });\r\n }\r\n return closestPoint;\r\n }\r\n\r\n private _setTargetMeshPosition(pickInfo: PickingInfo) {\r\n const newPosition = pickInfo.pickedPoint;\r\n if (!this._options.teleportationTargetMesh || !newPosition) {\r\n return;\r\n }\r\n const snapPosition = this._findClosestSnapPointWithRadius(newPosition);\r\n this._snappedToPoint = !!snapPosition;\r\n if (this.snapPointsOnly && !this._snappedToPoint && this._teleportationRingMaterial) {\r\n this._teleportationRingMaterial.diffuseColor.set(1.0, 0.3, 0.3);\r\n } else if (this.snapPointsOnly && this._snappedToPoint && this._teleportationRingMaterial) {\r\n this._teleportationRingMaterial.diffuseColor.set(0.3, 0.3, 1.0);\r\n }\r\n this._options.teleportationTargetMesh.position.copyFrom(snapPosition || newPosition);\r\n this._options.teleportationTargetMesh.position.y += 0.01;\r\n this.onTargetMeshPositionUpdatedObservable.notifyObservers(pickInfo);\r\n }\r\n\r\n private _setTargetMeshVisibility(visible: boolean) {\r\n if (!this._options.teleportationTargetMesh) {\r\n return;\r\n }\r\n if (this._options.teleportationTargetMesh.isVisible === visible) {\r\n return;\r\n }\r\n this._options.teleportationTargetMesh.isVisible = visible;\r\n this._options.teleportationTargetMesh.getChildren(undefined, false).forEach((m) => {\r\n (<any>m).isVisible = visible;\r\n });\r\n\r\n if (!visible) {\r\n if (this._quadraticBezierCurve) {\r\n this._quadraticBezierCurve.dispose();\r\n this._quadraticBezierCurve = null;\r\n }\r\n if (this._selectionFeature) {\r\n this._selectionFeature.attach();\r\n }\r\n } else {\r\n if (this._selectionFeature) {\r\n this._selectionFeature.detach();\r\n }\r\n }\r\n }\r\n\r\n private _showParabolicPath(pickInfo: PickingInfo) {\r\n if (!pickInfo.pickedPoint) {\r\n return;\r\n }\r\n\r\n const sceneToRenderTo = this._options.useUtilityLayer\r\n ? this._options.customUtilityLayerScene || UtilityLayerRenderer.DefaultUtilityLayer.utilityLayerScene\r\n : this._xrSessionManager.scene;\r\n\r\n const controllerData = this._controllers[this._currentTeleportationControllerId];\r\n\r\n const quadraticBezierVectors = Curve3.CreateQuadraticBezier(controllerData.xrController.pointer.absolutePosition, pickInfo.ray!.origin, pickInfo.pickedPoint, 25);\r\n if (!this._options.generateRayPathMesh) {\r\n this._quadraticBezierCurve = LinesBuilder.CreateLines(\r\n \"teleportation path line\",\r\n { points: quadraticBezierVectors.getPoints(), instance: this._quadraticBezierCurve as LinesMesh, updatable: true },\r\n sceneToRenderTo\r\n );\r\n } else {\r\n this._quadraticBezierCurve = this._options.generateRayPathMesh(quadraticBezierVectors.getPoints(), pickInfo);\r\n }\r\n this._quadraticBezierCurve.isPickable = false;\r\n if (this._options.renderingGroupId !== undefined) {\r\n this._quadraticBezierCurve.renderingGroupId = this._options.renderingGroupId;\r\n }\r\n }\r\n\r\n private _teleportForward(controllerId: string) {\r\n const controllerData = this._controllers[controllerId];\r\n if (!controllerData || !controllerData.teleportationState.forward || !this.teleportationEnabled) {\r\n return;\r\n }\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n if (this.snapPointsOnly && !this._snappedToPoint) {\r\n return;\r\n }\r\n\r\n if (this.skipNextTeleportation) {\r\n this.skipNextTeleportation = false;\r\n return;\r\n }\r\n // do the movement forward here\r\n if (this._options.teleportationTargetMesh && this._options.teleportationTargetMesh.isVisible) {\r\n const height = this._options.xrInput.xrCamera.realWorldHeight;\r\n this._options.xrInput.xrCamera.onBeforeCameraTeleport.notifyObservers(this._options.xrInput.xrCamera.position);\r\n this._options.xrInput.xrCamera.position.copyFrom(this._options.teleportationTargetMesh.position);\r\n this._options.xrInput.xrCamera.position.y += height;\r\n Quaternion.FromEulerAngles(0, controllerData.teleportationState.currentRotation - (this._xrSessionManager.scene.useRightHandedSystem ? Math.PI : 0), 0).multiplyToRef(\r\n this._options.xrInput.xrCamera.rotationQuaternion,\r\n this._options.xrInput.xrCamera.rotationQuaternion\r\n );\r\n this._options.xrInput.xrCamera.onAfterCameraTeleport.notifyObservers(this._options.xrInput.xrCamera.position);\r\n }\r\n }\r\n}\r\n\r\nWebXRFeaturesManager.AddWebXRFeature(\r\n WebXRMotionControllerTeleportation.Name,\r\n (xrSessionManager, options) => {\r\n return () => new WebXRMotionControllerTeleportation(xrSessionManager, options);\r\n },\r\n WebXRMotionControllerTeleportation.Version,\r\n true\r\n);\r\n"]}
|
|
1
|
+
{"version":3,"file":"WebXRControllerTeleportation.js","sourceRoot":"","sources":["../../../../sourceES6/core/XR/features/WebXRControllerTeleportation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IWebXRFeature, WebXRFeaturesManager, WebXRFeatureName } from \"../webXRFeaturesManager\";\r\nimport { Observable, Observer } from \"../../Misc/observable\";\r\nimport { WebXRSessionManager } from \"../webXRSessionManager\";\r\nimport { Nullable } from \"../../types\";\r\nimport { WebXRInput } from \"../webXRInput\";\r\nimport { WebXRInputSource } from \"../webXRInputSource\";\r\nimport { WebXRControllerComponent, IWebXRMotionControllerAxesValue } from \"../motionController/webXRControllerComponent\";\r\nimport { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { Vector3, Quaternion } from \"../../Maths/math.vector\";\r\nimport { Ray } from \"../../Culling/ray\";\r\nimport { Material } from \"../../Materials/material\";\r\nimport { DynamicTexture } from \"../../Materials/Textures/dynamicTexture\";\r\nimport { CreateCylinder } from \"../../Meshes/Builders/cylinderBuilder\";\r\nimport { SineEase, EasingFunction } from \"../../Animations/easing\";\r\nimport { Animation } from \"../../Animations/animation\";\r\nimport { Axis } from \"../../Maths/math.axis\";\r\nimport { StandardMaterial } from \"../../Materials/standardMaterial\";\r\nimport { CreateGround } from \"../../Meshes/Builders/groundBuilder\";\r\nimport { CreateTorus } from \"../../Meshes/Builders/torusBuilder\";\r\nimport { PickingInfo } from \"../../Collisions/pickingInfo\";\r\nimport { Curve3 } from \"../../Maths/math.path\";\r\nimport { CreateLines } from \"../../Meshes/Builders/linesBuilder\";\r\nimport { WebXRAbstractFeature } from \"./WebXRAbstractFeature\";\r\nimport { Color3 } from \"../../Maths/math.color\";\r\nimport { Scene } from \"../../scene\";\r\nimport { UtilityLayerRenderer } from \"../../Rendering/utilityLayerRenderer\";\r\nimport { PointerEventTypes } from \"../../Events/pointerEvents\";\r\nimport { setAndStartTimer } from \"../../Misc/timer\";\r\nimport { LinesMesh } from \"../../Meshes/linesMesh\";\r\n\r\n/**\r\n * The options container for the teleportation module\r\n */\r\nexport interface IWebXRTeleportationOptions {\r\n /**\r\n * if provided, this scene will be used to render meshes.\r\n */\r\n customUtilityLayerScene?: Scene;\r\n /**\r\n * Values to configure the default target mesh\r\n */\r\n defaultTargetMeshOptions?: {\r\n /**\r\n * Fill color of the teleportation area\r\n */\r\n teleportationFillColor?: string;\r\n /**\r\n * Border color for the teleportation area\r\n */\r\n teleportationBorderColor?: string;\r\n /**\r\n * Disable the mesh's animation sequence\r\n */\r\n disableAnimation?: boolean;\r\n /**\r\n * Disable lighting on the material or the ring and arrow\r\n */\r\n disableLighting?: boolean;\r\n /**\r\n * Override the default material of the torus and arrow\r\n */\r\n torusArrowMaterial?: Material;\r\n };\r\n /**\r\n * A list of meshes to use as floor meshes.\r\n * Meshes can be added and removed after initializing the feature using the\r\n * addFloorMesh and removeFloorMesh functions\r\n * If empty, rotation will still work\r\n */\r\n floorMeshes?: AbstractMesh[];\r\n /**\r\n * use this rendering group id for the meshes (optional)\r\n */\r\n renderingGroupId?: number;\r\n /**\r\n * Should teleportation move only to snap points\r\n */\r\n snapPointsOnly?: boolean;\r\n /**\r\n * An array of points to which the teleportation will snap to.\r\n * If the teleportation ray is in the proximity of one of those points, it will be corrected to this point.\r\n */\r\n snapPositions?: Vector3[];\r\n /**\r\n * How close should the teleportation ray be in order to snap to position.\r\n * Default to 0.8 units (meters)\r\n */\r\n snapToPositionRadius?: number;\r\n /**\r\n * Provide your own teleportation mesh instead of babylon's wonderful doughnut.\r\n * If you want to support rotation, make sure your mesh has a direction indicator.\r\n *\r\n * When left untouched, the default mesh will be initialized.\r\n */\r\n teleportationTargetMesh?: AbstractMesh;\r\n /**\r\n * If main component is used (no thumbstick), how long should the \"long press\" take before teleport\r\n */\r\n timeToTeleport?: number;\r\n /**\r\n * Disable using the thumbstick and use the main component (usually trigger) on long press.\r\n * This will be automatically true if the controller doesn't have a thumbstick or touchpad.\r\n */\r\n useMainComponentOnly?: boolean;\r\n /**\r\n * Should meshes created here be added to a utility layer or the main scene\r\n */\r\n useUtilityLayer?: boolean;\r\n /**\r\n * Babylon XR Input class for controller\r\n */\r\n xrInput: WebXRInput;\r\n\r\n /**\r\n * Meshes that the teleportation ray cannot go through\r\n */\r\n pickBlockerMeshes?: AbstractMesh[];\r\n\r\n /**\r\n * Should teleport work only on a specific hand?\r\n */\r\n forceHandedness?: XRHandedness;\r\n\r\n /**\r\n * If provided, this function will be used to generate the ray mesh instead of the lines mesh being used per default\r\n */\r\n generateRayPathMesh?: (points: Vector3[], pickingInfo: PickingInfo) => AbstractMesh;\r\n}\r\n\r\n/**\r\n * This is a teleportation feature to be used with WebXR-enabled motion controllers.\r\n * When enabled and attached, the feature will allow a user to move around and rotate in the scene using\r\n * the input of the attached controllers.\r\n */\r\nexport class WebXRMotionControllerTeleportation extends WebXRAbstractFeature {\r\n private _controllers: {\r\n [controllerUniqueId: string]: {\r\n xrController: WebXRInputSource;\r\n teleportationComponent?: WebXRControllerComponent;\r\n teleportationState: {\r\n forward: boolean;\r\n backwards: boolean;\r\n currentRotation: number;\r\n baseRotation: number;\r\n rotating: boolean;\r\n };\r\n onAxisChangedObserver?: Nullable<Observer<IWebXRMotionControllerAxesValue>>;\r\n onButtonChangedObserver?: Nullable<Observer<WebXRControllerComponent>>;\r\n };\r\n } = {};\r\n private _currentTeleportationControllerId: string;\r\n private _floorMeshes: AbstractMesh[];\r\n private _quadraticBezierCurve: Nullable<AbstractMesh>;\r\n private _selectionFeature: Nullable<IWebXRFeature>;\r\n private _snapToPositions: Vector3[];\r\n private _snappedToPoint: boolean = false;\r\n private _teleportationRingMaterial?: StandardMaterial;\r\n private _tmpRay = new Ray(new Vector3(), new Vector3());\r\n private _tmpVector = new Vector3();\r\n private _tmpQuaternion = new Quaternion();\r\n\r\n /**\r\n * Skip the next teleportation. This can be controlled by the user to prevent the user from teleportation\r\n * to sections that are not yet \"unlocked\", but should still show the teleportation mesh.\r\n */\r\n public skipNextTeleportation = false;\r\n\r\n /**\r\n * The module's name\r\n */\r\n public static readonly Name = WebXRFeatureName.TELEPORTATION;\r\n /**\r\n * The (Babylon) version of this module.\r\n * This is an integer representing the implementation version.\r\n * This number does not correspond to the webxr specs version\r\n */\r\n public static readonly Version = 1;\r\n\r\n /**\r\n * Is movement backwards enabled\r\n */\r\n public backwardsMovementEnabled = true;\r\n /**\r\n * Distance to travel when moving backwards\r\n */\r\n public backwardsTeleportationDistance: number = 0.7;\r\n /**\r\n * The distance from the user to the inspection point in the direction of the controller\r\n * A higher number will allow the user to move further\r\n * defaults to 5 (meters, in xr units)\r\n */\r\n public parabolicCheckRadius: number = 5;\r\n /**\r\n * Should the module support parabolic ray on top of direct ray\r\n * If enabled, the user will be able to point \"at the sky\" and move according to predefined radius distance\r\n * Very helpful when moving between floors / different heights\r\n */\r\n public parabolicRayEnabled: boolean = true;\r\n\r\n /**\r\n * The second type of ray - straight line.\r\n * Should it be enabled or should the parabolic line be the only one.\r\n */\r\n public straightRayEnabled: boolean = true;\r\n /**\r\n * How much rotation should be applied when rotating right and left\r\n */\r\n public rotationAngle: number = Math.PI / 8;\r\n\r\n /**\r\n * This observable will notify when the target mesh position was updated.\r\n * The picking info it provides contains the point to which the target mesh will move ()\r\n */\r\n public onTargetMeshPositionUpdatedObservable: Observable<PickingInfo> = new Observable();\r\n\r\n /**\r\n * Is teleportation enabled. Can be used to allow rotation only.\r\n */\r\n public teleportationEnabled: boolean = true;\r\n\r\n private _rotationEnabled: boolean = true;\r\n\r\n /**\r\n * Is rotation enabled when moving forward?\r\n * Disabling this feature will prevent the user from deciding the direction when teleporting\r\n */\r\n public get rotationEnabled(): boolean {\r\n return this._rotationEnabled;\r\n }\r\n\r\n /**\r\n * Sets whether rotation is enabled or not\r\n * @param enabled is rotation enabled when teleportation is shown\r\n */\r\n public set rotationEnabled(enabled: boolean) {\r\n this._rotationEnabled = enabled;\r\n\r\n if (this._options.teleportationTargetMesh) {\r\n const children = this._options.teleportationTargetMesh.getChildMeshes(false, (node) => node.name === \"rotationCone\");\r\n if (children[0]) {\r\n children[0].setEnabled(enabled);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Exposes the currently set teleportation target mesh.\r\n */\r\n public get teleportationTargetMesh(): Nullable<AbstractMesh> {\r\n return this._options.teleportationTargetMesh || null;\r\n }\r\n\r\n /**\r\n * constructs a new teleportation system\r\n * @param _xrSessionManager an instance of WebXRSessionManager\r\n * @param _options configuration object for this feature\r\n */\r\n constructor(_xrSessionManager: WebXRSessionManager, private _options: IWebXRTeleportationOptions) {\r\n super(_xrSessionManager);\r\n // create default mesh if not provided\r\n if (!this._options.teleportationTargetMesh) {\r\n this._createDefaultTargetMesh();\r\n }\r\n\r\n this._floorMeshes = this._options.floorMeshes || [];\r\n this._snapToPositions = this._options.snapPositions || [];\r\n\r\n this._setTargetMeshVisibility(false);\r\n }\r\n\r\n /**\r\n * Get the snapPointsOnly flag\r\n */\r\n public get snapPointsOnly(): boolean {\r\n return !!this._options.snapPointsOnly;\r\n }\r\n\r\n /**\r\n * Sets the snapPointsOnly flag\r\n * @param snapToPoints should teleportation be exclusively to snap points\r\n */\r\n public set snapPointsOnly(snapToPoints: boolean) {\r\n this._options.snapPointsOnly = snapToPoints;\r\n }\r\n\r\n /**\r\n * Add a new mesh to the floor meshes array\r\n * @param mesh the mesh to use as floor mesh\r\n */\r\n public addFloorMesh(mesh: AbstractMesh) {\r\n this._floorMeshes.push(mesh);\r\n }\r\n\r\n /**\r\n * Add a mesh to the list of meshes blocking the teleportation ray\r\n * @param mesh The mesh to add to the teleportation-blocking meshes\r\n */\r\n public addBlockerMesh(mesh: AbstractMesh) {\r\n this._options.pickBlockerMeshes = this._options.pickBlockerMeshes || [];\r\n this._options.pickBlockerMeshes.push(mesh);\r\n }\r\n\r\n /**\r\n * Add a new snap-to point to fix teleportation to this position\r\n * @param newSnapPoint The new Snap-To point\r\n */\r\n public addSnapPoint(newSnapPoint: Vector3) {\r\n this._snapToPositions.push(newSnapPoint);\r\n }\r\n\r\n public attach(): boolean {\r\n if (!super.attach()) {\r\n return false;\r\n }\r\n\r\n // Safety reset\r\n this._currentTeleportationControllerId = \"\";\r\n\r\n this._options.xrInput.controllers.forEach(this._attachController);\r\n this._addNewAttachObserver(this._options.xrInput.onControllerAddedObservable, this._attachController);\r\n this._addNewAttachObserver(this._options.xrInput.onControllerRemovedObservable, (controller) => {\r\n // REMOVE the controller\r\n this._detachController(controller.uniqueId);\r\n });\r\n\r\n return true;\r\n }\r\n\r\n public detach(): boolean {\r\n if (!super.detach()) {\r\n return false;\r\n }\r\n\r\n Object.keys(this._controllers).forEach((controllerId) => {\r\n this._detachController(controllerId);\r\n });\r\n\r\n this._setTargetMeshVisibility(false);\r\n this._currentTeleportationControllerId = \"\";\r\n this._controllers = {};\r\n\r\n return true;\r\n }\r\n\r\n public dispose(): void {\r\n super.dispose();\r\n this._options.teleportationTargetMesh && this._options.teleportationTargetMesh.dispose(false, true);\r\n }\r\n\r\n /**\r\n * Remove a mesh from the floor meshes array\r\n * @param mesh the mesh to remove\r\n */\r\n public removeFloorMesh(mesh: AbstractMesh) {\r\n const index = this._floorMeshes.indexOf(mesh);\r\n if (index !== -1) {\r\n this._floorMeshes.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the blocker meshes array\r\n * @param mesh the mesh to remove\r\n */\r\n public removeBlockerMesh(mesh: AbstractMesh) {\r\n this._options.pickBlockerMeshes = this._options.pickBlockerMeshes || [];\r\n const index = this._options.pickBlockerMeshes.indexOf(mesh);\r\n if (index !== -1) {\r\n this._options.pickBlockerMeshes.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a mesh from the floor meshes array using its name\r\n * @param name the mesh name to remove\r\n */\r\n public removeFloorMeshByName(name: string) {\r\n const mesh = this._xrSessionManager.scene.getMeshByName(name);\r\n if (mesh) {\r\n this.removeFloorMesh(mesh);\r\n }\r\n }\r\n\r\n /**\r\n * This function will iterate through the array, searching for this point or equal to it. It will then remove it from the snap-to array\r\n * @param snapPointToRemove the point (or a clone of it) to be removed from the array\r\n * @returns was the point found and removed or not\r\n */\r\n public removeSnapPoint(snapPointToRemove: Vector3): boolean {\r\n // check if the object is in the array\r\n let index = this._snapToPositions.indexOf(snapPointToRemove);\r\n // if not found as an object, compare to the points\r\n if (index === -1) {\r\n for (let i = 0; i < this._snapToPositions.length; ++i) {\r\n // equals? index is i, break the loop\r\n if (this._snapToPositions[i].equals(snapPointToRemove)) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n // index is not -1? remove the object\r\n if (index !== -1) {\r\n this._snapToPositions.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * This function sets a selection feature that will be disabled when\r\n * the forward ray is shown and will be reattached when hidden.\r\n * This is used to remove the selection rays when moving.\r\n * @param selectionFeature the feature to disable when forward movement is enabled\r\n */\r\n public setSelectionFeature(selectionFeature: Nullable<IWebXRFeature>) {\r\n this._selectionFeature = selectionFeature;\r\n }\r\n\r\n protected _onXRFrame(_xrFrame: XRFrame) {\r\n const frame = this._xrSessionManager.currentFrame;\r\n const scene = this._xrSessionManager.scene;\r\n if (!this.attach || !frame) {\r\n return;\r\n }\r\n\r\n // render target if needed\r\n const targetMesh = this._options.teleportationTargetMesh;\r\n if (this._currentTeleportationControllerId) {\r\n if (!targetMesh) {\r\n return;\r\n }\r\n targetMesh.rotationQuaternion = targetMesh.rotationQuaternion || new Quaternion();\r\n const controllerData = this._controllers[this._currentTeleportationControllerId];\r\n if (controllerData && controllerData.teleportationState.forward) {\r\n // set the rotation\r\n Quaternion.RotationYawPitchRollToRef(\r\n controllerData.teleportationState.currentRotation + controllerData.teleportationState.baseRotation,\r\n 0,\r\n 0,\r\n targetMesh.rotationQuaternion\r\n );\r\n // set the ray and position\r\n\r\n let hitPossible = false;\r\n controllerData.xrController.getWorldPointerRayToRef(this._tmpRay);\r\n if (this.straightRayEnabled) {\r\n // first check if direct ray possible\r\n // pick grounds that are LOWER only. upper will use parabolic path\r\n let pick = scene.pickWithRay(this._tmpRay, (o) => {\r\n // check for mesh-blockers\r\n if (this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(o) !== -1) {\r\n return true;\r\n }\r\n const index = this._floorMeshes.indexOf(o);\r\n if (index === -1) {\r\n return false;\r\n }\r\n return this._floorMeshes[index].absolutePosition.y < this._options.xrInput.xrCamera.globalPosition.y;\r\n });\r\n if (pick && pick.pickedMesh && this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(pick.pickedMesh) !== -1) {\r\n return;\r\n } else if (pick && pick.pickedPoint) {\r\n hitPossible = true;\r\n this._setTargetMeshPosition(pick);\r\n this._setTargetMeshVisibility(true);\r\n this._showParabolicPath(pick);\r\n }\r\n }\r\n // straight ray is still the main ray, but disabling the straight line will force parabolic line.\r\n if (this.parabolicRayEnabled && !hitPossible) {\r\n // radius compensation according to pointer rotation around X\r\n const xRotation = controllerData.xrController.pointer.rotationQuaternion!.toEulerAngles().x;\r\n const compensation = 1 + (Math.PI / 2 - Math.abs(xRotation));\r\n // check parabolic ray\r\n const radius = this.parabolicCheckRadius * compensation;\r\n this._tmpRay.origin.addToRef(this._tmpRay.direction.scale(radius * 2), this._tmpVector);\r\n this._tmpVector.y = this._tmpRay.origin.y;\r\n this._tmpRay.origin.addInPlace(this._tmpRay.direction.scale(radius));\r\n this._tmpVector.subtractToRef(this._tmpRay.origin, this._tmpRay.direction);\r\n this._tmpRay.direction.normalize();\r\n\r\n let pick = scene.pickWithRay(this._tmpRay, (o) => {\r\n // check for mesh-blockers\r\n if (this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(o) !== -1) {\r\n return true;\r\n }\r\n return this._floorMeshes.indexOf(o) !== -1;\r\n });\r\n if (pick && pick.pickedMesh && this._options.pickBlockerMeshes && this._options.pickBlockerMeshes.indexOf(pick.pickedMesh) !== -1) {\r\n return;\r\n } else if (pick && pick.pickedPoint) {\r\n hitPossible = true;\r\n this._setTargetMeshPosition(pick);\r\n this._setTargetMeshVisibility(true);\r\n this._showParabolicPath(pick);\r\n }\r\n }\r\n\r\n // if needed, set visible:\r\n this._setTargetMeshVisibility(hitPossible);\r\n } else {\r\n this._setTargetMeshVisibility(false);\r\n }\r\n } else {\r\n this._setTargetMeshVisibility(false);\r\n }\r\n }\r\n\r\n private _attachController = (xrController: WebXRInputSource) => {\r\n if (this._controllers[xrController.uniqueId] || (this._options.forceHandedness && xrController.inputSource.handedness !== this._options.forceHandedness)) {\r\n // already attached\r\n return;\r\n }\r\n this._controllers[xrController.uniqueId] = {\r\n xrController,\r\n teleportationState: {\r\n forward: false,\r\n backwards: false,\r\n rotating: false,\r\n currentRotation: 0,\r\n baseRotation: 0,\r\n },\r\n };\r\n const controllerData = this._controllers[xrController.uniqueId];\r\n // motion controller only available to gamepad-enabled input sources.\r\n if (controllerData.xrController.inputSource.targetRayMode === \"tracked-pointer\" && controllerData.xrController.inputSource.gamepad) {\r\n // motion controller support\r\n const initMotionController = () => {\r\n if (xrController.motionController) {\r\n const movementController =\r\n xrController.motionController.getComponentOfType(WebXRControllerComponent.THUMBSTICK_TYPE) ||\r\n xrController.motionController.getComponentOfType(WebXRControllerComponent.TOUCHPAD_TYPE);\r\n if (!movementController || this._options.useMainComponentOnly) {\r\n // use trigger to move on long press\r\n const mainComponent = xrController.motionController.getMainComponent();\r\n if (!mainComponent) {\r\n return;\r\n }\r\n controllerData.teleportationComponent = mainComponent;\r\n controllerData.onButtonChangedObserver = mainComponent.onButtonStateChangedObservable.add(() => {\r\n if (!this.teleportationEnabled) {\r\n return;\r\n }\r\n // did \"pressed\" changed?\r\n if (mainComponent.changes.pressed) {\r\n if (mainComponent.changes.pressed.current) {\r\n // simulate \"forward\" thumbstick push\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n controllerData.teleportationState.currentRotation = 0;\r\n const timeToSelect = this._options.timeToTeleport || 3000;\r\n setAndStartTimer({\r\n timeout: timeToSelect,\r\n contextObservable: this._xrSessionManager.onXRFrameObservable,\r\n breakCondition: () => !mainComponent.pressed,\r\n onEnded: () => {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId && controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n },\r\n });\r\n } else {\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n }\r\n }\r\n });\r\n } else {\r\n controllerData.teleportationComponent = movementController;\r\n // use thumbstick (or touchpad if thumbstick not available)\r\n controllerData.onAxisChangedObserver = movementController.onAxisValueChangedObservable.add((axesData) => {\r\n if (axesData.y <= 0.7 && controllerData.teleportationState.backwards) {\r\n controllerData.teleportationState.backwards = false;\r\n }\r\n if (axesData.y > 0.7 && !controllerData.teleportationState.forward && this.backwardsMovementEnabled && !this.snapPointsOnly) {\r\n // teleport backwards\r\n\r\n // General gist: Go Back N units, cast a ray towards the floor. If collided, move.\r\n if (!controllerData.teleportationState.backwards) {\r\n controllerData.teleportationState.backwards = true;\r\n // teleport backwards ONCE\r\n this._tmpQuaternion.copyFrom(this._options.xrInput.xrCamera.rotationQuaternion!);\r\n this._tmpQuaternion.toEulerAnglesToRef(this._tmpVector);\r\n // get only the y rotation\r\n this._tmpVector.x = 0;\r\n this._tmpVector.z = 0;\r\n // get the quaternion\r\n Quaternion.FromEulerVectorToRef(this._tmpVector, this._tmpQuaternion);\r\n this._tmpVector.set(0, 0, this.backwardsTeleportationDistance * (this._xrSessionManager.scene.useRightHandedSystem ? 1.0 : -1.0));\r\n this._tmpVector.rotateByQuaternionToRef(this._tmpQuaternion, this._tmpVector);\r\n this._tmpVector.addInPlace(this._options.xrInput.xrCamera.position);\r\n this._tmpRay.origin.copyFrom(this._tmpVector);\r\n // This will prevent the user from \"falling\" to a lower platform!\r\n // TODO - should this be a flag? 'allow falling to lower platforms'?\r\n this._tmpRay.length = this._options.xrInput.xrCamera.realWorldHeight + 0.1;\r\n // Right handed system had here \"1\" instead of -1. This is unneeded.\r\n this._tmpRay.direction.set(0, -1, 0);\r\n let pick = this._xrSessionManager.scene.pickWithRay(this._tmpRay, (o) => {\r\n return this._floorMeshes.indexOf(o) !== -1;\r\n });\r\n\r\n // pick must exist, but stay safe\r\n if (pick && pick.pickedPoint) {\r\n // Teleport the users feet to where they targeted. Ignore the Y axis.\r\n // If the \"falling to lower platforms\" feature is implemented the Y axis should be set here as well\r\n this._options.xrInput.xrCamera.position.x = pick.pickedPoint.x;\r\n this._options.xrInput.xrCamera.position.z = pick.pickedPoint.z;\r\n }\r\n }\r\n }\r\n if (axesData.y < -0.7 && !this._currentTeleportationControllerId && !controllerData.teleportationState.rotating && this.teleportationEnabled) {\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n }\r\n if (axesData.x) {\r\n if (!controllerData.teleportationState.forward) {\r\n if (!controllerData.teleportationState.rotating && Math.abs(axesData.x) > 0.7) {\r\n // rotate in the right direction positive is right\r\n controllerData.teleportationState.rotating = true;\r\n const rotation = this.rotationAngle * (axesData.x > 0 ? 1 : -1) * (this._xrSessionManager.scene.useRightHandedSystem ? -1 : 1);\r\n Quaternion.FromEulerAngles(0, rotation, 0).multiplyToRef(\r\n this._options.xrInput.xrCamera.rotationQuaternion,\r\n this._options.xrInput.xrCamera.rotationQuaternion\r\n );\r\n }\r\n } else {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId) {\r\n // set the rotation of the forward movement\r\n if (this.rotationEnabled) {\r\n setTimeout(() => {\r\n controllerData.teleportationState.currentRotation = Math.atan2(\r\n axesData.x,\r\n axesData.y * (this._xrSessionManager.scene.useRightHandedSystem ? 1 : -1)\r\n );\r\n });\r\n } else {\r\n controllerData.teleportationState.currentRotation = 0;\r\n }\r\n }\r\n }\r\n } else {\r\n controllerData.teleportationState.rotating = false;\r\n }\r\n\r\n if (axesData.x === 0 && axesData.y === 0) {\r\n if (controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n if (xrController.motionController) {\r\n initMotionController();\r\n } else {\r\n xrController.onMotionControllerInitObservable.addOnce(() => {\r\n initMotionController();\r\n });\r\n }\r\n } else {\r\n this._xrSessionManager.scene.onPointerObservable.add((pointerInfo) => {\r\n if (pointerInfo.type === PointerEventTypes.POINTERDOWN) {\r\n controllerData.teleportationState.forward = true;\r\n this._currentTeleportationControllerId = controllerData.xrController.uniqueId;\r\n controllerData.teleportationState.baseRotation = this._options.xrInput.xrCamera.rotationQuaternion.toEulerAngles().y;\r\n controllerData.teleportationState.currentRotation = 0;\r\n const timeToSelect = this._options.timeToTeleport || 3000;\r\n setAndStartTimer({\r\n timeout: timeToSelect,\r\n contextObservable: this._xrSessionManager.onXRFrameObservable,\r\n onEnded: () => {\r\n if (this._currentTeleportationControllerId === controllerData.xrController.uniqueId && controllerData.teleportationState.forward) {\r\n this._teleportForward(xrController.uniqueId);\r\n }\r\n },\r\n });\r\n } else if (pointerInfo.type === PointerEventTypes.POINTERUP) {\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n }\r\n });\r\n }\r\n };\r\n\r\n private _createDefaultTargetMesh() {\r\n // set defaults\r\n this._options.defaultTargetMeshOptions = this._options.defaultTargetMeshOptions || {};\r\n const sceneToRenderTo = this._options.useUtilityLayer\r\n ? this._options.customUtilityLayerScene || UtilityLayerRenderer.DefaultUtilityLayer.utilityLayerScene\r\n : this._xrSessionManager.scene;\r\n const teleportationTarget = CreateGround(\"teleportationTarget\", { width: 2, height: 2, subdivisions: 2 }, sceneToRenderTo);\r\n teleportationTarget.isPickable = false;\r\n const length = 512;\r\n const dynamicTexture = new DynamicTexture(\"teleportationPlaneDynamicTexture\", length, sceneToRenderTo, true);\r\n dynamicTexture.hasAlpha = true;\r\n const context = dynamicTexture.getContext();\r\n const centerX = length / 2;\r\n const centerY = length / 2;\r\n const radius = 200;\r\n context.beginPath();\r\n context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);\r\n context.fillStyle = this._options.defaultTargetMeshOptions.teleportationFillColor || \"#444444\";\r\n context.fill();\r\n context.lineWidth = 10;\r\n context.strokeStyle = this._options.defaultTargetMeshOptions.teleportationBorderColor || \"#FFFFFF\";\r\n context.stroke();\r\n context.closePath();\r\n dynamicTexture.update();\r\n const teleportationCircleMaterial = new StandardMaterial(\"teleportationPlaneMaterial\", sceneToRenderTo);\r\n teleportationCircleMaterial.diffuseTexture = dynamicTexture;\r\n teleportationTarget.material = teleportationCircleMaterial;\r\n const torus = CreateTorus(\r\n \"torusTeleportation\",\r\n {\r\n diameter: 0.75,\r\n thickness: 0.1,\r\n tessellation: 20,\r\n },\r\n sceneToRenderTo\r\n );\r\n torus.isPickable = false;\r\n torus.parent = teleportationTarget;\r\n if (!this._options.defaultTargetMeshOptions.disableAnimation) {\r\n const animationInnerCircle = new Animation(\"animationInnerCircle\", \"position.y\", 30, Animation.ANIMATIONTYPE_FLOAT, Animation.ANIMATIONLOOPMODE_CYCLE);\r\n const keys = [];\r\n keys.push({\r\n frame: 0,\r\n value: 0,\r\n });\r\n keys.push({\r\n frame: 30,\r\n value: 0.4,\r\n });\r\n keys.push({\r\n frame: 60,\r\n value: 0,\r\n });\r\n animationInnerCircle.setKeys(keys);\r\n const easingFunction = new SineEase();\r\n easingFunction.setEasingMode(EasingFunction.EASINGMODE_EASEINOUT);\r\n animationInnerCircle.setEasingFunction(easingFunction);\r\n torus.animations = [];\r\n torus.animations.push(animationInnerCircle);\r\n sceneToRenderTo.beginAnimation(torus, 0, 60, true);\r\n }\r\n\r\n const cone = CreateCylinder(\"rotationCone\", { diameterTop: 0, tessellation: 4 }, sceneToRenderTo);\r\n cone.isPickable = false;\r\n cone.scaling.set(0.5, 0.12, 0.2);\r\n\r\n cone.rotate(Axis.X, Math.PI / 2);\r\n\r\n cone.position.z = 0.6;\r\n cone.parent = torus;\r\n\r\n if (this._options.defaultTargetMeshOptions.torusArrowMaterial) {\r\n torus.material = this._options.defaultTargetMeshOptions.torusArrowMaterial;\r\n cone.material = this._options.defaultTargetMeshOptions.torusArrowMaterial;\r\n } else {\r\n const torusConeMaterial = new StandardMaterial(\"torusConsMat\", sceneToRenderTo);\r\n torusConeMaterial.disableLighting = !!this._options.defaultTargetMeshOptions.disableLighting;\r\n if (torusConeMaterial.disableLighting) {\r\n torusConeMaterial.emissiveColor = new Color3(0.3, 0.3, 1.0);\r\n } else {\r\n torusConeMaterial.diffuseColor = new Color3(0.3, 0.3, 1.0);\r\n }\r\n torusConeMaterial.alpha = 0.9;\r\n torus.material = torusConeMaterial;\r\n cone.material = torusConeMaterial;\r\n this._teleportationRingMaterial = torusConeMaterial;\r\n }\r\n\r\n if (this._options.renderingGroupId !== undefined) {\r\n teleportationTarget.renderingGroupId = this._options.renderingGroupId;\r\n torus.renderingGroupId = this._options.renderingGroupId;\r\n cone.renderingGroupId = this._options.renderingGroupId;\r\n }\r\n\r\n this._options.teleportationTargetMesh = teleportationTarget;\r\n }\r\n\r\n private _detachController(xrControllerUniqueId: string) {\r\n const controllerData = this._controllers[xrControllerUniqueId];\r\n if (!controllerData) {\r\n return;\r\n }\r\n if (controllerData.teleportationComponent) {\r\n if (controllerData.onAxisChangedObserver) {\r\n controllerData.teleportationComponent.onAxisValueChangedObservable.remove(controllerData.onAxisChangedObserver);\r\n }\r\n if (controllerData.onButtonChangedObserver) {\r\n controllerData.teleportationComponent.onButtonStateChangedObservable.remove(controllerData.onButtonChangedObserver);\r\n }\r\n }\r\n // remove from the map\r\n delete this._controllers[xrControllerUniqueId];\r\n }\r\n\r\n private _findClosestSnapPointWithRadius(realPosition: Vector3, radius: number = this._options.snapToPositionRadius || 0.8) {\r\n let closestPoint: Nullable<Vector3> = null;\r\n let closestDistance = Number.MAX_VALUE;\r\n if (this._snapToPositions.length) {\r\n const radiusSquared = radius * radius;\r\n this._snapToPositions.forEach((position) => {\r\n const dist = Vector3.DistanceSquared(position, realPosition);\r\n if (dist <= radiusSquared && dist < closestDistance) {\r\n closestDistance = dist;\r\n closestPoint = position;\r\n }\r\n });\r\n }\r\n return closestPoint;\r\n }\r\n\r\n private _setTargetMeshPosition(pickInfo: PickingInfo) {\r\n const newPosition = pickInfo.pickedPoint;\r\n if (!this._options.teleportationTargetMesh || !newPosition) {\r\n return;\r\n }\r\n const snapPosition = this._findClosestSnapPointWithRadius(newPosition);\r\n this._snappedToPoint = !!snapPosition;\r\n if (this.snapPointsOnly && !this._snappedToPoint && this._teleportationRingMaterial) {\r\n this._teleportationRingMaterial.diffuseColor.set(1.0, 0.3, 0.3);\r\n } else if (this.snapPointsOnly && this._snappedToPoint && this._teleportationRingMaterial) {\r\n this._teleportationRingMaterial.diffuseColor.set(0.3, 0.3, 1.0);\r\n }\r\n this._options.teleportationTargetMesh.position.copyFrom(snapPosition || newPosition);\r\n this._options.teleportationTargetMesh.position.y += 0.01;\r\n this.onTargetMeshPositionUpdatedObservable.notifyObservers(pickInfo);\r\n }\r\n\r\n private _setTargetMeshVisibility(visible: boolean) {\r\n if (!this._options.teleportationTargetMesh) {\r\n return;\r\n }\r\n if (this._options.teleportationTargetMesh.isVisible === visible) {\r\n return;\r\n }\r\n this._options.teleportationTargetMesh.isVisible = visible;\r\n this._options.teleportationTargetMesh.getChildren(undefined, false).forEach((m) => {\r\n (<any>m).isVisible = visible;\r\n });\r\n\r\n if (!visible) {\r\n if (this._quadraticBezierCurve) {\r\n this._quadraticBezierCurve.dispose();\r\n this._quadraticBezierCurve = null;\r\n }\r\n if (this._selectionFeature) {\r\n this._selectionFeature.attach();\r\n }\r\n } else {\r\n if (this._selectionFeature) {\r\n this._selectionFeature.detach();\r\n }\r\n }\r\n }\r\n\r\n private _showParabolicPath(pickInfo: PickingInfo) {\r\n if (!pickInfo.pickedPoint) {\r\n return;\r\n }\r\n\r\n const sceneToRenderTo = this._options.useUtilityLayer\r\n ? this._options.customUtilityLayerScene || UtilityLayerRenderer.DefaultUtilityLayer.utilityLayerScene\r\n : this._xrSessionManager.scene;\r\n\r\n const controllerData = this._controllers[this._currentTeleportationControllerId];\r\n\r\n const quadraticBezierVectors = Curve3.CreateQuadraticBezier(controllerData.xrController.pointer.absolutePosition, pickInfo.ray!.origin, pickInfo.pickedPoint, 25);\r\n if (!this._options.generateRayPathMesh) {\r\n this._quadraticBezierCurve = CreateLines(\r\n \"teleportation path line\",\r\n { points: quadraticBezierVectors.getPoints(), instance: this._quadraticBezierCurve as LinesMesh, updatable: true },\r\n sceneToRenderTo\r\n );\r\n } else {\r\n this._quadraticBezierCurve = this._options.generateRayPathMesh(quadraticBezierVectors.getPoints(), pickInfo);\r\n }\r\n this._quadraticBezierCurve.isPickable = false;\r\n if (this._options.renderingGroupId !== undefined) {\r\n this._quadraticBezierCurve.renderingGroupId = this._options.renderingGroupId;\r\n }\r\n }\r\n\r\n private _teleportForward(controllerId: string) {\r\n const controllerData = this._controllers[controllerId];\r\n if (!controllerData || !controllerData.teleportationState.forward || !this.teleportationEnabled) {\r\n return;\r\n }\r\n controllerData.teleportationState.forward = false;\r\n this._currentTeleportationControllerId = \"\";\r\n if (this.snapPointsOnly && !this._snappedToPoint) {\r\n return;\r\n }\r\n\r\n if (this.skipNextTeleportation) {\r\n this.skipNextTeleportation = false;\r\n return;\r\n }\r\n // do the movement forward here\r\n if (this._options.teleportationTargetMesh && this._options.teleportationTargetMesh.isVisible) {\r\n const height = this._options.xrInput.xrCamera.realWorldHeight;\r\n this._options.xrInput.xrCamera.onBeforeCameraTeleport.notifyObservers(this._options.xrInput.xrCamera.position);\r\n this._options.xrInput.xrCamera.position.copyFrom(this._options.teleportationTargetMesh.position);\r\n this._options.xrInput.xrCamera.position.y += height;\r\n Quaternion.FromEulerAngles(0, controllerData.teleportationState.currentRotation - (this._xrSessionManager.scene.useRightHandedSystem ? Math.PI : 0), 0).multiplyToRef(\r\n this._options.xrInput.xrCamera.rotationQuaternion,\r\n this._options.xrInput.xrCamera.rotationQuaternion\r\n );\r\n this._options.xrInput.xrCamera.onAfterCameraTeleport.notifyObservers(this._options.xrInput.xrCamera.position);\r\n }\r\n }\r\n}\r\n\r\nWebXRFeaturesManager.AddWebXRFeature(\r\n WebXRMotionControllerTeleportation.Name,\r\n (xrSessionManager, options) => {\r\n return () => new WebXRMotionControllerTeleportation(xrSessionManager, options);\r\n },\r\n WebXRMotionControllerTeleportation.Version,\r\n true\r\n);\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter, __extends, __generator } from "tslib";
|
|
2
|
-
import { Tools } from "../../Misc/tools";
|
|
3
|
-
import { WebXRFeatureName, WebXRFeaturesManager } from "../webXRFeaturesManager";
|
|
4
|
-
import { WebXRAbstractFeature } from "./WebXRAbstractFeature";
|
|
2
|
+
import { Tools } from "../../Misc/tools.js";
|
|
3
|
+
import { WebXRFeatureName, WebXRFeaturesManager } from "../webXRFeaturesManager.js";
|
|
4
|
+
import { WebXRAbstractFeature } from "./WebXRAbstractFeature.js";
|
|
5
5
|
/**
|
|
6
6
|
* DOM Overlay Feature
|
|
7
7
|
*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { WebXRFeaturesManager, WebXRFeatureName } from '../webXRFeaturesManager';
|
|
3
|
-
import { WebXRAbstractFeature } from './WebXRAbstractFeature';
|
|
4
|
-
import { Observable } from "../../Misc/observable";
|
|
5
|
-
import { Vector3, TmpVectors } from "../../Maths/math.vector";
|
|
6
|
-
import { Ray } from "../../Culling/ray";
|
|
2
|
+
import { WebXRFeaturesManager, WebXRFeatureName } from '../webXRFeaturesManager.js';
|
|
3
|
+
import { WebXRAbstractFeature } from './WebXRAbstractFeature.js';
|
|
4
|
+
import { Observable } from "../../Misc/observable.js";
|
|
5
|
+
import { Vector3, TmpVectors } from "../../Maths/math.vector.js";
|
|
6
|
+
import { Ray } from "../../Culling/ray.js";
|
|
7
7
|
/**
|
|
8
8
|
* The WebXR Eye Tracking feature grabs eye data from the device and provides it in an easy-access format.
|
|
9
9
|
* Currently only enabled for BabylonNative applications.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { WebXRFeaturesManager, WebXRFeatureName } from "../webXRFeaturesManager";
|
|
3
|
-
import { Observable } from "../../Misc/observable";
|
|
4
|
-
import { Vector3 } from "../../Maths/math.vector";
|
|
5
|
-
import { WebXRAbstractFeature } from "./WebXRAbstractFeature";
|
|
2
|
+
import { WebXRFeaturesManager, WebXRFeatureName } from "../webXRFeaturesManager.js";
|
|
3
|
+
import { Observable } from "../../Misc/observable.js";
|
|
4
|
+
import { Vector3 } from "../../Maths/math.vector.js";
|
|
5
|
+
import { WebXRAbstractFeature } from "./WebXRAbstractFeature.js";
|
|
6
6
|
/**
|
|
7
7
|
* The feature point system is used to detect feature points from real world geometry.
|
|
8
8
|
* This feature is currently experimental and only supported on BabylonNative, and should not be used in the browser.
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { __assign, __awaiter, __extends, __generator } from "tslib";
|
|
3
|
-
import { WebXRAbstractFeature } from "./WebXRAbstractFeature";
|
|
4
|
-
import { WebXRFeatureName } from "../webXRFeaturesManager";
|
|
5
|
-
import { Matrix, Quaternion } from "../../Maths/math.vector";
|
|
6
|
-
import { PhysicsImpostor } from "../../Physics/physicsImpostor";
|
|
7
|
-
import { WebXRFeaturesManager } from "../webXRFeaturesManager";
|
|
8
|
-
import { Observable } from "../../Misc/observable";
|
|
9
|
-
import { SceneLoader } from "../../Loading/sceneLoader";
|
|
10
|
-
import { Color3 } from "../../Maths/math.color";
|
|
11
|
-
import { NodeMaterial } from "../../Materials/Node/nodeMaterial";
|
|
12
|
-
import { Material } from "../../Materials/material";
|
|
13
|
-
import { Engine } from "../../Engines/engine";
|
|
14
|
-
import {
|
|
15
|
-
import { TransformNode } from "../../Meshes/transformNode";
|
|
16
|
-
import { Axis } from "../../Maths/math.axis";
|
|
3
|
+
import { WebXRAbstractFeature } from "./WebXRAbstractFeature.js";
|
|
4
|
+
import { WebXRFeatureName } from "../webXRFeaturesManager.js";
|
|
5
|
+
import { Matrix, Quaternion } from "../../Maths/math.vector.js";
|
|
6
|
+
import { PhysicsImpostor } from "../../Physics/physicsImpostor.js";
|
|
7
|
+
import { WebXRFeaturesManager } from "../webXRFeaturesManager.js";
|
|
8
|
+
import { Observable } from "../../Misc/observable.js";
|
|
9
|
+
import { SceneLoader } from "../../Loading/sceneLoader.js";
|
|
10
|
+
import { Color3 } from "../../Maths/math.color.js";
|
|
11
|
+
import { NodeMaterial } from "../../Materials/Node/nodeMaterial.js";
|
|
12
|
+
import { Material } from "../../Materials/material.js";
|
|
13
|
+
import { Engine } from "../../Engines/engine.js";
|
|
14
|
+
import { CreateIcoSphere } from "../../Meshes/Builders/icoSphereBuilder.js";
|
|
15
|
+
import { TransformNode } from "../../Meshes/transformNode.js";
|
|
16
|
+
import { Axis } from "../../Maths/math.axis.js";
|
|
17
17
|
var handJointReferenceArray = [
|
|
18
18
|
"wrist" /* WRIST */,
|
|
19
19
|
"thumb-metacarpal" /* THUMB_METACARPAL */,
|
|
@@ -363,7 +363,7 @@ var WebXRHandTracking = /** @class */ (function (_super) {
|
|
|
363
363
|
["left", "right"].map(function (handedness) {
|
|
364
364
|
var _a, _b, _c, _d, _e;
|
|
365
365
|
var trackedMeshes = [];
|
|
366
|
-
var originalMesh = ((_a = featureOptions.jointMeshes) === null || _a === void 0 ? void 0 : _a.sourceMesh) ||
|
|
366
|
+
var originalMesh = ((_a = featureOptions.jointMeshes) === null || _a === void 0 ? void 0 : _a.sourceMesh) || CreateIcoSphere("jointParent", WebXRHandTracking._ICOSPHERE_PARAMS);
|
|
367
367
|
originalMesh.isVisible = !!((_b = featureOptions.jointMeshes) === null || _b === void 0 ? void 0 : _b.keepOriginalVisible);
|
|
368
368
|
for (var i = 0; i < handJointReferenceArray.length; ++i) {
|
|
369
369
|
var newInstance = originalMesh.createInstance(handedness + "-handJoint-" + i);
|