a8038131ccdb191a7479f1d16e2b31c0e4d3a915ffe4b2ec3f0c5475f72f8214.json 22 KB

1
  1. {"ast":null,"code":"import { DeepCopier } from \"../../Misc/deepCopier.js\";\nimport { Vector3, TmpVectors } from \"../../Maths/math.vector.js\";\nimport { RandomRange } from \"../../Maths/math.scalar.functions.js\";\nimport { VertexBuffer } from \"../../Buffers/buffer.js\";\n/**\n * Particle emitter emitting particles from the inside of a box.\n * It emits the particles randomly between 2 given directions.\n */\nexport class MeshParticleEmitter {\n /** Defines the mesh to use as source */\n get mesh() {\n return this._mesh;\n }\n set mesh(value) {\n if (this._mesh === value) {\n return;\n }\n this._mesh = value;\n if (value) {\n this._indices = value.getIndices();\n this._positions = value.getVerticesData(VertexBuffer.PositionKind);\n this._normals = value.getVerticesData(VertexBuffer.NormalKind);\n } else {\n this._indices = null;\n this._positions = null;\n this._normals = null;\n }\n }\n /**\n * Creates a new instance MeshParticleEmitter\n * @param mesh defines the mesh to use as source\n */\n constructor(mesh = null) {\n this._indices = null;\n this._positions = null;\n this._normals = null;\n this._storedNormal = Vector3.Zero();\n this._mesh = null;\n /**\n * Random direction of each particle after it has been emitted, between direction1 and direction2 vectors.\n */\n this.direction1 = new Vector3(0, 1.0, 0);\n /**\n * Random direction of each particle after it has been emitted, between direction1 and direction2 vectors.\n */\n this.direction2 = new Vector3(0, 1.0, 0);\n /**\n * Gets or sets a boolean indicating that particle directions must be built from mesh face normals\n */\n this.useMeshNormalsForDirection = true;\n this.mesh = mesh;\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 if (this.useMeshNormalsForDirection && this._normals) {\n Vector3.TransformNormalToRef(this._storedNormal, worldMatrix, directionToUpdate);\n return;\n }\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 if (isLocal) {\n directionToUpdate.copyFromFloats(randX, randY, randZ);\n return;\n }\n Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, 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 if (!this._indices || !this._positions) {\n return;\n }\n const randomFaceIndex = 3 * Math.random() * (this._indices.length / 3) | 0;\n const bu = Math.random();\n const bv = Math.random() * (1.0 - bu);\n const bw = 1.0 - bu - bv;\n const faceIndexA = this._indices[randomFaceIndex];\n const faceIndexB = this._indices[randomFaceIndex + 1];\n const faceIndexC = this._indices[randomFaceIndex + 2];\n const vertexA = TmpVectors.Vector3[0];\n const vertexB = TmpVectors.Vector3[1];\n const vertexC = TmpVectors.Vector3[2];\n const randomVertex = TmpVectors.Vector3[3];\n Vector3.FromArrayToRef(this._positions, faceIndexA * 3, vertexA);\n Vector3.FromArrayToRef(this._positions, faceIndexB * 3, vertexB);\n Vector3.FromArrayToRef(this._positions, faceIndexC * 3, vertexC);\n randomVertex.x = bu * vertexA.x + bv * vertexB.x + bw * vertexC.x;\n randomVertex.y = bu * vertexA.y + bv * vertexB.y + bw * vertexC.y;\n randomVertex.z = bu * vertexA.z + bv * vertexB.z + bw * vertexC.z;\n if (isLocal) {\n positionToUpdate.copyFromFloats(randomVertex.x, randomVertex.y, randomVertex.z);\n } else {\n Vector3.TransformCoordinatesFromFloatsToRef(randomVertex.x, randomVertex.y, randomVertex.z, worldMatrix, positionToUpdate);\n }\n if (this.useMeshNormalsForDirection && this._normals) {\n Vector3.FromArrayToRef(this._normals, faceIndexA * 3, vertexA);\n Vector3.FromArrayToRef(this._normals, faceIndexB * 3, vertexB);\n Vector3.FromArrayToRef(this._normals, faceIndexC * 3, vertexC);\n this._storedNormal.x = bu * vertexA.x + bv * vertexB.x + bw * vertexC.x;\n this._storedNormal.y = bu * vertexA.y + bv * vertexB.y + bw * vertexC.y;\n this._storedNormal.z = bu * vertexA.z + bv * vertexB.z + bw * vertexC.z;\n }\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 MeshParticleEmitter(this.mesh);\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.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(\"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 \"\";\n }\n /**\n * Returns the string \"BoxParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"MeshParticleEmitter\";\n }\n /**\n * Serializes the particle system to a JSON object.\n * @returns the JSON object\n */\n serialize() {\n var _this$mesh;\n const serializationObject = {};\n serializationObject.type = this.getClassName();\n serializationObject.direction1 = this.direction1.asArray();\n serializationObject.direction2 = this.direction2.asArray();\n serializationObject.meshId = (_this$mesh = this.mesh) === null || _this$mesh === void 0 ? void 0 : _this$mesh.id;\n serializationObject.useMeshNormalsForDirection = this.useMeshNormalsForDirection;\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n * @param scene defines the hosting scene\n */\n parse(serializationObject, scene) {\n Vector3.FromArrayToRef(serializationObject.direction1, 0, this.direction1);\n Vector3.FromArrayToRef(serializationObject.direction2, 0, this.direction2);\n if (serializationObject.meshId && scene) {\n this.mesh = scene.getLastMeshById(serializationObject.meshId);\n }\n this.useMeshNormalsForDirection = serializationObject.useMeshNormalsForDirection;\n }\n}","map":{"version":3,"names":["DeepCopier","Vector3","TmpVectors","RandomRange","VertexBuffer","MeshParticleEmitter","mesh","_mesh","value","_indices","getIndices","_positions","getVerticesData","PositionKind","_normals","NormalKind","constructor","_storedNormal","Zero","direction1","direction2","useMeshNormalsForDirection","startDirectionFunction","worldMatrix","directionToUpdate","particle","isLocal","TransformNormalToRef","randX","x","randY","y","randZ","z","copyFromFloats","TransformNormalFromFloatsToRef","startPositionFunction","positionToUpdate","randomFaceIndex","Math","random","length","bu","bv","bw","faceIndexA","faceIndexB","faceIndexC","vertexA","vertexB","vertexC","randomVertex","FromArrayToRef","TransformCoordinatesFromFloatsToRef","clone","newOne","DeepCopy","applyToShader","uboOrEffect","setVector3","buildUniformLayout","ubo","addUniform","getEffectDefines","getClassName","serialize","_this$mesh","serializationObject","type","asArray","meshId","id","parse","scene","getLastMeshById"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Particles/EmitterTypes/meshParticleEmitter.js"],"sourcesContent":["import { DeepCopier } from \"../../Misc/deepCopier.js\";\nimport { Vector3, TmpVectors } from \"../../Maths/math.vector.js\";\nimport { RandomRange } from \"../../Maths/math.scalar.functions.js\";\nimport { VertexBuffer } from \"../../Buffers/buffer.js\";\n/**\n * Particle emitter emitting particles from the inside of a box.\n * It emits the particles randomly between 2 given directions.\n */\nexport class MeshParticleEmitter {\n /** Defines the mesh to use as source */\n get mesh() {\n return this._mesh;\n }\n set mesh(value) {\n if (this._mesh === value) {\n return;\n }\n this._mesh = value;\n if (value) {\n this._indices = value.getIndices();\n this._positions = value.getVerticesData(VertexBuffer.PositionKind);\n this._normals = value.getVerticesData(VertexBuffer.NormalKind);\n }\n else {\n this._indices = null;\n this._positions = null;\n this._normals = null;\n }\n }\n /**\n * Creates a new instance MeshParticleEmitter\n * @param mesh defines the mesh to use as source\n */\n constructor(mesh = null) {\n this._indices = null;\n this._positions = null;\n this._normals = null;\n this._storedNormal = Vector3.Zero();\n this._mesh = null;\n /**\n * Random direction of each particle after it has been emitted, between direction1 and direction2 vectors.\n */\n this.direction1 = new Vector3(0, 1.0, 0);\n /**\n * Random direction of each particle after it has been emitted, between direction1 and direction2 vectors.\n */\n this.direction2 = new Vector3(0, 1.0, 0);\n /**\n * Gets or sets a boolean indicating that particle directions must be built from mesh face normals\n */\n this.useMeshNormalsForDirection = true;\n this.mesh = mesh;\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 if (this.useMeshNormalsForDirection && this._normals) {\n Vector3.TransformNormalToRef(this._storedNormal, worldMatrix, directionToUpdate);\n return;\n }\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 if (isLocal) {\n directionToUpdate.copyFromFloats(randX, randY, randZ);\n return;\n }\n Vector3.TransformNormalFromFloatsToRef(randX, randY, randZ, 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 if (!this._indices || !this._positions) {\n return;\n }\n const randomFaceIndex = (3 * Math.random() * (this._indices.length / 3)) | 0;\n const bu = Math.random();\n const bv = Math.random() * (1.0 - bu);\n const bw = 1.0 - bu - bv;\n const faceIndexA = this._indices[randomFaceIndex];\n const faceIndexB = this._indices[randomFaceIndex + 1];\n const faceIndexC = this._indices[randomFaceIndex + 2];\n const vertexA = TmpVectors.Vector3[0];\n const vertexB = TmpVectors.Vector3[1];\n const vertexC = TmpVectors.Vector3[2];\n const randomVertex = TmpVectors.Vector3[3];\n Vector3.FromArrayToRef(this._positions, faceIndexA * 3, vertexA);\n Vector3.FromArrayToRef(this._positions, faceIndexB * 3, vertexB);\n Vector3.FromArrayToRef(this._positions, faceIndexC * 3, vertexC);\n randomVertex.x = bu * vertexA.x + bv * vertexB.x + bw * vertexC.x;\n randomVertex.y = bu * vertexA.y + bv * vertexB.y + bw * vertexC.y;\n randomVertex.z = bu * vertexA.z + bv * vertexB.z + bw * vertexC.z;\n if (isLocal) {\n positionToUpdate.copyFromFloats(randomVertex.x, randomVertex.y, randomVertex.z);\n }\n else {\n Vector3.TransformCoordinatesFromFloatsToRef(randomVertex.x, randomVertex.y, randomVertex.z, worldMatrix, positionToUpdate);\n }\n if (this.useMeshNormalsForDirection && this._normals) {\n Vector3.FromArrayToRef(this._normals, faceIndexA * 3, vertexA);\n Vector3.FromArrayToRef(this._normals, faceIndexB * 3, vertexB);\n Vector3.FromArrayToRef(this._normals, faceIndexC * 3, vertexC);\n this._storedNormal.x = bu * vertexA.x + bv * vertexB.x + bw * vertexC.x;\n this._storedNormal.y = bu * vertexA.y + bv * vertexB.y + bw * vertexC.y;\n this._storedNormal.z = bu * vertexA.z + bv * vertexB.z + bw * vertexC.z;\n }\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 MeshParticleEmitter(this.mesh);\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.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(\"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 \"\";\n }\n /**\n * Returns the string \"BoxParticleEmitter\"\n * @returns a string containing the class name\n */\n getClassName() {\n return \"MeshParticleEmitter\";\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.direction1 = this.direction1.asArray();\n serializationObject.direction2 = this.direction2.asArray();\n serializationObject.meshId = this.mesh?.id;\n serializationObject.useMeshNormalsForDirection = this.useMeshNormalsForDirection;\n return serializationObject;\n }\n /**\n * Parse properties from a JSON object\n * @param serializationObject defines the JSON object\n * @param scene defines the hosting scene\n */\n parse(serializationObject, scene) {\n Vector3.FromArrayToRef(serializationObject.direction1, 0, this.direction1);\n Vector3.FromArrayToRef(serializationObject.direction2, 0, this.direction2);\n if (serializationObject.meshId && scene) {\n this.mesh = scene.getLastMeshById(serializationObject.meshId);\n }\n this.useMeshNormalsForDirection = serializationObject.useMeshNormalsForDirection;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}