@babylonjs/core 8.47.0 → 8.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Behaviors/Cameras/geospatialClippingBehavior.d.ts +39 -0
- package/Behaviors/Cameras/geospatialClippingBehavior.js +75 -0
- package/Behaviors/Cameras/geospatialClippingBehavior.js.map +1 -0
- package/Behaviors/Cameras/index.d.ts +2 -0
- package/Behaviors/Cameras/index.js +2 -0
- package/Behaviors/Cameras/index.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +6 -4
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Limits/geospatialLimits.d.ts +25 -1
- package/Cameras/Limits/geospatialLimits.js +60 -3
- package/Cameras/Limits/geospatialLimits.js.map +1 -1
- package/Cameras/geospatialCamera.d.ts +33 -9
- package/Cameras/geospatialCamera.js +114 -42
- package/Cameras/geospatialCamera.js.map +1 -1
- package/Cameras/geospatialCameraMovement.d.ts +1 -3
- package/Cameras/geospatialCameraMovement.js +10 -4
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Debug/debugLayer.js +11 -3
- package/Debug/debugLayer.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +3 -2
- package/Engines/thinEngine.js.map +1 -1
- package/IAssetContainer.d.ts +5 -0
- package/IAssetContainer.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.js +1 -1
- package/Lights/Clustered/clusteredLightContainer.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +2 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.d.ts +135 -5
- package/Materials/PBR/openpbrMaterial.js +205 -22
- package/Materials/PBR/openpbrMaterial.js.map +1 -1
- package/Materials/effectRenderer.d.ts +2 -1
- package/Materials/effectRenderer.js +2 -12
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/materialHelper.functions.js +1 -0
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +6 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +21 -17
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Misc/sceneRecorder.d.ts +6 -2
- package/Misc/sceneRecorder.js +7 -0
- package/Misc/sceneRecorder.js.map +1 -1
- package/Particles/Node/Blocks/index.d.ts +3 -0
- package/Particles/Node/Blocks/index.js +3 -0
- package/Particles/Node/Blocks/index.js.map +1 -1
- package/Particles/Node/Blocks/particleNLerpBlock.d.ts +35 -0
- package/Particles/Node/Blocks/particleNLerpBlock.js +97 -0
- package/Particles/Node/Blocks/particleNLerpBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleSmoothStepBlock.d.ts +34 -0
- package/Particles/Node/Blocks/particleSmoothStepBlock.js +91 -0
- package/Particles/Node/Blocks/particleSmoothStepBlock.js.map +1 -0
- package/Particles/Node/Blocks/particleStepBlock.d.ts +30 -0
- package/Particles/Node/Blocks/particleStepBlock.js +84 -0
- package/Particles/Node/Blocks/particleStepBlock.js.map +1 -0
- package/Particles/solidParticleSystem.d.ts +3 -0
- package/Particles/solidParticleSystem.js +7 -4
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +8 -10
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +7 -9
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +4 -0
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/{openpbrBlockAmbientOcclusion.d.ts → openpbrAmbientOcclusionData.d.ts} +1 -1
- package/Shaders/ShadersInclude/openpbrAmbientOcclusionData.js +15 -0
- package/Shaders/ShadersInclude/openpbrAmbientOcclusionData.js.map +1 -0
- package/{ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts → Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.d.ts} +1 -1
- package/Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.js +13 -0
- package/Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.js.map +1 -0
- package/Shaders/ShadersInclude/openpbrBackgroundTransmission.d.ts +5 -0
- package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +26 -0
- package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -0
- package/Shaders/ShadersInclude/openpbrBaseLayerData.js +18 -7
- package/Shaders/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDirectLighting.js +52 -6
- package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +109 -6
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrFragmentDeclaration.d.ts +1 -0
- package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +24 -4
- package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +10 -1
- package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrIblFunctions.js +9 -2
- package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js +1 -0
- package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrTransmissionLayerData.d.ts +5 -0
- package/Shaders/ShadersInclude/openpbrTransmissionLayerData.js +47 -0
- package/Shaders/ShadersInclude/openpbrTransmissionLayerData.js.map +1 -0
- package/Shaders/ShadersInclude/openpbrUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.d.ts +1 -0
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +17 -4
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
- package/Shaders/openpbr.fragment.d.ts +4 -1
- package/Shaders/openpbr.fragment.js +33 -15
- package/Shaders/openpbr.fragment.js.map +1 -1
- package/Shaders/openpbr.vertex.js +30 -18
- package/Shaders/openpbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +10 -12
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +4 -0
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/importanceSampling.js +1 -1
- package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.js +15 -0
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.js +13 -0
- package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +25 -0
- package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +18 -7
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +52 -6
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +115 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +10 -1
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrFuzzLayerData.js +4 -4
- package/ShadersWGSL/ShadersInclude/openpbrFuzzLayerData.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +10 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.js +47 -0
- package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
- package/ShadersWGSL/openpbr.fragment.d.ts +4 -1
- package/ShadersWGSL/openpbr.fragment.js +33 -15
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/openpbr.vertex.js +12 -0
- package/ShadersWGSL/openpbr.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +3 -0
- package/Sprites/spriteManager.js +9 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/assetContainer.d.ts +5 -0
- package/assetContainer.js +32 -0
- package/assetContainer.js.map +1 -1
- package/package.json +2 -2
- package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js +0 -35
- package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +0 -1
- package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js +0 -36
- package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +0 -1
package/Misc/sceneRecorder.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Scene } from "../scene.js";
|
|
1
|
+
import type { IDisposable, Scene } from "../scene.js";
|
|
2
2
|
/**
|
|
3
3
|
* Class used to record delta files between 2 scene states
|
|
4
4
|
*/
|
|
5
|
-
export declare class SceneRecorder {
|
|
5
|
+
export declare class SceneRecorder implements IDisposable {
|
|
6
6
|
private _trackedScene;
|
|
7
7
|
private _savedJSON;
|
|
8
8
|
/**
|
|
@@ -18,6 +18,10 @@ export declare class SceneRecorder {
|
|
|
18
18
|
private _compareArray;
|
|
19
19
|
private _compareObjects;
|
|
20
20
|
private _compareCollections;
|
|
21
|
+
/**
|
|
22
|
+
* Dispose the recorder.
|
|
23
|
+
*/
|
|
24
|
+
dispose(): void;
|
|
21
25
|
private static GetShadowGeneratorById;
|
|
22
26
|
/**
|
|
23
27
|
* Apply a given delta to a given scene
|
package/Misc/sceneRecorder.js
CHANGED
|
@@ -169,6 +169,13 @@ export class SceneRecorder {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Dispose the recorder.
|
|
174
|
+
*/
|
|
175
|
+
dispose() {
|
|
176
|
+
this._trackedScene = null;
|
|
177
|
+
this._savedJSON = null;
|
|
178
|
+
}
|
|
172
179
|
static GetShadowGeneratorById(scene, id) {
|
|
173
180
|
const allGenerators = scene.lights.map((l) => l.getShadowGenerators());
|
|
174
181
|
for (const generators of allGenerators) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneRecorder.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/sceneRecorder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Scene } from \"../scene\";\r\nimport type { Nullable } from \"../types\";\r\nimport { SceneSerializer } from \"./sceneSerializer\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { Light } from \"../Lights/light\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Skeleton } from \"../Bones/skeleton\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { MultiMaterial } from \"../Materials/multiMaterial\";\r\nimport { TransformNode } from \"../Meshes/transformNode\";\r\nimport { ParticleSystem } from \"../Particles/particleSystem\";\r\nimport { MorphTargetManager } from \"../Morph/morphTargetManager\";\r\nimport { ShadowGenerator } from \"../Lights/Shadows/shadowGenerator\";\r\nimport { PostProcess } from \"../PostProcesses/postProcess\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { SerializationHelper } from \"./decorators.serialization\";\r\n\r\n/**\r\n * Class used to record delta files between 2 scene states\r\n */\r\nexport class SceneRecorder {\r\n private _trackedScene: Nullable<Scene> = null;\r\n private _savedJSON: any;\r\n\r\n /**\r\n * Track a given scene. This means the current scene state will be considered the original state\r\n * @param scene defines the scene to track\r\n */\r\n public track(scene: Scene) {\r\n this._trackedScene = scene;\r\n\r\n SerializationHelper.AllowLoadingUniqueId = true;\r\n this._savedJSON = SceneSerializer.Serialize(scene);\r\n SerializationHelper.AllowLoadingUniqueId = false;\r\n }\r\n\r\n /**\r\n * Get the delta between current state and original state\r\n * @returns a any containing the delta\r\n */\r\n public getDelta(): any {\r\n if (!this._trackedScene) {\r\n return null;\r\n }\r\n\r\n const currentForceSerializeBuffers = Texture.ForceSerializeBuffers;\r\n Texture.ForceSerializeBuffers = false;\r\n\r\n SerializationHelper.AllowLoadingUniqueId = true;\r\n const newJSON = SceneSerializer.Serialize(this._trackedScene);\r\n SerializationHelper.AllowLoadingUniqueId = false;\r\n const deltaJSON: any = {};\r\n\r\n for (const node in newJSON) {\r\n this._compareCollections(node, this._savedJSON[node], newJSON[node], deltaJSON);\r\n }\r\n\r\n Texture.ForceSerializeBuffers = currentForceSerializeBuffers;\r\n\r\n return deltaJSON;\r\n }\r\n\r\n private _compareArray(key: string, original: any[], current: any[], deltaJSON: any) {\r\n if (original.length === 0 && current.length === 0) {\r\n return true;\r\n }\r\n\r\n // Numbers?\r\n if ((original.length && !isNaN(original[0])) || (current.length && !isNaN(current[0]))) {\r\n if (original.length !== current.length) {\r\n return false;\r\n }\r\n\r\n if (original.length === 0) {\r\n return true;\r\n }\r\n for (let index = 0; index < original.length; index++) {\r\n if (original[index] !== current[index]) {\r\n deltaJSON[key] = current;\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // let's use uniqueId to find similar objects\r\n const originalUniqueIds: number[] = [];\r\n for (let index = 0; index < original.length; index++) {\r\n const originalObject = original[index];\r\n const originalUniqueId = originalObject.uniqueId;\r\n\r\n originalUniqueIds.push(originalUniqueId);\r\n // Look for that object in current state\r\n const currentObjects = current.filter((c) => c.uniqueId === originalUniqueId);\r\n if (currentObjects.length) {\r\n // We have a candidate\r\n const currentObject = currentObjects[0];\r\n\r\n const newObject: any = {};\r\n if (!this._compareObjects(originalObject, currentObject, newObject)) {\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n newObject.__state = {\r\n id: currentObject.id || currentObject.name,\r\n };\r\n deltaJSON[key].push(newObject);\r\n }\r\n } else {\r\n // We need to delete\r\n const newObject: any = {\r\n __state: {\r\n deleteId: originalObject.id || originalObject.name,\r\n },\r\n };\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n deltaJSON[key].push(newObject);\r\n }\r\n }\r\n\r\n // Checking for new objects\r\n for (let index = 0; index < current.length; index++) {\r\n const currentObject = current[index];\r\n const currentUniqueId = currentObject.uniqueId;\r\n\r\n // Object was added\r\n if (originalUniqueIds.indexOf(currentUniqueId) === -1) {\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n\r\n deltaJSON[key].push(currentObject);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _compareObjects(originalObjet: any, currentObject: any, deltaJSON: any) {\r\n let aDifferenceWasFound = false;\r\n\r\n for (const prop in originalObjet) {\r\n if (!Object.prototype.hasOwnProperty.call(originalObjet, prop)) {\r\n continue;\r\n }\r\n const originalValue = originalObjet[prop];\r\n const currentValue = currentObject[prop];\r\n let diffFound = false;\r\n\r\n if (Array.isArray(originalValue)) {\r\n diffFound = JSON.stringify(originalValue) !== JSON.stringify(currentValue);\r\n } else if (!isNaN(originalValue) || Object.prototype.toString.call(originalValue) == \"[object String]\") {\r\n diffFound = originalValue !== currentValue;\r\n } else if (typeof originalValue === \"object\" && typeof currentValue === \"object\") {\r\n const newObject = {};\r\n if (!this._compareObjects(originalValue, currentValue, newObject)) {\r\n deltaJSON[prop] = newObject;\r\n aDifferenceWasFound = true;\r\n }\r\n }\r\n\r\n if (diffFound) {\r\n aDifferenceWasFound = true;\r\n deltaJSON[prop] = currentValue;\r\n }\r\n }\r\n\r\n return !aDifferenceWasFound;\r\n }\r\n\r\n private _compareCollections(key: string, original: any[], current: any[], deltaJSON: any) {\r\n // Same ?\r\n if (original === current) {\r\n return;\r\n }\r\n\r\n if (original && current) {\r\n // Array?\r\n if (Array.isArray(original) && Array.isArray(current)) {\r\n if (this._compareArray(key, original, current, deltaJSON)) {\r\n return;\r\n }\r\n } else if (typeof original === \"object\" && typeof current === \"object\") {\r\n // Object\r\n const newObject = {};\r\n if (!this._compareObjects(original, current, newObject)) {\r\n deltaJSON[key] = newObject;\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private static GetShadowGeneratorById(scene: Scene, id: string) {\r\n const allGenerators = scene.lights.map((l) => l.getShadowGenerators());\r\n\r\n for (const generators of allGenerators) {\r\n if (generators) {\r\n const iterator = generators.values();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const generator = key.value;\r\n if (generator && generator.id === id) {\r\n return generator;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Apply a given delta to a given scene\r\n * @param deltaJSON defines the JSON containing the delta\r\n * @param scene defines the scene to apply the delta to\r\n */\r\n public static ApplyDelta(deltaJSON: any | string, scene: Scene) {\r\n if (typeof deltaJSON === \"string\") {\r\n deltaJSON = JSON.parse(deltaJSON);\r\n }\r\n\r\n // Scene\r\n const anyScene = scene as any;\r\n for (const prop in deltaJSON) {\r\n const source = deltaJSON[prop];\r\n const property = anyScene[prop];\r\n\r\n if (Array.isArray(property) || prop === \"shadowGenerators\") {\r\n // Restore array\r\n switch (prop) {\r\n case \"cameras\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getCameraById.bind(scene), (data) => Camera.Parse(data, scene));\r\n break;\r\n case \"lights\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getLightById.bind(scene), (data) => Light.Parse(data, scene));\r\n break;\r\n case \"shadowGenerators\":\r\n this._ApplyDeltaForEntity(\r\n source,\r\n scene,\r\n (id) => this.GetShadowGeneratorById(scene, id),\r\n (data) => ShadowGenerator.Parse(data, scene)\r\n );\r\n break;\r\n case \"meshes\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMeshById.bind(scene), (data) => Mesh.Parse(data, scene, \"\"));\r\n break;\r\n case \"skeletons\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getSkeletonById.bind(scene), (data) => Skeleton.Parse(data, scene));\r\n break;\r\n case \"materials\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMaterialById.bind(scene), (data) => Material.Parse(data, scene, \"\"));\r\n break;\r\n case \"multiMaterials\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMaterialById.bind(scene), (data) => MultiMaterial.Parse(data, scene, \"\"));\r\n break;\r\n case \"transformNodes\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getTransformNodeById.bind(scene), (data) => TransformNode.Parse(data, scene, \"\"));\r\n break;\r\n case \"particleSystems\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getParticleSystemById.bind(scene), (data) => ParticleSystem.Parse(data, scene, \"\"));\r\n break;\r\n case \"morphTargetManagers\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMorphTargetById.bind(scene), (data) => MorphTargetManager.Parse(data, scene));\r\n break;\r\n case \"postProcesses\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getPostProcessByName.bind(scene), (data) => PostProcess.Parse(data, scene, \"\"));\r\n break;\r\n }\r\n } else if (!isNaN(property)) {\r\n anyScene[prop] = source;\r\n } else if (property.fromArray) {\r\n property.fromArray(source);\r\n }\r\n }\r\n }\r\n\r\n private static _ApplyPropertiesToEntity(deltaJSON: any, entity: any) {\r\n for (const prop in deltaJSON) {\r\n const source = deltaJSON[prop];\r\n const property = entity[prop];\r\n\r\n if (property === undefined) {\r\n continue;\r\n }\r\n\r\n if (!isNaN(property) || Array.isArray(property)) {\r\n entity[prop] = source;\r\n } else if (property.fromArray) {\r\n property.fromArray(source);\r\n } else if (typeof property === \"object\" && property !== null) {\r\n this._ApplyPropertiesToEntity(source, property);\r\n }\r\n }\r\n }\r\n\r\n private static _ApplyDeltaForEntity(sources: any[], scene: Scene, finder: (id: string) => any, addNew: (data: any) => void) {\r\n for (const source of sources) {\r\n // Update\r\n if (source.__state && source.__state.id !== undefined) {\r\n const targetEntity = finder(source.__state.id);\r\n\r\n if (targetEntity) {\r\n // This first pass applies properties that aren't on the serialization list\r\n this._ApplyPropertiesToEntity(source, targetEntity);\r\n // The second pass applies the serializable properties\r\n SerializationHelper.ParseProperties(source, targetEntity, scene, null);\r\n }\r\n } else if (source.__state && source.__state.deleteId !== undefined) {\r\n const target = finder(source.__state.deleteId);\r\n target?.dispose();\r\n } else {\r\n // New\r\n addNew(source);\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"sceneRecorder.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/sceneRecorder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { IDisposable, Scene } from \"../scene\";\r\nimport type { Nullable } from \"../types\";\r\nimport { SceneSerializer } from \"./sceneSerializer\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { Light } from \"../Lights/light\";\r\nimport { Camera } from \"../Cameras/camera\";\r\nimport { Skeleton } from \"../Bones/skeleton\";\r\nimport { Material } from \"../Materials/material\";\r\nimport { MultiMaterial } from \"../Materials/multiMaterial\";\r\nimport { TransformNode } from \"../Meshes/transformNode\";\r\nimport { ParticleSystem } from \"../Particles/particleSystem\";\r\nimport { MorphTargetManager } from \"../Morph/morphTargetManager\";\r\nimport { ShadowGenerator } from \"../Lights/Shadows/shadowGenerator\";\r\nimport { PostProcess } from \"../PostProcesses/postProcess\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport { SerializationHelper } from \"./decorators.serialization\";\r\n\r\n/**\r\n * Class used to record delta files between 2 scene states\r\n */\r\nexport class SceneRecorder implements IDisposable {\r\n private _trackedScene: Nullable<Scene> = null;\r\n private _savedJSON: any;\r\n\r\n /**\r\n * Track a given scene. This means the current scene state will be considered the original state\r\n * @param scene defines the scene to track\r\n */\r\n public track(scene: Scene) {\r\n this._trackedScene = scene;\r\n\r\n SerializationHelper.AllowLoadingUniqueId = true;\r\n this._savedJSON = SceneSerializer.Serialize(scene);\r\n SerializationHelper.AllowLoadingUniqueId = false;\r\n }\r\n\r\n /**\r\n * Get the delta between current state and original state\r\n * @returns a any containing the delta\r\n */\r\n public getDelta(): any {\r\n if (!this._trackedScene) {\r\n return null;\r\n }\r\n\r\n const currentForceSerializeBuffers = Texture.ForceSerializeBuffers;\r\n Texture.ForceSerializeBuffers = false;\r\n\r\n SerializationHelper.AllowLoadingUniqueId = true;\r\n const newJSON = SceneSerializer.Serialize(this._trackedScene);\r\n SerializationHelper.AllowLoadingUniqueId = false;\r\n const deltaJSON: any = {};\r\n\r\n for (const node in newJSON) {\r\n this._compareCollections(node, this._savedJSON[node], newJSON[node], deltaJSON);\r\n }\r\n\r\n Texture.ForceSerializeBuffers = currentForceSerializeBuffers;\r\n\r\n return deltaJSON;\r\n }\r\n\r\n private _compareArray(key: string, original: any[], current: any[], deltaJSON: any) {\r\n if (original.length === 0 && current.length === 0) {\r\n return true;\r\n }\r\n\r\n // Numbers?\r\n if ((original.length && !isNaN(original[0])) || (current.length && !isNaN(current[0]))) {\r\n if (original.length !== current.length) {\r\n return false;\r\n }\r\n\r\n if (original.length === 0) {\r\n return true;\r\n }\r\n for (let index = 0; index < original.length; index++) {\r\n if (original[index] !== current[index]) {\r\n deltaJSON[key] = current;\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // let's use uniqueId to find similar objects\r\n const originalUniqueIds: number[] = [];\r\n for (let index = 0; index < original.length; index++) {\r\n const originalObject = original[index];\r\n const originalUniqueId = originalObject.uniqueId;\r\n\r\n originalUniqueIds.push(originalUniqueId);\r\n // Look for that object in current state\r\n const currentObjects = current.filter((c) => c.uniqueId === originalUniqueId);\r\n if (currentObjects.length) {\r\n // We have a candidate\r\n const currentObject = currentObjects[0];\r\n\r\n const newObject: any = {};\r\n if (!this._compareObjects(originalObject, currentObject, newObject)) {\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n newObject.__state = {\r\n id: currentObject.id || currentObject.name,\r\n };\r\n deltaJSON[key].push(newObject);\r\n }\r\n } else {\r\n // We need to delete\r\n const newObject: any = {\r\n __state: {\r\n deleteId: originalObject.id || originalObject.name,\r\n },\r\n };\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n deltaJSON[key].push(newObject);\r\n }\r\n }\r\n\r\n // Checking for new objects\r\n for (let index = 0; index < current.length; index++) {\r\n const currentObject = current[index];\r\n const currentUniqueId = currentObject.uniqueId;\r\n\r\n // Object was added\r\n if (originalUniqueIds.indexOf(currentUniqueId) === -1) {\r\n if (!deltaJSON[key]) {\r\n deltaJSON[key] = [];\r\n }\r\n\r\n deltaJSON[key].push(currentObject);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _compareObjects(originalObjet: any, currentObject: any, deltaJSON: any) {\r\n let aDifferenceWasFound = false;\r\n\r\n for (const prop in originalObjet) {\r\n if (!Object.prototype.hasOwnProperty.call(originalObjet, prop)) {\r\n continue;\r\n }\r\n const originalValue = originalObjet[prop];\r\n const currentValue = currentObject[prop];\r\n let diffFound = false;\r\n\r\n if (Array.isArray(originalValue)) {\r\n diffFound = JSON.stringify(originalValue) !== JSON.stringify(currentValue);\r\n } else if (!isNaN(originalValue) || Object.prototype.toString.call(originalValue) == \"[object String]\") {\r\n diffFound = originalValue !== currentValue;\r\n } else if (typeof originalValue === \"object\" && typeof currentValue === \"object\") {\r\n const newObject = {};\r\n if (!this._compareObjects(originalValue, currentValue, newObject)) {\r\n deltaJSON[prop] = newObject;\r\n aDifferenceWasFound = true;\r\n }\r\n }\r\n\r\n if (diffFound) {\r\n aDifferenceWasFound = true;\r\n deltaJSON[prop] = currentValue;\r\n }\r\n }\r\n\r\n return !aDifferenceWasFound;\r\n }\r\n\r\n private _compareCollections(key: string, original: any[], current: any[], deltaJSON: any) {\r\n // Same ?\r\n if (original === current) {\r\n return;\r\n }\r\n\r\n if (original && current) {\r\n // Array?\r\n if (Array.isArray(original) && Array.isArray(current)) {\r\n if (this._compareArray(key, original, current, deltaJSON)) {\r\n return;\r\n }\r\n } else if (typeof original === \"object\" && typeof current === \"object\") {\r\n // Object\r\n const newObject = {};\r\n if (!this._compareObjects(original, current, newObject)) {\r\n deltaJSON[key] = newObject;\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the recorder.\r\n */\r\n public dispose() {\r\n this._trackedScene = null;\r\n this._savedJSON = null;\r\n }\r\n\r\n private static GetShadowGeneratorById(scene: Scene, id: string) {\r\n const allGenerators = scene.lights.map((l) => l.getShadowGenerators());\r\n\r\n for (const generators of allGenerators) {\r\n if (generators) {\r\n const iterator = generators.values();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const generator = key.value;\r\n if (generator && generator.id === id) {\r\n return generator;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Apply a given delta to a given scene\r\n * @param deltaJSON defines the JSON containing the delta\r\n * @param scene defines the scene to apply the delta to\r\n */\r\n public static ApplyDelta(deltaJSON: any | string, scene: Scene) {\r\n if (typeof deltaJSON === \"string\") {\r\n deltaJSON = JSON.parse(deltaJSON);\r\n }\r\n\r\n // Scene\r\n const anyScene = scene as any;\r\n for (const prop in deltaJSON) {\r\n const source = deltaJSON[prop];\r\n const property = anyScene[prop];\r\n\r\n if (Array.isArray(property) || prop === \"shadowGenerators\") {\r\n // Restore array\r\n switch (prop) {\r\n case \"cameras\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getCameraById.bind(scene), (data) => Camera.Parse(data, scene));\r\n break;\r\n case \"lights\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getLightById.bind(scene), (data) => Light.Parse(data, scene));\r\n break;\r\n case \"shadowGenerators\":\r\n this._ApplyDeltaForEntity(\r\n source,\r\n scene,\r\n (id) => this.GetShadowGeneratorById(scene, id),\r\n (data) => ShadowGenerator.Parse(data, scene)\r\n );\r\n break;\r\n case \"meshes\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMeshById.bind(scene), (data) => Mesh.Parse(data, scene, \"\"));\r\n break;\r\n case \"skeletons\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getSkeletonById.bind(scene), (data) => Skeleton.Parse(data, scene));\r\n break;\r\n case \"materials\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMaterialById.bind(scene), (data) => Material.Parse(data, scene, \"\"));\r\n break;\r\n case \"multiMaterials\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMaterialById.bind(scene), (data) => MultiMaterial.Parse(data, scene, \"\"));\r\n break;\r\n case \"transformNodes\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getTransformNodeById.bind(scene), (data) => TransformNode.Parse(data, scene, \"\"));\r\n break;\r\n case \"particleSystems\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getParticleSystemById.bind(scene), (data) => ParticleSystem.Parse(data, scene, \"\"));\r\n break;\r\n case \"morphTargetManagers\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getMorphTargetById.bind(scene), (data) => MorphTargetManager.Parse(data, scene));\r\n break;\r\n case \"postProcesses\":\r\n this._ApplyDeltaForEntity(source, scene, scene.getPostProcessByName.bind(scene), (data) => PostProcess.Parse(data, scene, \"\"));\r\n break;\r\n }\r\n } else if (!isNaN(property)) {\r\n anyScene[prop] = source;\r\n } else if (property.fromArray) {\r\n property.fromArray(source);\r\n }\r\n }\r\n }\r\n\r\n private static _ApplyPropertiesToEntity(deltaJSON: any, entity: any) {\r\n for (const prop in deltaJSON) {\r\n const source = deltaJSON[prop];\r\n const property = entity[prop];\r\n\r\n if (property === undefined) {\r\n continue;\r\n }\r\n\r\n if (!isNaN(property) || Array.isArray(property)) {\r\n entity[prop] = source;\r\n } else if (property.fromArray) {\r\n property.fromArray(source);\r\n } else if (typeof property === \"object\" && property !== null) {\r\n this._ApplyPropertiesToEntity(source, property);\r\n }\r\n }\r\n }\r\n\r\n private static _ApplyDeltaForEntity(sources: any[], scene: Scene, finder: (id: string) => any, addNew: (data: any) => void) {\r\n for (const source of sources) {\r\n // Update\r\n if (source.__state && source.__state.id !== undefined) {\r\n const targetEntity = finder(source.__state.id);\r\n\r\n if (targetEntity) {\r\n // This first pass applies properties that aren't on the serialization list\r\n this._ApplyPropertiesToEntity(source, targetEntity);\r\n // The second pass applies the serializable properties\r\n SerializationHelper.ParseProperties(source, targetEntity, scene, null);\r\n }\r\n } else if (source.__state && source.__state.deleteId !== undefined) {\r\n const target = finder(source.__state.deleteId);\r\n target?.dispose();\r\n } else {\r\n // New\r\n addNew(source);\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -38,3 +38,6 @@ export * from "./particleFresnelBlock.js";
|
|
|
38
38
|
export * from "./particleNumberMathBlock.js";
|
|
39
39
|
export * from "./particleVectorMathBlock.js";
|
|
40
40
|
export * from "./particleClampBlock.js";
|
|
41
|
+
export * from "./particleNLerpBlock.js";
|
|
42
|
+
export * from "./particleSmoothStepBlock.js";
|
|
43
|
+
export * from "./particleStepBlock.js";
|
|
@@ -39,4 +39,7 @@ export * from "./particleFresnelBlock.js";
|
|
|
39
39
|
export * from "./particleNumberMathBlock.js";
|
|
40
40
|
export * from "./particleVectorMathBlock.js";
|
|
41
41
|
export * from "./particleClampBlock.js";
|
|
42
|
+
export * from "./particleNLerpBlock.js";
|
|
43
|
+
export * from "./particleSmoothStepBlock.js";
|
|
44
|
+
export * from "./particleStepBlock.js";
|
|
42
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./systemBlock\";\r\nexport * from \"./particleFloatToIntBlock\";\r\nexport * from \"./particleInputBlock\";\r\nexport * from \"./particleSourceTextureBlock\";\r\nexport * from \"./particleMathBlock\";\r\nexport * from \"./particleLerpBlock\";\r\nexport * from \"./Update/updateDirectionBlock\";\r\nexport * from \"./Update/updatePositionBlock\";\r\nexport * from \"./Update/updateColorBlock\";\r\nexport * from \"./Update/updateScaleBlock\";\r\nexport * from \"./Update/updateSizeBlock\";\r\nexport * from \"./Update/updateAngleBlock\";\r\nexport * from \"./Update/updateAgeBlock\";\r\nexport * from \"./Update/basicPositionUpdateBlock\";\r\nexport * from \"./Update/basicSpriteUpdateBlock\";\r\nexport * from \"./Update/basicColorUpdateBlock\";\r\nexport * from \"./Update/updateSpriteCellIndexBlock\";\r\nexport * from \"./Update/updateFlowMapBlock\";\r\nexport * from \"./Update/updateNoiseBlock\";\r\nexport * from \"./Update/updateRemapBlock\";\r\nexport * from \"./Update/updateAttractorBlock\";\r\nexport * from \"./Update/alignAngleBlock\";\r\nexport * from \"./Emitters/index\";\r\nexport * from \"./particleGradientValueBlock\";\r\nexport * from \"./particleGradientBlock\";\r\nexport * from \"./particleConverterBlock\";\r\nexport * from \"./particleTrigonometryBlock\";\r\nexport * from \"./particleRandomBlock\";\r\nexport * from \"./particleDebugBlock\";\r\nexport * from \"./particleElbowBlock\";\r\nexport * from \"./Teleport/particleTeleportInBlock\";\r\nexport * from \"./Teleport/particleTeleportOutBlock\";\r\nexport * from \"./Conditions/particleConditionBlock\";\r\nexport * from \"./Triggers/particleTriggerBlock\";\r\nexport * from \"./particleLocalVariableBlock\";\r\nexport * from \"./particleVectorLengthBlock\";\r\nexport * from \"./particleFresnelBlock\";\r\nexport * from \"./particleNumberMathBlock\";\r\nexport * from \"./particleVectorMathBlock\";\r\nexport * from \"./particleClampBlock\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./systemBlock\";\r\nexport * from \"./particleFloatToIntBlock\";\r\nexport * from \"./particleInputBlock\";\r\nexport * from \"./particleSourceTextureBlock\";\r\nexport * from \"./particleMathBlock\";\r\nexport * from \"./particleLerpBlock\";\r\nexport * from \"./Update/updateDirectionBlock\";\r\nexport * from \"./Update/updatePositionBlock\";\r\nexport * from \"./Update/updateColorBlock\";\r\nexport * from \"./Update/updateScaleBlock\";\r\nexport * from \"./Update/updateSizeBlock\";\r\nexport * from \"./Update/updateAngleBlock\";\r\nexport * from \"./Update/updateAgeBlock\";\r\nexport * from \"./Update/basicPositionUpdateBlock\";\r\nexport * from \"./Update/basicSpriteUpdateBlock\";\r\nexport * from \"./Update/basicColorUpdateBlock\";\r\nexport * from \"./Update/updateSpriteCellIndexBlock\";\r\nexport * from \"./Update/updateFlowMapBlock\";\r\nexport * from \"./Update/updateNoiseBlock\";\r\nexport * from \"./Update/updateRemapBlock\";\r\nexport * from \"./Update/updateAttractorBlock\";\r\nexport * from \"./Update/alignAngleBlock\";\r\nexport * from \"./Emitters/index\";\r\nexport * from \"./particleGradientValueBlock\";\r\nexport * from \"./particleGradientBlock\";\r\nexport * from \"./particleConverterBlock\";\r\nexport * from \"./particleTrigonometryBlock\";\r\nexport * from \"./particleRandomBlock\";\r\nexport * from \"./particleDebugBlock\";\r\nexport * from \"./particleElbowBlock\";\r\nexport * from \"./Teleport/particleTeleportInBlock\";\r\nexport * from \"./Teleport/particleTeleportOutBlock\";\r\nexport * from \"./Conditions/particleConditionBlock\";\r\nexport * from \"./Triggers/particleTriggerBlock\";\r\nexport * from \"./particleLocalVariableBlock\";\r\nexport * from \"./particleVectorLengthBlock\";\r\nexport * from \"./particleFresnelBlock\";\r\nexport * from \"./particleNumberMathBlock\";\r\nexport * from \"./particleVectorMathBlock\";\r\nexport * from \"./particleClampBlock\";\r\nexport * from \"./particleNLerpBlock\";\r\nexport * from \"./particleSmoothStepBlock\";\r\nexport * from \"./particleStepBlock\";\r\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
2
|
+
import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
|
|
3
|
+
import type { NodeParticleBuildState } from "../nodeParticleBuildState.js";
|
|
4
|
+
/**
|
|
5
|
+
* Block used to normalize lerp between 2 values
|
|
6
|
+
*/
|
|
7
|
+
export declare class ParticleNLerpBlock extends NodeParticleBlock {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new ParticleNLerpBlock
|
|
10
|
+
* @param name defines the block name
|
|
11
|
+
*/
|
|
12
|
+
constructor(name: string);
|
|
13
|
+
/**
|
|
14
|
+
* Gets the current class name
|
|
15
|
+
* @returns the class name
|
|
16
|
+
*/
|
|
17
|
+
getClassName(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Gets the left operand input component
|
|
20
|
+
*/
|
|
21
|
+
get left(): NodeParticleConnectionPoint;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the right operand input component
|
|
24
|
+
*/
|
|
25
|
+
get right(): NodeParticleConnectionPoint;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the gradient operand input component
|
|
28
|
+
*/
|
|
29
|
+
get gradient(): NodeParticleConnectionPoint;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the output component
|
|
32
|
+
*/
|
|
33
|
+
get output(): NodeParticleConnectionPoint;
|
|
34
|
+
_build(_state: NodeParticleBuildState): this | undefined;
|
|
35
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Vector2, Vector3, Vector4 } from "../../../Maths/math.vector.js";
|
|
2
|
+
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
3
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
4
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
5
|
+
/**
|
|
6
|
+
* Block used to normalize lerp between 2 values
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
export class ParticleNLerpBlock extends NodeParticleBlock {
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new ParticleNLerpBlock
|
|
12
|
+
* @param name defines the block name
|
|
13
|
+
*/
|
|
14
|
+
constructor(name) {
|
|
15
|
+
super(name);
|
|
16
|
+
this.registerInput("left", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
17
|
+
this.registerInput("right", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
18
|
+
this.registerInput("gradient", NodeParticleBlockConnectionPointTypes.Float, true, 0, 0, 1);
|
|
19
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
20
|
+
this._outputs[0]._typeConnectionSource = this._inputs[0];
|
|
21
|
+
this._linkConnectionTypes(0, 1);
|
|
22
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);
|
|
23
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);
|
|
24
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets the current class name
|
|
28
|
+
* @returns the class name
|
|
29
|
+
*/
|
|
30
|
+
getClassName() {
|
|
31
|
+
return "ParticleNLerpBlock";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gets the left operand input component
|
|
35
|
+
*/
|
|
36
|
+
get left() {
|
|
37
|
+
return this._inputs[0];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the right operand input component
|
|
41
|
+
*/
|
|
42
|
+
get right() {
|
|
43
|
+
return this._inputs[1];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets the gradient operand input component
|
|
47
|
+
*/
|
|
48
|
+
get gradient() {
|
|
49
|
+
return this._inputs[2];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the output component
|
|
53
|
+
*/
|
|
54
|
+
get output() {
|
|
55
|
+
return this._outputs[0];
|
|
56
|
+
}
|
|
57
|
+
_build(_state) {
|
|
58
|
+
if (!this.left.isConnected || !this.right.isConnected) {
|
|
59
|
+
this.output._storedFunction = null;
|
|
60
|
+
this.output._storedValue = null;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const func = (gradient, left, right) => {
|
|
64
|
+
return (1 - gradient) * left + gradient * right;
|
|
65
|
+
};
|
|
66
|
+
this.output._storedFunction = (state) => {
|
|
67
|
+
const left = this.left.getConnectedValue(state);
|
|
68
|
+
const right = this.right.getConnectedValue(state);
|
|
69
|
+
const gradient = this.gradient.getConnectedValue(state);
|
|
70
|
+
switch (this.left.type) {
|
|
71
|
+
case NodeParticleBlockConnectionPointTypes.Int:
|
|
72
|
+
case NodeParticleBlockConnectionPointTypes.Float: {
|
|
73
|
+
return func(gradient, left, right); // NLerp is really lerp in that case
|
|
74
|
+
}
|
|
75
|
+
case NodeParticleBlockConnectionPointTypes.Vector2: {
|
|
76
|
+
const result = new Vector2(func(gradient, left.x, right.x), func(gradient, left.y, right.y));
|
|
77
|
+
result.normalize();
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
case NodeParticleBlockConnectionPointTypes.Vector3: {
|
|
81
|
+
const result = new Vector3(func(gradient, left.x, right.x), func(gradient, left.y, right.y), func(gradient, left.z, right.z));
|
|
82
|
+
result.normalize();
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
case NodeParticleBlockConnectionPointTypes.Color4: {
|
|
86
|
+
const result = new Vector4(func(gradient, left.r, right.r), func(gradient, left.g, right.g), func(gradient, left.b, right.b), func(gradient, left.a, right.a));
|
|
87
|
+
result.normalize();
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return 0;
|
|
92
|
+
};
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
RegisterClass("BABYLON.ParticleNLerpBlock", ParticleNLerpBlock);
|
|
97
|
+
//# sourceMappingURL=particleNLerpBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleNLerpBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleNLerpBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2, Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"../nodeParticleBuildState\";\r\n\r\n/**\r\n * Block used to normalize lerp between 2 values\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class ParticleNLerpBlock extends NodeParticleBlock {\r\n /**\r\n * Creates a new ParticleNLerpBlock\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(\"left\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"right\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"gradient\", NodeParticleBlockConnectionPointTypes.Float, true, 0, 0, 1);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._linkConnectionTypes(0, 1);\r\n\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);\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 \"ParticleNLerpBlock\";\r\n }\r\n\r\n /**\r\n * Gets the left operand input component\r\n */\r\n public get left(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the right operand input component\r\n */\r\n public get right(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\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[2];\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(_state: NodeParticleBuildState) {\r\n if (!this.left.isConnected || !this.right.isConnected) {\r\n this.output._storedFunction = null;\r\n this.output._storedValue = null;\r\n return;\r\n }\r\n\r\n const func = (gradient: number, left: number, right: number) => {\r\n return (1 - gradient) * left + gradient * right;\r\n };\r\n\r\n this.output._storedFunction = (state) => {\r\n const left = this.left.getConnectedValue(state);\r\n const right = this.right.getConnectedValue(state);\r\n const gradient = this.gradient.getConnectedValue(state);\r\n switch (this.left.type) {\r\n case NodeParticleBlockConnectionPointTypes.Int:\r\n case NodeParticleBlockConnectionPointTypes.Float: {\r\n return func(gradient, left, right); // NLerp is really lerp in that case\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector2: {\r\n const result = new Vector2(func(gradient, left.x, right.x), func(gradient, left.y, right.y));\r\n result.normalize();\r\n\r\n return result;\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector3: {\r\n const result = new Vector3(func(gradient, left.x, right.x), func(gradient, left.y, right.y), func(gradient, left.z, right.z));\r\n result.normalize();\r\n\r\n return result;\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Color4: {\r\n const result = new Vector4(func(gradient, left.r, right.r), func(gradient, left.g, right.g), func(gradient, left.b, right.b), func(gradient, left.a, right.a));\r\n result.normalize();\r\n\r\n return result;\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleNLerpBlock\", ParticleNLerpBlock);\r\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
2
|
+
import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
|
|
3
|
+
/**
|
|
4
|
+
* Block used to smooth step a value
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParticleSmoothStepBlock extends NodeParticleBlock {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new ParticleSmoothStepBlock
|
|
9
|
+
* @param name defines the block name
|
|
10
|
+
*/
|
|
11
|
+
constructor(name: string);
|
|
12
|
+
/**
|
|
13
|
+
* Gets the current class name
|
|
14
|
+
* @returns the class name
|
|
15
|
+
*/
|
|
16
|
+
getClassName(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Gets the value operand input component
|
|
19
|
+
*/
|
|
20
|
+
get value(): NodeParticleConnectionPoint;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the first edge operand input component
|
|
23
|
+
*/
|
|
24
|
+
get edge0(): NodeParticleConnectionPoint;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the second edge operand input component
|
|
27
|
+
*/
|
|
28
|
+
get edge1(): NodeParticleConnectionPoint;
|
|
29
|
+
/**
|
|
30
|
+
* Gets the output component
|
|
31
|
+
*/
|
|
32
|
+
get output(): NodeParticleConnectionPoint;
|
|
33
|
+
_build(): this | undefined;
|
|
34
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Vector2, Vector3, Vector4 } from "../../../Maths/math.vector.js";
|
|
2
|
+
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
3
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
4
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
5
|
+
/**
|
|
6
|
+
* Block used to smooth step a value
|
|
7
|
+
*/
|
|
8
|
+
export class ParticleSmoothStepBlock extends NodeParticleBlock {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new ParticleSmoothStepBlock
|
|
11
|
+
* @param name defines the block name
|
|
12
|
+
*/
|
|
13
|
+
constructor(name) {
|
|
14
|
+
super(name);
|
|
15
|
+
this.registerInput("value", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
16
|
+
this.registerInput("edge0", NodeParticleBlockConnectionPointTypes.Float, true, 0);
|
|
17
|
+
this.registerInput("edge1", NodeParticleBlockConnectionPointTypes.Float, true, 1);
|
|
18
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
19
|
+
this._outputs[0]._typeConnectionSource = this._inputs[0];
|
|
20
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);
|
|
21
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);
|
|
22
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gets the current class name
|
|
26
|
+
* @returns the class name
|
|
27
|
+
*/
|
|
28
|
+
getClassName() {
|
|
29
|
+
return "ParticleSmoothStepBlock";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets the value operand input component
|
|
33
|
+
*/
|
|
34
|
+
get value() {
|
|
35
|
+
return this._inputs[0];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the first edge operand input component
|
|
39
|
+
*/
|
|
40
|
+
get edge0() {
|
|
41
|
+
return this._inputs[1];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets the second edge operand input component
|
|
45
|
+
*/
|
|
46
|
+
get edge1() {
|
|
47
|
+
return this._inputs[2];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Gets the output component
|
|
51
|
+
*/
|
|
52
|
+
get output() {
|
|
53
|
+
return this._outputs[0];
|
|
54
|
+
}
|
|
55
|
+
_build() {
|
|
56
|
+
if (!this.value.isConnected) {
|
|
57
|
+
this.output._storedFunction = null;
|
|
58
|
+
this.output._storedValue = null;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const func = (value, edge0, edge1) => {
|
|
62
|
+
const x = Math.max(0, Math.min((value - edge0) / (edge1 - edge0), 1));
|
|
63
|
+
// Smoothstep formula: 3x^2 - 2x^3
|
|
64
|
+
return x * x * (3 - 2 * x);
|
|
65
|
+
};
|
|
66
|
+
this.output._storedFunction = (state) => {
|
|
67
|
+
const source = this.value.getConnectedValue(state);
|
|
68
|
+
const edge0 = this.edge0.getConnectedValue(state);
|
|
69
|
+
const edge1 = this.edge1.getConnectedValue(state);
|
|
70
|
+
switch (this.value.type) {
|
|
71
|
+
case NodeParticleBlockConnectionPointTypes.Int:
|
|
72
|
+
case NodeParticleBlockConnectionPointTypes.Float: {
|
|
73
|
+
return func(source, edge0, edge1);
|
|
74
|
+
}
|
|
75
|
+
case NodeParticleBlockConnectionPointTypes.Vector2: {
|
|
76
|
+
return new Vector2(func(source.x, edge0, edge1), func(source.y, edge0, edge1));
|
|
77
|
+
}
|
|
78
|
+
case NodeParticleBlockConnectionPointTypes.Vector3: {
|
|
79
|
+
return new Vector3(func(source.x, edge0, edge1), func(source.y, edge0, edge1), func(source.z, edge0, edge1));
|
|
80
|
+
}
|
|
81
|
+
case NodeParticleBlockConnectionPointTypes.Color4: {
|
|
82
|
+
return new Vector4(func(source.r, edge0, edge1), func(source.g, edge0, edge1), func(source.b, edge0, edge1), func(source.a, edge0, edge1));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return 0;
|
|
86
|
+
};
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
RegisterClass("BABYLON.ParticleSmoothStepBlock", ParticleSmoothStepBlock);
|
|
91
|
+
//# sourceMappingURL=particleSmoothStepBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleSmoothStepBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleSmoothStepBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2, Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\n\r\n/**\r\n * Block used to smooth step a value\r\n */\r\nexport class ParticleSmoothStepBlock extends NodeParticleBlock {\r\n /**\r\n * Creates a new ParticleSmoothStepBlock\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.registerInput(\"edge0\", NodeParticleBlockConnectionPointTypes.Float, true, 0);\r\n this.registerInput(\"edge1\", NodeParticleBlockConnectionPointTypes.Float, true, 1);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);\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 \"ParticleSmoothStepBlock\";\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 first edge operand input component\r\n */\r\n public get edge0(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the second edge operand input component\r\n */\r\n public get edge1(): NodeParticleConnectionPoint {\r\n return this._inputs[2];\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 if (!this.value.isConnected) {\r\n this.output._storedFunction = null;\r\n this.output._storedValue = null;\r\n return;\r\n }\r\n\r\n const func = (value: number, edge0: number, edge1: number) => {\r\n const x = Math.max(0, Math.min((value - edge0) / (edge1 - edge0), 1));\r\n\r\n // Smoothstep formula: 3x^2 - 2x^3\r\n return x * x * (3 - 2 * x);\r\n };\r\n\r\n this.output._storedFunction = (state) => {\r\n const source = this.value.getConnectedValue(state);\r\n const edge0 = this.edge0.getConnectedValue(state);\r\n const edge1 = this.edge1.getConnectedValue(state);\r\n switch (this.value.type) {\r\n case NodeParticleBlockConnectionPointTypes.Int:\r\n case NodeParticleBlockConnectionPointTypes.Float: {\r\n return func(source, edge0, edge1);\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector2: {\r\n return new Vector2(func(source.x, edge0, edge1), func(source.y, edge0, edge1));\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector3: {\r\n return new Vector3(func(source.x, edge0, edge1), func(source.y, edge0, edge1), func(source.z, edge0, edge1));\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Color4: {\r\n return new Vector4(func(source.r, edge0, edge1), func(source.g, edge0, edge1), func(source.b, edge0, edge1), func(source.a, edge0, edge1));\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleSmoothStepBlock\", ParticleSmoothStepBlock);\r\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
2
|
+
import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
|
|
3
|
+
/**
|
|
4
|
+
* Block used to step a value
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParticleStepBlock extends NodeParticleBlock {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new ParticleStepBlock
|
|
9
|
+
* @param name defines the block name
|
|
10
|
+
*/
|
|
11
|
+
constructor(name: string);
|
|
12
|
+
/**
|
|
13
|
+
* Gets the current class name
|
|
14
|
+
* @returns the class name
|
|
15
|
+
*/
|
|
16
|
+
getClassName(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Gets the value operand input component
|
|
19
|
+
*/
|
|
20
|
+
get value(): NodeParticleConnectionPoint;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the edge operand input component
|
|
23
|
+
*/
|
|
24
|
+
get edge(): NodeParticleConnectionPoint;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the output component
|
|
27
|
+
*/
|
|
28
|
+
get output(): NodeParticleConnectionPoint;
|
|
29
|
+
_build(): this | undefined;
|
|
30
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Vector2, Vector3, Vector4 } from "../../../Maths/math.vector.js";
|
|
2
|
+
import { RegisterClass } from "../../../Misc/typeStore.js";
|
|
3
|
+
import { NodeParticleBlock } from "../nodeParticleBlock.js";
|
|
4
|
+
import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
|
|
5
|
+
/**
|
|
6
|
+
* Block used to step a value
|
|
7
|
+
*/
|
|
8
|
+
export class ParticleStepBlock extends NodeParticleBlock {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new ParticleStepBlock
|
|
11
|
+
* @param name defines the block name
|
|
12
|
+
*/
|
|
13
|
+
constructor(name) {
|
|
14
|
+
super(name);
|
|
15
|
+
this.registerInput("value", NodeParticleBlockConnectionPointTypes.AutoDetect);
|
|
16
|
+
this.registerInput("edge", NodeParticleBlockConnectionPointTypes.Float, true, 0);
|
|
17
|
+
this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
|
|
18
|
+
this._outputs[0]._typeConnectionSource = this._inputs[0];
|
|
19
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);
|
|
20
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);
|
|
21
|
+
this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets the current class name
|
|
25
|
+
* @returns the class name
|
|
26
|
+
*/
|
|
27
|
+
getClassName() {
|
|
28
|
+
return "ParticleStepBlock";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets the value operand input component
|
|
32
|
+
*/
|
|
33
|
+
get value() {
|
|
34
|
+
return this._inputs[0];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets the edge operand input component
|
|
38
|
+
*/
|
|
39
|
+
get edge() {
|
|
40
|
+
return this._inputs[1];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Gets the output component
|
|
44
|
+
*/
|
|
45
|
+
get output() {
|
|
46
|
+
return this._outputs[0];
|
|
47
|
+
}
|
|
48
|
+
_build() {
|
|
49
|
+
if (!this.value.isConnected) {
|
|
50
|
+
this.output._storedFunction = null;
|
|
51
|
+
this.output._storedValue = null;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const func = (value, edge) => {
|
|
55
|
+
if (value < edge) {
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
return 1;
|
|
59
|
+
};
|
|
60
|
+
this.output._storedFunction = (state) => {
|
|
61
|
+
const source = this.value.getConnectedValue(state);
|
|
62
|
+
const edge = this.edge.getConnectedValue(state);
|
|
63
|
+
switch (this.value.type) {
|
|
64
|
+
case NodeParticleBlockConnectionPointTypes.Int:
|
|
65
|
+
case NodeParticleBlockConnectionPointTypes.Float: {
|
|
66
|
+
return func(source, edge);
|
|
67
|
+
}
|
|
68
|
+
case NodeParticleBlockConnectionPointTypes.Vector2: {
|
|
69
|
+
return new Vector2(func(source.x, edge), func(source.y, edge));
|
|
70
|
+
}
|
|
71
|
+
case NodeParticleBlockConnectionPointTypes.Vector3: {
|
|
72
|
+
return new Vector3(func(source.x, edge), func(source.y, edge), func(source.z, edge));
|
|
73
|
+
}
|
|
74
|
+
case NodeParticleBlockConnectionPointTypes.Color4: {
|
|
75
|
+
return new Vector4(func(source.r, edge), func(source.g, edge), func(source.b, edge), func(source.a, edge));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return 0;
|
|
79
|
+
};
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
RegisterClass("BABYLON.ParticleStepBlock", ParticleStepBlock);
|
|
84
|
+
//# sourceMappingURL=particleStepBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleStepBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleStepBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector2, Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\n\r\n/**\r\n * Block used to step a value\r\n */\r\nexport class ParticleStepBlock extends NodeParticleBlock {\r\n /**\r\n * Creates a new ParticleStepBlock\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.registerInput(\"edge\", NodeParticleBlockConnectionPointTypes.Float, true, 0);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Particle);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeParticleBlockConnectionPointTypes.Texture);\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 \"ParticleStepBlock\";\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 edge operand input component\r\n */\r\n public get edge(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\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 if (!this.value.isConnected) {\r\n this.output._storedFunction = null;\r\n this.output._storedValue = null;\r\n return;\r\n }\r\n const func = (value: number, edge: number) => {\r\n if (value < edge) {\r\n return 0;\r\n }\r\n\r\n return 1;\r\n };\r\n\r\n this.output._storedFunction = (state) => {\r\n const source = this.value.getConnectedValue(state);\r\n const edge = this.edge.getConnectedValue(state);\r\n switch (this.value.type) {\r\n case NodeParticleBlockConnectionPointTypes.Int:\r\n case NodeParticleBlockConnectionPointTypes.Float: {\r\n return func(source, edge);\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector2: {\r\n return new Vector2(func(source.x, edge), func(source.y, edge));\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Vector3: {\r\n return new Vector3(func(source.x, edge), func(source.y, edge), func(source.z, edge));\r\n }\r\n case NodeParticleBlockConnectionPointTypes.Color4: {\r\n return new Vector4(func(source.r, edge), func(source.g, edge), func(source.b, edge), func(source.a, edge));\r\n }\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleStepBlock\", ParticleStepBlock);\r\n"]}
|