@vtx/cs-map
Version:
React components for Vortex
88 lines (84 loc) • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _cesium = require("cesium");
var CircleRippleMaterialSource = "\nuniform vec4 color;\nuniform float speed;\nuniform float count;\nuniform float gradient;\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\nczm_material material = czm_getDefaultMaterial(materialInput);\nmaterial.diffuse = 1.5 * color.rgb;\nvec2 st = materialInput.st;\nfloat dis = distance(st, vec2(0.5, 0.5));\nfloat per = fract(czm_frameNumber * speed / 1000.0);\nif(count == 1.0){\n if(dis > per * 0.5){\n discard;\n }else {\n material.alpha = color.a * dis / per / 2.0;\n }\n} else {\n vec3 str = materialInput.str;\n if(abs(str.z) > 0.001){\n discard;\n }\n if(dis > 0.5){\n discard;\n } else {\n float perDis = 0.5 / count;\n float disNum;\n float bl = 0.0;\n for(int i = 0; i <= 999; i++){\n if(float(i) <= count){\n disNum = perDis * float(i) - dis + per / count;\n if(disNum > 0.0){\n if(disNum < perDis){\n bl = 1.0 - disNum / perDis;\n }\n else if(disNum - perDis < perDis){\n bl = 1.0 - abs(1.0 - disNum / perDis);\n }\n material.alpha = pow(bl,(1.0 + 10.0 * (1.0 - gradient)));\n }\n }\n }\n }\n}\nreturn material;\n}";
/**
* 圆形扫描以及圆形扩散的类对象
* @alias EV_CircleScan
* @constructor
* @param {Viewer} viewer 视图对象
*/
function CircleRippleMaterialProperty(options) {
this._definitionChanged = new _cesium.Event();
this._color = options.color;
this._speed = options.speed;
this.color = options.color;
this.speed = options.speed;
this.count = options.count;
this.gradient = options.gradient;
// Cesium.CircleRippleMaterialProperty = CircleRippleMaterialProperty;
_cesium.Material.CircleRippleMaterialProperty = 'CircleRippleMaterialProperty';
_cesium.Material.CircleRippleMaterialType = 'CircleRippleMaterialType';
_cesium.Material.CircleRippleMaterialSource = CircleRippleMaterialSource;
// if (defined(customMaterial)) {
// if (defined(customMaterial.FShader)) {
// Material.PolylineTrailLinkSource = customMaterial.FShader;
// }
// if (defined(customMaterial.ColorImage)) {
// Material.PolylineTrailLinkImage = customMaterial.ColorImage;
// }
// }
_cesium.Material._materialCache.addMaterial(_cesium.Material.CircleRippleMaterialType, {
fabric: {
type: _cesium.Material.CircleRippleMaterialType,
uniforms: {
color: new _cesium.Color(1.0, 1.0, 0.0, 1.0),
speed: 3.0,
count: 4,
gradient: 0.2,
scale: 1.0 // 设置固定的缩放因子
},
source: _cesium.Material.CircleRippleMaterialSource
},
translucent: function translucent(material) {
return true;
}
});
}
Object.defineProperties(CircleRippleMaterialProperty.prototype, {
isConstant: {
get: function get() {
return false;
}
},
definitionChanged: {
get: function get() {
return this._definitionChanged;
}
},
color: (0, _cesium.createPropertyDescriptor)('color'),
speed: (0, _cesium.createPropertyDescriptor)('speed'),
count: (0, _cesium.createPropertyDescriptor)('count'),
gradient: (0, _cesium.createPropertyDescriptor)('gradient')
});
CircleRippleMaterialProperty.prototype.getType = function (time) {
return _cesium.Material.CircleRippleMaterialType;
};
CircleRippleMaterialProperty.prototype.getValue = function (time, result) {
if (!(0, _cesium.defined)(result)) {
result = {};
}
result.color = _cesium.Property.getValueOrDefault(this._color, time, _cesium.Color.RED, result.color);
result.speed = _cesium.Property.getValueOrDefault(this._speed, time, 10, result.speed);
result.count = this.count;
result.gradient = this.gradient;
return result;
};
CircleRippleMaterialProperty.prototype.equals = function (other) {
return this === other || other instanceof CircleRippleMaterialProperty && _cesium.Property.equals(this._color, other._color) && _cesium.Property.equals(this._speed, other._speed) && _cesium.Property.equals(this.count, other.count) && _cesium.Property.equals(this.gradient, other.gradient);
};
var _default = exports["default"] = CircleRippleMaterialProperty;
//# sourceMappingURL=CircleRippleMaterialProperty.js.map