@dspacev-bundle/vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 7.39 kB
Source Map (JSON)
{"version":3,"file":"particleSystem.mjs","sources":["../../../../../../packages/components/overlays/wind/particleSystem.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-28 10:10:09\n * @LastEditTime: 2022-03-09 14:20:51\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\wind\\particleSystem.ts\n */\n\nimport ParticlesComputing from './particlesComputing'\nimport ParticlesRendering from './particlesRendering'\nimport { ParticleSystemOptions, VcWindData, ViewerParameters } from './types'\nclass ParticleSystem {\n context: any\n data: VcWindData\n particleSystemOptions: ParticleSystemOptions\n viewerParameters: ViewerParameters\n particlesComputing: ParticlesComputing\n particlesRendering: ParticlesRendering\n constructor(context, data: VcWindData, particleSystemOptions: ParticleSystemOptions, viewerParameters: ViewerParameters) {\n this.context = context\n this.data = data\n this.particleSystemOptions = particleSystemOptions\n this.viewerParameters = viewerParameters\n\n this.particlesComputing = new ParticlesComputing(this.context, this.data, this.particleSystemOptions, this.viewerParameters)\n this.particlesRendering = new ParticlesRendering(\n this.context,\n this.data,\n this.particleSystemOptions,\n this.viewerParameters,\n this.particlesComputing\n )\n }\n\n canvasResize(context) {\n this.particlesComputing.destroyParticlesTextures()\n Object.keys(this.particlesComputing.windTextures).forEach(key => {\n this.particlesComputing.windTextures[key].destroy()\n })\n\n Object.keys(this.particlesRendering.framebuffers).forEach(key => {\n this.particlesRendering.framebuffers[key].destroy()\n })\n\n this.context = context\n this.particlesComputing = new ParticlesComputing(this.context, this.data, this.particleSystemOptions, this.viewerParameters)\n this.particlesRendering = new ParticlesRendering(\n this.context,\n this.data,\n this.particleSystemOptions,\n this.viewerParameters,\n this.particlesComputing\n )\n }\n\n clearFramebuffers() {\n const clearCommand = new Cesium.ClearCommand({\n color: new Cesium.Color(0.0, 0.0, 0.0, 0.0),\n depth: 1.0,\n framebuffer: undefined,\n pass: Cesium.Pass.OPAQUE\n })\n\n Object.keys(this.particlesRendering.framebuffers).forEach(key => {\n clearCommand.framebuffer = this.particlesRendering.framebuffers[key]\n clearCommand.execute(this.context)\n })\n }\n\n refreshParticles(maxParticlesChanged) {\n this.clearFramebuffers()\n\n this.particlesComputing.destroyParticlesTextures()\n this.particlesComputing.createParticlesTextures(this.context, this.particleSystemOptions, this.viewerParameters)\n\n if (maxParticlesChanged) {\n const geometry = this.particlesRendering.createSegmentsGeometry(this.particleSystemOptions)\n this.particlesRendering.primitives.segments.geometry = geometry\n const vertexArray = Cesium.VertexArray.fromGeometry({\n context: this.context,\n geometry: geometry,\n attributeLocations: this.particlesRendering.primitives.segments.attributeLocations,\n bufferUsage: Cesium.BufferUsage.STATIC_DRAW\n })\n this.particlesRendering.primitives.segments.commandToExecute.vertexArray = vertexArray\n }\n }\n\n applyParticleSystemOptions(particleSystemOptions) {\n let maxParticlesChanged = false\n if (this.particleSystemOptions.maxParticles !== particleSystemOptions.maxParticles) {\n maxParticlesChanged = true\n }\n\n Object.keys(particleSystemOptions).forEach(key => {\n this.particleSystemOptions[key] = particleSystemOptions[key]\n })\n this.refreshParticles(maxParticlesChanged)\n }\n\n applyViewerParameters(viewerParameters) {\n Object.keys(viewerParameters).forEach(key => {\n this.viewerParameters[key] = viewerParameters[key]\n })\n this.refreshParticles(false)\n }\n}\n\nexport default ParticleSystem\n"],"names":[],"mappings":"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"}