/**
|
* @Author : Caven Chen
|
*/
|
|
import { Cesium } from '../../../libs'
|
import State from '../../state/State'
|
import { Util } from '../../utils'
|
import SnowShader from '../../material/shader/weather/SnowShader.glsl'
|
|
class Snow {
|
constructor(viewer) {
|
this._id = Util.uuid()
|
this._viewer = viewer
|
this._delegate = undefined
|
this._enable = false
|
this._speed = 10.0
|
this._state = State.INITIALIZED
|
}
|
|
get type() {
|
return 'snow'
|
}
|
|
set enable(enable) {
|
this._enable = enable
|
if (enable && this._viewer && !this._delegate) {
|
this._createPostProcessStage()
|
}
|
this._delegate && (this._delegate.enabled = enable)
|
}
|
|
get enable() {
|
return this._enable
|
}
|
|
set speed(speed) {
|
this._speed = speed
|
this._delegate && (this._delegate.uniforms.speed = speed)
|
}
|
|
get speed() {
|
return this._speed
|
}
|
|
/**
|
*
|
* @private
|
*/
|
_createPostProcessStage() {
|
this._delegate = new Cesium.PostProcessStage({
|
name: this._id,
|
fragmentShader: SnowShader,
|
uniforms: {
|
speed: this._speed,
|
},
|
})
|
this._viewer.scene.postProcessStages.add(this._delegate)
|
}
|
}
|
|
export default Snow
|