casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 7.49 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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"}