@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,118 @@
|
|
|
1
|
+
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
2
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
3
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
4
|
+
import { Lerp } from "../../../Maths/math.scalar.functions.js";
|
|
5
|
+
import { Color4 } from "../../../Maths/math.color.js";
|
|
6
|
+
import { Vector2, Vector3 } from "../../../Maths/math.vector.js";
|
|
7
|
+
/**
|
|
8
|
+
* Block used to define a list of gradient entries
|
|
9
|
+
*/
|
|
10
|
+
export class ParticleGradientBlock extends NodeParticleBlock {
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new ParticleGradientBlock
|
|
13
|
+
* @param name defines the block name
|
|
14
|
+
*/
|
|
15
|
+
constructor(name) {
|
|
16
|
+
super(name);
|
|
17
|
+
this._entryCount = 1;
|
|
18
|
+
this.registerInput("gradient", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);
|
|
19
|
+
this.registerInput("value0", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
20
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
21
|
+
this._outputs[0]._typeConnectionSource = this._inputs[1];
|
|
22
|
+
this._outputs[0]._typeConnectionSourceTranslation = (type) => {
|
|
23
|
+
switch (type) {
|
|
24
|
+
case NodeParticleBlockConnectionPointTypes.FloatGradient:
|
|
25
|
+
return NodeParticleBlockConnectionPointTypes.Float;
|
|
26
|
+
case NodeParticleBlockConnectionPointTypes.Vector2Gradient:
|
|
27
|
+
return NodeParticleBlockConnectionPointTypes.Vector2;
|
|
28
|
+
case NodeParticleBlockConnectionPointTypes.Vector3Gradient:
|
|
29
|
+
return NodeParticleBlockConnectionPointTypes.Vector3;
|
|
30
|
+
case NodeParticleBlockConnectionPointTypes.Color4Gradient:
|
|
31
|
+
return NodeParticleBlockConnectionPointTypes.Color4;
|
|
32
|
+
}
|
|
33
|
+
return type;
|
|
34
|
+
};
|
|
35
|
+
this._inputs[1].addExcludedConnectionPointFromAllowedTypes(NodeParticleBlockConnectionPointTypes.FloatGradient |
|
|
36
|
+
NodeParticleBlockConnectionPointTypes.Vector2Gradient |
|
|
37
|
+
NodeParticleBlockConnectionPointTypes.Vector3Gradient |
|
|
38
|
+
NodeParticleBlockConnectionPointTypes.Color4Gradient);
|
|
39
|
+
this._manageExtendedInputs(1);
|
|
40
|
+
}
|
|
41
|
+
_manageExtendedInputs(index) {
|
|
42
|
+
this._inputs[index].onConnectionObservable.add(() => {
|
|
43
|
+
if (this._entryCount > index) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this._entryCount++;
|
|
47
|
+
this.registerInput("value" + (this._entryCount - 1), NodeParticleBlockConnectionPointTypes.AutoDetect, true);
|
|
48
|
+
this._linkConnectionTypes(1, this._entryCount);
|
|
49
|
+
this._manageExtendedInputs(this._entryCount);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Gets the current class name
|
|
54
|
+
* @returns the class name
|
|
55
|
+
*/
|
|
56
|
+
getClassName() {
|
|
57
|
+
return "ParticleGradientBlock";
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets the gradient operand input component
|
|
61
|
+
*/
|
|
62
|
+
get gradient() {
|
|
63
|
+
return this._inputs[0];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Gets the output component
|
|
67
|
+
*/
|
|
68
|
+
get output() {
|
|
69
|
+
return this._outputs[0];
|
|
70
|
+
}
|
|
71
|
+
_build() {
|
|
72
|
+
// Building the list of entries in order
|
|
73
|
+
const entries = [];
|
|
74
|
+
for (let i = 1; i < this._inputs.length; i++) {
|
|
75
|
+
if (this._inputs[i].isConnected) {
|
|
76
|
+
entries.push(this._inputs[i].connectedPoint?.ownerBlock);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
entries.sort((a, b) => {
|
|
80
|
+
return a.reference - b.reference;
|
|
81
|
+
});
|
|
82
|
+
this.output._storedFunction = (state) => {
|
|
83
|
+
const gradient = this.gradient.getConnectedValue(state);
|
|
84
|
+
if (entries.length === 1) {
|
|
85
|
+
return entries[0].value.getConnectedValue(state);
|
|
86
|
+
}
|
|
87
|
+
// Go down the entries list in reverse order
|
|
88
|
+
let nextEntry = null;
|
|
89
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
90
|
+
const entry = entries[i];
|
|
91
|
+
if (entry.reference <= gradient) {
|
|
92
|
+
const currentValue = entry.value.getConnectedValue(state);
|
|
93
|
+
if (nextEntry) {
|
|
94
|
+
const nextValue = nextEntry.value.getConnectedValue(state);
|
|
95
|
+
const nextReference = nextEntry.reference;
|
|
96
|
+
const currentReference = entry.reference;
|
|
97
|
+
const scale = Math.max(0, Math.min(1, (gradient - currentReference) / (nextReference - currentReference)));
|
|
98
|
+
switch (this.output.type) {
|
|
99
|
+
case NodeParticleBlockConnectionPointTypes.Float:
|
|
100
|
+
return Lerp(currentValue, nextValue, scale);
|
|
101
|
+
case NodeParticleBlockConnectionPointTypes.Vector2:
|
|
102
|
+
return Vector2.Lerp(currentValue, nextValue, scale);
|
|
103
|
+
case NodeParticleBlockConnectionPointTypes.Vector3:
|
|
104
|
+
return Vector3.Lerp(currentValue, nextValue, scale);
|
|
105
|
+
case NodeParticleBlockConnectionPointTypes.Color4:
|
|
106
|
+
return Color4.Lerp(currentValue, nextValue, scale);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return currentValue;
|
|
110
|
+
}
|
|
111
|
+
nextEntry = entry;
|
|
112
|
+
}
|
|
113
|
+
return 0;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
RegisterClass("BABYLON.ParticleGradientBlock", ParticleGradientBlock);
|
|
118
|
+
//# sourceMappingURL=particleGradientBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleGradientBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleGradientBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAIvG,OAAO,EAAE,IAAI,EAAE,gDAAyC;AACxD,OAAO,EAAE,MAAM,EAAE,qCAA8B;AAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,sCAA+B;AAC1D;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAExD;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QANR,gBAAW,GAAG,CAAC,CAAC;QAQpB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gCAAgC,GAAG,CAAC,IAAI,EAAE,EAAE;YACzD,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,qCAAqC,CAAC,aAAa;oBACpD,OAAO,qCAAqC,CAAC,KAAK,CAAC;gBACvD,KAAK,qCAAqC,CAAC,eAAe;oBACtD,OAAO,qCAAqC,CAAC,OAAO,CAAC;gBACzD,KAAK,qCAAqC,CAAC,eAAe;oBACtD,OAAO,qCAAqC,CAAC,OAAO,CAAC;gBACzD,KAAK,qCAAqC,CAAC,cAAc;oBACrD,OAAO,qCAAqC,CAAC,MAAM,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0CAA0C,CACtD,qCAAqC,CAAC,aAAa;YAC/C,qCAAqC,CAAC,eAAe;YACrD,qCAAqC,CAAC,eAAe;YACrD,qCAAqC,CAAC,cAAc,CAC3D,CAAC;QAEF,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACvC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE;YAChD,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC;gBAC3B,OAAO;YACX,CAAC;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7G,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEe,MAAM;QAClB,wCAAwC;QACxC,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAwC,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAExD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;YAED,4CAA4C;YAC5C,IAAI,SAAS,GAAyC,IAAI,CAAC;YAC3D,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC1D,IAAI,SAAS,EAAE,CAAC;wBACZ,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAC3D,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;wBAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC;wBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;wBAE3G,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;4BACvB,KAAK,qCAAqC,CAAC,KAAK;gCAC5C,OAAO,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;4BAChD,KAAK,qCAAqC,CAAC,OAAO;gCAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;4BACxD,KAAK,qCAAqC,CAAC,OAAO;gCAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;4BACxD,KAAK,qCAAqC,CAAC,MAAM;gCAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC3D,CAAC;oBACL,CAAC;oBACD,OAAO,YAAY,CAAC;gBACxB,CAAC;gBAED,SAAS,GAAG,KAAK,CAAC;YACtB,CAAC;YAED,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;IACN,CAAC;CACJ;AAED,aAAa,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC","sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { ParticleGradientValueBlock } from \"./particleGradientValueBlock\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Lerp } from \"core/Maths/math.scalar.functions\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Vector2, Vector3 } from \"core/Maths/math.vector\";\r\n/**\r\n * Block used to define a list of gradient entries\r\n */\r\nexport class ParticleGradientBlock extends NodeParticleBlock {\r\n private _entryCount = 1;\r\n /**\r\n * Creates a new ParticleGradientBlock\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(\"gradient\", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);\r\n this.registerInput(\"value0\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[1];\r\n this._outputs[0]._typeConnectionSourceTranslation = (type) => {\r\n switch (type) {\r\n case NodeParticleBlockConnectionPointTypes.FloatGradient:\r\n return NodeParticleBlockConnectionPointTypes.Float;\r\n case NodeParticleBlockConnectionPointTypes.Vector2Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Vector2;\r\n case NodeParticleBlockConnectionPointTypes.Vector3Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Vector3;\r\n case NodeParticleBlockConnectionPointTypes.Color4Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Color4;\r\n }\r\n return type;\r\n };\r\n\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeParticleBlockConnectionPointTypes.FloatGradient |\r\n NodeParticleBlockConnectionPointTypes.Vector2Gradient |\r\n NodeParticleBlockConnectionPointTypes.Vector3Gradient |\r\n NodeParticleBlockConnectionPointTypes.Color4Gradient\r\n );\r\n\r\n this._manageExtendedInputs(1);\r\n }\r\n\r\n private _manageExtendedInputs(index: number) {\r\n this._inputs[index].onConnectionObservable.add(() => {\r\n if (this._entryCount > index) {\r\n return;\r\n }\r\n this._entryCount++;\r\n this.registerInput(\"value\" + (this._entryCount - 1), NodeParticleBlockConnectionPointTypes.AutoDetect, true);\r\n this._linkConnectionTypes(1, this._entryCount);\r\n\r\n this._manageExtendedInputs(this._entryCount);\r\n });\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 \"ParticleGradientBlock\";\r\n }\r\n\r\n /**\r\n * Gets the gradient operand input component\r\n */\r\n public get gradient(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\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 public override _build() {\r\n // Building the list of entries in order\r\n const entries: ParticleGradientValueBlock[] = [];\r\n for (let i = 1; i < this._inputs.length; i++) {\r\n if (this._inputs[i].isConnected) {\r\n entries.push(this._inputs[i].connectedPoint?.ownerBlock as ParticleGradientValueBlock);\r\n }\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a.reference - b.reference;\r\n });\r\n\r\n this.output._storedFunction = (state) => {\r\n const gradient = this.gradient.getConnectedValue(state);\r\n\r\n if (entries.length === 1) {\r\n return entries[0].value.getConnectedValue(state);\r\n }\r\n\r\n // Go down the entries list in reverse order\r\n let nextEntry: Nullable<ParticleGradientValueBlock> = null;\r\n for (let i = entries.length - 1; i >= 0; i--) {\r\n const entry = entries[i];\r\n if (entry.reference <= gradient) {\r\n const currentValue = entry.value.getConnectedValue(state);\r\n if (nextEntry) {\r\n const nextValue = nextEntry.value.getConnectedValue(state);\r\n const nextReference = nextEntry.reference;\r\n const currentReference = entry.reference;\r\n const scale = Math.max(0, Math.min(1, (gradient - currentReference) / (nextReference - currentReference)));\r\n\r\n switch (this.output.type) {\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n return Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return Vector2.Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return Vector3.Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return Color4.Lerp(currentValue, nextValue, scale);\r\n }\r\n }\r\n return currentValue;\r\n }\r\n\r\n nextEntry = entry;\r\n }\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleGradientBlock\", ParticleGradientBlock);\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
2
|
+
import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
|
|
3
|
+
/**
|
|
4
|
+
* Block used to define a gradient entry for a gradient block
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParticleGradientValueBlock extends NodeParticleBlock {
|
|
7
|
+
/**
|
|
8
|
+
* Gets or sets the epsilon value used for comparison
|
|
9
|
+
*/
|
|
10
|
+
reference: number;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new ParticleGradientEntryBlock
|
|
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 value operand input component
|
|
23
|
+
*/
|
|
24
|
+
get value(): NodeParticleConnectionPoint;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the output component
|
|
27
|
+
*/
|
|
28
|
+
get output(): NodeParticleConnectionPoint;
|
|
29
|
+
_build(): void;
|
|
30
|
+
serialize(): any;
|
|
31
|
+
_deserialize(serializationObject: any): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
|
|
6
|
+
/**
|
|
7
|
+
* Block used to define a gradient entry for a gradient block
|
|
8
|
+
*/
|
|
9
|
+
export class ParticleGradientValueBlock extends NodeParticleBlock {
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new ParticleGradientEntryBlock
|
|
12
|
+
* @param name defines the block name
|
|
13
|
+
*/
|
|
14
|
+
constructor(name) {
|
|
15
|
+
super(name);
|
|
16
|
+
/**
|
|
17
|
+
* Gets or sets the epsilon value used for comparison
|
|
18
|
+
*/
|
|
19
|
+
this.reference = 0;
|
|
20
|
+
this.registerInput("value", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
21
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
22
|
+
this._outputs[0]._typeConnectionSource = this._inputs[0];
|
|
23
|
+
this._outputs[0]._typeConnectionSourceTranslation = (type) => {
|
|
24
|
+
switch (type) {
|
|
25
|
+
case NodeParticleBlockConnectionPointTypes.Float:
|
|
26
|
+
return NodeParticleBlockConnectionPointTypes.FloatGradient;
|
|
27
|
+
case NodeParticleBlockConnectionPointTypes.Vector2:
|
|
28
|
+
return NodeParticleBlockConnectionPointTypes.Vector2Gradient;
|
|
29
|
+
case NodeParticleBlockConnectionPointTypes.Vector3:
|
|
30
|
+
return NodeParticleBlockConnectionPointTypes.Vector3Gradient;
|
|
31
|
+
case NodeParticleBlockConnectionPointTypes.Color4:
|
|
32
|
+
return NodeParticleBlockConnectionPointTypes.Color4Gradient;
|
|
33
|
+
}
|
|
34
|
+
return type;
|
|
35
|
+
};
|
|
36
|
+
this._inputs[0].addExcludedConnectionPointFromAllowedTypes(NodeParticleBlockConnectionPointTypes.Float |
|
|
37
|
+
NodeParticleBlockConnectionPointTypes.Vector2 |
|
|
38
|
+
NodeParticleBlockConnectionPointTypes.Vector3 |
|
|
39
|
+
NodeParticleBlockConnectionPointTypes.Color4);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets the current class name
|
|
43
|
+
* @returns the class name
|
|
44
|
+
*/
|
|
45
|
+
getClassName() {
|
|
46
|
+
return "ParticleGradientValueBlock";
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets the value operand input component
|
|
50
|
+
*/
|
|
51
|
+
get value() {
|
|
52
|
+
return this._inputs[0];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Gets the output component
|
|
56
|
+
*/
|
|
57
|
+
get output() {
|
|
58
|
+
return this._outputs[0];
|
|
59
|
+
}
|
|
60
|
+
_build() {
|
|
61
|
+
this.output._storedFunction = (state) => {
|
|
62
|
+
return null;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
serialize() {
|
|
66
|
+
const serializationObject = super.serialize();
|
|
67
|
+
serializationObject.reference = this.reference;
|
|
68
|
+
return serializationObject;
|
|
69
|
+
}
|
|
70
|
+
_deserialize(serializationObject) {
|
|
71
|
+
super._deserialize(serializationObject);
|
|
72
|
+
this.reference = serializationObject.reference;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
__decorate([
|
|
76
|
+
editableInPropertyPage("Reference", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 1 })
|
|
77
|
+
], ParticleGradientValueBlock.prototype, "reference", void 0);
|
|
78
|
+
RegisterClass("BABYLON.ParticleGradientValueBlock", ParticleGradientValueBlock);
|
|
79
|
+
//# sourceMappingURL=particleGradientValueBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleGradientValueBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleGradientValueBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAEvG,OAAO,EAAE,sBAAsB,EAA0B,6CAAsC;AAC/F;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IAO7D;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAXhB;;WAEG;QAEI,cAAS,GAAG,CAAC,CAAC;QASjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gCAAgC,GAAG,CAAC,IAAI,EAAE,EAAE;YACzD,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,qCAAqC,CAAC,KAAK;oBAC5C,OAAO,qCAAqC,CAAC,aAAa,CAAC;gBAC/D,KAAK,qCAAqC,CAAC,OAAO;oBAC9C,OAAO,qCAAqC,CAAC,eAAe,CAAC;gBACjE,KAAK,qCAAqC,CAAC,OAAO;oBAC9C,OAAO,qCAAqC,CAAC,eAAe,CAAC;gBACjE,KAAK,qCAAqC,CAAC,MAAM;oBAC7C,OAAO,qCAAqC,CAAC,cAAc,CAAC;YACpE,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0CAA0C,CACtD,qCAAqC,CAAC,KAAK;YACvC,qCAAqC,CAAC,OAAO;YAC7C,qCAAqC,CAAC,OAAO;YAC7C,qCAAqC,CAAC,MAAM,CACnD,CAAC;IACN,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,4BAA4B,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEe,MAAM;QAClB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE/C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;IACnD,CAAC;CACJ;AA5EU;IADN,sBAAsB,CAAC,WAAW,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;6DAC3H;AA8EzB,aAAa,CAAC,oCAAoC,EAAE,0BAA0B,CAAC,CAAC","sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\n/**\r\n * Block used to define a gradient entry for a gradient block\r\n */\r\nexport class ParticleGradientValueBlock extends NodeParticleBlock {\r\n /**\r\n * Gets or sets the epsilon value used for comparison\r\n */\r\n @editableInPropertyPage(\"Reference\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 1 })\r\n public reference = 0;\r\n\r\n /**\r\n * Creates a new ParticleGradientEntryBlock\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(\"value\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._outputs[0]._typeConnectionSourceTranslation = (type) => {\r\n switch (type) {\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n return NodeParticleBlockConnectionPointTypes.FloatGradient;\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return NodeParticleBlockConnectionPointTypes.Vector2Gradient;\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return NodeParticleBlockConnectionPointTypes.Vector3Gradient;\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return NodeParticleBlockConnectionPointTypes.Color4Gradient;\r\n }\r\n return type;\r\n };\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeParticleBlockConnectionPointTypes.Float |\r\n NodeParticleBlockConnectionPointTypes.Vector2 |\r\n NodeParticleBlockConnectionPointTypes.Vector3 |\r\n NodeParticleBlockConnectionPointTypes.Color4\r\n );\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 \"ParticleGradientValueBlock\";\r\n }\r\n\r\n /**\r\n * Gets the value operand input component\r\n */\r\n public get value(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\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 public override _build() {\r\n this.output._storedFunction = (state) => {\r\n return null;\r\n };\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.reference = this.reference;\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.reference = serializationObject.reference;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleGradientValueBlock\", ParticleGradientValueBlock);\r\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Observable } from "../../../Misc/observable.js";
|
|
2
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
3
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
4
|
+
import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
|
|
5
|
+
import type { NodeParticleBuildState } from "../nodeParticleBuildState.js";
|
|
6
|
+
import { NodeParticleContextualSources } from "../Enums/nodeParticleContextualSources.js";
|
|
7
|
+
import { NodeParticleSystemSources } from "../Enums/nodeParticleSystemSources.js";
|
|
8
|
+
/**
|
|
9
|
+
* Block used to expose an input value
|
|
10
|
+
*/
|
|
11
|
+
export declare class ParticleInputBlock extends NodeParticleBlock {
|
|
12
|
+
private _storedValue;
|
|
13
|
+
private _valueCallback;
|
|
14
|
+
private _type;
|
|
15
|
+
/** Gets or set a value used to limit the range of float values */
|
|
16
|
+
min: number;
|
|
17
|
+
/** Gets or set a value used to limit the range of float values */
|
|
18
|
+
max: number;
|
|
19
|
+
/** Gets or sets the group to use to display this block in the Inspector */
|
|
20
|
+
groupInInspector: string;
|
|
21
|
+
/**
|
|
22
|
+
* Gets or sets a boolean indicating that this input is displayed in the Inspector
|
|
23
|
+
*/
|
|
24
|
+
displayInInspector: boolean;
|
|
25
|
+
/** Gets an observable raised when the value is changed */
|
|
26
|
+
onValueChangedObservable: Observable<ParticleInputBlock>;
|
|
27
|
+
/**
|
|
28
|
+
* Gets or sets the connection point type (default is float)
|
|
29
|
+
*/
|
|
30
|
+
get type(): NodeParticleBlockConnectionPointTypes;
|
|
31
|
+
/** @internal */
|
|
32
|
+
private _systemSource;
|
|
33
|
+
/**
|
|
34
|
+
* Gets a boolean indicating that the current connection point is a system source
|
|
35
|
+
*/
|
|
36
|
+
get isSystemSource(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Gets or sets the system source used by this input block
|
|
39
|
+
*/
|
|
40
|
+
get systemSource(): NodeParticleSystemSources;
|
|
41
|
+
set systemSource(value: NodeParticleSystemSources);
|
|
42
|
+
private _contextualSource;
|
|
43
|
+
/**
|
|
44
|
+
* Gets a boolean indicating that the current connection point is a contextual value
|
|
45
|
+
*/
|
|
46
|
+
get isContextual(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Gets or sets the current contextual value
|
|
49
|
+
*/
|
|
50
|
+
get contextualValue(): NodeParticleContextualSources;
|
|
51
|
+
set contextualValue(value: NodeParticleContextualSources);
|
|
52
|
+
/**
|
|
53
|
+
* Creates a new InputBlock
|
|
54
|
+
* @param name defines the block name
|
|
55
|
+
* @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)
|
|
56
|
+
*/
|
|
57
|
+
constructor(name: string, type?: NodeParticleBlockConnectionPointTypes);
|
|
58
|
+
/**
|
|
59
|
+
* Gets or sets the value of that point.
|
|
60
|
+
* Please note that this value will be ignored if valueCallback is defined
|
|
61
|
+
*/
|
|
62
|
+
get value(): any;
|
|
63
|
+
set value(value: any);
|
|
64
|
+
/**
|
|
65
|
+
* Gets or sets a callback used to get the value of that point.
|
|
66
|
+
* Please note that setting this value will force the connection point to ignore the value property
|
|
67
|
+
*/
|
|
68
|
+
get valueCallback(): () => any;
|
|
69
|
+
set valueCallback(value: () => any);
|
|
70
|
+
/**
|
|
71
|
+
* Gets the current class name
|
|
72
|
+
* @returns the class name
|
|
73
|
+
*/
|
|
74
|
+
getClassName(): string;
|
|
75
|
+
/**
|
|
76
|
+
* Gets the output component
|
|
77
|
+
*/
|
|
78
|
+
get output(): NodeParticleConnectionPoint;
|
|
79
|
+
/**
|
|
80
|
+
* Set the input block to its default value (based on its type)
|
|
81
|
+
*/
|
|
82
|
+
setDefaultValue(): void;
|
|
83
|
+
_build(state: NodeParticleBuildState): void;
|
|
84
|
+
dispose(): void;
|
|
85
|
+
serialize(): any;
|
|
86
|
+
_deserialize(serializationObject: any): void;
|
|
87
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Observable } from "../../../Misc/observable.js";
|
|
2
|
+
import { GetClass, RegisterClass } from "../../../Misc/typeStore.js";
|
|
3
|
+
import { Matrix, Vector2, Vector3 } from "../../../Maths/math.vector.js";
|
|
4
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
5
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
6
|
+
import { Color4 } from "../../../Maths/math.color.js";
|
|
7
|
+
import { NodeParticleContextualSources } from "../Enums/nodeParticleContextualSources.js";
|
|
8
|
+
import { NodeParticleSystemSources } from "../Enums/nodeParticleSystemSources.js";
|
|
9
|
+
/**
|
|
10
|
+
* Block used to expose an input value
|
|
11
|
+
*/
|
|
12
|
+
export class ParticleInputBlock extends NodeParticleBlock {
|
|
13
|
+
/**
|
|
14
|
+
* Gets or sets the connection point type (default is float)
|
|
15
|
+
*/
|
|
16
|
+
get type() {
|
|
17
|
+
if (this._type === NodeParticleBlockConnectionPointTypes.AutoDetect) {
|
|
18
|
+
if (this.value != null) {
|
|
19
|
+
if (!isNaN(this.value)) {
|
|
20
|
+
this._type = NodeParticleBlockConnectionPointTypes.Float;
|
|
21
|
+
return this._type;
|
|
22
|
+
}
|
|
23
|
+
switch (this.value.getClassName()) {
|
|
24
|
+
case "Vector2":
|
|
25
|
+
this._type = NodeParticleBlockConnectionPointTypes.Vector2;
|
|
26
|
+
return this._type;
|
|
27
|
+
case "Vector3":
|
|
28
|
+
this._type = NodeParticleBlockConnectionPointTypes.Vector3;
|
|
29
|
+
return this._type;
|
|
30
|
+
case "Color4":
|
|
31
|
+
this._type = NodeParticleBlockConnectionPointTypes.Color4;
|
|
32
|
+
return this._type;
|
|
33
|
+
case "Matrix":
|
|
34
|
+
this._type = NodeParticleBlockConnectionPointTypes.Matrix;
|
|
35
|
+
return this._type;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return this._type;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets a boolean indicating that the current connection point is a system source
|
|
43
|
+
*/
|
|
44
|
+
get isSystemSource() {
|
|
45
|
+
return this._contextualSource === NodeParticleContextualSources.None && this._systemSource !== NodeParticleSystemSources.None;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets or sets the system source used by this input block
|
|
49
|
+
*/
|
|
50
|
+
get systemSource() {
|
|
51
|
+
return this._systemSource;
|
|
52
|
+
}
|
|
53
|
+
set systemSource(value) {
|
|
54
|
+
this._systemSource = value;
|
|
55
|
+
if (value !== NodeParticleSystemSources.None) {
|
|
56
|
+
this._contextualSource = NodeParticleContextualSources.None;
|
|
57
|
+
this._type = NodeParticleBlockConnectionPointTypes.Float;
|
|
58
|
+
switch (value) {
|
|
59
|
+
case NodeParticleSystemSources.Time:
|
|
60
|
+
case NodeParticleSystemSources.Delta:
|
|
61
|
+
this._type = NodeParticleBlockConnectionPointTypes.Float;
|
|
62
|
+
break;
|
|
63
|
+
case NodeParticleSystemSources.Emitter:
|
|
64
|
+
this._type = NodeParticleBlockConnectionPointTypes.Vector3;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
if (this.output) {
|
|
68
|
+
this.output.type = this._type;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets a boolean indicating that the current connection point is a contextual value
|
|
74
|
+
*/
|
|
75
|
+
get isContextual() {
|
|
76
|
+
return this._contextualSource !== NodeParticleContextualSources.None;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gets or sets the current contextual value
|
|
80
|
+
*/
|
|
81
|
+
get contextualValue() {
|
|
82
|
+
return this._contextualSource;
|
|
83
|
+
}
|
|
84
|
+
set contextualValue(value) {
|
|
85
|
+
this._contextualSource = value;
|
|
86
|
+
if (value !== NodeParticleContextualSources.None) {
|
|
87
|
+
this._systemSource = NodeParticleSystemSources.None;
|
|
88
|
+
switch (value) {
|
|
89
|
+
case NodeParticleContextualSources.Scale:
|
|
90
|
+
this._type = NodeParticleBlockConnectionPointTypes.Vector2;
|
|
91
|
+
break;
|
|
92
|
+
case NodeParticleContextualSources.Position:
|
|
93
|
+
case NodeParticleContextualSources.Direction:
|
|
94
|
+
case NodeParticleContextualSources.ScaledDirection:
|
|
95
|
+
this._type = NodeParticleBlockConnectionPointTypes.Vector3;
|
|
96
|
+
break;
|
|
97
|
+
case NodeParticleContextualSources.Color:
|
|
98
|
+
this._type = NodeParticleBlockConnectionPointTypes.Color4;
|
|
99
|
+
break;
|
|
100
|
+
case NodeParticleContextualSources.Age:
|
|
101
|
+
case NodeParticleContextualSources.Lifetime:
|
|
102
|
+
case NodeParticleContextualSources.Angle:
|
|
103
|
+
case NodeParticleContextualSources.AgeGradient:
|
|
104
|
+
this._type = NodeParticleBlockConnectionPointTypes.Float;
|
|
105
|
+
break;
|
|
106
|
+
case NodeParticleContextualSources.SpriteCellEnd:
|
|
107
|
+
case NodeParticleContextualSources.SpriteCellStart:
|
|
108
|
+
case NodeParticleContextualSources.SpriteCellIndex:
|
|
109
|
+
this._type = NodeParticleBlockConnectionPointTypes.Int;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
if (this.output) {
|
|
113
|
+
this.output.type = this._type;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Creates a new InputBlock
|
|
119
|
+
* @param name defines the block name
|
|
120
|
+
* @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)
|
|
121
|
+
*/
|
|
122
|
+
constructor(name, type = NodeParticleBlockConnectionPointTypes.AutoDetect) {
|
|
123
|
+
super(name);
|
|
124
|
+
this._type = NodeParticleBlockConnectionPointTypes.Undefined;
|
|
125
|
+
/** Gets or set a value used to limit the range of float values */
|
|
126
|
+
this.min = 0;
|
|
127
|
+
/** Gets or set a value used to limit the range of float values */
|
|
128
|
+
this.max = 0;
|
|
129
|
+
/** Gets or sets the group to use to display this block in the Inspector */
|
|
130
|
+
this.groupInInspector = "";
|
|
131
|
+
/**
|
|
132
|
+
* Gets or sets a boolean indicating that this input is displayed in the Inspector
|
|
133
|
+
*/
|
|
134
|
+
this.displayInInspector = true;
|
|
135
|
+
/** Gets an observable raised when the value is changed */
|
|
136
|
+
this.onValueChangedObservable = new Observable();
|
|
137
|
+
/** @internal */
|
|
138
|
+
this._systemSource = NodeParticleSystemSources.None;
|
|
139
|
+
this._contextualSource = NodeParticleContextualSources.None;
|
|
140
|
+
this._type = type;
|
|
141
|
+
this._isInput = true;
|
|
142
|
+
this._storedValue = null;
|
|
143
|
+
this.setDefaultValue();
|
|
144
|
+
this.registerOutput("output", type);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Gets or sets the value of that point.
|
|
148
|
+
* Please note that this value will be ignored if valueCallback is defined
|
|
149
|
+
*/
|
|
150
|
+
get value() {
|
|
151
|
+
return this._storedValue;
|
|
152
|
+
}
|
|
153
|
+
set value(value) {
|
|
154
|
+
if (this.type === NodeParticleBlockConnectionPointTypes.Float) {
|
|
155
|
+
if (this.min !== this.max) {
|
|
156
|
+
value = Math.max(this.min, value);
|
|
157
|
+
value = Math.min(this.max, value);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
this._storedValue = value;
|
|
161
|
+
this.onValueChangedObservable.notifyObservers(this);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Gets or sets a callback used to get the value of that point.
|
|
165
|
+
* Please note that setting this value will force the connection point to ignore the value property
|
|
166
|
+
*/
|
|
167
|
+
get valueCallback() {
|
|
168
|
+
return this._valueCallback;
|
|
169
|
+
}
|
|
170
|
+
set valueCallback(value) {
|
|
171
|
+
this._valueCallback = value;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Gets the current class name
|
|
175
|
+
* @returns the class name
|
|
176
|
+
*/
|
|
177
|
+
getClassName() {
|
|
178
|
+
return "ParticleInputBlock";
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Gets the output component
|
|
182
|
+
*/
|
|
183
|
+
get output() {
|
|
184
|
+
return this._outputs[0];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Set the input block to its default value (based on its type)
|
|
188
|
+
*/
|
|
189
|
+
setDefaultValue() {
|
|
190
|
+
switch (this.type) {
|
|
191
|
+
case NodeParticleBlockConnectionPointTypes.Int:
|
|
192
|
+
case NodeParticleBlockConnectionPointTypes.Float:
|
|
193
|
+
this.value = 0;
|
|
194
|
+
break;
|
|
195
|
+
case NodeParticleBlockConnectionPointTypes.Vector2:
|
|
196
|
+
this.value = Vector2.Zero();
|
|
197
|
+
break;
|
|
198
|
+
case NodeParticleBlockConnectionPointTypes.Vector3:
|
|
199
|
+
this.value = Vector3.Zero();
|
|
200
|
+
break;
|
|
201
|
+
case NodeParticleBlockConnectionPointTypes.Color4:
|
|
202
|
+
this.value = new Color4(1, 1, 1, 1);
|
|
203
|
+
break;
|
|
204
|
+
case NodeParticleBlockConnectionPointTypes.Matrix:
|
|
205
|
+
this.value = Matrix.Identity();
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
_build(state) {
|
|
210
|
+
super._build(state);
|
|
211
|
+
if (this.isSystemSource) {
|
|
212
|
+
this.output._storedValue = null;
|
|
213
|
+
this.output._storedFunction = (state) => {
|
|
214
|
+
return state.getSystemValue(this._systemSource);
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
else if (this.isContextual) {
|
|
218
|
+
this.output._storedValue = null;
|
|
219
|
+
this.output._storedFunction = (state) => {
|
|
220
|
+
return state.getContextualValue(this._contextualSource);
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
this.output._storedFunction = null;
|
|
225
|
+
this.output._storedValue = this.value;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
dispose() {
|
|
229
|
+
this.onValueChangedObservable.clear();
|
|
230
|
+
super.dispose();
|
|
231
|
+
}
|
|
232
|
+
serialize() {
|
|
233
|
+
const serializationObject = super.serialize();
|
|
234
|
+
serializationObject.type = this.type;
|
|
235
|
+
serializationObject.contextualValue = this.contextualValue;
|
|
236
|
+
serializationObject.systemSource = this.systemSource;
|
|
237
|
+
serializationObject.min = this.min;
|
|
238
|
+
serializationObject.max = this.max;
|
|
239
|
+
serializationObject.groupInInspector = this.groupInInspector;
|
|
240
|
+
serializationObject.displayInInspector = this.displayInInspector;
|
|
241
|
+
if (this._storedValue !== null && !this.isContextual && !this.isSystemSource) {
|
|
242
|
+
if (this._storedValue.asArray) {
|
|
243
|
+
serializationObject.valueType = "BABYLON." + this._storedValue.getClassName();
|
|
244
|
+
serializationObject.value = this._storedValue.asArray();
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
serializationObject.valueType = "number";
|
|
248
|
+
serializationObject.value = this._storedValue;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return serializationObject;
|
|
252
|
+
}
|
|
253
|
+
_deserialize(serializationObject) {
|
|
254
|
+
super._deserialize(serializationObject);
|
|
255
|
+
this._type = serializationObject.type;
|
|
256
|
+
this.contextualValue = serializationObject.contextualValue;
|
|
257
|
+
this.systemSource = serializationObject.systemSource || NodeParticleSystemSources.None;
|
|
258
|
+
this.min = serializationObject.min || 0;
|
|
259
|
+
this.max = serializationObject.max || 0;
|
|
260
|
+
this.groupInInspector = serializationObject.groupInInspector || "";
|
|
261
|
+
if (serializationObject.displayInInspector !== undefined) {
|
|
262
|
+
this.displayInInspector = serializationObject.displayInInspector;
|
|
263
|
+
}
|
|
264
|
+
if (!serializationObject.valueType) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (serializationObject.valueType === "number") {
|
|
268
|
+
this._storedValue = serializationObject.value;
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
const valueType = GetClass(serializationObject.valueType);
|
|
272
|
+
if (valueType) {
|
|
273
|
+
this._storedValue = valueType.FromArray(serializationObject.value);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
RegisterClass("BABYLON.ParticleInputBlock", ParticleInputBlock);
|
|
279
|
+
//# sourceMappingURL=particleInputBlock.js.map
|