1 |
- {"ast":null,"code":"import { AbstractMesh } from \"../Meshes/abstractMesh.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { Lerp } from \"../Maths/math.scalar.functions.js\";\nMesh._TrailMeshParser = (parsedMesh, scene) => {\n return TrailMesh.Parse(parsedMesh, scene);\n};\n/**\n * Class used to create a trail following a mesh\n */\nexport class TrailMesh extends Mesh {\n /** @internal */\n constructor(name, generator, scene, diameterOrOptions, length = 60, autoStart = true) {\n super(name, scene);\n this._sectionPolygonPointsCount = 4;\n this._running = false;\n this._generator = generator;\n if (typeof diameterOrOptions === \"object\" && diameterOrOptions !== null) {\n this.diameter = diameterOrOptions.diameter || 1;\n this._length = diameterOrOptions.length || 60;\n this._segments = diameterOrOptions.segments ? diameterOrOptions.segments > this._length ? this._length : diameterOrOptions.segments : this._length;\n this._sectionPolygonPointsCount = diameterOrOptions.sections || 4;\n this._doNotTaper = diameterOrOptions.doNotTaper || false;\n this._autoStart = diameterOrOptions.autoStart || true;\n } else {\n this.diameter = diameterOrOptions || 1;\n this._length = length;\n this._segments = this._length;\n this._doNotTaper = false;\n this._autoStart = autoStart;\n }\n this._sectionVectors = [];\n this._sectionNormalVectors = [];\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n this._sectionVectors[i] = Vector3.Zero();\n this._sectionNormalVectors[i] = Vector3.Zero();\n }\n this._createMesh();\n }\n /**\n * \"TrailMesh\"\n * @returns \"TrailMesh\"\n */\n getClassName() {\n return \"TrailMesh\";\n }\n _createMesh() {\n const data = new VertexData();\n const positions = [];\n const normals = [];\n const indices = [];\n const uvs = [];\n let meshCenter = Vector3.Zero();\n if (this._generator instanceof AbstractMesh && this._generator.hasBoundingInfo) {\n meshCenter = this._generator.getBoundingInfo().boundingBox.centerWorld;\n } else {\n meshCenter = this._generator.absolutePosition;\n }\n const alpha = 2 * Math.PI / this._sectionPolygonPointsCount;\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n const angle = i !== this._sectionPolygonPointsCount ? i * alpha : 0;\n positions.push(meshCenter.x + Math.cos(angle) * this.diameter, meshCenter.y + Math.sin(angle) * this.diameter, meshCenter.z);\n uvs.push(i / this._sectionPolygonPointsCount, 0);\n }\n for (let i = 1; i <= this._segments; i++) {\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n const angle = j !== this._sectionPolygonPointsCount ? j * alpha : 0;\n positions.push(meshCenter.x + Math.cos(angle) * this.diameter, meshCenter.y + Math.sin(angle) * this.diameter, meshCenter.z);\n uvs.push(j / this._sectionPolygonPointsCount, i / this._segments);\n }\n const l = positions.length / 3 - 2 * (this._sectionPolygonPointsCount + 1);\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n indices.push(l + j, l + j + this._sectionPolygonPointsCount, l + j + this._sectionPolygonPointsCount + 1);\n indices.push(l + j, l + j + this._sectionPolygonPointsCount + 1, l + j + 1);\n }\n }\n VertexData.ComputeNormals(positions, indices, normals);\n data.positions = positions;\n data.normals = normals;\n data.indices = indices;\n data.uvs = uvs;\n data.applyToMesh(this, true);\n if (this._autoStart) {\n this.start();\n }\n }\n _updateSectionVectors() {\n const wm = this._generator.getWorldMatrix();\n const alpha = 2 * Math.PI / this._sectionPolygonPointsCount;\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n const angle = i !== this._sectionPolygonPointsCount ? i * alpha : 0;\n this._sectionVectors[i].copyFromFloats(Math.cos(angle) * this.diameter, Math.sin(angle) * this.diameter, 0);\n this._sectionNormalVectors[i].copyFromFloats(Math.cos(angle), Math.sin(angle), 0);\n Vector3.TransformCoordinatesToRef(this._sectionVectors[i], wm, this._sectionVectors[i]);\n Vector3.TransformNormalToRef(this._sectionNormalVectors[i], wm, this._sectionNormalVectors[i]);\n }\n }\n /**\n * Start trailing mesh.\n */\n start() {\n if (!this._running) {\n this._running = true;\n this._beforeRenderObserver = this.getScene().onBeforeRenderObservable.add(() => {\n this.update();\n });\n }\n }\n /**\n * Stop trailing mesh.\n */\n stop() {\n if (this._beforeRenderObserver && this._running) {\n this._running = false;\n this.getScene().onBeforeRenderObservable.remove(this._beforeRenderObserver);\n }\n }\n /**\n * Update trailing mesh geometry.\n */\n update() {\n const positions = this.getVerticesData(VertexBuffer.PositionKind);\n const normals = this.getVerticesData(VertexBuffer.NormalKind);\n const index = 3 * (this._sectionPolygonPointsCount + 1);\n if (positions && normals) {\n if (this._doNotTaper) {\n for (let i = index; i < positions.length; i++) {\n positions[i - index] = Lerp(positions[i - index], positions[i], this._segments / this._length);\n }\n } else {\n for (let i = index; i < positions.length; i++) {\n positions[i - index] = Lerp(positions[i - index], positions[i], this._segments / this._length) - normals[i] / this._length * this.diameter;\n }\n }\n for (let i = index; i < normals.length; i++) {\n normals[i - index] = Lerp(normals[i - index], normals[i], this._segments / this._length);\n }\n this._updateSectionVectors();\n const l = positions.length - 3 * (this._sectionPolygonPointsCount + 1);\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n positions[l + 3 * i] = this._sectionVectors[i].x;\n positions[l + 3 * i + 1] = this._sectionVectors[i].y;\n positions[l + 3 * i + 2] = this._sectionVectors[i].z;\n normals[l + 3 * i] = this._sectionNormalVectors[i].x;\n normals[l + 3 * i + 1] = this._sectionNormalVectors[i].y;\n normals[l + 3 * i + 2] = this._sectionNormalVectors[i].z;\n }\n this.updateVerticesData(VertexBuffer.PositionKind, positions, true, false);\n this.updateVerticesData(VertexBuffer.NormalKind, normals, true, false);\n }\n }\n /**\n * Reset trailing mesh geometry.\n */\n reset() {\n const positions = this.getVerticesData(VertexBuffer.PositionKind);\n const normals = this.getVerticesData(VertexBuffer.NormalKind);\n if (positions && normals) {\n this._updateSectionVectors();\n for (let i = 0; i <= this._segments; i++) {\n const l = 3 * i * (this._sectionPolygonPointsCount + 1);\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n positions[l + 3 * j] = this._sectionVectors[j].x;\n positions[l + 3 * j + 1] = this._sectionVectors[j].y;\n positions[l + 3 * j + 2] = this._sectionVectors[j].z;\n normals[l + 3 * j] = this._sectionNormalVectors[j].x;\n normals[l + 3 * j + 1] = this._sectionNormalVectors[j].y;\n normals[l + 3 * j + 2] = this._sectionNormalVectors[j].z;\n }\n }\n this.updateVerticesData(VertexBuffer.PositionKind, positions, true, false);\n this.updateVerticesData(VertexBuffer.NormalKind, normals, true, false);\n }\n }\n /**\n * Returns a new TrailMesh object.\n * @param name is a string, the name given to the new mesh\n * @param newGenerator use new generator object for cloned trail mesh\n * @returns a new mesh\n */\n clone(name = \"\", newGenerator) {\n const options = {\n diameter: this.diameter,\n length: this._length,\n segments: this._segments,\n sections: this._sectionPolygonPointsCount,\n doNotTaper: this._doNotTaper,\n autoStart: this._autoStart\n };\n return new TrailMesh(name, newGenerator !== null && newGenerator !== void 0 ? newGenerator : this._generator, this.getScene(), options);\n }\n /**\n * Serializes this trail mesh\n * @param serializationObject object to write serialization to\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.generatorId = this._generator.id;\n }\n /**\n * Parses a serialized trail mesh\n * @param parsedMesh the serialized mesh\n * @param scene the scene to create the trail mesh in\n * @returns the created trail mesh\n */\n static Parse(parsedMesh, scene) {\n var _scene$getLastMeshByI, _parsedMesh$diameter;\n const generator = (_scene$getLastMeshByI = scene.getLastMeshById(parsedMesh.generatorId)) !== null && _scene$getLastMeshByI !== void 0 ? _scene$getLastMeshByI : scene.getLastTransformNodeById(parsedMesh.generatorId);\n if (!generator) {\n throw new Error(\"TrailMesh: generator not found with ID \" + parsedMesh.generatorId);\n }\n const options = {\n diameter: (_parsedMesh$diameter = parsedMesh.diameter) !== null && _parsedMesh$diameter !== void 0 ? _parsedMesh$diameter : parsedMesh._diameter,\n length: parsedMesh._length,\n segments: parsedMesh._segments,\n sections: parsedMesh._sectionPolygonPointsCount,\n doNotTaper: parsedMesh._doNotTaper,\n autoStart: parsedMesh._autoStart\n };\n return new TrailMesh(parsedMesh.name, generator, scene, options);\n }\n}","map":{"version":3,"names":["AbstractMesh","Mesh","Vector3","VertexBuffer","VertexData","Lerp","_TrailMeshParser","parsedMesh","scene","TrailMesh","Parse","constructor","name","generator","diameterOrOptions","length","autoStart","_sectionPolygonPointsCount","_running","_generator","diameter","_length","_segments","segments","sections","_doNotTaper","doNotTaper","_autoStart","_sectionVectors","_sectionNormalVectors","i","Zero","_createMesh","getClassName","data","positions","normals","indices","uvs","meshCenter","hasBoundingInfo","getBoundingInfo","boundingBox","centerWorld","absolutePosition","alpha","Math","PI","angle","push","x","cos","y","sin","z","j","l","ComputeNormals","applyToMesh","start","_updateSectionVectors","wm","getWorldMatrix","copyFromFloats","TransformCoordinatesToRef","TransformNormalToRef","_beforeRenderObserver","getScene","onBeforeRenderObservable","add","update","stop","remove","getVerticesData","PositionKind","NormalKind","index","updateVerticesData","reset","clone","newGenerator","options","serialize","serializationObject","generatorId","id","_scene$getLastMeshByI","_parsedMesh$diameter","getLastMeshById","getLastTransformNodeById","Error","_diameter"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/trailMesh.js"],"sourcesContent":["import { AbstractMesh } from \"../Meshes/abstractMesh.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { Lerp } from \"../Maths/math.scalar.functions.js\";\nMesh._TrailMeshParser = (parsedMesh, scene) => {\n return TrailMesh.Parse(parsedMesh, scene);\n};\n/**\n * Class used to create a trail following a mesh\n */\nexport class TrailMesh extends Mesh {\n /** @internal */\n constructor(name, generator, scene, diameterOrOptions, length = 60, autoStart = true) {\n super(name, scene);\n this._sectionPolygonPointsCount = 4;\n this._running = false;\n this._generator = generator;\n if (typeof diameterOrOptions === \"object\" && diameterOrOptions !== null) {\n this.diameter = diameterOrOptions.diameter || 1;\n this._length = diameterOrOptions.length || 60;\n this._segments = diameterOrOptions.segments ? (diameterOrOptions.segments > this._length ? this._length : diameterOrOptions.segments) : this._length;\n this._sectionPolygonPointsCount = diameterOrOptions.sections || 4;\n this._doNotTaper = diameterOrOptions.doNotTaper || false;\n this._autoStart = diameterOrOptions.autoStart || true;\n }\n else {\n this.diameter = diameterOrOptions || 1;\n this._length = length;\n this._segments = this._length;\n this._doNotTaper = false;\n this._autoStart = autoStart;\n }\n this._sectionVectors = [];\n this._sectionNormalVectors = [];\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n this._sectionVectors[i] = Vector3.Zero();\n this._sectionNormalVectors[i] = Vector3.Zero();\n }\n this._createMesh();\n }\n /**\n * \"TrailMesh\"\n * @returns \"TrailMesh\"\n */\n getClassName() {\n return \"TrailMesh\";\n }\n _createMesh() {\n const data = new VertexData();\n const positions = [];\n const normals = [];\n const indices = [];\n const uvs = [];\n let meshCenter = Vector3.Zero();\n if (this._generator instanceof AbstractMesh && this._generator.hasBoundingInfo) {\n meshCenter = this._generator.getBoundingInfo().boundingBox.centerWorld;\n }\n else {\n meshCenter = this._generator.absolutePosition;\n }\n const alpha = (2 * Math.PI) / this._sectionPolygonPointsCount;\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n const angle = i !== this._sectionPolygonPointsCount ? i * alpha : 0;\n positions.push(meshCenter.x + Math.cos(angle) * this.diameter, meshCenter.y + Math.sin(angle) * this.diameter, meshCenter.z);\n uvs.push(i / this._sectionPolygonPointsCount, 0);\n }\n for (let i = 1; i <= this._segments; i++) {\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n const angle = j !== this._sectionPolygonPointsCount ? j * alpha : 0;\n positions.push(meshCenter.x + Math.cos(angle) * this.diameter, meshCenter.y + Math.sin(angle) * this.diameter, meshCenter.z);\n uvs.push(j / this._sectionPolygonPointsCount, i / this._segments);\n }\n const l = positions.length / 3 - 2 * (this._sectionPolygonPointsCount + 1);\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n indices.push(l + j, l + j + this._sectionPolygonPointsCount, l + j + this._sectionPolygonPointsCount + 1);\n indices.push(l + j, l + j + this._sectionPolygonPointsCount + 1, l + j + 1);\n }\n }\n VertexData.ComputeNormals(positions, indices, normals);\n data.positions = positions;\n data.normals = normals;\n data.indices = indices;\n data.uvs = uvs;\n data.applyToMesh(this, true);\n if (this._autoStart) {\n this.start();\n }\n }\n _updateSectionVectors() {\n const wm = this._generator.getWorldMatrix();\n const alpha = (2 * Math.PI) / this._sectionPolygonPointsCount;\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n const angle = i !== this._sectionPolygonPointsCount ? i * alpha : 0;\n this._sectionVectors[i].copyFromFloats(Math.cos(angle) * this.diameter, Math.sin(angle) * this.diameter, 0);\n this._sectionNormalVectors[i].copyFromFloats(Math.cos(angle), Math.sin(angle), 0);\n Vector3.TransformCoordinatesToRef(this._sectionVectors[i], wm, this._sectionVectors[i]);\n Vector3.TransformNormalToRef(this._sectionNormalVectors[i], wm, this._sectionNormalVectors[i]);\n }\n }\n /**\n * Start trailing mesh.\n */\n start() {\n if (!this._running) {\n this._running = true;\n this._beforeRenderObserver = this.getScene().onBeforeRenderObservable.add(() => {\n this.update();\n });\n }\n }\n /**\n * Stop trailing mesh.\n */\n stop() {\n if (this._beforeRenderObserver && this._running) {\n this._running = false;\n this.getScene().onBeforeRenderObservable.remove(this._beforeRenderObserver);\n }\n }\n /**\n * Update trailing mesh geometry.\n */\n update() {\n const positions = this.getVerticesData(VertexBuffer.PositionKind);\n const normals = this.getVerticesData(VertexBuffer.NormalKind);\n const index = 3 * (this._sectionPolygonPointsCount + 1);\n if (positions && normals) {\n if (this._doNotTaper) {\n for (let i = index; i < positions.length; i++) {\n positions[i - index] = Lerp(positions[i - index], positions[i], this._segments / this._length);\n }\n }\n else {\n for (let i = index; i < positions.length; i++) {\n positions[i - index] = Lerp(positions[i - index], positions[i], this._segments / this._length) - (normals[i] / this._length) * this.diameter;\n }\n }\n for (let i = index; i < normals.length; i++) {\n normals[i - index] = Lerp(normals[i - index], normals[i], this._segments / this._length);\n }\n this._updateSectionVectors();\n const l = positions.length - 3 * (this._sectionPolygonPointsCount + 1);\n for (let i = 0; i <= this._sectionPolygonPointsCount; i++) {\n positions[l + 3 * i] = this._sectionVectors[i].x;\n positions[l + 3 * i + 1] = this._sectionVectors[i].y;\n positions[l + 3 * i + 2] = this._sectionVectors[i].z;\n normals[l + 3 * i] = this._sectionNormalVectors[i].x;\n normals[l + 3 * i + 1] = this._sectionNormalVectors[i].y;\n normals[l + 3 * i + 2] = this._sectionNormalVectors[i].z;\n }\n this.updateVerticesData(VertexBuffer.PositionKind, positions, true, false);\n this.updateVerticesData(VertexBuffer.NormalKind, normals, true, false);\n }\n }\n /**\n * Reset trailing mesh geometry.\n */\n reset() {\n const positions = this.getVerticesData(VertexBuffer.PositionKind);\n const normals = this.getVerticesData(VertexBuffer.NormalKind);\n if (positions && normals) {\n this._updateSectionVectors();\n for (let i = 0; i <= this._segments; i++) {\n const l = 3 * i * (this._sectionPolygonPointsCount + 1);\n for (let j = 0; j <= this._sectionPolygonPointsCount; j++) {\n positions[l + 3 * j] = this._sectionVectors[j].x;\n positions[l + 3 * j + 1] = this._sectionVectors[j].y;\n positions[l + 3 * j + 2] = this._sectionVectors[j].z;\n normals[l + 3 * j] = this._sectionNormalVectors[j].x;\n normals[l + 3 * j + 1] = this._sectionNormalVectors[j].y;\n normals[l + 3 * j + 2] = this._sectionNormalVectors[j].z;\n }\n }\n this.updateVerticesData(VertexBuffer.PositionKind, positions, true, false);\n this.updateVerticesData(VertexBuffer.NormalKind, normals, true, false);\n }\n }\n /**\n * Returns a new TrailMesh object.\n * @param name is a string, the name given to the new mesh\n * @param newGenerator use new generator object for cloned trail mesh\n * @returns a new mesh\n */\n clone(name = \"\", newGenerator) {\n const options = {\n diameter: this.diameter,\n length: this._length,\n segments: this._segments,\n sections: this._sectionPolygonPointsCount,\n doNotTaper: this._doNotTaper,\n autoStart: this._autoStart,\n };\n return new TrailMesh(name, newGenerator ?? this._generator, this.getScene(), options);\n }\n /**\n * Serializes this trail mesh\n * @param serializationObject object to write serialization to\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.generatorId = this._generator.id;\n }\n /**\n * Parses a serialized trail mesh\n * @param parsedMesh the serialized mesh\n * @param scene the scene to create the trail mesh in\n * @returns the created trail mesh\n */\n static Parse(parsedMesh, scene) {\n const generator = scene.getLastMeshById(parsedMesh.generatorId) ?? scene.getLastTransformNodeById(parsedMesh.generatorId);\n if (!generator) {\n throw new Error(\"TrailMesh: generator not found with ID \" + parsedMesh.generatorId);\n }\n const options = {\n diameter: parsedMesh.diameter ?? parsedMesh._diameter,\n length: parsedMesh._length,\n segments: parsedMesh._segments,\n sections: parsedMesh._sectionPolygonPointsCount,\n doNotTaper: parsedMesh._doNotTaper,\n autoStart: parsedMesh._autoStart,\n };\n return new TrailMesh(parsedMesh.name, generator, scene, options);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|