UNPKG

@vtx/cs-map

Version:

React components for Vortex

89 lines (84 loc) 4.44 kB
"use strict"; 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