@babylonjs/core 5.45.2 → 5.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Actions/actionManager.js +6 -1
- package/Actions/actionManager.js.map +1 -1
- package/Actions/condition.js +23 -23
- package/Actions/condition.js.map +1 -1
- package/Animations/animatable.js +48 -48
- package/Animations/animatable.js.map +1 -1
- package/Animations/animation.js +53 -53
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +53 -53
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/runtimeAnimation.js +36 -36
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioEngine.js +14 -14
- package/Audio/audioEngine.js.map +1 -1
- package/Audio/audioSceneComponent.js +14 -14
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.js +47 -47
- package/Audio/sound.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/fadeInOutBehavior.js +11 -11
- package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +34 -34
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/bone.js +15 -15
- package/Bones/bone.js.map +1 -1
- package/Bones/boneIKController.js +9 -9
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.js +50 -50
- package/Bones/boneLookController.js.map +1 -1
- package/Bones/skeleton.js +35 -35
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.js +14 -14
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/dataBuffer.js +6 -6
- package/Buffers/dataBuffer.js.map +1 -1
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +42 -42
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +18 -18
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.js +178 -178
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/arcRotateCamera.js +176 -176
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +90 -90
- package/Cameras/camera.js.map +1 -1
- package/Cameras/flyCamera.js +82 -82
- package/Cameras/flyCamera.js.map +1 -1
- package/Cameras/freeCamera.js +54 -54
- package/Cameras/freeCamera.js.map +1 -1
- package/Compute/computeShader.js +12 -12
- package/Compute/computeShader.js.map +1 -1
- package/Culling/ray.d.ts +1 -1
- package/Debug/axesViewer.js +12 -12
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/debugLayer.js +21 -21
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +20 -20
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/physicsViewer.js +3 -3
- package/Debug/physicsViewer.js.map +1 -1
- package/Debug/rayHelper.js +10 -10
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +81 -81
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSource.d.ts +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +31 -31
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
- package/DeviceInput/eventFactory.d.ts +1 -1
- package/DeviceInput/eventFactory.js +4 -4
- package/DeviceInput/eventFactory.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +2 -2
- package/DeviceInput/webDeviceInputSystem.js +2 -2
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +3 -3
- package/Engines/Extensions/engine.multiRender.js +1 -1
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.js +1 -1
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Native/nativeDataStream.d.ts +1 -1
- package/Engines/Native/nativeHardwareTexture.js +3 -3
- package/Engines/Native/nativeHardwareTexture.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +5 -5
- package/Engines/Native/nativePipelineContext.js +7 -7
- package/Engines/Native/nativePipelineContext.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.js +6 -6
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +4 -4
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/Processors/shaderProcessingOptions.d.ts +1 -1
- package/Engines/WebGL/webGLHardwareTexture.js +3 -3
- package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +3 -3
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +6 -6
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +5 -5
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +11 -11
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +7 -7
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js +4 -4
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +7 -7
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +9 -9
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js +5 -5
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +10 -10
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.js +6 -6
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuQuerySet.js +3 -3
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +3 -3
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/engine.js +134 -134
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +6 -6
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.js +25 -25
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +25 -25
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.js +243 -243
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +132 -132
- package/Engines/webgpuEngine.js.map +1 -1
- package/Events/keyboardEvents.js +10 -10
- package/Events/keyboardEvents.js.map +1 -1
- package/Events/pointerEvents.js +10 -10
- package/Events/pointerEvents.js.map +1 -1
- package/Gamepads/Controllers/poseEnabledController.js +9 -9
- package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
- package/Gamepads/Controllers/webVRController.js +13 -13
- package/Gamepads/Controllers/webVRController.js.map +1 -1
- package/Gamepads/gamepad.js +20 -20
- package/Gamepads/gamepad.js.map +1 -1
- package/Gizmos/axisDragGizmo.js +45 -45
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +12 -12
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +74 -74
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +34 -34
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +40 -40
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +23 -23
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +12 -12
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.js +40 -40
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +47 -47
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.js +41 -41
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Helpers/environmentHelper.js +18 -18
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/textureDome.js +96 -96
- package/Helpers/textureDome.js.map +1 -1
- package/IAccessibilityTag.d.ts +2 -2
- package/Inputs/scene.inputManager.d.ts +4 -3
- package/Inputs/scene.inputManager.js +12 -11
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/engineInstrumentation.js +21 -21
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +90 -90
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.js +48 -48
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.js +32 -32
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +26 -26
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layer.js +40 -40
- package/Layers/layer.js.map +1 -1
- package/LensFlares/lensFlare.js +15 -15
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.js +4 -4
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +18 -18
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +115 -115
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/directionalLight.js +31 -31
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/light.js +72 -72
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.js +18 -18
- package/Lights/pointLight.js.map +1 -1
- package/Lights/spotLight.js +30 -30
- package/Lights/spotLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.js +124 -124
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +8 -8
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +14 -14
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +9 -9
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +26 -26
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +34 -34
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +14 -14
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +16 -16
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +7 -7
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/gradientBlock.js +13 -13
- package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js +30 -30
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +1 -1
- package/Materials/Node/nodeMaterial.js +60 -60
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +35 -35
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +50 -50
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.js +5 -5
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +4 -4
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +53 -55
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.js +17 -17
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +5 -5
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.js +209 -209
- package/Materials/PBR/pbrMaterial.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +5 -5
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js +6 -6
- package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +51 -51
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/baseTexture.js +99 -99
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +61 -61
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/externalTexture.js +16 -16
- package/Materials/Textures/externalTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +44 -44
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.js +31 -31
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +73 -73
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +47 -47
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.js +6 -6
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +142 -142
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +1 -1
- package/Materials/Textures/texture.js +26 -26
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +1 -1
- package/Materials/Textures/textureSampler.js +20 -20
- package/Materials/Textures/textureSampler.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +6 -6
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/thinTexture.js +39 -39
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +41 -41
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.js +6 -6
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +18 -18
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.js +9 -9
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/fresnelParameters.d.ts +2 -2
- package/Materials/fresnelParameters.js +13 -13
- package/Materials/fresnelParameters.js.map +1 -1
- package/Materials/material.detailMapConfiguration.js +5 -5
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +223 -223
- package/Materials/material.js.map +1 -1
- package/Materials/materialPluginBase.js +5 -5
- package/Materials/materialPluginBase.js.map +1 -1
- package/Materials/materialPluginEvent.d.ts +14 -14
- package/Materials/materialPluginManager.d.ts +1 -1
- package/Materials/multiMaterial.js +16 -16
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +14 -14
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +100 -100
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBufferEffectCommonAccessor.js +3 -3
- package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
- package/Maths/math.functions.js +2 -0
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.path.js +11 -11
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.vector.d.ts +27 -7
- package/Maths/math.vector.js +75 -48
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +2 -2
- package/Meshes/Compression/dracoCompression.js +23 -23
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +9 -9
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/abstractMesh.js +179 -179
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/geometry.js +32 -32
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/goldbergMesh.d.ts +1 -1
- package/Meshes/linesMesh.js +3 -3
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.js +166 -166
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/polygonMesh.js +5 -5
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/subMesh.js +59 -59
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/transformNode.js +52 -52
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +12 -12
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/arrayTools.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +3 -3
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/coroutine.d.ts +5 -5
- package/Misc/deferred.js +9 -9
- package/Misc/deferred.js.map +1 -1
- package/Misc/depthReducer.js +7 -7
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +1 -1
- package/Misc/error.d.ts +1 -1
- package/Misc/fileTools.d.ts +5 -5
- package/Misc/filesInput.js +6 -6
- package/Misc/filesInput.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +9 -9
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/observable.js +12 -12
- package/Misc/observable.js.map +1 -1
- package/Misc/perfCounter.js +16 -16
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/sceneOptimizer.js +76 -76
- package/Misc/sceneOptimizer.js.map +1 -1
- package/Misc/stringDictionary.d.ts +1 -1
- package/Misc/trajectoryClassifier.js +67 -67
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Misc/videoRecorder.js +15 -15
- package/Misc/videoRecorder.js.map +1 -1
- package/Misc/virtualJoystick.js +12 -12
- package/Misc/virtualJoystick.js.map +1 -1
- package/Morph/morphTarget.js +28 -28
- package/Morph/morphTarget.js.map +1 -1
- package/Morph/morphTargetManager.js +18 -18
- package/Morph/morphTargetManager.js.map +1 -1
- package/Offline/database.js +12 -12
- package/Offline/database.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js +25 -25
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +20 -20
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/baseParticleSystem.js +232 -232
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/cloudPoint.js +9 -9
- package/Particles/cloudPoint.js.map +1 -1
- package/Particles/gpuParticleSystem.js +123 -123
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js +102 -102
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +5 -0
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.js +18 -18
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.js +23 -23
- package/Particles/solidParticle.js.map +1 -1
- package/Physics/index.d.ts +1 -0
- package/Physics/index.js +1 -0
- package/Physics/index.js.map +1 -1
- package/Physics/v1/physicsEngine.js +14 -14
- package/Physics/v1/physicsEngine.js.map +1 -1
- package/Physics/v1/physicsImpostor.js +149 -149
- package/Physics/v1/physicsImpostor.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +6 -8
- package/Physics/v2/IPhysicsEnginePlugin.js +1 -0
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +10 -1
- package/Physics/v2/physicsBody.js +13 -1
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsConstraint.d.ts +139 -66
- package/Physics/v2/physicsConstraint.js +145 -78
- package/Physics/v2/physicsConstraint.js.map +1 -1
- package/Physics/v2/physicsEngine.js +14 -14
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +137 -129
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +68 -68
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +6 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +226 -225
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +10 -10
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/anaglyphPostProcess.js +7 -7
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.js +7 -7
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.js +28 -28
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js +7 -7
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.js +32 -32
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.js +7 -7
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.js +7 -7
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +7 -7
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.js +7 -7
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +7 -7
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +36 -36
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +7 -7
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +7 -7
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.js +7 -7
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.js +7 -7
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +42 -42
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.js +41 -41
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.js +15 -15
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +2 -2
- package/PostProcesses/postProcess.js +123 -123
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/refractionPostProcess.js +21 -21
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +7 -7
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +19 -19
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.js +7 -7
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.js +14 -14
- package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.js +7 -7
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +11 -11
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +7 -7
- package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +36 -36
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/depthRenderer.js +8 -8
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +34 -34
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.js +8 -8
- package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +22 -19
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +12 -12
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +18 -18
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +71 -68
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.js +29 -29
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +173 -168
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +51 -51
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/renderingGroup.js +25 -25
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/renderingManager.js +21 -21
- package/Rendering/renderingManager.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +18 -18
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +76 -76
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js +5 -1
- package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
- package/Shaders/fluidRenderingRender.fragment.js +7 -2
- package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
- package/Shaders/geometry.fragment.d.ts +2 -0
- package/Shaders/geometry.fragment.js +5 -1
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/geometry.vertex.d.ts +2 -0
- package/Shaders/geometry.vertex.js +8 -4
- package/Shaders/geometry.vertex.js.map +1 -1
- package/Sprites/sprite.js +16 -16
- package/Sprites/sprite.js.map +1 -1
- package/Sprites/spriteManager.js +81 -81
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteMap.js +32 -32
- package/Sprites/spriteMap.js.map +1 -1
- package/Sprites/spriteRenderer.js +6 -6
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.js +22 -22
- package/Sprites/thinSprite.js.map +1 -1
- package/States/stencilStateComposer.js +10 -10
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.js +7 -7
- package/XR/features/WebXRAnchorSystem.js.map +1 -1
- package/XR/features/WebXRControllerMovement.d.ts +3 -3
- package/XR/features/WebXRControllerMovement.js +97 -97
- package/XR/features/WebXRControllerMovement.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +24 -24
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.js +26 -26
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/XR/features/WebXRDOMOverlay.d.ts +1 -1
- package/XR/features/WebXRFeaturePointSystem.js +6 -6
- package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
- package/XR/features/WebXRHandTracking.d.ts +1 -1
- package/XR/features/WebXRHandTracking.js +95 -95
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +21 -21
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +3 -3
- package/XR/motionController/webXRMotionControllerManager.d.ts +1 -1
- package/XR/native/nativeXRFrame.js +3 -3
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +1 -1
- package/XR/webXRLayerWrapper.d.ts +2 -2
- package/XR/webXRLayerWrapper.js +17 -17
- package/XR/webXRLayerWrapper.js.map +1 -1
- package/abstractScene.d.ts +2 -2
- package/node.d.ts +1 -1
- package/node.js +71 -71
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +777 -777
- package/scene.js.map +1 -1
- package/sceneComponent.d.ts +12 -12
- package/types.d.ts +11 -11
package/scene.js
CHANGED
|
@@ -43,693 +43,9 @@ export var ScenePerformancePriority;
|
|
|
43
43
|
*/
|
|
44
44
|
export class Scene extends AbstractScene {
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param
|
|
48
|
-
* @
|
|
49
|
-
*/
|
|
50
|
-
constructor(engine, options) {
|
|
51
|
-
super();
|
|
52
|
-
// Members
|
|
53
|
-
/** @internal */
|
|
54
|
-
this._inputManager = new InputManager(this);
|
|
55
|
-
/** Define this parameter if you are using multiple cameras and you want to specify which one should be used for pointer position */
|
|
56
|
-
this.cameraToUseForPointers = null;
|
|
57
|
-
/** @internal */
|
|
58
|
-
this._isScene = true;
|
|
59
|
-
/** @internal */
|
|
60
|
-
this._blockEntityCollection = false;
|
|
61
|
-
/**
|
|
62
|
-
* Gets or sets a boolean that indicates if the scene must clear the render buffer before rendering a frame
|
|
63
|
-
*/
|
|
64
|
-
this.autoClear = true;
|
|
65
|
-
/**
|
|
66
|
-
* Gets or sets a boolean that indicates if the scene must clear the depth and stencil buffers before rendering a frame
|
|
67
|
-
*/
|
|
68
|
-
this.autoClearDepthAndStencil = true;
|
|
69
|
-
/**
|
|
70
|
-
* Defines the color used to clear the render buffer (Default is (0.2, 0.2, 0.3, 1.0))
|
|
71
|
-
*/
|
|
72
|
-
this.clearColor = new Color4(0.2, 0.2, 0.3, 1.0);
|
|
73
|
-
/**
|
|
74
|
-
* Defines the color used to simulate the ambient color (Default is (0, 0, 0))
|
|
75
|
-
*/
|
|
76
|
-
this.ambientColor = new Color3(0, 0, 0);
|
|
77
|
-
/**
|
|
78
|
-
* Intensity of the environment in all pbr material.
|
|
79
|
-
* This dims or reinforces the IBL lighting overall (reflection and diffuse).
|
|
80
|
-
* As in the majority of the scene they are the same (exception for multi room and so on),
|
|
81
|
-
* this is easier to reference from here than from all the materials.
|
|
82
|
-
*/
|
|
83
|
-
this.environmentIntensity = 1;
|
|
84
|
-
this._performancePriority = ScenePerformancePriority.BackwardCompatible;
|
|
85
|
-
this._forceWireframe = false;
|
|
86
|
-
this._skipFrustumClipping = false;
|
|
87
|
-
this._forcePointsCloud = false;
|
|
88
|
-
/**
|
|
89
|
-
* Gets or sets a boolean indicating if animations are enabled
|
|
90
|
-
*/
|
|
91
|
-
this.animationsEnabled = true;
|
|
92
|
-
this._animationPropertiesOverride = null;
|
|
93
|
-
/**
|
|
94
|
-
* Gets or sets a boolean indicating if a constant deltatime has to be used
|
|
95
|
-
* This is mostly useful for testing purposes when you do not want the animations to scale with the framerate
|
|
96
|
-
*/
|
|
97
|
-
this.useConstantAnimationDeltaTime = false;
|
|
98
|
-
/**
|
|
99
|
-
* Gets or sets a boolean indicating if the scene must keep the meshUnderPointer property updated
|
|
100
|
-
* Please note that it requires to run a ray cast through the scene on every frame
|
|
101
|
-
*/
|
|
102
|
-
this.constantlyUpdateMeshUnderPointer = false;
|
|
103
|
-
/**
|
|
104
|
-
* Defines the HTML cursor to use when hovering over interactive elements
|
|
105
|
-
*/
|
|
106
|
-
this.hoverCursor = "pointer";
|
|
107
|
-
/**
|
|
108
|
-
* Defines the HTML default cursor to use (empty by default)
|
|
109
|
-
*/
|
|
110
|
-
this.defaultCursor = "";
|
|
111
|
-
/**
|
|
112
|
-
* Defines whether cursors are handled by the scene.
|
|
113
|
-
*/
|
|
114
|
-
this.doNotHandleCursors = false;
|
|
115
|
-
/**
|
|
116
|
-
* This is used to call preventDefault() on pointer down
|
|
117
|
-
* in order to block unwanted artifacts like system double clicks
|
|
118
|
-
*/
|
|
119
|
-
this.preventDefaultOnPointerDown = true;
|
|
120
|
-
/**
|
|
121
|
-
* This is used to call preventDefault() on pointer up
|
|
122
|
-
* in order to block unwanted artifacts like system double clicks
|
|
123
|
-
*/
|
|
124
|
-
this.preventDefaultOnPointerUp = true;
|
|
125
|
-
// Metadata
|
|
126
|
-
/**
|
|
127
|
-
* Gets or sets user defined metadata
|
|
128
|
-
*/
|
|
129
|
-
this.metadata = null;
|
|
130
|
-
/**
|
|
131
|
-
* For internal use only. Please do not use.
|
|
132
|
-
*/
|
|
133
|
-
this.reservedDataStore = null;
|
|
134
|
-
/**
|
|
135
|
-
* Use this array to add regular expressions used to disable offline support for specific urls
|
|
136
|
-
*/
|
|
137
|
-
this.disableOfflineSupportExceptionRules = new Array();
|
|
138
|
-
/**
|
|
139
|
-
* An event triggered when the scene is disposed.
|
|
140
|
-
*/
|
|
141
|
-
this.onDisposeObservable = new Observable();
|
|
142
|
-
this._onDisposeObserver = null;
|
|
143
|
-
/**
|
|
144
|
-
* An event triggered before rendering the scene (right after animations and physics)
|
|
145
|
-
*/
|
|
146
|
-
this.onBeforeRenderObservable = new Observable();
|
|
147
|
-
this._onBeforeRenderObserver = null;
|
|
148
|
-
/**
|
|
149
|
-
* An event triggered after rendering the scene
|
|
150
|
-
*/
|
|
151
|
-
this.onAfterRenderObservable = new Observable();
|
|
152
|
-
/**
|
|
153
|
-
* An event triggered after rendering the scene for an active camera (When scene.render is called this will be called after each camera)
|
|
154
|
-
* This is triggered for each "sub" camera in a Camera Rig unlike onAfterCameraRenderObservable
|
|
155
|
-
*/
|
|
156
|
-
this.onAfterRenderCameraObservable = new Observable();
|
|
157
|
-
this._onAfterRenderObserver = null;
|
|
158
|
-
/**
|
|
159
|
-
* An event triggered before animating the scene
|
|
160
|
-
*/
|
|
161
|
-
this.onBeforeAnimationsObservable = new Observable();
|
|
162
|
-
/**
|
|
163
|
-
* An event triggered after animations processing
|
|
164
|
-
*/
|
|
165
|
-
this.onAfterAnimationsObservable = new Observable();
|
|
166
|
-
/**
|
|
167
|
-
* An event triggered before draw calls are ready to be sent
|
|
168
|
-
*/
|
|
169
|
-
this.onBeforeDrawPhaseObservable = new Observable();
|
|
170
|
-
/**
|
|
171
|
-
* An event triggered after draw calls have been sent
|
|
172
|
-
*/
|
|
173
|
-
this.onAfterDrawPhaseObservable = new Observable();
|
|
174
|
-
/**
|
|
175
|
-
* An event triggered when the scene is ready
|
|
176
|
-
*/
|
|
177
|
-
this.onReadyObservable = new Observable();
|
|
178
|
-
/**
|
|
179
|
-
* An event triggered before rendering a camera
|
|
180
|
-
*/
|
|
181
|
-
this.onBeforeCameraRenderObservable = new Observable();
|
|
182
|
-
this._onBeforeCameraRenderObserver = null;
|
|
183
|
-
/**
|
|
184
|
-
* An event triggered after rendering a camera
|
|
185
|
-
* This is triggered for the full rig Camera only unlike onAfterRenderCameraObservable
|
|
186
|
-
*/
|
|
187
|
-
this.onAfterCameraRenderObservable = new Observable();
|
|
188
|
-
this._onAfterCameraRenderObserver = null;
|
|
189
|
-
/**
|
|
190
|
-
* An event triggered when active meshes evaluation is about to start
|
|
191
|
-
*/
|
|
192
|
-
this.onBeforeActiveMeshesEvaluationObservable = new Observable();
|
|
193
|
-
/**
|
|
194
|
-
* An event triggered when active meshes evaluation is done
|
|
195
|
-
*/
|
|
196
|
-
this.onAfterActiveMeshesEvaluationObservable = new Observable();
|
|
197
|
-
/**
|
|
198
|
-
* An event triggered when particles rendering is about to start
|
|
199
|
-
* Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
|
|
200
|
-
*/
|
|
201
|
-
this.onBeforeParticlesRenderingObservable = new Observable();
|
|
202
|
-
/**
|
|
203
|
-
* An event triggered when particles rendering is done
|
|
204
|
-
* Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
|
|
205
|
-
*/
|
|
206
|
-
this.onAfterParticlesRenderingObservable = new Observable();
|
|
207
|
-
/**
|
|
208
|
-
* An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
|
|
209
|
-
*/
|
|
210
|
-
this.onDataLoadedObservable = new Observable();
|
|
211
|
-
/**
|
|
212
|
-
* An event triggered when a camera is created
|
|
213
|
-
*/
|
|
214
|
-
this.onNewCameraAddedObservable = new Observable();
|
|
215
|
-
/**
|
|
216
|
-
* An event triggered when a camera is removed
|
|
217
|
-
*/
|
|
218
|
-
this.onCameraRemovedObservable = new Observable();
|
|
219
|
-
/**
|
|
220
|
-
* An event triggered when a light is created
|
|
221
|
-
*/
|
|
222
|
-
this.onNewLightAddedObservable = new Observable();
|
|
223
|
-
/**
|
|
224
|
-
* An event triggered when a light is removed
|
|
225
|
-
*/
|
|
226
|
-
this.onLightRemovedObservable = new Observable();
|
|
227
|
-
/**
|
|
228
|
-
* An event triggered when a geometry is created
|
|
229
|
-
*/
|
|
230
|
-
this.onNewGeometryAddedObservable = new Observable();
|
|
231
|
-
/**
|
|
232
|
-
* An event triggered when a geometry is removed
|
|
233
|
-
*/
|
|
234
|
-
this.onGeometryRemovedObservable = new Observable();
|
|
235
|
-
/**
|
|
236
|
-
* An event triggered when a transform node is created
|
|
237
|
-
*/
|
|
238
|
-
this.onNewTransformNodeAddedObservable = new Observable();
|
|
239
|
-
/**
|
|
240
|
-
* An event triggered when a transform node is removed
|
|
241
|
-
*/
|
|
242
|
-
this.onTransformNodeRemovedObservable = new Observable();
|
|
243
|
-
/**
|
|
244
|
-
* An event triggered when a mesh is created
|
|
245
|
-
*/
|
|
246
|
-
this.onNewMeshAddedObservable = new Observable();
|
|
247
|
-
/**
|
|
248
|
-
* An event triggered when a mesh is removed
|
|
249
|
-
*/
|
|
250
|
-
this.onMeshRemovedObservable = new Observable();
|
|
251
|
-
/**
|
|
252
|
-
* An event triggered when a skeleton is created
|
|
253
|
-
*/
|
|
254
|
-
this.onNewSkeletonAddedObservable = new Observable();
|
|
255
|
-
/**
|
|
256
|
-
* An event triggered when a skeleton is removed
|
|
257
|
-
*/
|
|
258
|
-
this.onSkeletonRemovedObservable = new Observable();
|
|
259
|
-
/**
|
|
260
|
-
* An event triggered when a material is created
|
|
261
|
-
*/
|
|
262
|
-
this.onNewMaterialAddedObservable = new Observable();
|
|
263
|
-
/**
|
|
264
|
-
* An event triggered when a multi material is created
|
|
265
|
-
*/
|
|
266
|
-
this.onNewMultiMaterialAddedObservable = new Observable();
|
|
267
|
-
/**
|
|
268
|
-
* An event triggered when a material is removed
|
|
269
|
-
*/
|
|
270
|
-
this.onMaterialRemovedObservable = new Observable();
|
|
271
|
-
/**
|
|
272
|
-
* An event triggered when a multi material is removed
|
|
273
|
-
*/
|
|
274
|
-
this.onMultiMaterialRemovedObservable = new Observable();
|
|
275
|
-
/**
|
|
276
|
-
* An event triggered when a texture is created
|
|
277
|
-
*/
|
|
278
|
-
this.onNewTextureAddedObservable = new Observable();
|
|
279
|
-
/**
|
|
280
|
-
* An event triggered when a texture is removed
|
|
281
|
-
*/
|
|
282
|
-
this.onTextureRemovedObservable = new Observable();
|
|
283
|
-
/**
|
|
284
|
-
* An event triggered when render targets are about to be rendered
|
|
285
|
-
* Can happen multiple times per frame.
|
|
286
|
-
*/
|
|
287
|
-
this.onBeforeRenderTargetsRenderObservable = new Observable();
|
|
288
|
-
/**
|
|
289
|
-
* An event triggered when render targets were rendered.
|
|
290
|
-
* Can happen multiple times per frame.
|
|
291
|
-
*/
|
|
292
|
-
this.onAfterRenderTargetsRenderObservable = new Observable();
|
|
293
|
-
/**
|
|
294
|
-
* An event triggered before calculating deterministic simulation step
|
|
295
|
-
*/
|
|
296
|
-
this.onBeforeStepObservable = new Observable();
|
|
297
|
-
/**
|
|
298
|
-
* An event triggered after calculating deterministic simulation step
|
|
299
|
-
*/
|
|
300
|
-
this.onAfterStepObservable = new Observable();
|
|
301
|
-
/**
|
|
302
|
-
* An event triggered when the activeCamera property is updated
|
|
303
|
-
*/
|
|
304
|
-
this.onActiveCameraChanged = new Observable();
|
|
305
|
-
/**
|
|
306
|
-
* An event triggered when the activeCameras property is updated
|
|
307
|
-
*/
|
|
308
|
-
this.onActiveCamerasChanged = new Observable();
|
|
309
|
-
/**
|
|
310
|
-
* This Observable will be triggered before rendering each renderingGroup of each rendered camera.
|
|
311
|
-
* The RenderingGroupInfo class contains all the information about the context in which the observable is called
|
|
312
|
-
* If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
|
|
313
|
-
*/
|
|
314
|
-
this.onBeforeRenderingGroupObservable = new Observable();
|
|
315
|
-
/**
|
|
316
|
-
* This Observable will be triggered after rendering each renderingGroup of each rendered camera.
|
|
317
|
-
* The RenderingGroupInfo class contains all the information about the context in which the observable is called
|
|
318
|
-
* If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
|
|
319
|
-
*/
|
|
320
|
-
this.onAfterRenderingGroupObservable = new Observable();
|
|
321
|
-
/**
|
|
322
|
-
* This Observable will when a mesh has been imported into the scene.
|
|
323
|
-
*/
|
|
324
|
-
this.onMeshImportedObservable = new Observable();
|
|
325
|
-
/**
|
|
326
|
-
* This Observable will when an animation file has been imported into the scene.
|
|
327
|
-
*/
|
|
328
|
-
this.onAnimationFileImportedObservable = new Observable();
|
|
329
|
-
// Animations
|
|
330
|
-
/** @internal */
|
|
331
|
-
this._registeredForLateAnimationBindings = new SmartArrayNoDuplicate(256);
|
|
332
|
-
/**
|
|
333
|
-
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer move event occurs.
|
|
334
|
-
*/
|
|
335
|
-
this.skipPointerMovePicking = false;
|
|
336
|
-
/**
|
|
337
|
-
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer down event occurs.
|
|
338
|
-
*/
|
|
339
|
-
this.skipPointerDownPicking = false;
|
|
340
|
-
/**
|
|
341
|
-
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer up event occurs. Off by default.
|
|
342
|
-
*/
|
|
343
|
-
this.skipPointerUpPicking = false;
|
|
344
|
-
/**
|
|
345
|
-
* This observable event is triggered when any ponter event is triggered. It is registered during Scene.attachControl() and it is called BEFORE the 3D engine process anything (mesh/sprite picking for instance).
|
|
346
|
-
* You have the possibility to skip the process and the call to onPointerObservable by setting PointerInfoPre.skipOnPointerObservable to true
|
|
347
|
-
*/
|
|
348
|
-
this.onPrePointerObservable = new Observable();
|
|
349
|
-
/**
|
|
350
|
-
* Observable event triggered each time an input event is received from the rendering canvas
|
|
351
|
-
*/
|
|
352
|
-
this.onPointerObservable = new Observable();
|
|
353
|
-
// Keyboard
|
|
354
|
-
/**
|
|
355
|
-
* This observable event is triggered when any keyboard event si raised and registered during Scene.attachControl()
|
|
356
|
-
* You have the possibility to skip the process and the call to onKeyboardObservable by setting KeyboardInfoPre.skipOnPointerObservable to true
|
|
357
|
-
*/
|
|
358
|
-
this.onPreKeyboardObservable = new Observable();
|
|
359
|
-
/**
|
|
360
|
-
* Observable event triggered each time an keyboard event is received from the hosting window
|
|
361
|
-
*/
|
|
362
|
-
this.onKeyboardObservable = new Observable();
|
|
363
|
-
// Coordinates system
|
|
364
|
-
this._useRightHandedSystem = false;
|
|
365
|
-
// Deterministic lockstep
|
|
366
|
-
this._timeAccumulator = 0;
|
|
367
|
-
this._currentStepId = 0;
|
|
368
|
-
this._currentInternalStep = 0;
|
|
369
|
-
// Fog
|
|
370
|
-
this._fogEnabled = true;
|
|
371
|
-
this._fogMode = Scene.FOGMODE_NONE;
|
|
372
|
-
/**
|
|
373
|
-
* Gets or sets the fog color to use
|
|
374
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
375
|
-
* (Default is Color3(0.2, 0.2, 0.3))
|
|
376
|
-
*/
|
|
377
|
-
this.fogColor = new Color3(0.2, 0.2, 0.3);
|
|
378
|
-
/**
|
|
379
|
-
* Gets or sets the fog density to use
|
|
380
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
381
|
-
* (Default is 0.1)
|
|
382
|
-
*/
|
|
383
|
-
this.fogDensity = 0.1;
|
|
384
|
-
/**
|
|
385
|
-
* Gets or sets the fog start distance to use
|
|
386
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
387
|
-
* (Default is 0)
|
|
388
|
-
*/
|
|
389
|
-
this.fogStart = 0;
|
|
390
|
-
/**
|
|
391
|
-
* Gets or sets the fog end distance to use
|
|
392
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
393
|
-
* (Default is 1000)
|
|
394
|
-
*/
|
|
395
|
-
this.fogEnd = 1000.0;
|
|
396
|
-
/**
|
|
397
|
-
* Flag indicating if we need to store previous matrices when rendering
|
|
398
|
-
*/
|
|
399
|
-
this.needsPreviousWorldMatrices = false;
|
|
400
|
-
// Lights
|
|
401
|
-
this._shadowsEnabled = true;
|
|
402
|
-
this._lightsEnabled = true;
|
|
403
|
-
this._unObserveActiveCameras = null;
|
|
404
|
-
// Textures
|
|
405
|
-
this._texturesEnabled = true;
|
|
406
|
-
// Physics
|
|
407
|
-
/**
|
|
408
|
-
* Gets or sets a boolean indicating if physic engines are enabled on this scene
|
|
409
|
-
*/
|
|
410
|
-
this.physicsEnabled = true;
|
|
411
|
-
// Particles
|
|
412
|
-
/**
|
|
413
|
-
* Gets or sets a boolean indicating if particles are enabled on this scene
|
|
414
|
-
*/
|
|
415
|
-
this.particlesEnabled = true;
|
|
416
|
-
// Sprites
|
|
417
|
-
/**
|
|
418
|
-
* Gets or sets a boolean indicating if sprites are enabled on this scene
|
|
419
|
-
*/
|
|
420
|
-
this.spritesEnabled = true;
|
|
421
|
-
// Skeletons
|
|
422
|
-
this._skeletonsEnabled = true;
|
|
423
|
-
// Lens flares
|
|
424
|
-
/**
|
|
425
|
-
* Gets or sets a boolean indicating if lens flares are enabled on this scene
|
|
426
|
-
*/
|
|
427
|
-
this.lensFlaresEnabled = true;
|
|
428
|
-
// Collisions
|
|
429
|
-
/**
|
|
430
|
-
* Gets or sets a boolean indicating if collisions are enabled on this scene
|
|
431
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
|
|
432
|
-
*/
|
|
433
|
-
this.collisionsEnabled = true;
|
|
434
|
-
/**
|
|
435
|
-
* Defines the gravity applied to this scene (used only for collisions)
|
|
436
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
|
|
437
|
-
*/
|
|
438
|
-
this.gravity = new Vector3(0, -9.807, 0);
|
|
439
|
-
// Postprocesses
|
|
440
|
-
/**
|
|
441
|
-
* Gets or sets a boolean indicating if postprocesses are enabled on this scene
|
|
442
|
-
*/
|
|
443
|
-
this.postProcessesEnabled = true;
|
|
444
|
-
// Customs render targets
|
|
445
|
-
/**
|
|
446
|
-
* Gets or sets a boolean indicating if render targets are enabled on this scene
|
|
447
|
-
*/
|
|
448
|
-
this.renderTargetsEnabled = true;
|
|
449
|
-
/**
|
|
450
|
-
* Gets or sets a boolean indicating if next render targets must be dumped as image for debugging purposes
|
|
451
|
-
* We recommend not using it and instead rely on Spector.js: http://spector.babylonjs.com
|
|
452
|
-
*/
|
|
453
|
-
this.dumpNextRenderTargets = false;
|
|
454
|
-
/**
|
|
455
|
-
* The list of user defined render targets added to the scene
|
|
456
|
-
*/
|
|
457
|
-
this.customRenderTargets = new Array();
|
|
458
|
-
/**
|
|
459
|
-
* Gets the list of meshes imported to the scene through SceneLoader
|
|
460
|
-
*/
|
|
461
|
-
this.importedMeshesFiles = new Array();
|
|
462
|
-
// Probes
|
|
463
|
-
/**
|
|
464
|
-
* Gets or sets a boolean indicating if probes are enabled on this scene
|
|
465
|
-
*/
|
|
466
|
-
this.probesEnabled = true;
|
|
467
|
-
this._meshesForIntersections = new SmartArrayNoDuplicate(256);
|
|
468
|
-
// Procedural textures
|
|
469
|
-
/**
|
|
470
|
-
* Gets or sets a boolean indicating if procedural textures are enabled on this scene
|
|
471
|
-
*/
|
|
472
|
-
this.proceduralTexturesEnabled = true;
|
|
473
|
-
// Performance counters
|
|
474
|
-
this._totalVertices = new PerfCounter();
|
|
475
|
-
/** @internal */
|
|
476
|
-
this._activeIndices = new PerfCounter();
|
|
477
|
-
/** @internal */
|
|
478
|
-
this._activeParticles = new PerfCounter();
|
|
479
|
-
/** @internal */
|
|
480
|
-
this._activeBones = new PerfCounter();
|
|
481
|
-
/** @internal */
|
|
482
|
-
this._animationTime = 0;
|
|
483
|
-
/**
|
|
484
|
-
* Gets or sets a general scale for animation speed
|
|
485
|
-
* @see https://www.babylonjs-playground.com/#IBU2W7#3
|
|
486
|
-
*/
|
|
487
|
-
this.animationTimeScale = 1;
|
|
488
|
-
this._renderId = 0;
|
|
489
|
-
this._frameId = 0;
|
|
490
|
-
this._executeWhenReadyTimeoutId = null;
|
|
491
|
-
this._intermediateRendering = false;
|
|
492
|
-
this._defaultFrameBufferCleared = false;
|
|
493
|
-
this._viewUpdateFlag = -1;
|
|
494
|
-
this._projectionUpdateFlag = -1;
|
|
495
|
-
/** @internal */
|
|
496
|
-
this._toBeDisposed = new Array(256);
|
|
497
|
-
this._activeRequests = new Array();
|
|
498
|
-
/** @internal */
|
|
499
|
-
this._pendingData = new Array();
|
|
500
|
-
this._isDisposed = false;
|
|
501
|
-
/**
|
|
502
|
-
* Gets or sets a boolean indicating that all submeshes of active meshes must be rendered
|
|
503
|
-
* Use this boolean to avoid computing frustum clipping on submeshes (This could help when you are CPU bound)
|
|
504
|
-
*/
|
|
505
|
-
this.dispatchAllSubMeshesOfActiveMeshes = false;
|
|
506
|
-
this._activeMeshes = new SmartArray(256);
|
|
507
|
-
this._processedMaterials = new SmartArray(256);
|
|
508
|
-
this._renderTargets = new SmartArrayNoDuplicate(256);
|
|
509
|
-
this._materialsRenderTargets = new SmartArrayNoDuplicate(256);
|
|
510
|
-
/** @internal */
|
|
511
|
-
this._activeParticleSystems = new SmartArray(256);
|
|
512
|
-
this._activeSkeletons = new SmartArrayNoDuplicate(32);
|
|
513
|
-
this._softwareSkinnedMeshes = new SmartArrayNoDuplicate(32);
|
|
514
|
-
/** @internal */
|
|
515
|
-
this._activeAnimatables = new Array();
|
|
516
|
-
this._transformMatrix = Matrix.Zero();
|
|
517
|
-
/**
|
|
518
|
-
* Gets or sets a boolean indicating if lights must be sorted by priority (off by default)
|
|
519
|
-
* This is useful if there are more lights that the maximum simulteanous authorized
|
|
520
|
-
*/
|
|
521
|
-
this.requireLightSorting = false;
|
|
522
|
-
/**
|
|
523
|
-
* @internal
|
|
524
|
-
* Backing store of defined scene components.
|
|
525
|
-
*/
|
|
526
|
-
this._components = [];
|
|
527
|
-
/**
|
|
528
|
-
* @internal
|
|
529
|
-
* Backing store of defined scene components.
|
|
530
|
-
*/
|
|
531
|
-
this._serializableComponents = [];
|
|
532
|
-
/**
|
|
533
|
-
* List of components to register on the next registration step.
|
|
534
|
-
*/
|
|
535
|
-
this._transientComponents = [];
|
|
536
|
-
/**
|
|
537
|
-
* @internal
|
|
538
|
-
* Defines the actions happening before camera updates.
|
|
539
|
-
*/
|
|
540
|
-
this._beforeCameraUpdateStage = Stage.Create();
|
|
541
|
-
/**
|
|
542
|
-
* @internal
|
|
543
|
-
* Defines the actions happening before clear the canvas.
|
|
544
|
-
*/
|
|
545
|
-
this._beforeClearStage = Stage.Create();
|
|
546
|
-
/**
|
|
547
|
-
* @internal
|
|
548
|
-
* Defines the actions happening before clear the canvas.
|
|
549
|
-
*/
|
|
550
|
-
this._beforeRenderTargetClearStage = Stage.Create();
|
|
551
|
-
/**
|
|
552
|
-
* @internal
|
|
553
|
-
* Defines the actions when collecting render targets for the frame.
|
|
554
|
-
*/
|
|
555
|
-
this._gatherRenderTargetsStage = Stage.Create();
|
|
556
|
-
/**
|
|
557
|
-
* @internal
|
|
558
|
-
* Defines the actions happening for one camera in the frame.
|
|
559
|
-
*/
|
|
560
|
-
this._gatherActiveCameraRenderTargetsStage = Stage.Create();
|
|
561
|
-
/**
|
|
562
|
-
* @internal
|
|
563
|
-
* Defines the actions happening during the per mesh ready checks.
|
|
564
|
-
*/
|
|
565
|
-
this._isReadyForMeshStage = Stage.Create();
|
|
566
|
-
/**
|
|
567
|
-
* @internal
|
|
568
|
-
* Defines the actions happening before evaluate active mesh checks.
|
|
569
|
-
*/
|
|
570
|
-
this._beforeEvaluateActiveMeshStage = Stage.Create();
|
|
571
|
-
/**
|
|
572
|
-
* @internal
|
|
573
|
-
* Defines the actions happening during the evaluate sub mesh checks.
|
|
574
|
-
*/
|
|
575
|
-
this._evaluateSubMeshStage = Stage.Create();
|
|
576
|
-
/**
|
|
577
|
-
* @internal
|
|
578
|
-
* Defines the actions happening during the active mesh stage.
|
|
579
|
-
*/
|
|
580
|
-
this._preActiveMeshStage = Stage.Create();
|
|
581
|
-
/**
|
|
582
|
-
* @internal
|
|
583
|
-
* Defines the actions happening during the per camera render target step.
|
|
584
|
-
*/
|
|
585
|
-
this._cameraDrawRenderTargetStage = Stage.Create();
|
|
586
|
-
/**
|
|
587
|
-
* @internal
|
|
588
|
-
* Defines the actions happening just before the active camera is drawing.
|
|
589
|
-
*/
|
|
590
|
-
this._beforeCameraDrawStage = Stage.Create();
|
|
591
|
-
/**
|
|
592
|
-
* @internal
|
|
593
|
-
* Defines the actions happening just before a render target is drawing.
|
|
594
|
-
*/
|
|
595
|
-
this._beforeRenderTargetDrawStage = Stage.Create();
|
|
596
|
-
/**
|
|
597
|
-
* @internal
|
|
598
|
-
* Defines the actions happening just before a rendering group is drawing.
|
|
599
|
-
*/
|
|
600
|
-
this._beforeRenderingGroupDrawStage = Stage.Create();
|
|
601
|
-
/**
|
|
602
|
-
* @internal
|
|
603
|
-
* Defines the actions happening just before a mesh is drawing.
|
|
604
|
-
*/
|
|
605
|
-
this._beforeRenderingMeshStage = Stage.Create();
|
|
606
|
-
/**
|
|
607
|
-
* @internal
|
|
608
|
-
* Defines the actions happening just after a mesh has been drawn.
|
|
609
|
-
*/
|
|
610
|
-
this._afterRenderingMeshStage = Stage.Create();
|
|
611
|
-
/**
|
|
612
|
-
* @internal
|
|
613
|
-
* Defines the actions happening just after a rendering group has been drawn.
|
|
614
|
-
*/
|
|
615
|
-
this._afterRenderingGroupDrawStage = Stage.Create();
|
|
616
|
-
/**
|
|
617
|
-
* @internal
|
|
618
|
-
* Defines the actions happening just after the active camera has been drawn.
|
|
619
|
-
*/
|
|
620
|
-
this._afterCameraDrawStage = Stage.Create();
|
|
621
|
-
/**
|
|
622
|
-
* @internal
|
|
623
|
-
* Defines the actions happening just after the post processing
|
|
624
|
-
*/
|
|
625
|
-
this._afterCameraPostProcessStage = Stage.Create();
|
|
626
|
-
/**
|
|
627
|
-
* @internal
|
|
628
|
-
* Defines the actions happening just after a render target has been drawn.
|
|
629
|
-
*/
|
|
630
|
-
this._afterRenderTargetDrawStage = Stage.Create();
|
|
631
|
-
/**
|
|
632
|
-
* Defines the actions happening just after the post processing on a render target
|
|
633
|
-
*/
|
|
634
|
-
this._afterRenderTargetPostProcessStage = Stage.Create();
|
|
635
|
-
/**
|
|
636
|
-
* @internal
|
|
637
|
-
* Defines the actions happening just after rendering all cameras and computing intersections.
|
|
638
|
-
*/
|
|
639
|
-
this._afterRenderStage = Stage.Create();
|
|
640
|
-
/**
|
|
641
|
-
* @internal
|
|
642
|
-
* Defines the actions happening when a pointer move event happens.
|
|
643
|
-
*/
|
|
644
|
-
this._pointerMoveStage = Stage.Create();
|
|
645
|
-
/**
|
|
646
|
-
* @internal
|
|
647
|
-
* Defines the actions happening when a pointer down event happens.
|
|
648
|
-
*/
|
|
649
|
-
this._pointerDownStage = Stage.Create();
|
|
650
|
-
/**
|
|
651
|
-
* @internal
|
|
652
|
-
* Defines the actions happening when a pointer up event happens.
|
|
653
|
-
*/
|
|
654
|
-
this._pointerUpStage = Stage.Create();
|
|
655
|
-
/**
|
|
656
|
-
* an optional map from Geometry Id to Geometry index in the 'geometries' array
|
|
657
|
-
*/
|
|
658
|
-
this._geometriesByUniqueId = null;
|
|
659
|
-
this._defaultMeshCandidates = {
|
|
660
|
-
data: [],
|
|
661
|
-
length: 0
|
|
662
|
-
};
|
|
663
|
-
this._defaultSubMeshCandidates = {
|
|
664
|
-
data: [],
|
|
665
|
-
length: 0
|
|
666
|
-
};
|
|
667
|
-
this._preventFreeActiveMeshesAndRenderingGroups = false;
|
|
668
|
-
/** @internal */
|
|
669
|
-
this._activeMeshesFrozen = false;
|
|
670
|
-
/** @internal */
|
|
671
|
-
this._activeMeshesFrozenButKeepClipping = false;
|
|
672
|
-
this._skipEvaluateActiveMeshesCompletely = false;
|
|
673
|
-
/** @internal */
|
|
674
|
-
this._allowPostProcessClearColor = true;
|
|
675
|
-
/**
|
|
676
|
-
* User updatable function that will return a deterministic frame time when engine is in deterministic lock step mode
|
|
677
|
-
*/
|
|
678
|
-
this.getDeterministicFrameTime = () => {
|
|
679
|
-
return this._engine.getTimeStep();
|
|
680
|
-
};
|
|
681
|
-
/** @internal */
|
|
682
|
-
this._registeredActions = 0;
|
|
683
|
-
this._blockMaterialDirtyMechanism = false;
|
|
684
|
-
/**
|
|
685
|
-
* Internal perfCollector instance used for sharing between inspector and playground.
|
|
686
|
-
* Marked as protected to allow sharing between prototype extensions, but disallow access at toplevel.
|
|
687
|
-
*/
|
|
688
|
-
this._perfCollector = null;
|
|
689
|
-
this.activeCameras = new Array();
|
|
690
|
-
const fullOptions = {
|
|
691
|
-
useGeometryUniqueIdsMap: true,
|
|
692
|
-
useMaterialMeshMap: true,
|
|
693
|
-
useClonedMeshMap: true,
|
|
694
|
-
virtual: false,
|
|
695
|
-
...options
|
|
696
|
-
};
|
|
697
|
-
this._engine = engine || EngineStore.LastCreatedEngine;
|
|
698
|
-
if (!fullOptions.virtual) {
|
|
699
|
-
EngineStore._LastCreatedScene = this;
|
|
700
|
-
this._engine.scenes.push(this);
|
|
701
|
-
}
|
|
702
|
-
else {
|
|
703
|
-
this._engine._virtualScenes.push(this);
|
|
704
|
-
}
|
|
705
|
-
this._uid = null;
|
|
706
|
-
this._renderingManager = new RenderingManager(this);
|
|
707
|
-
if (PostProcessManager) {
|
|
708
|
-
this.postProcessManager = new PostProcessManager(this);
|
|
709
|
-
}
|
|
710
|
-
if (IsWindowObjectExist()) {
|
|
711
|
-
this.attachControl();
|
|
712
|
-
}
|
|
713
|
-
// Uniform Buffer
|
|
714
|
-
this._createUbo();
|
|
715
|
-
// Default Image processing definition
|
|
716
|
-
if (ImageProcessingConfiguration) {
|
|
717
|
-
this._imageProcessingConfiguration = new ImageProcessingConfiguration();
|
|
718
|
-
}
|
|
719
|
-
this.setDefaultCandidateProviders();
|
|
720
|
-
if (fullOptions.useGeometryUniqueIdsMap) {
|
|
721
|
-
this._geometriesByUniqueId = {};
|
|
722
|
-
}
|
|
723
|
-
this.useMaterialMeshMap = fullOptions.useMaterialMeshMap;
|
|
724
|
-
this.useClonedMeshMap = fullOptions.useClonedMeshMap;
|
|
725
|
-
if (!options || !options.virtual) {
|
|
726
|
-
this._engine.onNewSceneAddedObservable.notifyObservers(this);
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
/**
|
|
730
|
-
* Factory used to create the default material.
|
|
731
|
-
* @param scene The scene to create the material for
|
|
732
|
-
* @returns The default material
|
|
46
|
+
* Factory used to create the default material.
|
|
47
|
+
* @param scene The scene to create the material for
|
|
48
|
+
* @returns The default material
|
|
733
49
|
*/
|
|
734
50
|
static DefaultMaterialFactory(scene) {
|
|
735
51
|
throw _WarnImport("StandardMaterial");
|
|
@@ -1098,103 +414,787 @@ export class Scene extends AbstractScene {
|
|
|
1098
414
|
this._activeCamera = value;
|
|
1099
415
|
this.onActiveCameraChanged.notifyObservers(this);
|
|
1100
416
|
}
|
|
1101
|
-
/** The default material used on meshes when no material is affected */
|
|
1102
|
-
get defaultMaterial() {
|
|
1103
|
-
if (!this._defaultMaterial) {
|
|
1104
|
-
this._defaultMaterial = Scene.DefaultMaterialFactory(this);
|
|
417
|
+
/** The default material used on meshes when no material is affected */
|
|
418
|
+
get defaultMaterial() {
|
|
419
|
+
if (!this._defaultMaterial) {
|
|
420
|
+
this._defaultMaterial = Scene.DefaultMaterialFactory(this);
|
|
421
|
+
}
|
|
422
|
+
return this._defaultMaterial;
|
|
423
|
+
}
|
|
424
|
+
/** The default material used on meshes when no material is affected */
|
|
425
|
+
set defaultMaterial(value) {
|
|
426
|
+
this._defaultMaterial = value;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Gets or sets a boolean indicating if textures are enabled on this scene
|
|
430
|
+
*/
|
|
431
|
+
set texturesEnabled(value) {
|
|
432
|
+
if (this._texturesEnabled === value) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
this._texturesEnabled = value;
|
|
436
|
+
this.markAllMaterialsAsDirty(1);
|
|
437
|
+
}
|
|
438
|
+
get texturesEnabled() {
|
|
439
|
+
return this._texturesEnabled;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Gets or sets a boolean indicating if skeletons are enabled on this scene
|
|
443
|
+
*/
|
|
444
|
+
set skeletonsEnabled(value) {
|
|
445
|
+
if (this._skeletonsEnabled === value) {
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
this._skeletonsEnabled = value;
|
|
449
|
+
this.markAllMaterialsAsDirty(8);
|
|
450
|
+
}
|
|
451
|
+
get skeletonsEnabled() {
|
|
452
|
+
return this._skeletonsEnabled;
|
|
453
|
+
}
|
|
454
|
+
/** @internal */
|
|
455
|
+
get collisionCoordinator() {
|
|
456
|
+
if (!this._collisionCoordinator) {
|
|
457
|
+
this._collisionCoordinator = Scene.CollisionCoordinatorFactory();
|
|
458
|
+
this._collisionCoordinator.init(this);
|
|
459
|
+
}
|
|
460
|
+
return this._collisionCoordinator;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Gets the scene's rendering manager
|
|
464
|
+
*/
|
|
465
|
+
get renderingManager() {
|
|
466
|
+
return this._renderingManager;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Gets the list of frustum planes (built from the active camera)
|
|
470
|
+
*/
|
|
471
|
+
get frustumPlanes() {
|
|
472
|
+
return this._frustumPlanes;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Registers the transient components if needed.
|
|
476
|
+
*/
|
|
477
|
+
_registerTransientComponents() {
|
|
478
|
+
// Register components that have been associated lately to the scene.
|
|
479
|
+
if (this._transientComponents.length > 0) {
|
|
480
|
+
for (const component of this._transientComponents) {
|
|
481
|
+
component.register();
|
|
482
|
+
}
|
|
483
|
+
this._transientComponents.length = 0;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* @internal
|
|
488
|
+
* Add a component to the scene.
|
|
489
|
+
* Note that the ccomponent could be registered on th next frame if this is called after
|
|
490
|
+
* the register component stage.
|
|
491
|
+
* @param component Defines the component to add to the scene
|
|
492
|
+
*/
|
|
493
|
+
_addComponent(component) {
|
|
494
|
+
this._components.push(component);
|
|
495
|
+
this._transientComponents.push(component);
|
|
496
|
+
const serializableComponent = component;
|
|
497
|
+
if (serializableComponent.addFromContainer && serializableComponent.serialize) {
|
|
498
|
+
this._serializableComponents.push(serializableComponent);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* @internal
|
|
503
|
+
* Gets a component from the scene.
|
|
504
|
+
* @param name defines the name of the component to retrieve
|
|
505
|
+
* @returns the component or null if not present
|
|
506
|
+
*/
|
|
507
|
+
_getComponent(name) {
|
|
508
|
+
for (const component of this._components) {
|
|
509
|
+
if (component.name === name) {
|
|
510
|
+
return component;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Creates a new Scene
|
|
517
|
+
* @param engine defines the engine to use to render this scene
|
|
518
|
+
* @param options defines the scene options
|
|
519
|
+
*/
|
|
520
|
+
constructor(engine, options) {
|
|
521
|
+
super();
|
|
522
|
+
// Members
|
|
523
|
+
/** @internal */
|
|
524
|
+
this._inputManager = new InputManager(this);
|
|
525
|
+
/** Define this parameter if you are using multiple cameras and you want to specify which one should be used for pointer position */
|
|
526
|
+
this.cameraToUseForPointers = null;
|
|
527
|
+
/** @internal */
|
|
528
|
+
this._isScene = true;
|
|
529
|
+
/** @internal */
|
|
530
|
+
this._blockEntityCollection = false;
|
|
531
|
+
/**
|
|
532
|
+
* Gets or sets a boolean that indicates if the scene must clear the render buffer before rendering a frame
|
|
533
|
+
*/
|
|
534
|
+
this.autoClear = true;
|
|
535
|
+
/**
|
|
536
|
+
* Gets or sets a boolean that indicates if the scene must clear the depth and stencil buffers before rendering a frame
|
|
537
|
+
*/
|
|
538
|
+
this.autoClearDepthAndStencil = true;
|
|
539
|
+
/**
|
|
540
|
+
* Defines the color used to clear the render buffer (Default is (0.2, 0.2, 0.3, 1.0))
|
|
541
|
+
*/
|
|
542
|
+
this.clearColor = new Color4(0.2, 0.2, 0.3, 1.0);
|
|
543
|
+
/**
|
|
544
|
+
* Defines the color used to simulate the ambient color (Default is (0, 0, 0))
|
|
545
|
+
*/
|
|
546
|
+
this.ambientColor = new Color3(0, 0, 0);
|
|
547
|
+
/**
|
|
548
|
+
* Intensity of the environment in all pbr material.
|
|
549
|
+
* This dims or reinforces the IBL lighting overall (reflection and diffuse).
|
|
550
|
+
* As in the majority of the scene they are the same (exception for multi room and so on),
|
|
551
|
+
* this is easier to reference from here than from all the materials.
|
|
552
|
+
*/
|
|
553
|
+
this.environmentIntensity = 1;
|
|
554
|
+
this._performancePriority = ScenePerformancePriority.BackwardCompatible;
|
|
555
|
+
this._forceWireframe = false;
|
|
556
|
+
this._skipFrustumClipping = false;
|
|
557
|
+
this._forcePointsCloud = false;
|
|
558
|
+
/**
|
|
559
|
+
* Gets or sets a boolean indicating if animations are enabled
|
|
560
|
+
*/
|
|
561
|
+
this.animationsEnabled = true;
|
|
562
|
+
this._animationPropertiesOverride = null;
|
|
563
|
+
/**
|
|
564
|
+
* Gets or sets a boolean indicating if a constant deltatime has to be used
|
|
565
|
+
* This is mostly useful for testing purposes when you do not want the animations to scale with the framerate
|
|
566
|
+
*/
|
|
567
|
+
this.useConstantAnimationDeltaTime = false;
|
|
568
|
+
/**
|
|
569
|
+
* Gets or sets a boolean indicating if the scene must keep the meshUnderPointer property updated
|
|
570
|
+
* Please note that it requires to run a ray cast through the scene on every frame
|
|
571
|
+
*/
|
|
572
|
+
this.constantlyUpdateMeshUnderPointer = false;
|
|
573
|
+
/**
|
|
574
|
+
* Defines the HTML cursor to use when hovering over interactive elements
|
|
575
|
+
*/
|
|
576
|
+
this.hoverCursor = "pointer";
|
|
577
|
+
/**
|
|
578
|
+
* Defines the HTML default cursor to use (empty by default)
|
|
579
|
+
*/
|
|
580
|
+
this.defaultCursor = "";
|
|
581
|
+
/**
|
|
582
|
+
* Defines whether cursors are handled by the scene.
|
|
583
|
+
*/
|
|
584
|
+
this.doNotHandleCursors = false;
|
|
585
|
+
/**
|
|
586
|
+
* This is used to call preventDefault() on pointer down
|
|
587
|
+
* in order to block unwanted artifacts like system double clicks
|
|
588
|
+
*/
|
|
589
|
+
this.preventDefaultOnPointerDown = true;
|
|
590
|
+
/**
|
|
591
|
+
* This is used to call preventDefault() on pointer up
|
|
592
|
+
* in order to block unwanted artifacts like system double clicks
|
|
593
|
+
*/
|
|
594
|
+
this.preventDefaultOnPointerUp = true;
|
|
595
|
+
// Metadata
|
|
596
|
+
/**
|
|
597
|
+
* Gets or sets user defined metadata
|
|
598
|
+
*/
|
|
599
|
+
this.metadata = null;
|
|
600
|
+
/**
|
|
601
|
+
* For internal use only. Please do not use.
|
|
602
|
+
*/
|
|
603
|
+
this.reservedDataStore = null;
|
|
604
|
+
/**
|
|
605
|
+
* Use this array to add regular expressions used to disable offline support for specific urls
|
|
606
|
+
*/
|
|
607
|
+
this.disableOfflineSupportExceptionRules = new Array();
|
|
608
|
+
/**
|
|
609
|
+
* An event triggered when the scene is disposed.
|
|
610
|
+
*/
|
|
611
|
+
this.onDisposeObservable = new Observable();
|
|
612
|
+
this._onDisposeObserver = null;
|
|
613
|
+
/**
|
|
614
|
+
* An event triggered before rendering the scene (right after animations and physics)
|
|
615
|
+
*/
|
|
616
|
+
this.onBeforeRenderObservable = new Observable();
|
|
617
|
+
this._onBeforeRenderObserver = null;
|
|
618
|
+
/**
|
|
619
|
+
* An event triggered after rendering the scene
|
|
620
|
+
*/
|
|
621
|
+
this.onAfterRenderObservable = new Observable();
|
|
622
|
+
/**
|
|
623
|
+
* An event triggered after rendering the scene for an active camera (When scene.render is called this will be called after each camera)
|
|
624
|
+
* This is triggered for each "sub" camera in a Camera Rig unlike onAfterCameraRenderObservable
|
|
625
|
+
*/
|
|
626
|
+
this.onAfterRenderCameraObservable = new Observable();
|
|
627
|
+
this._onAfterRenderObserver = null;
|
|
628
|
+
/**
|
|
629
|
+
* An event triggered before animating the scene
|
|
630
|
+
*/
|
|
631
|
+
this.onBeforeAnimationsObservable = new Observable();
|
|
632
|
+
/**
|
|
633
|
+
* An event triggered after animations processing
|
|
634
|
+
*/
|
|
635
|
+
this.onAfterAnimationsObservable = new Observable();
|
|
636
|
+
/**
|
|
637
|
+
* An event triggered before draw calls are ready to be sent
|
|
638
|
+
*/
|
|
639
|
+
this.onBeforeDrawPhaseObservable = new Observable();
|
|
640
|
+
/**
|
|
641
|
+
* An event triggered after draw calls have been sent
|
|
642
|
+
*/
|
|
643
|
+
this.onAfterDrawPhaseObservable = new Observable();
|
|
644
|
+
/**
|
|
645
|
+
* An event triggered when the scene is ready
|
|
646
|
+
*/
|
|
647
|
+
this.onReadyObservable = new Observable();
|
|
648
|
+
/**
|
|
649
|
+
* An event triggered before rendering a camera
|
|
650
|
+
*/
|
|
651
|
+
this.onBeforeCameraRenderObservable = new Observable();
|
|
652
|
+
this._onBeforeCameraRenderObserver = null;
|
|
653
|
+
/**
|
|
654
|
+
* An event triggered after rendering a camera
|
|
655
|
+
* This is triggered for the full rig Camera only unlike onAfterRenderCameraObservable
|
|
656
|
+
*/
|
|
657
|
+
this.onAfterCameraRenderObservable = new Observable();
|
|
658
|
+
this._onAfterCameraRenderObserver = null;
|
|
659
|
+
/**
|
|
660
|
+
* An event triggered when active meshes evaluation is about to start
|
|
661
|
+
*/
|
|
662
|
+
this.onBeforeActiveMeshesEvaluationObservable = new Observable();
|
|
663
|
+
/**
|
|
664
|
+
* An event triggered when active meshes evaluation is done
|
|
665
|
+
*/
|
|
666
|
+
this.onAfterActiveMeshesEvaluationObservable = new Observable();
|
|
667
|
+
/**
|
|
668
|
+
* An event triggered when particles rendering is about to start
|
|
669
|
+
* Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
|
|
670
|
+
*/
|
|
671
|
+
this.onBeforeParticlesRenderingObservable = new Observable();
|
|
672
|
+
/**
|
|
673
|
+
* An event triggered when particles rendering is done
|
|
674
|
+
* Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
|
|
675
|
+
*/
|
|
676
|
+
this.onAfterParticlesRenderingObservable = new Observable();
|
|
677
|
+
/**
|
|
678
|
+
* An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
|
|
679
|
+
*/
|
|
680
|
+
this.onDataLoadedObservable = new Observable();
|
|
681
|
+
/**
|
|
682
|
+
* An event triggered when a camera is created
|
|
683
|
+
*/
|
|
684
|
+
this.onNewCameraAddedObservable = new Observable();
|
|
685
|
+
/**
|
|
686
|
+
* An event triggered when a camera is removed
|
|
687
|
+
*/
|
|
688
|
+
this.onCameraRemovedObservable = new Observable();
|
|
689
|
+
/**
|
|
690
|
+
* An event triggered when a light is created
|
|
691
|
+
*/
|
|
692
|
+
this.onNewLightAddedObservable = new Observable();
|
|
693
|
+
/**
|
|
694
|
+
* An event triggered when a light is removed
|
|
695
|
+
*/
|
|
696
|
+
this.onLightRemovedObservable = new Observable();
|
|
697
|
+
/**
|
|
698
|
+
* An event triggered when a geometry is created
|
|
699
|
+
*/
|
|
700
|
+
this.onNewGeometryAddedObservable = new Observable();
|
|
701
|
+
/**
|
|
702
|
+
* An event triggered when a geometry is removed
|
|
703
|
+
*/
|
|
704
|
+
this.onGeometryRemovedObservable = new Observable();
|
|
705
|
+
/**
|
|
706
|
+
* An event triggered when a transform node is created
|
|
707
|
+
*/
|
|
708
|
+
this.onNewTransformNodeAddedObservable = new Observable();
|
|
709
|
+
/**
|
|
710
|
+
* An event triggered when a transform node is removed
|
|
711
|
+
*/
|
|
712
|
+
this.onTransformNodeRemovedObservable = new Observable();
|
|
713
|
+
/**
|
|
714
|
+
* An event triggered when a mesh is created
|
|
715
|
+
*/
|
|
716
|
+
this.onNewMeshAddedObservable = new Observable();
|
|
717
|
+
/**
|
|
718
|
+
* An event triggered when a mesh is removed
|
|
719
|
+
*/
|
|
720
|
+
this.onMeshRemovedObservable = new Observable();
|
|
721
|
+
/**
|
|
722
|
+
* An event triggered when a skeleton is created
|
|
723
|
+
*/
|
|
724
|
+
this.onNewSkeletonAddedObservable = new Observable();
|
|
725
|
+
/**
|
|
726
|
+
* An event triggered when a skeleton is removed
|
|
727
|
+
*/
|
|
728
|
+
this.onSkeletonRemovedObservable = new Observable();
|
|
729
|
+
/**
|
|
730
|
+
* An event triggered when a material is created
|
|
731
|
+
*/
|
|
732
|
+
this.onNewMaterialAddedObservable = new Observable();
|
|
733
|
+
/**
|
|
734
|
+
* An event triggered when a multi material is created
|
|
735
|
+
*/
|
|
736
|
+
this.onNewMultiMaterialAddedObservable = new Observable();
|
|
737
|
+
/**
|
|
738
|
+
* An event triggered when a material is removed
|
|
739
|
+
*/
|
|
740
|
+
this.onMaterialRemovedObservable = new Observable();
|
|
741
|
+
/**
|
|
742
|
+
* An event triggered when a multi material is removed
|
|
743
|
+
*/
|
|
744
|
+
this.onMultiMaterialRemovedObservable = new Observable();
|
|
745
|
+
/**
|
|
746
|
+
* An event triggered when a texture is created
|
|
747
|
+
*/
|
|
748
|
+
this.onNewTextureAddedObservable = new Observable();
|
|
749
|
+
/**
|
|
750
|
+
* An event triggered when a texture is removed
|
|
751
|
+
*/
|
|
752
|
+
this.onTextureRemovedObservable = new Observable();
|
|
753
|
+
/**
|
|
754
|
+
* An event triggered when render targets are about to be rendered
|
|
755
|
+
* Can happen multiple times per frame.
|
|
756
|
+
*/
|
|
757
|
+
this.onBeforeRenderTargetsRenderObservable = new Observable();
|
|
758
|
+
/**
|
|
759
|
+
* An event triggered when render targets were rendered.
|
|
760
|
+
* Can happen multiple times per frame.
|
|
761
|
+
*/
|
|
762
|
+
this.onAfterRenderTargetsRenderObservable = new Observable();
|
|
763
|
+
/**
|
|
764
|
+
* An event triggered before calculating deterministic simulation step
|
|
765
|
+
*/
|
|
766
|
+
this.onBeforeStepObservable = new Observable();
|
|
767
|
+
/**
|
|
768
|
+
* An event triggered after calculating deterministic simulation step
|
|
769
|
+
*/
|
|
770
|
+
this.onAfterStepObservable = new Observable();
|
|
771
|
+
/**
|
|
772
|
+
* An event triggered when the activeCamera property is updated
|
|
773
|
+
*/
|
|
774
|
+
this.onActiveCameraChanged = new Observable();
|
|
775
|
+
/**
|
|
776
|
+
* An event triggered when the activeCameras property is updated
|
|
777
|
+
*/
|
|
778
|
+
this.onActiveCamerasChanged = new Observable();
|
|
779
|
+
/**
|
|
780
|
+
* This Observable will be triggered before rendering each renderingGroup of each rendered camera.
|
|
781
|
+
* The RenderingGroupInfo class contains all the information about the context in which the observable is called
|
|
782
|
+
* If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
|
|
783
|
+
*/
|
|
784
|
+
this.onBeforeRenderingGroupObservable = new Observable();
|
|
785
|
+
/**
|
|
786
|
+
* This Observable will be triggered after rendering each renderingGroup of each rendered camera.
|
|
787
|
+
* The RenderingGroupInfo class contains all the information about the context in which the observable is called
|
|
788
|
+
* If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
|
|
789
|
+
*/
|
|
790
|
+
this.onAfterRenderingGroupObservable = new Observable();
|
|
791
|
+
/**
|
|
792
|
+
* This Observable will when a mesh has been imported into the scene.
|
|
793
|
+
*/
|
|
794
|
+
this.onMeshImportedObservable = new Observable();
|
|
795
|
+
/**
|
|
796
|
+
* This Observable will when an animation file has been imported into the scene.
|
|
797
|
+
*/
|
|
798
|
+
this.onAnimationFileImportedObservable = new Observable();
|
|
799
|
+
// Animations
|
|
800
|
+
/** @internal */
|
|
801
|
+
this._registeredForLateAnimationBindings = new SmartArrayNoDuplicate(256);
|
|
802
|
+
/**
|
|
803
|
+
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer move event occurs.
|
|
804
|
+
*/
|
|
805
|
+
this.skipPointerMovePicking = false;
|
|
806
|
+
/**
|
|
807
|
+
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer down event occurs.
|
|
808
|
+
*/
|
|
809
|
+
this.skipPointerDownPicking = false;
|
|
810
|
+
/**
|
|
811
|
+
* Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer up event occurs. Off by default.
|
|
812
|
+
*/
|
|
813
|
+
this.skipPointerUpPicking = false;
|
|
814
|
+
/**
|
|
815
|
+
* This observable event is triggered when any ponter event is triggered. It is registered during Scene.attachControl() and it is called BEFORE the 3D engine process anything (mesh/sprite picking for instance).
|
|
816
|
+
* You have the possibility to skip the process and the call to onPointerObservable by setting PointerInfoPre.skipOnPointerObservable to true
|
|
817
|
+
*/
|
|
818
|
+
this.onPrePointerObservable = new Observable();
|
|
819
|
+
/**
|
|
820
|
+
* Observable event triggered each time an input event is received from the rendering canvas
|
|
821
|
+
*/
|
|
822
|
+
this.onPointerObservable = new Observable();
|
|
823
|
+
// Keyboard
|
|
824
|
+
/**
|
|
825
|
+
* This observable event is triggered when any keyboard event si raised and registered during Scene.attachControl()
|
|
826
|
+
* You have the possibility to skip the process and the call to onKeyboardObservable by setting KeyboardInfoPre.skipOnPointerObservable to true
|
|
827
|
+
*/
|
|
828
|
+
this.onPreKeyboardObservable = new Observable();
|
|
829
|
+
/**
|
|
830
|
+
* Observable event triggered each time an keyboard event is received from the hosting window
|
|
831
|
+
*/
|
|
832
|
+
this.onKeyboardObservable = new Observable();
|
|
833
|
+
// Coordinates system
|
|
834
|
+
this._useRightHandedSystem = false;
|
|
835
|
+
// Deterministic lockstep
|
|
836
|
+
this._timeAccumulator = 0;
|
|
837
|
+
this._currentStepId = 0;
|
|
838
|
+
this._currentInternalStep = 0;
|
|
839
|
+
// Fog
|
|
840
|
+
this._fogEnabled = true;
|
|
841
|
+
this._fogMode = Scene.FOGMODE_NONE;
|
|
842
|
+
/**
|
|
843
|
+
* Gets or sets the fog color to use
|
|
844
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
845
|
+
* (Default is Color3(0.2, 0.2, 0.3))
|
|
846
|
+
*/
|
|
847
|
+
this.fogColor = new Color3(0.2, 0.2, 0.3);
|
|
848
|
+
/**
|
|
849
|
+
* Gets or sets the fog density to use
|
|
850
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
851
|
+
* (Default is 0.1)
|
|
852
|
+
*/
|
|
853
|
+
this.fogDensity = 0.1;
|
|
854
|
+
/**
|
|
855
|
+
* Gets or sets the fog start distance to use
|
|
856
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
857
|
+
* (Default is 0)
|
|
858
|
+
*/
|
|
859
|
+
this.fogStart = 0;
|
|
860
|
+
/**
|
|
861
|
+
* Gets or sets the fog end distance to use
|
|
862
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
|
|
863
|
+
* (Default is 1000)
|
|
864
|
+
*/
|
|
865
|
+
this.fogEnd = 1000.0;
|
|
866
|
+
/**
|
|
867
|
+
* Flag indicating if we need to store previous matrices when rendering
|
|
868
|
+
*/
|
|
869
|
+
this.needsPreviousWorldMatrices = false;
|
|
870
|
+
// Lights
|
|
871
|
+
this._shadowsEnabled = true;
|
|
872
|
+
this._lightsEnabled = true;
|
|
873
|
+
this._unObserveActiveCameras = null;
|
|
874
|
+
// Textures
|
|
875
|
+
this._texturesEnabled = true;
|
|
876
|
+
// Physics
|
|
877
|
+
/**
|
|
878
|
+
* Gets or sets a boolean indicating if physic engines are enabled on this scene
|
|
879
|
+
*/
|
|
880
|
+
this.physicsEnabled = true;
|
|
881
|
+
// Particles
|
|
882
|
+
/**
|
|
883
|
+
* Gets or sets a boolean indicating if particles are enabled on this scene
|
|
884
|
+
*/
|
|
885
|
+
this.particlesEnabled = true;
|
|
886
|
+
// Sprites
|
|
887
|
+
/**
|
|
888
|
+
* Gets or sets a boolean indicating if sprites are enabled on this scene
|
|
889
|
+
*/
|
|
890
|
+
this.spritesEnabled = true;
|
|
891
|
+
// Skeletons
|
|
892
|
+
this._skeletonsEnabled = true;
|
|
893
|
+
// Lens flares
|
|
894
|
+
/**
|
|
895
|
+
* Gets or sets a boolean indicating if lens flares are enabled on this scene
|
|
896
|
+
*/
|
|
897
|
+
this.lensFlaresEnabled = true;
|
|
898
|
+
// Collisions
|
|
899
|
+
/**
|
|
900
|
+
* Gets or sets a boolean indicating if collisions are enabled on this scene
|
|
901
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
|
|
902
|
+
*/
|
|
903
|
+
this.collisionsEnabled = true;
|
|
904
|
+
/**
|
|
905
|
+
* Defines the gravity applied to this scene (used only for collisions)
|
|
906
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
|
|
907
|
+
*/
|
|
908
|
+
this.gravity = new Vector3(0, -9.807, 0);
|
|
909
|
+
// Postprocesses
|
|
910
|
+
/**
|
|
911
|
+
* Gets or sets a boolean indicating if postprocesses are enabled on this scene
|
|
912
|
+
*/
|
|
913
|
+
this.postProcessesEnabled = true;
|
|
914
|
+
// Customs render targets
|
|
915
|
+
/**
|
|
916
|
+
* Gets or sets a boolean indicating if render targets are enabled on this scene
|
|
917
|
+
*/
|
|
918
|
+
this.renderTargetsEnabled = true;
|
|
919
|
+
/**
|
|
920
|
+
* Gets or sets a boolean indicating if next render targets must be dumped as image for debugging purposes
|
|
921
|
+
* We recommend not using it and instead rely on Spector.js: http://spector.babylonjs.com
|
|
922
|
+
*/
|
|
923
|
+
this.dumpNextRenderTargets = false;
|
|
924
|
+
/**
|
|
925
|
+
* The list of user defined render targets added to the scene
|
|
926
|
+
*/
|
|
927
|
+
this.customRenderTargets = new Array();
|
|
928
|
+
/**
|
|
929
|
+
* Gets the list of meshes imported to the scene through SceneLoader
|
|
930
|
+
*/
|
|
931
|
+
this.importedMeshesFiles = new Array();
|
|
932
|
+
// Probes
|
|
933
|
+
/**
|
|
934
|
+
* Gets or sets a boolean indicating if probes are enabled on this scene
|
|
935
|
+
*/
|
|
936
|
+
this.probesEnabled = true;
|
|
937
|
+
this._meshesForIntersections = new SmartArrayNoDuplicate(256);
|
|
938
|
+
// Procedural textures
|
|
939
|
+
/**
|
|
940
|
+
* Gets or sets a boolean indicating if procedural textures are enabled on this scene
|
|
941
|
+
*/
|
|
942
|
+
this.proceduralTexturesEnabled = true;
|
|
943
|
+
// Performance counters
|
|
944
|
+
this._totalVertices = new PerfCounter();
|
|
945
|
+
/** @internal */
|
|
946
|
+
this._activeIndices = new PerfCounter();
|
|
947
|
+
/** @internal */
|
|
948
|
+
this._activeParticles = new PerfCounter();
|
|
949
|
+
/** @internal */
|
|
950
|
+
this._activeBones = new PerfCounter();
|
|
951
|
+
/** @internal */
|
|
952
|
+
this._animationTime = 0;
|
|
953
|
+
/**
|
|
954
|
+
* Gets or sets a general scale for animation speed
|
|
955
|
+
* @see https://www.babylonjs-playground.com/#IBU2W7#3
|
|
956
|
+
*/
|
|
957
|
+
this.animationTimeScale = 1;
|
|
958
|
+
this._renderId = 0;
|
|
959
|
+
this._frameId = 0;
|
|
960
|
+
this._executeWhenReadyTimeoutId = null;
|
|
961
|
+
this._intermediateRendering = false;
|
|
962
|
+
this._defaultFrameBufferCleared = false;
|
|
963
|
+
this._viewUpdateFlag = -1;
|
|
964
|
+
this._projectionUpdateFlag = -1;
|
|
965
|
+
/** @internal */
|
|
966
|
+
this._toBeDisposed = new Array(256);
|
|
967
|
+
this._activeRequests = new Array();
|
|
968
|
+
/** @internal */
|
|
969
|
+
this._pendingData = new Array();
|
|
970
|
+
this._isDisposed = false;
|
|
971
|
+
/**
|
|
972
|
+
* Gets or sets a boolean indicating that all submeshes of active meshes must be rendered
|
|
973
|
+
* Use this boolean to avoid computing frustum clipping on submeshes (This could help when you are CPU bound)
|
|
974
|
+
*/
|
|
975
|
+
this.dispatchAllSubMeshesOfActiveMeshes = false;
|
|
976
|
+
this._activeMeshes = new SmartArray(256);
|
|
977
|
+
this._processedMaterials = new SmartArray(256);
|
|
978
|
+
this._renderTargets = new SmartArrayNoDuplicate(256);
|
|
979
|
+
this._materialsRenderTargets = new SmartArrayNoDuplicate(256);
|
|
980
|
+
/** @internal */
|
|
981
|
+
this._activeParticleSystems = new SmartArray(256);
|
|
982
|
+
this._activeSkeletons = new SmartArrayNoDuplicate(32);
|
|
983
|
+
this._softwareSkinnedMeshes = new SmartArrayNoDuplicate(32);
|
|
984
|
+
/** @internal */
|
|
985
|
+
this._activeAnimatables = new Array();
|
|
986
|
+
this._transformMatrix = Matrix.Zero();
|
|
987
|
+
/**
|
|
988
|
+
* Gets or sets a boolean indicating if lights must be sorted by priority (off by default)
|
|
989
|
+
* This is useful if there are more lights that the maximum simulteanous authorized
|
|
990
|
+
*/
|
|
991
|
+
this.requireLightSorting = false;
|
|
992
|
+
/**
|
|
993
|
+
* @internal
|
|
994
|
+
* Backing store of defined scene components.
|
|
995
|
+
*/
|
|
996
|
+
this._components = [];
|
|
997
|
+
/**
|
|
998
|
+
* @internal
|
|
999
|
+
* Backing store of defined scene components.
|
|
1000
|
+
*/
|
|
1001
|
+
this._serializableComponents = [];
|
|
1002
|
+
/**
|
|
1003
|
+
* List of components to register on the next registration step.
|
|
1004
|
+
*/
|
|
1005
|
+
this._transientComponents = [];
|
|
1006
|
+
/**
|
|
1007
|
+
* @internal
|
|
1008
|
+
* Defines the actions happening before camera updates.
|
|
1009
|
+
*/
|
|
1010
|
+
this._beforeCameraUpdateStage = Stage.Create();
|
|
1011
|
+
/**
|
|
1012
|
+
* @internal
|
|
1013
|
+
* Defines the actions happening before clear the canvas.
|
|
1014
|
+
*/
|
|
1015
|
+
this._beforeClearStage = Stage.Create();
|
|
1016
|
+
/**
|
|
1017
|
+
* @internal
|
|
1018
|
+
* Defines the actions happening before clear the canvas.
|
|
1019
|
+
*/
|
|
1020
|
+
this._beforeRenderTargetClearStage = Stage.Create();
|
|
1021
|
+
/**
|
|
1022
|
+
* @internal
|
|
1023
|
+
* Defines the actions when collecting render targets for the frame.
|
|
1024
|
+
*/
|
|
1025
|
+
this._gatherRenderTargetsStage = Stage.Create();
|
|
1026
|
+
/**
|
|
1027
|
+
* @internal
|
|
1028
|
+
* Defines the actions happening for one camera in the frame.
|
|
1029
|
+
*/
|
|
1030
|
+
this._gatherActiveCameraRenderTargetsStage = Stage.Create();
|
|
1031
|
+
/**
|
|
1032
|
+
* @internal
|
|
1033
|
+
* Defines the actions happening during the per mesh ready checks.
|
|
1034
|
+
*/
|
|
1035
|
+
this._isReadyForMeshStage = Stage.Create();
|
|
1036
|
+
/**
|
|
1037
|
+
* @internal
|
|
1038
|
+
* Defines the actions happening before evaluate active mesh checks.
|
|
1039
|
+
*/
|
|
1040
|
+
this._beforeEvaluateActiveMeshStage = Stage.Create();
|
|
1041
|
+
/**
|
|
1042
|
+
* @internal
|
|
1043
|
+
* Defines the actions happening during the evaluate sub mesh checks.
|
|
1044
|
+
*/
|
|
1045
|
+
this._evaluateSubMeshStage = Stage.Create();
|
|
1046
|
+
/**
|
|
1047
|
+
* @internal
|
|
1048
|
+
* Defines the actions happening during the active mesh stage.
|
|
1049
|
+
*/
|
|
1050
|
+
this._preActiveMeshStage = Stage.Create();
|
|
1051
|
+
/**
|
|
1052
|
+
* @internal
|
|
1053
|
+
* Defines the actions happening during the per camera render target step.
|
|
1054
|
+
*/
|
|
1055
|
+
this._cameraDrawRenderTargetStage = Stage.Create();
|
|
1056
|
+
/**
|
|
1057
|
+
* @internal
|
|
1058
|
+
* Defines the actions happening just before the active camera is drawing.
|
|
1059
|
+
*/
|
|
1060
|
+
this._beforeCameraDrawStage = Stage.Create();
|
|
1061
|
+
/**
|
|
1062
|
+
* @internal
|
|
1063
|
+
* Defines the actions happening just before a render target is drawing.
|
|
1064
|
+
*/
|
|
1065
|
+
this._beforeRenderTargetDrawStage = Stage.Create();
|
|
1066
|
+
/**
|
|
1067
|
+
* @internal
|
|
1068
|
+
* Defines the actions happening just before a rendering group is drawing.
|
|
1069
|
+
*/
|
|
1070
|
+
this._beforeRenderingGroupDrawStage = Stage.Create();
|
|
1071
|
+
/**
|
|
1072
|
+
* @internal
|
|
1073
|
+
* Defines the actions happening just before a mesh is drawing.
|
|
1074
|
+
*/
|
|
1075
|
+
this._beforeRenderingMeshStage = Stage.Create();
|
|
1076
|
+
/**
|
|
1077
|
+
* @internal
|
|
1078
|
+
* Defines the actions happening just after a mesh has been drawn.
|
|
1079
|
+
*/
|
|
1080
|
+
this._afterRenderingMeshStage = Stage.Create();
|
|
1081
|
+
/**
|
|
1082
|
+
* @internal
|
|
1083
|
+
* Defines the actions happening just after a rendering group has been drawn.
|
|
1084
|
+
*/
|
|
1085
|
+
this._afterRenderingGroupDrawStage = Stage.Create();
|
|
1086
|
+
/**
|
|
1087
|
+
* @internal
|
|
1088
|
+
* Defines the actions happening just after the active camera has been drawn.
|
|
1089
|
+
*/
|
|
1090
|
+
this._afterCameraDrawStage = Stage.Create();
|
|
1091
|
+
/**
|
|
1092
|
+
* @internal
|
|
1093
|
+
* Defines the actions happening just after the post processing
|
|
1094
|
+
*/
|
|
1095
|
+
this._afterCameraPostProcessStage = Stage.Create();
|
|
1096
|
+
/**
|
|
1097
|
+
* @internal
|
|
1098
|
+
* Defines the actions happening just after a render target has been drawn.
|
|
1099
|
+
*/
|
|
1100
|
+
this._afterRenderTargetDrawStage = Stage.Create();
|
|
1101
|
+
/**
|
|
1102
|
+
* Defines the actions happening just after the post processing on a render target
|
|
1103
|
+
*/
|
|
1104
|
+
this._afterRenderTargetPostProcessStage = Stage.Create();
|
|
1105
|
+
/**
|
|
1106
|
+
* @internal
|
|
1107
|
+
* Defines the actions happening just after rendering all cameras and computing intersections.
|
|
1108
|
+
*/
|
|
1109
|
+
this._afterRenderStage = Stage.Create();
|
|
1110
|
+
/**
|
|
1111
|
+
* @internal
|
|
1112
|
+
* Defines the actions happening when a pointer move event happens.
|
|
1113
|
+
*/
|
|
1114
|
+
this._pointerMoveStage = Stage.Create();
|
|
1115
|
+
/**
|
|
1116
|
+
* @internal
|
|
1117
|
+
* Defines the actions happening when a pointer down event happens.
|
|
1118
|
+
*/
|
|
1119
|
+
this._pointerDownStage = Stage.Create();
|
|
1120
|
+
/**
|
|
1121
|
+
* @internal
|
|
1122
|
+
* Defines the actions happening when a pointer up event happens.
|
|
1123
|
+
*/
|
|
1124
|
+
this._pointerUpStage = Stage.Create();
|
|
1125
|
+
/**
|
|
1126
|
+
* an optional map from Geometry Id to Geometry index in the 'geometries' array
|
|
1127
|
+
*/
|
|
1128
|
+
this._geometriesByUniqueId = null;
|
|
1129
|
+
this._defaultMeshCandidates = {
|
|
1130
|
+
data: [],
|
|
1131
|
+
length: 0
|
|
1132
|
+
};
|
|
1133
|
+
this._defaultSubMeshCandidates = {
|
|
1134
|
+
data: [],
|
|
1135
|
+
length: 0
|
|
1136
|
+
};
|
|
1137
|
+
this._preventFreeActiveMeshesAndRenderingGroups = false;
|
|
1138
|
+
/** @internal */
|
|
1139
|
+
this._activeMeshesFrozen = false;
|
|
1140
|
+
/** @internal */
|
|
1141
|
+
this._activeMeshesFrozenButKeepClipping = false;
|
|
1142
|
+
this._skipEvaluateActiveMeshesCompletely = false;
|
|
1143
|
+
/** @internal */
|
|
1144
|
+
this._allowPostProcessClearColor = true;
|
|
1145
|
+
/**
|
|
1146
|
+
* User updatable function that will return a deterministic frame time when engine is in deterministic lock step mode
|
|
1147
|
+
*/
|
|
1148
|
+
this.getDeterministicFrameTime = () => {
|
|
1149
|
+
return this._engine.getTimeStep();
|
|
1150
|
+
};
|
|
1151
|
+
/** @internal */
|
|
1152
|
+
this._registeredActions = 0;
|
|
1153
|
+
this._blockMaterialDirtyMechanism = false;
|
|
1154
|
+
/**
|
|
1155
|
+
* Internal perfCollector instance used for sharing between inspector and playground.
|
|
1156
|
+
* Marked as protected to allow sharing between prototype extensions, but disallow access at toplevel.
|
|
1157
|
+
*/
|
|
1158
|
+
this._perfCollector = null;
|
|
1159
|
+
this.activeCameras = new Array();
|
|
1160
|
+
const fullOptions = {
|
|
1161
|
+
useGeometryUniqueIdsMap: true,
|
|
1162
|
+
useMaterialMeshMap: true,
|
|
1163
|
+
useClonedMeshMap: true,
|
|
1164
|
+
virtual: false,
|
|
1165
|
+
...options
|
|
1166
|
+
};
|
|
1167
|
+
this._engine = engine || EngineStore.LastCreatedEngine;
|
|
1168
|
+
if (!fullOptions.virtual) {
|
|
1169
|
+
EngineStore._LastCreatedScene = this;
|
|
1170
|
+
this._engine.scenes.push(this);
|
|
1105
1171
|
}
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
/** The default material used on meshes when no material is affected */
|
|
1109
|
-
set defaultMaterial(value) {
|
|
1110
|
-
this._defaultMaterial = value;
|
|
1111
|
-
}
|
|
1112
|
-
/**
|
|
1113
|
-
* Gets or sets a boolean indicating if textures are enabled on this scene
|
|
1114
|
-
*/
|
|
1115
|
-
set texturesEnabled(value) {
|
|
1116
|
-
if (this._texturesEnabled === value) {
|
|
1117
|
-
return;
|
|
1172
|
+
else {
|
|
1173
|
+
this._engine._virtualScenes.push(this);
|
|
1118
1174
|
}
|
|
1119
|
-
this.
|
|
1120
|
-
this.
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
return this._texturesEnabled;
|
|
1124
|
-
}
|
|
1125
|
-
/**
|
|
1126
|
-
* Gets or sets a boolean indicating if skeletons are enabled on this scene
|
|
1127
|
-
*/
|
|
1128
|
-
set skeletonsEnabled(value) {
|
|
1129
|
-
if (this._skeletonsEnabled === value) {
|
|
1130
|
-
return;
|
|
1175
|
+
this._uid = null;
|
|
1176
|
+
this._renderingManager = new RenderingManager(this);
|
|
1177
|
+
if (PostProcessManager) {
|
|
1178
|
+
this.postProcessManager = new PostProcessManager(this);
|
|
1131
1179
|
}
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
}
|
|
1135
|
-
get skeletonsEnabled() {
|
|
1136
|
-
return this._skeletonsEnabled;
|
|
1137
|
-
}
|
|
1138
|
-
/** @internal */
|
|
1139
|
-
get collisionCoordinator() {
|
|
1140
|
-
if (!this._collisionCoordinator) {
|
|
1141
|
-
this._collisionCoordinator = Scene.CollisionCoordinatorFactory();
|
|
1142
|
-
this._collisionCoordinator.init(this);
|
|
1180
|
+
if (IsWindowObjectExist()) {
|
|
1181
|
+
this.attachControl();
|
|
1143
1182
|
}
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
get renderingManager() {
|
|
1150
|
-
return this._renderingManager;
|
|
1151
|
-
}
|
|
1152
|
-
/**
|
|
1153
|
-
* Gets the list of frustum planes (built from the active camera)
|
|
1154
|
-
*/
|
|
1155
|
-
get frustumPlanes() {
|
|
1156
|
-
return this._frustumPlanes;
|
|
1157
|
-
}
|
|
1158
|
-
/**
|
|
1159
|
-
* Registers the transient components if needed.
|
|
1160
|
-
*/
|
|
1161
|
-
_registerTransientComponents() {
|
|
1162
|
-
// Register components that have been associated lately to the scene.
|
|
1163
|
-
if (this._transientComponents.length > 0) {
|
|
1164
|
-
for (const component of this._transientComponents) {
|
|
1165
|
-
component.register();
|
|
1166
|
-
}
|
|
1167
|
-
this._transientComponents.length = 0;
|
|
1183
|
+
// Uniform Buffer
|
|
1184
|
+
this._createUbo();
|
|
1185
|
+
// Default Image processing definition
|
|
1186
|
+
if (ImageProcessingConfiguration) {
|
|
1187
|
+
this._imageProcessingConfiguration = new ImageProcessingConfiguration();
|
|
1168
1188
|
}
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
* Add a component to the scene.
|
|
1173
|
-
* Note that the ccomponent could be registered on th next frame if this is called after
|
|
1174
|
-
* the register component stage.
|
|
1175
|
-
* @param component Defines the component to add to the scene
|
|
1176
|
-
*/
|
|
1177
|
-
_addComponent(component) {
|
|
1178
|
-
this._components.push(component);
|
|
1179
|
-
this._transientComponents.push(component);
|
|
1180
|
-
const serializableComponent = component;
|
|
1181
|
-
if (serializableComponent.addFromContainer && serializableComponent.serialize) {
|
|
1182
|
-
this._serializableComponents.push(serializableComponent);
|
|
1189
|
+
this.setDefaultCandidateProviders();
|
|
1190
|
+
if (fullOptions.useGeometryUniqueIdsMap) {
|
|
1191
|
+
this._geometriesByUniqueId = {};
|
|
1183
1192
|
}
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
* @param name defines the name of the component to retrieve
|
|
1189
|
-
* @returns the component or null if not present
|
|
1190
|
-
*/
|
|
1191
|
-
_getComponent(name) {
|
|
1192
|
-
for (const component of this._components) {
|
|
1193
|
-
if (component.name === name) {
|
|
1194
|
-
return component;
|
|
1195
|
-
}
|
|
1193
|
+
this.useMaterialMeshMap = fullOptions.useMaterialMeshMap;
|
|
1194
|
+
this.useClonedMeshMap = fullOptions.useClonedMeshMap;
|
|
1195
|
+
if (!options || !options.virtual) {
|
|
1196
|
+
this._engine.onNewSceneAddedObservable.notifyObservers(this);
|
|
1196
1197
|
}
|
|
1197
|
-
return null;
|
|
1198
1198
|
}
|
|
1199
1199
|
/**
|
|
1200
1200
|
* Gets a string identifying the name of the class
|