1 |
- {"ast":null,"code":"import { Vector3 } from \"../../Maths/math.vector.js\";\nimport { RandomRange } from \"../../Maths/math.scalar.functions.js\";\nimport { DeepCopier } from \"../../Misc/deepCopier.js\";\n/**\n * Particle emitter emitting particles from the inside of a sphere.\n * It emits the particles alongside the sphere radius. The emission direction might be randomized.\n */\nexport class SphereParticleEmitter {\n /**\n * Creates a new instance SphereParticleEmitter\n * @param radius the radius of the emission sphere (1 by default)\n * @param radiusRange the range of the emission sphere [0-1] 0 Surface only, 1 Entire Radius (1 by default)\n * @param directionRandomizer defines how much to randomize the particle direction [0-1]\n */\n constructor(\n /**\n * [1] The radius of the emission sphere.\n */\n radius = 1,\n /**\n * [1] The range of emission [0-1] 0 Surface only, 1 Entire Radius.\n */\n radiusRange = 1,\n /**\n * [0] How much to randomize the particle direction [0-1].\n */\n directionRandomizer = 0) {\n this.radius = radius;\n this.radiusRange = radiusRange;\n this.directionRandomizer = directionRandomizer;\n }\n /**\n * Called by the particle System when the direction is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param directionToUpdate is the direction vector to update with the result\n * @param particle is the particle we are computed the direction for\n * @param isLocal defines if the direction should be set in local space\n */\n startDirectionFunction(worldMatrix, directionToUpdate, particle, isLocal) {\n const direction = particle.position.subtract(worldMatrix.getTranslation()).normalize();\n const randX = RandomRange(0, this.directionRandomizer);\n const randY = RandomRange(0, this.directionRandomizer);\n const randZ = RandomRange(0, this.directionRandomizer);\n direction.x += randX;\n direction.y += randY;\n direction.z += randZ;\n direction.normalize();\n if (isLocal) {\n directionToUpdate.copyFrom(direction);\n return;\n }\n Vector3.TransformNormalFromFloatsToRef(direction.x, direction.y, direction.z, worldMatrix, directionToUpdate);\n }\n /**\n * Called by the particle System when the position is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param positionToUpdate is the position vector to update with the result\n * @param particle is the particle we are computed the position for\n * @param isLocal defines if the position should be set in local space\n */\n startPositionFunction(worldMatrix, positionToUpdate, particle, isLocal) {\n const randRadius = this.radius - RandomRange(0, this.radius * this.radiusRange);\n const v = RandomRange(0, 1.0);\n const phi = RandomRange(0, 2 * Math.PI);\n const theta = Math.acos(2 * v - 1);\n const randX = randRadius * Math.cos(phi) * Math.sin(theta);\n const randY = randRadius * Math.cos(theta);\n const randZ = randRadius * Math.sin(phi) * Math.sin(theta);\n if (isLocal) {\n positionToUpdate.copyFromFloats(randX, randY, randZ);\n return;\n }\n Vector3.TransformCoordinatesFromFloatsToRef(randX, randY, randZ, worldMatrix, positionToUpdate);\n }\n /**\n * Clones the current emitter and returns a copy of it\n * @returns the new emitter\n */\n clone() {\n const newOne = new SphereParticleEmitter(this.radius, this.directionRandomizer);\n DeepCopier.DeepCopy(this, newOne);\n return newOne;\n }\n /**\n * Called by the GPUParticleSystem to setup the update shader\n * @param uboOrEffect defines the update shader\n */\n applyToShader(uboOrEffect) {\n uboOrEffect.setFloat(\"radius\", this.radius);\n uboOrEffect.setFloat(\"radiusRange\", this.radiusRange);\n uboOrEffect.setFloat(\"directionRandomizer\", this.directionRandomizer);\n }\n /**\n * Creates the structure of the ubo for this particle emitter\n * @param ubo ubo to create the structure for\n */\n buildUniformLayout(ubo) {\n ubo.addUniform(\"radius\", 1);\n ubo.addUniform(\"radiusRange\", 1);\n ubo.addUniform(\"directionRandomizer\", 1);\n }\n /**\n * Returns a string to use to update the GPU particles update shader\n * @returns a string containing the defines string\n */\n getEffectDefines() {\n return \"#define SPHEREEMITTER\";\n }\n /**\n * Returns the string \"SphereParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"SphereParticleEmitter\";\n }\n /**\n * Serializes the particle system to a JSON object.\n * @returns the JSON object\n */\n serialize() {\n const serializationObject = {};\n serializationObject.type = this.getClassName();\n serializationObject.radius = this.radius;\n serializationObject.radiusRange = this.radiusRange;\n serializationObject.directionRandomizer = this.directionRandomizer;\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n */\n parse(serializationObject) {\n this.radius = serializationObject.radius;\n this.radiusRange = serializationObject.radiusRange;\n this.directionRandomizer = serializationObject.directionRandomizer;\n }\n}\n/**\n * Particle emitter emitting particles from the inside of a sphere.\n * It emits the particles randomly between two vectors.\n */\nexport class SphereDirectedParticleEmitter extends SphereParticleEmitter {\n /**\n * Creates a new instance SphereDirectedParticleEmitter\n * @param radius the radius of the emission sphere (1 by default)\n * @param direction1 the min limit of the emission direction (up vector by default)\n * @param direction2 the max limit of the emission direction (up vector by default)\n */\n constructor(radius = 1,\n /**\n * [Up vector] The min limit of the emission direction.\n */\n direction1 = new Vector3(0, 1, 0),\n /**\n * [Up vector] The max limit of the emission direction.\n */\n direction2 = new Vector3(0, 1, 0)) {\n super(radius);\n this.direction1 = direction1;\n this.direction2 = direction2;\n }\n /**\n * Called by the particle System when the direction is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param directionToUpdate is the direction vector to update with the result\n */\n startDirectionFunction(worldMatrix, directionToUpdate) {\n const randX = RandomRange(this.direction1.x, this.direction2.x);\n const randY = RandomRange(this.direction1.y, this.direction2.y);\n const randZ = RandomRange(this.direction1.z, this.direction2.z);\n Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, worldMatrix, directionToUpdate);\n }\n /**\n * Clones the current emitter and returns a copy of it\n * @returns the new emitter\n */\n clone() {\n const newOne = new SphereDirectedParticleEmitter(this.radius, this.direction1, this.direction2);\n DeepCopier.DeepCopy(this, newOne);\n return newOne;\n }\n /**\n * Called by the GPUParticleSystem to setup the update shader\n * @param uboOrEffect defines the update shader\n */\n applyToShader(uboOrEffect) {\n uboOrEffect.setFloat(\"radius\", this.radius);\n uboOrEffect.setFloat(\"radiusRange\", this.radiusRange);\n uboOrEffect.setVector3(\"direction1\", this.direction1);\n uboOrEffect.setVector3(\"direction2\", this.direction2);\n }\n /**\n * Creates the structure of the ubo for this particle emitter\n * @param ubo ubo to create the structure for\n */\n buildUniformLayout(ubo) {\n ubo.addUniform(\"radius\", 1);\n ubo.addUniform(\"radiusRange\", 1);\n ubo.addUniform(\"direction1\", 3);\n ubo.addUniform(\"direction2\", 3);\n }\n /**\n * Returns a string to use to update the GPU particles update shader\n * @returns a string containing the defines string\n */\n getEffectDefines() {\n return \"#define SPHEREEMITTER\\n#define DIRECTEDSPHEREEMITTER\";\n }\n /**\n * Returns the string \"SphereDirectedParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"SphereDirectedParticleEmitter\";\n }\n /**\n * Serializes the particle system to a JSON object.\n * @returns the JSON object\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.direction1 = this.direction1.asArray();\n serializationObject.direction2 = this.direction2.asArray();\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n */\n parse(serializationObject) {\n super.parse(serializationObject);\n this.direction1.copyFrom(serializationObject.direction1);\n this.direction2.copyFrom(serializationObject.direction2);\n }\n}","map":{"version":3,"names":["Vector3","RandomRange","DeepCopier","SphereParticleEmitter","constructor","radius","radiusRange","directionRandomizer","startDirectionFunction","worldMatrix","directionToUpdate","particle","isLocal","direction","position","subtract","getTranslation","normalize","randX","randY","randZ","x","y","z","copyFrom","TransformNormalFromFloatsToRef","startPositionFunction","positionToUpdate","randRadius","v","phi","Math","PI","theta","acos","cos","sin","copyFromFloats","TransformCoordinatesFromFloatsToRef","clone","newOne","DeepCopy","applyToShader","uboOrEffect","setFloat","buildUniformLayout","ubo","addUniform","getEffectDefines","getClassName","serialize","serializationObject","type","parse","SphereDirectedParticleEmitter","direction1","direction2","setVector3","asArray"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Particles/EmitterTypes/sphereParticleEmitter.js"],"sourcesContent":["import { Vector3 } from \"../../Maths/math.vector.js\";\nimport { RandomRange } from \"../../Maths/math.scalar.functions.js\";\nimport { DeepCopier } from \"../../Misc/deepCopier.js\";\n/**\n * Particle emitter emitting particles from the inside of a sphere.\n * It emits the particles alongside the sphere radius. The emission direction might be randomized.\n */\nexport class SphereParticleEmitter {\n /**\n * Creates a new instance SphereParticleEmitter\n * @param radius the radius of the emission sphere (1 by default)\n * @param radiusRange the range of the emission sphere [0-1] 0 Surface only, 1 Entire Radius (1 by default)\n * @param directionRandomizer defines how much to randomize the particle direction [0-1]\n */\n constructor(\n /**\n * [1] The radius of the emission sphere.\n */\n radius = 1, \n /**\n * [1] The range of emission [0-1] 0 Surface only, 1 Entire Radius.\n */\n radiusRange = 1, \n /**\n * [0] How much to randomize the particle direction [0-1].\n */\n directionRandomizer = 0) {\n this.radius = radius;\n this.radiusRange = radiusRange;\n this.directionRandomizer = directionRandomizer;\n }\n /**\n * Called by the particle System when the direction is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param directionToUpdate is the direction vector to update with the result\n * @param particle is the particle we are computed the direction for\n * @param isLocal defines if the direction should be set in local space\n */\n startDirectionFunction(worldMatrix, directionToUpdate, particle, isLocal) {\n const direction = particle.position.subtract(worldMatrix.getTranslation()).normalize();\n const randX = RandomRange(0, this.directionRandomizer);\n const randY = RandomRange(0, this.directionRandomizer);\n const randZ = RandomRange(0, this.directionRandomizer);\n direction.x += randX;\n direction.y += randY;\n direction.z += randZ;\n direction.normalize();\n if (isLocal) {\n directionToUpdate.copyFrom(direction);\n return;\n }\n Vector3.TransformNormalFromFloatsToRef(direction.x, direction.y, direction.z, worldMatrix, directionToUpdate);\n }\n /**\n * Called by the particle System when the position is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param positionToUpdate is the position vector to update with the result\n * @param particle is the particle we are computed the position for\n * @param isLocal defines if the position should be set in local space\n */\n startPositionFunction(worldMatrix, positionToUpdate, particle, isLocal) {\n const randRadius = this.radius - RandomRange(0, this.radius * this.radiusRange);\n const v = RandomRange(0, 1.0);\n const phi = RandomRange(0, 2 * Math.PI);\n const theta = Math.acos(2 * v - 1);\n const randX = randRadius * Math.cos(phi) * Math.sin(theta);\n const randY = randRadius * Math.cos(theta);\n const randZ = randRadius * Math.sin(phi) * Math.sin(theta);\n if (isLocal) {\n positionToUpdate.copyFromFloats(randX, randY, randZ);\n return;\n }\n Vector3.TransformCoordinatesFromFloatsToRef(randX, randY, randZ, worldMatrix, positionToUpdate);\n }\n /**\n * Clones the current emitter and returns a copy of it\n * @returns the new emitter\n */\n clone() {\n const newOne = new SphereParticleEmitter(this.radius, this.directionRandomizer);\n DeepCopier.DeepCopy(this, newOne);\n return newOne;\n }\n /**\n * Called by the GPUParticleSystem to setup the update shader\n * @param uboOrEffect defines the update shader\n */\n applyToShader(uboOrEffect) {\n uboOrEffect.setFloat(\"radius\", this.radius);\n uboOrEffect.setFloat(\"radiusRange\", this.radiusRange);\n uboOrEffect.setFloat(\"directionRandomizer\", this.directionRandomizer);\n }\n /**\n * Creates the structure of the ubo for this particle emitter\n * @param ubo ubo to create the structure for\n */\n buildUniformLayout(ubo) {\n ubo.addUniform(\"radius\", 1);\n ubo.addUniform(\"radiusRange\", 1);\n ubo.addUniform(\"directionRandomizer\", 1);\n }\n /**\n * Returns a string to use to update the GPU particles update shader\n * @returns a string containing the defines string\n */\n getEffectDefines() {\n return \"#define SPHEREEMITTER\";\n }\n /**\n * Returns the string \"SphereParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"SphereParticleEmitter\";\n }\n /**\n * Serializes the particle system to a JSON object.\n * @returns the JSON object\n */\n serialize() {\n const serializationObject = {};\n serializationObject.type = this.getClassName();\n serializationObject.radius = this.radius;\n serializationObject.radiusRange = this.radiusRange;\n serializationObject.directionRandomizer = this.directionRandomizer;\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n */\n parse(serializationObject) {\n this.radius = serializationObject.radius;\n this.radiusRange = serializationObject.radiusRange;\n this.directionRandomizer = serializationObject.directionRandomizer;\n }\n}\n/**\n * Particle emitter emitting particles from the inside of a sphere.\n * It emits the particles randomly between two vectors.\n */\nexport class SphereDirectedParticleEmitter extends SphereParticleEmitter {\n /**\n * Creates a new instance SphereDirectedParticleEmitter\n * @param radius the radius of the emission sphere (1 by default)\n * @param direction1 the min limit of the emission direction (up vector by default)\n * @param direction2 the max limit of the emission direction (up vector by default)\n */\n constructor(radius = 1, \n /**\n * [Up vector] The min limit of the emission direction.\n */\n direction1 = new Vector3(0, 1, 0), \n /**\n * [Up vector] The max limit of the emission direction.\n */\n direction2 = new Vector3(0, 1, 0)) {\n super(radius);\n this.direction1 = direction1;\n this.direction2 = direction2;\n }\n /**\n * Called by the particle System when the direction is computed for the created particle.\n * @param worldMatrix is the world matrix of the particle system\n * @param directionToUpdate is the direction vector to update with the result\n */\n startDirectionFunction(worldMatrix, directionToUpdate) {\n const randX = RandomRange(this.direction1.x, this.direction2.x);\n const randY = RandomRange(this.direction1.y, this.direction2.y);\n const randZ = RandomRange(this.direction1.z, this.direction2.z);\n Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, worldMatrix, directionToUpdate);\n }\n /**\n * Clones the current emitter and returns a copy of it\n * @returns the new emitter\n */\n clone() {\n const newOne = new SphereDirectedParticleEmitter(this.radius, this.direction1, this.direction2);\n DeepCopier.DeepCopy(this, newOne);\n return newOne;\n }\n /**\n * Called by the GPUParticleSystem to setup the update shader\n * @param uboOrEffect defines the update shader\n */\n applyToShader(uboOrEffect) {\n uboOrEffect.setFloat(\"radius\", this.radius);\n uboOrEffect.setFloat(\"radiusRange\", this.radiusRange);\n uboOrEffect.setVector3(\"direction1\", this.direction1);\n uboOrEffect.setVector3(\"direction2\", this.direction2);\n }\n /**\n * Creates the structure of the ubo for this particle emitter\n * @param ubo ubo to create the structure for\n */\n buildUniformLayout(ubo) {\n ubo.addUniform(\"radius\", 1);\n ubo.addUniform(\"radiusRange\", 1);\n ubo.addUniform(\"direction1\", 3);\n ubo.addUniform(\"direction2\", 3);\n }\n /**\n * Returns a string to use to update the GPU particles update shader\n * @returns a string containing the defines string\n */\n getEffectDefines() {\n return \"#define SPHEREEMITTER\\n#define DIRECTEDSPHEREEMITTER\";\n }\n /**\n * Returns the string \"SphereDirectedParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"SphereDirectedParticleEmitter\";\n }\n /**\n * Serializes the particle system to a JSON object.\n * @returns the JSON object\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.direction1 = this.direction1.asArray();\n serializationObject.direction2 = this.direction2.asArray();\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n */\n parse(serializationObject) {\n super.parse(serializationObject);\n this.direction1.copyFrom(serializationObject.direction1);\n this.direction2.copyFrom(serializationObject.direction2);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|