@babylonjs/core 8.11.0 → 8.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cameras/arcRotateCamera.js +8 -0
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/targetCamera.js +2 -0
- package/Cameras/targetCamera.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +4 -0
- package/Collisions/gpuPicker.js +6 -0
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.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/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +1 -0
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +2 -0
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +6 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +29 -0
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +36 -9
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +1 -0
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.js +1 -0
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +2 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +2 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +23 -0
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +126 -21
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +5 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +4 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -4
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +4 -17
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/frameGraph.js +1 -1
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphContext.d.ts +30 -0
- package/FrameGraph/frameGraphContext.js +47 -0
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +1 -4
- package/FrameGraph/frameGraphRenderContext.js +2 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +0 -12
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +4 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +2 -3
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js +4 -1
- package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +2 -2
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +1 -2
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +3 -4
- package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.d.ts +2 -3
- package/Materials/Node/Blocks/Dual/textureBlock.js +2 -2
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +4 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +1 -2
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +1 -2
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +1 -2
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +2 -2
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.d.ts +3 -3
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js +6 -3
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +1 -2
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -4
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -2
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +2 -3
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +5 -2
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -2
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -2
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +1 -2
- package/Materials/Node/Blocks/PBR/refractionBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +2 -3
- package/Materials/Node/Blocks/PBR/sheenBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +2 -3
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -2
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +1 -2
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js +1 -1
- package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +2 -2
- package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
- package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +1 -2
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +1 -1
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +2 -2
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +8 -2
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.d.ts +3 -3
- package/Materials/Node/Blocks/transformBlock.js +4 -5
- package/Materials/Node/Blocks/transformBlock.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -3
- package/Materials/Node/Blocks/triPlanarBlock.js +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +1 -1
- package/Materials/Node/nodeMaterial.js +28 -42
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.d.ts +8 -12
- package/Materials/Node/nodeMaterialBlock.js +10 -12
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +3 -1
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +7 -3
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +17 -6
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.js +11 -0
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/Textures/Loaders/exrTextureLoader.d.ts +10 -0
- package/Materials/Textures/Loaders/exrTextureLoader.js +28 -1
- package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
- package/Materials/materialHelper.functions.js +1 -1
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.js +7 -0
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/standardMaterial.d.ts +2 -0
- package/Materials/standardMaterial.js +11 -0
- package/Materials/standardMaterial.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +7 -0
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +11 -5
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.d.ts +6 -0
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +42 -4
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js +8 -0
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
- package/Misc/environmentTextureTools.js +1 -1
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/minMaxReducer.d.ts +8 -6
- package/Misc/minMaxReducer.js +57 -90
- package/Misc/minMaxReducer.js.map +1 -1
- package/Misc/thinMinMaxReducer.d.ts +47 -0
- package/Misc/thinMinMaxReducer.js +148 -0
- package/Misc/thinMinMaxReducer.js.map +1 -0
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +5 -0
- package/Particles/EmitterTypes/customParticleEmitter.js +9 -1
- package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
- package/Particles/IParticleSystem.d.ts +4 -0
- package/Particles/IParticleSystem.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.d.ts +75 -0
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.js +179 -0
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +47 -0
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +107 -0
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +46 -0
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js +97 -0
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/customShapeBlock.d.ts +39 -0
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js +84 -0
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +48 -0
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +120 -0
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/index.d.ts +7 -0
- package/Particles/Node/Blocks/Emitters/index.js +8 -0
- package/Particles/Node/Blocks/Emitters/index.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +39 -0
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +86 -0
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.d.ts +53 -0
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js +111 -0
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +43 -0
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +108 -0
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.d.ts +48 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js +100 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js.map +1 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.d.ts +47 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js +82 -0
- package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js.map +1 -0
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.d.ts +48 -0
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js +133 -0
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js.map +1 -0
- package/Particles/Node/Blocks/Triggers/triggerTools.d.ts +9 -0
- package/Particles/Node/Blocks/Triggers/triggerTools.js +16 -0
- package/Particles/Node/Blocks/Triggers/triggerTools.js.map +1 -0
- package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.d.ts +31 -0
- package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +64 -0
- package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.d.ts +31 -0
- package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js +63 -0
- package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateAngleBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updateAngleBlock.js +73 -0
- package/Particles/Node/Blocks/Update/updateAngleBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateColorBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updateColorBlock.js +73 -0
- package/Particles/Node/Blocks/Update/updateColorBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateDirectionBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updateDirectionBlock.js +73 -0
- package/Particles/Node/Blocks/Update/updateDirectionBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateFlowMapBlock.d.ts +41 -0
- package/Particles/Node/Blocks/Update/updateFlowMapBlock.js +102 -0
- package/Particles/Node/Blocks/Update/updateFlowMapBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updatePositionBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updatePositionBlock.js +73 -0
- package/Particles/Node/Blocks/Update/updatePositionBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateScaleBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updateScaleBlock.js +73 -0
- package/Particles/Node/Blocks/Update/updateScaleBlock.js.map +1 -0
- package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.d.ts +35 -0
- package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js +74 -0
- package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js.map +1 -0
- package/Particles/Node/Blocks/index.d.ts +27 -0
- package/Particles/Node/Blocks/index.js +29 -0
- package/Particles/Node/Blocks/index.js.map +1 -0
- package/Particles/Node/Blocks/particleConverterBlock.d.ts +85 -0
- package/Particles/Node/Blocks/particleConverterBlock.js +267 -0
- package/Particles/Node/Blocks/particleConverterBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleDebugBlock.d.ts +37 -0
- package/Particles/Node/Blocks/particleDebugBlock.js +109 -0
- package/Particles/Node/Blocks/particleDebugBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleElbowBlock.d.ts +27 -0
- package/Particles/Node/Blocks/particleElbowBlock.js +47 -0
- package/Particles/Node/Blocks/particleElbowBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleGradientBlock.d.ts +28 -0
- package/Particles/Node/Blocks/particleGradientBlock.js +118 -0
- package/Particles/Node/Blocks/particleGradientBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleGradientValueBlock.d.ts +32 -0
- package/Particles/Node/Blocks/particleGradientValueBlock.js +79 -0
- package/Particles/Node/Blocks/particleGradientValueBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleInputBlock.d.ts +87 -0
- package/Particles/Node/Blocks/particleInputBlock.js +279 -0
- package/Particles/Node/Blocks/particleInputBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleLerpBlock.d.ts +34 -0
- package/Particles/Node/Blocks/particleLerpBlock.js +92 -0
- package/Particles/Node/Blocks/particleLerpBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleMathBlock.d.ts +64 -0
- package/Particles/Node/Blocks/particleMathBlock.js +321 -0
- package/Particles/Node/Blocks/particleMathBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleRandomBlock.d.ts +52 -0
- package/Particles/Node/Blocks/particleRandomBlock.js +161 -0
- package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +65 -0
- package/Particles/Node/Blocks/particleSourceTextureBlock.js +173 -0
- package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleTrigonometryBlock.d.ts +80 -0
- package/Particles/Node/Blocks/particleTrigonometryBlock.js +272 -0
- package/Particles/Node/Blocks/particleTrigonometryBlock.js.map +1 -0
- package/Particles/Node/Blocks/randomRangeBlock.d.ts +45 -0
- package/Particles/Node/Blocks/randomRangeBlock.js +151 -0
- package/Particles/Node/Blocks/randomRangeBlock.js.map +1 -0
- package/Particles/Node/Blocks/systemBlock.d.ts +71 -0
- package/Particles/Node/Blocks/systemBlock.js +193 -0
- package/Particles/Node/Blocks/systemBlock.js.map +1 -0
- package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.d.ts +39 -0
- package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js +41 -0
- package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js.map +1 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +31 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js +34 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -0
- package/Particles/Node/Enums/nodeParticleSystemSources.d.ts +13 -0
- package/Particles/Node/Enums/nodeParticleSystemSources.js +15 -0
- package/Particles/Node/Enums/nodeParticleSystemSources.js.map +1 -0
- package/Particles/Node/index.d.ts +8 -0
- package/Particles/Node/index.js +10 -0
- package/Particles/Node/index.js.map +1 -0
- package/Particles/Node/nodeParticleBlock.d.ts +154 -0
- package/Particles/Node/nodeParticleBlock.js +355 -0
- package/Particles/Node/nodeParticleBlock.js.map +1 -0
- package/Particles/Node/nodeParticleBlockConnectionPoint.d.ts +188 -0
- package/Particles/Node/nodeParticleBlockConnectionPoint.js +337 -0
- package/Particles/Node/nodeParticleBlockConnectionPoint.js.map +1 -0
- package/Particles/Node/nodeParticleBuildState.d.ts +89 -0
- package/Particles/Node/nodeParticleBuildState.js +170 -0
- package/Particles/Node/nodeParticleBuildState.js.map +1 -0
- package/Particles/Node/nodeParticleSystemSet.d.ts +120 -0
- package/Particles/Node/nodeParticleSystemSet.js +382 -0
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -0
- package/Particles/Queue/executionQueue.d.ts +2 -0
- package/Particles/Queue/executionQueue.js +10 -0
- package/Particles/Queue/executionQueue.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +2 -1
- package/Particles/baseParticleSystem.js +1 -0
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/flowMap.d.ts +7 -0
- package/Particles/flowMap.js +32 -0
- package/Particles/flowMap.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +4 -0
- package/Particles/gpuParticleSystem.js +4 -0
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/index.d.ts +1 -0
- package/Particles/index.js +1 -0
- package/Particles/index.js.map +1 -1
- package/Particles/particleSystem.d.ts +12 -0
- package/Particles/particleSystem.js +22 -1
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +32 -11
- package/Particles/thinParticleSystem.js +62 -36
- package/Particles/thinParticleSystem.js.map +1 -1
- package/PostProcesses/postProcessManager.d.ts +2 -1
- package/PostProcesses/postProcessManager.js +3 -2
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -0
- package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +5 -2
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
- package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -0
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -0
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +3 -0
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertex.js +3 -0
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js +3 -0
- package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +3 -0
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/minmaxRedux.fragment.js +13 -5
- package/Shaders/minmaxRedux.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js +5 -2
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassVertex.js +3 -0
- package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +3 -0
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/minmaxRedux.fragment.js +14 -6
- package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +5 -0
- package/scene.js +8 -0
- package/scene.js.map +1 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { NodeParticleConnectionPoint } from "../../nodeParticleBlockConnectionPoint.js";
|
|
2
|
+
import type { NodeParticleBuildState } from "../../nodeParticleBuildState.js";
|
|
3
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
4
|
+
/**
|
|
5
|
+
* Block used to provide a flow of particles emitted from a sphere shape.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SphereShapeBlock extends NodeParticleBlock {
|
|
8
|
+
/**
|
|
9
|
+
* Create a new SphereShapeBlock
|
|
10
|
+
* @param name defines the block name
|
|
11
|
+
*/
|
|
12
|
+
constructor(name: string);
|
|
13
|
+
/**
|
|
14
|
+
* Gets the current class name
|
|
15
|
+
* @returns the class name
|
|
16
|
+
*/
|
|
17
|
+
getClassName(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Gets the input component
|
|
20
|
+
*/
|
|
21
|
+
get input(): NodeParticleConnectionPoint;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the radius input component
|
|
24
|
+
*/
|
|
25
|
+
get radius(): NodeParticleConnectionPoint;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the radiusRange input component
|
|
28
|
+
*/
|
|
29
|
+
get radiusRange(): NodeParticleConnectionPoint;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the directionRandomizer input component
|
|
32
|
+
*/
|
|
33
|
+
get directionRandomizer(): NodeParticleConnectionPoint;
|
|
34
|
+
/**
|
|
35
|
+
* Gets the output component
|
|
36
|
+
*/
|
|
37
|
+
get output(): NodeParticleConnectionPoint;
|
|
38
|
+
/**
|
|
39
|
+
* Builds the block
|
|
40
|
+
* @param state defines the build state
|
|
41
|
+
*/
|
|
42
|
+
_build(state: NodeParticleBuildState): void;
|
|
43
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
2
|
+
import { NodeParticleBlockConnectionPointTypes } from "../../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
3
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
4
|
+
import { Vector3 } from "../../../../Maths/math.vector.js";
|
|
5
|
+
import { RandomRange } from "../../../../Maths/math.scalar.functions.js";
|
|
6
|
+
/**
|
|
7
|
+
* Block used to provide a flow of particles emitted from a sphere shape.
|
|
8
|
+
*/
|
|
9
|
+
export class SphereShapeBlock extends NodeParticleBlock {
|
|
10
|
+
/**
|
|
11
|
+
* Create a new SphereShapeBlock
|
|
12
|
+
* @param name defines the block name
|
|
13
|
+
*/
|
|
14
|
+
constructor(name) {
|
|
15
|
+
super(name);
|
|
16
|
+
this.registerInput("input", NodeParticleBlockConnectionPointTypes.Particle);
|
|
17
|
+
this.registerInput("radius", NodeParticleBlockConnectionPointTypes.Float, true, 1);
|
|
18
|
+
this.registerInput("radiusRange", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);
|
|
19
|
+
this.registerInput("directionRandomizer", NodeParticleBlockConnectionPointTypes.Float, true, 0, 0, 1);
|
|
20
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.Particle);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the current class name
|
|
24
|
+
* @returns the class name
|
|
25
|
+
*/
|
|
26
|
+
getClassName() {
|
|
27
|
+
return "SphereShapeBlock";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Gets the input component
|
|
31
|
+
*/
|
|
32
|
+
get input() {
|
|
33
|
+
return this._inputs[0];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets the radius input component
|
|
37
|
+
*/
|
|
38
|
+
get radius() {
|
|
39
|
+
return this._inputs[1];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets the radiusRange input component
|
|
43
|
+
*/
|
|
44
|
+
get radiusRange() {
|
|
45
|
+
return this._inputs[2];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets the directionRandomizer input component
|
|
49
|
+
*/
|
|
50
|
+
get directionRandomizer() {
|
|
51
|
+
return this._inputs[3];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gets the output component
|
|
55
|
+
*/
|
|
56
|
+
get output() {
|
|
57
|
+
return this._outputs[0];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Builds the block
|
|
61
|
+
* @param state defines the build state
|
|
62
|
+
*/
|
|
63
|
+
_build(state) {
|
|
64
|
+
const system = this.input.getConnectedValue(state);
|
|
65
|
+
system._directionCreation.process = (particle) => {
|
|
66
|
+
state.particleContext = particle;
|
|
67
|
+
state.systemContext = system;
|
|
68
|
+
const directionRandomizer = this.directionRandomizer.getConnectedValue(state);
|
|
69
|
+
const direction = particle.position.subtract(state.emitterPosition).normalize();
|
|
70
|
+
const randX = RandomRange(0, directionRandomizer);
|
|
71
|
+
const randY = RandomRange(0, directionRandomizer);
|
|
72
|
+
const randZ = RandomRange(0, directionRandomizer);
|
|
73
|
+
direction.x += randX;
|
|
74
|
+
direction.y += randY;
|
|
75
|
+
direction.z += randZ;
|
|
76
|
+
direction.normalize();
|
|
77
|
+
if (state.isEmitterTransformNode) {
|
|
78
|
+
Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, state.emitterWorldMatrix, particle.direction);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
particle.direction.copyFromFloats(randX, randY, randZ);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
system._positionCreation.process = (particle) => {
|
|
85
|
+
state.particleContext = particle;
|
|
86
|
+
state.systemContext = system;
|
|
87
|
+
const radius = this.radius.getConnectedValue(state);
|
|
88
|
+
const radiusRange = this.radiusRange.getConnectedValue(state);
|
|
89
|
+
const randRadius = radius - RandomRange(0, radius * radiusRange);
|
|
90
|
+
const v = RandomRange(0, 1.0);
|
|
91
|
+
const phi = RandomRange(0, 2 * Math.PI);
|
|
92
|
+
const theta = Math.acos(2 * v - 1);
|
|
93
|
+
const randX = randRadius * Math.cos(phi) * Math.sin(theta);
|
|
94
|
+
const randY = randRadius * Math.cos(theta);
|
|
95
|
+
const randZ = randRadius * Math.sin(phi) * Math.sin(theta);
|
|
96
|
+
if (state.isEmitterTransformNode) {
|
|
97
|
+
Vector3.TransformCoordinatesFromFloatsToRef(randX, randY, randZ, state.emitterWorldMatrix, particle.position);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
particle.position.copyFromFloats(randX, randY, randZ);
|
|
101
|
+
particle.position.addInPlace(state.emitterPosition);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
this.output._storedValue = system;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
RegisterClass("BABYLON.SphereShapeBlock", SphereShapeBlock);
|
|
108
|
+
//# sourceMappingURL=sphereShapeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sphereShapeBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Particles/Node/Blocks/Emitters/sphereShapeBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../../nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"../../nodeParticleBuildState\";\r\nimport { NodeParticleBlock } from \"../../nodeParticleBlock\";\r\nimport type { Particle } from \"core/Particles/particle\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { RandomRange } from \"core/Maths/math.scalar.functions\";\r\n\r\n/**\r\n * Block used to provide a flow of particles emitted from a sphere shape.\r\n */\r\nexport class SphereShapeBlock extends NodeParticleBlock {\r\n /**\r\n * Create a new SphereShapeBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this.registerInput(\"input\", NodeParticleBlockConnectionPointTypes.Particle);\r\n this.registerInput(\"radius\", NodeParticleBlockConnectionPointTypes.Float, true, 1);\r\n this.registerInput(\"radiusRange\", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);\r\n this.registerInput(\"directionRandomizer\", NodeParticleBlockConnectionPointTypes.Float, true, 0, 0, 1);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.Particle);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SphereShapeBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the radius input component\r\n */\r\n public get radius(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the radiusRange input component\r\n */\r\n public get radiusRange(): NodeParticleConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the directionRandomizer input component\r\n */\r\n public get directionRandomizer(): NodeParticleConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Builds the block\r\n * @param state defines the build state\r\n */\r\n public override _build(state: NodeParticleBuildState) {\r\n const system = this.input.getConnectedValue(state);\r\n\r\n system._directionCreation.process = (particle: Particle) => {\r\n state.particleContext = particle;\r\n state.systemContext = system;\r\n\r\n const directionRandomizer = this.directionRandomizer.getConnectedValue(state);\r\n\r\n const direction = particle.position.subtract(state.emitterPosition!).normalize();\r\n const randX = RandomRange(0, directionRandomizer);\r\n const randY = RandomRange(0, directionRandomizer);\r\n const randZ = RandomRange(0, directionRandomizer);\r\n direction.x += randX;\r\n direction.y += randY;\r\n direction.z += randZ;\r\n direction.normalize();\r\n\r\n if (state.isEmitterTransformNode) {\r\n Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, state.emitterWorldMatrix!, particle.direction);\r\n } else {\r\n particle.direction.copyFromFloats(randX, randY, randZ);\r\n }\r\n };\r\n\r\n system._positionCreation.process = (particle: Particle) => {\r\n state.particleContext = particle;\r\n state.systemContext = system;\r\n\r\n const radius = this.radius.getConnectedValue(state);\r\n const radiusRange = this.radiusRange.getConnectedValue(state);\r\n\r\n const randRadius = radius - RandomRange(0, radius * radiusRange);\r\n const v = RandomRange(0, 1.0);\r\n const phi = RandomRange(0, 2 * Math.PI);\r\n const theta = Math.acos(2 * v - 1);\r\n const randX = randRadius * Math.cos(phi) * Math.sin(theta);\r\n const randY = randRadius * Math.cos(theta);\r\n const randZ = randRadius * Math.sin(phi) * Math.sin(theta);\r\n\r\n if (state.isEmitterTransformNode) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(randX, randY, randZ, state.emitterWorldMatrix!, particle.position);\r\n } else {\r\n particle.position.copyFromFloats(randX, randY, randZ);\r\n particle.position.addInPlace(state.emitterPosition!);\r\n }\r\n };\r\n\r\n this.output._storedValue = system;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SphereShapeBlock\", SphereShapeBlock);\r\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ParticleTeleportOutBlock } from "./particleTeleportOutBlock.js";
|
|
2
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
3
|
+
import type { NodeParticleConnectionPoint } from "../../nodeParticleBlockConnectionPoint.js";
|
|
4
|
+
/**
|
|
5
|
+
* Defines a block used to teleport a value to an endpoint
|
|
6
|
+
*/
|
|
7
|
+
export declare class ParticleTeleportInBlock extends NodeParticleBlock {
|
|
8
|
+
private _endpoints;
|
|
9
|
+
/** Gets the list of attached endpoints */
|
|
10
|
+
get endpoints(): ParticleTeleportOutBlock[];
|
|
11
|
+
/**
|
|
12
|
+
* Create a new ParticleTeleportInBlock
|
|
13
|
+
* @param name defines the block name
|
|
14
|
+
*/
|
|
15
|
+
constructor(name: string);
|
|
16
|
+
/**
|
|
17
|
+
* Gets the current class name
|
|
18
|
+
* @returns the class name
|
|
19
|
+
*/
|
|
20
|
+
getClassName(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the input component
|
|
23
|
+
*/
|
|
24
|
+
get input(): NodeParticleConnectionPoint;
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the current block is an ancestor of a given type
|
|
27
|
+
* @param type defines the potential type to check
|
|
28
|
+
* @returns true if block is a descendant
|
|
29
|
+
*/
|
|
30
|
+
isAnAncestorOfType(type: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Checks if the current block is an ancestor of a given block
|
|
33
|
+
* @param block defines the potential descendant block to check
|
|
34
|
+
* @returns true if block is a descendant
|
|
35
|
+
*/
|
|
36
|
+
isAnAncestorOf(block: NodeParticleBlock): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Add an enpoint to this block
|
|
39
|
+
* @param endpoint define the endpoint to attach to
|
|
40
|
+
*/
|
|
41
|
+
attachToEndpoint(endpoint: ParticleTeleportOutBlock): void;
|
|
42
|
+
/**
|
|
43
|
+
* Remove enpoint from this block
|
|
44
|
+
* @param endpoint define the endpoint to remove
|
|
45
|
+
*/
|
|
46
|
+
detachFromEndpoint(endpoint: ParticleTeleportOutBlock): void;
|
|
47
|
+
_build(): void;
|
|
48
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
2
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
3
|
+
import { NodeParticleBlockConnectionPointTypes } from "../../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
4
|
+
/**
|
|
5
|
+
* Defines a block used to teleport a value to an endpoint
|
|
6
|
+
*/
|
|
7
|
+
export class ParticleTeleportInBlock extends NodeParticleBlock {
|
|
8
|
+
/** Gets the list of attached endpoints */
|
|
9
|
+
get endpoints() {
|
|
10
|
+
return this._endpoints;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a new ParticleTeleportInBlock
|
|
14
|
+
* @param name defines the block name
|
|
15
|
+
*/
|
|
16
|
+
constructor(name) {
|
|
17
|
+
super(name);
|
|
18
|
+
this._endpoints = [];
|
|
19
|
+
this._isTeleportIn = true;
|
|
20
|
+
this.registerInput("input", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the current class name
|
|
24
|
+
* @returns the class name
|
|
25
|
+
*/
|
|
26
|
+
getClassName() {
|
|
27
|
+
return "ParticleTeleportInBlock";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Gets the input component
|
|
31
|
+
*/
|
|
32
|
+
get input() {
|
|
33
|
+
return this._inputs[0];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks if the current block is an ancestor of a given type
|
|
37
|
+
* @param type defines the potential type to check
|
|
38
|
+
* @returns true if block is a descendant
|
|
39
|
+
*/
|
|
40
|
+
isAnAncestorOfType(type) {
|
|
41
|
+
if (this.getClassName() === type) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
for (const endpoint of this.endpoints) {
|
|
45
|
+
if (endpoint.isAnAncestorOfType(type)) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Checks if the current block is an ancestor of a given block
|
|
53
|
+
* @param block defines the potential descendant block to check
|
|
54
|
+
* @returns true if block is a descendant
|
|
55
|
+
*/
|
|
56
|
+
isAnAncestorOf(block) {
|
|
57
|
+
for (const endpoint of this.endpoints) {
|
|
58
|
+
if (endpoint === block) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (endpoint.isAnAncestorOf(block)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Add an enpoint to this block
|
|
69
|
+
* @param endpoint define the endpoint to attach to
|
|
70
|
+
*/
|
|
71
|
+
attachToEndpoint(endpoint) {
|
|
72
|
+
endpoint.detach();
|
|
73
|
+
this._endpoints.push(endpoint);
|
|
74
|
+
endpoint._entryPoint = this;
|
|
75
|
+
endpoint._outputs[0]._typeConnectionSource = this._inputs[0];
|
|
76
|
+
endpoint._tempEntryPointUniqueId = null;
|
|
77
|
+
endpoint.name = "> " + this.name;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Remove enpoint from this block
|
|
81
|
+
* @param endpoint define the endpoint to remove
|
|
82
|
+
*/
|
|
83
|
+
detachFromEndpoint(endpoint) {
|
|
84
|
+
const index = this._endpoints.indexOf(endpoint);
|
|
85
|
+
if (index !== -1) {
|
|
86
|
+
this._endpoints.splice(index, 1);
|
|
87
|
+
endpoint._outputs[0]._typeConnectionSource = null;
|
|
88
|
+
endpoint._entryPoint = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_build() {
|
|
92
|
+
for (const endpoint of this._endpoints) {
|
|
93
|
+
endpoint.output._storedFunction = (state) => {
|
|
94
|
+
return this.input.getConnectedValue(state);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
RegisterClass("BABYLON.ParticleTeleportInBlock", ParticleTeleportInBlock);
|
|
100
|
+
//# sourceMappingURL=particleTeleportInBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleTeleportInBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Particles/Node/Blocks/Teleport/particleTeleportInBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport type { ParticleTeleportOutBlock } from \"./particleTeleportOutBlock\";\r\nimport { NodeParticleBlock } from \"../../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../../nodeParticleBlockConnectionPoint\";\r\n\r\n/**\r\n * Defines a block used to teleport a value to an endpoint\r\n */\r\nexport class ParticleTeleportInBlock extends NodeParticleBlock {\r\n private _endpoints: ParticleTeleportOutBlock[] = [];\r\n\r\n /** Gets the list of attached endpoints */\r\n public get endpoints() {\r\n return this._endpoints;\r\n }\r\n\r\n /**\r\n * Create a new ParticleTeleportInBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n this._isTeleportIn = true;\r\n\r\n this.registerInput(\"input\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ParticleTeleportInBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given type\r\n * @param type defines the potential type to check\r\n * @returns true if block is a descendant\r\n */\r\n public override isAnAncestorOfType(type: string): boolean {\r\n if (this.getClassName() === type) {\r\n return true;\r\n }\r\n\r\n for (const endpoint of this.endpoints) {\r\n if (endpoint.isAnAncestorOfType(type)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the current block is an ancestor of a given block\r\n * @param block defines the potential descendant block to check\r\n * @returns true if block is a descendant\r\n */\r\n public override isAnAncestorOf(block: NodeParticleBlock): boolean {\r\n for (const endpoint of this.endpoints) {\r\n if (endpoint === block) {\r\n return true;\r\n }\r\n\r\n if (endpoint.isAnAncestorOf(block)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Add an enpoint to this block\r\n * @param endpoint define the endpoint to attach to\r\n */\r\n public attachToEndpoint(endpoint: ParticleTeleportOutBlock) {\r\n endpoint.detach();\r\n\r\n this._endpoints.push(endpoint);\r\n endpoint._entryPoint = this;\r\n endpoint._outputs[0]._typeConnectionSource = this._inputs[0];\r\n endpoint._tempEntryPointUniqueId = null;\r\n endpoint.name = \"> \" + this.name;\r\n }\r\n\r\n /**\r\n * Remove enpoint from this block\r\n * @param endpoint define the endpoint to remove\r\n */\r\n public detachFromEndpoint(endpoint: ParticleTeleportOutBlock) {\r\n const index = this._endpoints.indexOf(endpoint);\r\n\r\n if (index !== -1) {\r\n this._endpoints.splice(index, 1);\r\n endpoint._outputs[0]._typeConnectionSource = null;\r\n endpoint._entryPoint = null;\r\n }\r\n }\r\n\r\n public override _build() {\r\n for (const endpoint of this._endpoints) {\r\n endpoint.output._storedFunction = (state) => {\r\n return this.input.getConnectedValue(state);\r\n };\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleTeleportInBlock\", ParticleTeleportInBlock);\r\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Nullable } from "../../../../types.js";
|
|
2
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
3
|
+
import type { NodeParticleConnectionPoint } from "../../nodeParticleBlockConnectionPoint.js";
|
|
4
|
+
import type { ParticleTeleportInBlock } from "./particleTeleportInBlock.js";
|
|
5
|
+
import type { NodeParticleBuildState } from "../../nodeParticleBuildState.js";
|
|
6
|
+
/**
|
|
7
|
+
* Defines a block used to receive a value from a teleport entry point
|
|
8
|
+
*/
|
|
9
|
+
export declare class ParticleTeleportOutBlock extends NodeParticleBlock {
|
|
10
|
+
/** @internal */
|
|
11
|
+
_entryPoint: Nullable<ParticleTeleportInBlock>;
|
|
12
|
+
/** @internal */
|
|
13
|
+
_tempEntryPointUniqueId: Nullable<number>;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new ParticleTeleportOutBlock
|
|
16
|
+
* @param name defines the block name
|
|
17
|
+
*/
|
|
18
|
+
constructor(name: string);
|
|
19
|
+
/**
|
|
20
|
+
* Gets the entry point
|
|
21
|
+
*/
|
|
22
|
+
get entryPoint(): Nullable<ParticleTeleportInBlock>;
|
|
23
|
+
/**
|
|
24
|
+
* Gets the current class name
|
|
25
|
+
* @returns the class name
|
|
26
|
+
*/
|
|
27
|
+
getClassName(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Gets the output component
|
|
30
|
+
*/
|
|
31
|
+
get output(): NodeParticleConnectionPoint;
|
|
32
|
+
/** Detach from entry point */
|
|
33
|
+
detach(): void;
|
|
34
|
+
_build(): void;
|
|
35
|
+
protected _customBuildStep(state: NodeParticleBuildState): void;
|
|
36
|
+
/**
|
|
37
|
+
* Clone the current block to a new identical block
|
|
38
|
+
* @returns a copy of the current block
|
|
39
|
+
*/
|
|
40
|
+
clone(): NodeParticleBlock | null;
|
|
41
|
+
/**
|
|
42
|
+
* Serializes this block in a JSON representation
|
|
43
|
+
* @returns the serialized block object
|
|
44
|
+
*/
|
|
45
|
+
serialize(): any;
|
|
46
|
+
_deserialize(serializationObject: any): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
2
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
3
|
+
import { NodeParticleBlockConnectionPointTypes } from "../../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
4
|
+
/**
|
|
5
|
+
* Defines a block used to receive a value from a teleport entry point
|
|
6
|
+
*/
|
|
7
|
+
export class ParticleTeleportOutBlock extends NodeParticleBlock {
|
|
8
|
+
/**
|
|
9
|
+
* Create a new ParticleTeleportOutBlock
|
|
10
|
+
* @param name defines the block name
|
|
11
|
+
*/
|
|
12
|
+
constructor(name) {
|
|
13
|
+
super(name);
|
|
14
|
+
/** @internal */
|
|
15
|
+
this._entryPoint = null;
|
|
16
|
+
/** @internal */
|
|
17
|
+
this._tempEntryPointUniqueId = null;
|
|
18
|
+
this._isTeleportOut = true;
|
|
19
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets the entry point
|
|
23
|
+
*/
|
|
24
|
+
get entryPoint() {
|
|
25
|
+
return this._entryPoint;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets the current class name
|
|
29
|
+
* @returns the class name
|
|
30
|
+
*/
|
|
31
|
+
getClassName() {
|
|
32
|
+
return "ParticleTeleportOutBlock";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Gets the output component
|
|
36
|
+
*/
|
|
37
|
+
get output() {
|
|
38
|
+
return this._outputs[0];
|
|
39
|
+
}
|
|
40
|
+
/** Detach from entry point */
|
|
41
|
+
detach() {
|
|
42
|
+
if (!this._entryPoint) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this._entryPoint.detachFromEndpoint(this);
|
|
46
|
+
}
|
|
47
|
+
_build() {
|
|
48
|
+
// Do nothing
|
|
49
|
+
// All work done by the emitter
|
|
50
|
+
}
|
|
51
|
+
_customBuildStep(state) {
|
|
52
|
+
if (this.entryPoint) {
|
|
53
|
+
this.entryPoint.build(state);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Clone the current block to a new identical block
|
|
58
|
+
* @returns a copy of the current block
|
|
59
|
+
*/
|
|
60
|
+
clone() {
|
|
61
|
+
const clone = super.clone();
|
|
62
|
+
if (this.entryPoint) {
|
|
63
|
+
this.entryPoint.attachToEndpoint(clone);
|
|
64
|
+
}
|
|
65
|
+
return clone;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Serializes this block in a JSON representation
|
|
69
|
+
* @returns the serialized block object
|
|
70
|
+
*/
|
|
71
|
+
serialize() {
|
|
72
|
+
const serializationObject = super.serialize();
|
|
73
|
+
serializationObject.entryPoint = this.entryPoint?.uniqueId ?? "";
|
|
74
|
+
return serializationObject;
|
|
75
|
+
}
|
|
76
|
+
_deserialize(serializationObject) {
|
|
77
|
+
super._deserialize(serializationObject);
|
|
78
|
+
this._tempEntryPointUniqueId = serializationObject.entryPoint;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
RegisterClass("BABYLON.ParticleTeleportOutBlock", ParticleTeleportOutBlock);
|
|
82
|
+
//# sourceMappingURL=particleTeleportOutBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleTeleportOutBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAK1G;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IAM3D;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAVhB,gBAAgB;QACT,gBAAW,GAAsC,IAAI,CAAC;QAC7D,gBAAgB;QACT,4BAAuB,GAAqB,IAAI,CAAC;QASpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,0BAA0B,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,8BAA8B;IACvB,MAAM;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEe,MAAM;QAClB,aAAa;QACb,+BAA+B;IACnC,CAAC;IAEkB,gBAAgB,CAAC,KAA6B;QAC7D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;;OAGG;IACa,KAAK;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAiC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACa,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC;QAEjE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,CAAC,uBAAuB,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAClE,CAAC;CACJ;AAED,aAAa,CAAC,kCAAkC,EAAE,wBAAwB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../../../../types\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../../nodeParticleBlockConnectionPoint\";\r\nimport type { ParticleTeleportInBlock } from \"./particleTeleportInBlock\";\r\nimport type { NodeParticleBuildState } from \"../../nodeParticleBuildState\";\r\n\r\n/**\r\n * Defines a block used to receive a value from a teleport entry point\r\n */\r\nexport class ParticleTeleportOutBlock extends NodeParticleBlock {\r\n /** @internal */\r\n public _entryPoint: Nullable<ParticleTeleportInBlock> = null;\r\n /** @internal */\r\n public _tempEntryPointUniqueId: Nullable<number> = null;\r\n\r\n /**\r\n * Create a new ParticleTeleportOutBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this._isTeleportOut = true;\r\n\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n }\r\n\r\n /**\r\n * Gets the entry point\r\n */\r\n public get entryPoint() {\r\n return this._entryPoint;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ParticleTeleportOutBlock\";\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /** Detach from entry point */\r\n public detach() {\r\n if (!this._entryPoint) {\r\n return;\r\n }\r\n this._entryPoint.detachFromEndpoint(this);\r\n }\r\n\r\n public override _build() {\r\n // Do nothing\r\n // All work done by the emitter\r\n }\r\n\r\n protected override _customBuildStep(state: NodeParticleBuildState): void {\r\n if (this.entryPoint) {\r\n this.entryPoint.build(state);\r\n }\r\n }\r\n\r\n /**\r\n * Clone the current block to a new identical block\r\n * @returns a copy of the current block\r\n */\r\n public override clone() {\r\n const clone = super.clone();\r\n\r\n if (this.entryPoint) {\r\n this.entryPoint.attachToEndpoint(clone as ParticleTeleportOutBlock);\r\n }\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Serializes this block in a JSON representation\r\n * @returns the serialized block object\r\n */\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.entryPoint = this.entryPoint?.uniqueId ?? \"\";\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this._tempEntryPointUniqueId = serializationObject.entryPoint;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleTeleportOutBlock\", ParticleTeleportOutBlock);\r\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
2
|
+
import type { NodeParticleConnectionPoint } from "../../nodeParticleBlockConnectionPoint.js";
|
|
3
|
+
import type { NodeParticleBuildState } from "../../nodeParticleBuildState.js";
|
|
4
|
+
/**
|
|
5
|
+
* Block used to trigger a particle system based on a condition.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ParticleTriggerBlock extends NodeParticleBlock {
|
|
8
|
+
private _triggerCount;
|
|
9
|
+
/**
|
|
10
|
+
* Gets or sets the emit rate
|
|
11
|
+
*/
|
|
12
|
+
limit: number;
|
|
13
|
+
/**
|
|
14
|
+
* Gets or sets the emit rate
|
|
15
|
+
*/
|
|
16
|
+
delay: number;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new ParticleTriggerBlock
|
|
19
|
+
* @param name defines the block name
|
|
20
|
+
*/
|
|
21
|
+
constructor(name: string);
|
|
22
|
+
/**
|
|
23
|
+
* Gets the current class name
|
|
24
|
+
* @returns the class name
|
|
25
|
+
*/
|
|
26
|
+
getClassName(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the input component
|
|
29
|
+
*/
|
|
30
|
+
get input(): NodeParticleConnectionPoint;
|
|
31
|
+
/**
|
|
32
|
+
* Gets the condition input component
|
|
33
|
+
*/
|
|
34
|
+
get condition(): NodeParticleConnectionPoint;
|
|
35
|
+
/**
|
|
36
|
+
* Gets the target system input component
|
|
37
|
+
*/
|
|
38
|
+
get system(): NodeParticleConnectionPoint;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the output component
|
|
41
|
+
*/
|
|
42
|
+
get output(): NodeParticleConnectionPoint;
|
|
43
|
+
private _previousOne;
|
|
44
|
+
_build(state: NodeParticleBuildState): void;
|
|
45
|
+
serialize(): any;
|
|
46
|
+
_deserialize(serializationObject: any): void;
|
|
47
|
+
dispose(): void;
|
|
48
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { __decorate } from "../../../../tslib.es6.js";
|
|
2
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
3
|
+
import { NodeParticleBlock } from "../../nodeParticleBlock.js";
|
|
4
|
+
import { NodeParticleBlockConnectionPointTypes } from "../../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
5
|
+
import { _ConnectAtTheEnd } from "../../../Queue/executionQueue.js";
|
|
6
|
+
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
7
|
+
import { _TriggerSubEmitter } from "./triggerTools.js";
|
|
8
|
+
/**
|
|
9
|
+
* Block used to trigger a particle system based on a condition.
|
|
10
|
+
*/
|
|
11
|
+
export class ParticleTriggerBlock extends NodeParticleBlock {
|
|
12
|
+
/**
|
|
13
|
+
* Create a new ParticleTriggerBlock
|
|
14
|
+
* @param name defines the block name
|
|
15
|
+
*/
|
|
16
|
+
constructor(name) {
|
|
17
|
+
super(name);
|
|
18
|
+
this._triggerCount = 0;
|
|
19
|
+
/**
|
|
20
|
+
* Gets or sets the emit rate
|
|
21
|
+
*/
|
|
22
|
+
this.limit = 5;
|
|
23
|
+
/**
|
|
24
|
+
* Gets or sets the emit rate
|
|
25
|
+
*/
|
|
26
|
+
this.delay = 250;
|
|
27
|
+
this._previousOne = null;
|
|
28
|
+
this.registerInput("input", NodeParticleBlockConnectionPointTypes.Particle);
|
|
29
|
+
this.registerInput("condition", NodeParticleBlockConnectionPointTypes.Float, true, 0);
|
|
30
|
+
this.registerInput("system", NodeParticleBlockConnectionPointTypes.System);
|
|
31
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.Particle);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gets the current class name
|
|
35
|
+
* @returns the class name
|
|
36
|
+
*/
|
|
37
|
+
getClassName() {
|
|
38
|
+
return "ParticleTriggerBlock";
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Gets the input component
|
|
42
|
+
*/
|
|
43
|
+
get input() {
|
|
44
|
+
return this._inputs[0];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets the condition input component
|
|
48
|
+
*/
|
|
49
|
+
get condition() {
|
|
50
|
+
return this._inputs[1];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Gets the target system input component
|
|
54
|
+
*/
|
|
55
|
+
get system() {
|
|
56
|
+
return this._inputs[2];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the output component
|
|
60
|
+
*/
|
|
61
|
+
get output() {
|
|
62
|
+
return this._outputs[0];
|
|
63
|
+
}
|
|
64
|
+
_build(state) {
|
|
65
|
+
this._triggerCount = 0;
|
|
66
|
+
const system = this.input.getConnectedValue(state);
|
|
67
|
+
const processCondition = (particle) => {
|
|
68
|
+
state.particleContext = particle;
|
|
69
|
+
state.systemContext = system;
|
|
70
|
+
if (this.condition.getConnectedValue(state) !== 0) {
|
|
71
|
+
if (this.limit === 0 || this._triggerCount < this.limit) {
|
|
72
|
+
const now = new Date().getTime();
|
|
73
|
+
if (this._previousOne && now - this._previousOne < this.delay) {
|
|
74
|
+
return; // Skip if the delay has not passed
|
|
75
|
+
}
|
|
76
|
+
this._triggerCount++;
|
|
77
|
+
this._previousOne = now;
|
|
78
|
+
// Trigger the target particle system
|
|
79
|
+
const targetSystem = this.system.getConnectedValue(state);
|
|
80
|
+
if (targetSystem) {
|
|
81
|
+
const clone = _TriggerSubEmitter(targetSystem, state.scene, particle.position);
|
|
82
|
+
clone.onDisposeObservable.addOnce(() => {
|
|
83
|
+
this._triggerCount--;
|
|
84
|
+
});
|
|
85
|
+
system.onDisposeObservable.addOnce(() => {
|
|
86
|
+
// Clean up the cloned system when the original system is disposed
|
|
87
|
+
clone.dispose();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const conditionProcessing = {
|
|
94
|
+
process: processCondition,
|
|
95
|
+
previousItem: null,
|
|
96
|
+
nextItem: null,
|
|
97
|
+
};
|
|
98
|
+
if (system._updateQueueStart) {
|
|
99
|
+
_ConnectAtTheEnd(conditionProcessing, system._updateQueueStart);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
system._updateQueueStart = conditionProcessing;
|
|
103
|
+
}
|
|
104
|
+
this.output._storedValue = system;
|
|
105
|
+
}
|
|
106
|
+
serialize() {
|
|
107
|
+
const serializationObject = super.serialize();
|
|
108
|
+
serializationObject.limit = this.limit;
|
|
109
|
+
serializationObject.delay = this.delay;
|
|
110
|
+
return serializationObject;
|
|
111
|
+
}
|
|
112
|
+
_deserialize(serializationObject) {
|
|
113
|
+
super._deserialize(serializationObject);
|
|
114
|
+
if (serializationObject.limit !== undefined) {
|
|
115
|
+
this.limit = serializationObject.limit;
|
|
116
|
+
}
|
|
117
|
+
if (serializationObject.delay !== undefined) {
|
|
118
|
+
this.delay = serializationObject.delay;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
dispose() {
|
|
122
|
+
super.dispose();
|
|
123
|
+
this._triggerCount = 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
__decorate([
|
|
127
|
+
editableInPropertyPage("Max simultaneous", 2 /* PropertyTypeForEdition.Int */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
|
|
128
|
+
], ParticleTriggerBlock.prototype, "limit", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
editableInPropertyPage("Delay between calls (ms)", 2 /* PropertyTypeForEdition.Int */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
|
|
131
|
+
], ParticleTriggerBlock.prototype, "delay", void 0);
|
|
132
|
+
RegisterClass("BABYLON.ParticleTriggerBlock", ParticleTriggerBlock);
|
|
133
|
+
//# sourceMappingURL=particleTriggerBlock.js.map
|