/*
* @Author: jianlei wang
* @Date: 2024-02-22 17:32:36
* @Last Modified by: jianlei wang
* @Last Modified time: 2024-03-28 15:18:24
*/
import { Cesium } from '../../../namespace'
import lightingShader from '../shaders/weather/lightning.glsl'
/**
* 闪电效果
* @class
*/
class LightningEffect {
/**
* 构造函数
* @param {Object} viewer 地图场景对象
*/
constructor(viewer) {
this._viewer = viewer
}
_init() {
this._clear()
this._lighting = new Cesium.PostProcessStage({
name: 'weather_lighting',
fragmentShader: lightingShader,
uniforms: {
fogByDistance: new Cesium.Cartesian4(10, 0.0, 1000, 0.8),
fogColor: Cesium.Color.WHITE,
},
})
this._viewer.scene.postProcessStages.add(this._lighting)
}
/**
* 销毁对象
*/
destroy() {
this._clear()
this._lighting.destroy()
}
_clear() {
if (!this._viewer || !this._lighting) return
this._viewer.scene.postProcessStages.remove(this._lighting)
}
/**
* 控制雷电显示
* @type {Boolean}
*/
set show(bool) {
bool ? this._init() : this._clear()
}
}
export default LightningEffect