@babylonjs/core 5.45.2 → 5.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Actions/actionManager.js +6 -1
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.js +23 -23
- package/Actions/condition.js.map +1 -1
- package/Animations/animatable.js +48 -48
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.js +53 -53
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +53 -53
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/runtimeAnimation.js +36 -36
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioEngine.js +14 -14
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.js +14 -14
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.js +47 -47
- package/Audio/sound.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/fadeInOutBehavior.js +11 -11
- package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +34 -34
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.js +15 -15
- package/Bones/bone.js.map +1 -1
- package/Bones/boneIKController.js +9 -9
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.js +50 -50
- package/Bones/boneLookController.js.map +1 -1
- package/Bones/skeleton.js +35 -35
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.js +14 -14
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/dataBuffer.js +6 -6
- package/Buffers/dataBuffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +42 -42
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +18 -18
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +178 -178
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/arcRotateCamera.js +176 -176
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +90 -90
- package/Cameras/camera.js.map +1 -1
- package/Cameras/flyCamera.js +82 -82
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/freeCamera.js +54 -54
- package/Cameras/freeCamera.js.map +1 -1
- package/Compute/computeShader.js +12 -12
- package/Compute/computeShader.js.map +1 -1
- package/Culling/ray.d.ts +1 -1
- package/Debug/axesViewer.js +12 -12
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/debugLayer.js +21 -21
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +20 -20
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/physicsViewer.js +3 -3
- package/Debug/physicsViewer.js.map +1 -1
- package/Debug/rayHelper.js +10 -10
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +81 -81
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSource.d.ts +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +31 -31
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
- package/DeviceInput/eventFactory.d.ts +1 -1
- package/DeviceInput/eventFactory.js +4 -4
- package/DeviceInput/eventFactory.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +2 -2
- package/DeviceInput/webDeviceInputSystem.js +2 -2
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +3 -3
- package/Engines/Extensions/engine.multiRender.js +1 -1
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.js +1 -1
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Native/nativeDataStream.d.ts +1 -1
- package/Engines/Native/nativeHardwareTexture.js +3 -3
- package/Engines/Native/nativeHardwareTexture.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +5 -5
- package/Engines/Native/nativePipelineContext.js +7 -7
- package/Engines/Native/nativePipelineContext.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.js +6 -6
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +4 -4
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderProcessingOptions.d.ts +1 -1
- package/Engines/WebGL/webGLHardwareTexture.js +3 -3
- package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +3 -3
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +6 -6
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +5 -5
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +11 -11
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +7 -7
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js +4 -4
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +7 -7
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +9 -9
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js +5 -5
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +10 -10
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.js +6 -6
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js +3 -3
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +3 -3
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/engine.js +134 -134
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +6 -6
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +25 -25
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +25 -25
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.js +243 -243
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +132 -132
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/keyboardEvents.js +10 -10
- package/Events/keyboardEvents.js.map +1 -1
- package/Events/pointerEvents.js +10 -10
- package/Events/pointerEvents.js.map +1 -1
- package/Gamepads/Controllers/poseEnabledController.js +9 -9
- package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
- package/Gamepads/Controllers/webVRController.js +13 -13
- package/Gamepads/Controllers/webVRController.js.map +1 -1
- package/Gamepads/gamepad.js +20 -20
- package/Gamepads/gamepad.js.map +1 -1
- package/Gizmos/axisDragGizmo.js +45 -45
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +12 -12
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +74 -74
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +34 -34
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +40 -40
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +23 -23
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +12 -12
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.js +40 -40
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +47 -47
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.js +41 -41
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Helpers/environmentHelper.js +18 -18
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/textureDome.js +96 -96
- package/Helpers/textureDome.js.map +1 -1
- package/IAccessibilityTag.d.ts +2 -2
- package/Inputs/scene.inputManager.d.ts +4 -3
- package/Inputs/scene.inputManager.js +12 -11
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +21 -21
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +90 -90
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.js +48 -48
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.js +32 -32
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +26 -26
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layer.js +40 -40
- package/Layers/layer.js.map +1 -1
- package/LensFlares/lensFlare.js +15 -15
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.js +4 -4
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +18 -18
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +115 -115
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/directionalLight.js +31 -31
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/light.js +72 -72
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.js +18 -18
- package/Lights/pointLight.js.map +1 -1
- package/Lights/spotLight.js +30 -30
- package/Lights/spotLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.js +124 -124
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +8 -8
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +14 -14
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +9 -9
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +26 -26
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +34 -34
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +14 -14
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +16 -16
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +7 -7
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +13 -13
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js +30 -30
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +1 -1
- package/Materials/Node/nodeMaterial.js +60 -60
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +35 -35
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +50 -50
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.js +5 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +4 -4
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +53 -55
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js +17 -17
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +5 -5
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +209 -209
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +5 -5
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +6 -6
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +51 -51
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/baseTexture.js +99 -99
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +61 -61
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/externalTexture.js +16 -16
- package/Materials/Textures/externalTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +44 -44
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.js +31 -31
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +73 -73
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +47 -47
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.js +6 -6
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +142 -142
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +1 -1
- package/Materials/Textures/texture.js +26 -26
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +1 -1
- package/Materials/Textures/textureSampler.js +20 -20
- package/Materials/Textures/textureSampler.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +6 -6
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.js +39 -39
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +41 -41
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.js +6 -6
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +18 -18
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.js +9 -9
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/fresnelParameters.d.ts +2 -2
- package/Materials/fresnelParameters.js +13 -13
- package/Materials/fresnelParameters.js.map +1 -1
- package/Materials/material.detailMapConfiguration.js +5 -5
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +223 -223
- package/Materials/material.js.map +1 -1
- package/Materials/materialPluginBase.js +5 -5
- package/Materials/materialPluginBase.js.map +1 -1
- package/Materials/materialPluginEvent.d.ts +14 -14
- package/Materials/materialPluginManager.d.ts +1 -1
- package/Materials/multiMaterial.js +16 -16
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +14 -14
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +100 -100
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.js +3 -3
- package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
- package/Maths/math.functions.js +2 -0
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.path.js +11 -11
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.vector.d.ts +27 -7
- package/Maths/math.vector.js +75 -48
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +2 -2
- package/Meshes/Compression/dracoCompression.js +23 -23
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +9 -9
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/abstractMesh.js +179 -179
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.js +32 -32
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/goldbergMesh.d.ts +1 -1
- package/Meshes/linesMesh.js +3 -3
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.js +166 -166
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/polygonMesh.js +5 -5
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.js +59 -59
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/transformNode.js +52 -52
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +12 -12
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/arrayTools.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +3 -3
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/coroutine.d.ts +5 -5
- package/Misc/deferred.js +9 -9
- package/Misc/deferred.js.map +1 -1
- package/Misc/depthReducer.js +7 -7
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +1 -1
- package/Misc/error.d.ts +1 -1
- package/Misc/fileTools.d.ts +5 -5
- package/Misc/filesInput.js +6 -6
- package/Misc/filesInput.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +9 -9
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/observable.js +12 -12
- package/Misc/observable.js.map +1 -1
- package/Misc/perfCounter.js +16 -16
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/sceneOptimizer.js +76 -76
- package/Misc/sceneOptimizer.js.map +1 -1
- package/Misc/stringDictionary.d.ts +1 -1
- package/Misc/trajectoryClassifier.js +67 -67
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Misc/videoRecorder.js +15 -15
- package/Misc/videoRecorder.js.map +1 -1
- package/Misc/virtualJoystick.js +12 -12
- package/Misc/virtualJoystick.js.map +1 -1
- package/Morph/morphTarget.js +28 -28
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.js +18 -18
- package/Morph/morphTargetManager.js.map +1 -1
- package/Offline/database.js +12 -12
- package/Offline/database.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js +25 -25
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +20 -20
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/baseParticleSystem.js +232 -232
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/cloudPoint.js +9 -9
- package/Particles/cloudPoint.js.map +1 -1
- package/Particles/gpuParticleSystem.js +123 -123
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js +102 -102
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +5 -0
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.js +18 -18
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.js +23 -23
- package/Particles/solidParticle.js.map +1 -1
- package/Physics/index.d.ts +1 -0
- package/Physics/index.js +1 -0
- package/Physics/index.js.map +1 -1
- package/Physics/v1/physicsEngine.js +14 -14
- package/Physics/v1/physicsEngine.js.map +1 -1
- package/Physics/v1/physicsImpostor.js +149 -149
- package/Physics/v1/physicsImpostor.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +6 -8
- package/Physics/v2/IPhysicsEnginePlugin.js +1 -0
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +10 -1
- package/Physics/v2/physicsBody.js +13 -1
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsConstraint.d.ts +139 -66
- package/Physics/v2/physicsConstraint.js +145 -78
- package/Physics/v2/physicsConstraint.js.map +1 -1
- package/Physics/v2/physicsEngine.js +14 -14
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +137 -129
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +68 -68
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +6 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +226 -225
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +10 -10
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/anaglyphPostProcess.js +7 -7
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +7 -7
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.js +28 -28
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js +7 -7
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +32 -32
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +7 -7
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js +7 -7
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +7 -7
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +7 -7
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +7 -7
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +36 -36
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +7 -7
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +7 -7
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +7 -7
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +7 -7
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +42 -42
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.js +41 -41
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +15 -15
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +2 -2
- package/PostProcesses/postProcess.js +123 -123
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/refractionPostProcess.js +21 -21
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +7 -7
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +19 -19
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +7 -7
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.js +14 -14
- package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.js +7 -7
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +11 -11
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +7 -7
- package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +36 -36
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/depthRenderer.js +8 -8
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +34 -34
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.js +8 -8
- package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +22 -19
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +12 -12
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +18 -18
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +71 -68
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.js +29 -29
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +173 -168
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +51 -51
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/renderingGroup.js +25 -25
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/renderingManager.js +21 -21
- package/Rendering/renderingManager.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +18 -18
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +76 -76
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js +5 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
- package/Shaders/fluidRenderingRender.fragment.js +7 -2
- package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
- package/Shaders/geometry.fragment.d.ts +2 -0
- package/Shaders/geometry.fragment.js +5 -1
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/geometry.vertex.d.ts +2 -0
- package/Shaders/geometry.vertex.js +8 -4
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Sprites/sprite.js +16 -16
- package/Sprites/sprite.js.map +1 -1
- package/Sprites/spriteManager.js +81 -81
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteMap.js +32 -32
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spriteRenderer.js +6 -6
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.js +22 -22
- package/Sprites/thinSprite.js.map +1 -1
- package/States/stencilStateComposer.js +10 -10
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.js +7 -7
- package/XR/features/WebXRAnchorSystem.js.map +1 -1
- package/XR/features/WebXRControllerMovement.d.ts +3 -3
- package/XR/features/WebXRControllerMovement.js +97 -97
- package/XR/features/WebXRControllerMovement.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +24 -24
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.js +26 -26
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.d.ts +1 -1
- package/XR/features/WebXRFeaturePointSystem.js +6 -6
- package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +1 -1
- package/XR/features/WebXRHandTracking.js +95 -95
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +21 -21
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +3 -3
- package/XR/motionController/webXRMotionControllerManager.d.ts +1 -1
- package/XR/native/nativeXRFrame.js +3 -3
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +1 -1
- package/XR/webXRLayerWrapper.d.ts +2 -2
- package/XR/webXRLayerWrapper.js +17 -17
- package/XR/webXRLayerWrapper.js.map +1 -1
- package/abstractScene.d.ts +2 -2
- package/node.d.ts +1 -1
- package/node.js +71 -71
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +777 -777
- package/scene.js.map +1 -1
- package/sceneComponent.d.ts +12 -12
- package/types.d.ts +11 -11
package/Actions/actionManager.js
CHANGED
|
@@ -183,7 +183,12 @@ export class ActionManager extends AbstractActionManager {
|
|
|
183
183
|
if (evt) {
|
|
184
184
|
if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {
|
|
185
185
|
const parameter = action.getTriggerParameter();
|
|
186
|
-
if (
|
|
186
|
+
if (typeof parameter === "function") {
|
|
187
|
+
if (!parameter(evt)) {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else if (parameter && parameter !== evt.sourceEvent.keyCode) {
|
|
187
192
|
if (!parameter.toLowerCase) {
|
|
188
193
|
continue;
|
|
189
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionManager.js","sourceRoot":"","sources":["../../../../lts/core/generated/Actions/actionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport { Condition, ValueCondition } from \"./condition\";\r\nimport type { IAction } from \"./action\";\r\nimport { Action } from \"./action\";\r\nimport { DoNothingAction } from \"./directActions\";\r\n\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IActionEvent } from \"../Actions/actionEvent\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { DeepCopier } from \"../Misc/deepCopier\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\nimport { AbstractActionManager } from \"./abstractActionManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Action Manager manages all events to be triggered on a given mesh or the global scene.\r\n * A single scene can have many Action Managers to handle predefined actions on specific meshes.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ActionManager extends AbstractActionManager {\r\n /**\r\n * Nothing\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;\r\n\r\n /**\r\n * On pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;\r\n\r\n /**\r\n * On left pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;\r\n\r\n /**\r\n * On right pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;\r\n\r\n /**\r\n * On center pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;\r\n\r\n /**\r\n * On pick down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;\r\n\r\n /**\r\n * On double pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;\r\n\r\n /**\r\n * On pick up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;\r\n /**\r\n * On pick out.\r\n * This trigger will only be raised if you also declared a OnPickDown\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;\r\n\r\n /**\r\n * On long press\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;\r\n\r\n /**\r\n * On pointer over\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;\r\n\r\n /**\r\n * On pointer out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;\r\n\r\n /**\r\n * On every frame\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;\r\n /**\r\n * On intersection enter\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;\r\n\r\n /**\r\n * On intersection exit\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;\r\n\r\n /**\r\n * On key down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;\r\n\r\n /**\r\n * On key up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyUpTrigger = Constants.ACTION_OnKeyUpTrigger;\r\n\r\n // Members\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new action manager\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(scene?: Nullable<Scene>) {\r\n super();\r\n scene = scene || EngineStore.LastCreatedScene;\r\n if (!scene) {\r\n return;\r\n }\r\n this._scene = scene;\r\n\r\n scene.actionManagers.push(this);\r\n }\r\n\r\n // Methods\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose(): void {\r\n const index = this._scene.actionManagers.indexOf(this);\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const action = this.actions[i];\r\n ActionManager.Triggers[action.trigger]--;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n this._scene.actionManagers.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Gets hosting scene\r\n * @returns the hosting scene\r\n */\r\n public getScene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers\r\n * @param triggers defines the triggers to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers(triggers: number[]): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggers.indexOf(action.trigger) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers. This function takes two arguments for\r\n * speed.\r\n * @param triggerA defines the trigger to be tested\r\n * @param triggerB defines the trigger to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers2(triggerA: number, triggerB: number): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggerA == action.trigger || triggerB == action.trigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of a given trigger\r\n * @param trigger defines the trigger to be tested\r\n * @param parameterPredicate defines an optional predicate to filter triggers by parameter\r\n * @returns whether the trigger is handled\r\n */\r\n public hasSpecificTrigger(trigger: number, parameterPredicate?: (parameter: any) => boolean): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (parameterPredicate) {\r\n if (parameterPredicate(action.getTriggerParameter())) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pointer triggers\r\n */\r\n public get hasPointerTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPointerOutTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pick triggers\r\n */\r\n public get hasPickTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPickUpTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Registers an action to this action manager\r\n * @param action defines the action to be registered\r\n * @returns the action amended (prepared) after registration\r\n */\r\n public registerAction(action: IAction): Nullable<IAction> {\r\n if (action.trigger === ActionManager.OnEveryFrameTrigger) {\r\n if (this.getScene().actionManager !== this) {\r\n Logger.Warn(\"OnEveryFrameTrigger can only be used with scene.actionManager\");\r\n return null;\r\n }\r\n }\r\n\r\n this.actions.push(action);\r\n this.getScene()._registeredActions++;\r\n\r\n if (ActionManager.Triggers[action.trigger]) {\r\n ActionManager.Triggers[action.trigger]++;\r\n } else {\r\n ActionManager.Triggers[action.trigger] = 1;\r\n }\r\n\r\n action._actionManager = this;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Unregisters an action to this action manager\r\n * @param action defines the action to be unregistered\r\n * @returns a boolean indicating whether the action has been unregistered\r\n */\r\n public unregisterAction(action: IAction): Boolean {\r\n const index = this.actions.indexOf(action);\r\n if (index !== -1) {\r\n this.actions.splice(index, 1);\r\n ActionManager.Triggers[action.trigger] -= 1;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n action._actionManager = null;\r\n this.getScene()._registeredActions--;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Process a specific trigger\r\n * @param trigger defines the trigger to process\r\n * @param evt defines the event details to be processed\r\n */\r\n public processTrigger(trigger: number, evt?: IActionEvent): void {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (evt) {\r\n if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {\r\n const parameter = action.getTriggerParameter();\r\n\r\n if (parameter && parameter !== evt.sourceEvent.keyCode) {\r\n if (!parameter.toLowerCase) {\r\n continue;\r\n }\r\n const lowerCase = parameter.toLowerCase();\r\n\r\n if (lowerCase !== evt.sourceEvent.key) {\r\n const unicode = evt.sourceEvent.charCode ? evt.sourceEvent.charCode : evt.sourceEvent.keyCode;\r\n const actualkey = String.fromCharCode(unicode).toLowerCase();\r\n if (actualkey !== lowerCase) {\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n action._executeCurrent(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n const properties = propertyPath.split(\".\");\r\n\r\n for (let index = 0; index < properties.length - 1; index++) {\r\n target = target[properties[index]];\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n const properties = propertyPath.split(\".\");\r\n\r\n return properties[properties.length - 1];\r\n }\r\n\r\n /**\r\n * Serialize this manager to a JSON object\r\n * @param name defines the property name to store this manager\r\n * @returns a JSON representation of this manager\r\n */\r\n public serialize(name: string): any {\r\n const root = {\r\n children: new Array(),\r\n name: name,\r\n type: 3, // Root node\r\n properties: new Array(), // Empty for root but required\r\n };\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const triggerObject = {\r\n type: 0, // Trigger\r\n children: new Array(),\r\n name: ActionManager.GetTriggerName(this.actions[i].trigger),\r\n properties: new Array(),\r\n };\r\n\r\n const triggerOptions = this.actions[i].triggerOptions;\r\n\r\n if (triggerOptions && typeof triggerOptions !== \"number\") {\r\n if (triggerOptions.parameter instanceof Node) {\r\n triggerObject.properties.push(Action._GetTargetProperty(triggerOptions.parameter));\r\n } else if (typeof triggerOptions.parameter === \"object\") {\r\n const parameter = <any>{};\r\n DeepCopier.DeepCopy(triggerOptions.parameter, parameter, [\"mesh\"]);\r\n\r\n if (triggerOptions.parameter && triggerOptions.parameter.mesh) {\r\n parameter._meshId = triggerOptions.parameter.mesh.id;\r\n }\r\n\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: parameter });\r\n } else {\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: triggerOptions.parameter });\r\n }\r\n }\r\n\r\n // Serialize child action, recursively\r\n this.actions[i].serialize(triggerObject);\r\n\r\n // Add serialized trigger\r\n root.children.push(triggerObject);\r\n }\r\n\r\n return root;\r\n }\r\n\r\n /**\r\n * Creates a new ActionManager from a JSON data\r\n * @param parsedActions defines the JSON data to read from\r\n * @param object defines the hosting mesh\r\n * @param scene defines the hosting scene\r\n */\r\n public static Parse(parsedActions: any, object: Nullable<AbstractMesh>, scene: Scene): void {\r\n const actionManager = new ActionManager(scene);\r\n if (object === null) {\r\n scene.actionManager = actionManager;\r\n } else {\r\n object.actionManager = actionManager;\r\n }\r\n\r\n // instantiate a new object\r\n const instantiate = (name: string, params: Array<any>): any => {\r\n const internalClassType = GetClass(\"BABYLON.\" + name);\r\n return internalClassType && new internalClassType(...params);\r\n };\r\n\r\n const parseParameter = (name: string, value: string, target: any, propertyPath: Nullable<string>): any => {\r\n if (propertyPath === null) {\r\n // String, boolean or float\r\n const floatValue = parseFloat(value);\r\n\r\n if (value === \"true\" || value === \"false\") {\r\n return value === \"true\";\r\n } else {\r\n return isNaN(floatValue) ? value : floatValue;\r\n }\r\n }\r\n\r\n const effectiveTarget = propertyPath.split(\".\");\r\n const values = value.split(\",\");\r\n\r\n // Get effective Target\r\n for (let i = 0; i < effectiveTarget.length; i++) {\r\n target = target[effectiveTarget[i]];\r\n }\r\n\r\n // Return appropriate value with its type\r\n if (typeof target === \"boolean\") {\r\n return values[0] === \"true\";\r\n }\r\n\r\n if (typeof target === \"string\") {\r\n return values[0];\r\n }\r\n\r\n // Parameters with multiple values such as Vector3 etc.\r\n const split = new Array<number>();\r\n for (let i = 0; i < values.length; i++) {\r\n split.push(parseFloat(values[i]));\r\n }\r\n\r\n if (target instanceof Vector3) {\r\n return Vector3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Vector4) {\r\n return Vector4.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color3) {\r\n return Color3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color4) {\r\n return Color4.FromArray(split);\r\n }\r\n\r\n return parseFloat(values[0]);\r\n };\r\n\r\n // traverse graph per trigger\r\n const traverse = (parsedAction: any, trigger: any, condition: Nullable<Condition>, action: Nullable<Action>, combineArray: Nullable<Array<Action>> = null) => {\r\n if (parsedAction.detached) {\r\n return;\r\n }\r\n\r\n const parameters = new Array<any>();\r\n let target: any = null;\r\n let propertyPath: Nullable<string> = null;\r\n const combine = parsedAction.combine && parsedAction.combine.length > 0;\r\n\r\n // Parameters\r\n if (parsedAction.type === 2) {\r\n parameters.push(actionManager);\r\n } else {\r\n parameters.push(trigger);\r\n }\r\n\r\n if (combine) {\r\n const actions = new Array<Action>();\r\n for (let j = 0; j < parsedAction.combine.length; j++) {\r\n traverse(parsedAction.combine[j], ActionManager.NothingTrigger, condition, action, actions);\r\n }\r\n parameters.push(actions);\r\n } else {\r\n for (let i = 0; i < parsedAction.properties.length; i++) {\r\n let value = parsedAction.properties[i].value;\r\n const name = parsedAction.properties[i].name;\r\n const targetType = parsedAction.properties[i].targetType;\r\n\r\n if (name === \"target\") {\r\n if (targetType === \"SceneProperties\") {\r\n value = target = scene;\r\n } else if (targetType === \"MaterialProperties\") {\r\n value = target = scene.getMaterialByName(value);\r\n } else {\r\n value = target = scene.getNodeByName(value);\r\n }\r\n } else if (name === \"parent\") {\r\n value = scene.getNodeByName(value);\r\n } else if (name === \"sound\") {\r\n // Can not externalize to component, so only checks for the presence off the API.\r\n if (scene.getSoundByName) {\r\n value = scene.getSoundByName(value);\r\n }\r\n } else if (name !== \"propertyPath\") {\r\n if (parsedAction.type === 2 && name === \"operator\") {\r\n value = (<any>ValueCondition)[value];\r\n } else {\r\n value = parseParameter(name, value, target, name === \"value\" ? propertyPath : null);\r\n }\r\n } else {\r\n propertyPath = value;\r\n }\r\n\r\n parameters.push(value);\r\n }\r\n }\r\n\r\n if (combineArray === null) {\r\n parameters.push(condition);\r\n } else {\r\n parameters.push(null);\r\n }\r\n\r\n // If interpolate value action\r\n if (parsedAction.name === \"InterpolateValueAction\") {\r\n const param = parameters[parameters.length - 2];\r\n parameters[parameters.length - 1] = param;\r\n parameters[parameters.length - 2] = condition;\r\n }\r\n\r\n // Action or condition(s) and not CombineAction\r\n let newAction = instantiate(parsedAction.name, parameters);\r\n\r\n if (newAction instanceof Condition && condition !== null) {\r\n const nothing = new DoNothingAction(trigger, condition);\r\n\r\n if (action) {\r\n action.then(nothing);\r\n } else {\r\n actionManager.registerAction(nothing);\r\n }\r\n\r\n action = nothing;\r\n }\r\n\r\n if (combineArray === null) {\r\n if (newAction instanceof Condition) {\r\n condition = newAction;\r\n newAction = action;\r\n } else {\r\n condition = null;\r\n if (action) {\r\n action.then(newAction);\r\n } else {\r\n actionManager.registerAction(newAction);\r\n }\r\n }\r\n } else {\r\n combineArray.push(newAction);\r\n }\r\n\r\n for (let i = 0; i < parsedAction.children.length; i++) {\r\n traverse(parsedAction.children[i], trigger, condition, newAction, null);\r\n }\r\n };\r\n\r\n // triggers\r\n for (let i = 0; i < parsedActions.children.length; i++) {\r\n let triggerParams: any;\r\n const trigger = parsedActions.children[i];\r\n\r\n if (trigger.properties.length > 0) {\r\n const param = trigger.properties[0].value;\r\n const value = trigger.properties[0].targetType === null ? param : scene.getMeshByName(param);\r\n\r\n if (value._meshId) {\r\n value.mesh = scene.getMeshById(value._meshId);\r\n }\r\n\r\n triggerParams = { trigger: (<any>ActionManager)[trigger.name], parameter: value };\r\n } else {\r\n triggerParams = (<any>ActionManager)[trigger.name];\r\n }\r\n\r\n for (let j = 0; j < trigger.children.length; j++) {\r\n if (!trigger.detached) {\r\n traverse(trigger.children[j], triggerParams, null, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a trigger name by index\r\n * @param trigger defines the trigger index\r\n * @returns a trigger name\r\n */\r\n public static GetTriggerName(trigger: number): string {\r\n switch (trigger) {\r\n case Constants.ACTION_NothingTrigger:\r\n return \"NothingTrigger\";\r\n case Constants.ACTION_OnPickTrigger:\r\n return \"OnPickTrigger\";\r\n case Constants.ACTION_OnLeftPickTrigger:\r\n return \"OnLeftPickTrigger\";\r\n case Constants.ACTION_OnRightPickTrigger:\r\n return \"OnRightPickTrigger\";\r\n case Constants.ACTION_OnCenterPickTrigger:\r\n return \"OnCenterPickTrigger\";\r\n case Constants.ACTION_OnPickDownTrigger:\r\n return \"OnPickDownTrigger\";\r\n case Constants.ACTION_OnDoublePickTrigger:\r\n return \"OnDoublePickTrigger\"; // start;\r\n case Constants.ACTION_OnPickUpTrigger:\r\n return \"OnPickUpTrigger\";\r\n case Constants.ACTION_OnLongPressTrigger:\r\n return \"OnLongPressTrigger\";\r\n case Constants.ACTION_OnPointerOverTrigger:\r\n return \"OnPointerOverTrigger\";\r\n case Constants.ACTION_OnPointerOutTrigger:\r\n return \"OnPointerOutTrigger\";\r\n case Constants.ACTION_OnEveryFrameTrigger:\r\n return \"OnEveryFrameTrigger\";\r\n case Constants.ACTION_OnIntersectionEnterTrigger:\r\n return \"OnIntersectionEnterTrigger\";\r\n case Constants.ACTION_OnIntersectionExitTrigger:\r\n return \"OnIntersectionExitTrigger\";\r\n case Constants.ACTION_OnKeyDownTrigger:\r\n return \"OnKeyDownTrigger\";\r\n case Constants.ACTION_OnKeyUpTrigger:\r\n return \"OnKeyUpTrigger\";\r\n case Constants.ACTION_OnPickOutTrigger:\r\n return \"OnPickOutTrigger\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"actionManager.js","sourceRoot":"","sources":["../../../../lts/core/generated/Actions/actionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport { Condition, ValueCondition } from \"./condition\";\r\nimport type { IAction } from \"./action\";\r\nimport { Action } from \"./action\";\r\nimport { DoNothingAction } from \"./directActions\";\r\n\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IActionEvent } from \"../Actions/actionEvent\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { DeepCopier } from \"../Misc/deepCopier\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\nimport { AbstractActionManager } from \"./abstractActionManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Action Manager manages all events to be triggered on a given mesh or the global scene.\r\n * A single scene can have many Action Managers to handle predefined actions on specific meshes.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ActionManager extends AbstractActionManager {\r\n /**\r\n * Nothing\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;\r\n\r\n /**\r\n * On pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;\r\n\r\n /**\r\n * On left pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;\r\n\r\n /**\r\n * On right pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;\r\n\r\n /**\r\n * On center pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;\r\n\r\n /**\r\n * On pick down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;\r\n\r\n /**\r\n * On double pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;\r\n\r\n /**\r\n * On pick up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;\r\n /**\r\n * On pick out.\r\n * This trigger will only be raised if you also declared a OnPickDown\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;\r\n\r\n /**\r\n * On long press\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;\r\n\r\n /**\r\n * On pointer over\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;\r\n\r\n /**\r\n * On pointer out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;\r\n\r\n /**\r\n * On every frame\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;\r\n /**\r\n * On intersection enter\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;\r\n\r\n /**\r\n * On intersection exit\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;\r\n\r\n /**\r\n * On key down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;\r\n\r\n /**\r\n * On key up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyUpTrigger = Constants.ACTION_OnKeyUpTrigger;\r\n\r\n // Members\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new action manager\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(scene?: Nullable<Scene>) {\r\n super();\r\n scene = scene || EngineStore.LastCreatedScene;\r\n if (!scene) {\r\n return;\r\n }\r\n this._scene = scene;\r\n\r\n scene.actionManagers.push(this);\r\n }\r\n\r\n // Methods\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose(): void {\r\n const index = this._scene.actionManagers.indexOf(this);\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const action = this.actions[i];\r\n ActionManager.Triggers[action.trigger]--;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n this._scene.actionManagers.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Gets hosting scene\r\n * @returns the hosting scene\r\n */\r\n public getScene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers\r\n * @param triggers defines the triggers to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers(triggers: number[]): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggers.indexOf(action.trigger) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers. This function takes two arguments for\r\n * speed.\r\n * @param triggerA defines the trigger to be tested\r\n * @param triggerB defines the trigger to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers2(triggerA: number, triggerB: number): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggerA == action.trigger || triggerB == action.trigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of a given trigger\r\n * @param trigger defines the trigger to be tested\r\n * @param parameterPredicate defines an optional predicate to filter triggers by parameter\r\n * @returns whether the trigger is handled\r\n */\r\n public hasSpecificTrigger(trigger: number, parameterPredicate?: (parameter: any) => boolean): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (parameterPredicate) {\r\n if (parameterPredicate(action.getTriggerParameter())) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pointer triggers\r\n */\r\n public get hasPointerTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPointerOutTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pick triggers\r\n */\r\n public get hasPickTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPickUpTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Registers an action to this action manager\r\n * @param action defines the action to be registered\r\n * @returns the action amended (prepared) after registration\r\n */\r\n public registerAction(action: IAction): Nullable<IAction> {\r\n if (action.trigger === ActionManager.OnEveryFrameTrigger) {\r\n if (this.getScene().actionManager !== this) {\r\n Logger.Warn(\"OnEveryFrameTrigger can only be used with scene.actionManager\");\r\n return null;\r\n }\r\n }\r\n\r\n this.actions.push(action);\r\n this.getScene()._registeredActions++;\r\n\r\n if (ActionManager.Triggers[action.trigger]) {\r\n ActionManager.Triggers[action.trigger]++;\r\n } else {\r\n ActionManager.Triggers[action.trigger] = 1;\r\n }\r\n\r\n action._actionManager = this;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Unregisters an action to this action manager\r\n * @param action defines the action to be unregistered\r\n * @returns a boolean indicating whether the action has been unregistered\r\n */\r\n public unregisterAction(action: IAction): Boolean {\r\n const index = this.actions.indexOf(action);\r\n if (index !== -1) {\r\n this.actions.splice(index, 1);\r\n ActionManager.Triggers[action.trigger] -= 1;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n action._actionManager = null;\r\n this.getScene()._registeredActions--;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Process a specific trigger\r\n * @param trigger defines the trigger to process\r\n * @param evt defines the event details to be processed\r\n */\r\n public processTrigger(trigger: number, evt?: IActionEvent): void {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (evt) {\r\n if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {\r\n const parameter = action.getTriggerParameter();\r\n\r\n if (typeof parameter === \"function\") {\r\n if (!parameter(evt)) {\r\n continue;\r\n }\r\n } else if (parameter && parameter !== evt.sourceEvent.keyCode) {\r\n if (!parameter.toLowerCase) {\r\n continue;\r\n }\r\n const lowerCase = parameter.toLowerCase();\r\n\r\n if (lowerCase !== evt.sourceEvent.key) {\r\n const unicode = evt.sourceEvent.charCode ? evt.sourceEvent.charCode : evt.sourceEvent.keyCode;\r\n const actualkey = String.fromCharCode(unicode).toLowerCase();\r\n if (actualkey !== lowerCase) {\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n action._executeCurrent(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n const properties = propertyPath.split(\".\");\r\n\r\n for (let index = 0; index < properties.length - 1; index++) {\r\n target = target[properties[index]];\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n const properties = propertyPath.split(\".\");\r\n\r\n return properties[properties.length - 1];\r\n }\r\n\r\n /**\r\n * Serialize this manager to a JSON object\r\n * @param name defines the property name to store this manager\r\n * @returns a JSON representation of this manager\r\n */\r\n public serialize(name: string): any {\r\n const root = {\r\n children: new Array(),\r\n name: name,\r\n type: 3, // Root node\r\n properties: new Array(), // Empty for root but required\r\n };\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const triggerObject = {\r\n type: 0, // Trigger\r\n children: new Array(),\r\n name: ActionManager.GetTriggerName(this.actions[i].trigger),\r\n properties: new Array(),\r\n };\r\n\r\n const triggerOptions = this.actions[i].triggerOptions;\r\n\r\n if (triggerOptions && typeof triggerOptions !== \"number\") {\r\n if (triggerOptions.parameter instanceof Node) {\r\n triggerObject.properties.push(Action._GetTargetProperty(triggerOptions.parameter));\r\n } else if (typeof triggerOptions.parameter === \"object\") {\r\n const parameter = <any>{};\r\n DeepCopier.DeepCopy(triggerOptions.parameter, parameter, [\"mesh\"]);\r\n\r\n if (triggerOptions.parameter && triggerOptions.parameter.mesh) {\r\n parameter._meshId = triggerOptions.parameter.mesh.id;\r\n }\r\n\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: parameter });\r\n } else {\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: triggerOptions.parameter });\r\n }\r\n }\r\n\r\n // Serialize child action, recursively\r\n this.actions[i].serialize(triggerObject);\r\n\r\n // Add serialized trigger\r\n root.children.push(triggerObject);\r\n }\r\n\r\n return root;\r\n }\r\n\r\n /**\r\n * Creates a new ActionManager from a JSON data\r\n * @param parsedActions defines the JSON data to read from\r\n * @param object defines the hosting mesh\r\n * @param scene defines the hosting scene\r\n */\r\n public static Parse(parsedActions: any, object: Nullable<AbstractMesh>, scene: Scene): void {\r\n const actionManager = new ActionManager(scene);\r\n if (object === null) {\r\n scene.actionManager = actionManager;\r\n } else {\r\n object.actionManager = actionManager;\r\n }\r\n\r\n // instantiate a new object\r\n const instantiate = (name: string, params: Array<any>): any => {\r\n const internalClassType = GetClass(\"BABYLON.\" + name);\r\n return internalClassType && new internalClassType(...params);\r\n };\r\n\r\n const parseParameter = (name: string, value: string, target: any, propertyPath: Nullable<string>): any => {\r\n if (propertyPath === null) {\r\n // String, boolean or float\r\n const floatValue = parseFloat(value);\r\n\r\n if (value === \"true\" || value === \"false\") {\r\n return value === \"true\";\r\n } else {\r\n return isNaN(floatValue) ? value : floatValue;\r\n }\r\n }\r\n\r\n const effectiveTarget = propertyPath.split(\".\");\r\n const values = value.split(\",\");\r\n\r\n // Get effective Target\r\n for (let i = 0; i < effectiveTarget.length; i++) {\r\n target = target[effectiveTarget[i]];\r\n }\r\n\r\n // Return appropriate value with its type\r\n if (typeof target === \"boolean\") {\r\n return values[0] === \"true\";\r\n }\r\n\r\n if (typeof target === \"string\") {\r\n return values[0];\r\n }\r\n\r\n // Parameters with multiple values such as Vector3 etc.\r\n const split = new Array<number>();\r\n for (let i = 0; i < values.length; i++) {\r\n split.push(parseFloat(values[i]));\r\n }\r\n\r\n if (target instanceof Vector3) {\r\n return Vector3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Vector4) {\r\n return Vector4.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color3) {\r\n return Color3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color4) {\r\n return Color4.FromArray(split);\r\n }\r\n\r\n return parseFloat(values[0]);\r\n };\r\n\r\n // traverse graph per trigger\r\n const traverse = (parsedAction: any, trigger: any, condition: Nullable<Condition>, action: Nullable<Action>, combineArray: Nullable<Array<Action>> = null) => {\r\n if (parsedAction.detached) {\r\n return;\r\n }\r\n\r\n const parameters = new Array<any>();\r\n let target: any = null;\r\n let propertyPath: Nullable<string> = null;\r\n const combine = parsedAction.combine && parsedAction.combine.length > 0;\r\n\r\n // Parameters\r\n if (parsedAction.type === 2) {\r\n parameters.push(actionManager);\r\n } else {\r\n parameters.push(trigger);\r\n }\r\n\r\n if (combine) {\r\n const actions = new Array<Action>();\r\n for (let j = 0; j < parsedAction.combine.length; j++) {\r\n traverse(parsedAction.combine[j], ActionManager.NothingTrigger, condition, action, actions);\r\n }\r\n parameters.push(actions);\r\n } else {\r\n for (let i = 0; i < parsedAction.properties.length; i++) {\r\n let value = parsedAction.properties[i].value;\r\n const name = parsedAction.properties[i].name;\r\n const targetType = parsedAction.properties[i].targetType;\r\n\r\n if (name === \"target\") {\r\n if (targetType === \"SceneProperties\") {\r\n value = target = scene;\r\n } else if (targetType === \"MaterialProperties\") {\r\n value = target = scene.getMaterialByName(value);\r\n } else {\r\n value = target = scene.getNodeByName(value);\r\n }\r\n } else if (name === \"parent\") {\r\n value = scene.getNodeByName(value);\r\n } else if (name === \"sound\") {\r\n // Can not externalize to component, so only checks for the presence off the API.\r\n if (scene.getSoundByName) {\r\n value = scene.getSoundByName(value);\r\n }\r\n } else if (name !== \"propertyPath\") {\r\n if (parsedAction.type === 2 && name === \"operator\") {\r\n value = (<any>ValueCondition)[value];\r\n } else {\r\n value = parseParameter(name, value, target, name === \"value\" ? propertyPath : null);\r\n }\r\n } else {\r\n propertyPath = value;\r\n }\r\n\r\n parameters.push(value);\r\n }\r\n }\r\n\r\n if (combineArray === null) {\r\n parameters.push(condition);\r\n } else {\r\n parameters.push(null);\r\n }\r\n\r\n // If interpolate value action\r\n if (parsedAction.name === \"InterpolateValueAction\") {\r\n const param = parameters[parameters.length - 2];\r\n parameters[parameters.length - 1] = param;\r\n parameters[parameters.length - 2] = condition;\r\n }\r\n\r\n // Action or condition(s) and not CombineAction\r\n let newAction = instantiate(parsedAction.name, parameters);\r\n\r\n if (newAction instanceof Condition && condition !== null) {\r\n const nothing = new DoNothingAction(trigger, condition);\r\n\r\n if (action) {\r\n action.then(nothing);\r\n } else {\r\n actionManager.registerAction(nothing);\r\n }\r\n\r\n action = nothing;\r\n }\r\n\r\n if (combineArray === null) {\r\n if (newAction instanceof Condition) {\r\n condition = newAction;\r\n newAction = action;\r\n } else {\r\n condition = null;\r\n if (action) {\r\n action.then(newAction);\r\n } else {\r\n actionManager.registerAction(newAction);\r\n }\r\n }\r\n } else {\r\n combineArray.push(newAction);\r\n }\r\n\r\n for (let i = 0; i < parsedAction.children.length; i++) {\r\n traverse(parsedAction.children[i], trigger, condition, newAction, null);\r\n }\r\n };\r\n\r\n // triggers\r\n for (let i = 0; i < parsedActions.children.length; i++) {\r\n let triggerParams: any;\r\n const trigger = parsedActions.children[i];\r\n\r\n if (trigger.properties.length > 0) {\r\n const param = trigger.properties[0].value;\r\n const value = trigger.properties[0].targetType === null ? param : scene.getMeshByName(param);\r\n\r\n if (value._meshId) {\r\n value.mesh = scene.getMeshById(value._meshId);\r\n }\r\n\r\n triggerParams = { trigger: (<any>ActionManager)[trigger.name], parameter: value };\r\n } else {\r\n triggerParams = (<any>ActionManager)[trigger.name];\r\n }\r\n\r\n for (let j = 0; j < trigger.children.length; j++) {\r\n if (!trigger.detached) {\r\n traverse(trigger.children[j], triggerParams, null, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a trigger name by index\r\n * @param trigger defines the trigger index\r\n * @returns a trigger name\r\n */\r\n public static GetTriggerName(trigger: number): string {\r\n switch (trigger) {\r\n case Constants.ACTION_NothingTrigger:\r\n return \"NothingTrigger\";\r\n case Constants.ACTION_OnPickTrigger:\r\n return \"OnPickTrigger\";\r\n case Constants.ACTION_OnLeftPickTrigger:\r\n return \"OnLeftPickTrigger\";\r\n case Constants.ACTION_OnRightPickTrigger:\r\n return \"OnRightPickTrigger\";\r\n case Constants.ACTION_OnCenterPickTrigger:\r\n return \"OnCenterPickTrigger\";\r\n case Constants.ACTION_OnPickDownTrigger:\r\n return \"OnPickDownTrigger\";\r\n case Constants.ACTION_OnDoublePickTrigger:\r\n return \"OnDoublePickTrigger\"; // start;\r\n case Constants.ACTION_OnPickUpTrigger:\r\n return \"OnPickUpTrigger\";\r\n case Constants.ACTION_OnLongPressTrigger:\r\n return \"OnLongPressTrigger\";\r\n case Constants.ACTION_OnPointerOverTrigger:\r\n return \"OnPointerOverTrigger\";\r\n case Constants.ACTION_OnPointerOutTrigger:\r\n return \"OnPointerOutTrigger\";\r\n case Constants.ACTION_OnEveryFrameTrigger:\r\n return \"OnEveryFrameTrigger\";\r\n case Constants.ACTION_OnIntersectionEnterTrigger:\r\n return \"OnIntersectionEnterTrigger\";\r\n case Constants.ACTION_OnIntersectionExitTrigger:\r\n return \"OnIntersectionExitTrigger\";\r\n case Constants.ACTION_OnKeyDownTrigger:\r\n return \"OnKeyDownTrigger\";\r\n case Constants.ACTION_OnKeyUpTrigger:\r\n return \"OnKeyUpTrigger\";\r\n case Constants.ACTION_OnPickOutTrigger:\r\n return \"OnPickOutTrigger\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n"]}
|
package/Actions/condition.js
CHANGED
|
@@ -51,29 +51,6 @@ export class Condition {
|
|
|
51
51
|
* Defines specific conditional operators as extensions of Condition
|
|
52
52
|
*/
|
|
53
53
|
export class ValueCondition extends Condition {
|
|
54
|
-
/**
|
|
55
|
-
* Creates a new ValueCondition
|
|
56
|
-
* @param actionManager manager for the action the condition applies to
|
|
57
|
-
* @param target for the action
|
|
58
|
-
* @param propertyPath path to specify the property of the target the conditional operator uses
|
|
59
|
-
* @param value the value compared by the conditional operator against the current value of the property
|
|
60
|
-
* @param operator the conditional operator, default ValueCondition.IsEqual
|
|
61
|
-
*/
|
|
62
|
-
constructor(actionManager, target,
|
|
63
|
-
/** path to specify the property of the target the conditional operator uses */
|
|
64
|
-
propertyPath,
|
|
65
|
-
/** the value compared by the conditional operator against the current value of the property */
|
|
66
|
-
value,
|
|
67
|
-
/** the conditional operator, default ValueCondition.IsEqual */
|
|
68
|
-
operator = ValueCondition.IsEqual) {
|
|
69
|
-
super(actionManager);
|
|
70
|
-
this.propertyPath = propertyPath;
|
|
71
|
-
this.value = value;
|
|
72
|
-
this.operator = operator;
|
|
73
|
-
this._target = target;
|
|
74
|
-
this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);
|
|
75
|
-
this._property = this._getProperty(this.propertyPath);
|
|
76
|
-
}
|
|
77
54
|
/**
|
|
78
55
|
* returns the number for IsEqual
|
|
79
56
|
*/
|
|
@@ -98,6 +75,29 @@ export class ValueCondition extends Condition {
|
|
|
98
75
|
static get IsLesser() {
|
|
99
76
|
return ValueCondition._IsLesser;
|
|
100
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new ValueCondition
|
|
80
|
+
* @param actionManager manager for the action the condition applies to
|
|
81
|
+
* @param target for the action
|
|
82
|
+
* @param propertyPath path to specify the property of the target the conditional operator uses
|
|
83
|
+
* @param value the value compared by the conditional operator against the current value of the property
|
|
84
|
+
* @param operator the conditional operator, default ValueCondition.IsEqual
|
|
85
|
+
*/
|
|
86
|
+
constructor(actionManager, target,
|
|
87
|
+
/** path to specify the property of the target the conditional operator uses */
|
|
88
|
+
propertyPath,
|
|
89
|
+
/** the value compared by the conditional operator against the current value of the property */
|
|
90
|
+
value,
|
|
91
|
+
/** the conditional operator, default ValueCondition.IsEqual */
|
|
92
|
+
operator = ValueCondition.IsEqual) {
|
|
93
|
+
super(actionManager);
|
|
94
|
+
this.propertyPath = propertyPath;
|
|
95
|
+
this.value = value;
|
|
96
|
+
this.operator = operator;
|
|
97
|
+
this._target = target;
|
|
98
|
+
this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);
|
|
99
|
+
this._property = this._getProperty(this.propertyPath);
|
|
100
|
+
}
|
|
101
101
|
/**
|
|
102
102
|
* Compares the given value with the property value for the specified conditional operator
|
|
103
103
|
* @returns the result of the comparison
|
package/Actions/condition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../lts/core/generated/Actions/condition.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\ndeclare type ActionManager = import(\"./actionManager\").ActionManager;\r\n\r\n/**\r\n * A Condition applied to an Action\r\n */\r\nexport class Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _evaluationId: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _currentResult: boolean;\r\n\r\n /**\r\n * Creates a new Condition\r\n * @param actionManager the manager of the action the condition is applied to\r\n */\r\n constructor(actionManager: ActionManager) {\r\n this._actionManager = actionManager;\r\n }\r\n\r\n /**\r\n * Check if the current condition is valid\r\n * @returns a boolean\r\n */\r\n public isValid(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n return this._actionManager._getProperty(propertyPath);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n return this._actionManager._getEffectiveTarget(target, propertyPath);\r\n }\r\n\r\n /**\r\n * Serialize placeholder for child classes\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {}\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _serialize(serializedCondition: any): any {\r\n return {\r\n type: 2, // Condition\r\n children: [],\r\n name: serializedCondition.name,\r\n properties: serializedCondition.properties,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Defines specific conditional operators as extensions of Condition\r\n */\r\nexport class ValueCondition extends Condition {\r\n private static _IsEqual = 0;\r\n private static _IsDifferent = 1;\r\n private static _IsGreater = 2;\r\n private static _IsLesser = 3;\r\n\r\n /**\r\n * returns the number for IsEqual\r\n */\r\n public static get IsEqual(): number {\r\n return ValueCondition._IsEqual;\r\n }\r\n\r\n /**\r\n * Returns the number for IsDifferent\r\n */\r\n public static get IsDifferent(): number {\r\n return ValueCondition._IsDifferent;\r\n }\r\n\r\n /**\r\n * Returns the number for IsGreater\r\n */\r\n public static get IsGreater(): number {\r\n return ValueCondition._IsGreater;\r\n }\r\n\r\n /**\r\n * Returns the number for IsLesser\r\n */\r\n public static get IsLesser(): number {\r\n return ValueCondition._IsLesser;\r\n }\r\n\r\n /**\r\n * Internal only The action manager for the condition\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Creates a new ValueCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target for the action\r\n * @param propertyPath path to specify the property of the target the conditional operator uses\r\n * @param value the value compared by the conditional operator against the current value of the property\r\n * @param operator the conditional operator, default ValueCondition.IsEqual\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** path to specify the property of the target the conditional operator uses */\r\n public propertyPath: string,\r\n /** the value compared by the conditional operator against the current value of the property */\r\n public value: any,\r\n /** the conditional operator, default ValueCondition.IsEqual */\r\n public operator: number = ValueCondition.IsEqual\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Compares the given value with the property value for the specified conditional operator\r\n * @returns the result of the comparison\r\n */\r\n public isValid(): boolean {\r\n switch (this.operator) {\r\n case ValueCondition.IsGreater:\r\n return this._effectiveTarget[this._property] > this.value;\r\n case ValueCondition.IsLesser:\r\n return this._effectiveTarget[this._property] < this.value;\r\n case ValueCondition.IsEqual:\r\n case ValueCondition.IsDifferent: {\r\n let check: boolean;\r\n\r\n if (this.value.equals) {\r\n check = this.value.equals(this._effectiveTarget[this._property]);\r\n } else {\r\n check = this.value === this._effectiveTarget[this._property];\r\n }\r\n return this.operator === ValueCondition.IsEqual ? check : !check;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Serialize the ValueCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"ValueCondition\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"operator\", value: ValueCondition.GetOperatorName(this.operator) },\r\n ],\r\n });\r\n }\r\n\r\n /**\r\n * Gets the name of the conditional operator for the ValueCondition\r\n * @param operator the conditional operator\r\n * @returns the name\r\n */\r\n public static GetOperatorName(operator: number): string {\r\n switch (operator) {\r\n case ValueCondition._IsEqual:\r\n return \"IsEqual\";\r\n case ValueCondition._IsDifferent:\r\n return \"IsDifferent\";\r\n case ValueCondition._IsGreater:\r\n return \"IsGreater\";\r\n case ValueCondition._IsLesser:\r\n return \"IsLesser\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Defines a predicate condition as an extension of Condition\r\n */\r\nexport class PredicateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * Creates a new PredicateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param predicate defines the predicate function used to validate the condition\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n /** defines the predicate function used to validate the condition */\r\n public predicate: () => boolean\r\n ) {\r\n super(actionManager);\r\n }\r\n\r\n /**\r\n * @returns the validity of the predicate condition\r\n */\r\n public isValid(): boolean {\r\n return this.predicate();\r\n }\r\n}\r\n\r\n/**\r\n * Defines a state condition as an extension of Condition\r\n */\r\nexport class StateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Creates a new StateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target of the condition\r\n * @param value to compare with target state\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** Value to compare with target state */\r\n public value: string\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the current condition is met\r\n * @returns the validity of the state\r\n */\r\n public isValid(): boolean {\r\n return this._target.state === this.value;\r\n }\r\n\r\n /**\r\n * Serialize the StateCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"StateCondition\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n });\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ValueCondition\", ValueCondition);\r\nRegisterClass(\"BABYLON.PredicateCondition\", PredicateCondition);\r\nRegisterClass(\"BABYLON.StateCondition\", StateCondition);\r\n"]}
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../lts/core/generated/Actions/condition.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\ndeclare type ActionManager = import(\"./actionManager\").ActionManager;\r\n\r\n/**\r\n * A Condition applied to an Action\r\n */\r\nexport class Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _evaluationId: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _currentResult: boolean;\r\n\r\n /**\r\n * Creates a new Condition\r\n * @param actionManager the manager of the action the condition is applied to\r\n */\r\n constructor(actionManager: ActionManager) {\r\n this._actionManager = actionManager;\r\n }\r\n\r\n /**\r\n * Check if the current condition is valid\r\n * @returns a boolean\r\n */\r\n public isValid(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n return this._actionManager._getProperty(propertyPath);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n return this._actionManager._getEffectiveTarget(target, propertyPath);\r\n }\r\n\r\n /**\r\n * Serialize placeholder for child classes\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {}\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _serialize(serializedCondition: any): any {\r\n return {\r\n type: 2, // Condition\r\n children: [],\r\n name: serializedCondition.name,\r\n properties: serializedCondition.properties,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Defines specific conditional operators as extensions of Condition\r\n */\r\nexport class ValueCondition extends Condition {\r\n private static _IsEqual = 0;\r\n private static _IsDifferent = 1;\r\n private static _IsGreater = 2;\r\n private static _IsLesser = 3;\r\n\r\n /**\r\n * returns the number for IsEqual\r\n */\r\n public static get IsEqual(): number {\r\n return ValueCondition._IsEqual;\r\n }\r\n\r\n /**\r\n * Returns the number for IsDifferent\r\n */\r\n public static get IsDifferent(): number {\r\n return ValueCondition._IsDifferent;\r\n }\r\n\r\n /**\r\n * Returns the number for IsGreater\r\n */\r\n public static get IsGreater(): number {\r\n return ValueCondition._IsGreater;\r\n }\r\n\r\n /**\r\n * Returns the number for IsLesser\r\n */\r\n public static get IsLesser(): number {\r\n return ValueCondition._IsLesser;\r\n }\r\n\r\n /**\r\n * Internal only The action manager for the condition\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Creates a new ValueCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target for the action\r\n * @param propertyPath path to specify the property of the target the conditional operator uses\r\n * @param value the value compared by the conditional operator against the current value of the property\r\n * @param operator the conditional operator, default ValueCondition.IsEqual\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** path to specify the property of the target the conditional operator uses */\r\n public propertyPath: string,\r\n /** the value compared by the conditional operator against the current value of the property */\r\n public value: any,\r\n /** the conditional operator, default ValueCondition.IsEqual */\r\n public operator: number = ValueCondition.IsEqual\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Compares the given value with the property value for the specified conditional operator\r\n * @returns the result of the comparison\r\n */\r\n public isValid(): boolean {\r\n switch (this.operator) {\r\n case ValueCondition.IsGreater:\r\n return this._effectiveTarget[this._property] > this.value;\r\n case ValueCondition.IsLesser:\r\n return this._effectiveTarget[this._property] < this.value;\r\n case ValueCondition.IsEqual:\r\n case ValueCondition.IsDifferent: {\r\n let check: boolean;\r\n\r\n if (this.value.equals) {\r\n check = this.value.equals(this._effectiveTarget[this._property]);\r\n } else {\r\n check = this.value === this._effectiveTarget[this._property];\r\n }\r\n return this.operator === ValueCondition.IsEqual ? check : !check;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Serialize the ValueCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"ValueCondition\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"operator\", value: ValueCondition.GetOperatorName(this.operator) },\r\n ],\r\n });\r\n }\r\n\r\n /**\r\n * Gets the name of the conditional operator for the ValueCondition\r\n * @param operator the conditional operator\r\n * @returns the name\r\n */\r\n public static GetOperatorName(operator: number): string {\r\n switch (operator) {\r\n case ValueCondition._IsEqual:\r\n return \"IsEqual\";\r\n case ValueCondition._IsDifferent:\r\n return \"IsDifferent\";\r\n case ValueCondition._IsGreater:\r\n return \"IsGreater\";\r\n case ValueCondition._IsLesser:\r\n return \"IsLesser\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Defines a predicate condition as an extension of Condition\r\n */\r\nexport class PredicateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * Creates a new PredicateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param predicate defines the predicate function used to validate the condition\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n /** defines the predicate function used to validate the condition */\r\n public predicate: () => boolean\r\n ) {\r\n super(actionManager);\r\n }\r\n\r\n /**\r\n * @returns the validity of the predicate condition\r\n */\r\n public isValid(): boolean {\r\n return this.predicate();\r\n }\r\n}\r\n\r\n/**\r\n * Defines a state condition as an extension of Condition\r\n */\r\nexport class StateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Creates a new StateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target of the condition\r\n * @param value to compare with target state\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** Value to compare with target state */\r\n public value: string\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the current condition is met\r\n * @returns the validity of the state\r\n */\r\n public isValid(): boolean {\r\n return this._target.state === this.value;\r\n }\r\n\r\n /**\r\n * Serialize the StateCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"StateCondition\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n });\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ValueCondition\", ValueCondition);\r\nRegisterClass(\"BABYLON.PredicateCondition\", PredicateCondition);\r\nRegisterClass(\"BABYLON.StateCondition\", StateCondition);\r\n"]}
|
package/Animations/animatable.js
CHANGED
|
@@ -9,6 +9,54 @@ import { Bone } from "../Bones/bone.js";
|
|
|
9
9
|
* Class used to store an actual running animation
|
|
10
10
|
*/
|
|
11
11
|
export class Animatable {
|
|
12
|
+
/**
|
|
13
|
+
* Gets the root Animatable used to synchronize and normalize animations
|
|
14
|
+
*/
|
|
15
|
+
get syncRoot() {
|
|
16
|
+
return this._syncRoot;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets the current frame of the first RuntimeAnimation
|
|
20
|
+
* Used to synchronize Animatables
|
|
21
|
+
*/
|
|
22
|
+
get masterFrame() {
|
|
23
|
+
if (this._runtimeAnimations.length === 0) {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
return this._runtimeAnimations[0].currentFrame;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Gets or sets the animatable weight (-1.0 by default meaning not weighted)
|
|
30
|
+
*/
|
|
31
|
+
get weight() {
|
|
32
|
+
return this._weight;
|
|
33
|
+
}
|
|
34
|
+
set weight(value) {
|
|
35
|
+
if (value === -1) {
|
|
36
|
+
// -1 is ok and means no weight
|
|
37
|
+
this._weight = -1;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Else weight must be in [0, 1] range
|
|
41
|
+
this._weight = Math.min(Math.max(value, 0), 1.0);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets or sets the speed ratio to apply to the animatable (1.0 by default)
|
|
45
|
+
*/
|
|
46
|
+
get speedRatio() {
|
|
47
|
+
return this._speedRatio;
|
|
48
|
+
}
|
|
49
|
+
set speedRatio(value) {
|
|
50
|
+
for (let index = 0; index < this._runtimeAnimations.length; index++) {
|
|
51
|
+
const animation = this._runtimeAnimations[index];
|
|
52
|
+
animation._prepareForSpeedRatioChange(value);
|
|
53
|
+
}
|
|
54
|
+
this._speedRatio = value;
|
|
55
|
+
// Resync _manualJumpDelay in case goToFrame was called before speedRatio was set.
|
|
56
|
+
if (this._goToFrame !== null) {
|
|
57
|
+
this.goToFrame(this._goToFrame);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
12
60
|
/**
|
|
13
61
|
* Creates a new Animatable
|
|
14
62
|
* @param scene defines the hosting scene
|
|
@@ -78,54 +126,6 @@ export class Animatable {
|
|
|
78
126
|
this._speedRatio = speedRatio;
|
|
79
127
|
scene._activeAnimatables.push(this);
|
|
80
128
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Gets the root Animatable used to synchronize and normalize animations
|
|
83
|
-
*/
|
|
84
|
-
get syncRoot() {
|
|
85
|
-
return this._syncRoot;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Gets the current frame of the first RuntimeAnimation
|
|
89
|
-
* Used to synchronize Animatables
|
|
90
|
-
*/
|
|
91
|
-
get masterFrame() {
|
|
92
|
-
if (this._runtimeAnimations.length === 0) {
|
|
93
|
-
return 0;
|
|
94
|
-
}
|
|
95
|
-
return this._runtimeAnimations[0].currentFrame;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Gets or sets the animatable weight (-1.0 by default meaning not weighted)
|
|
99
|
-
*/
|
|
100
|
-
get weight() {
|
|
101
|
-
return this._weight;
|
|
102
|
-
}
|
|
103
|
-
set weight(value) {
|
|
104
|
-
if (value === -1) {
|
|
105
|
-
// -1 is ok and means no weight
|
|
106
|
-
this._weight = -1;
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
// Else weight must be in [0, 1] range
|
|
110
|
-
this._weight = Math.min(Math.max(value, 0), 1.0);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Gets or sets the speed ratio to apply to the animatable (1.0 by default)
|
|
114
|
-
*/
|
|
115
|
-
get speedRatio() {
|
|
116
|
-
return this._speedRatio;
|
|
117
|
-
}
|
|
118
|
-
set speedRatio(value) {
|
|
119
|
-
for (let index = 0; index < this._runtimeAnimations.length; index++) {
|
|
120
|
-
const animation = this._runtimeAnimations[index];
|
|
121
|
-
animation._prepareForSpeedRatioChange(value);
|
|
122
|
-
}
|
|
123
|
-
this._speedRatio = value;
|
|
124
|
-
// Resync _manualJumpDelay in case goToFrame was called before speedRatio was set.
|
|
125
|
-
if (this._goToFrame !== null) {
|
|
126
|
-
this.goToFrame(this._goToFrame);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
129
|
// Methods
|
|
130
130
|
/**
|
|
131
131
|
* Synchronize and normalize current Animatable with a source Animatable
|