@onerjs/core 8.30.4 → 8.30.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Actions/action.d.ts +5 -0
- package/Actions/action.js.map +1 -1
- package/Actions/actionManager.js +6 -2
- package/Actions/actionManager.js.map +1 -1
- package/Animations/runtimeAnimation.d.ts +0 -2
- package/Animations/runtimeAnimation.js +3 -5
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.d.ts +9 -5
- package/Audio/audioSceneComponent.js +1 -0
- package/Audio/audioSceneComponent.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSound.js +1 -0
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/audioEngineV2.d.ts +10 -0
- package/AudioV2/abstractAudio/audioEngineV2.js +29 -0
- package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +5 -0
- package/AudioV2/webAudio/webAudioEngine.js +8 -0
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +10 -5
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +5 -2
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/Cameras/camera.d.ts +4 -0
- package/Cameras/camera.js +18 -9
- package/Cameras/camera.js.map +1 -1
- package/Collisions/gpuPicker.js +0 -1
- package/Collisions/gpuPicker.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +3 -1
- package/Decorators/nodeDecorator.js +2 -0
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -1
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
- package/Engines/WebGPU/webgpuDrawContext.js +8 -0
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/nativeEngine.js +12 -13
- package/Engines/nativeEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.d.ts +44 -0
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +152 -0
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +4 -4
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +17 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +70 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/computeShaderBlock.d.ts +42 -0
- package/FrameGraph/Node/Blocks/computeShaderBlock.js +74 -0
- package/FrameGraph/Node/Blocks/computeShaderBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/executeBlock.d.ts +11 -1
- package/FrameGraph/Node/Blocks/executeBlock.js +18 -0
- package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.js +2 -0
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/outputBlock.js +1 -0
- package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.d.ts +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +7 -3
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +7 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Passes/pass.d.ts +11 -1
- package/FrameGraph/Passes/pass.js +11 -1
- package/FrameGraph/Passes/pass.js.map +1 -1
- package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +115 -0
- package/FrameGraph/Tasks/Misc/computeShaderTask.js +174 -0
- package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -0
- package/FrameGraph/Tasks/Misc/executeTask.d.ts +5 -0
- package/FrameGraph/Tasks/Misc/executeTask.js +3 -0
- package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +7 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +8 -2
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.d.ts +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js +7 -0
- package/FrameGraph/Tasks/PostProcesses/ssao2Task.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -4
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -3
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +7 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +4 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +1 -1
- package/FrameGraph/frameGraph.js +3 -6
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphContext.d.ts +8 -1
- package/FrameGraph/frameGraphContext.js +9 -0
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +4 -2
- package/FrameGraph/frameGraphRenderContext.js +11 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTask.d.ts +11 -2
- package/FrameGraph/frameGraphTask.js +17 -2
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.js +2 -2
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Lights/directionalLight.js +1 -4
- package/Lights/directionalLight.js.map +1 -1
- package/Lights/pointLight.js +2 -5
- package/Lights/pointLight.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +4 -1
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/clipPlaneMaterialHelper.js +11 -1
- package/Materials/clipPlaneMaterialHelper.js.map +1 -1
- package/Materials/floatingOriginMatrixOverrides.d.ts +4 -1
- package/Materials/floatingOriginMatrixOverrides.js +14 -2
- package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.functions.d.ts +8 -0
- package/Materials/materialHelper.functions.js +31 -0
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/shaderMaterial.js +21 -1
- package/Materials/shaderMaterial.js.map +1 -1
- package/Maths/math.vector.functions.d.ts +55 -16
- package/Maths/math.vector.functions.js +68 -10
- package/Maths/math.vector.functions.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +10 -0
- package/Misc/copyTextureToTexture.js +15 -0
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/decorators.d.ts +1 -1
- package/Misc/decorators.js.map +1 -1
- package/Misc/dumpTools.d.ts +20 -0
- package/Misc/dumpTools.js +60 -49
- package/Misc/dumpTools.js.map +1 -1
- package/Misc/index.d.ts +1 -2
- package/Misc/index.js +1 -2
- package/Misc/index.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +7 -7
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.d.ts +57 -0
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +163 -0
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +4 -0
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js +18 -2
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js +7 -7
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +8 -8
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/index.d.ts +5 -4
- package/Particles/Node/Blocks/Emitters/index.js +5 -4
- package/Particles/Node/Blocks/Emitters/index.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +9 -9
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +6 -6
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +7 -7
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleInputBlock.js +2 -0
- package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.d.ts +33 -1
- package/Particles/Node/Blocks/systemBlock.js +82 -3
- package/Particles/Node/Blocks/systemBlock.js.map +1 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +5 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.js +4 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.d.ts +2 -7
- package/Particles/Node/nodeParticleBuildState.js +12 -22
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.helper.d.ts +4 -3
- package/Particles/Node/nodeParticleSystemSet.helper.js +344 -112
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/thinParticleSystem.js +1 -0
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Physics/physicsRaycastResult.d.ts +3 -0
- package/Physics/physicsRaycastResult.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +27 -4
- package/Physics/v2/Plugins/havokPlugin.js +73 -9
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsEngine.d.ts +12 -2
- package/Physics/v2/physicsEngine.js +15 -1
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +9 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/thinSSAO2PostProcess.d.ts +1 -0
- package/PostProcesses/thinSSAO2PostProcess.js +18 -6
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +4 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDirectLighting.js +5 -2
- package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/particles.vertex.js +1 -1
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +1 -1
- package/Shaders/picking.fragment.js.map +1 -1
- package/Shaders/picking.vertex.js +1 -1
- package/Shaders/picking.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +2 -2
- package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +5 -2
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +2 -2
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/iblVoxelGrid.vertex.js +78 -4
- package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +1 -1
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +1 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/ShadersWGSL/picking.vertex.js +1 -1
- package/ShadersWGSL/picking.vertex.js.map +1 -1
- package/Sprites/spriteRenderer.js +10 -8
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRLightEstimation.d.ts +8 -0
- package/XR/features/WebXRLightEstimation.js +6 -1
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/assetContainer.d.ts +1 -1
- package/assetContainer.js +1 -1
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +7 -2
- package/scene.js +11 -8
- package/scene.js.map +1 -1
|
@@ -1,147 +1,379 @@
|
|
|
1
|
+
import { Vector2, Vector3 } from "../../Maths/math.vector.js";
|
|
2
|
+
import { NodeParticleBlockConnectionPointTypes } from "./Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
1
3
|
import { NodeParticleSystemSet } from "./nodeParticleSystemSet.js";
|
|
4
|
+
import { NodeParticleContextualSources } from "./Enums/nodeParticleContextualSources.js";
|
|
5
|
+
import { NodeParticleSystemSources } from "./Enums/nodeParticleSystemSources.js";
|
|
6
|
+
import { ParticleConverterBlock } from "./Blocks/particleConverterBlock.js";
|
|
7
|
+
import { ParticleGradientBlock } from "./Blocks/particleGradientBlock.js";
|
|
8
|
+
import { ParticleGradientValueBlock } from "./Blocks/particleGradientValueBlock.js";
|
|
9
|
+
import { ParticleInputBlock } from "./Blocks/particleInputBlock.js";
|
|
10
|
+
import { ParticleMathBlock, ParticleMathBlockOperations } from "./Blocks/particleMathBlock.js";
|
|
11
|
+
import { ParticleRandomBlock, ParticleRandomBlockLocks } from "./Blocks/particleRandomBlock.js";
|
|
12
|
+
import { ParticleTextureSourceBlock } from "./Blocks/particleSourceTextureBlock.js";
|
|
2
13
|
import { SystemBlock } from "./Blocks/systemBlock.js";
|
|
3
14
|
import { CreateParticleBlock } from "./Blocks/Emitters/createParticleBlock.js";
|
|
4
15
|
import { BoxShapeBlock } from "./Blocks/Emitters/boxShapeBlock.js";
|
|
5
|
-
import {
|
|
6
|
-
import { PointShapeBlock } from "./Blocks/Emitters/pointShapeBlock.js";
|
|
7
|
-
import { SphereShapeBlock } from "./Blocks/Emitters/sphereShapeBlock.js";
|
|
16
|
+
import { ConeShapeBlock } from "./Blocks/Emitters/coneShapeBlock.js";
|
|
8
17
|
import { CylinderShapeBlock } from "./Blocks/Emitters/cylinderShapeBlock.js";
|
|
9
18
|
import { MeshShapeBlock } from "./Blocks/Emitters/meshShapeBlock.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
import { PointShapeBlock } from "./Blocks/Emitters/pointShapeBlock.js";
|
|
20
|
+
import { SphereShapeBlock } from "./Blocks/Emitters/sphereShapeBlock.js";
|
|
21
|
+
import { UpdateAngleBlock } from "./Blocks/Update/updateAngleBlock.js";
|
|
22
|
+
import { UpdateColorBlock } from "./Blocks/Update/updateColorBlock.js";
|
|
23
|
+
import { UpdateDirectionBlock } from "./Blocks/Update/updateDirectionBlock.js";
|
|
24
|
+
import { UpdatePositionBlock } from "./Blocks/Update/updatePositionBlock.js";
|
|
25
|
+
/**
|
|
26
|
+
* Converts a ParticleSystem to a NodeParticleSystemSet.
|
|
27
|
+
* @param name The name of the node particle system set.
|
|
28
|
+
* @param particleSystemsList The particle systems to convert.
|
|
29
|
+
* @returns The converted node particle system set or null if conversion failed.
|
|
30
|
+
* #0K3AQ2#3672
|
|
31
|
+
* #7J0NXA#4
|
|
32
|
+
*/
|
|
33
|
+
export async function ConvertToNodeParticleSystemSetAsync(name, particleSystemsList) {
|
|
34
|
+
if (!particleSystemsList || !particleSystemsList.length) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const nodeParticleSystemSet = new NodeParticleSystemSet(name);
|
|
38
|
+
const promises = [];
|
|
39
|
+
for (const particleSystem of particleSystemsList) {
|
|
40
|
+
promises.push(_ExtractDatafromParticleSystemAsync(nodeParticleSystemSet, particleSystem));
|
|
41
|
+
}
|
|
42
|
+
await Promise.all(promises);
|
|
43
|
+
return nodeParticleSystemSet;
|
|
44
|
+
}
|
|
45
|
+
async function _ExtractDatafromParticleSystemAsync(newSet, oldSystem) {
|
|
46
|
+
// CreateParticle block
|
|
47
|
+
const createParticleBlock = _CreateCreateParticleBlock(oldSystem);
|
|
48
|
+
// Emitter Shape block
|
|
49
|
+
const shapeBlock = _CreateEmitterShapeBlock(oldSystem);
|
|
50
|
+
createParticleBlock.particle.connectTo(shapeBlock.particle);
|
|
51
|
+
// Update the particle position
|
|
52
|
+
const positionUpdatedParticle = _CreateUpdateSystem(shapeBlock.output, oldSystem);
|
|
53
|
+
// Color update
|
|
54
|
+
const colorUpdateBlock = _CreateColorUpdateBlock(oldSystem, createParticleBlock);
|
|
55
|
+
positionUpdatedParticle.connectTo(colorUpdateBlock.particle);
|
|
56
|
+
// System block
|
|
57
|
+
const newSystem = _CreateSystemBlock(oldSystem);
|
|
58
|
+
colorUpdateBlock.output.connectTo(newSystem.particle);
|
|
59
|
+
// Register
|
|
60
|
+
newSet.systemBlocks.push(newSystem);
|
|
61
|
+
}
|
|
62
|
+
function _CreateSystemBlock(oldSystem) {
|
|
63
|
+
const newSystem = new SystemBlock(oldSystem.name);
|
|
64
|
+
// Translation pivot
|
|
65
|
+
_CreateAndConnectInput("Translation pivot", oldSystem.translationPivot, newSystem.translationPivot);
|
|
66
|
+
newSystem.emitRate = oldSystem.emitRate;
|
|
67
|
+
newSystem.manualEmitCount = oldSystem.manualEmitCount;
|
|
68
|
+
newSystem.blendMode = oldSystem.blendMode;
|
|
69
|
+
newSystem.capacity = oldSystem.getCapacity();
|
|
70
|
+
newSystem.targetStopDuration = oldSystem.targetStopDuration;
|
|
71
|
+
newSystem.startDelay = oldSystem.startDelay;
|
|
72
|
+
newSystem.targetStopDuration = oldSystem.targetStopDuration;
|
|
73
|
+
newSystem.updateSpeed = oldSystem.updateSpeed;
|
|
74
|
+
newSystem.preWarmCycles = oldSystem.preWarmCycles;
|
|
75
|
+
newSystem.preWarmStepOffset = oldSystem.preWarmStepOffset;
|
|
76
|
+
newSystem.isBillboardBased = oldSystem.isBillboardBased;
|
|
77
|
+
newSystem.isLocal = oldSystem.isLocal;
|
|
78
|
+
newSystem.disposeOnStop = oldSystem.disposeOnStop;
|
|
79
|
+
// Texture
|
|
80
|
+
const textureBlock = new ParticleTextureSourceBlock("Texture");
|
|
81
|
+
const url = oldSystem.particleTexture.url || "";
|
|
82
|
+
if (url) {
|
|
83
|
+
textureBlock.url = url;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
textureBlock.sourceTexture = oldSystem.particleTexture;
|
|
87
|
+
}
|
|
88
|
+
textureBlock.texture.connectTo(newSystem.texture);
|
|
89
|
+
return newSystem;
|
|
90
|
+
}
|
|
91
|
+
function _CreateCreateParticleBlock(oldSystem) {
|
|
24
92
|
// Create particle
|
|
25
|
-
const createParticleBlock = new CreateParticleBlock("Create
|
|
26
|
-
//
|
|
93
|
+
const createParticleBlock = new CreateParticleBlock("Create Particle");
|
|
94
|
+
// Size
|
|
95
|
+
const randomSizeBlock = new ParticleRandomBlock("Random size");
|
|
96
|
+
_CreateAndConnectInput("Min size", oldSystem.minSize, randomSizeBlock.min);
|
|
97
|
+
_CreateAndConnectInput("Max size", oldSystem.maxSize, randomSizeBlock.max);
|
|
98
|
+
randomSizeBlock.output.connectTo(createParticleBlock.size);
|
|
99
|
+
// Scale
|
|
100
|
+
const randomScaleBlock = new ParticleRandomBlock("Random Scale");
|
|
101
|
+
_CreateAndConnectInput("Min Scale", new Vector2(oldSystem.minScaleX, oldSystem.minScaleY), randomScaleBlock.min);
|
|
102
|
+
_CreateAndConnectInput("Max Scale", new Vector2(oldSystem.maxScaleX, oldSystem.maxScaleY), randomScaleBlock.max);
|
|
103
|
+
randomScaleBlock.output.connectTo(createParticleBlock.scale);
|
|
104
|
+
// Color is handled when we do the color update block to manage gradients
|
|
105
|
+
// Dead color
|
|
106
|
+
_CreateAndConnectInput("Dead Color", oldSystem.colorDead, createParticleBlock.colorDead);
|
|
107
|
+
// Emit power (Speed)
|
|
108
|
+
const randomEmitPowerBlock = new ParticleRandomBlock("Random Emit Power");
|
|
109
|
+
_CreateAndConnectInput("Min Emit Power", oldSystem.minEmitPower, randomEmitPowerBlock.min);
|
|
110
|
+
_CreateAndConnectInput("Max Emit Power", oldSystem.maxEmitPower, randomEmitPowerBlock.max);
|
|
111
|
+
randomEmitPowerBlock.output.connectTo(createParticleBlock.emitPower);
|
|
112
|
+
// Angle (rotation)
|
|
113
|
+
const randomRotationBlock = new ParticleRandomBlock("Random Rotation");
|
|
114
|
+
_CreateAndConnectInput("Min Rotation", oldSystem.minInitialRotation, randomRotationBlock.min);
|
|
115
|
+
_CreateAndConnectInput("Max Rotation", oldSystem.maxInitialRotation, randomRotationBlock.max);
|
|
116
|
+
randomRotationBlock.output.connectTo(createParticleBlock.angle);
|
|
117
|
+
// Lifetime
|
|
118
|
+
const randomLifetimeBlock = new ParticleRandomBlock("Random Lifetime");
|
|
119
|
+
_CreateAndConnectInput("Min Lifetime", oldSystem.minLifeTime, randomLifetimeBlock.min);
|
|
120
|
+
_CreateAndConnectInput("Max Lifetime", oldSystem.maxLifeTime, randomLifetimeBlock.max);
|
|
121
|
+
randomLifetimeBlock.output.connectTo(createParticleBlock.lifeTime);
|
|
122
|
+
return createParticleBlock;
|
|
123
|
+
}
|
|
124
|
+
function _CreateEmitterShapeBlock(oldSystem) {
|
|
125
|
+
const emitter = oldSystem.particleEmitterType;
|
|
126
|
+
if (!emitter) {
|
|
127
|
+
throw new Error("Particle system has no emitter type.");
|
|
128
|
+
}
|
|
27
129
|
let shapeBlock = null;
|
|
28
|
-
switch (
|
|
130
|
+
switch (emitter.getClassName()) {
|
|
29
131
|
case "BoxParticleEmitter": {
|
|
30
|
-
const source =
|
|
31
|
-
shapeBlock = new BoxShapeBlock("Box
|
|
132
|
+
const source = emitter;
|
|
133
|
+
shapeBlock = new BoxShapeBlock("Box Shape");
|
|
32
134
|
const target = shapeBlock;
|
|
33
|
-
_CreateAndConnectInput(
|
|
34
|
-
_CreateAndConnectInput(
|
|
35
|
-
_CreateAndConnectInput(
|
|
36
|
-
_CreateAndConnectInput(
|
|
135
|
+
_CreateAndConnectInput("Direction 1", source.direction1, target.direction1);
|
|
136
|
+
_CreateAndConnectInput("Direction 2", source.direction2, target.direction2);
|
|
137
|
+
_CreateAndConnectInput("Min Emit Box", source.minEmitBox, target.minEmitBox);
|
|
138
|
+
_CreateAndConnectInput("Max Emit Box", source.maxEmitBox, target.maxEmitBox);
|
|
37
139
|
break;
|
|
38
140
|
}
|
|
39
|
-
case "
|
|
40
|
-
const source =
|
|
41
|
-
shapeBlock = new
|
|
141
|
+
case "ConeParticleEmitter": {
|
|
142
|
+
const source = emitter;
|
|
143
|
+
shapeBlock = new ConeShapeBlock("Cone Shape");
|
|
42
144
|
const target = shapeBlock;
|
|
43
|
-
_CreateAndConnectInput(
|
|
44
|
-
_CreateAndConnectInput(
|
|
145
|
+
_CreateAndConnectInput("Radius", source.radius, target.radius);
|
|
146
|
+
_CreateAndConnectInput("Angle", source.angle, target.angle);
|
|
147
|
+
_CreateAndConnectInput("Radius Range", source.radiusRange, target.radiusRange);
|
|
148
|
+
_CreateAndConnectInput("Height Range", source.heightRange, target.heightRange);
|
|
149
|
+
_CreateAndConnectInput("Emit From Spawn Point Only", source.emitFromSpawnPointOnly ? 1 : 0, target.emitFromSpawnPointOnly, NodeParticleBlockConnectionPointTypes.Int);
|
|
150
|
+
_CreateAndConnectInput("Direction Randomizer", source.directionRandomizer, target.directionRandomizer);
|
|
45
151
|
break;
|
|
46
152
|
}
|
|
47
|
-
case "
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const target = shapeBlock;
|
|
51
|
-
_CreateAndConnectInput(target.radius, "Radius", source.radius);
|
|
52
|
-
_CreateAndConnectInput(target.radiusRange, "Radius Range", source.radiusRange);
|
|
53
|
-
_CreateAndConnectInput(target.directionRandomizer, "Direction Randomizer", source.directionRandomizer);
|
|
54
|
-
break;
|
|
153
|
+
case "CustomParticleEmitter": {
|
|
154
|
+
// Custom emitter is not supported in nodes yet
|
|
155
|
+
throw new Error("CustomParticleEmitter is not supported in Node Particle System.");
|
|
55
156
|
}
|
|
56
157
|
case "CylinderParticleEmitter": {
|
|
57
|
-
const source =
|
|
58
|
-
shapeBlock = new CylinderShapeBlock("Cylinder
|
|
158
|
+
const source = emitter;
|
|
159
|
+
shapeBlock = new CylinderShapeBlock("Cylinder Shape");
|
|
59
160
|
const target = shapeBlock;
|
|
60
|
-
_CreateAndConnectInput(
|
|
61
|
-
_CreateAndConnectInput(
|
|
62
|
-
_CreateAndConnectInput(
|
|
63
|
-
_CreateAndConnectInput(
|
|
161
|
+
_CreateAndConnectInput("Height", source.height, target.height);
|
|
162
|
+
_CreateAndConnectInput("Radius", source.radius, target.radius);
|
|
163
|
+
_CreateAndConnectInput("Radius Range", source.radiusRange, target.radiusRange);
|
|
164
|
+
_CreateAndConnectInput("Direction Randomizer", source.directionRandomizer, target.directionRandomizer);
|
|
64
165
|
break;
|
|
65
166
|
}
|
|
167
|
+
case "HemisphericParticleEmitter": {
|
|
168
|
+
// Hemispheric emitter is not supported in nodes yet
|
|
169
|
+
throw new Error("HemisphericParticleEmitter is not supported in Node Particle System.");
|
|
170
|
+
}
|
|
66
171
|
case "MeshParticleEmitter": {
|
|
67
|
-
const source =
|
|
68
|
-
shapeBlock = new MeshShapeBlock("Mesh
|
|
172
|
+
const source = emitter;
|
|
173
|
+
shapeBlock = new MeshShapeBlock("Mesh Shape");
|
|
69
174
|
const target = shapeBlock;
|
|
70
|
-
_CreateAndConnectInput(
|
|
71
|
-
_CreateAndConnectInput(
|
|
175
|
+
_CreateAndConnectInput("Direction 1", source.direction1, target.direction1);
|
|
176
|
+
_CreateAndConnectInput("Direction 2", source.direction2, target.direction2);
|
|
72
177
|
target.mesh = source.mesh;
|
|
73
178
|
break;
|
|
74
179
|
}
|
|
180
|
+
case "PointParticleEmitter": {
|
|
181
|
+
const source = emitter;
|
|
182
|
+
shapeBlock = new PointShapeBlock("Point Shape");
|
|
183
|
+
const target = shapeBlock;
|
|
184
|
+
_CreateAndConnectInput("Direction 1", source.direction1, target.direction1);
|
|
185
|
+
_CreateAndConnectInput("Direction 2", source.direction2, target.direction2);
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case "SphereParticleEmitter": {
|
|
189
|
+
const source = emitter;
|
|
190
|
+
shapeBlock = new SphereShapeBlock("Sphere Shape");
|
|
191
|
+
const target = shapeBlock;
|
|
192
|
+
_CreateAndConnectInput("Radius", source.radius, target.radius);
|
|
193
|
+
_CreateAndConnectInput("Radius Range", source.radiusRange, target.radiusRange);
|
|
194
|
+
_CreateAndConnectInput("Direction Randomizer", source.directionRandomizer, target.directionRandomizer);
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
75
197
|
}
|
|
76
198
|
if (!shapeBlock) {
|
|
77
|
-
throw new Error(`Unsupported particle emitter type: ${
|
|
199
|
+
throw new Error(`Unsupported particle emitter type: ${emitter.getClassName()}`);
|
|
78
200
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
//
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
201
|
+
return shapeBlock;
|
|
202
|
+
}
|
|
203
|
+
function _CreateUpdateSystem(inputParticle, oldSystem) {
|
|
204
|
+
let outputUpdate = inputParticle;
|
|
205
|
+
if (oldSystem.minAngularSpeed !== 0 || oldSystem.maxAngularSpeed !== 0) {
|
|
206
|
+
outputUpdate = _CreateAngularSpeedUpdate(outputUpdate, oldSystem.minAngularSpeed, oldSystem.maxAngularSpeed);
|
|
207
|
+
}
|
|
208
|
+
outputUpdate = _CreatePositionUpdate(outputUpdate);
|
|
209
|
+
if (oldSystem.gravity.equalsToFloats(0, 0, 0) === false) {
|
|
210
|
+
outputUpdate = _CreateGravityUpdate(outputUpdate, oldSystem.gravity);
|
|
211
|
+
}
|
|
212
|
+
return outputUpdate;
|
|
213
|
+
}
|
|
214
|
+
function _CreateAngularSpeedUpdate(inputParticle, minAngularSpeed, maxAngularSpeed) {
|
|
215
|
+
// Random value between for the angular speed of the particle
|
|
216
|
+
const randomAngularSpeedBlock = new ParticleRandomBlock("Random Angular Speed");
|
|
217
|
+
_CreateAndConnectInput("Min Angular Speed", minAngularSpeed, randomAngularSpeedBlock.min);
|
|
218
|
+
_CreateAndConnectInput("Max Angular Speed", maxAngularSpeed, randomAngularSpeedBlock.max);
|
|
219
|
+
// Create the angular speed delta
|
|
220
|
+
const angleSpeedDeltaOutput = _CreateDeltaModifiedInput("Angular Speed", randomAngularSpeedBlock.output);
|
|
221
|
+
// Add it to the angle
|
|
222
|
+
const addAngle = new ParticleMathBlock("Add Angular Speed to Angle");
|
|
223
|
+
addAngle.operation = ParticleMathBlockOperations.Add;
|
|
224
|
+
_CreateAndConnectContextualSource("Angle", NodeParticleContextualSources.Angle, addAngle.left);
|
|
225
|
+
angleSpeedDeltaOutput.connectTo(addAngle.right);
|
|
226
|
+
// Update the particle angle
|
|
227
|
+
const updateAngle = new UpdateAngleBlock("Angle Update with Angular Speed");
|
|
228
|
+
inputParticle.connectTo(updateAngle.particle);
|
|
229
|
+
addAngle.output.connectTo(updateAngle.angle);
|
|
230
|
+
return updateAngle.output;
|
|
231
|
+
}
|
|
232
|
+
function _CreatePositionUpdate(inputParticle) {
|
|
233
|
+
// Calculate the new position
|
|
234
|
+
const addPositionBlock = new ParticleMathBlock("Add Position");
|
|
235
|
+
addPositionBlock.operation = ParticleMathBlockOperations.Add;
|
|
236
|
+
_CreateAndConnectContextualSource("Position", NodeParticleContextualSources.Position, addPositionBlock.left);
|
|
237
|
+
_CreateAndConnectContextualSource("Scaled Direction", NodeParticleContextualSources.ScaledDirection, addPositionBlock.right);
|
|
238
|
+
// Update the particle position
|
|
239
|
+
const updatePosition = new UpdatePositionBlock("Position Update");
|
|
240
|
+
inputParticle.connectTo(updatePosition.particle);
|
|
241
|
+
addPositionBlock.output.connectTo(updatePosition.position);
|
|
242
|
+
return updatePosition.output;
|
|
243
|
+
}
|
|
244
|
+
function _CreateGravityUpdate(inputParticle, gravity) {
|
|
245
|
+
// Create the gravity delta
|
|
246
|
+
const gravityDeltaOutput = _CreateDeltaModifiedInput("Gravity", gravity);
|
|
247
|
+
// Add it to the direction
|
|
248
|
+
const addDirectionBlock = new ParticleMathBlock("Add Gravity to Direction");
|
|
249
|
+
addDirectionBlock.operation = ParticleMathBlockOperations.Add;
|
|
250
|
+
_CreateAndConnectContextualSource("Direction", NodeParticleContextualSources.Direction, addDirectionBlock.left);
|
|
251
|
+
gravityDeltaOutput.connectTo(addDirectionBlock.right);
|
|
252
|
+
// Update the particle direction
|
|
253
|
+
const updateDirection = new UpdateDirectionBlock("Direction Update with Gravity");
|
|
254
|
+
inputParticle.connectTo(updateDirection.particle);
|
|
255
|
+
addDirectionBlock.output.connectTo(updateDirection.direction);
|
|
256
|
+
return updateDirection.output;
|
|
257
|
+
}
|
|
258
|
+
function _CreateColorUpdateBlock(oldSystem, createParticleBlock) {
|
|
259
|
+
if (!oldSystem) {
|
|
260
|
+
throw new Error("Invalid particle system");
|
|
261
|
+
}
|
|
262
|
+
// Calculate the color
|
|
263
|
+
const colorGradients = oldSystem.getColorGradients();
|
|
264
|
+
let colorBlock = null;
|
|
265
|
+
if (colorGradients && colorGradients.length > 0) {
|
|
266
|
+
colorBlock = _CreateGradientColorUpdate(oldSystem, colorGradients, createParticleBlock);
|
|
113
267
|
}
|
|
114
268
|
else {
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
basicPositionUpdateBlock.output.connectTo(basicColorUpdateBlock.particle);
|
|
124
|
-
basicColorUpdateBlock.output.connectTo(system.particle);
|
|
125
|
-
// Register
|
|
126
|
-
target.systemBlocks.push(system);
|
|
269
|
+
colorBlock = _CreateBasicColorUpdate();
|
|
270
|
+
}
|
|
271
|
+
// Clamp alpha >= 0
|
|
272
|
+
const clampedColor = _ClampUpdateColorAlpha(colorBlock);
|
|
273
|
+
// Create the color update block
|
|
274
|
+
const colorUpdateBlock = new UpdateColorBlock("Color update");
|
|
275
|
+
clampedColor.colorOut.connectTo(colorUpdateBlock.color);
|
|
276
|
+
return colorUpdateBlock;
|
|
127
277
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
278
|
+
function _CreateGradientColorUpdate(oldSystem, gradient, createParticleBlock) {
|
|
279
|
+
const colorGradientBlock = new ParticleGradientBlock("Color Gradient");
|
|
280
|
+
_CreateAndConnectContextualSource("gradient", NodeParticleContextualSources.Age, colorGradientBlock.gradient);
|
|
281
|
+
let tempColor = null;
|
|
282
|
+
let colorStart = null;
|
|
283
|
+
let colorEnd = null;
|
|
284
|
+
for (let i = 0; i < gradient.length; i++) {
|
|
285
|
+
const gradientStep = gradient[i];
|
|
286
|
+
const gradientValueBlock = new ParticleGradientValueBlock("Color Gradient Value " + i);
|
|
287
|
+
gradientValueBlock.reference = gradientStep.gradient;
|
|
288
|
+
if (gradientStep.color2) {
|
|
289
|
+
// Create a random between color1 and color2
|
|
290
|
+
const randomColorBlock = new ParticleRandomBlock("Random Color for Gradient " + i);
|
|
291
|
+
randomColorBlock.lockMode = ParticleRandomBlockLocks.PerSystem;
|
|
292
|
+
_CreateAndConnectInput("Color 1", gradientStep.color1, randomColorBlock.min);
|
|
293
|
+
_CreateAndConnectInput("Color 2", gradientStep.color2, randomColorBlock.max);
|
|
294
|
+
randomColorBlock.output.connectTo(gradientValueBlock.value);
|
|
295
|
+
tempColor = randomColorBlock;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// Single color
|
|
299
|
+
const input = new ParticleInputBlock("Color " + i);
|
|
300
|
+
input.value = gradientStep.color1;
|
|
301
|
+
input.output.connectTo(gradientValueBlock.value);
|
|
302
|
+
tempColor = input;
|
|
303
|
+
}
|
|
304
|
+
if (gradientStep.gradient === 0) {
|
|
305
|
+
colorStart = tempColor;
|
|
306
|
+
}
|
|
307
|
+
else if (gradientStep.gradient === 1) {
|
|
308
|
+
colorEnd = tempColor;
|
|
309
|
+
}
|
|
310
|
+
gradientValueBlock.output.connectTo(colorGradientBlock.inputs[i + 1]);
|
|
138
311
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
312
|
+
_UpdateCreateParticleColor(oldSystem, colorStart, colorEnd, createParticleBlock);
|
|
313
|
+
return colorGradientBlock;
|
|
314
|
+
}
|
|
315
|
+
function _CreateBasicColorUpdate() {
|
|
316
|
+
const addColorBlock = new ParticleMathBlock("Add Color");
|
|
317
|
+
addColorBlock.operation = ParticleMathBlockOperations.Add;
|
|
318
|
+
_CreateAndConnectContextualSource("Color", NodeParticleContextualSources.Color, addColorBlock.left);
|
|
319
|
+
_CreateAndConnectContextualSource("Scaled Color Step", NodeParticleContextualSources.ScaledColorStep, addColorBlock.right);
|
|
320
|
+
return addColorBlock;
|
|
321
|
+
}
|
|
322
|
+
function _UpdateCreateParticleColor(oldSystem, colorStart, colorEnd, createParticleBlock) {
|
|
323
|
+
if (colorStart === null) {
|
|
324
|
+
colorStart = new ParticleInputBlock("Color Start");
|
|
325
|
+
colorStart.value = oldSystem.color1;
|
|
143
326
|
}
|
|
144
|
-
|
|
145
|
-
|
|
327
|
+
if (colorEnd === null) {
|
|
328
|
+
colorEnd = new ParticleInputBlock("Color End");
|
|
329
|
+
colorEnd.value = oldSystem.color2;
|
|
330
|
+
}
|
|
331
|
+
const randomColorBlock = new ParticleRandomBlock("Random color");
|
|
332
|
+
randomColorBlock.lockMode = ParticleRandomBlockLocks.PerSystem;
|
|
333
|
+
colorStart.output.connectTo(randomColorBlock.min);
|
|
334
|
+
colorEnd.output.connectTo(randomColorBlock.max);
|
|
335
|
+
randomColorBlock.output.connectTo(createParticleBlock.color);
|
|
336
|
+
}
|
|
337
|
+
function _ClampUpdateColorAlpha(colorBlock) {
|
|
338
|
+
// Decompose color to clamp alpha
|
|
339
|
+
const decomposeColorBlock = new ParticleConverterBlock("Decompose Color");
|
|
340
|
+
colorBlock.outputs[0].connectTo(decomposeColorBlock.colorIn);
|
|
341
|
+
// Clamp alpha to be >= 0
|
|
342
|
+
const maxAlphaBlock = new ParticleMathBlock("Alpha >= 0");
|
|
343
|
+
maxAlphaBlock.operation = ParticleMathBlockOperations.Max;
|
|
344
|
+
decomposeColorBlock.wOut.connectTo(maxAlphaBlock.left);
|
|
345
|
+
_CreateAndConnectInput("Zero", 0, maxAlphaBlock.right);
|
|
346
|
+
// Recompose color
|
|
347
|
+
const composeColorBlock = new ParticleConverterBlock("Compose Color");
|
|
348
|
+
decomposeColorBlock.xyzOut.connectTo(composeColorBlock.xyzIn);
|
|
349
|
+
maxAlphaBlock.output.connectTo(composeColorBlock.wIn);
|
|
350
|
+
return composeColorBlock;
|
|
351
|
+
}
|
|
352
|
+
function _CreateDeltaModifiedInput(name, value) {
|
|
353
|
+
const multiplyBlock = new ParticleMathBlock("Multiply by Delta");
|
|
354
|
+
multiplyBlock.operation = ParticleMathBlockOperations.Multiply;
|
|
355
|
+
if (value instanceof Vector3) {
|
|
356
|
+
_CreateAndConnectInput(name, value, multiplyBlock.left);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
value.connectTo(multiplyBlock.left);
|
|
360
|
+
}
|
|
361
|
+
_CreateAndConnectSystemSource("Delta", NodeParticleSystemSources.Delta, multiplyBlock.right);
|
|
362
|
+
return multiplyBlock.output;
|
|
363
|
+
}
|
|
364
|
+
function _CreateAndConnectInput(inputBlockName, value, targetToConnectTo, inputType) {
|
|
365
|
+
const input = new ParticleInputBlock(inputBlockName, inputType);
|
|
366
|
+
input.value = value;
|
|
367
|
+
input.output.connectTo(targetToConnectTo);
|
|
368
|
+
}
|
|
369
|
+
function _CreateAndConnectContextualSource(contextualBlockName, contextSource, targetToConnectTo) {
|
|
370
|
+
const input = new ParticleInputBlock(contextualBlockName);
|
|
371
|
+
input.contextualValue = contextSource;
|
|
372
|
+
input.output.connectTo(targetToConnectTo);
|
|
373
|
+
}
|
|
374
|
+
function _CreateAndConnectSystemSource(systemBlockName, systemSource, targetToConnectTo) {
|
|
375
|
+
const input = new ParticleInputBlock(systemBlockName);
|
|
376
|
+
input.systemSource = systemSource;
|
|
377
|
+
input.output.connectTo(targetToConnectTo);
|
|
146
378
|
}
|
|
147
379
|
//# sourceMappingURL=nodeParticleSystemSet.helper.js.map
|