@babylonjs/core 5.0.0-beta.4 → 5.0.0-beta.5
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/Audio/sound.js +3 -1
- package/Audio/sound.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +29 -26
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +2 -0
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.d.ts +2 -1
- package/Bones/bone.js +28 -18
- package/Bones/bone.js.map +1 -1
- package/Bones/skeleton.js +3 -3
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.js +2 -2
- package/Buffers/buffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +2 -4
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/camera.js +1 -1
- package/Cameras/camera.js.map +1 -1
- package/Compute/computeEffect.js +2 -2
- package/Compute/computeEffect.js.map +1 -1
- package/Debug/debugLayer.js +1 -1
- package/Debug/debugLayer.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +1 -1
- package/DeviceInput/Helpers/eventFactory.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +52 -1
- package/DeviceInput/InputDevices/deviceEnums.js +52 -0
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +2 -2
- package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
- package/DeviceInput/InputDevices/internalDeviceSourceManager.js +1 -0
- package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/InputDevices/webDeviceInputSystem.js +22 -18
- package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +1 -1
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiview.d.ts +5 -0
- package/Engines/Extensions/engine.multiview.js +4 -1
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -0
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js +1 -1
- package/Engines/Processors/Expressions/shaderDefineExpression.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +13 -13
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +9 -9
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +13 -13
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +30 -30
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +4 -4
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/engine.d.ts +1 -1
- package/Engines/engine.js +1 -1
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -0
- package/Engines/nativeEngine.js +36 -11
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +1 -1
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.js +8 -8
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +4 -4
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gamepads/Controllers/daydreamController.js +1 -1
- package/Gamepads/Controllers/daydreamController.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/gizmoManager.d.ts +2 -0
- package/Gizmos/gizmoManager.js +28 -24
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +2 -2
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/layer.d.ts +2 -2
- package/Layers/layer.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +2 -2
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +2 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +78 -27
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/loadingScreen.js +8 -8
- package/Loading/loadingScreen.js.map +1 -1
- package/Loading/sceneLoader.js +3 -3
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +37 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +117 -0
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -0
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +12 -12
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +5 -5
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +11 -11
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/index.d.ts +1 -0
- package/Materials/Node/Blocks/Dual/index.js +1 -0
- package/Materials/Node/Blocks/Dual/index.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +10 -10
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +26 -26
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +7 -7
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +30 -30
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +10 -10
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +7 -7
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +12 -12
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +7 -7
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/twirlBlock.js +4 -4
- package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.d.ts +2 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +29 -24
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +5 -5
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +5 -5
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +33 -33
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +11 -11
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +11 -11
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +3 -3
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js +1 -1
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js +1 -1
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +7 -7
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +5 -5
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +16 -16
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +1 -1
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/addBlock.js +1 -1
- package/Materials/Node/Blocks/addBlock.js.map +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js +1 -1
- package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.js +3 -3
- package/Materials/Node/Blocks/clampBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +7 -7
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +8 -8
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorSplitterBlock.js +5 -5
- package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.js +10 -10
- package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
- package/Materials/Node/Blocks/crossBlock.js +1 -1
- package/Materials/Node/Blocks/crossBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +1 -1
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/desaturateBlock.js +4 -4
- package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
- package/Materials/Node/Blocks/distanceBlock.js +1 -1
- package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
- package/Materials/Node/Blocks/divideBlock.js +1 -1
- package/Materials/Node/Blocks/divideBlock.js.map +1 -1
- package/Materials/Node/Blocks/dotBlock.js +1 -1
- package/Materials/Node/Blocks/dotBlock.js.map +1 -1
- package/Materials/Node/Blocks/elbowBlock.d.ts +27 -0
- package/Materials/Node/Blocks/elbowBlock.js +60 -0
- package/Materials/Node/Blocks/elbowBlock.js.map +1 -0
- package/Materials/Node/Blocks/fresnelBlock.js +2 -2
- package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +8 -8
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.d.ts +1 -0
- package/Materials/Node/Blocks/index.js +1 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/Blocks/lengthBlock.js +1 -1
- package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
- package/Materials/Node/Blocks/lerpBlock.js +1 -1
- package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -1
- package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
- package/Materials/Node/Blocks/maxBlock.js +1 -1
- package/Materials/Node/Blocks/maxBlock.js.map +1 -1
- package/Materials/Node/Blocks/minBlock.js +1 -1
- package/Materials/Node/Blocks/minBlock.js.map +1 -1
- package/Materials/Node/Blocks/modBlock.js +1 -1
- package/Materials/Node/Blocks/modBlock.js.map +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js +1 -1
- package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js +1 -1
- package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
- package/Materials/Node/Blocks/negateBlock.js +1 -1
- package/Materials/Node/Blocks/negateBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalBlendBlock.js +5 -5
- package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js +1 -1
- package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js +1 -1
- package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js +1 -1
- package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.js +1 -1
- package/Materials/Node/Blocks/powBlock.js.map +1 -1
- package/Materials/Node/Blocks/randomNumberBlock.js +2 -2
- package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js +1 -1
- package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
- package/Materials/Node/Blocks/reflectBlock.js +1 -1
- package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
- package/Materials/Node/Blocks/refractBlock.js +1 -1
- package/Materials/Node/Blocks/refractBlock.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.js +3 -3
- package/Materials/Node/Blocks/remapBlock.js.map +1 -1
- package/Materials/Node/Blocks/replaceColorBlock.js +3 -3
- package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js +1 -1
- package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
- package/Materials/Node/Blocks/scaleBlock.js +1 -1
- package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -1
- package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js +1 -1
- package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
- package/Materials/Node/Blocks/stepBlock.js +1 -1
- package/Materials/Node/Blocks/stepBlock.js.map +1 -1
- package/Materials/Node/Blocks/subtractBlock.js +1 -1
- package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.js +13 -13
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.js +2 -2
- package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +22 -22
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorSplitterBlock.js +8 -8
- package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js +1 -1
- package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/voronoiNoiseBlock.js +5 -5
- package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.js +3 -3
- package/Materials/Node/Blocks/waveBlock.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.js +5 -5
- package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
- package/Materials/Node/Enums/nodeMaterialSystemValues.d.ts +3 -1
- package/Materials/Node/Enums/nodeMaterialSystemValues.js +2 -0
- package/Materials/Node/Enums/nodeMaterialSystemValues.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +4 -0
- package/Materials/Node/nodeMaterial.js +20 -10
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +12 -12
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +24 -24
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +2 -2
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +1 -2
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
- package/Materials/Textures/MultiviewRenderTarget.js +10 -2
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
- package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +2 -2
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +1 -0
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/effect.js +3 -3
- package/Materials/effect.js.map +1 -1
- package/Materials/material.d.ts +2 -0
- package/Materials/material.js +4 -1
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.js +1 -1
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginManager.js +3 -3
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/multiMaterial.d.ts +2 -0
- package/Materials/multiMaterial.js +12 -10
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shaderMaterial.js +1 -1
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +1 -1
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.d.ts +0 -5
- package/Materials/standardMaterial.js +1 -10
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/math.size.js +1 -1
- package/Maths/math.size.js.map +1 -1
- package/Maths/math.vector.js +4 -4
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/cylinderBuilder.d.ts +1 -1
- package/Meshes/Builders/cylinderBuilder.js +1 -1
- package/Meshes/Builders/cylinderBuilder.js.map +1 -1
- package/Meshes/Builders/linesBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompression.d.ts +3 -0
- package/Meshes/Compression/dracoCompression.js +23 -7
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +2 -0
- package/Meshes/abstractMesh.js +2 -0
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/mesh.js +8 -6
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.lts.d.ts +1 -1
- package/Meshes/mesh.lts.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +1 -1
- package/Meshes/mesh.vertexData.js +2 -2
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +6 -6
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/assetsManager.d.ts +1 -0
- package/Misc/assetsManager.js +13 -0
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basis.js +1 -1
- package/Misc/basis.js.map +1 -1
- package/Misc/devTools.js +1 -1
- package/Misc/devTools.js.map +1 -1
- package/Misc/environmentTextureTools.js +2 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.js +3 -3
- package/Misc/fileTools.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +4 -3
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/reflector.js +6 -6
- package/Misc/reflector.js.map +1 -1
- package/Misc/tools.js +15 -13
- package/Misc/tools.js.map +1 -1
- package/Misc/uniqueIdGenerator.js +1 -1
- package/Misc/uniqueIdGenerator.js.map +1 -1
- package/Offline/database.js +1 -1
- package/Offline/database.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +4 -1
- package/Particles/baseParticleSystem.js +20 -5
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/particleHelper.js +2 -2
- package/Particles/particleHelper.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.js +4 -4
- package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/physicsImpostor.d.ts +2 -2
- package/Physics/physicsImpostor.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +5 -5
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +1 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +2 -2
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/Probes/reflectionProbe.js +2 -2
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +3 -3
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +8 -8
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +1 -1
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +4 -0
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
- package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
- package/Sprites/spriteManager.js +5 -6
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteMap.js +2 -2
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spriteRenderer.js +1 -1
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.js +1 -1
- package/XR/features/WebXRDOMOverlay.js.map +1 -1
- package/XR/features/WebXRHandTracking.js +27 -27
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRImageTracking.js +2 -2
- package/XR/features/WebXRImageTracking.js.map +1 -1
- package/XR/features/WebXRLayers.d.ts +28 -5
- package/XR/features/WebXRLayers.js +54 -20
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRNearInteraction.d.ts +35 -3
- package/XR/features/WebXRNearInteraction.js +201 -40
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.js +1 -1
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/motionController/webXRMotionControllerManager.js +2 -2
- package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
- package/XR/motionController/webXRProfiledMotionController.js +1 -1
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.js +17 -4
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXREnterExitUI.js +2 -2
- package/XR/webXREnterExitUI.js.map +1 -1
- package/XR/webXRFeaturesManager.js +6 -6
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRInputSource.js +3 -3
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +3 -2
- package/XR/webXRRenderTargetTextureProvider.js +37 -18
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/node.d.ts +1 -1
- package/node.js.map +1 -1
- package/package.json +7 -1
- package/scene.d.ts +3 -1
- package/scene.js +28 -4
- package/scene.js.map +1 -1
|
@@ -48,7 +48,7 @@ var DaydreamController = /** @class */ (function (_super) {
|
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
// If the app or home buttons are ever made available
|
|
51
|
-
Logger.Warn("Unrecognized Daydream button index: "
|
|
51
|
+
Logger.Warn("Unrecognized Daydream button index: ".concat(buttonIdx));
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daydreamController.js","sourceRoot":"","sources":["../../../../sourceES6/core/Gamepads/Controllers/daydreamController.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAyB,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAExH;;GAEG;AACH;IAAwC,sCAAe;IAgBnD;;;OAGG;IACH,4BAAY,SAAc;QAA1B,YACI,kBAAM,SAAS,CAAC,SAEnB;QADG,KAAI,CAAC,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC;;IAC7D,CAAC;IAED;;;;OAIG;IACI,+CAAkB,GAAzB,UAA0B,KAAY,EAAE,UAAyC;QAAjF,iBASC;QARG,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,UAAC,SAAS;YAC9G,KAAI,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;YAEtC,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACO,gDAAmB,GAA7B,UAA8B,SAAiB,EAAE,KAA4B,EAAE,OAA6B;QACxG,kEAAkE;QAClE,IAAI,SAAS,KAAK,CAAC,EAAE;YACjB,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC;YACtD,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACrC;SACJ;aAAM;YACH,qDAAqD;YACrD,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"daydreamController.js","sourceRoot":"","sources":["../../../../sourceES6/core/Gamepads/Controllers/daydreamController.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAyB,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAExH;;GAEG;AACH;IAAwC,sCAAe;IAgBnD;;;OAGG;IACH,4BAAY,SAAc;QAA1B,YACI,kBAAM,SAAS,CAAC,SAEnB;QADG,KAAI,CAAC,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC;;IAC7D,CAAC;IAED;;;;OAIG;IACI,+CAAkB,GAAzB,UAA0B,KAAY,EAAE,UAAyC;QAAjF,iBASC;QARG,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,UAAC,SAAS;YAC9G,KAAI,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;YAEtC,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACO,gDAAmB,GAA7B,UAA8B,SAAiB,EAAE,KAA4B,EAAE,OAA6B;QACxG,kEAAkE;QAClE,IAAI,SAAS,KAAK,CAAC,EAAE;YACjB,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC;YACtD,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACrC;SACJ;aAAM;YACH,qDAAqD;YACrD,MAAM,CAAC,IAAI,CAAC,8CAAuC,SAAS,CAAE,CAAC,CAAC;SACnE;IACL,CAAC;IAzDD;;OAEG;IACW,iCAAc,GAAW,4CAA4C,CAAC;IAEpF;;OAEG;IACW,iCAAc,GAAW,iBAAiB,CAAC;IAEzD;;OAEG;IACoB,oCAAiB,GAAW,UAAU,CAAC,CAAC,8BAA8B;IA6CjG,yBAAC;CAAA,AA3DD,CAAwC,eAAe,GA2DtD;SA3DY,kBAAkB;AA6D/B,2BAA2B,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAClD,SAAS,EAAE,UAAC,WAAW;QACnB,OAAO,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,EAAE,UAAC,WAAW;QAChB,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;CACJ,CAAC,CAAC","sourcesContent":["import { Logger } from \"../../Misc/logger\";\r\nimport { Scene } from \"../../scene\";\r\nimport { AbstractMesh } from \"../../Meshes/abstractMesh\";\r\nimport { SceneLoader } from \"../../Loading/sceneLoader\";\r\n\r\nimport { GamepadButtonChanges } from \"../../Gamepads/gamepad\";\r\nimport { WebVRController } from \"./webVRController\";\r\nimport { PoseEnabledControllerType, ExtendedGamepadButton, PoseEnabledControllerHelper } from \"./poseEnabledController\";\r\n\r\n/**\r\n * Google Daydream controller\r\n */\r\nexport class DaydreamController extends WebVRController {\r\n /**\r\n * Base Url for the controller model.\r\n */\r\n public static MODEL_BASE_URL: string = 'https://controllers.babylonjs.com/generic/';\r\n\r\n /**\r\n * File name for the controller model.\r\n */\r\n public static MODEL_FILENAME: string = 'generic.babylon';\r\n\r\n /**\r\n * Gamepad Id prefix used to identify Daydream Controller.\r\n */\r\n public static readonly GAMEPAD_ID_PREFIX: string = 'Daydream'; // id is 'Daydream Controller'\r\n\r\n /**\r\n * Creates a new DaydreamController from a gamepad\r\n * @param vrGamepad the gamepad that the controller should be created from\r\n */\r\n constructor(vrGamepad: any) {\r\n super(vrGamepad);\r\n this.controllerType = PoseEnabledControllerType.DAYDREAM;\r\n }\r\n\r\n /**\r\n * Implements abstract method on WebVRController class, loading controller meshes and calling this.attachToMesh if successful.\r\n * @param scene scene in which to add meshes\r\n * @param meshLoaded optional callback function that will be called if the mesh loads successfully.\r\n */\r\n public initControllerMesh(scene: Scene, meshLoaded?: (mesh: AbstractMesh) => void) {\r\n SceneLoader.ImportMesh(\"\", DaydreamController.MODEL_BASE_URL, DaydreamController.MODEL_FILENAME, scene, (newMeshes) => {\r\n this._defaultModel = newMeshes[1];\r\n this.attachToMesh(this._defaultModel);\r\n\r\n if (meshLoaded) {\r\n meshLoaded(this._defaultModel);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Called once for each button that changed state since the last frame\r\n * @param buttonIdx Which button index changed\r\n * @param state New state of the button\r\n * @param changes Which properties on the state changed since last frame\r\n */\r\n protected _handleButtonChange(buttonIdx: number, state: ExtendedGamepadButton, changes: GamepadButtonChanges) {\r\n // Daydream controller only has 1 GamepadButton (on the trackpad).\r\n if (buttonIdx === 0) {\r\n let observable = this.onTriggerStateChangedObservable;\r\n if (observable) {\r\n observable.notifyObservers(state);\r\n }\r\n } else {\r\n // If the app or home buttons are ever made available\r\n Logger.Warn(`Unrecognized Daydream button index: ${buttonIdx}`);\r\n }\r\n }\r\n}\r\n\r\nPoseEnabledControllerHelper._ControllerFactories.push({\r\n canCreate: (gamepadInfo) => {\r\n return gamepadInfo.id.indexOf(DaydreamController.GAMEPAD_ID_PREFIX) === 0;\r\n },\r\n create: (gamepadInfo) => {\r\n return new DaydreamController(gamepadInfo);\r\n }\r\n});"]}
|
|
@@ -193,7 +193,7 @@ var GamepadManager = /** @class */ (function () {
|
|
|
193
193
|
}
|
|
194
194
|
catch (_a) {
|
|
195
195
|
if (this._loggedErrors.indexOf(gamepad.index) === -1) {
|
|
196
|
-
Tools.Warn("Error updating gamepad "
|
|
196
|
+
Tools.Warn("Error updating gamepad ".concat(gamepad.id));
|
|
197
197
|
this._loggedErrors.push(gamepad.index);
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gamepadManager.js","sourceRoot":"","sources":["../../../sourceES6/core/Gamepads/gamepadManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC;;GAEG;AACH;IAsBI;;;OAGG;IACH,wBAAoB,MAAc;QAAlC,iBA4EC;QA5EmB,WAAM,GAAN,MAAM,CAAQ;QAzB1B,qBAAgB,GAAmB,EAAE,CAAC;QACtC,yBAAoB,GAAY,KAAK,CAAC;QAE9C,cAAc;QACP,kBAAa,GAAY,KAAK,CAAC;QAStC;;WAEG;QACI,oCAA+B,GAAG,IAAI,UAAU,EAAW,CAAC;QAU/D,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACxB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACvC;aAAM;YACH,IAAI,CAAC,sBAAsB,GAAG,cAAc,IAAI,MAAM,CAAC;YACvD,IAAI,CAAC,eAAe,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW;gBACtD,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;SAC3F;QAED,IAAI,CAAC,4BAA4B,GAAG,IAAI,UAAU,CAAU,UAAC,QAAQ;YACjE,uFAAuF;YACvF,KAAK,IAAI,CAAC,IAAI,KAAI,CAAC,gBAAgB,EAAE;gBACjC,IAAI,OAAO,GAAG,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE;oBACjC,KAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;iBACvE;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,GAAG,UAAC,GAAG;YAChC,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAE1B,IAAI,OAAO,CAAC,KAAK,IAAI,KAAI,CAAC,gBAAgB,EAAE;gBACxC,IAAI,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;oBAClD,OAAO;iBACV;aACJ;YAED,IAAI,UAAmB,CAAC;YAExB,IAAI,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtC,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClD,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC;gBACpC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;aAClC;iBAAM;gBACH,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC7C;YACD,KAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC9D,KAAI,CAAC,wBAAwB,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC,2BAA2B,GAAG,UAAC,GAAG;YACnC,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAE1B,2DAA2D;YAC3D,KAAK,IAAI,CAAC,IAAI,KAAI,CAAC,gBAAgB,EAAE;gBACjC,IAAI,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;oBAClD,IAAI,mBAAmB,GAAG,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACnD,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC;oBAEzC,KAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;oBAC1E,mBAAmB,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;oBAC7D,MAAM;iBACT;aACJ;QACL,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,sCAAsC;YACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;YACD,yEAAyE;YACzE,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAEhF,IAAI,UAAU,EAAE;oBACZ,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBACtF,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;iBAC/F;aACJ;iBACI;gBACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;SACJ;IACL,CAAC;IAKD,sBAAW,oCAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;;;OAAA;IAED;;;;OAIG;IACI,yCAAgB,GAAvB,UAAwB,IAA2B;QAA3B,qBAAA,EAAA,OAAe,OAAO,CAAC,IAAI;QAC/C,KAAoB,UAAqB,EAArB,KAAA,IAAI,CAAC,gBAAgB,EAArB,cAAqB,EAArB,IAAqB,EAAE;YAAtC,IAAI,OAAO,SAAA;YACZ,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBAClC,OAAO,OAAO,CAAC;aAClB;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,gCAAO,GAAd;QACI,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;aACjF;YAED,IAAI,IAAI,CAAC,2BAA2B,EAAE;gBAClC,MAAM,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;aACvF;YACD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;SAC3C;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,OAAO;YAClC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,uCAAc,GAAtB,UAAuB,OAAY;QAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACpC;QAED,IAAI,UAAU,CAAC;QACf,IAAI,SAAS,GAAY,CAAU,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAa,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpH,IAAI,OAAO,GAAY,CAAU,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,OAAO,IAAa,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;eAC7C,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;eAC5C,CAAU,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAa,OAAO,CAAC,EAAG,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,4EAA4E;YACrL,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC5E;aACI,IAAI,SAAS,EAAE;YAChB,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACrE;QACD,gEAAgE;aAC3D,IAAI,OAAO,CAAC,IAAI,EAAE;YACnB,UAAU,GAAG,2BAA2B,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SACxE;aACI;YACD,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QACrD,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,iDAAwB,GAAhC;QACI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,WAAW;YACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;SACJ;IACL,CAAC;IAEO,gDAAuB,GAA/B;QACI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAID,cAAc;IACP,6CAAoB,GAA3B;QAAA,iBAsBC;QArBG,+BAA+B;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACjC,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBAClC,SAAS;aACZ;YACD,IAAI;gBACA,OAAO,CAAC,MAAM,EAAE,CAAC;aACpB;YAAC,WAAM;gBACJ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBAClD,KAAK,CAAC,IAAI,CAAC,4BAA0B,OAAO,CAAC,EAAI,CAAC,CAAC;oBACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC1C;aACJ;SACJ;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpC,MAAM,CAAC,aAAa,CAAC,cAAQ,KAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;IACL,CAAC;IAED,0EAA0E;IAC1E,oFAAoF;IAC5E,8CAAqB,GAA7B;QACI,IAAI,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvC,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC9C,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;iBACjE;qBACI;oBACD,iEAAiE;oBACjE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,OAAO,CAAC;oBAElD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;wBACvC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;wBAC7C,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC/E;iBACJ;aACJ;SACJ;IACL,CAAC;IACL,qBAAC;AAAD,CAAC,AArPD,IAqPC","sourcesContent":["import { Observable } from \"../Misc/observable\";\r\nimport { IsWindowObjectExist } from \"../Misc/domManagement\";\r\nimport { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { PoseEnabledControllerHelper } from \"../Gamepads/Controllers/poseEnabledController\";\r\nimport { Xbox360Pad } from \"./xboxGamepad\";\r\nimport { Gamepad, GenericPad } from \"./gamepad\";\r\nimport { Engine } from '../Engines/engine';\r\nimport { DualShockPad } from './dualShockGamepad';\r\nimport { Tools } from \"../Misc/tools\";\r\n/**\r\n * Manager for handling gamepads\r\n */\r\nexport class GamepadManager {\r\n private _babylonGamepads: Array<Gamepad> = [];\r\n private _oneGamepadConnected: boolean = false;\r\n\r\n /** @hidden */\r\n public _isMonitoring: boolean = false;\r\n private _gamepadEventSupported: boolean;\r\n private _gamepadSupport?: () => Array<any>;\r\n\r\n /**\r\n * observable to be triggered when the gamepad controller has been connected\r\n */\r\n public onGamepadConnectedObservable: Observable<Gamepad>;\r\n\r\n /**\r\n * observable to be triggered when the gamepad controller has been disconnected\r\n */\r\n public onGamepadDisconnectedObservable = new Observable<Gamepad>();\r\n\r\n private _onGamepadConnectedEvent: Nullable<(evt: any) => void>;\r\n private _onGamepadDisconnectedEvent: Nullable<(evt: any) => void>;\r\n\r\n /**\r\n * Initializes the gamepad manager\r\n * @param _scene BabylonJS scene\r\n */\r\n constructor(private _scene?: Scene) {\r\n if (!IsWindowObjectExist()) {\r\n this._gamepadEventSupported = false;\r\n } else {\r\n this._gamepadEventSupported = 'GamepadEvent' in window;\r\n this._gamepadSupport = navigator && (navigator.getGamepads ||\r\n navigator.webkitGetGamepads || navigator.msGetGamepads || navigator.webkitGamepads);\r\n }\r\n\r\n this.onGamepadConnectedObservable = new Observable<Gamepad>((observer) => {\r\n // This will be used to raise the onGamepadConnected for all gamepads ALREADY connected\r\n for (var i in this._babylonGamepads) {\r\n let gamepad = this._babylonGamepads[i];\r\n if (gamepad && gamepad._isConnected) {\r\n this.onGamepadConnectedObservable.notifyObserver(observer, gamepad);\r\n }\r\n }\r\n });\r\n\r\n this._onGamepadConnectedEvent = (evt) => {\r\n let gamepad = evt.gamepad;\r\n\r\n if (gamepad.index in this._babylonGamepads) {\r\n if (this._babylonGamepads[gamepad.index].isConnected) {\r\n return;\r\n }\r\n }\r\n\r\n let newGamepad: Gamepad;\r\n\r\n if (this._babylonGamepads[gamepad.index]) {\r\n newGamepad = this._babylonGamepads[gamepad.index];\r\n newGamepad.browserGamepad = gamepad;\r\n newGamepad._isConnected = true;\r\n } else {\r\n newGamepad = this._addNewGamepad(gamepad);\r\n }\r\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\r\n this._startMonitoringGamepads();\r\n };\r\n\r\n this._onGamepadDisconnectedEvent = (evt) => {\r\n let gamepad = evt.gamepad;\r\n\r\n // Remove the gamepad from the list of gamepads to monitor.\r\n for (var i in this._babylonGamepads) {\r\n if (this._babylonGamepads[i].index === gamepad.index) {\r\n let disconnectedGamepad = this._babylonGamepads[i];\r\n disconnectedGamepad._isConnected = false;\r\n\r\n this.onGamepadDisconnectedObservable.notifyObservers(disconnectedGamepad);\r\n disconnectedGamepad.dispose && disconnectedGamepad.dispose();\r\n break;\r\n }\r\n }\r\n };\r\n\r\n if (this._gamepadSupport) {\r\n //first add already-connected gamepads\r\n this._updateGamepadObjects();\r\n if (this._babylonGamepads.length) {\r\n this._startMonitoringGamepads();\r\n }\r\n // Checking if the gamepad connected event is supported (like in Firefox)\r\n if (this._gamepadEventSupported) {\r\n let hostWindow = this._scene ? this._scene.getEngine().getHostWindow() : window;\r\n\r\n if (hostWindow) {\r\n hostWindow.addEventListener('gamepadconnected', this._onGamepadConnectedEvent, false);\r\n hostWindow.addEventListener('gamepaddisconnected', this._onGamepadDisconnectedEvent, false);\r\n }\r\n }\r\n else {\r\n this._startMonitoringGamepads();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The gamepads in the game pad manager\r\n */\r\n public get gamepads(): Gamepad[] {\r\n return this._babylonGamepads;\r\n }\r\n\r\n /**\r\n * Get the gamepad controllers based on type\r\n * @param type The type of gamepad controller\r\n * @returns Nullable gamepad\r\n */\r\n public getGamepadByType(type: number = Gamepad.XBOX): Nullable<Gamepad> {\r\n for (var gamepad of this._babylonGamepads) {\r\n if (gamepad && gamepad.type === type) {\r\n return gamepad;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Disposes the gamepad manager\r\n */\r\n public dispose() {\r\n if (this._gamepadEventSupported) {\r\n if (this._onGamepadConnectedEvent) {\r\n window.removeEventListener('gamepadconnected', this._onGamepadConnectedEvent);\r\n }\r\n\r\n if (this._onGamepadDisconnectedEvent) {\r\n window.removeEventListener('gamepaddisconnected', this._onGamepadDisconnectedEvent);\r\n }\r\n this._onGamepadConnectedEvent = null;\r\n this._onGamepadDisconnectedEvent = null;\r\n }\r\n\r\n this._babylonGamepads.forEach((gamepad) => {\r\n gamepad.dispose();\r\n });\r\n\r\n this.onGamepadConnectedObservable.clear();\r\n this.onGamepadDisconnectedObservable.clear();\r\n\r\n this._oneGamepadConnected = false;\r\n this._stopMonitoringGamepads();\r\n this._babylonGamepads = [];\r\n }\r\n\r\n private _addNewGamepad(gamepad: any): Gamepad {\r\n if (!this._oneGamepadConnected) {\r\n this._oneGamepadConnected = true;\r\n }\r\n\r\n var newGamepad;\r\n var dualShock: boolean = ((<string>gamepad.id).search(\"054c\") !== -1 && (<string>gamepad.id).search(\"0ce6\") === -1);\r\n var xboxOne: boolean = ((<string>gamepad.id).search(\"Xbox One\") !== -1);\r\n if (xboxOne || (<string>gamepad.id).search(\"Xbox 360\") !== -1\r\n || (<string>gamepad.id).search(\"xinput\") !== -1\r\n || ((<string>gamepad.id).search(\"045e\") !== -1 && (<string>gamepad.id).search(\"Surface Dock\") === -1)) { // make sure the Surface Dock Extender is not detected as an xbox controller\r\n newGamepad = new Xbox360Pad(gamepad.id, gamepad.index, gamepad, xboxOne);\r\n }\r\n else if (dualShock) {\r\n newGamepad = new DualShockPad(gamepad.id, gamepad.index, gamepad);\r\n }\r\n // if pose is supported, use the (WebVR) pose enabled controller\r\n else if (gamepad.pose) {\r\n newGamepad = PoseEnabledControllerHelper.InitiateController(gamepad);\r\n }\r\n else {\r\n newGamepad = new GenericPad(gamepad.id, gamepad.index, gamepad);\r\n }\r\n this._babylonGamepads[newGamepad.index] = newGamepad;\r\n return newGamepad;\r\n }\r\n\r\n private _startMonitoringGamepads() {\r\n if (!this._isMonitoring) {\r\n this._isMonitoring = true;\r\n //back-comp\r\n if (!this._scene) {\r\n this._checkGamepadsStatus();\r\n }\r\n }\r\n }\r\n\r\n private _stopMonitoringGamepads() {\r\n this._isMonitoring = false;\r\n }\r\n\r\n private _loggedErrors: number[];\r\n\r\n /** @hidden */\r\n public _checkGamepadsStatus() {\r\n // Hack to be compatible Chrome\r\n this._updateGamepadObjects();\r\n\r\n for (var i in this._babylonGamepads) {\r\n let gamepad = this._babylonGamepads[i];\r\n if (!gamepad || !gamepad.isConnected) {\r\n continue;\r\n }\r\n try {\r\n gamepad.update();\r\n } catch {\r\n if (this._loggedErrors.indexOf(gamepad.index) === -1) {\r\n Tools.Warn(`Error updating gamepad ${gamepad.id}`);\r\n this._loggedErrors.push(gamepad.index);\r\n }\r\n }\r\n }\r\n\r\n if (this._isMonitoring && !this._scene) {\r\n Engine.QueueNewFrame(() => { this._checkGamepadsStatus(); });\r\n }\r\n }\r\n\r\n // This function is called only on Chrome, which does not properly support\r\n // connection/disconnection events and forces you to recopy again the gamepad object\r\n private _updateGamepadObjects() {\r\n var gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r\n for (var i = 0; i < gamepads.length; i++) {\r\n let gamepad = gamepads[i];\r\n if (gamepad) {\r\n if (!this._babylonGamepads[gamepad.index]) {\r\n var newGamepad = this._addNewGamepad(gamepad);\r\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\r\n }\r\n else {\r\n // Forced to copy again this object for Chrome for unknown reason\r\n this._babylonGamepads[i].browserGamepad = gamepad;\r\n\r\n if (!this._babylonGamepads[i].isConnected) {\r\n this._babylonGamepads[i]._isConnected = true;\r\n this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"gamepadManager.js","sourceRoot":"","sources":["../../../sourceES6/core/Gamepads/gamepadManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../Misc/observable\";\r\nimport { IsWindowObjectExist } from \"../Misc/domManagement\";\r\nimport { Nullable } from \"../types\";\r\nimport { Scene } from \"../scene\";\r\nimport { PoseEnabledControllerHelper } from \"../Gamepads/Controllers/poseEnabledController\";\r\nimport { Xbox360Pad } from \"./xboxGamepad\";\r\nimport { Gamepad, GenericPad } from \"./gamepad\";\r\nimport { Engine } from '../Engines/engine';\r\nimport { DualShockPad } from './dualShockGamepad';\r\nimport { Tools } from \"../Misc/tools\";\r\n/**\r\n * Manager for handling gamepads\r\n */\r\nexport class GamepadManager {\r\n private _babylonGamepads: Array<Gamepad> = [];\r\n private _oneGamepadConnected: boolean = false;\r\n\r\n /** @hidden */\r\n public _isMonitoring: boolean = false;\r\n private _gamepadEventSupported: boolean;\r\n private _gamepadSupport?: () => Array<any>;\r\n\r\n /**\r\n * observable to be triggered when the gamepad controller has been connected\r\n */\r\n public onGamepadConnectedObservable: Observable<Gamepad>;\r\n\r\n /**\r\n * observable to be triggered when the gamepad controller has been disconnected\r\n */\r\n public onGamepadDisconnectedObservable = new Observable<Gamepad>();\r\n\r\n private _onGamepadConnectedEvent: Nullable<(evt: any) => void>;\r\n private _onGamepadDisconnectedEvent: Nullable<(evt: any) => void>;\r\n\r\n /**\r\n * Initializes the gamepad manager\r\n * @param _scene BabylonJS scene\r\n */\r\n constructor(private _scene?: Scene) {\r\n if (!IsWindowObjectExist()) {\r\n this._gamepadEventSupported = false;\r\n } else {\r\n this._gamepadEventSupported = 'GamepadEvent' in window;\r\n this._gamepadSupport = navigator && (navigator.getGamepads ||\r\n navigator.webkitGetGamepads || navigator.msGetGamepads || navigator.webkitGamepads);\r\n }\r\n\r\n this.onGamepadConnectedObservable = new Observable<Gamepad>((observer) => {\r\n // This will be used to raise the onGamepadConnected for all gamepads ALREADY connected\r\n for (var i in this._babylonGamepads) {\r\n let gamepad = this._babylonGamepads[i];\r\n if (gamepad && gamepad._isConnected) {\r\n this.onGamepadConnectedObservable.notifyObserver(observer, gamepad);\r\n }\r\n }\r\n });\r\n\r\n this._onGamepadConnectedEvent = (evt) => {\r\n let gamepad = evt.gamepad;\r\n\r\n if (gamepad.index in this._babylonGamepads) {\r\n if (this._babylonGamepads[gamepad.index].isConnected) {\r\n return;\r\n }\r\n }\r\n\r\n let newGamepad: Gamepad;\r\n\r\n if (this._babylonGamepads[gamepad.index]) {\r\n newGamepad = this._babylonGamepads[gamepad.index];\r\n newGamepad.browserGamepad = gamepad;\r\n newGamepad._isConnected = true;\r\n } else {\r\n newGamepad = this._addNewGamepad(gamepad);\r\n }\r\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\r\n this._startMonitoringGamepads();\r\n };\r\n\r\n this._onGamepadDisconnectedEvent = (evt) => {\r\n let gamepad = evt.gamepad;\r\n\r\n // Remove the gamepad from the list of gamepads to monitor.\r\n for (var i in this._babylonGamepads) {\r\n if (this._babylonGamepads[i].index === gamepad.index) {\r\n let disconnectedGamepad = this._babylonGamepads[i];\r\n disconnectedGamepad._isConnected = false;\r\n\r\n this.onGamepadDisconnectedObservable.notifyObservers(disconnectedGamepad);\r\n disconnectedGamepad.dispose && disconnectedGamepad.dispose();\r\n break;\r\n }\r\n }\r\n };\r\n\r\n if (this._gamepadSupport) {\r\n //first add already-connected gamepads\r\n this._updateGamepadObjects();\r\n if (this._babylonGamepads.length) {\r\n this._startMonitoringGamepads();\r\n }\r\n // Checking if the gamepad connected event is supported (like in Firefox)\r\n if (this._gamepadEventSupported) {\r\n let hostWindow = this._scene ? this._scene.getEngine().getHostWindow() : window;\r\n\r\n if (hostWindow) {\r\n hostWindow.addEventListener('gamepadconnected', this._onGamepadConnectedEvent, false);\r\n hostWindow.addEventListener('gamepaddisconnected', this._onGamepadDisconnectedEvent, false);\r\n }\r\n }\r\n else {\r\n this._startMonitoringGamepads();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The gamepads in the game pad manager\r\n */\r\n public get gamepads(): Gamepad[] {\r\n return this._babylonGamepads;\r\n }\r\n\r\n /**\r\n * Get the gamepad controllers based on type\r\n * @param type The type of gamepad controller\r\n * @returns Nullable gamepad\r\n */\r\n public getGamepadByType(type: number = Gamepad.XBOX): Nullable<Gamepad> {\r\n for (var gamepad of this._babylonGamepads) {\r\n if (gamepad && gamepad.type === type) {\r\n return gamepad;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Disposes the gamepad manager\r\n */\r\n public dispose() {\r\n if (this._gamepadEventSupported) {\r\n if (this._onGamepadConnectedEvent) {\r\n window.removeEventListener('gamepadconnected', this._onGamepadConnectedEvent);\r\n }\r\n\r\n if (this._onGamepadDisconnectedEvent) {\r\n window.removeEventListener('gamepaddisconnected', this._onGamepadDisconnectedEvent);\r\n }\r\n this._onGamepadConnectedEvent = null;\r\n this._onGamepadDisconnectedEvent = null;\r\n }\r\n\r\n this._babylonGamepads.forEach((gamepad) => {\r\n gamepad.dispose();\r\n });\r\n\r\n this.onGamepadConnectedObservable.clear();\r\n this.onGamepadDisconnectedObservable.clear();\r\n\r\n this._oneGamepadConnected = false;\r\n this._stopMonitoringGamepads();\r\n this._babylonGamepads = [];\r\n }\r\n\r\n private _addNewGamepad(gamepad: any): Gamepad {\r\n if (!this._oneGamepadConnected) {\r\n this._oneGamepadConnected = true;\r\n }\r\n\r\n var newGamepad;\r\n var dualShock: boolean = ((<string>gamepad.id).search(\"054c\") !== -1 && (<string>gamepad.id).search(\"0ce6\") === -1);\r\n var xboxOne: boolean = ((<string>gamepad.id).search(\"Xbox One\") !== -1);\r\n if (xboxOne || (<string>gamepad.id).search(\"Xbox 360\") !== -1\r\n || (<string>gamepad.id).search(\"xinput\") !== -1\r\n || ((<string>gamepad.id).search(\"045e\") !== -1 && (<string>gamepad.id).search(\"Surface Dock\") === -1)) { // make sure the Surface Dock Extender is not detected as an xbox controller\r\n newGamepad = new Xbox360Pad(gamepad.id, gamepad.index, gamepad, xboxOne);\r\n }\r\n else if (dualShock) {\r\n newGamepad = new DualShockPad(gamepad.id, gamepad.index, gamepad);\r\n }\r\n // if pose is supported, use the (WebVR) pose enabled controller\r\n else if (gamepad.pose) {\r\n newGamepad = PoseEnabledControllerHelper.InitiateController(gamepad);\r\n }\r\n else {\r\n newGamepad = new GenericPad(gamepad.id, gamepad.index, gamepad);\r\n }\r\n this._babylonGamepads[newGamepad.index] = newGamepad;\r\n return newGamepad;\r\n }\r\n\r\n private _startMonitoringGamepads() {\r\n if (!this._isMonitoring) {\r\n this._isMonitoring = true;\r\n //back-comp\r\n if (!this._scene) {\r\n this._checkGamepadsStatus();\r\n }\r\n }\r\n }\r\n\r\n private _stopMonitoringGamepads() {\r\n this._isMonitoring = false;\r\n }\r\n\r\n private _loggedErrors: number[];\r\n\r\n /** @hidden */\r\n public _checkGamepadsStatus() {\r\n // Hack to be compatible Chrome\r\n this._updateGamepadObjects();\r\n\r\n for (var i in this._babylonGamepads) {\r\n let gamepad = this._babylonGamepads[i];\r\n if (!gamepad || !gamepad.isConnected) {\r\n continue;\r\n }\r\n try {\r\n gamepad.update();\r\n } catch {\r\n if (this._loggedErrors.indexOf(gamepad.index) === -1) {\r\n Tools.Warn(`Error updating gamepad ${gamepad.id}`);\r\n this._loggedErrors.push(gamepad.index);\r\n }\r\n }\r\n }\r\n\r\n if (this._isMonitoring && !this._scene) {\r\n Engine.QueueNewFrame(() => { this._checkGamepadsStatus(); });\r\n }\r\n }\r\n\r\n // This function is called only on Chrome, which does not properly support\r\n // connection/disconnection events and forces you to recopy again the gamepad object\r\n private _updateGamepadObjects() {\r\n var gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads() : []);\r\n for (var i = 0; i < gamepads.length; i++) {\r\n let gamepad = gamepads[i];\r\n if (gamepad) {\r\n if (!this._babylonGamepads[gamepad.index]) {\r\n var newGamepad = this._addNewGamepad(gamepad);\r\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\r\n }\r\n else {\r\n // Forced to copy again this object for Chrome for unknown reason\r\n this._babylonGamepads[i].browserGamepad = gamepad;\r\n\r\n if (!this._babylonGamepads[i].isConnected) {\r\n this._babylonGamepads[i]._isConnected = true;\r\n this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
package/Gizmos/gizmoManager.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export declare class GizmoManager implements IDisposable {
|
|
|
27
27
|
};
|
|
28
28
|
/** When true, the gizmo will be detached from the current object when a pointer down occurs with an empty picked mesh */
|
|
29
29
|
clearGizmoOnEmptyPointerEvent: boolean;
|
|
30
|
+
/** When true (default), picking to attach a new mesh is enabled. This works in sync with inspector autopicking. */
|
|
31
|
+
enableAutoPicking: boolean;
|
|
30
32
|
/** Fires an event when the manager is attached to a mesh */
|
|
31
33
|
onAttachedToMeshObservable: Observable<Nullable<AbstractMesh>>;
|
|
32
34
|
/** Fires an event when the manager is attached to a node */
|
package/Gizmos/gizmoManager.js
CHANGED
|
@@ -27,6 +27,8 @@ var GizmoManager = /** @class */ (function () {
|
|
|
27
27
|
this.scene = scene;
|
|
28
28
|
/** When true, the gizmo will be detached from the current object when a pointer down occurs with an empty picked mesh */
|
|
29
29
|
this.clearGizmoOnEmptyPointerEvent = false;
|
|
30
|
+
/** When true (default), picking to attach a new mesh is enabled. This works in sync with inspector autopicking. */
|
|
31
|
+
this.enableAutoPicking = true;
|
|
30
32
|
/** Fires an event when the manager is attached to a mesh */
|
|
31
33
|
this.onAttachedToMeshObservable = new Observable();
|
|
32
34
|
/** Fires an event when the manager is attached to a node */
|
|
@@ -134,34 +136,36 @@ var GizmoManager = /** @class */ (function () {
|
|
|
134
136
|
}
|
|
135
137
|
if (pointerInfo.type == PointerEventTypes.POINTERDOWN) {
|
|
136
138
|
if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
node
|
|
139
|
+
if (_this.enableAutoPicking) {
|
|
140
|
+
var node = pointerInfo.pickInfo.pickedMesh;
|
|
141
|
+
if (_this.attachableMeshes == null) {
|
|
142
|
+
// Attach to the most parent node
|
|
143
|
+
while (node && node.parent != null) {
|
|
144
|
+
node = node.parent;
|
|
145
|
+
}
|
|
142
146
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
else {
|
|
148
|
+
// Attach to the parent node that is an attachableMesh
|
|
149
|
+
var found = false;
|
|
150
|
+
_this.attachableMeshes.forEach(function (mesh) {
|
|
151
|
+
if (node && (node == mesh || node.isDescendantOf(mesh))) {
|
|
152
|
+
node = mesh;
|
|
153
|
+
found = true;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
if (!found) {
|
|
157
|
+
node = null;
|
|
151
158
|
}
|
|
152
|
-
});
|
|
153
|
-
if (!found) {
|
|
154
|
-
node = null;
|
|
155
159
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
+
if (node instanceof AbstractMesh) {
|
|
161
|
+
if (_this._attachedMesh != node) {
|
|
162
|
+
_this.attachToMesh(node);
|
|
163
|
+
}
|
|
160
164
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
else {
|
|
166
|
+
if (_this.clearGizmoOnEmptyPointerEvent) {
|
|
167
|
+
_this.attachToMesh(null);
|
|
168
|
+
}
|
|
165
169
|
}
|
|
166
170
|
}
|
|
167
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gizmoManager.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/gizmoManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\nimport { Nullable } from \"../types\";\nimport { PointerInfo, PointerEventTypes } from \"../Events/pointerEvents\";\nimport { Scene, IDisposable } from \"../scene\";\nimport { Node } from \"../node\";\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\nimport { Mesh } from '../Meshes/mesh';\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\nimport { Color3 } from '../Maths/math.color';\nimport { SixDofDragBehavior } from \"../Behaviors/Meshes/sixDofDragBehavior\";\nimport { Gizmo, GizmoAxisCache } from \"./gizmo\";\nimport { RotationGizmo } from \"./rotationGizmo\";\nimport { PositionGizmo } from \"./positionGizmo\";\nimport { ScaleGizmo } from \"./scaleGizmo\";\nimport { BoundingBoxGizmo } from \"./boundingBoxGizmo\";\n\n/**\n * Helps setup gizmo's in the scene to rotate/scale/position nodes\n */\nexport class GizmoManager implements IDisposable {\n /**\n * Gizmo's created by the gizmo manager, gizmo will be null until gizmo has been enabled for the first time\n */\n public gizmos: { positionGizmo: Nullable<PositionGizmo>, rotationGizmo: Nullable<RotationGizmo>, scaleGizmo: Nullable<ScaleGizmo>, boundingBoxGizmo: Nullable<BoundingBoxGizmo> };\n\n /** When true, the gizmo will be detached from the current object when a pointer down occurs with an empty picked mesh */\n public clearGizmoOnEmptyPointerEvent = false;\n\n /** Fires an event when the manager is attached to a mesh */\n public onAttachedToMeshObservable = new Observable<Nullable<AbstractMesh>>();\n\n /** Fires an event when the manager is attached to a node */\n public onAttachedToNodeObservable = new Observable<Nullable<Node>>();\n\n private _gizmosEnabled = { positionGizmo: false, rotationGizmo: false, scaleGizmo: false, boundingBoxGizmo: false };\n private _pointerObservers: Observer<PointerInfo>[] = [];\n private _attachedMesh: Nullable<AbstractMesh> = null;\n private _attachedNode: Nullable<Node> = null;\n private _boundingBoxColor = Color3.FromHexString(\"#0984e3\");\n private _defaultUtilityLayer: UtilityLayerRenderer;\n private _defaultKeepDepthUtilityLayer: UtilityLayerRenderer;\n private _thickness: number = 1;\n private _scaleRatio: number = 1;\n\n /** Node Caching for quick lookup */\n private _gizmoAxisCache: Map<Mesh, GizmoAxisCache> = new Map();\n /**\n * When bounding box gizmo is enabled, this can be used to track drag/end events\n */\n public boundingBoxDragBehavior = new SixDofDragBehavior();\n /**\n * Array of meshes which will have the gizmo attached when a pointer selected them. If null, all meshes are attachable. (Default: null)\n */\n public attachableMeshes: Nullable<Array<AbstractMesh>> = null;\n /**\n * Array of nodes which will have the gizmo attached when a pointer selected them. If null, all nodes are attachable. (Default: null)\n */\n public attachableNodes: Nullable<Array<Node>> = null;\n /**\n * If pointer events should perform attaching/detaching a gizmo, if false this can be done manually via attachToMesh/attachToNode. (Default: true)\n */\n public usePointerToAttachGizmos = true;\n\n /**\n * Utility layer that the bounding box gizmo belongs to\n */\n public get keepDepthUtilityLayer() {\n return this._defaultKeepDepthUtilityLayer;\n }\n\n /**\n * Utility layer that all gizmos besides bounding box belong to\n */\n public get utilityLayer() {\n return this._defaultUtilityLayer;\n }\n\n /**\n * True when the mouse pointer is hovering a gizmo mesh\n */\n public get isHovered() {\n var hovered = false;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && gizmo.isHovered) {\n hovered = true;\n break;\n }\n }\n return hovered;\n }\n\n /**\n * Ratio for the scale of the gizmo (Default: 1)\n */\n public set scaleRatio(value: number) {\n this._scaleRatio = value;\n [this.gizmos.positionGizmo, this.gizmos.rotationGizmo, this.gizmos.scaleGizmo].forEach((gizmo) => {\n if (gizmo) {\n gizmo.scaleRatio = value;\n }\n });\n }\n public get scaleRatio() {\n return this._scaleRatio;\n }\n\n /**\n * Instantiates a gizmo manager\n * @param scene the scene to overlay the gizmos on top of\n * @param thickness display gizmo axis thickness\n * @param utilityLayer the layer where gizmos are rendered\n * @param keepDepthUtilityLayer the layer where occluded gizmos are rendered\n */\n constructor(private scene: Scene, thickness: number = 1, utilityLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultUtilityLayer, keepDepthUtilityLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultKeepDepthUtilityLayer) {\n this._defaultUtilityLayer = utilityLayer;\n this._defaultKeepDepthUtilityLayer = keepDepthUtilityLayer;\n this._defaultKeepDepthUtilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\n this._thickness = thickness;\n this.gizmos = { positionGizmo: null, rotationGizmo: null, scaleGizmo: null, boundingBoxGizmo: null };\n\n const attachToMeshPointerObserver = this._attachToMeshPointerObserver(scene);\n const gizmoAxisPointerObserver = Gizmo.GizmoAxisPointerObserver(this._defaultUtilityLayer, this._gizmoAxisCache);\n this._pointerObservers = [attachToMeshPointerObserver, gizmoAxisPointerObserver];\n }\n\n /**\n * Subscribes to pointer down events, for attaching and detaching mesh\n * @param scene The scene layer the observer will be added to\n */\n private _attachToMeshPointerObserver(scene: Scene): Observer<PointerInfo> {\n // Instantiate/dispose gizmos based on pointer actions\n const pointerObserver = scene.onPointerObservable.add((pointerInfo) => {\n if (!this.usePointerToAttachGizmos) {\n return;\n }\n if (pointerInfo.type == PointerEventTypes.POINTERDOWN) {\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh) {\n var node: Nullable<Node> = pointerInfo.pickInfo.pickedMesh;\n if (this.attachableMeshes == null) {\n // Attach to the most parent node\n while (node && node.parent != null) {\n node = node.parent;\n }\n } else {\n // Attach to the parent node that is an attachableMesh\n var found = false;\n this.attachableMeshes.forEach((mesh) => {\n if (node && (node == mesh || node.isDescendantOf(mesh))) {\n node = mesh;\n found = true;\n }\n });\n if (!found) {\n node = null;\n }\n }\n if (node instanceof AbstractMesh) {\n if (this._attachedMesh != node) {\n this.attachToMesh(node);\n }\n } else {\n if (this.clearGizmoOnEmptyPointerEvent) {\n this.attachToMesh(null);\n }\n }\n } else {\n if (this.clearGizmoOnEmptyPointerEvent) {\n this.attachToMesh(null);\n }\n }\n }\n });\n return pointerObserver!;\n }\n\n /**\n * Attaches a set of gizmos to the specified mesh\n * @param mesh The mesh the gizmo's should be attached to\n */\n public attachToMesh(mesh: Nullable<AbstractMesh>) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n }\n if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this._attachedMesh = mesh;\n this._attachedNode = null;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && (<any>this._gizmosEnabled)[key]) {\n gizmo.attachedMesh = mesh;\n }\n }\n if (this.boundingBoxGizmoEnabled && this._attachedMesh) {\n this._attachedMesh.addBehavior(this.boundingBoxDragBehavior);\n }\n this.onAttachedToMeshObservable.notifyObservers(mesh);\n }\n\n /**\n * Attaches a set of gizmos to the specified node\n * @param node The node the gizmo's should be attached to\n */\n public attachToNode(node: Nullable<Node>) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n }\n if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this._attachedMesh = null;\n this._attachedNode = node;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && (<any>this._gizmosEnabled)[key]) {\n gizmo.attachedNode = node;\n }\n }\n if (this.boundingBoxGizmoEnabled && this._attachedNode) {\n this._attachedNode.addBehavior(this.boundingBoxDragBehavior);\n }\n this.onAttachedToNodeObservable.notifyObservers(node);\n }\n\n /**\n * If the position gizmo is enabled\n */\n public set positionGizmoEnabled(value: boolean) {\n if (value) {\n if (!this.gizmos.positionGizmo) {\n this.gizmos.positionGizmo = new PositionGizmo(this._defaultUtilityLayer, this._thickness, this);\n }\n if (this._attachedNode) {\n this.gizmos.positionGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.positionGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.positionGizmo) {\n this.gizmos.positionGizmo.attachedNode = null;\n }\n this._gizmosEnabled.positionGizmo = value;\n }\n public get positionGizmoEnabled(): boolean {\n return this._gizmosEnabled.positionGizmo;\n }\n /**\n * If the rotation gizmo is enabled\n */\n public set rotationGizmoEnabled(value: boolean) {\n if (value) {\n if (!this.gizmos.rotationGizmo) {\n this.gizmos.rotationGizmo = new RotationGizmo(this._defaultUtilityLayer, 32, false, this._thickness, this);\n }\n if (this._attachedNode) {\n this.gizmos.rotationGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.rotationGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.rotationGizmo) {\n this.gizmos.rotationGizmo.attachedNode = null;\n }\n this._gizmosEnabled.rotationGizmo = value;\n }\n public get rotationGizmoEnabled(): boolean {\n return this._gizmosEnabled.rotationGizmo;\n }\n /**\n * If the scale gizmo is enabled\n */\n public set scaleGizmoEnabled(value: boolean) {\n if (value) {\n this.gizmos.scaleGizmo = this.gizmos.scaleGizmo || new ScaleGizmo(this._defaultUtilityLayer, this._thickness, this);\n if (this._attachedNode) {\n this.gizmos.scaleGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.scaleGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.scaleGizmo) {\n this.gizmos.scaleGizmo.attachedNode = null;\n }\n this._gizmosEnabled.scaleGizmo = value;\n }\n public get scaleGizmoEnabled(): boolean {\n return this._gizmosEnabled.scaleGizmo;\n }\n /**\n * If the boundingBox gizmo is enabled\n */\n public set boundingBoxGizmoEnabled(value: boolean) {\n if (value) {\n this.gizmos.boundingBoxGizmo = this.gizmos.boundingBoxGizmo || new BoundingBoxGizmo(this._boundingBoxColor, this._defaultKeepDepthUtilityLayer);\n if (this._attachedMesh) {\n this.gizmos.boundingBoxGizmo.attachedMesh = this._attachedMesh;\n } else {\n this.gizmos.boundingBoxGizmo.attachedNode = this._attachedNode;\n }\n\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n this._attachedMesh.addBehavior(this.boundingBoxDragBehavior);\n } else if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n this._attachedNode.addBehavior(this.boundingBoxDragBehavior);\n }\n } else if (this.gizmos.boundingBoxGizmo) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n } else if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this.gizmos.boundingBoxGizmo.attachedNode = null;\n }\n this._gizmosEnabled.boundingBoxGizmo = value;\n }\n public get boundingBoxGizmoEnabled(): boolean {\n return this._gizmosEnabled.boundingBoxGizmo;\n }\n\n /**\n * Builds Gizmo Axis Cache to enable features such as hover state preservation and graying out other axis during manipulation\n * @param gizmoAxisCache Gizmo axis definition used for reactive gizmo UI\n */\n public addToAxisCache(gizmoAxisCache: Map<Mesh, GizmoAxisCache>) {\n if (gizmoAxisCache.size > 0) {\n gizmoAxisCache.forEach((v, k) => {\n this._gizmoAxisCache.set(k, v);\n });\n }\n }\n\n /**\n * Disposes of the gizmo manager\n */\n public dispose() {\n\n this._pointerObservers.forEach((observer) => {\n this.scene.onPointerObservable.remove(observer);\n });\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo) {\n gizmo.dispose();\n }\n }\n if (this._defaultKeepDepthUtilityLayer !== UtilityLayerRenderer._DefaultKeepDepthUtilityLayer) {\n this._defaultKeepDepthUtilityLayer?.dispose();\n }\n if (this._defaultUtilityLayer !== UtilityLayerRenderer._DefaultUtilityLayer) {\n this._defaultUtilityLayer?.dispose();\n }\n this.boundingBoxDragBehavior.detach();\n this.onAttachedToMeshObservable.clear();\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"gizmoManager.js","sourceRoot":"","sources":["../../../sourceES6/core/Gizmos/gizmoManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observer, Observable } from \"../Misc/observable\";\nimport { Nullable } from \"../types\";\nimport { PointerInfo, PointerEventTypes } from \"../Events/pointerEvents\";\nimport { Scene, IDisposable } from \"../scene\";\nimport { Node } from \"../node\";\nimport { AbstractMesh } from \"../Meshes/abstractMesh\";\nimport { Mesh } from '../Meshes/mesh';\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer\";\nimport { Color3 } from '../Maths/math.color';\nimport { SixDofDragBehavior } from \"../Behaviors/Meshes/sixDofDragBehavior\";\nimport { Gizmo, GizmoAxisCache } from \"./gizmo\";\nimport { RotationGizmo } from \"./rotationGizmo\";\nimport { PositionGizmo } from \"./positionGizmo\";\nimport { ScaleGizmo } from \"./scaleGizmo\";\nimport { BoundingBoxGizmo } from \"./boundingBoxGizmo\";\n\n/**\n * Helps setup gizmo's in the scene to rotate/scale/position nodes\n */\nexport class GizmoManager implements IDisposable {\n /**\n * Gizmo's created by the gizmo manager, gizmo will be null until gizmo has been enabled for the first time\n */\n public gizmos: { positionGizmo: Nullable<PositionGizmo>, rotationGizmo: Nullable<RotationGizmo>, scaleGizmo: Nullable<ScaleGizmo>, boundingBoxGizmo: Nullable<BoundingBoxGizmo> };\n\n /** When true, the gizmo will be detached from the current object when a pointer down occurs with an empty picked mesh */\n public clearGizmoOnEmptyPointerEvent = false;\n\n /** When true (default), picking to attach a new mesh is enabled. This works in sync with inspector autopicking. */\n public enableAutoPicking = true;\n\n /** Fires an event when the manager is attached to a mesh */\n public onAttachedToMeshObservable = new Observable<Nullable<AbstractMesh>>();\n\n /** Fires an event when the manager is attached to a node */\n public onAttachedToNodeObservable = new Observable<Nullable<Node>>();\n\n private _gizmosEnabled = { positionGizmo: false, rotationGizmo: false, scaleGizmo: false, boundingBoxGizmo: false };\n private _pointerObservers: Observer<PointerInfo>[] = [];\n private _attachedMesh: Nullable<AbstractMesh> = null;\n private _attachedNode: Nullable<Node> = null;\n private _boundingBoxColor = Color3.FromHexString(\"#0984e3\");\n private _defaultUtilityLayer: UtilityLayerRenderer;\n private _defaultKeepDepthUtilityLayer: UtilityLayerRenderer;\n private _thickness: number = 1;\n private _scaleRatio: number = 1;\n\n /** Node Caching for quick lookup */\n private _gizmoAxisCache: Map<Mesh, GizmoAxisCache> = new Map();\n /**\n * When bounding box gizmo is enabled, this can be used to track drag/end events\n */\n public boundingBoxDragBehavior = new SixDofDragBehavior();\n /**\n * Array of meshes which will have the gizmo attached when a pointer selected them. If null, all meshes are attachable. (Default: null)\n */\n public attachableMeshes: Nullable<Array<AbstractMesh>> = null;\n /**\n * Array of nodes which will have the gizmo attached when a pointer selected them. If null, all nodes are attachable. (Default: null)\n */\n public attachableNodes: Nullable<Array<Node>> = null;\n /**\n * If pointer events should perform attaching/detaching a gizmo, if false this can be done manually via attachToMesh/attachToNode. (Default: true)\n */\n public usePointerToAttachGizmos = true;\n\n /**\n * Utility layer that the bounding box gizmo belongs to\n */\n public get keepDepthUtilityLayer() {\n return this._defaultKeepDepthUtilityLayer;\n }\n\n /**\n * Utility layer that all gizmos besides bounding box belong to\n */\n public get utilityLayer() {\n return this._defaultUtilityLayer;\n }\n\n /**\n * True when the mouse pointer is hovering a gizmo mesh\n */\n public get isHovered() {\n var hovered = false;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && gizmo.isHovered) {\n hovered = true;\n break;\n }\n }\n return hovered;\n }\n\n /**\n * Ratio for the scale of the gizmo (Default: 1)\n */\n public set scaleRatio(value: number) {\n this._scaleRatio = value;\n [this.gizmos.positionGizmo, this.gizmos.rotationGizmo, this.gizmos.scaleGizmo].forEach((gizmo) => {\n if (gizmo) {\n gizmo.scaleRatio = value;\n }\n });\n }\n public get scaleRatio() {\n return this._scaleRatio;\n }\n\n /**\n * Instantiates a gizmo manager\n * @param scene the scene to overlay the gizmos on top of\n * @param thickness display gizmo axis thickness\n * @param utilityLayer the layer where gizmos are rendered\n * @param keepDepthUtilityLayer the layer where occluded gizmos are rendered\n */\n constructor(private scene: Scene, thickness: number = 1, utilityLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultUtilityLayer, keepDepthUtilityLayer: UtilityLayerRenderer = UtilityLayerRenderer.DefaultKeepDepthUtilityLayer) {\n this._defaultUtilityLayer = utilityLayer;\n this._defaultKeepDepthUtilityLayer = keepDepthUtilityLayer;\n this._defaultKeepDepthUtilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\n this._thickness = thickness;\n this.gizmos = { positionGizmo: null, rotationGizmo: null, scaleGizmo: null, boundingBoxGizmo: null };\n\n const attachToMeshPointerObserver = this._attachToMeshPointerObserver(scene);\n const gizmoAxisPointerObserver = Gizmo.GizmoAxisPointerObserver(this._defaultUtilityLayer, this._gizmoAxisCache);\n this._pointerObservers = [attachToMeshPointerObserver, gizmoAxisPointerObserver];\n }\n\n /**\n * Subscribes to pointer down events, for attaching and detaching mesh\n * @param scene The scene layer the observer will be added to\n */\n private _attachToMeshPointerObserver(scene: Scene): Observer<PointerInfo> {\n // Instantiate/dispose gizmos based on pointer actions\n const pointerObserver = scene.onPointerObservable.add((pointerInfo) => {\n if (!this.usePointerToAttachGizmos) {\n return;\n }\n if (pointerInfo.type == PointerEventTypes.POINTERDOWN) {\n if (pointerInfo.pickInfo && pointerInfo.pickInfo.pickedMesh) {\n if (this.enableAutoPicking) {\n var node: Nullable<Node> = pointerInfo.pickInfo.pickedMesh;\n if (this.attachableMeshes == null) {\n // Attach to the most parent node\n while (node && node.parent != null) {\n node = node.parent;\n }\n } else {\n // Attach to the parent node that is an attachableMesh\n var found = false;\n this.attachableMeshes.forEach((mesh) => {\n if (node && (node == mesh || node.isDescendantOf(mesh))) {\n node = mesh;\n found = true;\n }\n });\n if (!found) {\n node = null;\n }\n }\n if (node instanceof AbstractMesh) {\n if (this._attachedMesh != node) {\n this.attachToMesh(node);\n }\n } else {\n if (this.clearGizmoOnEmptyPointerEvent) {\n this.attachToMesh(null);\n }\n }\n }\n } else {\n if (this.clearGizmoOnEmptyPointerEvent) {\n this.attachToMesh(null);\n }\n }\n }\n });\n return pointerObserver!;\n }\n\n /**\n * Attaches a set of gizmos to the specified mesh\n * @param mesh The mesh the gizmo's should be attached to\n */\n public attachToMesh(mesh: Nullable<AbstractMesh>) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n }\n if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this._attachedMesh = mesh;\n this._attachedNode = null;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && (<any>this._gizmosEnabled)[key]) {\n gizmo.attachedMesh = mesh;\n }\n }\n if (this.boundingBoxGizmoEnabled && this._attachedMesh) {\n this._attachedMesh.addBehavior(this.boundingBoxDragBehavior);\n }\n this.onAttachedToMeshObservable.notifyObservers(mesh);\n }\n\n /**\n * Attaches a set of gizmos to the specified node\n * @param node The node the gizmo's should be attached to\n */\n public attachToNode(node: Nullable<Node>) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n }\n if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this._attachedMesh = null;\n this._attachedNode = node;\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo && (<any>this._gizmosEnabled)[key]) {\n gizmo.attachedNode = node;\n }\n }\n if (this.boundingBoxGizmoEnabled && this._attachedNode) {\n this._attachedNode.addBehavior(this.boundingBoxDragBehavior);\n }\n this.onAttachedToNodeObservable.notifyObservers(node);\n }\n\n /**\n * If the position gizmo is enabled\n */\n public set positionGizmoEnabled(value: boolean) {\n if (value) {\n if (!this.gizmos.positionGizmo) {\n this.gizmos.positionGizmo = new PositionGizmo(this._defaultUtilityLayer, this._thickness, this);\n }\n if (this._attachedNode) {\n this.gizmos.positionGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.positionGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.positionGizmo) {\n this.gizmos.positionGizmo.attachedNode = null;\n }\n this._gizmosEnabled.positionGizmo = value;\n }\n public get positionGizmoEnabled(): boolean {\n return this._gizmosEnabled.positionGizmo;\n }\n /**\n * If the rotation gizmo is enabled\n */\n public set rotationGizmoEnabled(value: boolean) {\n if (value) {\n if (!this.gizmos.rotationGizmo) {\n this.gizmos.rotationGizmo = new RotationGizmo(this._defaultUtilityLayer, 32, false, this._thickness, this);\n }\n if (this._attachedNode) {\n this.gizmos.rotationGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.rotationGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.rotationGizmo) {\n this.gizmos.rotationGizmo.attachedNode = null;\n }\n this._gizmosEnabled.rotationGizmo = value;\n }\n public get rotationGizmoEnabled(): boolean {\n return this._gizmosEnabled.rotationGizmo;\n }\n /**\n * If the scale gizmo is enabled\n */\n public set scaleGizmoEnabled(value: boolean) {\n if (value) {\n this.gizmos.scaleGizmo = this.gizmos.scaleGizmo || new ScaleGizmo(this._defaultUtilityLayer, this._thickness, this);\n if (this._attachedNode) {\n this.gizmos.scaleGizmo.attachedNode = this._attachedNode;\n } else {\n this.gizmos.scaleGizmo.attachedMesh = this._attachedMesh;\n }\n } else if (this.gizmos.scaleGizmo) {\n this.gizmos.scaleGizmo.attachedNode = null;\n }\n this._gizmosEnabled.scaleGizmo = value;\n }\n public get scaleGizmoEnabled(): boolean {\n return this._gizmosEnabled.scaleGizmo;\n }\n /**\n * If the boundingBox gizmo is enabled\n */\n public set boundingBoxGizmoEnabled(value: boolean) {\n if (value) {\n this.gizmos.boundingBoxGizmo = this.gizmos.boundingBoxGizmo || new BoundingBoxGizmo(this._boundingBoxColor, this._defaultKeepDepthUtilityLayer);\n if (this._attachedMesh) {\n this.gizmos.boundingBoxGizmo.attachedMesh = this._attachedMesh;\n } else {\n this.gizmos.boundingBoxGizmo.attachedNode = this._attachedNode;\n }\n\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n this._attachedMesh.addBehavior(this.boundingBoxDragBehavior);\n } else if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n this._attachedNode.addBehavior(this.boundingBoxDragBehavior);\n }\n } else if (this.gizmos.boundingBoxGizmo) {\n if (this._attachedMesh) {\n this._attachedMesh.removeBehavior(this.boundingBoxDragBehavior);\n } else if (this._attachedNode) {\n this._attachedNode.removeBehavior(this.boundingBoxDragBehavior);\n }\n this.gizmos.boundingBoxGizmo.attachedNode = null;\n }\n this._gizmosEnabled.boundingBoxGizmo = value;\n }\n public get boundingBoxGizmoEnabled(): boolean {\n return this._gizmosEnabled.boundingBoxGizmo;\n }\n\n /**\n * Builds Gizmo Axis Cache to enable features such as hover state preservation and graying out other axis during manipulation\n * @param gizmoAxisCache Gizmo axis definition used for reactive gizmo UI\n */\n public addToAxisCache(gizmoAxisCache: Map<Mesh, GizmoAxisCache>) {\n if (gizmoAxisCache.size > 0) {\n gizmoAxisCache.forEach((v, k) => {\n this._gizmoAxisCache.set(k, v);\n });\n }\n }\n\n /**\n * Disposes of the gizmo manager\n */\n public dispose() {\n\n this._pointerObservers.forEach((observer) => {\n this.scene.onPointerObservable.remove(observer);\n });\n for (var key in this.gizmos) {\n var gizmo = <Nullable<Gizmo>>((<any>this.gizmos)[key]);\n if (gizmo) {\n gizmo.dispose();\n }\n }\n if (this._defaultKeepDepthUtilityLayer !== UtilityLayerRenderer._DefaultKeepDepthUtilityLayer) {\n this._defaultKeepDepthUtilityLayer?.dispose();\n }\n if (this._defaultUtilityLayer !== UtilityLayerRenderer._DefaultUtilityLayer) {\n this._defaultUtilityLayer?.dispose();\n }\n this.boundingBoxDragBehavior.detach();\n this.onAttachedToMeshObservable.clear();\n }\n}"]}
|
|
@@ -499,11 +499,11 @@ var SceneInstrumentation = /** @class */ (function () {
|
|
|
499
499
|
if (value) {
|
|
500
500
|
this._onBeforeCameraRenderObserver = this.scene.onBeforeCameraRenderObservable.add(function (camera) {
|
|
501
501
|
_this._cameraRenderTime.beginMonitoring();
|
|
502
|
-
Tools.StartPerformanceCounter("Rendering camera "
|
|
502
|
+
Tools.StartPerformanceCounter("Rendering camera ".concat(camera.name));
|
|
503
503
|
});
|
|
504
504
|
this._onAfterCameraRenderObserver = this.scene.onAfterCameraRenderObservable.add(function (camera) {
|
|
505
505
|
_this._cameraRenderTime.endMonitoring(false);
|
|
506
|
-
Tools.EndPerformanceCounter("Rendering camera "
|
|
506
|
+
Tools.EndPerformanceCounter("Rendering camera ".concat(camera.name));
|
|
507
507
|
});
|
|
508
508
|
}
|
|
509
509
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneInstrumentation.js","sourceRoot":"","sources":["../../../sourceES6/core/Instrumentation/sceneInstrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"../Misc/tools\";\r\nimport { Observer } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Scene, IDisposable } from \"../scene\";\r\nimport { PerfCounter } from '../Misc/perfCounter';\r\n/**\r\n * This class can be used to get instrumentation data from a Babylon engine\r\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#sceneinstrumentation\r\n */\r\nexport class SceneInstrumentation implements IDisposable {\r\n private _captureActiveMeshesEvaluationTime = false;\r\n private _activeMeshesEvaluationTime = new PerfCounter();\r\n\r\n private _captureRenderTargetsRenderTime = false;\r\n private _renderTargetsRenderTime = new PerfCounter();\r\n\r\n private _captureFrameTime = false;\r\n private _frameTime = new PerfCounter();\r\n\r\n private _captureRenderTime = false;\r\n private _renderTime = new PerfCounter();\r\n\r\n private _captureInterFrameTime = false;\r\n private _interFrameTime = new PerfCounter();\r\n\r\n private _captureParticlesRenderTime = false;\r\n private _particlesRenderTime = new PerfCounter();\r\n\r\n private _captureSpritesRenderTime = false;\r\n private _spritesRenderTime = new PerfCounter();\r\n\r\n private _capturePhysicsTime = false;\r\n private _physicsTime = new PerfCounter();\r\n\r\n private _captureAnimationsTime = false;\r\n private _animationsTime = new PerfCounter();\r\n\r\n private _captureCameraRenderTime = false;\r\n private _cameraRenderTime = new PerfCounter();\r\n\r\n // Observers\r\n private _onBeforeActiveMeshesEvaluationObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterActiveMeshesEvaluationObserver: Nullable<Observer<Scene>> = null;\r\n private _onBeforeRenderTargetsRenderObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterRenderTargetsRenderObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onAfterRenderObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeDrawPhaseObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterDrawPhaseObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeAnimationsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeParticlesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterParticlesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeSpritesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterSpritesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforePhysicsObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterPhysicsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onAfterAnimationsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeCameraRenderObserver: Nullable<Observer<Camera>> = null;\r\n private _onAfterCameraRenderObserver: Nullable<Observer<Camera>> = null;\r\n\r\n // Properties\r\n /**\r\n * Gets the perf counter used for active meshes evaluation time\r\n */\r\n public get activeMeshesEvaluationTimeCounter(): PerfCounter {\r\n return this._activeMeshesEvaluationTime;\r\n }\r\n\r\n /**\r\n * Gets the active meshes evaluation time capture status\r\n */\r\n public get captureActiveMeshesEvaluationTime(): boolean {\r\n return this._captureActiveMeshesEvaluationTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the active meshes evaluation time capture\r\n */\r\n public set captureActiveMeshesEvaluationTime(value: boolean) {\r\n if (value === this._captureActiveMeshesEvaluationTime) {\r\n return;\r\n }\r\n\r\n this._captureActiveMeshesEvaluationTime = value;\r\n\r\n if (value) {\r\n this._onBeforeActiveMeshesEvaluationObserver = this.scene.onBeforeActiveMeshesEvaluationObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Active meshes evaluation\");\r\n this._activeMeshesEvaluationTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterActiveMeshesEvaluationObserver = this.scene.onAfterActiveMeshesEvaluationObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Active meshes evaluation\");\r\n this._activeMeshesEvaluationTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onBeforeActiveMeshesEvaluationObservable.remove(this._onBeforeActiveMeshesEvaluationObserver);\r\n this._onBeforeActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onAfterActiveMeshesEvaluationObservable.remove(this._onAfterActiveMeshesEvaluationObserver);\r\n this._onAfterActiveMeshesEvaluationObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for render targets render time\r\n */\r\n public get renderTargetsRenderTimeCounter(): PerfCounter {\r\n return this._renderTargetsRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the render targets render time capture status\r\n */\r\n public get captureRenderTargetsRenderTime(): boolean {\r\n return this._captureRenderTargetsRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the render targets render time capture\r\n */\r\n public set captureRenderTargetsRenderTime(value: boolean) {\r\n if (value === this._captureRenderTargetsRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureRenderTargetsRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeRenderTargetsRenderObserver = this.scene.onBeforeRenderTargetsRenderObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Render targets rendering\");\r\n this._renderTargetsRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterRenderTargetsRenderObserver = this.scene.onAfterRenderTargetsRenderObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Render targets rendering\");\r\n this._renderTargetsRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeRenderTargetsRenderObservable.remove(this._onBeforeRenderTargetsRenderObserver);\r\n this._onBeforeRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onAfterRenderTargetsRenderObservable.remove(this._onAfterRenderTargetsRenderObserver);\r\n this._onAfterRenderTargetsRenderObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for particles render time\r\n */\r\n public get particlesRenderTimeCounter(): PerfCounter {\r\n return this._particlesRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the particles render time capture status\r\n */\r\n public get captureParticlesRenderTime(): boolean {\r\n return this._captureParticlesRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the particles render time capture\r\n */\r\n public set captureParticlesRenderTime(value: boolean) {\r\n if (value === this._captureParticlesRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureParticlesRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeParticlesRenderingObserver = this.scene.onBeforeParticlesRenderingObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Particles\");\r\n this._particlesRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterParticlesRenderingObserver = this.scene.onAfterParticlesRenderingObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Particles\");\r\n this._particlesRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeParticlesRenderingObservable.remove(this._onBeforeParticlesRenderingObserver);\r\n this._onBeforeParticlesRenderingObserver = null;\r\n\r\n this.scene.onAfterParticlesRenderingObservable.remove(this._onAfterParticlesRenderingObserver);\r\n this._onAfterParticlesRenderingObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for sprites render time\r\n */\r\n public get spritesRenderTimeCounter(): PerfCounter {\r\n return this._spritesRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the sprites render time capture status\r\n */\r\n public get captureSpritesRenderTime(): boolean {\r\n return this._captureSpritesRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the sprites render time capture\r\n */\r\n public set captureSpritesRenderTime(value: boolean) {\r\n if (value === this._captureSpritesRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureSpritesRenderTime = value;\r\n\r\n if (!this.scene.spriteManagers) {\r\n return;\r\n }\r\n\r\n if (value) {\r\n this._onBeforeSpritesRenderingObserver = this.scene.onBeforeSpritesRenderingObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Sprites\");\r\n this._spritesRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterSpritesRenderingObserver = this.scene.onAfterSpritesRenderingObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Sprites\");\r\n this._spritesRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeSpritesRenderingObservable.remove(this._onBeforeSpritesRenderingObserver);\r\n this._onBeforeSpritesRenderingObserver = null;\r\n\r\n this.scene.onAfterSpritesRenderingObservable.remove(this._onAfterSpritesRenderingObserver);\r\n this._onAfterSpritesRenderingObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for physics time\r\n */\r\n public get physicsTimeCounter(): PerfCounter {\r\n return this._physicsTime;\r\n }\r\n\r\n /**\r\n * Gets the physics time capture status\r\n */\r\n public get capturePhysicsTime(): boolean {\r\n return this._capturePhysicsTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the physics time capture\r\n */\r\n public set capturePhysicsTime(value: boolean) {\r\n if (value === this._capturePhysicsTime) {\r\n return;\r\n }\r\n\r\n if (!this.scene.onBeforePhysicsObservable) {\r\n return;\r\n }\r\n\r\n this._capturePhysicsTime = value;\r\n\r\n if (value) {\r\n this._onBeforePhysicsObserver = this.scene.onBeforePhysicsObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Physics\");\r\n this._physicsTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterPhysicsObserver = this.scene.onAfterPhysicsObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Physics\");\r\n this._physicsTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onBeforePhysicsObservable.remove(this._onBeforePhysicsObserver);\r\n this._onBeforePhysicsObserver = null;\r\n\r\n this.scene.onAfterPhysicsObservable.remove(this._onAfterPhysicsObserver);\r\n this._onAfterPhysicsObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for animations time\r\n */\r\n public get animationsTimeCounter(): PerfCounter {\r\n return this._animationsTime;\r\n }\r\n\r\n /**\r\n * Gets the animations time capture status\r\n */\r\n public get captureAnimationsTime(): boolean {\r\n return this._captureAnimationsTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the animations time capture\r\n */\r\n public set captureAnimationsTime(value: boolean) {\r\n if (value === this._captureAnimationsTime) {\r\n return;\r\n }\r\n\r\n this._captureAnimationsTime = value;\r\n\r\n if (value) {\r\n this._onAfterAnimationsObserver = this.scene.onAfterAnimationsObservable.add(() => {\r\n this._animationsTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onAfterAnimationsObservable.remove(this._onAfterAnimationsObserver);\r\n this._onAfterAnimationsObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for frame time capture\r\n */\r\n public get frameTimeCounter(): PerfCounter {\r\n return this._frameTime;\r\n }\r\n\r\n /**\r\n * Gets the frame time capture status\r\n */\r\n public get captureFrameTime(): boolean {\r\n return this._captureFrameTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the frame time capture\r\n */\r\n public set captureFrameTime(value: boolean) {\r\n this._captureFrameTime = value;\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for inter-frames time capture\r\n */\r\n public get interFrameTimeCounter(): PerfCounter {\r\n return this._interFrameTime;\r\n }\r\n\r\n /**\r\n * Gets the inter-frames time capture status\r\n */\r\n public get captureInterFrameTime(): boolean {\r\n return this._captureInterFrameTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the inter-frames time capture\r\n */\r\n public set captureInterFrameTime(value: boolean) {\r\n this._captureInterFrameTime = value;\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for render time capture\r\n */\r\n public get renderTimeCounter(): PerfCounter {\r\n return this._renderTime;\r\n }\r\n\r\n /**\r\n * Gets the render time capture status\r\n */\r\n public get captureRenderTime(): boolean {\r\n return this._captureRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the render time capture\r\n */\r\n public set captureRenderTime(value: boolean) {\r\n if (value === this._captureRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeDrawPhaseObserver = this.scene.onBeforeDrawPhaseObservable.add(() => {\r\n this._renderTime.beginMonitoring();\r\n Tools.StartPerformanceCounter(\"Main render\");\r\n });\r\n\r\n this._onAfterDrawPhaseObserver = this.scene.onAfterDrawPhaseObservable.add(() => {\r\n this._renderTime.endMonitoring(false);\r\n Tools.EndPerformanceCounter(\"Main render\");\r\n });\r\n } else {\r\n this.scene.onBeforeDrawPhaseObservable.remove(this._onBeforeDrawPhaseObserver);\r\n this._onBeforeDrawPhaseObserver = null;\r\n this.scene.onAfterDrawPhaseObservable.remove(this._onAfterDrawPhaseObserver);\r\n this._onAfterDrawPhaseObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for camera render time capture\r\n */\r\n public get cameraRenderTimeCounter(): PerfCounter {\r\n return this._cameraRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the camera render time capture status\r\n */\r\n public get captureCameraRenderTime(): boolean {\r\n return this._captureCameraRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the camera render time capture\r\n */\r\n public set captureCameraRenderTime(value: boolean) {\r\n if (value === this._captureCameraRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureCameraRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeCameraRenderObserver = this.scene.onBeforeCameraRenderObservable.add((camera) => {\r\n this._cameraRenderTime.beginMonitoring();\r\n Tools.StartPerformanceCounter(`Rendering camera ${camera.name}`);\r\n });\r\n\r\n this._onAfterCameraRenderObserver = this.scene.onAfterCameraRenderObservable.add((camera) => {\r\n this._cameraRenderTime.endMonitoring(false);\r\n Tools.EndPerformanceCounter(`Rendering camera ${camera.name}`);\r\n });\r\n } else {\r\n this.scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\r\n this._onBeforeCameraRenderObserver = null;\r\n this.scene.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver);\r\n this._onAfterCameraRenderObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for draw calls\r\n */\r\n public get drawCallsCounter(): PerfCounter {\r\n return this.scene.getEngine()._drawCalls;\r\n }\r\n\r\n /**\r\n * Instantiates a new scene instrumentation.\r\n * This class can be used to get instrumentation data from a Babylon engine\r\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#sceneinstrumentation\r\n * @param scene Defines the scene to instrument\r\n */\r\n public constructor(\r\n /**\r\n * Defines the scene to instrument\r\n */\r\n public scene: Scene) {\r\n // Before render\r\n this._onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n if (this._captureActiveMeshesEvaluationTime) {\r\n this._activeMeshesEvaluationTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureRenderTargetsRenderTime) {\r\n this._renderTargetsRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureFrameTime) {\r\n Tools.StartPerformanceCounter(\"Scene rendering\");\r\n this._frameTime.beginMonitoring();\r\n }\r\n\r\n if (this._captureInterFrameTime) {\r\n this._interFrameTime.endMonitoring();\r\n }\r\n\r\n if (this._captureParticlesRenderTime) {\r\n this._particlesRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureSpritesRenderTime) {\r\n this._spritesRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureAnimationsTime) {\r\n this._animationsTime.beginMonitoring();\r\n }\r\n\r\n this.scene.getEngine()._drawCalls.fetchNewFrame();\r\n });\r\n\r\n // After render\r\n this._onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n if (this._captureFrameTime) {\r\n Tools.EndPerformanceCounter(\"Scene rendering\");\r\n this._frameTime.endMonitoring();\r\n }\r\n\r\n if (this._captureRenderTime) {\r\n this._renderTime.endMonitoring(false);\r\n }\r\n\r\n if (this._captureInterFrameTime) {\r\n this._interFrameTime.beginMonitoring();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Dispose and release associated resources.\r\n */\r\n public dispose() {\r\n this.scene.onAfterRenderObservable.remove(this._onAfterRenderObserver);\r\n this._onAfterRenderObserver = null;\r\n\r\n this.scene.onBeforeActiveMeshesEvaluationObservable.remove(this._onBeforeActiveMeshesEvaluationObserver);\r\n this._onBeforeActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onAfterActiveMeshesEvaluationObservable.remove(this._onAfterActiveMeshesEvaluationObserver);\r\n this._onAfterActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onBeforeRenderTargetsRenderObservable.remove(this._onBeforeRenderTargetsRenderObserver);\r\n this._onBeforeRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onAfterRenderTargetsRenderObservable.remove(this._onAfterRenderTargetsRenderObserver);\r\n this._onAfterRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onBeforeAnimationsObservable.remove(this._onBeforeAnimationsObserver);\r\n this._onBeforeAnimationsObserver = null;\r\n\r\n this.scene.onBeforeParticlesRenderingObservable.remove(this._onBeforeParticlesRenderingObserver);\r\n this._onBeforeParticlesRenderingObserver = null;\r\n\r\n this.scene.onAfterParticlesRenderingObservable.remove(this._onAfterParticlesRenderingObserver);\r\n this._onAfterParticlesRenderingObserver = null;\r\n\r\n if (this._onBeforeSpritesRenderingObserver) {\r\n this.scene.onBeforeSpritesRenderingObservable.remove(this._onBeforeSpritesRenderingObserver);\r\n this._onBeforeSpritesRenderingObserver = null;\r\n }\r\n\r\n if (this._onAfterSpritesRenderingObserver) {\r\n this.scene.onAfterSpritesRenderingObservable.remove(this._onAfterSpritesRenderingObserver);\r\n this._onAfterSpritesRenderingObserver = null;\r\n }\r\n\r\n this.scene.onBeforeDrawPhaseObservable.remove(this._onBeforeDrawPhaseObserver);\r\n this._onBeforeDrawPhaseObserver = null;\r\n\r\n this.scene.onAfterDrawPhaseObservable.remove(this._onAfterDrawPhaseObserver);\r\n this._onAfterDrawPhaseObserver = null;\r\n\r\n if (this._onBeforePhysicsObserver) {\r\n this.scene.onBeforePhysicsObservable.remove(this._onBeforePhysicsObserver);\r\n this._onBeforePhysicsObserver = null;\r\n }\r\n\r\n if (this._onAfterPhysicsObserver) {\r\n this.scene.onAfterPhysicsObservable.remove(this._onAfterPhysicsObserver);\r\n this._onAfterPhysicsObserver = null;\r\n }\r\n\r\n this.scene.onAfterAnimationsObservable.remove(this._onAfterAnimationsObserver);\r\n this._onAfterAnimationsObserver = null;\r\n\r\n this.scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\r\n this._onBeforeCameraRenderObserver = null;\r\n\r\n this.scene.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver);\r\n this._onAfterCameraRenderObserver = null;\r\n\r\n (<any>this.scene) = null;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"sceneInstrumentation.js","sourceRoot":"","sources":["../../../sourceES6/core/Instrumentation/sceneInstrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"../Misc/tools\";\r\nimport { Observer } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Scene, IDisposable } from \"../scene\";\r\nimport { PerfCounter } from '../Misc/perfCounter';\r\n/**\r\n * This class can be used to get instrumentation data from a Babylon engine\r\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#sceneinstrumentation\r\n */\r\nexport class SceneInstrumentation implements IDisposable {\r\n private _captureActiveMeshesEvaluationTime = false;\r\n private _activeMeshesEvaluationTime = new PerfCounter();\r\n\r\n private _captureRenderTargetsRenderTime = false;\r\n private _renderTargetsRenderTime = new PerfCounter();\r\n\r\n private _captureFrameTime = false;\r\n private _frameTime = new PerfCounter();\r\n\r\n private _captureRenderTime = false;\r\n private _renderTime = new PerfCounter();\r\n\r\n private _captureInterFrameTime = false;\r\n private _interFrameTime = new PerfCounter();\r\n\r\n private _captureParticlesRenderTime = false;\r\n private _particlesRenderTime = new PerfCounter();\r\n\r\n private _captureSpritesRenderTime = false;\r\n private _spritesRenderTime = new PerfCounter();\r\n\r\n private _capturePhysicsTime = false;\r\n private _physicsTime = new PerfCounter();\r\n\r\n private _captureAnimationsTime = false;\r\n private _animationsTime = new PerfCounter();\r\n\r\n private _captureCameraRenderTime = false;\r\n private _cameraRenderTime = new PerfCounter();\r\n\r\n // Observers\r\n private _onBeforeActiveMeshesEvaluationObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterActiveMeshesEvaluationObserver: Nullable<Observer<Scene>> = null;\r\n private _onBeforeRenderTargetsRenderObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterRenderTargetsRenderObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onAfterRenderObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeDrawPhaseObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterDrawPhaseObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeAnimationsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeParticlesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterParticlesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeSpritesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterSpritesRenderingObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforePhysicsObserver: Nullable<Observer<Scene>> = null;\r\n private _onAfterPhysicsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onAfterAnimationsObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _onBeforeCameraRenderObserver: Nullable<Observer<Camera>> = null;\r\n private _onAfterCameraRenderObserver: Nullable<Observer<Camera>> = null;\r\n\r\n // Properties\r\n /**\r\n * Gets the perf counter used for active meshes evaluation time\r\n */\r\n public get activeMeshesEvaluationTimeCounter(): PerfCounter {\r\n return this._activeMeshesEvaluationTime;\r\n }\r\n\r\n /**\r\n * Gets the active meshes evaluation time capture status\r\n */\r\n public get captureActiveMeshesEvaluationTime(): boolean {\r\n return this._captureActiveMeshesEvaluationTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the active meshes evaluation time capture\r\n */\r\n public set captureActiveMeshesEvaluationTime(value: boolean) {\r\n if (value === this._captureActiveMeshesEvaluationTime) {\r\n return;\r\n }\r\n\r\n this._captureActiveMeshesEvaluationTime = value;\r\n\r\n if (value) {\r\n this._onBeforeActiveMeshesEvaluationObserver = this.scene.onBeforeActiveMeshesEvaluationObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Active meshes evaluation\");\r\n this._activeMeshesEvaluationTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterActiveMeshesEvaluationObserver = this.scene.onAfterActiveMeshesEvaluationObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Active meshes evaluation\");\r\n this._activeMeshesEvaluationTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onBeforeActiveMeshesEvaluationObservable.remove(this._onBeforeActiveMeshesEvaluationObserver);\r\n this._onBeforeActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onAfterActiveMeshesEvaluationObservable.remove(this._onAfterActiveMeshesEvaluationObserver);\r\n this._onAfterActiveMeshesEvaluationObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for render targets render time\r\n */\r\n public get renderTargetsRenderTimeCounter(): PerfCounter {\r\n return this._renderTargetsRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the render targets render time capture status\r\n */\r\n public get captureRenderTargetsRenderTime(): boolean {\r\n return this._captureRenderTargetsRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the render targets render time capture\r\n */\r\n public set captureRenderTargetsRenderTime(value: boolean) {\r\n if (value === this._captureRenderTargetsRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureRenderTargetsRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeRenderTargetsRenderObserver = this.scene.onBeforeRenderTargetsRenderObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Render targets rendering\");\r\n this._renderTargetsRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterRenderTargetsRenderObserver = this.scene.onAfterRenderTargetsRenderObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Render targets rendering\");\r\n this._renderTargetsRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeRenderTargetsRenderObservable.remove(this._onBeforeRenderTargetsRenderObserver);\r\n this._onBeforeRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onAfterRenderTargetsRenderObservable.remove(this._onAfterRenderTargetsRenderObserver);\r\n this._onAfterRenderTargetsRenderObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for particles render time\r\n */\r\n public get particlesRenderTimeCounter(): PerfCounter {\r\n return this._particlesRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the particles render time capture status\r\n */\r\n public get captureParticlesRenderTime(): boolean {\r\n return this._captureParticlesRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the particles render time capture\r\n */\r\n public set captureParticlesRenderTime(value: boolean) {\r\n if (value === this._captureParticlesRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureParticlesRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeParticlesRenderingObserver = this.scene.onBeforeParticlesRenderingObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Particles\");\r\n this._particlesRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterParticlesRenderingObserver = this.scene.onAfterParticlesRenderingObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Particles\");\r\n this._particlesRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeParticlesRenderingObservable.remove(this._onBeforeParticlesRenderingObserver);\r\n this._onBeforeParticlesRenderingObserver = null;\r\n\r\n this.scene.onAfterParticlesRenderingObservable.remove(this._onAfterParticlesRenderingObserver);\r\n this._onAfterParticlesRenderingObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for sprites render time\r\n */\r\n public get spritesRenderTimeCounter(): PerfCounter {\r\n return this._spritesRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the sprites render time capture status\r\n */\r\n public get captureSpritesRenderTime(): boolean {\r\n return this._captureSpritesRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the sprites render time capture\r\n */\r\n public set captureSpritesRenderTime(value: boolean) {\r\n if (value === this._captureSpritesRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureSpritesRenderTime = value;\r\n\r\n if (!this.scene.spriteManagers) {\r\n return;\r\n }\r\n\r\n if (value) {\r\n this._onBeforeSpritesRenderingObserver = this.scene.onBeforeSpritesRenderingObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Sprites\");\r\n this._spritesRenderTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterSpritesRenderingObserver = this.scene.onAfterSpritesRenderingObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Sprites\");\r\n this._spritesRenderTime.endMonitoring(false);\r\n });\r\n } else {\r\n this.scene.onBeforeSpritesRenderingObservable.remove(this._onBeforeSpritesRenderingObserver);\r\n this._onBeforeSpritesRenderingObserver = null;\r\n\r\n this.scene.onAfterSpritesRenderingObservable.remove(this._onAfterSpritesRenderingObserver);\r\n this._onAfterSpritesRenderingObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for physics time\r\n */\r\n public get physicsTimeCounter(): PerfCounter {\r\n return this._physicsTime;\r\n }\r\n\r\n /**\r\n * Gets the physics time capture status\r\n */\r\n public get capturePhysicsTime(): boolean {\r\n return this._capturePhysicsTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the physics time capture\r\n */\r\n public set capturePhysicsTime(value: boolean) {\r\n if (value === this._capturePhysicsTime) {\r\n return;\r\n }\r\n\r\n if (!this.scene.onBeforePhysicsObservable) {\r\n return;\r\n }\r\n\r\n this._capturePhysicsTime = value;\r\n\r\n if (value) {\r\n this._onBeforePhysicsObserver = this.scene.onBeforePhysicsObservable.add(() => {\r\n Tools.StartPerformanceCounter(\"Physics\");\r\n this._physicsTime.beginMonitoring();\r\n });\r\n\r\n this._onAfterPhysicsObserver = this.scene.onAfterPhysicsObservable.add(() => {\r\n Tools.EndPerformanceCounter(\"Physics\");\r\n this._physicsTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onBeforePhysicsObservable.remove(this._onBeforePhysicsObserver);\r\n this._onBeforePhysicsObserver = null;\r\n\r\n this.scene.onAfterPhysicsObservable.remove(this._onAfterPhysicsObserver);\r\n this._onAfterPhysicsObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for animations time\r\n */\r\n public get animationsTimeCounter(): PerfCounter {\r\n return this._animationsTime;\r\n }\r\n\r\n /**\r\n * Gets the animations time capture status\r\n */\r\n public get captureAnimationsTime(): boolean {\r\n return this._captureAnimationsTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the animations time capture\r\n */\r\n public set captureAnimationsTime(value: boolean) {\r\n if (value === this._captureAnimationsTime) {\r\n return;\r\n }\r\n\r\n this._captureAnimationsTime = value;\r\n\r\n if (value) {\r\n this._onAfterAnimationsObserver = this.scene.onAfterAnimationsObservable.add(() => {\r\n this._animationsTime.endMonitoring();\r\n });\r\n } else {\r\n this.scene.onAfterAnimationsObservable.remove(this._onAfterAnimationsObserver);\r\n this._onAfterAnimationsObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for frame time capture\r\n */\r\n public get frameTimeCounter(): PerfCounter {\r\n return this._frameTime;\r\n }\r\n\r\n /**\r\n * Gets the frame time capture status\r\n */\r\n public get captureFrameTime(): boolean {\r\n return this._captureFrameTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the frame time capture\r\n */\r\n public set captureFrameTime(value: boolean) {\r\n this._captureFrameTime = value;\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for inter-frames time capture\r\n */\r\n public get interFrameTimeCounter(): PerfCounter {\r\n return this._interFrameTime;\r\n }\r\n\r\n /**\r\n * Gets the inter-frames time capture status\r\n */\r\n public get captureInterFrameTime(): boolean {\r\n return this._captureInterFrameTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the inter-frames time capture\r\n */\r\n public set captureInterFrameTime(value: boolean) {\r\n this._captureInterFrameTime = value;\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for render time capture\r\n */\r\n public get renderTimeCounter(): PerfCounter {\r\n return this._renderTime;\r\n }\r\n\r\n /**\r\n * Gets the render time capture status\r\n */\r\n public get captureRenderTime(): boolean {\r\n return this._captureRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the render time capture\r\n */\r\n public set captureRenderTime(value: boolean) {\r\n if (value === this._captureRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeDrawPhaseObserver = this.scene.onBeforeDrawPhaseObservable.add(() => {\r\n this._renderTime.beginMonitoring();\r\n Tools.StartPerformanceCounter(\"Main render\");\r\n });\r\n\r\n this._onAfterDrawPhaseObserver = this.scene.onAfterDrawPhaseObservable.add(() => {\r\n this._renderTime.endMonitoring(false);\r\n Tools.EndPerformanceCounter(\"Main render\");\r\n });\r\n } else {\r\n this.scene.onBeforeDrawPhaseObservable.remove(this._onBeforeDrawPhaseObserver);\r\n this._onBeforeDrawPhaseObserver = null;\r\n this.scene.onAfterDrawPhaseObservable.remove(this._onAfterDrawPhaseObserver);\r\n this._onAfterDrawPhaseObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for camera render time capture\r\n */\r\n public get cameraRenderTimeCounter(): PerfCounter {\r\n return this._cameraRenderTime;\r\n }\r\n\r\n /**\r\n * Gets the camera render time capture status\r\n */\r\n public get captureCameraRenderTime(): boolean {\r\n return this._captureCameraRenderTime;\r\n }\r\n\r\n /**\r\n * Enable or disable the camera render time capture\r\n */\r\n public set captureCameraRenderTime(value: boolean) {\r\n if (value === this._captureCameraRenderTime) {\r\n return;\r\n }\r\n\r\n this._captureCameraRenderTime = value;\r\n\r\n if (value) {\r\n this._onBeforeCameraRenderObserver = this.scene.onBeforeCameraRenderObservable.add((camera) => {\r\n this._cameraRenderTime.beginMonitoring();\r\n Tools.StartPerformanceCounter(`Rendering camera ${camera.name}`);\r\n });\r\n\r\n this._onAfterCameraRenderObserver = this.scene.onAfterCameraRenderObservable.add((camera) => {\r\n this._cameraRenderTime.endMonitoring(false);\r\n Tools.EndPerformanceCounter(`Rendering camera ${camera.name}`);\r\n });\r\n } else {\r\n this.scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\r\n this._onBeforeCameraRenderObserver = null;\r\n this.scene.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver);\r\n this._onAfterCameraRenderObserver = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the perf counter used for draw calls\r\n */\r\n public get drawCallsCounter(): PerfCounter {\r\n return this.scene.getEngine()._drawCalls;\r\n }\r\n\r\n /**\r\n * Instantiates a new scene instrumentation.\r\n * This class can be used to get instrumentation data from a Babylon engine\r\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#sceneinstrumentation\r\n * @param scene Defines the scene to instrument\r\n */\r\n public constructor(\r\n /**\r\n * Defines the scene to instrument\r\n */\r\n public scene: Scene) {\r\n // Before render\r\n this._onBeforeAnimationsObserver = scene.onBeforeAnimationsObservable.add(() => {\r\n if (this._captureActiveMeshesEvaluationTime) {\r\n this._activeMeshesEvaluationTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureRenderTargetsRenderTime) {\r\n this._renderTargetsRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureFrameTime) {\r\n Tools.StartPerformanceCounter(\"Scene rendering\");\r\n this._frameTime.beginMonitoring();\r\n }\r\n\r\n if (this._captureInterFrameTime) {\r\n this._interFrameTime.endMonitoring();\r\n }\r\n\r\n if (this._captureParticlesRenderTime) {\r\n this._particlesRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureSpritesRenderTime) {\r\n this._spritesRenderTime.fetchNewFrame();\r\n }\r\n\r\n if (this._captureAnimationsTime) {\r\n this._animationsTime.beginMonitoring();\r\n }\r\n\r\n this.scene.getEngine()._drawCalls.fetchNewFrame();\r\n });\r\n\r\n // After render\r\n this._onAfterRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n if (this._captureFrameTime) {\r\n Tools.EndPerformanceCounter(\"Scene rendering\");\r\n this._frameTime.endMonitoring();\r\n }\r\n\r\n if (this._captureRenderTime) {\r\n this._renderTime.endMonitoring(false);\r\n }\r\n\r\n if (this._captureInterFrameTime) {\r\n this._interFrameTime.beginMonitoring();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Dispose and release associated resources.\r\n */\r\n public dispose() {\r\n this.scene.onAfterRenderObservable.remove(this._onAfterRenderObserver);\r\n this._onAfterRenderObserver = null;\r\n\r\n this.scene.onBeforeActiveMeshesEvaluationObservable.remove(this._onBeforeActiveMeshesEvaluationObserver);\r\n this._onBeforeActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onAfterActiveMeshesEvaluationObservable.remove(this._onAfterActiveMeshesEvaluationObserver);\r\n this._onAfterActiveMeshesEvaluationObserver = null;\r\n\r\n this.scene.onBeforeRenderTargetsRenderObservable.remove(this._onBeforeRenderTargetsRenderObserver);\r\n this._onBeforeRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onAfterRenderTargetsRenderObservable.remove(this._onAfterRenderTargetsRenderObserver);\r\n this._onAfterRenderTargetsRenderObserver = null;\r\n\r\n this.scene.onBeforeAnimationsObservable.remove(this._onBeforeAnimationsObserver);\r\n this._onBeforeAnimationsObserver = null;\r\n\r\n this.scene.onBeforeParticlesRenderingObservable.remove(this._onBeforeParticlesRenderingObserver);\r\n this._onBeforeParticlesRenderingObserver = null;\r\n\r\n this.scene.onAfterParticlesRenderingObservable.remove(this._onAfterParticlesRenderingObserver);\r\n this._onAfterParticlesRenderingObserver = null;\r\n\r\n if (this._onBeforeSpritesRenderingObserver) {\r\n this.scene.onBeforeSpritesRenderingObservable.remove(this._onBeforeSpritesRenderingObserver);\r\n this._onBeforeSpritesRenderingObserver = null;\r\n }\r\n\r\n if (this._onAfterSpritesRenderingObserver) {\r\n this.scene.onAfterSpritesRenderingObservable.remove(this._onAfterSpritesRenderingObserver);\r\n this._onAfterSpritesRenderingObserver = null;\r\n }\r\n\r\n this.scene.onBeforeDrawPhaseObservable.remove(this._onBeforeDrawPhaseObserver);\r\n this._onBeforeDrawPhaseObserver = null;\r\n\r\n this.scene.onAfterDrawPhaseObservable.remove(this._onAfterDrawPhaseObserver);\r\n this._onAfterDrawPhaseObserver = null;\r\n\r\n if (this._onBeforePhysicsObserver) {\r\n this.scene.onBeforePhysicsObservable.remove(this._onBeforePhysicsObserver);\r\n this._onBeforePhysicsObserver = null;\r\n }\r\n\r\n if (this._onAfterPhysicsObserver) {\r\n this.scene.onAfterPhysicsObservable.remove(this._onAfterPhysicsObserver);\r\n this._onAfterPhysicsObserver = null;\r\n }\r\n\r\n this.scene.onAfterAnimationsObservable.remove(this._onAfterAnimationsObserver);\r\n this._onAfterAnimationsObserver = null;\r\n\r\n this.scene.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver);\r\n this._onBeforeCameraRenderObserver = null;\r\n\r\n this.scene.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver);\r\n this._onAfterCameraRenderObserver = null;\r\n\r\n (<any>this.scene) = null;\r\n }\r\n}\r\n"]}
|
package/Layers/layer.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Nullable } from "../types";
|
|
|
3
3
|
import { Scene } from "../scene";
|
|
4
4
|
import { Vector2 } from "../Maths/math.vector";
|
|
5
5
|
import { Color4 } from '../Maths/math.color';
|
|
6
|
-
import {
|
|
6
|
+
import { BaseTexture } from "../Materials/Textures/baseTexture";
|
|
7
7
|
import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture";
|
|
8
8
|
import "../Shaders/layer.fragment";
|
|
9
9
|
import "../Shaders/layer.vertex";
|
|
@@ -20,7 +20,7 @@ export declare class Layer {
|
|
|
20
20
|
/**
|
|
21
21
|
* Define the texture the layer should display.
|
|
22
22
|
*/
|
|
23
|
-
texture: Nullable<
|
|
23
|
+
texture: Nullable<BaseTexture>;
|
|
24
24
|
/**
|
|
25
25
|
* Is the layer in background or foreground.
|
|
26
26
|
*/
|