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