@babylonjs/core 9.11.0 → 9.12.1
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.d.ts +1 -1
- package/Actions/actionManager.js +8 -5
- package/Actions/actionManager.js.map +1 -1
- package/Animations/animatable.core.d.ts +1 -1
- package/Animations/animatable.core.js +2 -2
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationPropertiesOverride.js +1 -1
- package/Animations/animationPropertiesOverride.js.map +1 -1
- package/Animations/animatorAvatar.d.ts +2 -2
- package/Animations/animatorAvatar.js +3 -3
- package/Animations/animatorAvatar.js.map +1 -1
- package/Animations/pathCursor.d.ts +1 -1
- package/Animations/pathCursor.js +1 -1
- package/Animations/pathCursor.js.map +1 -1
- package/Animations/runtimeAnimation.d.ts +1 -1
- package/Animations/runtimeAnimation.js +2 -2
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/analyser.js +1 -1
- package/Audio/analyser.js.map +1 -1
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +1 -1
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/BakedVertexAnimation/vertexAnimationBaker.js +1 -1
- package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
- package/Behaviors/Cameras/bouncingBehavior.js +1 -1
- package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
- package/Behaviors/Cameras/framingBehavior.d.ts +1 -1
- package/Behaviors/Cameras/framingBehavior.js +2 -2
- package/Behaviors/Cameras/framingBehavior.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +28 -1
- package/Behaviors/Cameras/interpolatingBehavior.js +64 -22
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Behaviors/Meshes/attachToBoxBehavior.js +1 -1
- package/Behaviors/Meshes/attachToBoxBehavior.js.map +1 -1
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +3 -3
- package/Behaviors/Meshes/baseSixDofDragBehavior.js +4 -4
- package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +1 -1
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Behaviors/Meshes/multiPointerScaleBehavior.js +1 -1
- package/Behaviors/Meshes/multiPointerScaleBehavior.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.d.ts +3 -3
- package/Behaviors/Meshes/pointerDragBehavior.js +5 -5
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.d.ts +1 -1
- package/Behaviors/Meshes/sixDofDragBehavior.js +2 -2
- package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
- package/Bones/boneIKController.d.ts +1 -1
- package/Bones/boneIKController.js +1 -1
- package/Bones/boneIKController.js.map +1 -1
- package/Bones/boneLookController.d.ts +1 -1
- package/Bones/boneLookController.js +1 -1
- package/Bones/boneLookController.js.map +1 -1
- package/Bones/skeleton.d.ts +2 -2
- package/Bones/skeleton.functions.d.ts +1 -1
- package/Bones/skeleton.functions.js +3 -3
- package/Bones/skeleton.functions.js.map +1 -1
- package/Bones/skeleton.js +3 -4
- package/Bones/skeleton.js.map +1 -1
- package/Buffers/buffer.align.pure.js +6 -0
- package/Buffers/buffer.align.pure.js.map +1 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js +2 -1
- package/Buffers/buffer.nonFloatVertexBuffers.js.map +1 -1
- package/Buffers/buffer.pure.d.ts +8 -0
- package/Buffers/buffer.pure.js +31 -2
- package/Buffers/buffer.pure.js.map +1 -1
- package/Buffers/bufferUtils.js +17 -5
- package/Buffers/bufferUtils.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +2 -2
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +11 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -0
- package/Cameras/Inputs/flyCameraMouseInput.js +16 -4
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +27 -7
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +14 -0
- package/Cameras/Inputs/freeCameraMouseInput.js +27 -5
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +18 -7
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +9 -2
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Limits/geospatialLimits.d.ts +1 -1
- package/Cameras/Limits/geospatialLimits.js +1 -1
- package/Cameras/Limits/geospatialLimits.js.map +1 -1
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js +2 -2
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.js.map +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.js +3 -3
- package/Cameras/RigModes/stereoscopicRigMode.js.map +1 -1
- package/Cameras/RigModes/vrRigMode.js +2 -2
- package/Cameras/RigModes/vrRigMode.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +5 -5
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
- package/Cameras/VR/vrCameraMetrics.js +1 -1
- package/Cameras/VR/vrCameraMetrics.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/cameraInputsManager.d.ts +1 -1
- package/Cameras/cameraInputsManager.js +1 -1
- package/Cameras/cameraInputsManager.js.map +1 -1
- package/Cameras/flyCamera.pure.d.ts +8 -0
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.d.ts +8 -0
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +39 -14
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/index.d.ts +1 -0
- package/Cameras/index.js +1 -0
- package/Cameras/index.js.map +1 -1
- package/Cameras/pure.d.ts +1 -0
- package/Cameras/pure.js +1 -0
- package/Cameras/pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +25 -0
- package/Cameras/targetCamera.pure.js +83 -25
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/targetCameraMovement.d.ts +56 -0
- package/Cameras/targetCameraMovement.js +63 -0
- package/Cameras/targetCameraMovement.js.map +1 -0
- package/Collisions/collider.d.ts +1 -1
- package/Collisions/collider.js +1 -1
- package/Collisions/collider.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Collisions/meshCollisionData.d.ts +1 -1
- package/Collisions/meshCollisionData.js +1 -1
- package/Collisions/meshCollisionData.js.map +1 -1
- package/Collisions/pickingInfo.d.ts +1 -1
- package/Collisions/pickingInfo.js +2 -2
- package/Collisions/pickingInfo.js.map +1 -1
- package/Culling/Octrees/octreeBlock.d.ts +1 -1
- package/Culling/Octrees/octreeBlock.js +1 -1
- package/Culling/Octrees/octreeBlock.js.map +1 -1
- package/Culling/boundingBox.d.ts +1 -1
- package/Culling/boundingBox.js +1 -1
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/boundingInfo.d.ts +1 -1
- package/Culling/boundingInfo.js +1 -1
- package/Culling/boundingInfo.js.map +1 -1
- package/Culling/boundingSphere.d.ts +1 -1
- package/Culling/boundingSphere.js +1 -1
- package/Culling/boundingSphere.js.map +1 -1
- package/Culling/ray.core.d.ts +1 -1
- package/Culling/ray.core.js +1 -1
- package/Culling/ray.core.js.map +1 -1
- package/Debug/axesViewer.d.ts +1 -1
- package/Debug/axesViewer.js +3 -3
- package/Debug/axesViewer.js.map +1 -1
- package/Debug/boneAxesViewer.d.ts +1 -1
- package/Debug/boneAxesViewer.js +1 -1
- package/Debug/boneAxesViewer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.d.ts +1 -1
- package/Debug/directionalLightFrustumViewer.js +6 -6
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/rayHelper.d.ts +1 -1
- package/Debug/rayHelper.js +2 -2
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.d.ts +2 -2
- package/Debug/skeletonViewer.js +10 -10
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +1 -1
- package/DeviceInput/internalDeviceSourceManager.js +0 -1
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +1 -1
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.scissor.d.ts +18 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js +2 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js.map +1 -0
- package/Engines/Extensions/engine.views.d.ts +1 -1
- package/Engines/Extensions/engine.views.js +1 -1
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +4 -1
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +11 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.d.ts +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/abstractEngine.pure.js +2 -2
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +1 -0
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engine.pure.d.ts +0 -12
- package/Engines/engine.pure.js +0 -20
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/engineFactory.d.ts +2 -2
- package/Engines/engineFactory.js +3 -3
- package/Engines/engineFactory.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +93 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/pure.d.ts +1 -0
- package/Engines/pure.js +1 -0
- package/Engines/pure.js.map +1 -1
- package/Engines/thinEngine.scissor.d.ts +6 -0
- package/Engines/thinEngine.scissor.js +9 -0
- package/Engines/thinEngine.scissor.js.map +1 -0
- package/Engines/thinEngine.scissor.pure.d.ts +6 -0
- package/Engines/thinEngine.scissor.pure.js +24 -0
- package/Engines/thinEngine.scissor.pure.js.map +1 -0
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.js +7 -0
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/Events/pointerEvents.d.ts +1 -1
- package/Events/pointerEvents.js +1 -1
- package/Events/pointerEvents.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphCodeExecutionBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyboardEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.js +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
- package/FlowGraph/flowGraphBlock.d.ts +1 -1
- package/FlowGraph/flowGraphBlock.js +1 -1
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -1
- package/FlowGraph/flowGraphExecutionBlock.js +1 -1
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/FlowGraph/flowGraphMath.d.ts +1 -1
- package/FlowGraph/flowGraphMath.js +1 -1
- package/FlowGraph/flowGraphMath.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +1 -1
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/flowGraphPathConverterComponent.d.ts +1 -1
- package/FlowGraph/flowGraphPathConverterComponent.js +2 -2
- package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
- package/FlowGraph/flowGraphValidator.js.map +1 -1
- package/FlowGraph/serialization.js +4 -4
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/utils.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.d.ts +2 -2
- package/FrameGraph/Node/nodeRenderGraph.js +7 -7
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +30 -0
- package/FrameGraph/Tasks/Layers/baseLayerTask.js +28 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +2 -2
- package/FrameGraph/Tasks/Misc/computeShaderTask.js +2 -2
- package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.d.ts +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +2 -2
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +7 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js +8 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingBlendVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.d.ts +2 -2
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js +3 -3
- package/FrameGraph/Tasks/PostProcesses/volumetricLightingTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +6 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +14 -5
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsSpatialBlurTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsTracingTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsVoxelizationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +7 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +7 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.js +1 -1
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +1 -1
- package/FrameGraph/frameGraphTextureManager.js +1 -1
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/axisDragGizmo.d.ts +5 -5
- package/Gizmos/axisDragGizmo.js +6 -6
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.d.ts +4 -4
- package/Gizmos/axisScaleGizmo.js +6 -6
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.d.ts +5 -5
- package/Gizmos/boundingBoxGizmo.js +7 -7
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/cameraGizmo.d.ts +3 -3
- package/Gizmos/cameraGizmo.js +7 -7
- package/Gizmos/cameraGizmo.js.map +1 -1
- package/Gizmos/gizmo.d.ts +2 -2
- package/Gizmos/gizmo.js +3 -3
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.d.ts +2 -2
- package/Gizmos/gizmoManager.js +2 -2
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/lightGizmo.d.ts +4 -4
- package/Gizmos/lightGizmo.js +11 -11
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/planeDragGizmo.d.ts +4 -4
- package/Gizmos/planeDragGizmo.js +5 -5
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.d.ts +1 -1
- package/Gizmos/positionGizmo.js +2 -2
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.d.ts +3 -3
- package/Gizmos/rotationGizmo.js +3 -3
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.d.ts +2 -2
- package/Gizmos/scaleGizmo.js +4 -4
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Gizmos/spatialAudioGizmo.d.ts +2 -2
- package/Gizmos/spatialAudioGizmo.js +6 -6
- package/Gizmos/spatialAudioGizmo.js.map +1 -1
- package/Helpers/environmentHelper.d.ts +6 -6
- package/Helpers/environmentHelper.js +12 -12
- package/Helpers/environmentHelper.js.map +1 -1
- package/Helpers/materialConversionHelper.d.ts +1 -1
- package/Helpers/materialConversionHelper.js +1 -1
- package/Helpers/materialConversionHelper.js.map +1 -1
- package/Helpers/photoDome.d.ts +1 -1
- package/Helpers/photoDome.js +1 -1
- package/Helpers/photoDome.js.map +1 -1
- package/Helpers/textureDome.d.ts +4 -4
- package/Helpers/textureDome.js +6 -6
- package/Helpers/textureDome.js.map +1 -1
- package/Helpers/videoDome.d.ts +1 -1
- package/Helpers/videoDome.js +2 -2
- package/Helpers/videoDome.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +1 -1
- package/Inputs/scene.inputManager.js +1 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Instrumentation/sceneInstrumentation.js +1 -1
- package/Instrumentation/sceneInstrumentation.js.map +1 -1
- package/Layers/effectLayer.d.ts +1 -1
- package/Layers/effectLayer.js +3 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/layer.d.ts +2 -2
- package/Layers/layer.js +4 -4
- package/Layers/layer.js.map +1 -1
- package/Layers/thinEffectLayer.d.ts +2 -2
- package/Layers/thinEffectLayer.js +3 -3
- package/Layers/thinEffectLayer.js.map +1 -1
- package/Layers/thinGlowLayer.d.ts +1 -1
- package/Layers/thinGlowLayer.js +3 -3
- package/Layers/thinGlowLayer.js.map +1 -1
- package/Layers/thinHighlightLayer.d.ts +1 -1
- package/Layers/thinHighlightLayer.js +3 -3
- package/Layers/thinHighlightLayer.js.map +1 -1
- package/Layers/thinSelectionOutlineLayer.d.ts +1 -1
- package/Layers/thinSelectionOutlineLayer.js +3 -3
- package/Layers/thinSelectionOutlineLayer.js.map +1 -1
- package/Legacy/legacy.js +12 -1
- package/Legacy/legacy.js.map +1 -1
- package/LensFlares/lensFlare.d.ts +2 -2
- package/LensFlares/lensFlare.js +3 -3
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.d.ts +1 -1
- package/LensFlares/lensFlareSystem.js +6 -6
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/LTC/ltcTextureTool.js +1 -1
- package/Lights/LTC/ltcTextureTool.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -285
- package/Lights/Shadows/cascadedShadowGenerator.js +3 -857
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +290 -0
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +868 -0
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -0
- package/Lights/Shadows/pure.d.ts +1 -0
- package/Lights/Shadows/pure.js +1 -0
- package/Lights/Shadows/pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +3 -3
- package/Lights/Shadows/shadowGenerator.js +7 -7
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.d.ts +1 -1
- package/Lights/areaLight.js +0 -1
- package/Lights/areaLight.js.map +1 -1
- package/Lights/light.d.ts +2 -2
- package/Lights/light.js +2 -2
- package/Lights/light.js.map +1 -1
- package/Lights/shadowLight.d.ts +1 -1
- package/Lights/shadowLight.js +1 -1
- package/Lights/shadowLight.js.map +1 -1
- package/Loading/sceneLoader.d.ts +2 -2
- package/Loading/sceneLoader.js +3 -3
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.js +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +10 -3
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
- package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +3 -3
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js +3 -3
- package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +6 -6
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +12 -0
- package/Materials/Node/nodeMaterial.pure.js +68 -13
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialDefault.js +14 -14
- package/Materials/Node/nodeMaterialDefault.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.js +19 -4
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +40 -2
- package/Materials/PBR/pbrAnisotropicConfiguration.js +41 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +5 -1
- package/Materials/PBR/pbrBRDFConfiguration.js +5 -1
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +2 -2
- package/Materials/PBR/pbrBaseSimpleMaterial.js +2 -2
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +42 -2
- package/Materials/PBR/pbrClearCoatConfiguration.js +42 -2
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +38 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +38 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +41 -2
- package/Materials/PBR/pbrSheenConfiguration.js +41 -2
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +41 -2
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +42 -3
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +2 -2
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.core.js +5 -109
- package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -1
- package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +3 -1
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +11 -2
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js +1 -1
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Packer/packer.d.ts +1 -1
- package/Materials/Textures/Packer/packer.js +6 -6
- package/Materials/Textures/Packer/packer.js.map +1 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -2
- package/Materials/Textures/Procedurals/customProceduralTexture.js +4 -4
- package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +4 -1
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.js.map +1 -1
- package/Materials/Textures/prePassRenderTarget.d.ts +1 -1
- package/Materials/Textures/prePassRenderTarget.js +1 -1
- package/Materials/Textures/prePassRenderTarget.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.d.ts +1 -1
- package/Materials/Textures/rawCubeTexture.js +2 -2
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.d.ts +1 -1
- package/Materials/Textures/rawTexture.js +1 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.d.ts +1 -1
- package/Materials/Textures/rawTexture2DArray.js +1 -1
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/refractionTexture.d.ts +1 -1
- package/Materials/Textures/refractionTexture.js +1 -1
- package/Materials/Textures/refractionTexture.js.map +1 -1
- package/Materials/Textures/textureMerger.d.ts +1 -1
- package/Materials/Textures/textureMerger.js +1 -1
- package/Materials/Textures/textureMerger.js.map +1 -1
- package/Materials/Textures/textureProcessor.d.ts +1 -1
- package/Materials/Textures/textureProcessor.js +2 -2
- package/Materials/Textures/textureProcessor.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.d.ts +4 -4
- package/Materials/Textures/thinRenderTargetTexture.js +2 -2
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/clipPlaneMaterialHelper.js +1 -1
- package/Materials/clipPlaneMaterialHelper.js.map +1 -1
- package/Materials/effectRenderer.pure.js +4 -2
- package/Materials/effectRenderer.pure.js.map +1 -1
- package/Materials/floatingOriginMatrixOverrides.d.ts +1 -1
- package/Materials/floatingOriginMatrixOverrides.js +1 -1
- package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +39 -1
- package/Materials/material.detailMapConfiguration.js +39 -1
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/materialHelper.functions.js +45 -1
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +1 -1
- package/Materials/materialHelper.geometryrendering.js +1 -1
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/materialPluginFactoryExport.js +2 -2
- package/Materials/materialPluginFactoryExport.js.map +1 -1
- package/Materials/pushMaterial.d.ts +7 -1
- package/Materials/pushMaterial.js +7 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +1 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/math.axis.d.ts +1 -1
- package/Maths/math.axis.js +1 -1
- package/Maths/math.axis.js.map +1 -1
- package/Maths/math.d.ts +2 -2
- package/Maths/math.functions.d.ts +1 -1
- package/Maths/math.functions.js +1 -1
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.isovector.d.ts +1 -1
- package/Maths/math.isovector.js +1 -1
- package/Maths/math.isovector.js.map +1 -1
- package/Maths/math.js +2 -2
- package/Maths/math.js.map +1 -1
- package/Maths/math.path.d.ts +1 -1
- package/Maths/math.path.js +1 -1
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.plane.d.ts +1 -1
- package/Maths/math.plane.js +1 -1
- package/Maths/math.plane.js.map +1 -1
- package/Maths/math.polar.d.ts +1 -1
- package/Maths/math.polar.js +1 -1
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.vertexFormat.d.ts +1 -1
- package/Maths/math.vertexFormat.js +1 -1
- package/Maths/math.vertexFormat.js.map +1 -1
- package/Maths/pure.d.ts +1 -0
- package/Maths/pure.js +1 -0
- package/Maths/pure.js.map +1 -1
- package/Meshes/Builders/geodesicBuilder.js +1 -1
- package/Meshes/Builders/geodesicBuilder.js.map +1 -1
- package/Meshes/Builders/goldbergBuilder.d.ts +1 -1
- package/Meshes/Builders/goldbergBuilder.js +4 -4
- package/Meshes/Builders/goldbergBuilder.js.map +1 -1
- package/Meshes/Builders/greasedLineBuilder.d.ts +4 -4
- package/Meshes/Builders/greasedLineBuilder.js +5 -5
- package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
- package/Meshes/Builders/textBuilder.d.ts +2 -2
- package/Meshes/Builders/textBuilder.js +4 -4
- package/Meshes/Builders/textBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +3 -3
- package/Meshes/Builders/tiledBoxBuilder.js +3 -3
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.js +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCodec.js +1 -1
- package/Meshes/Compression/dracoCodec.js.map +1 -1
- package/Meshes/Compression/dracoDecoder.js +1 -1
- package/Meshes/Compression/dracoDecoder.js.map +1 -1
- package/Meshes/Compression/dracoEncoder.d.ts +1 -1
- package/Meshes/Compression/dracoEncoder.js +2 -2
- package/Meshes/Compression/dracoEncoder.js.map +1 -1
- package/Meshes/Compression/meshoptCompression.js +1 -1
- package/Meshes/Compression/meshoptCompression.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +50 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +263 -107
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +37 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +160 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
- package/Meshes/GreasedLine/greasedLineBaseMesh.js +3 -3
- package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
- package/Meshes/Node/nodeGeometry.d.ts +2 -2
- package/Meshes/Node/nodeGeometry.js +4 -4
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBuildState.d.ts +1 -1
- package/Meshes/Node/nodeGeometryBuildState.js +1 -1
- package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
- package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
- package/Meshes/abstractMesh.hotSpot.js +2 -2
- package/Meshes/abstractMesh.hotSpot.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2 -13
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/buffer.d.ts +1 -1
- package/Meshes/buffer.js +1 -1
- package/Meshes/buffer.js.map +1 -1
- package/Meshes/csg.d.ts +3 -3
- package/Meshes/csg.js +4 -4
- package/Meshes/csg.js.map +1 -1
- package/Meshes/csg2.d.ts +1 -1
- package/Meshes/csg2.js +38 -11
- package/Meshes/csg2.js.map +1 -1
- package/Meshes/geodesicMesh.d.ts +1 -1
- package/Meshes/geodesicMesh.js +1 -1
- package/Meshes/geodesicMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +2 -2
- package/Meshes/geometry.js +34 -19
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/lattice.d.ts +1 -1
- package/Meshes/lattice.js +1 -1
- package/Meshes/lattice.js.map +1 -1
- package/Meshes/lattice.material.d.ts +1 -1
- package/Meshes/lattice.material.js +1 -1
- package/Meshes/lattice.material.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +2 -2
- package/Meshes/mesh.vertexData.js +3 -4
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/mesh.vertexData.subdivide.js +1 -1
- package/Meshes/mesh.vertexData.subdivide.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +18 -18
- package/Meshes/meshBuilder.js +18 -18
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshSimplification.d.ts +1 -1
- package/Meshes/meshSimplification.js +4 -4
- package/Meshes/meshSimplification.js.map +1 -1
- package/Meshes/meshUVSpaceRenderer.d.ts +1 -1
- package/Meshes/meshUVSpaceRenderer.js +0 -1
- package/Meshes/meshUVSpaceRenderer.js.map +1 -1
- package/Meshes/meshUtils.d.ts +1 -1
- package/Meshes/meshUtils.js +2 -2
- package/Meshes/meshUtils.js.map +1 -1
- package/Meshes/polygonMesh.d.ts +2 -2
- package/Meshes/polygonMesh.js +3 -3
- package/Meshes/polygonMesh.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -2
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/HighDynamicRange/panoramaToCubemap.js +1 -1
- package/Misc/HighDynamicRange/panoramaToCubemap.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/areaLightsTextureTools.d.ts +1 -1
- package/Misc/areaLightsTextureTools.js +3 -3
- package/Misc/areaLightsTextureTools.js.map +1 -1
- package/Misc/assetsManager.d.ts +4 -4
- package/Misc/assetsManager.js +5 -5
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/basisWorker.js +1 -1
- package/Misc/basisWorker.js.map +1 -1
- package/Misc/brdfTextureTools.js +1 -1
- package/Misc/brdfTextureTools.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +1 -1
- package/Misc/copyTextureToTexture.js +1 -1
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/decorators.serialization.js +2 -2
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/depthReducer.d.ts +2 -2
- package/Misc/depthReducer.js +2 -2
- package/Misc/depthReducer.js.map +1 -1
- package/Misc/gradients.d.ts +1 -1
- package/Misc/gradients.js +1 -1
- package/Misc/gradients.js.map +1 -1
- package/Misc/greasedLineTools.d.ts +1 -1
- package/Misc/greasedLineTools.js +3 -3
- package/Misc/greasedLineTools.js.map +1 -1
- package/Misc/halfFloat.d.ts +17 -0
- package/Misc/halfFloat.js +131 -0
- package/Misc/halfFloat.js.map +1 -0
- package/Misc/khronosTextureContainer2.js +1 -1
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/meshExploder.js +1 -1
- package/Misc/meshExploder.js.map +1 -1
- package/Misc/pivotTools.js +1 -1
- package/Misc/pivotTools.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -1
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneOptimizer.js +1 -1
- package/Misc/sceneOptimizer.js.map +1 -1
- package/Misc/sceneRecorder.js +7 -7
- package/Misc/sceneRecorder.js.map +1 -1
- package/Misc/sceneSerializer.js +3 -3
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +1 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/textureTools.d.ts +3 -13
- package/Misc/textureTools.js +6 -64
- package/Misc/textureTools.js.map +1 -1
- package/Misc/thinMinMaxReducer.d.ts +1 -1
- package/Misc/thinMinMaxReducer.js +1 -1
- package/Misc/thinMinMaxReducer.js.map +1 -1
- package/Misc/tools.internals.js +1 -1
- package/Misc/tools.internals.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Misc/trajectoryClassifier.d.ts +1 -1
- package/Misc/trajectoryClassifier.js +1 -1
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Misc/videoRecorder.js +1 -1
- package/Misc/videoRecorder.js.map +1 -1
- package/Misc/virtualJoystick.d.ts +1 -1
- package/Misc/virtualJoystick.js +1 -1
- package/Misc/virtualJoystick.js.map +1 -1
- package/Morph/morphTarget.js +1 -1
- package/Morph/morphTarget.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.d.ts +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +2 -2
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/boxParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/hemisphericParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +2 -2
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/pointParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.d.ts +4 -4
- package/Particles/Node/nodeParticleBuildState.js +2 -2
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.d.ts +2 -2
- package/Particles/Node/nodeParticleSystemSet.helper.js +31 -31
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +8 -8
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/attractor.d.ts +1 -1
- package/Particles/attractor.js +1 -1
- package/Particles/attractor.js.map +1 -1
- package/Particles/flowMap.d.ts +7 -1
- package/Particles/flowMap.js +7 -1
- package/Particles/flowMap.js.map +1 -1
- package/Particles/particle.d.ts +2 -2
- package/Particles/particle.js +2 -2
- package/Particles/particle.js.map +1 -1
- package/Particles/particleHelper.js +5 -5
- package/Particles/particleHelper.js.map +1 -1
- package/Particles/particleSystem.functions.d.ts +1 -1
- package/Particles/particleSystem.functions.js +1 -1
- package/Particles/particleSystem.functions.js.map +1 -1
- package/Particles/particleSystemSet.d.ts +1 -1
- package/Particles/particleSystemSet.js +5 -5
- package/Particles/particleSystemSet.js.map +1 -1
- package/Particles/pointsCloudSystem.d.ts +1 -1
- package/Particles/pointsCloudSystem.js +6 -6
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticle.d.ts +2 -2
- package/Particles/solidParticle.js +3 -3
- package/Particles/solidParticle.js.map +1 -1
- package/Particles/solidParticleSystem.d.ts +4 -4
- package/Particles/solidParticleSystem.js +7 -7
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/subEmitter.js +1 -1
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/thinParticleSystem.function.js +2 -2
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
- package/Physics/Plugins/cannonJSPlugin.js +1 -1
- package/Physics/Plugins/cannonJSPlugin.js.map +1 -1
- package/Physics/castingResult.d.ts +1 -1
- package/Physics/castingResult.js +1 -1
- package/Physics/castingResult.js.map +1 -1
- package/Physics/physicsHelper.d.ts +1 -1
- package/Physics/physicsHelper.js +4 -4
- package/Physics/physicsHelper.js.map +1 -1
- package/Physics/physicsImpostor.d.ts +1 -1
- package/Physics/physicsImpostor.js +1 -1
- package/Physics/physicsImpostor.js.map +1 -1
- package/Physics/physicsRaycastResult.d.ts +1 -1
- package/Physics/physicsRaycastResult.js +1 -1
- package/Physics/physicsRaycastResult.js.map +1 -1
- package/Physics/v1/Plugins/ammoJSPlugin.d.ts +2 -2
- package/Physics/v1/Plugins/ammoJSPlugin.js +5 -5
- package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
- package/Physics/v1/Plugins/oimoJSPlugin.d.ts +2 -2
- package/Physics/v1/Plugins/oimoJSPlugin.js +2 -2
- package/Physics/v1/Plugins/oimoJSPlugin.js.map +1 -1
- package/Physics/v1/physicsEngine.d.ts +1 -1
- package/Physics/v1/physicsEngine.js +1 -1
- package/Physics/v1/physicsEngine.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +14 -2
- package/Physics/v2/Plugins/havokPlugin.js +45 -7
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/characterController.d.ts +1 -1
- package/Physics/v2/characterController.js +2 -2
- package/Physics/v2/characterController.js.map +1 -1
- package/Physics/v2/physicsAggregate.d.ts +3 -3
- package/Physics/v2/physicsAggregate.js +10 -6
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +1 -1
- package/Physics/v2/physicsBody.js +1 -1
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/physicsEngine.d.ts +1 -1
- package/Physics/v2/physicsEngine.js +1 -1
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/Physics/v2/physicsShape.d.ts +1 -1
- package/Physics/v2/physicsShape.js +1 -1
- package/Physics/v2/physicsShape.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +2 -2
- package/Physics/v2/ragdoll.js +2 -2
- package/Physics/v2/ragdoll.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.d.ts +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +8 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +3 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/bloomEffect.d.ts +1 -1
- package/PostProcesses/bloomEffect.js +4 -4
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +1 -1
- package/PostProcesses/depthOfFieldEffect.js +3 -3
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.d.ts +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.d.ts +1 -1
- package/PostProcesses/highlightsPostProcess.js +1 -1
- package/PostProcesses/highlightsPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.d.ts +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +1 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.d.ts +3 -0
- package/PostProcesses/postProcessManager.js +4 -1
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.d.ts +1 -0
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.js +10 -0
- package/PostProcesses/subSurfaceScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/thinBloomEffect.js +1 -1
- package/PostProcesses/thinBloomEffect.js.map +1 -1
- package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
- package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinBlurPostProcess.js +1 -1
- package/PostProcesses/thinBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +2 -2
- package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
- package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/thinColorCorrectionPostProcess.d.ts +1 -1
- package/PostProcesses/thinColorCorrectionPostProcess.js +2 -2
- package/PostProcesses/thinColorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/thinConvolutionPostProcess.d.ts +1 -1
- package/PostProcesses/thinConvolutionPostProcess.js +1 -1
- package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
- package/PostProcesses/thinCustomPostProcess.d.ts +1 -1
- package/PostProcesses/thinCustomPostProcess.js +1 -1
- package/PostProcesses/thinCustomPostProcess.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldEffect.d.ts +3 -0
- package/PostProcesses/thinDepthOfFieldEffect.js +4 -1
- package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/thinFXAAPostProcess.d.ts +2 -2
- package/PostProcesses/thinFXAAPostProcess.js +2 -2
- package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
- package/PostProcesses/thinFilterPostProcess.d.ts +2 -2
- package/PostProcesses/thinFilterPostProcess.js +2 -2
- package/PostProcesses/thinFilterPostProcess.js.map +1 -1
- package/PostProcesses/thinGrainPostProcess.d.ts +1 -1
- package/PostProcesses/thinGrainPostProcess.js +1 -1
- package/PostProcesses/thinGrainPostProcess.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.d.ts +2 -2
- package/PostProcesses/thinImageProcessingPostProcess.js +2 -2
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/thinMotionBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinMotionBlurPostProcess.js +2 -2
- package/PostProcesses/thinMotionBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinPassPostProcess.d.ts +1 -1
- package/PostProcesses/thinPassPostProcess.js +1 -1
- package/PostProcesses/thinPassPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.js +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2CombinePostProcess.d.ts +1 -1
- package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
- package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2PostProcess.d.ts +7 -2
- package/PostProcesses/thinSSAO2PostProcess.js +36 -4
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
- package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSRPostProcess.js +2 -2
- package/PostProcesses/thinSSRPostProcess.js.map +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/thinSharpenPostProcess.d.ts +1 -1
- package/PostProcesses/thinSharpenPostProcess.js +1 -1
- package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
- package/PostProcesses/thinTAAPostProcess.d.ts +3 -3
- package/PostProcesses/thinTAAPostProcess.js +4 -4
- package/PostProcesses/thinTAAPostProcess.js.map +1 -1
- package/PostProcesses/thinTonemapPostProcess.d.ts +1 -1
- package/PostProcesses/thinTonemapPostProcess.js +1 -1
- package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +1 -1
- package/PostProcesses/vrDistortionCorrectionPostProcess.js +3 -3
- package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +2 -2
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +2 -2
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -3
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +4 -4
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
- package/Rendering/depthPeelingRenderer.d.ts +1 -1
- package/Rendering/depthPeelingRenderer.js +2 -2
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +2 -2
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingTextures.js +3 -3
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/iblCdfGenerator.d.ts +3 -3
- package/Rendering/iblCdfGenerator.js +5 -5
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Rendering/renderingGroup.js +1 -1
- package/Rendering/renderingGroup.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.d.ts +2 -2
- package/Rendering/subSurfaceConfiguration.js +2 -2
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/utilityLayerRenderer.d.ts +2 -2
- package/Rendering/utilityLayerRenderer.js +4 -4
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/greasedLine.vertex.js +19 -3
- package/Shaders/greasedLine.vertex.js.map +1 -1
- package/Shaders/ssao2.fragment.js +10 -2
- package/Shaders/ssao2.fragment.js.map +1 -1
- package/ShadersWGSL/ssao2.fragment.js +10 -2
- package/ShadersWGSL/ssao2.fragment.js.map +1 -1
- package/SmartAssets/smartAssetSerializer.js +1 -1
- package/SmartAssets/smartAssetSerializer.js.map +1 -1
- package/Sprites/sprite.d.ts +2 -2
- package/Sprites/sprite.js +2 -2
- package/Sprites/sprite.js.map +1 -1
- package/Sprites/spriteManager.d.ts +2 -2
- package/Sprites/spriteManager.js +4 -5
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spritePackedManager.js +1 -1
- package/Sprites/spritePackedManager.js.map +1 -1
- package/Sprites/spriteRenderer.js +2 -2
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRHitTestLegacy.d.ts +1 -1
- package/XR/features/WebXRHitTestLegacy.js +2 -2
- package/XR/features/WebXRHitTestLegacy.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.js +2 -2
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/motionController/webXRGenericMotionController.js +2 -2
- package/XR/motionController/webXRGenericMotionController.js.map +1 -1
- package/XR/motionController/webXRProfiledMotionController.js +4 -4
- package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
- package/XR/webXRCamera.d.ts +3 -3
- package/XR/webXRCamera.js +4 -4
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +4 -4
- package/XR/webXRDefaultExperience.js +4 -4
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.js +1 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/XR/webXRExperienceHelper.js +2 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +47 -0
- package/XR/webXRFeaturesManager.js +1 -1
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRInput.js +1 -1
- package/XR/webXRInput.js.map +1 -1
- package/XR/webXRInputSource.js +4 -4
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.js +1 -1
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +1 -1
- package/XR/webXRRenderTargetTextureProvider.js +1 -1
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/assetContainer.d.ts +4 -4
- package/assetContainer.js +6 -6
- package/assetContainer.js.map +1 -1
- package/node.d.ts +1 -1
- package/node.js +6 -2
- package/node.js.map +1 -1
- package/package.json +46 -175
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeParticleSystemSet.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Node/nodeParticleSystemSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"core/Misc/decorators\";\r\nimport { ParticleSystemSet } from \"../particleSystemSet\";\r\nimport { SystemBlock } from \"./Blocks/systemBlock\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { NodeParticleBuildState } from \"./nodeParticleBuildState\";\r\nimport { type NodeParticleBlock } from \"./nodeParticleBlock\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { GetClass } from \"core/Misc/typeStore\";\r\nimport { WebRequest } from \"core/Misc/webRequest\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { ParticleInputBlock } from \"./Blocks/particleInputBlock\";\r\nimport { ParticleTextureSourceBlock } from \"./Blocks/particleSourceTextureBlock\";\r\nimport { NodeParticleContextualSources } from \"./Enums/nodeParticleContextualSources\";\r\nimport { UpdatePositionBlock } from \"./Blocks/Update/updatePositionBlock\";\r\nimport { ParticleMathBlock, ParticleMathBlockOperations } from \"./Blocks/particleMathBlock\";\r\nimport { type ParticleTeleportOutBlock } from \"./Blocks/Teleport/particleTeleportOutBlock\";\r\nimport { type ParticleTeleportInBlock } from \"./Blocks/Teleport/particleTeleportInBlock\";\r\nimport { BoxShapeBlock } from \"./Blocks/Emitters/boxShapeBlock\";\r\nimport { CreateParticleBlock } from \"./Blocks/Emitters/createParticleBlock\";\r\nimport { type Color4 } from \"core/Maths/math.color\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n// declare NODEPARTICLEEDITOR namespace for compilation issue\r\ndeclare let NODEPARTICLEEDITOR: any;\r\ndeclare let BABYLON: any;\r\n\r\n/**\r\n * Interface used to configure the node particle editor\r\n */\r\nexport interface INodeParticleEditorOptions {\r\n /** Define the URL to load node editor script from */\r\n editorURL?: string;\r\n /** Additional configuration for the NPE */\r\n nodeEditorConfig?: {\r\n backgroundColor?: Color4;\r\n /** If true, the node particle system set will be disposed when the editor is closed (default: true) */\r\n disposeOnClose?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * Defines a set of particle systems defined as a node graph.\r\n * NPE: #K6F1ZB#1\r\n * PG: #ZT509U#1\r\n */\r\nexport class NodeParticleSystemSet {\r\n private _systemBlocks: SystemBlock[] = [];\r\n private _buildId: number = 0;\r\n\r\n /** Define the Url to load node editor script */\r\n public static EditorURL = `${Tools._DefaultCdnUrl}/v${AbstractEngine.Version}/nodeParticleEditor/babylon.nodeParticleEditor.js`;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /**\r\n * Snippet ID if the material was created from the snippet server\r\n */\r\n public snippetId: string;\r\n\r\n /**\r\n * Gets an array of blocks that needs to be serialized even if they are not yet connected\r\n */\r\n public attachedBlocks: NodeParticleBlock[] = [];\r\n\r\n /**\r\n * Gets or sets data used by visual editor\r\n * @see https://npe.babylonjs.com\r\n */\r\n public editorData: any = null;\r\n\r\n /**\r\n * Observable raised when the particle set is built\r\n */\r\n public onBuildObservable = new Observable<NodeParticleSystemSet>();\r\n\r\n /**\r\n * The name of the set\r\n */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * A free comment about the set\r\n */\r\n @serialize(\"comment\")\r\n public comment: string;\r\n\r\n /**\r\n * Gets the system blocks\r\n */\r\n public get systemBlocks(): SystemBlock[] {\r\n return this._systemBlocks;\r\n }\r\n\r\n /**\r\n * Gets the list of input blocks attached to this material\r\n * @returns an array of InputBlocks\r\n */\r\n public get inputBlocks() {\r\n const blocks: ParticleInputBlock[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput) {\r\n blocks.push(block as ParticleInputBlock);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Get a block by its name\r\n * @param name defines the name of the block to retrieve\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByName(name: string) {\r\n let result = null;\r\n for (const block of this.attachedBlocks) {\r\n if (block.name === name) {\r\n if (!result) {\r\n result = block;\r\n } else {\r\n Tools.Warn(\"More than one block was found with the name `\" + name + \"`\");\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get a block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByPredicate(predicate: (block: NodeParticleBlock) => boolean) {\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n return block;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get an input block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required input block or null if not found\r\n */\r\n public getInputBlockByPredicate(predicate: (block: ParticleInputBlock) => boolean): Nullable<ParticleInputBlock> {\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput && predicate(block as ParticleInputBlock)) {\r\n return block as ParticleInputBlock;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n /**\r\n * Creates a new set\r\n * @param name defines the name of the set\r\n */\r\n public constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the node particle set e.g. \"NodeParticleSystemSet\"\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"NodeParticleSystemSet\";\r\n }\r\n\r\n private _initializeBlock(node: NodeParticleBlock, autoConfigure = true) {\r\n if (this.attachedBlocks.indexOf(node) === -1) {\r\n this.attachedBlocks.push(node);\r\n }\r\n\r\n for (const input of node.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== node) {\r\n this._initializeBlock(block, autoConfigure);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private BJSNODEPARTICLEEDITOR = this._getGlobalNodeParticleEditor();\r\n\r\n /** Get the editor from bundle or global\r\n * @returns the global NPE\r\n */\r\n private _getGlobalNodeParticleEditor(): any {\r\n // UMD global name detection from bundle metadata.\r\n // Note: rollup-built UMD bundles do not expose the editor class\r\n // directly on the namespace - it lives on `.default.NodeParticleEditor` -\r\n // so we unwrap that case before falling back to the BABYLON global.\r\n if (typeof NODEPARTICLEEDITOR !== \"undefined\") {\r\n if ((NODEPARTICLEEDITOR as any).NodeParticleEditor) {\r\n return NODEPARTICLEEDITOR;\r\n }\r\n if ((NODEPARTICLEEDITOR as any).default?.NodeParticleEditor) {\r\n return (NODEPARTICLEEDITOR as any).default;\r\n }\r\n }\r\n\r\n // In case of module let's check the global emitted from the editor entry point.\r\n if (typeof BABYLON !== \"undefined\" && typeof BABYLON.NodeParticleEditor !== \"undefined\") {\r\n return BABYLON;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Creates the node editor window.\r\n * @param additionalConfig Define the configuration of the editor\r\n */\r\n private _createNodeParticleEditor(additionalConfig?: any) {\r\n const nodeEditorConfig: any = {\r\n nodeParticleSet: this,\r\n ...additionalConfig,\r\n };\r\n this.BJSNODEPARTICLEEDITOR.NodeParticleEditor.Show(nodeEditorConfig);\r\n }\r\n\r\n /**\r\n * Launch the node particle editor\r\n * @param config Define the configuration of the editor\r\n * @returns a promise fulfilled when the node editor is visible\r\n */\r\n public async editAsync(config?: INodeParticleEditorOptions): Promise<void> {\r\n return await new Promise((resolve) => {\r\n this.BJSNODEPARTICLEEDITOR = this.BJSNODEPARTICLEEDITOR || this._getGlobalNodeParticleEditor();\r\n if (typeof this.BJSNODEPARTICLEEDITOR == \"undefined\") {\r\n const editorUrl = config && config.editorURL ? config.editorURL : NodeParticleSystemSet.EditorURL;\r\n\r\n // Load editor and add it to the DOM\r\n Tools.LoadBabylonScript(editorUrl, () => {\r\n this.BJSNODEPARTICLEEDITOR = this.BJSNODEPARTICLEEDITOR || this._getGlobalNodeParticleEditor();\r\n this._createNodeParticleEditor(config?.nodeEditorConfig);\r\n resolve();\r\n });\r\n } else {\r\n // Otherwise creates the editor\r\n this._createNodeParticleEditor(config?.nodeEditorConfig);\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Builds the particle system set from the defined blocks.\r\n * @param scene defines the hosting scene\r\n * @param verbose defines whether to log detailed information during the build process (false by default)\r\n * @returns a promise that resolves to the built particle system set\r\n */\r\n public async buildAsync(scene: Scene, verbose = false): Promise<ParticleSystemSet> {\r\n const output = new ParticleSystemSet();\r\n\r\n // Initialize all blocks\r\n for (const block of this._systemBlocks) {\r\n this._initializeBlock(block);\r\n }\r\n\r\n // Build the blocks\r\n const buildPromises = new Array<Promise<void>>();\r\n for (const block of this.systemBlocks) {\r\n const state = new NodeParticleBuildState();\r\n state.buildId = this._buildId++;\r\n state.scene = scene;\r\n state.verbose = verbose;\r\n\r\n const system = block.createSystem(state);\r\n system._source = this;\r\n system._blockReference = block._internalId;\r\n\r\n // Errors\r\n state.emitErrors();\r\n\r\n buildPromises.push(state.waitForBuildPromisesAsync());\r\n\r\n output.systems.push(system);\r\n }\r\n\r\n await Promise.all(buildPromises);\r\n\r\n this.onBuildObservable.notifyObservers(this);\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Clear the current node particle set\r\n */\r\n public clear() {\r\n this.attachedBlocks.length = 0;\r\n this._systemBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Clear the current set and restore it to a default state\r\n */\r\n public setToDefault() {\r\n this.clear();\r\n\r\n this.editorData = null;\r\n\r\n // Main system\r\n const system = new SystemBlock(\"Particle system\");\r\n\r\n // Update position\r\n const updatePositionBlock = new UpdatePositionBlock(\"Update position\");\r\n updatePositionBlock.output.connectTo(system.particle);\r\n\r\n // Contextual inputs\r\n const positionBlock = new ParticleInputBlock(\"Position\");\r\n positionBlock.contextualValue = NodeParticleContextualSources.Position;\r\n const directionBlock = new ParticleInputBlock(\"Scaled direction\");\r\n directionBlock.contextualValue = NodeParticleContextualSources.ScaledDirection;\r\n\r\n // Add\r\n const addBlock = new ParticleMathBlock(\"Add\");\r\n addBlock.operation = ParticleMathBlockOperations.Add;\r\n positionBlock.output.connectTo(addBlock.left);\r\n directionBlock.output.connectTo(addBlock.right);\r\n addBlock.output.connectTo(updatePositionBlock.position);\r\n\r\n // Create particle\r\n const createParticleBlock = new CreateParticleBlock(\"Create particle\");\r\n\r\n // Shape\r\n const emitterShape = new BoxShapeBlock(\"Box shape\");\r\n createParticleBlock.particle.connectTo(emitterShape.particle);\r\n emitterShape.output.connectTo(updatePositionBlock.particle);\r\n\r\n // Texture\r\n const textureBlock = new ParticleTextureSourceBlock(\"Texture\");\r\n textureBlock.textureOutput.connectTo(system.texture);\r\n textureBlock.url = Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/textures/flare.png\");\r\n\r\n this._systemBlocks.push(system);\r\n }\r\n\r\n /**\r\n * Remove a block from the current system set\r\n * @param block defines the block to remove\r\n */\r\n public removeBlock(block: NodeParticleBlock) {\r\n const attachedBlockIndex = this.attachedBlocks.indexOf(block);\r\n if (attachedBlockIndex > -1) {\r\n this.attachedBlocks.splice(attachedBlockIndex, 1);\r\n }\r\n\r\n if (block.isSystem) {\r\n const index = this._systemBlocks.indexOf(block as SystemBlock);\r\n if (index > -1) {\r\n this._systemBlocks.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and load a new one from a serialization object\r\n * @param source defines the JSON representation of the particle set\r\n * @param merge defines whether or not the source must be merged or replace the current content\r\n */\r\n public parseSerializedObject(source: any, merge = false) {\r\n if (!merge) {\r\n this.clear();\r\n }\r\n\r\n const map: { [key: number]: NodeParticleBlock } = {};\r\n\r\n // Create blocks\r\n for (const parsedBlock of source.blocks) {\r\n const blockType = GetClass(parsedBlock.customType);\r\n if (blockType) {\r\n const block: NodeParticleBlock = new blockType();\r\n block._deserialize(parsedBlock);\r\n map[parsedBlock.id] = block;\r\n\r\n this.attachedBlocks.push(block);\r\n\r\n if (block.isSystem) {\r\n this._systemBlocks.push(block as SystemBlock);\r\n }\r\n }\r\n }\r\n\r\n // Reconnect teleportation\r\n for (const block of this.attachedBlocks) {\r\n if (block.isTeleportOut) {\r\n const teleportOut = block as ParticleTeleportOutBlock;\r\n const id = teleportOut._tempEntryPointUniqueId;\r\n if (id) {\r\n const source = map[id] as ParticleTeleportInBlock;\r\n if (source) {\r\n source.attachToEndpoint(teleportOut);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Connections - Starts with input blocks only (except if in \"merge\" mode where we scan all blocks)\r\n for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {\r\n const parsedBlock = source.blocks[blockIndex];\r\n const block = map[parsedBlock.id];\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n if (block.inputs.length && parsedBlock.inputs.some((i: any) => i.targetConnectionName) && !merge) {\r\n continue;\r\n }\r\n this._restoreConnections(block, source, map);\r\n }\r\n\r\n // UI related info\r\n if (source.locations || (source.editorData && source.editorData.locations)) {\r\n const locations: {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n }[] = source.locations || source.editorData.locations;\r\n\r\n for (const location of locations) {\r\n if (map[location.blockId]) {\r\n location.blockId = map[location.blockId].uniqueId;\r\n }\r\n }\r\n\r\n if (merge && this.editorData && this.editorData.locations) {\r\n locations.concat(this.editorData.locations);\r\n }\r\n\r\n if (source.locations) {\r\n this.editorData = {\r\n locations: locations,\r\n };\r\n } else {\r\n this.editorData = source.editorData;\r\n this.editorData.locations = locations;\r\n }\r\n\r\n const blockMap: { [key: number]: number } = {};\r\n\r\n for (const key in map) {\r\n blockMap[key] = map[key].uniqueId;\r\n }\r\n\r\n this.editorData.map = blockMap;\r\n }\r\n\r\n this.comment = source.comment;\r\n }\r\n\r\n private _restoreConnections(block: NodeParticleBlock, source: any, map: { [key: number]: NodeParticleBlock }) {\r\n for (const outputPoint of block.outputs) {\r\n for (const candidate of source.blocks) {\r\n const target = map[candidate.id];\r\n\r\n if (!target) {\r\n continue;\r\n }\r\n\r\n for (const input of candidate.inputs) {\r\n if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {\r\n const inputPoint = target.getInputByName(input.inputName);\r\n if (!inputPoint || inputPoint.isConnected) {\r\n continue;\r\n }\r\n\r\n outputPoint.connectTo(inputPoint, true);\r\n this._restoreConnections(target, source, map);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serializes this node particle set in a JSON representation\r\n * @param selectedBlocks defines the list of blocks to save (if null the whole node particle set will be saved)\r\n * @returns the serialized particle system set object\r\n */\r\n public serialize(selectedBlocks?: NodeParticleBlock[]): any {\r\n const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);\r\n serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy\r\n\r\n let blocks: NodeParticleBlock[] = [];\r\n\r\n if (selectedBlocks) {\r\n blocks = selectedBlocks;\r\n } else {\r\n serializationObject.customType = \"BABYLON.NodeParticleSystemSet\";\r\n }\r\n\r\n // Blocks\r\n serializationObject.blocks = [];\r\n\r\n for (const block of blocks) {\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n\r\n if (!selectedBlocks) {\r\n for (const block of this.attachedBlocks) {\r\n if (blocks.indexOf(block) !== -1) {\r\n continue;\r\n }\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current particle system set.\r\n * @param name defines the name to use for the new particle system set\r\n * @returns the cloned particle system set\r\n */\r\n public clone(name: string): NodeParticleSystemSet {\r\n const serializationObject = this.serialize();\r\n\r\n const clone = SerializationHelper.Clone(() => new NodeParticleSystemSet(name), this);\r\n clone.name = name;\r\n clone.snippetId = this.snippetId;\r\n\r\n clone.parseSerializedObject(serializationObject);\r\n clone._buildId = this._buildId;\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n for (const block of this.attachedBlocks) {\r\n block.dispose();\r\n }\r\n\r\n this.attachedBlocks.length = 0;\r\n this.onBuildObservable.clear();\r\n }\r\n\r\n /**\r\n * Creates a new node particle set set to default basic configuration\r\n * @param name defines the name of the particle set\r\n * @returns a new NodeParticleSystemSet\r\n */\r\n public static CreateDefault(name: string) {\r\n const nodeParticleSet = new NodeParticleSystemSet(name);\r\n\r\n nodeParticleSet.setToDefault();\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from parsed data\r\n * @param source defines the JSON representation of the particle set\r\n * @returns a new node particle set\r\n */\r\n public static Parse(source: any): NodeParticleSystemSet {\r\n const nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(source.name), source, null);\r\n\r\n nodeParticleSet.parseSerializedObject(source);\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from a snippet saved in a remote file\r\n * @param name defines the name of the node particle set to create\r\n * @param url defines the url to load from\r\n * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)\r\n * @returns a promise that will resolve to the new node particle set\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromFileAsync(name: string, url: string, nodeParticleSet?: NodeParticleSystemSet): Promise<NodeParticleSystemSet> {\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const serializationObject = JSON.parse(request.responseText);\r\n if (!nodeParticleSet) {\r\n nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(name), serializationObject, null);\r\n }\r\n\r\n nodeParticleSet.parseSerializedObject(serializationObject);\r\n\r\n resolve(nodeParticleSet);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the node particle system set\");\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", url);\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a node particle set from a snippet saved by the node particle editor\r\n * @param snippetId defines the snippet to load\r\n * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)\r\n * @returns a promise that will resolve to the new node particle set\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(snippetId: string, nodeParticleSet?: NodeParticleSystemSet): Promise<NodeParticleSystemSet> {\r\n if (snippetId === \"_BLANK\") {\r\n return Promise.resolve(NodeParticleSystemSet.CreateDefault(\"blank\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.nodeParticle);\r\n\r\n if (!nodeParticleSet) {\r\n nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(snippetId), serializationObject, null);\r\n }\r\n\r\n nodeParticleSet.parseSerializedObject(serializationObject);\r\n nodeParticleSet.snippetId = snippetId;\r\n\r\n try {\r\n resolve(nodeParticleSet);\r\n } catch (err) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(err);\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"nodeParticleSystemSet.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Node/nodeParticleSystemSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"core/Misc/decorators\";\r\nimport { ParticleSystemSet } from \"../particleSystemSet\";\r\nimport { SystemBlock } from \"./Blocks/systemBlock.pure\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { NodeParticleBuildState } from \"./nodeParticleBuildState\";\r\nimport { type NodeParticleBlock } from \"./nodeParticleBlock\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { GetClass } from \"core/Misc/typeStore\";\r\nimport { WebRequest } from \"core/Misc/webRequest\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { ParticleInputBlock } from \"./Blocks/particleInputBlock.pure\";\r\nimport { ParticleTextureSourceBlock } from \"./Blocks/particleSourceTextureBlock.pure\";\r\nimport { NodeParticleContextualSources } from \"./Enums/nodeParticleContextualSources\";\r\nimport { UpdatePositionBlock } from \"./Blocks/Update/updatePositionBlock.pure\";\r\nimport { ParticleMathBlock, ParticleMathBlockOperations } from \"./Blocks/particleMathBlock.pure\";\r\nimport { type ParticleTeleportOutBlock } from \"./Blocks/Teleport/particleTeleportOutBlock\";\r\nimport { type ParticleTeleportInBlock } from \"./Blocks/Teleport/particleTeleportInBlock\";\r\nimport { BoxShapeBlock } from \"./Blocks/Emitters/boxShapeBlock.pure\";\r\nimport { CreateParticleBlock } from \"./Blocks/Emitters/createParticleBlock.pure\";\r\nimport { type Color4 } from \"core/Maths/math.color\";\r\nimport { type Nullable } from \"../../types\";\r\n\r\n// declare NODEPARTICLEEDITOR namespace for compilation issue\r\ndeclare let NODEPARTICLEEDITOR: any;\r\ndeclare let BABYLON: any;\r\n\r\n/**\r\n * Interface used to configure the node particle editor\r\n */\r\nexport interface INodeParticleEditorOptions {\r\n /** Define the URL to load node editor script from */\r\n editorURL?: string;\r\n /** Additional configuration for the NPE */\r\n nodeEditorConfig?: {\r\n backgroundColor?: Color4;\r\n /** If true, the node particle system set will be disposed when the editor is closed (default: true) */\r\n disposeOnClose?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * Defines a set of particle systems defined as a node graph.\r\n * NPE: #K6F1ZB#1\r\n * PG: #ZT509U#1\r\n */\r\nexport class NodeParticleSystemSet {\r\n private _systemBlocks: SystemBlock[] = [];\r\n private _buildId: number = 0;\r\n\r\n /** Define the Url to load node editor script */\r\n public static EditorURL = `${Tools._DefaultCdnUrl}/v${AbstractEngine.Version}/nodeParticleEditor/babylon.nodeParticleEditor.js`;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /**\r\n * Snippet ID if the material was created from the snippet server\r\n */\r\n public snippetId: string;\r\n\r\n /**\r\n * Gets an array of blocks that needs to be serialized even if they are not yet connected\r\n */\r\n public attachedBlocks: NodeParticleBlock[] = [];\r\n\r\n /**\r\n * Gets or sets data used by visual editor\r\n * @see https://npe.babylonjs.com\r\n */\r\n public editorData: any = null;\r\n\r\n /**\r\n * Observable raised when the particle set is built\r\n */\r\n public onBuildObservable = new Observable<NodeParticleSystemSet>();\r\n\r\n /**\r\n * The name of the set\r\n */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * A free comment about the set\r\n */\r\n @serialize(\"comment\")\r\n public comment: string;\r\n\r\n /**\r\n * Gets the system blocks\r\n */\r\n public get systemBlocks(): SystemBlock[] {\r\n return this._systemBlocks;\r\n }\r\n\r\n /**\r\n * Gets the list of input blocks attached to this material\r\n * @returns an array of InputBlocks\r\n */\r\n public get inputBlocks() {\r\n const blocks: ParticleInputBlock[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput) {\r\n blocks.push(block as ParticleInputBlock);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Get a block by its name\r\n * @param name defines the name of the block to retrieve\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByName(name: string) {\r\n let result = null;\r\n for (const block of this.attachedBlocks) {\r\n if (block.name === name) {\r\n if (!result) {\r\n result = block;\r\n } else {\r\n Tools.Warn(\"More than one block was found with the name `\" + name + \"`\");\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get a block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required block or null if not found\r\n */\r\n public getBlockByPredicate(predicate: (block: NodeParticleBlock) => boolean) {\r\n for (const block of this.attachedBlocks) {\r\n if (predicate(block)) {\r\n return block;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get an input block using a predicate\r\n * @param predicate defines the predicate used to find the good candidate\r\n * @returns the required input block or null if not found\r\n */\r\n public getInputBlockByPredicate(predicate: (block: ParticleInputBlock) => boolean): Nullable<ParticleInputBlock> {\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput && predicate(block as ParticleInputBlock)) {\r\n return block as ParticleInputBlock;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n /**\r\n * Creates a new set\r\n * @param name defines the name of the set\r\n */\r\n public constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the node particle set e.g. \"NodeParticleSystemSet\"\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"NodeParticleSystemSet\";\r\n }\r\n\r\n private _initializeBlock(node: NodeParticleBlock, autoConfigure = true) {\r\n if (this.attachedBlocks.indexOf(node) === -1) {\r\n this.attachedBlocks.push(node);\r\n }\r\n\r\n for (const input of node.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== node) {\r\n this._initializeBlock(block, autoConfigure);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private BJSNODEPARTICLEEDITOR = this._getGlobalNodeParticleEditor();\r\n\r\n /** Get the editor from bundle or global\r\n * @returns the global NPE\r\n */\r\n private _getGlobalNodeParticleEditor(): any {\r\n // UMD global name detection from bundle metadata.\r\n // Note: rollup-built UMD bundles do not expose the editor class\r\n // directly on the namespace - it lives on `.default.NodeParticleEditor` -\r\n // so we unwrap that case before falling back to the BABYLON global.\r\n if (typeof NODEPARTICLEEDITOR !== \"undefined\") {\r\n if ((NODEPARTICLEEDITOR as any).NodeParticleEditor) {\r\n return NODEPARTICLEEDITOR;\r\n }\r\n if ((NODEPARTICLEEDITOR as any).default?.NodeParticleEditor) {\r\n return (NODEPARTICLEEDITOR as any).default;\r\n }\r\n }\r\n\r\n // In case of module let's check the global emitted from the editor entry point.\r\n if (typeof BABYLON !== \"undefined\" && typeof BABYLON.NodeParticleEditor !== \"undefined\") {\r\n return BABYLON;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Creates the node editor window.\r\n * @param additionalConfig Define the configuration of the editor\r\n */\r\n private _createNodeParticleEditor(additionalConfig?: any) {\r\n const nodeEditorConfig: any = {\r\n nodeParticleSet: this,\r\n ...additionalConfig,\r\n };\r\n this.BJSNODEPARTICLEEDITOR.NodeParticleEditor.Show(nodeEditorConfig);\r\n }\r\n\r\n /**\r\n * Launch the node particle editor\r\n * @param config Define the configuration of the editor\r\n * @returns a promise fulfilled when the node editor is visible\r\n */\r\n public async editAsync(config?: INodeParticleEditorOptions): Promise<void> {\r\n return await new Promise((resolve) => {\r\n this.BJSNODEPARTICLEEDITOR = this.BJSNODEPARTICLEEDITOR || this._getGlobalNodeParticleEditor();\r\n if (typeof this.BJSNODEPARTICLEEDITOR == \"undefined\") {\r\n const editorUrl = config && config.editorURL ? config.editorURL : NodeParticleSystemSet.EditorURL;\r\n\r\n // Load editor and add it to the DOM\r\n Tools.LoadBabylonScript(editorUrl, () => {\r\n this.BJSNODEPARTICLEEDITOR = this.BJSNODEPARTICLEEDITOR || this._getGlobalNodeParticleEditor();\r\n this._createNodeParticleEditor(config?.nodeEditorConfig);\r\n resolve();\r\n });\r\n } else {\r\n // Otherwise creates the editor\r\n this._createNodeParticleEditor(config?.nodeEditorConfig);\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Builds the particle system set from the defined blocks.\r\n * @param scene defines the hosting scene\r\n * @param verbose defines whether to log detailed information during the build process (false by default)\r\n * @returns a promise that resolves to the built particle system set\r\n */\r\n public async buildAsync(scene: Scene, verbose = false): Promise<ParticleSystemSet> {\r\n const output = new ParticleSystemSet();\r\n\r\n // Initialize all blocks\r\n for (const block of this._systemBlocks) {\r\n this._initializeBlock(block);\r\n }\r\n\r\n // Build the blocks\r\n const buildPromises = new Array<Promise<void>>();\r\n for (const block of this.systemBlocks) {\r\n const state = new NodeParticleBuildState();\r\n state.buildId = this._buildId++;\r\n state.scene = scene;\r\n state.verbose = verbose;\r\n\r\n const system = block.createSystem(state);\r\n system._source = this;\r\n system._blockReference = block._internalId;\r\n\r\n // Errors\r\n state.emitErrors();\r\n\r\n buildPromises.push(state.waitForBuildPromisesAsync());\r\n\r\n output.systems.push(system);\r\n }\r\n\r\n await Promise.all(buildPromises);\r\n\r\n this.onBuildObservable.notifyObservers(this);\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Clear the current node particle set\r\n */\r\n public clear() {\r\n this.attachedBlocks.length = 0;\r\n this._systemBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Clear the current set and restore it to a default state\r\n */\r\n public setToDefault() {\r\n this.clear();\r\n\r\n this.editorData = null;\r\n\r\n // Main system\r\n const system = new SystemBlock(\"Particle system\");\r\n\r\n // Update position\r\n const updatePositionBlock = new UpdatePositionBlock(\"Update position\");\r\n updatePositionBlock.output.connectTo(system.particle);\r\n\r\n // Contextual inputs\r\n const positionBlock = new ParticleInputBlock(\"Position\");\r\n positionBlock.contextualValue = NodeParticleContextualSources.Position;\r\n const directionBlock = new ParticleInputBlock(\"Scaled direction\");\r\n directionBlock.contextualValue = NodeParticleContextualSources.ScaledDirection;\r\n\r\n // Add\r\n const addBlock = new ParticleMathBlock(\"Add\");\r\n addBlock.operation = ParticleMathBlockOperations.Add;\r\n positionBlock.output.connectTo(addBlock.left);\r\n directionBlock.output.connectTo(addBlock.right);\r\n addBlock.output.connectTo(updatePositionBlock.position);\r\n\r\n // Create particle\r\n const createParticleBlock = new CreateParticleBlock(\"Create particle\");\r\n\r\n // Shape\r\n const emitterShape = new BoxShapeBlock(\"Box shape\");\r\n createParticleBlock.particle.connectTo(emitterShape.particle);\r\n emitterShape.output.connectTo(updatePositionBlock.particle);\r\n\r\n // Texture\r\n const textureBlock = new ParticleTextureSourceBlock(\"Texture\");\r\n textureBlock.textureOutput.connectTo(system.texture);\r\n textureBlock.url = Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/textures/flare.png\");\r\n\r\n this._systemBlocks.push(system);\r\n }\r\n\r\n /**\r\n * Remove a block from the current system set\r\n * @param block defines the block to remove\r\n */\r\n public removeBlock(block: NodeParticleBlock) {\r\n const attachedBlockIndex = this.attachedBlocks.indexOf(block);\r\n if (attachedBlockIndex > -1) {\r\n this.attachedBlocks.splice(attachedBlockIndex, 1);\r\n }\r\n\r\n if (block.isSystem) {\r\n const index = this._systemBlocks.indexOf(block as SystemBlock);\r\n if (index > -1) {\r\n this._systemBlocks.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and load a new one from a serialization object\r\n * @param source defines the JSON representation of the particle set\r\n * @param merge defines whether or not the source must be merged or replace the current content\r\n */\r\n public parseSerializedObject(source: any, merge = false) {\r\n if (!merge) {\r\n this.clear();\r\n }\r\n\r\n const map: { [key: number]: NodeParticleBlock } = {};\r\n\r\n // Create blocks\r\n for (const parsedBlock of source.blocks) {\r\n const blockType = GetClass(parsedBlock.customType);\r\n if (blockType) {\r\n const block: NodeParticleBlock = new blockType();\r\n block._deserialize(parsedBlock);\r\n map[parsedBlock.id] = block;\r\n\r\n this.attachedBlocks.push(block);\r\n\r\n if (block.isSystem) {\r\n this._systemBlocks.push(block as SystemBlock);\r\n }\r\n }\r\n }\r\n\r\n // Reconnect teleportation\r\n for (const block of this.attachedBlocks) {\r\n if (block.isTeleportOut) {\r\n const teleportOut = block as ParticleTeleportOutBlock;\r\n const id = teleportOut._tempEntryPointUniqueId;\r\n if (id) {\r\n const source = map[id] as ParticleTeleportInBlock;\r\n if (source) {\r\n source.attachToEndpoint(teleportOut);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Connections - Starts with input blocks only (except if in \"merge\" mode where we scan all blocks)\r\n for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {\r\n const parsedBlock = source.blocks[blockIndex];\r\n const block = map[parsedBlock.id];\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n if (block.inputs.length && parsedBlock.inputs.some((i: any) => i.targetConnectionName) && !merge) {\r\n continue;\r\n }\r\n this._restoreConnections(block, source, map);\r\n }\r\n\r\n // UI related info\r\n if (source.locations || (source.editorData && source.editorData.locations)) {\r\n const locations: {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n }[] = source.locations || source.editorData.locations;\r\n\r\n for (const location of locations) {\r\n if (map[location.blockId]) {\r\n location.blockId = map[location.blockId].uniqueId;\r\n }\r\n }\r\n\r\n if (merge && this.editorData && this.editorData.locations) {\r\n locations.concat(this.editorData.locations);\r\n }\r\n\r\n if (source.locations) {\r\n this.editorData = {\r\n locations: locations,\r\n };\r\n } else {\r\n this.editorData = source.editorData;\r\n this.editorData.locations = locations;\r\n }\r\n\r\n const blockMap: { [key: number]: number } = {};\r\n\r\n for (const key in map) {\r\n blockMap[key] = map[key].uniqueId;\r\n }\r\n\r\n this.editorData.map = blockMap;\r\n }\r\n\r\n this.comment = source.comment;\r\n }\r\n\r\n private _restoreConnections(block: NodeParticleBlock, source: any, map: { [key: number]: NodeParticleBlock }) {\r\n for (const outputPoint of block.outputs) {\r\n for (const candidate of source.blocks) {\r\n const target = map[candidate.id];\r\n\r\n if (!target) {\r\n continue;\r\n }\r\n\r\n for (const input of candidate.inputs) {\r\n if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {\r\n const inputPoint = target.getInputByName(input.inputName);\r\n if (!inputPoint || inputPoint.isConnected) {\r\n continue;\r\n }\r\n\r\n outputPoint.connectTo(inputPoint, true);\r\n this._restoreConnections(target, source, map);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serializes this node particle set in a JSON representation\r\n * @param selectedBlocks defines the list of blocks to save (if null the whole node particle set will be saved)\r\n * @returns the serialized particle system set object\r\n */\r\n public serialize(selectedBlocks?: NodeParticleBlock[]): any {\r\n const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);\r\n serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy\r\n\r\n let blocks: NodeParticleBlock[] = [];\r\n\r\n if (selectedBlocks) {\r\n blocks = selectedBlocks;\r\n } else {\r\n serializationObject.customType = \"BABYLON.NodeParticleSystemSet\";\r\n }\r\n\r\n // Blocks\r\n serializationObject.blocks = [];\r\n\r\n for (const block of blocks) {\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n\r\n if (!selectedBlocks) {\r\n for (const block of this.attachedBlocks) {\r\n if (blocks.indexOf(block) !== -1) {\r\n continue;\r\n }\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Makes a duplicate of the current particle system set.\r\n * @param name defines the name to use for the new particle system set\r\n * @returns the cloned particle system set\r\n */\r\n public clone(name: string): NodeParticleSystemSet {\r\n const serializationObject = this.serialize();\r\n\r\n const clone = SerializationHelper.Clone(() => new NodeParticleSystemSet(name), this);\r\n clone.name = name;\r\n clone.snippetId = this.snippetId;\r\n\r\n clone.parseSerializedObject(serializationObject);\r\n clone._buildId = this._buildId;\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n for (const block of this.attachedBlocks) {\r\n block.dispose();\r\n }\r\n\r\n this.attachedBlocks.length = 0;\r\n this.onBuildObservable.clear();\r\n }\r\n\r\n /**\r\n * Creates a new node particle set set to default basic configuration\r\n * @param name defines the name of the particle set\r\n * @returns a new NodeParticleSystemSet\r\n */\r\n public static CreateDefault(name: string) {\r\n const nodeParticleSet = new NodeParticleSystemSet(name);\r\n\r\n nodeParticleSet.setToDefault();\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from parsed data\r\n * @param source defines the JSON representation of the particle set\r\n * @returns a new node particle set\r\n */\r\n public static Parse(source: any): NodeParticleSystemSet {\r\n const nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(source.name), source, null);\r\n\r\n nodeParticleSet.parseSerializedObject(source);\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from a snippet saved in a remote file\r\n * @param name defines the name of the node particle set to create\r\n * @param url defines the url to load from\r\n * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)\r\n * @returns a promise that will resolve to the new node particle set\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromFileAsync(name: string, url: string, nodeParticleSet?: NodeParticleSystemSet): Promise<NodeParticleSystemSet> {\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const serializationObject = JSON.parse(request.responseText);\r\n if (!nodeParticleSet) {\r\n nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(name), serializationObject, null);\r\n }\r\n\r\n nodeParticleSet.parseSerializedObject(serializationObject);\r\n\r\n resolve(nodeParticleSet);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the node particle system set\");\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", url);\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a node particle set from a snippet saved by the node particle editor\r\n * @param snippetId defines the snippet to load\r\n * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)\r\n * @returns a promise that will resolve to the new node particle set\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(snippetId: string, nodeParticleSet?: NodeParticleSystemSet): Promise<NodeParticleSystemSet> {\r\n if (snippetId === \"_BLANK\") {\r\n return Promise.resolve(NodeParticleSystemSet.CreateDefault(\"blank\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.nodeParticle);\r\n\r\n if (!nodeParticleSet) {\r\n nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(snippetId), serializationObject, null);\r\n }\r\n\r\n nodeParticleSet.parseSerializedObject(serializationObject);\r\n nodeParticleSet.snippetId = snippetId;\r\n\r\n try {\r\n resolve(nodeParticleSet);\r\n } catch (err) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(err);\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n}\r\n"]}
|
package/Particles/attractor.d.ts
CHANGED
package/Particles/attractor.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attractor.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/attractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"attractor.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/attractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,MAAM,WAAW,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5C,MAAM,KAAK,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;AACtC,MAAM,WAAW,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,SAAS;IAAtB;QACI;;;WAGG;QACI,aAAQ,GAAG,GAAG,CAAC;QAEtB;;WAEG;QACI,aAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAuBrC,CAAC;IArBG,gBAAgB;IACT,gBAAgB,CAAC,QAAkB,EAAE,MAA0B;QAClE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB;QACjF,WAAW,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC;QAE3E,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;QAE7D,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,2BAA2B;IAC3E,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;IACN,CAAC;CACJ","sourcesContent":["import { Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type Particle } from \"./particle\";\r\nimport { type ThinParticleSystem } from \"./thinParticleSystem\";\r\n\r\nconst ToAttractor: Vector3 = Vector3.Zero();\r\nconst Force: Vector3 = Vector3.Zero();\r\nconst ScaledForce: Vector3 = Vector3.Zero();\r\n\r\n/**\r\n * Class representing an attractor in a particle system.\r\n * #DEZ79M#40\r\n */\r\nexport class Attractor {\r\n /**\r\n * Gets or sets the strength of the attractor.\r\n * A positive value attracts particles, while a negative value repels them.\r\n */\r\n public strength = 0.0;\r\n\r\n /**\r\n * Gets or sets the position of the attractor in 3D space.\r\n */\r\n public position = Vector3.Zero();\r\n\r\n /** @internal */\r\n public _processParticle(particle: Particle, system: ThinParticleSystem) {\r\n this.position.subtractToRef(particle.position, ToAttractor);\r\n const distanceSquared = ToAttractor.lengthSquared() + 1; // Avoid going under 1.0\r\n ToAttractor.normalize().scaleToRef(this.strength / distanceSquared, Force);\r\n\r\n Force.scaleToRef(system._tempScaledUpdateSpeed, ScaledForce);\r\n\r\n particle.direction.addInPlace(ScaledForce); // Update particle velocity\r\n }\r\n\r\n /**\r\n * Serializes the attractor to a JSON object.\r\n * @returns The serialized JSON object.\r\n */\r\n public serialize(): any {\r\n return {\r\n position: this.position.asArray(),\r\n strength: this.strength,\r\n };\r\n }\r\n}\r\n"]}
|
package/Particles/flowMap.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Matrix, Vector3 } from "../Maths/math.vector.js";
|
|
1
|
+
import { Matrix, Vector3 } from "../Maths/math.vector.pure.js";
|
|
2
2
|
import { type Particle } from "../Particles/particle.js";
|
|
3
3
|
import { type IVector3Like } from "../Maths/math.like.js";
|
|
4
4
|
import { type Texture } from "../Materials/Textures/texture.js";
|
|
@@ -32,6 +32,12 @@ export declare class FlowMap {
|
|
|
32
32
|
* @param data defines the data of the flow map
|
|
33
33
|
*/
|
|
34
34
|
constructor(width: number, height: number, data: Uint8ClampedArray);
|
|
35
|
+
/**
|
|
36
|
+
* Applies the flow map to a flowable object.
|
|
37
|
+
* @param flowable defines the object to update
|
|
38
|
+
* @param strength defines the strength of the flow map influence
|
|
39
|
+
* @param flowMapSamplePosOrTransformationMatrix defines the flow map sample position or transformation matrix
|
|
40
|
+
*/
|
|
35
41
|
processFlowable(flowable: IFlowable, strength?: number, flowMapSamplePosOrTransformationMatrix?: IVector3Like | Matrix): void;
|
|
36
42
|
/** @internal */
|
|
37
43
|
_processParticle(particle: Particle, strength?: number, matrix?: Matrix): void;
|
package/Particles/flowMap.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Matrix, Vector3 } from "../Maths/math.vector.js";
|
|
1
|
+
import { Matrix, Vector3 } from "../Maths/math.vector.pure.js";
|
|
2
2
|
import { TextureTools } from "../Misc/textureTools.js";
|
|
3
3
|
const FlowVector = new Vector3(0, 0, 0);
|
|
4
4
|
const ScaledFlowVector = new Vector3(0, 0, 0);
|
|
@@ -21,6 +21,12 @@ export class FlowMap {
|
|
|
21
21
|
this.height = height;
|
|
22
22
|
this.data = data;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Applies the flow map to a flowable object.
|
|
26
|
+
* @param flowable defines the object to update
|
|
27
|
+
* @param strength defines the strength of the flow map influence
|
|
28
|
+
* @param flowMapSamplePosOrTransformationMatrix defines the flow map sample position or transformation matrix
|
|
29
|
+
*/
|
|
24
30
|
processFlowable(flowable, strength = 1, flowMapSamplePosOrTransformationMatrix) {
|
|
25
31
|
if (!flowMapSamplePosOrTransformationMatrix) {
|
|
26
32
|
return;
|
package/Particles/flowMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowMap.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/flowMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"flowMap.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/flowMap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, Vector3 } from \"../Maths/math.vector.pure\";\r\nimport { type Particle } from \"../Particles/particle\";\r\nimport { type IVector3Like } from \"../Maths/math.like\";\r\nimport { type Texture } from \"core/Materials/Textures/texture\";\r\nimport { TextureTools } from \"core/Misc/textureTools\";\r\n\r\nconst FlowVector = new Vector3(0, 0, 0);\r\nconst ScaledFlowVector = new Vector3(0, 0, 0);\r\nconst ScreenPos = new Vector3(0, 0, 0);\r\n\r\n/**\r\n * Represents an object that can move or be influenced by FlowMap\r\n */\r\nexport interface IFlowable {\r\n /**\r\n * The direction vector indicating the flow or movement direction of the object.\r\n */\r\n direction: Vector3;\r\n\r\n /**\r\n * The current position of the object in 3D space.\r\n */\r\n position: Vector3;\r\n}\r\n\r\n/**\r\n * Class used to represent a particle flow map.\r\n * #5DM02T#7\r\n * GPUParts: #5DM02T#12 (webgl2)\r\n * GPUParts: #5DM02T#13 (webgpu)\r\n */\r\nexport class FlowMap {\r\n /**\r\n * Create a new flow map.\r\n * @param width defines the width of the flow map\r\n * @param height defines the height of the flow map\r\n * @param data defines the data of the flow map\r\n */\r\n constructor(\r\n public readonly width: number,\r\n public readonly height: number,\r\n public readonly data: Uint8ClampedArray\r\n ) {}\r\n\r\n /**\r\n * Applies the flow map to a flowable object.\r\n * @param flowable defines the object to update\r\n * @param strength defines the strength of the flow map influence\r\n * @param flowMapSamplePosOrTransformationMatrix defines the flow map sample position or transformation matrix\r\n */\r\n public processFlowable(flowable: IFlowable, strength = 1, flowMapSamplePosOrTransformationMatrix?: IVector3Like | Matrix): void {\r\n if (!flowMapSamplePosOrTransformationMatrix) {\r\n return;\r\n }\r\n\r\n // Convert world pos to screen pos\r\n if (flowMapSamplePosOrTransformationMatrix instanceof Matrix) {\r\n Vector3.TransformCoordinatesToRef(flowable.position, flowMapSamplePosOrTransformationMatrix, ScreenPos);\r\n } else {\r\n ScreenPos.x = flowMapSamplePosOrTransformationMatrix.x;\r\n ScreenPos.y = flowMapSamplePosOrTransformationMatrix.y;\r\n ScreenPos.z = flowMapSamplePosOrTransformationMatrix.z;\r\n }\r\n\r\n const u = ScreenPos.x * 0.5 + 0.5;\r\n const v = 1.0 - (ScreenPos.y * 0.5 + 0.5);\r\n\r\n const x = Math.floor(u * this.width);\r\n const y = Math.floor(v * this.height);\r\n\r\n // Clamp\r\n if (x < 0 || x >= this.width || y < 0 || y >= this.height) {\r\n return;\r\n }\r\n\r\n const index = (y * this.width + x) * 4;\r\n const r = this.data[index];\r\n const g = this.data[index + 1];\r\n const b = this.data[index + 2];\r\n const a = this.data[index + 3];\r\n\r\n const fx = (r / 255.0) * 2.0 - 1.0;\r\n const fy = (g / 255.0) * 2.0 - 1.0;\r\n const fz = (b / 255.0) * 2.0 - 1.0;\r\n const localStrength = a / 255.0;\r\n\r\n FlowVector.set(fx, fy, fz);\r\n FlowVector.scaleToRef(strength * localStrength, ScaledFlowVector);\r\n\r\n flowable.direction.addInPlace(ScaledFlowVector); // Update IFlowable velocity\r\n }\r\n\r\n /** @internal */\r\n public _processParticle(particle: Particle, strength = 1, matrix?: Matrix) {\r\n this.processFlowable(particle, strength, matrix);\r\n }\r\n\r\n /**\r\n * Creates a FlowMap from a url.\r\n * @param url The url of the image to load\r\n * @returns a promise that resolves to a FlowMap object\r\n */\r\n public static async FromUrlAsync(url: string): Promise<FlowMap> {\r\n return await new Promise((resolve, reject) => {\r\n const flowCanvas = document.createElement(\"canvas\");\r\n const flowCtx = flowCanvas.getContext(\"2d\")!;\r\n let flowImageData = null;\r\n\r\n const flowMapImage = new Image();\r\n flowMapImage.crossOrigin = \"anonymous\"; // If loading from another domain\r\n flowMapImage.src = url;\r\n\r\n flowMapImage.onerror = (e) => {\r\n reject(new Error(`Failed to load image: ${url} : ${e}`));\r\n };\r\n\r\n flowMapImage.onload = () => {\r\n flowCanvas.width = flowMapImage.width;\r\n flowCanvas.height = flowMapImage.height;\r\n flowCtx.drawImage(flowMapImage, 0, 0);\r\n flowImageData = flowCtx.getImageData(0, 0, flowCanvas.width, flowCanvas.height);\r\n\r\n resolve(new FlowMap(flowCanvas.width, flowCanvas.height, flowImageData.data));\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Load from a texture\r\n * @param texture defines the source texture\r\n * @returns a promise fulfilled when image data is loaded\r\n */\r\n public static async ExtractFromTextureAsync(texture: Texture) {\r\n const data = await TextureTools.GetTextureDataAsync(texture);\r\n const { width, height } = texture.getSize();\r\n return new FlowMap(width, height, new Uint8ClampedArray(data));\r\n }\r\n}\r\n"]}
|
package/Particles/particle.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Nullable } from "../types.js";
|
|
2
|
-
import { Vector2, Vector3, Vector4 } from "../Maths/math.vector.js";
|
|
3
|
-
import { Color4 } from "../Maths/math.color.js";
|
|
2
|
+
import { Vector2, Vector3, Vector4 } from "../Maths/math.vector.pure.js";
|
|
3
|
+
import { Color4 } from "../Maths/math.color.pure.js";
|
|
4
4
|
import { type SubEmitter } from "./subEmitter.js";
|
|
5
5
|
import { type ColorGradient, type FactorGradient } from "../Misc/gradients.js";
|
|
6
6
|
import { type ThinParticleSystem } from "./thinParticleSystem.js";
|
package/Particles/particle.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Vector2, Vector3, TmpVectors, Vector4 } from "../Maths/math.vector.js";
|
|
2
|
-
import { Color4 } from "../Maths/math.color.js";
|
|
1
|
+
import { Vector2, Vector3, TmpVectors, Vector4 } from "../Maths/math.vector.pure.js";
|
|
2
|
+
import { Color4 } from "../Maths/math.color.pure.js";
|
|
3
3
|
import { Clamp } from "../Maths/math.scalar.functions.js";
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/particle.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { Vector2, Vector3, TmpVectors, Vector4 } from \"../Maths/math.vector\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { type SubEmitter } from \"./subEmitter\";\r\nimport { type ColorGradient, type FactorGradient } from \"../Misc/gradients\";\r\n\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { type ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp } from \"../Maths/math.scalar.functions\";\r\n\r\n/**\r\n * @internal\r\n * Holds all internal properties of a Particle, grouped into a single sub-object\r\n * to keep the Particle's own property count low (V8 in-object property limit).\r\n */\r\nclass ParticleInternalProperties {\r\n /** @internal */\r\n public randomCellOffset?: number;\r\n\r\n /** @internal */\r\n public initialDirection: Nullable<Vector3>;\r\n\r\n /** @internal */\r\n public attachedSubEmitters: Nullable<Array<SubEmitter>> = null;\r\n\r\n /** @internal */\r\n public initialStartSpriteCellId: number;\r\n /** @internal */\r\n public initialEndSpriteCellId: number;\r\n /** @internal */\r\n public initialSpriteCellLoop: boolean;\r\n\r\n /** @internal */\r\n public currentColorGradient: Nullable<ColorGradient>;\r\n /** @internal */\r\n public currentColor1 = new Color4(0, 0, 0, 0);\r\n /** @internal */\r\n public currentColor2 = new Color4(0, 0, 0, 0);\r\n\r\n /** @internal */\r\n public currentSizeGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentSize1 = 0;\r\n /** @internal */\r\n public currentSize2 = 0;\r\n\r\n /** @internal */\r\n public currentAngularSpeedGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentAngularSpeed1 = 0;\r\n /** @internal */\r\n public currentAngularSpeed2 = 0;\r\n\r\n /** @internal */\r\n public currentVelocityGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentVelocity1 = 0;\r\n /** @internal */\r\n public currentVelocity2 = 0;\r\n\r\n /** @internal */\r\n public directionScale: number;\r\n /** @internal */\r\n public scaledDirection = Vector3.Zero();\r\n\r\n /** @internal */\r\n public currentLimitVelocityGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentLimitVelocity1 = 0;\r\n /** @internal */\r\n public currentLimitVelocity2 = 0;\r\n\r\n /** @internal */\r\n public currentDragGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentDrag1 = 0;\r\n /** @internal */\r\n public currentDrag2 = 0;\r\n\r\n /** @internal */\r\n public randomNoiseCoordinates1: Nullable<Vector3>;\r\n /** @internal */\r\n public randomNoiseCoordinates2: Nullable<Vector3>;\r\n\r\n /** @internal */\r\n public localPosition?: Vector3;\r\n\r\n /**\r\n * Callback triggered when the particle is reset\r\n */\r\n public onReset: Nullable<() => void>;\r\n\r\n /** @internal */\r\n public reset(): void {\r\n this.currentColorGradient = null;\r\n this.currentSizeGradient = null;\r\n this.currentAngularSpeedGradient = null;\r\n this.currentVelocityGradient = null;\r\n this.currentLimitVelocityGradient = null;\r\n this.currentDragGradient = null;\r\n this.randomCellOffset = undefined;\r\n this.randomNoiseCoordinates1 = null;\r\n this.randomNoiseCoordinates2 = null;\r\n }\r\n}\r\n\r\n/**\r\n * A particle represents one of the element emitted by a particle system.\r\n * This is mainly define by its coordinates, direction, velocity and age.\r\n */\r\nexport class Particle {\r\n private static _Count = 0;\r\n /**\r\n * Unique ID of the particle\r\n */\r\n public id: number;\r\n /**\r\n * The world position of the particle in the scene.\r\n */\r\n public position = Vector3.Zero();\r\n\r\n /**\r\n * The world direction of the particle in the scene.\r\n */\r\n public direction = Vector3.Zero();\r\n\r\n /**\r\n * The color of the particle.\r\n */\r\n public color = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The color change of the particle per step.\r\n */\r\n public colorStep = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The creation color of the particle.\r\n */\r\n public initialColor = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The color used when the end of life of the particle.\r\n */\r\n public colorDead = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Defines how long will the life of the particle be.\r\n */\r\n public lifeTime = 1.0;\r\n\r\n /**\r\n * The current age of the particle.\r\n */\r\n public age = 0;\r\n\r\n /**\r\n * The current size of the particle.\r\n */\r\n public size = 0;\r\n\r\n /**\r\n * The current scale of the particle.\r\n */\r\n public scale = new Vector2(1, 1);\r\n\r\n /**\r\n * The current angle of the particle.\r\n */\r\n public angle = 0;\r\n\r\n /**\r\n * Defines how fast is the angle changing.\r\n */\r\n public angularSpeed = 0;\r\n\r\n /**\r\n * Defines the cell index used by the particle to be rendered from a sprite.\r\n */\r\n public cellIndex: number = 0;\r\n\r\n /**\r\n * The information required to support color remapping\r\n */\r\n public remapData: Vector4;\r\n\r\n /**\r\n * Gets or sets an object used to store user defined information for the particle\r\n */\r\n public metadata: any = null;\r\n\r\n /** @internal */\r\n public _properties = new ParticleInternalProperties();\r\n\r\n /**\r\n * Creates a new instance Particle\r\n * @param particleSystem the particle system the particle belongs to\r\n */\r\n constructor(\r\n /**\r\n * The particle system the particle belongs to.\r\n */\r\n public particleSystem: ThinParticleSystem\r\n ) {\r\n this.id = Particle._Count++;\r\n if (!this.particleSystem.isAnimationSheetEnabled) {\r\n return;\r\n }\r\n\r\n this._updateCellInfoFromSystem();\r\n }\r\n\r\n private _updateCellInfoFromSystem(): void {\r\n this.cellIndex = this.particleSystem.startSpriteCellID;\r\n }\r\n\r\n /**\r\n * Defines how the sprite cell index is updated for the particle\r\n */\r\n public updateCellIndex(): void {\r\n let offsetAge = this.age;\r\n let changeSpeed = this.particleSystem.spriteCellChangeSpeed;\r\n\r\n if (this.particleSystem.spriteRandomStartCell) {\r\n if (this._properties.randomCellOffset === undefined) {\r\n this._properties.randomCellOffset = Math.random() * this.lifeTime;\r\n }\r\n\r\n if (changeSpeed === 0) {\r\n // Special case when speed = 0 meaning we want to stay on initial cell\r\n changeSpeed = 1;\r\n offsetAge = this._properties.randomCellOffset;\r\n } else {\r\n offsetAge += this._properties.randomCellOffset;\r\n }\r\n }\r\n\r\n const dist = this._properties.initialEndSpriteCellId - this._properties.initialStartSpriteCellId + 1;\r\n let ratio: number;\r\n if (this._properties.initialSpriteCellLoop) {\r\n ratio = Clamp(((offsetAge * changeSpeed) % this.lifeTime) / this.lifeTime);\r\n } else {\r\n ratio = Clamp((offsetAge * changeSpeed) / this.lifeTime);\r\n }\r\n this.cellIndex = (this._properties.initialStartSpriteCellId + ratio * dist) | 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _inheritParticleInfoToSubEmitter(subEmitter: SubEmitter) {\r\n if ((<AbstractMesh>subEmitter.particleSystem.emitter).position) {\r\n const emitterMesh = <AbstractMesh>subEmitter.particleSystem.emitter;\r\n emitterMesh.position.copyFrom(this.position);\r\n if (subEmitter.inheritDirection) {\r\n const temp = TmpVectors.Vector3[0];\r\n this.direction.normalizeToRef(temp);\r\n emitterMesh.setDirection(temp, 0, Math.PI / 2);\r\n }\r\n } else {\r\n const emitterPosition = <Vector3>subEmitter.particleSystem.emitter;\r\n emitterPosition.copyFrom(this.position);\r\n }\r\n // Set inheritedVelocityOffset to be used when new particles are created\r\n this.direction.scaleToRef(subEmitter.inheritedVelocityAmount / 2, TmpVectors.Vector3[0]);\r\n subEmitter.particleSystem._inheritedVelocityOffset.copyFrom(TmpVectors.Vector3[0]);\r\n }\r\n\r\n /** @internal */\r\n public _inheritParticleInfoToSubEmitters() {\r\n if (this._properties.attachedSubEmitters && this._properties.attachedSubEmitters.length > 0) {\r\n for (const subEmitter of this._properties.attachedSubEmitters) {\r\n this._inheritParticleInfoToSubEmitter(subEmitter);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _reset() {\r\n if (this._properties.onReset) {\r\n this._properties.onReset();\r\n }\r\n this.age = 0;\r\n this.id = Particle._Count++;\r\n this._properties.reset();\r\n this.metadata = null;\r\n this.cellIndex = this.particleSystem.startSpriteCellID;\r\n }\r\n\r\n /**\r\n * Copy the properties of particle to another one.\r\n * @param other the particle to copy the information to.\r\n */\r\n public copyTo(other: Particle) {\r\n other.position.copyFrom(this.position);\r\n if (this._properties.initialDirection) {\r\n if (other._properties.initialDirection) {\r\n other._properties.initialDirection.copyFrom(this._properties.initialDirection);\r\n } else {\r\n other._properties.initialDirection = this._properties.initialDirection.clone();\r\n }\r\n } else {\r\n other._properties.initialDirection = null;\r\n }\r\n other.direction.copyFrom(this.direction);\r\n if (this._properties.localPosition) {\r\n if (other._properties.localPosition) {\r\n other._properties.localPosition.copyFrom(this._properties.localPosition);\r\n } else {\r\n other._properties.localPosition = this._properties.localPosition.clone();\r\n }\r\n }\r\n other.color.copyFrom(this.color);\r\n other.colorStep.copyFrom(this.colorStep);\r\n other.initialColor.copyFrom(this.initialColor);\r\n other.colorDead.copyFrom(this.colorDead);\r\n other.lifeTime = this.lifeTime;\r\n other.age = this.age;\r\n other._properties.randomCellOffset = this._properties.randomCellOffset;\r\n other.size = this.size;\r\n other.scale.copyFrom(this.scale);\r\n other.angle = this.angle;\r\n other.angularSpeed = this.angularSpeed;\r\n other.particleSystem = this.particleSystem;\r\n other.cellIndex = this.cellIndex;\r\n other.id = this.id;\r\n other._properties.attachedSubEmitters = this._properties.attachedSubEmitters;\r\n if (this._properties.currentColorGradient) {\r\n other._properties.currentColorGradient = this._properties.currentColorGradient;\r\n other._properties.currentColor1.copyFrom(this._properties.currentColor1);\r\n other._properties.currentColor2.copyFrom(this._properties.currentColor2);\r\n }\r\n if (this._properties.currentSizeGradient) {\r\n other._properties.currentSizeGradient = this._properties.currentSizeGradient;\r\n other._properties.currentSize1 = this._properties.currentSize1;\r\n other._properties.currentSize2 = this._properties.currentSize2;\r\n }\r\n if (this._properties.currentAngularSpeedGradient) {\r\n other._properties.currentAngularSpeedGradient = this._properties.currentAngularSpeedGradient;\r\n other._properties.currentAngularSpeed1 = this._properties.currentAngularSpeed1;\r\n other._properties.currentAngularSpeed2 = this._properties.currentAngularSpeed2;\r\n }\r\n if (this._properties.currentVelocityGradient) {\r\n other._properties.currentVelocityGradient = this._properties.currentVelocityGradient;\r\n other._properties.currentVelocity1 = this._properties.currentVelocity1;\r\n other._properties.currentVelocity2 = this._properties.currentVelocity2;\r\n }\r\n if (this._properties.currentLimitVelocityGradient) {\r\n other._properties.currentLimitVelocityGradient = this._properties.currentLimitVelocityGradient;\r\n other._properties.currentLimitVelocity1 = this._properties.currentLimitVelocity1;\r\n other._properties.currentLimitVelocity2 = this._properties.currentLimitVelocity2;\r\n }\r\n if (this._properties.currentDragGradient) {\r\n other._properties.currentDragGradient = this._properties.currentDragGradient;\r\n other._properties.currentDrag1 = this._properties.currentDrag1;\r\n other._properties.currentDrag2 = this._properties.currentDrag2;\r\n }\r\n if (this.particleSystem.isAnimationSheetEnabled) {\r\n other._properties.initialStartSpriteCellId = this._properties.initialStartSpriteCellId;\r\n other._properties.initialEndSpriteCellId = this._properties.initialEndSpriteCellId;\r\n other._properties.initialSpriteCellLoop = this._properties.initialSpriteCellLoop;\r\n }\r\n if (this.particleSystem.useRampGradients) {\r\n if (other.remapData && this.remapData) {\r\n other.remapData.copyFrom(this.remapData);\r\n } else {\r\n other.remapData = new Vector4(0, 0, 0, 0);\r\n }\r\n }\r\n if (this._properties.randomNoiseCoordinates1 && this._properties.randomNoiseCoordinates2) {\r\n if (other._properties.randomNoiseCoordinates1 && other._properties.randomNoiseCoordinates2) {\r\n other._properties.randomNoiseCoordinates1.copyFrom(this._properties.randomNoiseCoordinates1);\r\n other._properties.randomNoiseCoordinates2.copyFrom(this._properties.randomNoiseCoordinates2);\r\n } else {\r\n other._properties.randomNoiseCoordinates1 = this._properties.randomNoiseCoordinates1.clone();\r\n other._properties.randomNoiseCoordinates2 = this._properties.randomNoiseCoordinates2.clone();\r\n }\r\n }\r\n other.metadata = this.metadata;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"particle.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/particle.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { Vector2, Vector3, TmpVectors, Vector4 } from \"../Maths/math.vector.pure\";\r\nimport { Color4 } from \"../Maths/math.color.pure\";\r\nimport { type SubEmitter } from \"./subEmitter\";\r\nimport { type ColorGradient, type FactorGradient } from \"../Misc/gradients\";\r\n\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { type ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp } from \"../Maths/math.scalar.functions\";\r\n\r\n/**\r\n * @internal\r\n * Holds all internal properties of a Particle, grouped into a single sub-object\r\n * to keep the Particle's own property count low (V8 in-object property limit).\r\n */\r\nclass ParticleInternalProperties {\r\n /** @internal */\r\n public randomCellOffset?: number;\r\n\r\n /** @internal */\r\n public initialDirection: Nullable<Vector3>;\r\n\r\n /** @internal */\r\n public attachedSubEmitters: Nullable<Array<SubEmitter>> = null;\r\n\r\n /** @internal */\r\n public initialStartSpriteCellId: number;\r\n /** @internal */\r\n public initialEndSpriteCellId: number;\r\n /** @internal */\r\n public initialSpriteCellLoop: boolean;\r\n\r\n /** @internal */\r\n public currentColorGradient: Nullable<ColorGradient>;\r\n /** @internal */\r\n public currentColor1 = new Color4(0, 0, 0, 0);\r\n /** @internal */\r\n public currentColor2 = new Color4(0, 0, 0, 0);\r\n\r\n /** @internal */\r\n public currentSizeGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentSize1 = 0;\r\n /** @internal */\r\n public currentSize2 = 0;\r\n\r\n /** @internal */\r\n public currentAngularSpeedGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentAngularSpeed1 = 0;\r\n /** @internal */\r\n public currentAngularSpeed2 = 0;\r\n\r\n /** @internal */\r\n public currentVelocityGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentVelocity1 = 0;\r\n /** @internal */\r\n public currentVelocity2 = 0;\r\n\r\n /** @internal */\r\n public directionScale: number;\r\n /** @internal */\r\n public scaledDirection = Vector3.Zero();\r\n\r\n /** @internal */\r\n public currentLimitVelocityGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentLimitVelocity1 = 0;\r\n /** @internal */\r\n public currentLimitVelocity2 = 0;\r\n\r\n /** @internal */\r\n public currentDragGradient: Nullable<FactorGradient>;\r\n /** @internal */\r\n public currentDrag1 = 0;\r\n /** @internal */\r\n public currentDrag2 = 0;\r\n\r\n /** @internal */\r\n public randomNoiseCoordinates1: Nullable<Vector3>;\r\n /** @internal */\r\n public randomNoiseCoordinates2: Nullable<Vector3>;\r\n\r\n /** @internal */\r\n public localPosition?: Vector3;\r\n\r\n /**\r\n * Callback triggered when the particle is reset\r\n */\r\n public onReset: Nullable<() => void>;\r\n\r\n /** @internal */\r\n public reset(): void {\r\n this.currentColorGradient = null;\r\n this.currentSizeGradient = null;\r\n this.currentAngularSpeedGradient = null;\r\n this.currentVelocityGradient = null;\r\n this.currentLimitVelocityGradient = null;\r\n this.currentDragGradient = null;\r\n this.randomCellOffset = undefined;\r\n this.randomNoiseCoordinates1 = null;\r\n this.randomNoiseCoordinates2 = null;\r\n }\r\n}\r\n\r\n/**\r\n * A particle represents one of the element emitted by a particle system.\r\n * This is mainly define by its coordinates, direction, velocity and age.\r\n */\r\nexport class Particle {\r\n private static _Count = 0;\r\n /**\r\n * Unique ID of the particle\r\n */\r\n public id: number;\r\n /**\r\n * The world position of the particle in the scene.\r\n */\r\n public position = Vector3.Zero();\r\n\r\n /**\r\n * The world direction of the particle in the scene.\r\n */\r\n public direction = Vector3.Zero();\r\n\r\n /**\r\n * The color of the particle.\r\n */\r\n public color = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The color change of the particle per step.\r\n */\r\n public colorStep = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The creation color of the particle.\r\n */\r\n public initialColor = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * The color used when the end of life of the particle.\r\n */\r\n public colorDead = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Defines how long will the life of the particle be.\r\n */\r\n public lifeTime = 1.0;\r\n\r\n /**\r\n * The current age of the particle.\r\n */\r\n public age = 0;\r\n\r\n /**\r\n * The current size of the particle.\r\n */\r\n public size = 0;\r\n\r\n /**\r\n * The current scale of the particle.\r\n */\r\n public scale = new Vector2(1, 1);\r\n\r\n /**\r\n * The current angle of the particle.\r\n */\r\n public angle = 0;\r\n\r\n /**\r\n * Defines how fast is the angle changing.\r\n */\r\n public angularSpeed = 0;\r\n\r\n /**\r\n * Defines the cell index used by the particle to be rendered from a sprite.\r\n */\r\n public cellIndex: number = 0;\r\n\r\n /**\r\n * The information required to support color remapping\r\n */\r\n public remapData: Vector4;\r\n\r\n /**\r\n * Gets or sets an object used to store user defined information for the particle\r\n */\r\n public metadata: any = null;\r\n\r\n /** @internal */\r\n public _properties = new ParticleInternalProperties();\r\n\r\n /**\r\n * Creates a new instance Particle\r\n * @param particleSystem the particle system the particle belongs to\r\n */\r\n constructor(\r\n /**\r\n * The particle system the particle belongs to.\r\n */\r\n public particleSystem: ThinParticleSystem\r\n ) {\r\n this.id = Particle._Count++;\r\n if (!this.particleSystem.isAnimationSheetEnabled) {\r\n return;\r\n }\r\n\r\n this._updateCellInfoFromSystem();\r\n }\r\n\r\n private _updateCellInfoFromSystem(): void {\r\n this.cellIndex = this.particleSystem.startSpriteCellID;\r\n }\r\n\r\n /**\r\n * Defines how the sprite cell index is updated for the particle\r\n */\r\n public updateCellIndex(): void {\r\n let offsetAge = this.age;\r\n let changeSpeed = this.particleSystem.spriteCellChangeSpeed;\r\n\r\n if (this.particleSystem.spriteRandomStartCell) {\r\n if (this._properties.randomCellOffset === undefined) {\r\n this._properties.randomCellOffset = Math.random() * this.lifeTime;\r\n }\r\n\r\n if (changeSpeed === 0) {\r\n // Special case when speed = 0 meaning we want to stay on initial cell\r\n changeSpeed = 1;\r\n offsetAge = this._properties.randomCellOffset;\r\n } else {\r\n offsetAge += this._properties.randomCellOffset;\r\n }\r\n }\r\n\r\n const dist = this._properties.initialEndSpriteCellId - this._properties.initialStartSpriteCellId + 1;\r\n let ratio: number;\r\n if (this._properties.initialSpriteCellLoop) {\r\n ratio = Clamp(((offsetAge * changeSpeed) % this.lifeTime) / this.lifeTime);\r\n } else {\r\n ratio = Clamp((offsetAge * changeSpeed) / this.lifeTime);\r\n }\r\n this.cellIndex = (this._properties.initialStartSpriteCellId + ratio * dist) | 0;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _inheritParticleInfoToSubEmitter(subEmitter: SubEmitter) {\r\n if ((<AbstractMesh>subEmitter.particleSystem.emitter).position) {\r\n const emitterMesh = <AbstractMesh>subEmitter.particleSystem.emitter;\r\n emitterMesh.position.copyFrom(this.position);\r\n if (subEmitter.inheritDirection) {\r\n const temp = TmpVectors.Vector3[0];\r\n this.direction.normalizeToRef(temp);\r\n emitterMesh.setDirection(temp, 0, Math.PI / 2);\r\n }\r\n } else {\r\n const emitterPosition = <Vector3>subEmitter.particleSystem.emitter;\r\n emitterPosition.copyFrom(this.position);\r\n }\r\n // Set inheritedVelocityOffset to be used when new particles are created\r\n this.direction.scaleToRef(subEmitter.inheritedVelocityAmount / 2, TmpVectors.Vector3[0]);\r\n subEmitter.particleSystem._inheritedVelocityOffset.copyFrom(TmpVectors.Vector3[0]);\r\n }\r\n\r\n /** @internal */\r\n public _inheritParticleInfoToSubEmitters() {\r\n if (this._properties.attachedSubEmitters && this._properties.attachedSubEmitters.length > 0) {\r\n for (const subEmitter of this._properties.attachedSubEmitters) {\r\n this._inheritParticleInfoToSubEmitter(subEmitter);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _reset() {\r\n if (this._properties.onReset) {\r\n this._properties.onReset();\r\n }\r\n this.age = 0;\r\n this.id = Particle._Count++;\r\n this._properties.reset();\r\n this.metadata = null;\r\n this.cellIndex = this.particleSystem.startSpriteCellID;\r\n }\r\n\r\n /**\r\n * Copy the properties of particle to another one.\r\n * @param other the particle to copy the information to.\r\n */\r\n public copyTo(other: Particle) {\r\n other.position.copyFrom(this.position);\r\n if (this._properties.initialDirection) {\r\n if (other._properties.initialDirection) {\r\n other._properties.initialDirection.copyFrom(this._properties.initialDirection);\r\n } else {\r\n other._properties.initialDirection = this._properties.initialDirection.clone();\r\n }\r\n } else {\r\n other._properties.initialDirection = null;\r\n }\r\n other.direction.copyFrom(this.direction);\r\n if (this._properties.localPosition) {\r\n if (other._properties.localPosition) {\r\n other._properties.localPosition.copyFrom(this._properties.localPosition);\r\n } else {\r\n other._properties.localPosition = this._properties.localPosition.clone();\r\n }\r\n }\r\n other.color.copyFrom(this.color);\r\n other.colorStep.copyFrom(this.colorStep);\r\n other.initialColor.copyFrom(this.initialColor);\r\n other.colorDead.copyFrom(this.colorDead);\r\n other.lifeTime = this.lifeTime;\r\n other.age = this.age;\r\n other._properties.randomCellOffset = this._properties.randomCellOffset;\r\n other.size = this.size;\r\n other.scale.copyFrom(this.scale);\r\n other.angle = this.angle;\r\n other.angularSpeed = this.angularSpeed;\r\n other.particleSystem = this.particleSystem;\r\n other.cellIndex = this.cellIndex;\r\n other.id = this.id;\r\n other._properties.attachedSubEmitters = this._properties.attachedSubEmitters;\r\n if (this._properties.currentColorGradient) {\r\n other._properties.currentColorGradient = this._properties.currentColorGradient;\r\n other._properties.currentColor1.copyFrom(this._properties.currentColor1);\r\n other._properties.currentColor2.copyFrom(this._properties.currentColor2);\r\n }\r\n if (this._properties.currentSizeGradient) {\r\n other._properties.currentSizeGradient = this._properties.currentSizeGradient;\r\n other._properties.currentSize1 = this._properties.currentSize1;\r\n other._properties.currentSize2 = this._properties.currentSize2;\r\n }\r\n if (this._properties.currentAngularSpeedGradient) {\r\n other._properties.currentAngularSpeedGradient = this._properties.currentAngularSpeedGradient;\r\n other._properties.currentAngularSpeed1 = this._properties.currentAngularSpeed1;\r\n other._properties.currentAngularSpeed2 = this._properties.currentAngularSpeed2;\r\n }\r\n if (this._properties.currentVelocityGradient) {\r\n other._properties.currentVelocityGradient = this._properties.currentVelocityGradient;\r\n other._properties.currentVelocity1 = this._properties.currentVelocity1;\r\n other._properties.currentVelocity2 = this._properties.currentVelocity2;\r\n }\r\n if (this._properties.currentLimitVelocityGradient) {\r\n other._properties.currentLimitVelocityGradient = this._properties.currentLimitVelocityGradient;\r\n other._properties.currentLimitVelocity1 = this._properties.currentLimitVelocity1;\r\n other._properties.currentLimitVelocity2 = this._properties.currentLimitVelocity2;\r\n }\r\n if (this._properties.currentDragGradient) {\r\n other._properties.currentDragGradient = this._properties.currentDragGradient;\r\n other._properties.currentDrag1 = this._properties.currentDrag1;\r\n other._properties.currentDrag2 = this._properties.currentDrag2;\r\n }\r\n if (this.particleSystem.isAnimationSheetEnabled) {\r\n other._properties.initialStartSpriteCellId = this._properties.initialStartSpriteCellId;\r\n other._properties.initialEndSpriteCellId = this._properties.initialEndSpriteCellId;\r\n other._properties.initialSpriteCellLoop = this._properties.initialSpriteCellLoop;\r\n }\r\n if (this.particleSystem.useRampGradients) {\r\n if (other.remapData && this.remapData) {\r\n other.remapData.copyFrom(this.remapData);\r\n } else {\r\n other.remapData = new Vector4(0, 0, 0, 0);\r\n }\r\n }\r\n if (this._properties.randomNoiseCoordinates1 && this._properties.randomNoiseCoordinates2) {\r\n if (other._properties.randomNoiseCoordinates1 && other._properties.randomNoiseCoordinates2) {\r\n other._properties.randomNoiseCoordinates1.copyFrom(this._properties.randomNoiseCoordinates1);\r\n other._properties.randomNoiseCoordinates2.copyFrom(this._properties.randomNoiseCoordinates2);\r\n } else {\r\n other._properties.randomNoiseCoordinates1 = this._properties.randomNoiseCoordinates1.clone();\r\n other._properties.randomNoiseCoordinates2 = this._properties.randomNoiseCoordinates2.clone();\r\n }\r\n }\r\n other.metadata = this.metadata;\r\n }\r\n}\r\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Tools } from "../Misc/tools.js";
|
|
2
|
-
import { Color4 } from "../Maths/math.color.js";
|
|
3
|
-
import { Texture } from "../Materials/Textures/texture.js";
|
|
1
|
+
import { Tools } from "../Misc/tools.pure.js";
|
|
2
|
+
import { Color4 } from "../Maths/math.color.pure.js";
|
|
3
|
+
import { Texture } from "../Materials/Textures/texture.pure.js";
|
|
4
4
|
import { EngineStore } from "../Engines/engineStore.js";
|
|
5
|
-
import { GPUParticleSystem } from "./gpuParticleSystem.js";
|
|
5
|
+
import { GPUParticleSystem } from "./gpuParticleSystem.pure.js";
|
|
6
6
|
import { ParticleSystemSet } from "./particleSystemSet.js";
|
|
7
|
-
import { ParticleSystem } from "./particleSystem.js";
|
|
7
|
+
import { ParticleSystem } from "./particleSystem.pure.js";
|
|
8
8
|
import { WebRequest } from "../Misc/webRequest.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particleHelper.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/particleHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Tools } from \"../Misc/tools\";\r\nimport { type Vector3 } from \"../Maths/math.vector\";\r\nimport { Color4 } from \"../Maths/math.color\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { type IParticleSystem } from \"./IParticleSystem\";\r\nimport { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport { ParticleSystemSet } from \"./particleSystemSet\";\r\nimport { ParticleSystem } from \"./particleSystem\";\r\nimport { WebRequest } from \"../Misc/webRequest\";\r\nimport { Constants } from \"../Engines/constants\";\r\n/**\r\n * This class is made for on one-liner static method to help creating particle system set.\r\n */\r\nexport class ParticleHelper {\r\n /**\r\n * Gets or sets base Assets URL\r\n */\r\n public static BaseAssetsUrl = ParticleSystemSet.BaseAssetsUrl;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /**\r\n * Create a default particle system that you can tweak\r\n * @param emitter defines the emitter to use\r\n * @param capacity defines the system capacity (default is 500 particles)\r\n * @param scene defines the hosting scene\r\n * @param useGPU defines if a GPUParticleSystem must be created (default is false)\r\n * @returns the new Particle system\r\n */\r\n public static CreateDefault(emitter: Nullable<AbstractMesh | Vector3>, capacity = 500, scene?: Scene, useGPU = false): IParticleSystem {\r\n let system: IParticleSystem;\r\n\r\n if (useGPU) {\r\n system = new GPUParticleSystem(\"default system\", { capacity: capacity }, scene!);\r\n } else {\r\n system = new ParticleSystem(\"default system\", capacity, scene!);\r\n }\r\n\r\n system.emitter = emitter;\r\n const textureUrl = Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/textures/flare.png\");\r\n system.particleTexture = new Texture(textureUrl, system.getScene());\r\n system.createConeEmitter(0.1, Math.PI / 4);\r\n\r\n // Particle color\r\n system.color1 = new Color4(1.0, 1.0, 1.0, 1.0);\r\n system.color2 = new Color4(1.0, 1.0, 1.0, 1.0);\r\n system.colorDead = new Color4(1.0, 1.0, 1.0, 0.0);\r\n\r\n // Particle Size\r\n system.minSize = 0.1;\r\n system.maxSize = 0.1;\r\n\r\n // Emission speed\r\n system.minEmitPower = 2;\r\n system.maxEmitPower = 2;\r\n\r\n // Update speed\r\n system.updateSpeed = 1 / 60;\r\n\r\n system.emitRate = 30;\r\n\r\n return system;\r\n }\r\n\r\n /**\r\n * This is the main static method (one-liner) of this helper to create different particle systems\r\n * @param type This string represents the type to the particle system to create\r\n * @param scene The scene where the particle system should live\r\n * @param gpu If the system will use gpu\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns the ParticleSystemSet created\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static CreateAsync(type: string, scene: Nullable<Scene>, gpu: boolean = false, capacity?: number): Promise<ParticleSystemSet> {\r\n if (!scene) {\r\n scene = EngineStore.LastCreatedScene;\r\n }\r\n\r\n const token = {};\r\n\r\n scene!.addPendingData(token);\r\n\r\n return new Promise((resolve, reject) => {\r\n if (gpu && !GPUParticleSystem.IsSupported) {\r\n scene!.removePendingData(token);\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(\"Particle system with GPU is not supported.\");\r\n }\r\n\r\n Tools.LoadFile(\r\n `${ParticleHelper.BaseAssetsUrl}/systems/${type}.json`,\r\n (data) => {\r\n scene!.removePendingData(token);\r\n const newData = JSON.parse(data.toString());\r\n return resolve(ParticleSystemSet.Parse(newData, scene!, gpu, capacity));\r\n },\r\n undefined,\r\n undefined,\r\n undefined,\r\n () => {\r\n scene!.removePendingData(token);\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(`An error occurred with the creation of your particle system. Check if your type '${type}' exists.`);\r\n }\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Static function used to export a particle system to a ParticleSystemSet variable.\r\n * Please note that the emitter shape is not exported\r\n * @param systems defines the particle systems to export\r\n * @returns the created particle system set\r\n */\r\n public static ExportSet(systems: IParticleSystem[]): ParticleSystemSet {\r\n const set = new ParticleSystemSet();\r\n\r\n for (const system of systems) {\r\n set.systems.push(system);\r\n }\r\n\r\n return set;\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved in a remote file\r\n * @param name defines the name of the particle system to create (can be null or empty to use the one from the json data)\r\n * @param url defines the url to load from\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromFileAsync(name: Nullable<string>, url: string, scene: Scene, gpu: boolean = false, rootUrl: string = \"\", capacity?: number): Promise<IParticleSystem> {\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const serializationObject = JSON.parse(request.responseText);\r\n let output: IParticleSystem;\r\n\r\n if (gpu) {\r\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n } else {\r\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n }\r\n\r\n if (name) {\r\n output.name = name;\r\n }\r\n\r\n resolve(output);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the particle system\");\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", url);\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved by the particle system editor\r\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(snippetId: string, scene: Scene, gpu: boolean = false, rootUrl: string = \"\", capacity?: number): Promise<IParticleSystem> {\r\n if (snippetId === \"_BLANK\") {\r\n const system = this.CreateDefault(null);\r\n system.start();\r\n return Promise.resolve(system);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.particleSystem);\r\n let output: IParticleSystem;\r\n\r\n if (gpu) {\r\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n } else {\r\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n }\r\n output.snippetId = snippetId;\r\n\r\n resolve(output);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved by the particle system editor\r\n * @deprecated Please use ParseFromSnippetAsync instead\r\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n public static CreateFromSnippetAsync = ParticleHelper.ParseFromSnippetAsync;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"particleHelper.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/particleHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene\";\r\nimport { Tools } from \"../Misc/tools.pure\";\r\nimport { type Vector3 } from \"../Maths/math.vector\";\r\nimport { Color4 } from \"../Maths/math.color.pure\";\r\nimport { type AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { Texture } from \"../Materials/Textures/texture.pure\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { type IParticleSystem } from \"./IParticleSystem\";\r\nimport { GPUParticleSystem } from \"./gpuParticleSystem.pure\";\r\nimport { ParticleSystemSet } from \"./particleSystemSet\";\r\nimport { ParticleSystem } from \"./particleSystem.pure\";\r\nimport { WebRequest } from \"../Misc/webRequest\";\r\nimport { Constants } from \"../Engines/constants\";\r\n/**\r\n * This class is made for on one-liner static method to help creating particle system set.\r\n */\r\nexport class ParticleHelper {\r\n /**\r\n * Gets or sets base Assets URL\r\n */\r\n public static BaseAssetsUrl = ParticleSystemSet.BaseAssetsUrl;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /**\r\n * Create a default particle system that you can tweak\r\n * @param emitter defines the emitter to use\r\n * @param capacity defines the system capacity (default is 500 particles)\r\n * @param scene defines the hosting scene\r\n * @param useGPU defines if a GPUParticleSystem must be created (default is false)\r\n * @returns the new Particle system\r\n */\r\n public static CreateDefault(emitter: Nullable<AbstractMesh | Vector3>, capacity = 500, scene?: Scene, useGPU = false): IParticleSystem {\r\n let system: IParticleSystem;\r\n\r\n if (useGPU) {\r\n system = new GPUParticleSystem(\"default system\", { capacity: capacity }, scene!);\r\n } else {\r\n system = new ParticleSystem(\"default system\", capacity, scene!);\r\n }\r\n\r\n system.emitter = emitter;\r\n const textureUrl = Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/textures/flare.png\");\r\n system.particleTexture = new Texture(textureUrl, system.getScene());\r\n system.createConeEmitter(0.1, Math.PI / 4);\r\n\r\n // Particle color\r\n system.color1 = new Color4(1.0, 1.0, 1.0, 1.0);\r\n system.color2 = new Color4(1.0, 1.0, 1.0, 1.0);\r\n system.colorDead = new Color4(1.0, 1.0, 1.0, 0.0);\r\n\r\n // Particle Size\r\n system.minSize = 0.1;\r\n system.maxSize = 0.1;\r\n\r\n // Emission speed\r\n system.minEmitPower = 2;\r\n system.maxEmitPower = 2;\r\n\r\n // Update speed\r\n system.updateSpeed = 1 / 60;\r\n\r\n system.emitRate = 30;\r\n\r\n return system;\r\n }\r\n\r\n /**\r\n * This is the main static method (one-liner) of this helper to create different particle systems\r\n * @param type This string represents the type to the particle system to create\r\n * @param scene The scene where the particle system should live\r\n * @param gpu If the system will use gpu\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns the ParticleSystemSet created\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static CreateAsync(type: string, scene: Nullable<Scene>, gpu: boolean = false, capacity?: number): Promise<ParticleSystemSet> {\r\n if (!scene) {\r\n scene = EngineStore.LastCreatedScene;\r\n }\r\n\r\n const token = {};\r\n\r\n scene!.addPendingData(token);\r\n\r\n return new Promise((resolve, reject) => {\r\n if (gpu && !GPUParticleSystem.IsSupported) {\r\n scene!.removePendingData(token);\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(\"Particle system with GPU is not supported.\");\r\n }\r\n\r\n Tools.LoadFile(\r\n `${ParticleHelper.BaseAssetsUrl}/systems/${type}.json`,\r\n (data) => {\r\n scene!.removePendingData(token);\r\n const newData = JSON.parse(data.toString());\r\n return resolve(ParticleSystemSet.Parse(newData, scene!, gpu, capacity));\r\n },\r\n undefined,\r\n undefined,\r\n undefined,\r\n () => {\r\n scene!.removePendingData(token);\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n return reject(`An error occurred with the creation of your particle system. Check if your type '${type}' exists.`);\r\n }\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Static function used to export a particle system to a ParticleSystemSet variable.\r\n * Please note that the emitter shape is not exported\r\n * @param systems defines the particle systems to export\r\n * @returns the created particle system set\r\n */\r\n public static ExportSet(systems: IParticleSystem[]): ParticleSystemSet {\r\n const set = new ParticleSystemSet();\r\n\r\n for (const system of systems) {\r\n set.systems.push(system);\r\n }\r\n\r\n return set;\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved in a remote file\r\n * @param name defines the name of the particle system to create (can be null or empty to use the one from the json data)\r\n * @param url defines the url to load from\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromFileAsync(name: Nullable<string>, url: string, scene: Scene, gpu: boolean = false, rootUrl: string = \"\", capacity?: number): Promise<IParticleSystem> {\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const serializationObject = JSON.parse(request.responseText);\r\n let output: IParticleSystem;\r\n\r\n if (gpu) {\r\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n } else {\r\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n }\r\n\r\n if (name) {\r\n output.name = name;\r\n }\r\n\r\n resolve(output);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the particle system\");\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", url);\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved by the particle system editor\r\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(snippetId: string, scene: Scene, gpu: boolean = false, rootUrl: string = \"\", capacity?: number): Promise<IParticleSystem> {\r\n if (snippetId === \"_BLANK\") {\r\n const system = this.CreateDefault(null);\r\n system.start();\r\n return Promise.resolve(system);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.particleSystem);\r\n let output: IParticleSystem;\r\n\r\n if (gpu) {\r\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n } else {\r\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\r\n }\r\n output.snippetId = snippetId;\r\n\r\n resolve(output);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n\r\n /**\r\n * Creates a particle system from a snippet saved by the particle system editor\r\n * @deprecated Please use ParseFromSnippetAsync instead\r\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\r\n * @param scene defines the hosting scene\r\n * @param gpu If the system will use gpu\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a promise that will resolve to the new particle system\r\n */\r\n public static CreateFromSnippetAsync = ParticleHelper.ParseFromSnippetAsync;\r\n}\r\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Vector3 } from "../Maths/math.vector.js";
|
|
1
|
+
import { Vector3 } from "../Maths/math.vector.pure.js";
|
|
2
2
|
import { BoxParticleEmitter } from "./EmitterTypes/boxParticleEmitter.js";
|
|
3
3
|
import { PointParticleEmitter } from "./EmitterTypes/pointParticleEmitter.js";
|
|
4
4
|
import { HemisphericParticleEmitter } from "./EmitterTypes/hemisphericParticleEmitter.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Vector3 } from "../Maths/math.vector.js";
|
|
1
|
+
import { Vector3 } from "../Maths/math.vector.pure.js";
|
|
2
2
|
import { BoxParticleEmitter } from "./EmitterTypes/boxParticleEmitter.js";
|
|
3
3
|
import { PointParticleEmitter } from "./EmitterTypes/pointParticleEmitter.js";
|
|
4
4
|
import { HemisphericParticleEmitter } from "./EmitterTypes/hemisphericParticleEmitter.js";
|