@babylonjs/core 6.33.2 → 6.34.0-alpha.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/Animations/animation.js +1 -1
- package/Animations/animation.js.map +1 -1
- package/Buffers/storageBuffer.d.ts +2 -1
- package/Buffers/storageBuffer.js +3 -2
- package/Buffers/storageBuffer.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +28 -9
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/arcRotateCamera.js +1 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/followCameraInputsManager.js +2 -1
- package/Cameras/followCameraInputsManager.js.map +1 -1
- package/Debug/skeletonViewer.js +2 -1
- package/Debug/skeletonViewer.js.map +1 -1
- package/Engines/Extensions/engine.alpha.js +8 -116
- package/Engines/Extensions/engine.alpha.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +11 -213
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.dynamicBuffer.js +5 -42
- package/Engines/Extensions/engine.dynamicBuffer.js.map +1 -1
- package/Engines/Extensions/engine.dynamicTexture.d.ts +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +5 -47
- package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +11 -341
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.multiview.js +6 -57
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +8 -2
- package/Engines/Extensions/engine.query.js +44 -152
- package/Engines/Extensions/engine.query.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.d.ts +1 -1
- package/Engines/Extensions/engine.rawTexture.js +20 -361
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.js +6 -112
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.js +8 -173
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.renderTargetCube.js +4 -55
- package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/Extensions/engine.storageBuffer.d.ts +2 -1
- package/Engines/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/Extensions/engine.textureSelector.js +11 -52
- package/Engines/Extensions/engine.textureSelector.js.map +1 -1
- package/Engines/Extensions/engine.transformFeedback.js +10 -11
- package/Engines/Extensions/engine.transformFeedback.js.map +1 -1
- package/Engines/Extensions/engine.uniformBuffer.js +9 -59
- package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
- package/Engines/Extensions/engine.videoTexture.js +4 -54
- package/Engines/Extensions/engine.videoTexture.js.map +1 -1
- package/Engines/Extensions/engine.views.d.ts +2 -24
- package/Engines/Extensions/engine.views.js +17 -136
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +15 -14
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.js +3 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +14 -5
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +3 -2
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/engine.d.ts +15 -64
- package/Engines/engine.js +322 -773
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +1 -1
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +160 -151
- package/Engines/thinEngine.js +712 -3281
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +5 -8
- package/Engines/webgpuEngine.js +143 -112
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +2 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +1 -21
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -0
- package/FlowGraph/flowGraphExecutionBlock.js +20 -0
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/Gizmos/axisScaleGizmo.d.ts +1 -0
- package/Gizmos/axisScaleGizmo.js +12 -0
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/lightGizmo.js +2 -1
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +1 -1
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +9 -8
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +2 -1
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/drawWrapper.js +3 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +2 -1
- package/Materials/effect.js.map +1 -1
- package/Materials/material.js +2 -1
- package/Materials/material.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +4 -1
- package/Materials/uniformBuffer.js +5 -2
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +2 -1
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.js +3 -1
- package/Meshes/abstractMesh.js.map +1 -1
- package/Misc/assetsManager.js +2 -2
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/dds.d.ts +2 -0
- package/Misc/dds.js +27 -23
- package/Misc/dds.js.map +1 -1
- package/Misc/logger.d.ts +3 -3
- package/Misc/logger.js +8 -4
- package/Misc/logger.js.map +1 -1
- package/Misc/sceneSerializer.js +2 -1
- package/Misc/sceneSerializer.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +2 -2
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +1 -1
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/index.d.ts +1 -0
- package/Physics/v2/index.js +1 -0
- package/Physics/v2/index.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +107 -0
- package/Physics/v2/ragdoll.js +228 -0
- package/Physics/v2/ragdoll.js.map +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/index.d.ts +1 -1
- package/PostProcesses/index.js +1 -1
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/passPostProcess.d.ts +1 -0
- package/PostProcesses/passPostProcess.js +6 -2
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +2 -1
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -2
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +2 -2
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRMeshDetector.js +2 -1
- package/XR/features/WebXRMeshDetector.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +1 -1
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/webXRExperienceHelper.js +2 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/assetContainer.js +2 -2
- package/assetContainer.js.map +1 -1
- package/esm/Engines/Extensions/alpha/alpha.base.d.ts +34 -0
- package/esm/Engines/Extensions/alpha/alpha.base.js +2 -0
- package/esm/Engines/Extensions/alpha/alpha.base.js.map +1 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.d.ts +87 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.js +12 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.js.map +1 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.d.ts +79 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js +2 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/debugging/debugging.base.d.ts +11 -0
- package/esm/Engines/Extensions/debugging/debugging.base.js +2 -0
- package/esm/Engines/Extensions/debugging/debugging.base.js.map +1 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.d.ts +20 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js +2 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.d.ts +26 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js +2 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/engine.extensions.d.ts +67 -0
- package/esm/Engines/Extensions/engine.extensions.js +49 -0
- package/esm/Engines/Extensions/engine.extensions.js.map +1 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.d.ts +16 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.js +2 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.d.ts +54 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.js +2 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.js.map +1 -0
- package/esm/Engines/Extensions/multiview/multiview.base.d.ts +67 -0
- package/esm/Engines/Extensions/multiview/multiview.base.js +79 -0
- package/esm/Engines/Extensions/multiview/multiview.base.js.map +1 -0
- package/esm/Engines/Extensions/query/query.base.d.ts +164 -0
- package/esm/Engines/Extensions/query/query.base.js +168 -0
- package/esm/Engines/Extensions/query/query.base.js.map +1 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.d.ts +187 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js +2 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.d.ts +9 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.js +2 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.d.ts +35 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.js +2 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.js.map +1 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.d.ts +12 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js +2 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js.map +1 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.d.ts +36 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js +2 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.d.ts +11 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.js +2 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.js.map +1 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.d.ts +50 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.js +53 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.js.map +1 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.d.ts +42 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js +2 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js.map +1 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.d.ts +48 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js +2 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.d.ts +13 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.js +2 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/views/views.base.d.ts +85 -0
- package/esm/Engines/Extensions/views/views.base.js +33 -0
- package/esm/Engines/Extensions/views/views.base.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.d.ts +8 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js +137 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.d.ts +11 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js +251 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js +55 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js +65 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.d.ts +10 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js +375 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.d.ts +6 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js +77 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.d.ts +21 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.js +220 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.d.ts +15 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js +392 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.d.ts +17 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js +133 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.d.ts +8 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js +199 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.d.ts +2 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js +62 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js +28 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.d.ts +11 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js +45 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.d.ts +9 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js +78 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.d.ts +4 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js +67 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.d.ts +18 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.js +152 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.js.map +1 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.d.ts +43 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.js +107 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.js.map +1 -0
- package/esm/Engines/WebGL/engine.webgl.d.ts +1030 -0
- package/esm/Engines/WebGL/engine.webgl.js +4083 -0
- package/esm/Engines/WebGL/engine.webgl.js.map +1 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.d.ts +7 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.js +20 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.js.map +1 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.d.ts +391 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.js +2 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.js.map +1 -0
- package/esm/Engines/WebGPU/engine.webgpu.d.ts +277 -0
- package/esm/Engines/WebGPU/engine.webgpu.js +1281 -0
- package/esm/Engines/WebGPU/engine.webgpu.js.map +1 -0
- package/esm/Engines/engine.adapters.d.ts +32 -0
- package/esm/Engines/engine.adapters.js +27 -0
- package/esm/Engines/engine.adapters.js.map +1 -0
- package/esm/Engines/engine.base.d.ts +807 -0
- package/esm/Engines/engine.base.js +1235 -0
- package/esm/Engines/engine.base.js.map +1 -0
- package/esm/Engines/engine.constants.d.ts +735 -0
- package/esm/Engines/engine.constants.js +3 -0
- package/esm/Engines/engine.constants.js.map +1 -0
- package/esm/Engines/engine.extendable.d.ts +180 -0
- package/esm/Engines/engine.extendable.js +477 -0
- package/esm/Engines/engine.extendable.js.map +1 -0
- package/esm/Engines/engine.interfaces.d.ts +16 -0
- package/esm/Engines/engine.interfaces.js +9 -0
- package/esm/Engines/engine.interfaces.js.map +1 -0
- package/esm/Engines/engine.static.d.ts +215 -0
- package/esm/Engines/engine.static.js +345 -0
- package/esm/Engines/engine.static.js.map +1 -0
- package/esm/Engines/engine.tools.d.ts +20 -0
- package/esm/Engines/engine.tools.js +33 -0
- package/esm/Engines/engine.tools.js.map +1 -0
- package/esm/Engines/public.d.ts +1 -0
- package/esm/Engines/public.js +2 -0
- package/esm/Engines/public.js.map +1 -0
- package/esm/Engines/runtimeEnvironment.d.ts +37 -0
- package/esm/Engines/runtimeEnvironment.js +56 -0
- package/esm/Engines/runtimeEnvironment.js.map +1 -0
- package/package.json +2 -1
- package/scene.js +1 -1
- package/scene.js.map +1 -1
package/Physics/v2/index.d.ts
CHANGED
package/Physics/v2/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from "./physicsShape.js";
|
|
|
5
5
|
export * from "./physicsConstraint.js";
|
|
6
6
|
export * from "./physicsMaterial.js";
|
|
7
7
|
export * from "./physicsAggregate.js";
|
|
8
|
+
export * from "./ragdoll.js";
|
|
8
9
|
export * from "./IPhysicsEnginePlugin.js";
|
|
9
10
|
/* eslint-disable import/no-internal-modules */
|
|
10
11
|
export * from "./Plugins/index.js";
|
package/Physics/v2/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Physics/v2/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,+CAA+C;AAC/C,cAAc,iBAAiB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport { PhysicsEngine as PhysicsEngineV2 } from \"./physicsEngine\";\r\nexport * from \"./physicsBody\";\r\nexport * from \"./physicsShape\";\r\nexport * from \"./physicsConstraint\";\r\nexport * from \"./physicsMaterial\";\r\nexport * from \"./physicsAggregate\";\r\nexport * from \"./IPhysicsEnginePlugin\";\r\n/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Plugins/index\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Physics/v2/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,+CAA+C;AAC/C,cAAc,iBAAiB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport { PhysicsEngine as PhysicsEngineV2 } from \"./physicsEngine\";\r\nexport * from \"./physicsBody\";\r\nexport * from \"./physicsShape\";\r\nexport * from \"./physicsConstraint\";\r\nexport * from \"./physicsMaterial\";\r\nexport * from \"./physicsAggregate\";\r\nexport * from \"./ragdoll\";\r\nexport * from \"./IPhysicsEnginePlugin\";\r\n/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Plugins/index\";\r\n"]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { Skeleton } from "../../Bones/skeleton";
|
|
2
|
+
import { Vector3 } from "../../Maths/math.vector";
|
|
3
|
+
import type { Mesh } from "../../Meshes/mesh";
|
|
4
|
+
/**
|
|
5
|
+
* Ragdoll bone properties
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
export declare class RagdollBoneProperties {
|
|
9
|
+
/**
|
|
10
|
+
* Width of the box shape
|
|
11
|
+
*/
|
|
12
|
+
width?: number;
|
|
13
|
+
/**
|
|
14
|
+
* depth of the box shape
|
|
15
|
+
*/
|
|
16
|
+
depth?: number;
|
|
17
|
+
/**
|
|
18
|
+
* height of the box shape
|
|
19
|
+
*/
|
|
20
|
+
height?: number;
|
|
21
|
+
/**
|
|
22
|
+
* size that will be used of width, depth and height of the shape box
|
|
23
|
+
*/
|
|
24
|
+
size?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Type of Physics Constraint used between bones
|
|
27
|
+
*/
|
|
28
|
+
joint?: number | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Main rotation axis used by the constraint, in local space
|
|
31
|
+
*/
|
|
32
|
+
rotationAxis?: Vector3;
|
|
33
|
+
/**
|
|
34
|
+
* Minimum rotation angle value
|
|
35
|
+
*/
|
|
36
|
+
min?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Maximum rotation angle value
|
|
39
|
+
*/
|
|
40
|
+
max?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Offset along local axis
|
|
43
|
+
*/
|
|
44
|
+
boxOffset?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Axis that need an offset
|
|
47
|
+
*/
|
|
48
|
+
boneOffsetAxis?: Vector3;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Ragdoll for Physics V2
|
|
52
|
+
* Current known limitation is scene must be using Right hand coordinates
|
|
53
|
+
* @experimental
|
|
54
|
+
*/
|
|
55
|
+
export declare class Ragdoll {
|
|
56
|
+
/**
|
|
57
|
+
* Opacity of debug boxes
|
|
58
|
+
*/
|
|
59
|
+
boxVisibility: number;
|
|
60
|
+
private _skeleton;
|
|
61
|
+
private _scene;
|
|
62
|
+
private _mesh;
|
|
63
|
+
private _config;
|
|
64
|
+
private _boxConfigs;
|
|
65
|
+
private _bones;
|
|
66
|
+
private _initialRotation;
|
|
67
|
+
private _boneNames;
|
|
68
|
+
private _boxes;
|
|
69
|
+
private _aggregates;
|
|
70
|
+
private _ragdollMode;
|
|
71
|
+
private _rootBoneName;
|
|
72
|
+
private _rootBoneIndex;
|
|
73
|
+
private _mass;
|
|
74
|
+
private _restitution;
|
|
75
|
+
private _pauseSync;
|
|
76
|
+
private _putBoxesInBoneCenter;
|
|
77
|
+
private _defaultJoint;
|
|
78
|
+
private _defaultJointMin;
|
|
79
|
+
private _defaultJointMax;
|
|
80
|
+
private _boneOffsetAxis;
|
|
81
|
+
/**
|
|
82
|
+
* Construct a new Ragdoll object. Once ready, it can be made dynamic by calling `Ragdoll` method
|
|
83
|
+
* @param skeleton The skeleton containing bones to be physicalized
|
|
84
|
+
* @param mesh The mesh used by the skeleton
|
|
85
|
+
* @param config an array of `RagdollBoneProperties` corresponding to bones and their properties used to instanciate physics bodies
|
|
86
|
+
*/
|
|
87
|
+
constructor(skeleton: Skeleton, mesh: Mesh, config: RagdollBoneProperties[]);
|
|
88
|
+
/**
|
|
89
|
+
* Set the debug boxes visibility
|
|
90
|
+
*/
|
|
91
|
+
set boxesVisibility(visible: boolean);
|
|
92
|
+
private _createColliders;
|
|
93
|
+
private _initJoints;
|
|
94
|
+
private _syncBonesAndBoxes;
|
|
95
|
+
private _addImpostorRotationToBone;
|
|
96
|
+
private _defineRootBone;
|
|
97
|
+
private _findNearestParent;
|
|
98
|
+
private _init;
|
|
99
|
+
/**
|
|
100
|
+
* Enable ragdoll mode. Create physics objects and make them dynamic.
|
|
101
|
+
*/
|
|
102
|
+
ragdoll(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Dispose resources and remove physics objects
|
|
105
|
+
*/
|
|
106
|
+
dispose(): void;
|
|
107
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { MeshBuilder } from "../..//Meshes/meshBuilder.js";
|
|
2
|
+
import { Vector3, Matrix } from "../../Maths/math.vector.js";
|
|
3
|
+
import { PhysicsAggregate } from "./physicsAggregate.js";
|
|
4
|
+
import { BallAndSocketConstraint } from "./physicsConstraint.js";
|
|
5
|
+
import { Axis, Space } from "../../Maths/math.axis.js";
|
|
6
|
+
import { PhysicsShapeType, PhysicsConstraintType } from "./IPhysicsEnginePlugin.js";
|
|
7
|
+
import { Logger } from "../../Misc/logger.js";
|
|
8
|
+
/**
|
|
9
|
+
* Ragdoll bone properties
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
12
|
+
export class RagdollBoneProperties {
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Ragdoll for Physics V2
|
|
16
|
+
* Current known limitation is scene must be using Right hand coordinates
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
export class Ragdoll {
|
|
20
|
+
/**
|
|
21
|
+
* Construct a new Ragdoll object. Once ready, it can be made dynamic by calling `Ragdoll` method
|
|
22
|
+
* @param skeleton The skeleton containing bones to be physicalized
|
|
23
|
+
* @param mesh The mesh used by the skeleton
|
|
24
|
+
* @param config an array of `RagdollBoneProperties` corresponding to bones and their properties used to instanciate physics bodies
|
|
25
|
+
*/
|
|
26
|
+
constructor(skeleton, mesh, config) {
|
|
27
|
+
/**
|
|
28
|
+
* Opacity of debug boxes
|
|
29
|
+
*/
|
|
30
|
+
this.boxVisibility = 0.6;
|
|
31
|
+
this._boxConfigs = new Array();
|
|
32
|
+
this._bones = new Array();
|
|
33
|
+
this._initialRotation = new Array();
|
|
34
|
+
this._boneNames = [];
|
|
35
|
+
this._boxes = new Array();
|
|
36
|
+
this._aggregates = new Array();
|
|
37
|
+
this._ragdollMode = false;
|
|
38
|
+
this._rootBoneName = "";
|
|
39
|
+
this._rootBoneIndex = -1;
|
|
40
|
+
this._mass = 10;
|
|
41
|
+
this._restitution = 0;
|
|
42
|
+
this._pauseSync = false;
|
|
43
|
+
this._defaultJoint = PhysicsConstraintType.HINGE;
|
|
44
|
+
this._defaultJointMin = -90;
|
|
45
|
+
this._defaultJointMax = 90;
|
|
46
|
+
this._skeleton = skeleton;
|
|
47
|
+
this._scene = skeleton.getScene();
|
|
48
|
+
this._mesh = mesh;
|
|
49
|
+
this._config = config; // initial, user defined box configs. May have several box configs jammed into 1 index.
|
|
50
|
+
this._boxConfigs = []; // final box configs. Every element is a separate box config (this.config may have several configs jammed into 1 index).
|
|
51
|
+
this._putBoxesInBoneCenter = false;
|
|
52
|
+
this._defaultJoint = PhysicsConstraintType.HINGE;
|
|
53
|
+
this._boneOffsetAxis = Axis.Y;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Set the debug boxes visibility
|
|
57
|
+
*/
|
|
58
|
+
set boxesVisibility(visible) {
|
|
59
|
+
for (const box of this._boxes) {
|
|
60
|
+
box.visibility = visible ? this.boxVisibility : 0;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
_createColliders() {
|
|
64
|
+
this._mesh.computeWorldMatrix();
|
|
65
|
+
const config = this._config;
|
|
66
|
+
for (let i = 0; i < config.length; i++) {
|
|
67
|
+
const boneNames = config[i].bone !== undefined ? [config[i].bone] : config[i].bones;
|
|
68
|
+
for (let ii = 0; ii < boneNames.length; ii++) {
|
|
69
|
+
const currentBone = this._skeleton.bones[this._skeleton.getBoneIndexByName(boneNames[ii])];
|
|
70
|
+
if (currentBone == undefined) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// First define the box dimensions, so we can then use them when calling CreateBox().
|
|
74
|
+
const currentRagdollBoneProperties = {
|
|
75
|
+
width: this._config[i].width,
|
|
76
|
+
depth: this._config[i].depth,
|
|
77
|
+
height: this._config[i].height,
|
|
78
|
+
size: this._config[i].size,
|
|
79
|
+
};
|
|
80
|
+
const box = MeshBuilder.CreateBox(boneNames[ii] + "_box", currentRagdollBoneProperties, this._scene);
|
|
81
|
+
box.visibility = 0;
|
|
82
|
+
// Define the rest of the box properties.
|
|
83
|
+
currentRagdollBoneProperties.joint = config[i].joint !== undefined ? config[i].joint : this._defaultJoint;
|
|
84
|
+
currentRagdollBoneProperties.rotationAxis = config[i].rotationAxis !== undefined ? config[i].rotationAxis : Axis.X;
|
|
85
|
+
currentRagdollBoneProperties.min = config[i].min !== undefined ? config[i].min : this._defaultJointMin;
|
|
86
|
+
currentRagdollBoneProperties.max = config[i].max !== undefined ? config[i].max : this._defaultJointMax;
|
|
87
|
+
// Offset value.
|
|
88
|
+
let boxOffset = 0;
|
|
89
|
+
if ((config[i].putBoxInBoneCenter !== undefined && config[i].putBoxInBoneCenter) || this._putBoxesInBoneCenter) {
|
|
90
|
+
if (currentBone.length === undefined) {
|
|
91
|
+
Logger.Log("The length property is not defined for bone " + currentBone.name);
|
|
92
|
+
}
|
|
93
|
+
boxOffset = currentBone.length / 2;
|
|
94
|
+
}
|
|
95
|
+
else if (config[i].boxOffset !== undefined) {
|
|
96
|
+
boxOffset = config[i].boxOffset;
|
|
97
|
+
}
|
|
98
|
+
currentRagdollBoneProperties.boxOffset = boxOffset;
|
|
99
|
+
// Offset axis.
|
|
100
|
+
const boneOffsetAxis = config[i].boneOffsetAxis !== undefined ? config[i].boneOffsetAxis : this._boneOffsetAxis;
|
|
101
|
+
const boneDir = currentBone.getDirection(boneOffsetAxis, this._mesh);
|
|
102
|
+
currentRagdollBoneProperties.boneOffsetAxis = boneOffsetAxis;
|
|
103
|
+
box.position = currentBone.getAbsolutePosition(this._mesh).add(boneDir.scale(boxOffset));
|
|
104
|
+
const mass = config[i].mass !== undefined ? config[i].mass : this._mass;
|
|
105
|
+
const restitution = config[i].restitution !== undefined ? config[i].restitution : this._restitution;
|
|
106
|
+
const aggregate = new PhysicsAggregate(box, PhysicsShapeType.BOX, {
|
|
107
|
+
mass: mass,
|
|
108
|
+
restitution: restitution,
|
|
109
|
+
friction: 0.6,
|
|
110
|
+
}, this._scene);
|
|
111
|
+
aggregate.body.setCollisionCallbackEnabled(true);
|
|
112
|
+
aggregate.body.disablePreStep = false;
|
|
113
|
+
this._aggregates.push(aggregate);
|
|
114
|
+
this._bones.push(currentBone);
|
|
115
|
+
this._boneNames.push(currentBone.name);
|
|
116
|
+
this._boxes.push(box);
|
|
117
|
+
this._boxConfigs.push(currentRagdollBoneProperties);
|
|
118
|
+
this._initialRotation.push(currentBone.getRotationQuaternion(Space.WORLD, this._mesh));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
_initJoints() {
|
|
123
|
+
this._mesh.computeWorldMatrix();
|
|
124
|
+
for (let i = 0; i < this._bones.length; i++) {
|
|
125
|
+
// The root bone has no joints.
|
|
126
|
+
if (i == this._rootBoneIndex)
|
|
127
|
+
continue;
|
|
128
|
+
const nearestParent = this._findNearestParent(i);
|
|
129
|
+
if (nearestParent == null) {
|
|
130
|
+
Logger.Warn("Couldn't find a nearest parent bone in the configs for bone called " + this._boneNames[i]);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const boneParentIndex = this._boneNames.indexOf(nearestParent.name);
|
|
134
|
+
let distanceFromParentBoxToBone = this._bones[i].getAbsolutePosition(this._mesh).subtract(this._boxes[boneParentIndex].position);
|
|
135
|
+
const wmat = this._boxes[boneParentIndex].computeWorldMatrix();
|
|
136
|
+
const invertedWorldMat = Matrix.Invert(wmat);
|
|
137
|
+
distanceFromParentBoxToBone = Vector3.TransformCoordinates(this._bones[i].getAbsolutePosition(this._mesh), invertedWorldMat);
|
|
138
|
+
const boneAbsPos = this._bones[i].getAbsolutePosition(this._mesh);
|
|
139
|
+
const boxAbsPos = this._boxes[i].position.clone();
|
|
140
|
+
const myConnectedPivot = boneAbsPos.subtract(boxAbsPos);
|
|
141
|
+
const joint = new BallAndSocketConstraint(distanceFromParentBoxToBone, myConnectedPivot, this._boxConfigs[i].rotationAxis, this._boxConfigs[i].rotationAxis, this._scene);
|
|
142
|
+
this._aggregates[boneParentIndex].body.addConstraint(this._aggregates[i].body, joint);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
_syncBonesAndBoxes() {
|
|
146
|
+
if (this._pauseSync) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (this._ragdollMode) {
|
|
150
|
+
const rootBoneDirection = this._bones[this._rootBoneIndex].getDirection(this._boxConfigs[this._rootBoneIndex].boneOffsetAxis, this._mesh);
|
|
151
|
+
const rootBoneOffsetPosition = this._bones[this._rootBoneIndex]
|
|
152
|
+
.getAbsolutePosition(this._mesh)
|
|
153
|
+
.add(rootBoneDirection.scale(this._boxConfigs[this._rootBoneIndex].boxOffset));
|
|
154
|
+
this._bones[this._rootBoneIndex].setAbsolutePosition(this._boxes[this._rootBoneIndex].position, this._mesh);
|
|
155
|
+
this._addImpostorRotationToBone(this._rootBoneIndex);
|
|
156
|
+
const rootPos = this._aggregates[this._rootBoneIndex].body.transformNode.position;
|
|
157
|
+
// Move the mesh, to guarantee alignment between root bone and impostor box position
|
|
158
|
+
const dist = rootBoneOffsetPosition.subtract(rootPos);
|
|
159
|
+
this._mesh.position = this._mesh.position.subtract(dist);
|
|
160
|
+
for (let i = 0; i < this._bones.length; i++) {
|
|
161
|
+
if (i == this._rootBoneIndex)
|
|
162
|
+
continue;
|
|
163
|
+
this._addImpostorRotationToBone(i);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
_addImpostorRotationToBone(boneIndex) {
|
|
168
|
+
var _a, _b, _c;
|
|
169
|
+
const newRotQuat = (_c = (_b = (_a = this._aggregates[boneIndex].body) === null || _a === void 0 ? void 0 : _a.transformNode) === null || _b === void 0 ? void 0 : _b.rotationQuaternion) === null || _c === void 0 ? void 0 : _c.multiply(this._initialRotation[boneIndex]);
|
|
170
|
+
if (newRotQuat) {
|
|
171
|
+
this._bones[boneIndex].setRotationQuaternion(newRotQuat, Space.WORLD, this._mesh);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Return true if root bone is valid/exists in this.bonesNames. false otherwise.
|
|
175
|
+
_defineRootBone() {
|
|
176
|
+
const skeletonRoots = this._skeleton.getChildren();
|
|
177
|
+
if (skeletonRoots.length != 1) {
|
|
178
|
+
Logger.Log("Ragdoll creation failed: there can only be one root in the skeleton.");
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
this._rootBoneName = skeletonRoots[0].name;
|
|
182
|
+
this._rootBoneIndex = this._boneNames.indexOf(this._rootBoneName);
|
|
183
|
+
if (this._rootBoneIndex == -1) {
|
|
184
|
+
Logger.Log("Ragdoll creation failed: the array boneNames doesn't have the root bone. The root bone is " + this._skeleton.getChildren());
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
_findNearestParent(boneIndex) {
|
|
190
|
+
let nearestParent = this._bones[boneIndex].getParent();
|
|
191
|
+
do {
|
|
192
|
+
if (nearestParent != null && this._boneNames.includes(nearestParent.name)) {
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
nearestParent = nearestParent === null || nearestParent === void 0 ? void 0 : nearestParent.getParent();
|
|
196
|
+
} while (nearestParent != null);
|
|
197
|
+
return nearestParent;
|
|
198
|
+
}
|
|
199
|
+
_init() {
|
|
200
|
+
this._createColliders();
|
|
201
|
+
// If this.defineRootBone() returns false... there is not root bone.
|
|
202
|
+
if (!this._defineRootBone()) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this._initJoints();
|
|
206
|
+
this._scene.registerBeforeRender(() => {
|
|
207
|
+
this._syncBonesAndBoxes();
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Enable ragdoll mode. Create physics objects and make them dynamic.
|
|
212
|
+
*/
|
|
213
|
+
ragdoll() {
|
|
214
|
+
if (!this._ragdollMode) {
|
|
215
|
+
this._ragdollMode = true;
|
|
216
|
+
this._init();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Dispose resources and remove physics objects
|
|
221
|
+
*/
|
|
222
|
+
dispose() {
|
|
223
|
+
this._aggregates.forEach((aggregate) => {
|
|
224
|
+
aggregate.dispose();
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=ragdoll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ragdoll.js","sourceRoot":"","sources":["../../../../../dev/core/src/Physics/v2/ragdoll.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Skeleton } from \"../../Bones/skeleton\";\r\nimport { MeshBuilder } from \"../..//Meshes/meshBuilder\";\r\nimport { Vector3, Matrix } from \"../../Maths/math.vector\";\r\nimport type { Quaternion } from \"../../Maths/math.vector\";\r\nimport type { Scene } from \"../../scene\";\r\nimport { PhysicsAggregate } from \"./physicsAggregate\";\r\nimport { BallAndSocketConstraint } from \"./physicsConstraint\";\r\nimport type { Mesh } from \"../../Meshes/mesh\";\r\nimport { Axis, Space } from \"core/Maths/math.axis\";\r\nimport { PhysicsShapeType, PhysicsConstraintType } from \"./IPhysicsEnginePlugin\";\r\nimport type { Nullable } from \"../../types\";\r\nimport type { Bone } from \"../../Bones/bone\";\r\nimport { Logger } from \"../../Misc/logger\";\r\n\r\n/**\r\n * Ragdoll bone properties\r\n * @experimental\r\n */\r\nexport class RagdollBoneProperties {\r\n /**\r\n * Width of the box shape\r\n */\r\n width?: number;\r\n /**\r\n * depth of the box shape\r\n */\r\n depth?: number;\r\n /**\r\n * height of the box shape\r\n */\r\n height?: number;\r\n /**\r\n * size that will be used of width, depth and height of the shape box\r\n */\r\n size?: number;\r\n /**\r\n * Type of Physics Constraint used between bones\r\n */\r\n joint?: number | undefined;\r\n /**\r\n * Main rotation axis used by the constraint, in local space\r\n */\r\n rotationAxis?: Vector3;\r\n /**\r\n * Minimum rotation angle value\r\n */\r\n min?: number;\r\n /**\r\n * Maximum rotation angle value\r\n */\r\n max?: number;\r\n /**\r\n * Offset along local axis\r\n */\r\n boxOffset?: number;\r\n /**\r\n * Axis that need an offset\r\n */\r\n boneOffsetAxis?: Vector3;\r\n}\r\n\r\n/**\r\n * Ragdoll for Physics V2\r\n * Current known limitation is scene must be using Right hand coordinates\r\n * @experimental\r\n */\r\nexport class Ragdoll {\r\n /**\r\n * Opacity of debug boxes\r\n */\r\n public boxVisibility: number = 0.6;\r\n\r\n private _skeleton: Skeleton;\r\n private _scene: Scene;\r\n private _mesh: Mesh;\r\n private _config: any;\r\n private _boxConfigs: Array<RagdollBoneProperties> = new Array<RagdollBoneProperties>();\r\n\r\n private _bones: Array<Bone> = new Array<Bone>();\r\n private _initialRotation: Array<Quaternion> = new Array<Quaternion>();\r\n private _boneNames: string[] = [];\r\n private _boxes: Array<Mesh> = new Array<Mesh>();\r\n private _aggregates: Array<PhysicsAggregate> = new Array<PhysicsAggregate>();\r\n private _ragdollMode: boolean = false;\r\n private _rootBoneName: string = \"\";\r\n private _rootBoneIndex: number = -1;\r\n private _mass: number = 10;\r\n private _restitution: number = 0;\r\n private _pauseSync: boolean = false;\r\n\r\n private _putBoxesInBoneCenter: boolean;\r\n private _defaultJoint: number = PhysicsConstraintType.HINGE;\r\n private _defaultJointMin: number = -90;\r\n private _defaultJointMax: number = 90;\r\n\r\n private _boneOffsetAxis: Vector3;\r\n\r\n /**\r\n * Construct a new Ragdoll object. Once ready, it can be made dynamic by calling `Ragdoll` method\r\n * @param skeleton The skeleton containing bones to be physicalized\r\n * @param mesh The mesh used by the skeleton\r\n * @param config an array of `RagdollBoneProperties` corresponding to bones and their properties used to instanciate physics bodies\r\n */\r\n constructor(skeleton: Skeleton, mesh: Mesh, config: RagdollBoneProperties[]) {\r\n this._skeleton = skeleton;\r\n this._scene = skeleton.getScene();\r\n this._mesh = mesh;\r\n this._config = config; // initial, user defined box configs. May have several box configs jammed into 1 index.\r\n this._boxConfigs = []; // final box configs. Every element is a separate box config (this.config may have several configs jammed into 1 index).\r\n this._putBoxesInBoneCenter = false;\r\n this._defaultJoint = PhysicsConstraintType.HINGE;\r\n this._boneOffsetAxis = Axis.Y;\r\n }\r\n\r\n /**\r\n * Set the debug boxes visibility\r\n */\r\n public set boxesVisibility(visible: boolean) {\r\n for (const box of this._boxes) {\r\n box.visibility = visible ? this.boxVisibility : 0;\r\n }\r\n }\r\n\r\n private _createColliders(): void {\r\n this._mesh.computeWorldMatrix();\r\n\r\n const config = this._config;\r\n for (let i = 0; i < config.length; i++) {\r\n const boneNames = config[i].bone !== undefined ? [config[i].bone] : config[i].bones;\r\n\r\n for (let ii = 0; ii < boneNames.length; ii++) {\r\n const currentBone = this._skeleton.bones[this._skeleton.getBoneIndexByName(boneNames[ii])];\r\n if (currentBone == undefined) {\r\n return;\r\n }\r\n\r\n // First define the box dimensions, so we can then use them when calling CreateBox().\r\n const currentRagdollBoneProperties: RagdollBoneProperties = {\r\n width: this._config[i].width,\r\n depth: this._config[i].depth,\r\n height: this._config[i].height,\r\n size: this._config[i].size,\r\n };\r\n\r\n const box = MeshBuilder.CreateBox(boneNames[ii] + \"_box\", currentRagdollBoneProperties, this._scene);\r\n\r\n box.visibility = 0;\r\n\r\n // Define the rest of the box properties.\r\n currentRagdollBoneProperties.joint = config[i].joint !== undefined ? config[i].joint : this._defaultJoint;\r\n currentRagdollBoneProperties.rotationAxis = config[i].rotationAxis !== undefined ? config[i].rotationAxis : Axis.X;\r\n currentRagdollBoneProperties.min = config[i].min !== undefined ? config[i].min : this._defaultJointMin;\r\n currentRagdollBoneProperties.max = config[i].max !== undefined ? config[i].max : this._defaultJointMax;\r\n\r\n // Offset value.\r\n let boxOffset = 0;\r\n if ((config[i].putBoxInBoneCenter !== undefined && config[i].putBoxInBoneCenter) || this._putBoxesInBoneCenter) {\r\n if (currentBone.length === undefined) {\r\n Logger.Log(\"The length property is not defined for bone \" + currentBone.name);\r\n }\r\n boxOffset = currentBone.length / 2;\r\n } else if (config[i].boxOffset !== undefined) {\r\n boxOffset = config[i].boxOffset;\r\n }\r\n currentRagdollBoneProperties.boxOffset = boxOffset;\r\n\r\n // Offset axis.\r\n const boneOffsetAxis = config[i].boneOffsetAxis !== undefined ? config[i].boneOffsetAxis : this._boneOffsetAxis;\r\n const boneDir = currentBone.getDirection(boneOffsetAxis, this._mesh);\r\n currentRagdollBoneProperties.boneOffsetAxis = boneOffsetAxis;\r\n\r\n box.position = currentBone.getAbsolutePosition(this._mesh).add(boneDir.scale(boxOffset));\r\n\r\n const mass = config[i].mass !== undefined ? config[i].mass : this._mass;\r\n const restitution = config[i].restitution !== undefined ? config[i].restitution : this._restitution;\r\n const aggregate = new PhysicsAggregate(\r\n box,\r\n PhysicsShapeType.BOX,\r\n {\r\n mass: mass,\r\n restitution: restitution,\r\n friction: 0.6,\r\n },\r\n this._scene\r\n );\r\n aggregate.body.setCollisionCallbackEnabled(true);\r\n aggregate.body.disablePreStep = false;\r\n this._aggregates.push(aggregate);\r\n this._bones.push(currentBone);\r\n this._boneNames.push(currentBone.name);\r\n this._boxes.push(box);\r\n this._boxConfigs.push(currentRagdollBoneProperties);\r\n this._initialRotation.push(currentBone.getRotationQuaternion(Space.WORLD, this._mesh));\r\n }\r\n }\r\n }\r\n\r\n private _initJoints(): void {\r\n this._mesh.computeWorldMatrix();\r\n for (let i = 0; i < this._bones.length; i++) {\r\n // The root bone has no joints.\r\n if (i == this._rootBoneIndex) continue;\r\n\r\n const nearestParent = this._findNearestParent(i);\r\n\r\n if (nearestParent == null) {\r\n Logger.Warn(\"Couldn't find a nearest parent bone in the configs for bone called \" + this._boneNames[i]);\r\n return;\r\n }\r\n\r\n const boneParentIndex = this._boneNames.indexOf(nearestParent.name);\r\n\r\n let distanceFromParentBoxToBone = this._bones[i].getAbsolutePosition(this._mesh).subtract(this._boxes[boneParentIndex].position);\r\n\r\n const wmat = this._boxes[boneParentIndex].computeWorldMatrix();\r\n const invertedWorldMat = Matrix.Invert(wmat);\r\n distanceFromParentBoxToBone = Vector3.TransformCoordinates(this._bones[i].getAbsolutePosition(this._mesh), invertedWorldMat);\r\n\r\n const boneAbsPos = this._bones[i].getAbsolutePosition(this._mesh);\r\n const boxAbsPos = this._boxes[i].position.clone();\r\n const myConnectedPivot = boneAbsPos.subtract(boxAbsPos);\r\n\r\n const joint = new BallAndSocketConstraint(\r\n distanceFromParentBoxToBone,\r\n myConnectedPivot,\r\n this._boxConfigs[i].rotationAxis!,\r\n this._boxConfigs[i].rotationAxis!,\r\n this._scene\r\n );\r\n this._aggregates[boneParentIndex].body.addConstraint(this._aggregates[i].body, joint);\r\n }\r\n }\r\n\r\n private _syncBonesAndBoxes(): void {\r\n if (this._pauseSync) {\r\n return;\r\n }\r\n\r\n if (this._ragdollMode) {\r\n const rootBoneDirection = this._bones[this._rootBoneIndex].getDirection(this._boxConfigs[this._rootBoneIndex].boneOffsetAxis as any, this._mesh);\r\n const rootBoneOffsetPosition = this._bones[this._rootBoneIndex]\r\n .getAbsolutePosition(this._mesh)\r\n .add(rootBoneDirection.scale(this._boxConfigs[this._rootBoneIndex].boxOffset as any));\r\n\r\n this._bones[this._rootBoneIndex].setAbsolutePosition(this._boxes[this._rootBoneIndex].position, this._mesh);\r\n this._addImpostorRotationToBone(this._rootBoneIndex);\r\n\r\n const rootPos = this._aggregates[this._rootBoneIndex].body.transformNode.position;\r\n\r\n // Move the mesh, to guarantee alignment between root bone and impostor box position\r\n const dist = rootBoneOffsetPosition.subtract(rootPos);\r\n this._mesh.position = this._mesh.position.subtract(dist);\r\n\r\n for (let i = 0; i < this._bones.length; i++) {\r\n if (i == this._rootBoneIndex) continue;\r\n this._addImpostorRotationToBone(i);\r\n }\r\n }\r\n }\r\n\r\n private _addImpostorRotationToBone(boneIndex: number): void {\r\n const newRotQuat = this._aggregates[boneIndex].body?.transformNode?.rotationQuaternion?.multiply(this._initialRotation[boneIndex]);\r\n if (newRotQuat) {\r\n this._bones[boneIndex].setRotationQuaternion(newRotQuat, Space.WORLD, this._mesh);\r\n }\r\n }\r\n\r\n // Return true if root bone is valid/exists in this.bonesNames. false otherwise.\r\n private _defineRootBone(): boolean {\r\n const skeletonRoots = this._skeleton.getChildren();\r\n if (skeletonRoots.length != 1) {\r\n Logger.Log(\"Ragdoll creation failed: there can only be one root in the skeleton.\");\r\n return false;\r\n }\r\n\r\n this._rootBoneName = skeletonRoots[0].name;\r\n this._rootBoneIndex = this._boneNames.indexOf(this._rootBoneName);\r\n if (this._rootBoneIndex == -1) {\r\n Logger.Log(\"Ragdoll creation failed: the array boneNames doesn't have the root bone. The root bone is \" + this._skeleton.getChildren());\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _findNearestParent(boneIndex: number): any {\r\n let nearestParent: Nullable<Bone> | undefined = this._bones[boneIndex].getParent();\r\n do {\r\n if (nearestParent != null && this._boneNames.includes(nearestParent.name)) {\r\n break;\r\n }\r\n\r\n nearestParent = nearestParent?.getParent();\r\n } while (nearestParent != null);\r\n\r\n return nearestParent;\r\n }\r\n\r\n private _init() {\r\n this._createColliders();\r\n\r\n // If this.defineRootBone() returns false... there is not root bone.\r\n if (!this._defineRootBone()) {\r\n return;\r\n }\r\n\r\n this._initJoints();\r\n this._scene.registerBeforeRender(() => {\r\n this._syncBonesAndBoxes();\r\n });\r\n }\r\n\r\n /**\r\n * Enable ragdoll mode. Create physics objects and make them dynamic.\r\n */\r\n public ragdoll(): void {\r\n if (!this._ragdollMode) {\r\n this._ragdollMode = true;\r\n this._init();\r\n }\r\n }\r\n\r\n /**\r\n * Dispose resources and remove physics objects\r\n */\r\n dispose(): void {\r\n this._aggregates.forEach((aggregate: PhysicsAggregate) => {\r\n aggregate.dispose();\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -228,13 +228,13 @@ export class SSAO2RenderingPipeline extends PostProcessRenderPipeline {
|
|
|
228
228
|
if (this._forceGeometryBuffer) {
|
|
229
229
|
scene.enableGeometryBufferRenderer();
|
|
230
230
|
if ((_a = scene.geometryBufferRenderer) === null || _a === void 0 ? void 0 : _a.generateNormalsInWorldSpace) {
|
|
231
|
-
|
|
231
|
+
Logger.Error("SSAO2RenderingPipeline does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!");
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
else {
|
|
235
235
|
scene.enablePrePassRenderer();
|
|
236
236
|
if ((_b = scene.prePassRenderer) === null || _b === void 0 ? void 0 : _b.generateNormalsInWorldSpace) {
|
|
237
|
-
|
|
237
|
+
Logger.Error("SSAO2RenderingPipeline does not support generateNormalsInWorldSpace=true for the prepass renderer!");
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
this._createRandomTexture();
|