@pirireis/webglobeplugins 0.9.9 → 0.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Math/angle-calculation.js +15 -0
- package/Math/arc.js +65 -0
- package/Math/bounds/line-bbox.js +190 -0
- package/Math/constants.js +9 -0
- package/Math/frustum/camera.js +24 -0
- package/Math/frustum/from-globeinfo.js +48 -0
- package/Math/frustum/types.js +2 -0
- package/Math/globe-util/horizon-plane.js +112 -0
- package/Math/index.js +1 -0
- package/Math/juction/arc-plane.js +83 -0
- package/Math/juction/line-sphere.js +25 -0
- package/Math/juction/plane-plane.js +58 -0
- package/Math/line.js +58 -0
- package/Math/matrix4.js +1 -0
- package/Math/methods.js +206 -0
- package/Math/plane.js +62 -0
- package/Math/quaternion.js +108 -0
- package/Math/types.js +2 -0
- package/Math/utils.js +4 -0
- package/Math/vec3.js +129 -0
- package/algorithms/search-binary.js +19 -0
- package/altitude-locator/adaptors.js +1 -0
- package/altitude-locator/draw-subset-obj.js +19 -0
- package/altitude-locator/keymethod.js +1 -0
- package/altitude-locator/plugin.js +357 -0
- package/altitude-locator/types.js +23 -0
- package/arrowfield/adaptor.js +15 -0
- package/arrowfield/index.js +10 -0
- package/arrowfield/plugin.js +89 -0
- package/bearing-line/index.js +8 -0
- package/bearing-line/plugin.js +474 -0
- package/circle-line-chain/chain-list-map.js +211 -0
- package/circle-line-chain/init.js +1 -0
- package/circle-line-chain/plugin.js +449 -0
- package/circle-line-chain/util.js +5 -0
- package/compass-rose/compass-rose-padding-flat.js +247 -0
- package/compass-rose/compass-text-writer.js +161 -0
- package/compass-rose/index.js +7 -0
- package/compassrose/compassrose.js +300 -0
- package/compassrose/index.js +8 -0
- package/globe-types.js +1 -0
- package/heatwave/index.js +10 -0
- package/heatwave/isobar/objectarraylabels.js +206 -0
- package/heatwave/isobar/plugin.js +362 -0
- package/heatwave/isobar/quadtreecontours.js +316 -0
- package/heatwave/plugins/heatwaveglobeshell.js +224 -0
- package/index.js +11 -11
- package/jest.config.js +7 -0
- package/package.json +4 -4
- package/partialrings/buffer-manager.js +113 -0
- package/partialrings/index.js +41 -0
- package/partialrings/plugin.js +171 -0
- package/partialrings/program.js +197 -0
- package/pin/pin-object-array.js +308 -0
- package/pin/pin-point-totem.js +61 -0
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +66 -0
- package/point-heat-map/index.js +1 -0
- package/point-heat-map/plugin-webworker.js +131 -0
- package/point-heat-map/point-to-heat-map-flow.js +129 -0
- package/point-tracks/key-methods.js +5 -0
- package/point-tracks/plugin.js +353 -0
- package/programs/arrowfield/index.js +7 -0
- package/programs/arrowfield/logic.js +149 -0
- package/programs/arrowfield/object.js +68 -0
- package/programs/data2legend/density-to-legend.js +77 -0
- package/programs/data2legend/point-to-density-texture.js +75 -0
- package/programs/float2legendwithratio/index.js +8 -0
- package/programs/float2legendwithratio/logic.js +125 -0
- package/programs/float2legendwithratio/object.js +113 -0
- package/programs/globe-util/is-globe-moved.js +22 -0
- package/programs/globeshell/index.js +8 -0
- package/programs/globeshell/noise/noises.js +1 -0
- package/programs/globeshell/wiggle/index.js +8 -0
- package/programs/globeshell/wiggle/logic.js +252 -0
- package/programs/globeshell/wiggle/object.js +74 -0
- package/programs/helpers/blender/index.js +1 -0
- package/programs/helpers/blender/program.js +62 -0
- package/programs/helpers/fadeaway/index.js +7 -0
- package/programs/helpers/fadeaway/logic.js +50 -0
- package/programs/helpers/fadeaway/object.js +21 -0
- package/programs/helpers/index.js +8 -0
- package/programs/index.js +58 -0
- package/programs/interface.js +1 -0
- package/programs/line-on-globe/angled-line.js +117 -0
- package/programs/line-on-globe/circle-accurate-3d.js +91 -0
- package/programs/line-on-globe/circle-accurate-flat.js +158 -0
- package/programs/line-on-globe/circle-accurate.js +108 -0
- package/programs/line-on-globe/circle.js +102 -0
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +109 -0
- package/programs/line-on-globe/index.js +1 -0
- package/programs/line-on-globe/lines-color-instanced-flat.js +91 -0
- package/programs/line-on-globe/linestrip.js +110 -0
- package/programs/line-on-globe/naive-accurate-flexible.js +125 -0
- package/programs/line-on-globe/to-the-surface.js +82 -0
- package/programs/line-on-globe/util.js +8 -0
- package/programs/picking/pickable-renderer.js +104 -0
- package/programs/point-on-globe/element-globe-surface-glow.js +102 -0
- package/programs/point-on-globe/element-point-glow.js +85 -0
- package/programs/point-on-globe/square-pixel-point.js +125 -0
- package/programs/programcache.js +131 -0
- package/programs/rings/distancering/circleflatprogram.js +114 -0
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +358 -0
- package/programs/rings/distancering/circlepaddysharedbuffer.js +433 -0
- package/programs/rings/distancering/index.js +14 -0
- package/programs/rings/distancering/paddyflatprogram.js +119 -0
- package/programs/rings/distancering/paddyflatprogram2d.js +121 -0
- package/programs/rings/distancering/paddyflatprogram3d.js +119 -0
- package/programs/rings/distancering/shader.js +1 -0
- package/programs/rings/index.js +17 -0
- package/programs/rings/partial-ring/piece-of-pie.js +173 -0
- package/programs/totems/camerauniformblock.js +147 -0
- package/programs/totems/canvas-webglobe-info.js +102 -0
- package/programs/totems/gpu-selection-uniform-block.js +104 -0
- package/programs/totems/index.js +40 -0
- package/programs/two-d/pixel-circle.js +1 -0
- package/programs/two-d/pixel-padding-for-compass.js +101 -0
- package/programs/util.js +18 -0
- package/programs/vectorfields/index.js +23 -0
- package/programs/vectorfields/logics/drawrectangleparticles.js +66 -0
- package/programs/vectorfields/logics/index.js +12 -0
- package/programs/vectorfields/logics/pixelbased.js +86 -0
- package/programs/vectorfields/logics/ubo.js +57 -0
- package/programs/vectorfields/pingpongbuffermanager.js +80 -0
- package/rangerings/enum.js +5 -0
- package/rangerings/index.js +15 -0
- package/rangerings/plugin.js +610 -0
- package/rangerings/rangeringangletext.js +341 -0
- package/rangerings/ring-account.js +134 -0
- package/shaders/fragment-toy/firework.js +4 -0
- package/shaders/fragment-toy/singularity.js +5 -0
- package/shape-on-terrain/arc/naive/plugin.js +252 -0
- package/timetracks/adaptors-line-strip.js +82 -0
- package/timetracks/adaptors.js +136 -0
- package/timetracks/index.js +19 -0
- package/timetracks/plugin-line-strip.js +254 -0
- package/timetracks/plugin.js +262 -0
- package/timetracks/program-line-strip.js +418 -0
- package/timetracks/program.js +466 -0
- package/timetracks/programpoint-line-strip.js +101 -0
- package/timetracks/programpoint.js +101 -0
- package/types.js +15 -0
- package/util/account/bufferoffsetmanager.js +202 -0
- package/util/account/index.js +23 -0
- package/util/account/single-attribute-buffer-management/buffer-manager.js +112 -0
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +180 -0
- package/util/account/single-attribute-buffer-management/index.js +9 -0
- package/util/account/single-attribute-buffer-management/object-store.js +53 -0
- package/util/account/single-attribute-buffer-management/types.js +2 -0
- package/util/account/util.js +24 -0
- package/util/algorithms/index.js +1 -0
- package/util/algorithms/search-binary.js +28 -0
- package/util/check/get.js +18 -0
- package/util/check/index.js +1 -0
- package/util/check/typecheck.js +51 -0
- package/util/geometry/index.js +53 -0
- package/util/gl-util/buffer/attribute-loader.js +81 -0
- package/util/gl-util/buffer/index.js +6 -0
- package/util/gl-util/buffer/types.js +1 -0
- package/util/gl-util/draw-options/methods.js +38 -0
- package/util/gl-util/draw-options/types.js +15 -0
- package/util/gl-util/uniform-block/manager.js +168 -0
- package/util/gl-util/uniform-block/shader.js +1 -0
- package/util/gl-util/uniform-block/types.js +8 -0
- package/util/heatwavedatamanager/datamanager.js +212 -0
- package/util/heatwavedatamanager/index.js +10 -0
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +125 -0
- package/util/heatwavedatamanager/pointcoordsmeta.js +21 -0
- package/util/index.js +57 -0
- package/util/interpolation/index.js +1 -0
- package/util/interpolation/timetrack/index.js +5 -0
- package/util/interpolation/timetrack/timetrack-interpolator.js +81 -0
- package/util/interpolation/timetrack/web-worker-str.js +5 -0
- package/util/interpolation/timetrack/web-worker.js +48 -0
- package/util/jshelpers/data-filler.js +20 -0
- package/util/jshelpers/equality.js +20 -0
- package/util/jshelpers/index.js +37 -0
- package/util/jshelpers/timefilters.js +32 -0
- package/util/picking/fence.js +46 -0
- package/util/picking/picker-displayer.js +145 -0
- package/util/programs/draw-texture-on-canvas.js +71 -0
- package/util/programs/index.js +17 -0
- package/util/programs/shapesonglobe.js +174 -0
- package/util/programs/supersampletotextures.js +107 -0
- package/util/programs/texturetoglobe.js +132 -0
- package/util/shaderfunctions/geometrytransformations.js +45 -0
- package/util/shaderfunctions/index.js +18 -0
- package/util/shaderfunctions/nodata.js +5 -0
- package/util/shaderfunctions/noisefunctions.js +13 -0
- package/util/surface-line-data/arc-bboxes.js +25 -0
- package/util/surface-line-data/arcs-to-cuts.js +53 -0
- package/util/surface-line-data/cut-arc.js +1 -0
- package/util/surface-line-data/flow.js +28 -0
- package/util/surface-line-data/rbush-manager.js +1 -0
- package/util/surface-line-data/types.js +1 -0
- package/util/surface-line-data/web-worker.js +1 -0
- package/util/webglobe/gldefaultstates.js +7 -0
- package/util/webglobe/index.js +18 -0
- package/util/webglobe/rasteroverlay.js +80 -0
- package/util/webglobjectbuilders.js +393 -0
- package/util/webglobjectbuilders1.js +238 -0
- package/waveparticles/adaptor.js +18 -0
- package/waveparticles/index.js +10 -0
- package/waveparticles/plugin.js +271 -0
- package/wind/imagetovectorfieldandmagnitude.js +35 -0
- package/wind/index.js +14 -0
- package/wind/plugin.js +724 -0
- package/wind/vectorfieldimage.js +25 -0
- package/write-text/attached-text-writer.js +93 -0
- package/write-text/context-text.js +105 -0
- package/write-text/context-text3.js +160 -0
- package/write-text/index.js +5 -0
- package/write-text/writer-plugin.js +8 -0
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @typedef RangeRingData
|
|
4
|
+
* @property {number} centerX
|
|
5
|
+
* @property {number} centerY
|
|
6
|
+
* @property {Array<Ring>} rings
|
|
7
|
+
*
|
|
8
|
+
* @typedef Ring
|
|
9
|
+
* @property {number} radius
|
|
10
|
+
* @property {number} padding
|
|
11
|
+
* @property {[number, number, number]} color
|
|
12
|
+
*
|
|
13
|
+
*
|
|
14
|
+
* @method insertBulk
|
|
15
|
+
* @typedef {Array<{ringID, radius, padding}>} rings
|
|
16
|
+
* @param {Array<centerID:string, x:number, y:number, stepAngle:number, rgba:[4 numbers], rings:rings} items
|
|
17
|
+
|
|
18
|
+
* @method updateCentersCoordinate @param {Array<{centerID, long,lat}>} items
|
|
19
|
+
* @method updateCentersColor @param {Array<{centerID, rgba:[4 numbers]}>} centerColors
|
|
20
|
+
*
|
|
21
|
+
* @method updateCentersHide @param {Array<{centerID, hide, textHide}>} centerHides
|
|
22
|
+
* @method removeCenters @param {Array<{centerID}>} centerIds
|
|
23
|
+
* @method setOpacity @param {number} opacity
|
|
24
|
+
*
|
|
25
|
+
* @method setOneDegreePaddingOn // performance consuming, might be removed
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.Z_ALPHA_MODE = exports.RangeRings = void 0;
|
|
33
|
+
var circle_accurate_flat_1 = require("../programs/line-on-globe/circle-accurate-flat");
|
|
34
|
+
var circle_accurate_3d_1 = require("../programs/line-on-globe/circle-accurate-3d");
|
|
35
|
+
var lines_color_instanced_flat_1 = require("../programs/line-on-globe/lines-color-instanced-flat");
|
|
36
|
+
var account_1 = require("../util/account");
|
|
37
|
+
var get_1 = require("../util/check/get");
|
|
38
|
+
var data_filler_1 = require("../util/jshelpers/data-filler");
|
|
39
|
+
var ring_account_1 = require("./ring-account");
|
|
40
|
+
var degree_padding_around_circle_3d_1 = require("../programs/line-on-globe/degree-padding-around-circle-3d");
|
|
41
|
+
var naive_accurate_flexible_1 = require("../programs/line-on-globe/naive-accurate-flexible");
|
|
42
|
+
var rangeringangletext_1 = __importDefault(require("./rangeringangletext"));
|
|
43
|
+
var util_1 = require("../programs/line-on-globe/util");
|
|
44
|
+
Object.defineProperty(exports, "Z_ALPHA_MODE", { enumerable: true, get: function () { return util_1.Z_ALPHA_MODE; } });
|
|
45
|
+
var enum_1 = require("./enum");
|
|
46
|
+
var typecheck_1 = require("../util/check/typecheck");
|
|
47
|
+
var geometry_1 = require("../util/geometry");
|
|
48
|
+
var CIRCLE_FLAT_EDGE_COUNT = 362; // 360 + 2 for closing the circle and a cutting point
|
|
49
|
+
var coordOnSphere = function (long, lat, globe, altitude) {
|
|
50
|
+
if (altitude === void 0) { altitude = 0; }
|
|
51
|
+
var coord = globe.api_GetCartesian3DPoint(long, lat, 0, 0);
|
|
52
|
+
return (0, geometry_1.normalize)(coord, 6378.137 + altitude);
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
*
|
|
57
|
+
* @typedef {string} centerID
|
|
58
|
+
*
|
|
59
|
+
* @typedef {Object} RangeRing
|
|
60
|
+
* @property {string} ringID
|
|
61
|
+
* @property {number} radius in range meters
|
|
62
|
+
* @property {number} padding badding range in meter
|
|
63
|
+
*
|
|
64
|
+
*
|
|
65
|
+
* Array < centerID: string, long: number, lat: number, stepAngle: number, rgba: [4 numbers], rings: rings, hide, textHide
|
|
66
|
+
* @typedef {Object} RangeRingsItem
|
|
67
|
+
* @property {centerID} centerID
|
|
68
|
+
* @property {number} long
|
|
69
|
+
* @property {number} lat
|
|
70
|
+
* @property {number} stepAngle
|
|
71
|
+
* @property {number} altitude
|
|
72
|
+
* @property {number} hide
|
|
73
|
+
* @property {number} textHide
|
|
74
|
+
* @property {number} rgba
|
|
75
|
+
* @property {Array<RangeRing>} rings
|
|
76
|
+
*/
|
|
77
|
+
var RangeRings = /** @class */ (function () {
|
|
78
|
+
function RangeRings(id, _a, _b) {
|
|
79
|
+
var _c = _a === void 0 ? {} : _a, _d = _c.oneDegreePadding, oneDegreePadding = _d === void 0 ? true : _d, _e = _c.showNumbers, showNumbers = _e === void 0 ? true : _e, _f = _c.numbersStyle, numbersStyle = _f === void 0 ? null : _f, _g = _c.opacity, opacity = _g === void 0 ? 1 : _g, _h = _c.zAlphaOnDegreePadding, zAlphaOnDegreePadding = _h === void 0 ? util_1.Z_ALPHA_MODE.ON : _h;
|
|
80
|
+
var _j = _b === void 0 ? {} : _b, _k = _j.textDataPreAdaptor, textDataPreAdaptor = _k === void 0 ? null : _k, _l = _j.textWritersMap, textWritersMap = _l === void 0 ? new Map() : _l;
|
|
81
|
+
this.id = id;
|
|
82
|
+
this._oneDegreePadding = oneDegreePadding;
|
|
83
|
+
this._zAlphaOnDegreePadding = zAlphaOnDegreePadding;
|
|
84
|
+
this._showNumbers = showNumbers;
|
|
85
|
+
this._numbersStyle = numbersStyle;
|
|
86
|
+
this._opacity = opacity;
|
|
87
|
+
this._ringAccount = new ring_account_1.RingAccount();
|
|
88
|
+
this._textWritersMap = textWritersMap;
|
|
89
|
+
this._textDataPreAdaptor = textDataPreAdaptor;
|
|
90
|
+
this._textWritersMap.forEach(function (textWriter) { return textWriter.setKeyAdaptor(function (item) { return item.__identity__; }); });
|
|
91
|
+
}
|
|
92
|
+
// USER API
|
|
93
|
+
/**
|
|
94
|
+
* @method updateCentersCoordinate @param { Array < { centerID, long,lat } >} items
|
|
95
|
+
*/
|
|
96
|
+
RangeRings.prototype.updateCentersCoordinate = function (items, _a) {
|
|
97
|
+
// Algorithm
|
|
98
|
+
/**
|
|
99
|
+
* 1. ask centerRingAccount for existing rings COORDINATE RELATED KEYS
|
|
100
|
+
* 2. update centers
|
|
101
|
+
* 3. update buffer orchestators
|
|
102
|
+
*/
|
|
103
|
+
var _b;
|
|
104
|
+
var _c = _a === void 0 ? {} : _a, _d = _c.textWriterIDs, textWriterIDs = _d === void 0 ? [] : _d;
|
|
105
|
+
this._ringAccount.updateCentersCoordinate(items);
|
|
106
|
+
var _e = this, globe = _e.globe, bufferOrchestrator = _e.bufferOrchestrator, bufferManagersCompMap = _e.bufferManagersCompMap, paddingBufferOrchestrator = _e.paddingBufferOrchestrator, bufferManagersCompMapPadding = _e.bufferManagersCompMapPadding;
|
|
107
|
+
for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
|
|
108
|
+
var centerID = items_1[_i].centerID;
|
|
109
|
+
var datas = this.__reconstructCentralRings(centerID);
|
|
110
|
+
bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["centerCoords3d", "centerCoords2dflat", "targetCoords3d", "centerCoords2dflatForPadding"]);
|
|
111
|
+
var paddingDatas = this.__reconstructCentralRingsBigPaddings(centerID);
|
|
112
|
+
paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["circlePoint2d", "paddingPoint2d", "circlePoint3d", "paddingPoint3d"]);
|
|
113
|
+
}
|
|
114
|
+
(_b = this.paddingTextPlugin) === null || _b === void 0 ? void 0 : _b.updateCentersXY(items);
|
|
115
|
+
this.__contextTextWriterUpdate(items.map(function (_a) {
|
|
116
|
+
var centerID = _a.centerID;
|
|
117
|
+
return centerID;
|
|
118
|
+
}), textWriterIDs);
|
|
119
|
+
globe.DrawRender();
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* @method insertBulk
|
|
123
|
+
* @param { Array < RangeRingsItem> } items
|
|
124
|
+
*/
|
|
125
|
+
RangeRings.prototype.insertBulk = function (items, _a) {
|
|
126
|
+
var _b;
|
|
127
|
+
var _c = _a === void 0 ? {} : _a, _d = _c.textWriterIDs, textWriterIDs = _d === void 0 ? [] : _d;
|
|
128
|
+
// Algorithm
|
|
129
|
+
/**
|
|
130
|
+
* 1 ask centerRingAccount for existing rings
|
|
131
|
+
* 2. delete all existing keys with buffer orchestators
|
|
132
|
+
* 3. insert new centerRings to centerRingAccount
|
|
133
|
+
* 4. insert new keys with buffer orchestators
|
|
134
|
+
*/
|
|
135
|
+
var _e = this, globe = _e.globe, _ringAccount = _e._ringAccount, bufferOrchestrator = _e.bufferOrchestrator, bufferManagersCompMap = _e.bufferManagersCompMap, paddingBufferOrchestrator = _e.paddingBufferOrchestrator, bufferManagersCompMapPadding = _e.bufferManagersCompMapPadding;
|
|
136
|
+
for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {
|
|
137
|
+
var item = items_2[_i];
|
|
138
|
+
var existingKeys = _ringAccount.ringKeys(item.centerID);
|
|
139
|
+
if (existingKeys.length) {
|
|
140
|
+
bufferOrchestrator.deleteBulk(existingKeys, bufferManagersCompMap);
|
|
141
|
+
}
|
|
142
|
+
var paddingKeys = _ringAccount.ringBigPaddingKeys(item.centerID);
|
|
143
|
+
if (paddingKeys.length) {
|
|
144
|
+
paddingBufferOrchestrator.deleteBulk(paddingKeys, bufferManagersCompMapPadding);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
for (var _f = 0, items_3 = items; _f < items_3.length; _f++) {
|
|
148
|
+
var item = items_3[_f];
|
|
149
|
+
_ringAccount.insertCenter(item);
|
|
150
|
+
var datas = this.__reconstructCentralRings(item.centerID);
|
|
151
|
+
bufferOrchestrator.insertBulk(datas, bufferManagersCompMap);
|
|
152
|
+
var paddingDatas = this.__reconstructCentralRingsBigPaddings(item.centerID);
|
|
153
|
+
paddingBufferOrchestrator.insertBulk(paddingDatas, bufferManagersCompMapPadding);
|
|
154
|
+
}
|
|
155
|
+
(_b = this.paddingTextPlugin) === null || _b === void 0 ? void 0 : _b.insertBulk(items);
|
|
156
|
+
this.__contextTextWriterUpdate(items.map(function (_a) {
|
|
157
|
+
var centerID = _a.centerID;
|
|
158
|
+
return centerID;
|
|
159
|
+
}), textWriterIDs);
|
|
160
|
+
globe.DrawRender();
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* @method updateCentersColor @param { Array < { centerID, rgba: [4 numbers] } >} centerColors
|
|
164
|
+
*/
|
|
165
|
+
RangeRings.prototype.updateCentersColor = function (centerColors, _a) {
|
|
166
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
167
|
+
// Algorithm
|
|
168
|
+
/**
|
|
169
|
+
* 1. ask centerRingAccount for existing rings COLOR KEYS
|
|
170
|
+
* 2. update centers
|
|
171
|
+
* 3. update buffer orchestators
|
|
172
|
+
*/
|
|
173
|
+
this._ringAccount.updateCentersColor(centerColors);
|
|
174
|
+
var _d = this, globe = _d.globe, bufferOrchestrator = _d.bufferOrchestrator, bufferManagersCompMap = _d.bufferManagersCompMap, paddingBufferOrchestrator = _d.paddingBufferOrchestrator, bufferManagersCompMapPadding = _d.bufferManagersCompMapPadding;
|
|
175
|
+
for (var _i = 0, centerColors_1 = centerColors; _i < centerColors_1.length; _i++) {
|
|
176
|
+
var centerID = centerColors_1[_i].centerID;
|
|
177
|
+
var datas = this.__reconstructCentralProperties(centerID);
|
|
178
|
+
bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["rgba", "rgbaMercator"]);
|
|
179
|
+
var paddingDatas = this.__reconstructCentralPaddingProperties(centerID);
|
|
180
|
+
paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["rgba"]);
|
|
181
|
+
}
|
|
182
|
+
this.__contextTextWriterUpdate(centerColors.map(function (_a) {
|
|
183
|
+
var centerID = _a.centerID;
|
|
184
|
+
return centerID;
|
|
185
|
+
}), textWriterIDs);
|
|
186
|
+
globe.DrawRender();
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
*
|
|
190
|
+
* @method updateCentersHide @param { Array < { centerID, hide, textHide } >} centerHides
|
|
191
|
+
*/
|
|
192
|
+
RangeRings.prototype.updateCentersHide = function (centerHides, _a) {
|
|
193
|
+
var _b;
|
|
194
|
+
var _c = _a === void 0 ? {} : _a, _d = _c.textWriterIDs, textWriterIDs = _d === void 0 ? [] : _d;
|
|
195
|
+
// Algorithm
|
|
196
|
+
/**
|
|
197
|
+
* Simple
|
|
198
|
+
* 1. update centers
|
|
199
|
+
* 2. reconstruct data,
|
|
200
|
+
* 3. update color buffer
|
|
201
|
+
* */
|
|
202
|
+
this._ringAccount.updateCentersHide(centerHides);
|
|
203
|
+
var _e = this, globe = _e.globe, bufferOrchestrator = _e.bufferOrchestrator, bufferManagersCompMap = _e.bufferManagersCompMap, paddingBufferOrchestrator = _e.paddingBufferOrchestrator, bufferManagersCompMapPadding = _e.bufferManagersCompMapPadding;
|
|
204
|
+
for (var _i = 0, centerHides_1 = centerHides; _i < centerHides_1.length; _i++) {
|
|
205
|
+
var centerID = centerHides_1[_i].centerID;
|
|
206
|
+
var datas = this.__reconstructCentralProperties(centerID);
|
|
207
|
+
bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["rgba", "rgbaMercator"]);
|
|
208
|
+
var paddingDatas0 = this.__reconstructCentralRings(centerID);
|
|
209
|
+
bufferOrchestrator.updateBulk(paddingDatas0, bufferManagersCompMap, ["radius3dsmall", "centerCoords2dflatForPadding"]);
|
|
210
|
+
var paddingDatas = this.__reconstructCentralPaddingProperties(centerID);
|
|
211
|
+
paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["rgba"]);
|
|
212
|
+
}
|
|
213
|
+
(_b = this.paddingTextPlugin) === null || _b === void 0 ? void 0 : _b.updateCentersHide(centerHides);
|
|
214
|
+
this.__contextTextWriterUpdate(centerHides.map(function (_a) {
|
|
215
|
+
var centerID = _a.centerID;
|
|
216
|
+
return centerID;
|
|
217
|
+
}), textWriterIDs);
|
|
218
|
+
globe.DrawRender();
|
|
219
|
+
/**
|
|
220
|
+
* Complicated
|
|
221
|
+
* 1. ask centerRingAccount for existing rings HIDE KEYS
|
|
222
|
+
* 2. delete from buffer orchestators
|
|
223
|
+
* 3. mark centers as hidden
|
|
224
|
+
*/
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* @param {Array<string>} textWriterIDs textWritersMap keys to be used for writing text.
|
|
228
|
+
* @param {Array<string>} itemKeys if empty, all texts will be updated. Use {@link ringKeyMethod} method to get keys
|
|
229
|
+
*/
|
|
230
|
+
RangeRings.prototype.updateText = function (textWriterIDs, itemKeys) {
|
|
231
|
+
var _this = this;
|
|
232
|
+
if (textWriterIDs === void 0) { textWriterIDs = []; }
|
|
233
|
+
if (itemKeys === void 0) { itemKeys = null; }
|
|
234
|
+
var textWritersMap = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
|
|
235
|
+
if (itemKeys === null) {
|
|
236
|
+
this._ringAccount.updateAllText(textWritersMap, this._textDataPreAdaptor);
|
|
237
|
+
this.globe.DrawRender();
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
itemKeys.forEach(function (key) {
|
|
241
|
+
var item = _this._ringAccount.getCenter(key);
|
|
242
|
+
if (item === undefined)
|
|
243
|
+
throw new Error("Center not found");
|
|
244
|
+
var textData = _this._textDataPreAdaptor(item);
|
|
245
|
+
textWritersMap.forEach(function (textWriter) { return textWriter.insertText(textData); });
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
this.globe.DrawRender();
|
|
249
|
+
};
|
|
250
|
+
/**
|
|
251
|
+
* @method removeCenters @param { Array < { centerID } >} centerIDs
|
|
252
|
+
*/
|
|
253
|
+
RangeRings.prototype.removeCenters = function (centerIDs) {
|
|
254
|
+
var _a;
|
|
255
|
+
var _b = this, globe = _b.globe, bufferOrchestrator = _b.bufferOrchestrator, bufferManagersCompMap = _b.bufferManagersCompMap, paddingBufferOrchestrator = _b.paddingBufferOrchestrator, bufferManagersCompMapPadding = _b.bufferManagersCompMapPadding, _ringAccount = _b._ringAccount;
|
|
256
|
+
var _loop_1 = function (centerID) {
|
|
257
|
+
var existingKeys = _ringAccount.ringKeys(centerID);
|
|
258
|
+
if (existingKeys.length) {
|
|
259
|
+
bufferOrchestrator.deleteBulk(existingKeys, bufferManagersCompMap);
|
|
260
|
+
this_1._textWritersMap.forEach(function (textWriter) { return textWriter.deleteTextBulk(existingKeys); });
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
var this_1 = this;
|
|
264
|
+
for (var _i = 0, centerIDs_1 = centerIDs; _i < centerIDs_1.length; _i++) {
|
|
265
|
+
var centerID = centerIDs_1[_i];
|
|
266
|
+
_loop_1(centerID);
|
|
267
|
+
}
|
|
268
|
+
for (var _c = 0, centerIDs_2 = centerIDs; _c < centerIDs_2.length; _c++) {
|
|
269
|
+
var centerID = centerIDs_2[_c];
|
|
270
|
+
var paddingKeys = _ringAccount.ringBigPaddingKeys(centerID);
|
|
271
|
+
if (paddingKeys.length) {
|
|
272
|
+
paddingBufferOrchestrator.deleteBulk(paddingKeys, bufferManagersCompMapPadding);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
(_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.removeCenters(centerIDs);
|
|
276
|
+
this._ringAccount.removeCenters(centerIDs);
|
|
277
|
+
globe.DrawRender();
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* @method setOpacity @param { number } opacity
|
|
281
|
+
*/
|
|
282
|
+
RangeRings.prototype.setOpacity = function (opacity) {
|
|
283
|
+
var _a;
|
|
284
|
+
(0, typecheck_1.opacityCheck)(opacity);
|
|
285
|
+
this._opacity = opacity;
|
|
286
|
+
(_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.setOpacity(opacity);
|
|
287
|
+
this._textWritersMap.forEach(function (writer) { return writer.setOpacity(opacity); });
|
|
288
|
+
this.globe.DrawRender();
|
|
289
|
+
};
|
|
290
|
+
/**
|
|
291
|
+
* @method setOneDegreePaddingOn // performance consuming, might be removed
|
|
292
|
+
*/
|
|
293
|
+
RangeRings.prototype.setOneDegreePaddingOn = function (isOneDegreePaddingOn) {
|
|
294
|
+
if (typeof isOneDegreePaddingOn !== "boolean")
|
|
295
|
+
throw new Error("Invalid value for one degree padding");
|
|
296
|
+
if (this._oneDegreePadding === isOneDegreePaddingOn)
|
|
297
|
+
return;
|
|
298
|
+
this._oneDegreePadding = isOneDegreePaddingOn;
|
|
299
|
+
this.globe.DrawRender();
|
|
300
|
+
};
|
|
301
|
+
RangeRings.prototype.setZAlphaOnDegreePadding = function (zAlphaOnDegreePadding) {
|
|
302
|
+
if (zAlphaOnDegreePadding !== 0 && zAlphaOnDegreePadding !== 1)
|
|
303
|
+
throw new Error("Invalid value for zAlphaOnDegreePadding");
|
|
304
|
+
if (this._zAlphaOnDegreePadding === zAlphaOnDegreePadding)
|
|
305
|
+
return;
|
|
306
|
+
this._zAlphaOnDegreePadding = zAlphaOnDegreePadding;
|
|
307
|
+
this.globe.DrawRender();
|
|
308
|
+
};
|
|
309
|
+
// PRIVATE METHODS
|
|
310
|
+
RangeRings.prototype._initPrograms = function () {
|
|
311
|
+
var globe = this.globe;
|
|
312
|
+
this._circleProgram2D = circle_accurate_flat_1.CircleCache.get(globe);
|
|
313
|
+
this._circleProgram3D = circle_accurate_3d_1.CircleCache.get(globe);
|
|
314
|
+
this._padding2dProgram = lines_color_instanced_flat_1.LinesColorInstancedFlatCache.get(globe);
|
|
315
|
+
this._padding3dProgram = degree_padding_around_circle_3d_1.CirclePadding3DCache.get(globe);
|
|
316
|
+
this._lineOnGlobe_bigPadding = naive_accurate_flexible_1.LineOnGlobeCache.get(globe);
|
|
317
|
+
};
|
|
318
|
+
RangeRings.prototype._initBufferManagers = function () {
|
|
319
|
+
var _a, _b, _c, _d;
|
|
320
|
+
var _this = this;
|
|
321
|
+
var gl = this.gl;
|
|
322
|
+
var initialCapacity = 10;
|
|
323
|
+
var bufferType = "DYNAMIC_DRAW";
|
|
324
|
+
// circle2d, circle3d, 1 degree paddings,
|
|
325
|
+
this.bufferOrchestrator = new account_1.BufferOrchestrator({ capacity: initialCapacity });
|
|
326
|
+
this.bufferManagersCompMap = new Map([
|
|
327
|
+
// circle 3D
|
|
328
|
+
["centerCoords3d", {
|
|
329
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
330
|
+
'adaptor': function (item) { return new Float32Array(item.centerCoords3d); },
|
|
331
|
+
}],
|
|
332
|
+
["targetCoords3d", {
|
|
333
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
334
|
+
'adaptor': function (item) { return new Float32Array(item.targetCoords3d); },
|
|
335
|
+
}],
|
|
336
|
+
["rgba", {
|
|
337
|
+
'bufferManager': new account_1.BufferManager(gl, 4, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
338
|
+
'adaptor': function (item) { return new Float32Array(item.hide === enum_1.ENUM_HIDE.HIDE ? [0, 0, 0, 0] : item.rgba); }
|
|
339
|
+
}],
|
|
340
|
+
["radius3d", {
|
|
341
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
342
|
+
'adaptor': function (item) { return new Float32Array([item.radius]); }
|
|
343
|
+
}],
|
|
344
|
+
["radius3dsmall", {
|
|
345
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
346
|
+
'adaptor': function (item) {
|
|
347
|
+
if (item.hide === enum_1.ENUM_HIDE.HIDE_1_DEGREE_PADDINGS)
|
|
348
|
+
return new Float32Array([item.radius]);
|
|
349
|
+
return new Float32Array([item.radius - item.padding / 3]);
|
|
350
|
+
}
|
|
351
|
+
}],
|
|
352
|
+
["circleDashAngle", {
|
|
353
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
354
|
+
'adaptor': function (item) { return new Float32Array([1]); },
|
|
355
|
+
}],
|
|
356
|
+
["dashOpacity", {
|
|
357
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
358
|
+
'adaptor': function (item) { return new Float32Array([1]); },
|
|
359
|
+
}],
|
|
360
|
+
// circle 2D
|
|
361
|
+
["centerCoords2dflatForPadding", {
|
|
362
|
+
'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT * 2, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
363
|
+
'adaptor': function (item) { return item.centerCoords2dflatForPadding; },
|
|
364
|
+
}],
|
|
365
|
+
["centerCoords2dflat", {
|
|
366
|
+
'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT * 2, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
367
|
+
'adaptor': function (item) { return item.centerCoords2dflat; },
|
|
368
|
+
}],
|
|
369
|
+
["rgbaMercator", {
|
|
370
|
+
'bufferManager': new account_1.BufferManager(gl, 4 * CIRCLE_FLAT_EDGE_COUNT, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
371
|
+
'adaptor': function (item) { return data_filler_1.populateFloat32Array.fillWithListData(CIRCLE_FLAT_EDGE_COUNT, item.hide === enum_1.ENUM_HIDE.HIDE ? [0, 0, 0, 0] : item.rgba); },
|
|
372
|
+
}],
|
|
373
|
+
["circleDashAngleMercator", {
|
|
374
|
+
'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
375
|
+
'adaptor': function (item) { return data_filler_1.populateFloat32Array.fillFloat32Array(CIRCLE_FLAT_EDGE_COUNT, 1); },
|
|
376
|
+
}],
|
|
377
|
+
["dashOpacityMercator", {
|
|
378
|
+
'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
379
|
+
'adaptor': function (item) { return data_filler_1.populateFloat32Array.fillFloat32Array(CIRCLE_FLAT_EDGE_COUNT, 1); },
|
|
380
|
+
}],
|
|
381
|
+
]);
|
|
382
|
+
var obj = function (bufferManagerComp, divisor) {
|
|
383
|
+
if (divisor === void 0) { divisor = 1; }
|
|
384
|
+
if (bufferManagerComp === null)
|
|
385
|
+
return null;
|
|
386
|
+
return { 'buffer': bufferManagerComp.bufferManager.buffer, 'stride': 0, 'offset': 0, divisor: divisor };
|
|
387
|
+
};
|
|
388
|
+
this._circle2DVao = (_a = this._circleProgram2D).createVAO.apply(_a, ["centerCoords2dflat", "rgbaMercator", "circleDashAngleMercator", "dashOpacityMercator"].map(function (key) { return obj(_this.bufferManagersCompMap.get(key)); }));
|
|
389
|
+
this._circle3DVao = (_b = this._circleProgram3D).createVAO.apply(_b, ["centerCoords3d", "targetCoords3d", "rgba", "circleDashAngle", "dashOpacity"].map(function (key) { return obj(_this.bufferManagersCompMap.get(key)); }));
|
|
390
|
+
this._oneDegree2DPaddingVao = this._padding2dProgram.createVAO({ buffer: this.bufferManagersCompMap.get("centerCoords2dflat").bufferManager.buffer, size: 2, stride: 0, offset: 0 }, { buffer: this.bufferManagersCompMap.get("centerCoords2dflatForPadding").bufferManager.buffer, size: 2, stride: 0, offset: 0 }, { buffer: this.bufferManagersCompMap.get("rgbaMercator").bufferManager.buffer, size: 4, stride: 0, offset: 0 });
|
|
391
|
+
// PADDING
|
|
392
|
+
// this one needs glue to assosiate rings and their big paddings since the count for center is not fixed
|
|
393
|
+
this.paddingBufferOrchestrator = new account_1.BufferOrchestrator({ capacity: initialCapacity });
|
|
394
|
+
this.bufferManagersCompMapPadding = new Map([
|
|
395
|
+
["circlePoint2d", {
|
|
396
|
+
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
397
|
+
'adaptor': function (item) { return item.circlePoint2d; },
|
|
398
|
+
}],
|
|
399
|
+
["paddingPoint2d", {
|
|
400
|
+
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
401
|
+
'adaptor': function (item) { return item.paddingPoint2d; },
|
|
402
|
+
}],
|
|
403
|
+
["circlePoint3d", {
|
|
404
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
405
|
+
'adaptor': function (item) { return item.circlePoint3d; }
|
|
406
|
+
}],
|
|
407
|
+
["paddingPoint3d", {
|
|
408
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
409
|
+
'adaptor': function (item) { return item.paddingPoint3d; }
|
|
410
|
+
}],
|
|
411
|
+
["rgba", {
|
|
412
|
+
'bufferManager': new account_1.BufferManager(gl, 4, { bufferType: bufferType, initialCapacity: initialCapacity }),
|
|
413
|
+
'adaptor': function (item) { return new Float32Array(item.rgba); }
|
|
414
|
+
}],
|
|
415
|
+
// ["dashOpacity", {
|
|
416
|
+
// 'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
417
|
+
// 'adaptor': (item) => new Float32Array([1]),
|
|
418
|
+
// }],
|
|
419
|
+
// ["dashRatio", {
|
|
420
|
+
// 'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
421
|
+
// 'adaptor': (item) => new Float32Array([1]),
|
|
422
|
+
// }],
|
|
423
|
+
]);
|
|
424
|
+
this._bigPadding3dFlatVAO = (_c = this._lineOnGlobe_bigPadding).createVAO.apply(_c, ["circlePoint2d", "circlePoint3d", "paddingPoint2d", "paddingPoint3d", null, null, "rgba",].map(function (key) {
|
|
425
|
+
return (key === null) ? null : obj(_this.bufferManagersCompMapPadding.get(key));
|
|
426
|
+
}));
|
|
427
|
+
this._padding3dOneDegreeVao = (_d = this._padding3dProgram).createVAO.apply(_d, ["centerCoords3d", "radius3d", "radius3dsmall", "rgba"].map(function (key) { return obj(_this.bufferManagersCompMap.get(key)); }));
|
|
428
|
+
};
|
|
429
|
+
// IMPLICIT METHODS
|
|
430
|
+
RangeRings.prototype.__reconstructCentralRingsBigPaddings = function (centerID) {
|
|
431
|
+
var globe = this.globe;
|
|
432
|
+
var centerItem = this._ringAccount.getCenter(centerID);
|
|
433
|
+
if (centerItem === undefined)
|
|
434
|
+
throw new Error("Center not found");
|
|
435
|
+
var long = centerItem.long, lat = centerItem.lat, stepAngle = centerItem.stepAngle, rgba = centerItem.rgba, rings = centerItem.rings, _a = centerItem.hide, hide = _a === void 0 ? 0 : _a, _b = centerItem.textHide, textHide = _b === void 0 ? 0 : _b, _c = centerItem.altitude, centerAltitude = _c === void 0 ? 0 : _c;
|
|
436
|
+
var result = [];
|
|
437
|
+
var color = hide === 1 ? new Float32Array([0, 0, 0, 0]) : new Float32Array(rgba);
|
|
438
|
+
for (var _i = 0, rings_1 = rings; _i < rings_1.length; _i++) {
|
|
439
|
+
var _d = rings_1[_i], ringID = _d.ringID, radius = _d.radius, padding = _d.padding, _e = _d.altitude, altitude = _e === void 0 ? centerAltitude : _e;
|
|
440
|
+
var azimuthAngle = 0;
|
|
441
|
+
while (azimuthAngle < 360) {
|
|
442
|
+
var circlePoint = globe.Math.FindPointByPolar(long, lat, radius, azimuthAngle); // long lat
|
|
443
|
+
var paddingPoint = globe.Math.FindPointByPolar(long, lat, radius - padding, azimuthAngle); // long lat
|
|
444
|
+
result.push({
|
|
445
|
+
key: (0, ring_account_1.ringBigPaddingKeyMethod)(centerID, ringID, azimuthAngle),
|
|
446
|
+
circlePoint2d: new Float32Array(globe.api_GetMercator2DPoint(circlePoint.long, circlePoint.lat)),
|
|
447
|
+
paddingPoint2d: new Float32Array(globe.api_GetMercator2DPoint(paddingPoint.long, paddingPoint.lat)),
|
|
448
|
+
circlePoint3d: coordOnSphere(circlePoint.long, circlePoint.lat, globe, altitude / 1000),
|
|
449
|
+
paddingPoint3d: coordOnSphere(paddingPoint.long, paddingPoint.lat, globe, altitude / 1000),
|
|
450
|
+
rgba: color,
|
|
451
|
+
hide: hide,
|
|
452
|
+
textHide: textHide
|
|
453
|
+
});
|
|
454
|
+
azimuthAngle += stepAngle;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return result;
|
|
458
|
+
};
|
|
459
|
+
RangeRings.prototype.__reconstructCentralRings = function (centerID) {
|
|
460
|
+
var globe = this.globe;
|
|
461
|
+
var centerItem = this._ringAccount.getCenter(centerID);
|
|
462
|
+
if (centerItem === undefined)
|
|
463
|
+
throw new Error("Center not found");
|
|
464
|
+
var long = centerItem.long, lat = centerItem.lat, rgba = centerItem.rgba, rings = centerItem.rings, _a = centerItem.hide, hide = _a === void 0 ? 0 : _a, _b = centerItem.textHide, textHide = _b === void 0 ? 0 : _b, _c = centerItem.altitude, centralAltitude = _c === void 0 ? 0 : _c;
|
|
465
|
+
var centerCoords3d = coordOnSphere(long, lat, globe, centralAltitude / 1000);
|
|
466
|
+
var result = [];
|
|
467
|
+
for (var _i = 0, rings_2 = rings; _i < rings_2.length; _i++) {
|
|
468
|
+
var _d = rings_2[_i], ringID = _d.ringID, radius = _d.radius, padding = _d.padding, __identity__ = _d.__identity__, _e = _d.altitude, altitude = _e === void 0 ? centralAltitude : _e;
|
|
469
|
+
var key = __identity__;
|
|
470
|
+
var centerCoords2dflat = (0, circle_accurate_flat_1.centerCoords2dflatDataCreatorWithRadius)(globe, long, lat, radius, { edgeCount: CIRCLE_FLAT_EDGE_COUNT });
|
|
471
|
+
var radiusPadding = hide === enum_1.ENUM_HIDE.HIDE_1_DEGREE_PADDINGS ? radius : radius - padding / 3;
|
|
472
|
+
var targetPoint = globe.Math.FindPointByPolar(long, lat, radius, 0); // long lat
|
|
473
|
+
var targetCoords3d = coordOnSphere(targetPoint.long, targetPoint.lat, globe, altitude / 1000);
|
|
474
|
+
var centerCoords2dflatForPadding = (0, circle_accurate_flat_1.centerCoords2dflatDataCreatorWithRadius)(globe, long, lat, radiusPadding, { edgeCount: CIRCLE_FLAT_EDGE_COUNT });
|
|
475
|
+
result.push({
|
|
476
|
+
key: key,
|
|
477
|
+
centerCoords3d: centerCoords3d,
|
|
478
|
+
targetCoords3d: targetCoords3d,
|
|
479
|
+
centerCoords2dflat: centerCoords2dflat,
|
|
480
|
+
radius: radius,
|
|
481
|
+
padding: padding,
|
|
482
|
+
rgba: rgba,
|
|
483
|
+
centerCoords2dflatForPadding: centerCoords2dflatForPadding,
|
|
484
|
+
hide: hide,
|
|
485
|
+
textHide: textHide
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
return result;
|
|
489
|
+
};
|
|
490
|
+
RangeRings.prototype.__reconstructCentralPaddingProperties = function (centerID) {
|
|
491
|
+
var centerItem = this._ringAccount.getCenter(centerID);
|
|
492
|
+
if (centerItem === undefined)
|
|
493
|
+
throw new Error("Center not found");
|
|
494
|
+
var stepAngle = centerItem.stepAngle, rgba = centerItem.rgba, rings = centerItem.rings, _a = centerItem.hide, hide = _a === void 0 ? 0 : _a, _b = centerItem.textHide, textHide = _b === void 0 ? 0 : _b;
|
|
495
|
+
var result = [];
|
|
496
|
+
for (var _i = 0, rings_3 = rings; _i < rings_3.length; _i++) {
|
|
497
|
+
var ringID = rings_3[_i].ringID;
|
|
498
|
+
var angle = 0;
|
|
499
|
+
while (angle < 360) {
|
|
500
|
+
result.push({
|
|
501
|
+
key: (0, ring_account_1.ringBigPaddingKeyMethod)(centerID, ringID, angle),
|
|
502
|
+
rgba: hide === 1 ? new Float32Array([0, 0, 0, 0]) : rgba,
|
|
503
|
+
textHide: textHide
|
|
504
|
+
});
|
|
505
|
+
angle += stepAngle;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
return result;
|
|
509
|
+
};
|
|
510
|
+
RangeRings.prototype.__reconstructCentralProperties = function (centerID) {
|
|
511
|
+
var centerItem = this._ringAccount.getCenter(centerID);
|
|
512
|
+
if (centerItem === undefined)
|
|
513
|
+
throw new Error("Center not found");
|
|
514
|
+
var rgba = centerItem.rgba, rings = centerItem.rings, _a = centerItem.hide, hide = _a === void 0 ? 0 : _a, _b = centerItem.textHide, textHide = _b === void 0 ? 0 : _b;
|
|
515
|
+
var result = [];
|
|
516
|
+
for (var _i = 0, rings_4 = rings; _i < rings_4.length; _i++) {
|
|
517
|
+
var _c = rings_4[_i], ringID = _c.ringID, __identity__ = _c.__identity__;
|
|
518
|
+
var key = __identity__;
|
|
519
|
+
result.push({
|
|
520
|
+
key: key,
|
|
521
|
+
rgba: hide === enum_1.ENUM_HIDE.HIDE ? new Float32Array([0, 0, 0, 0]) : rgba,
|
|
522
|
+
textHide: textHide
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
return result;
|
|
526
|
+
};
|
|
527
|
+
// GLOBE API
|
|
528
|
+
RangeRings.prototype.init = function (globe, gl) {
|
|
529
|
+
this.globe = globe;
|
|
530
|
+
this.gl = gl;
|
|
531
|
+
this._initPrograms();
|
|
532
|
+
this._initBufferManagers();
|
|
533
|
+
if (this._showNumbers) {
|
|
534
|
+
this.paddingTextPlugin = new rangeringangletext_1.default(globe, this.id + "text", { style: this._numbersStyle, opacity: this._opacity });
|
|
535
|
+
delete this._numbersStyle;
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
RangeRings.prototype.draw3D = function () {
|
|
539
|
+
var _a = this, globe = _a.globe, gl = _a.gl, _circleProgram2D = _a._circleProgram2D, _circleProgram3D = _a._circleProgram3D, _padding2dProgram = _a._padding2dProgram, _padding3dProgram = _a._padding3dProgram, _lineOnGlobe_bigPadding = _a._lineOnGlobe_bigPadding, _circle2DVao = _a._circle2DVao, _circle3DVao = _a._circle3DVao, _oneDegree2DPaddingVao = _a._oneDegree2DPaddingVao, _padding3dOneDegreeVao = _a._padding3dOneDegreeVao, _bigPadding3dFlatVAO = _a._bigPadding3dFlatVAO, bufferOrchestrator = _a.bufferOrchestrator, paddingBufferOrchestrator = _a.paddingBufferOrchestrator, _opacity = _a._opacity, _oneDegreePadding = _a._oneDegreePadding, _zAlphaOnDegreePadding = _a._zAlphaOnDegreePadding;
|
|
540
|
+
gl.disable(gl.DEPTH_TEST);
|
|
541
|
+
var is3D = globe.api_GetCurrentGeometry() === 0;
|
|
542
|
+
// const lod = globe.api_GetCurrentLOD();
|
|
543
|
+
if (is3D) {
|
|
544
|
+
_circleProgram3D.draw(_circle3DVao, bufferOrchestrator.length, _opacity);
|
|
545
|
+
if (_oneDegreePadding)
|
|
546
|
+
_padding3dProgram.draw(_padding3dOneDegreeVao, bufferOrchestrator.length, 360, 1, _opacity, _zAlphaOnDegreePadding);
|
|
547
|
+
}
|
|
548
|
+
else {
|
|
549
|
+
_circleProgram2D.draw(_circle2DVao, bufferOrchestrator.length, CIRCLE_FLAT_EDGE_COUNT, _opacity);
|
|
550
|
+
// _padding2dProgram.draw(bigPaddingVAO, paddingBufferOrchestrator.length, _opacity);
|
|
551
|
+
if (_oneDegreePadding)
|
|
552
|
+
_padding2dProgram.draw(_oneDegree2DPaddingVao, bufferOrchestrator.length * CIRCLE_FLAT_EDGE_COUNT, _opacity, _zAlphaOnDegreePadding);
|
|
553
|
+
}
|
|
554
|
+
var drawOptions = { drawRange: { first: 0, count: paddingBufferOrchestrator.length } };
|
|
555
|
+
_lineOnGlobe_bigPadding.draw(_bigPadding3dFlatVAO, drawOptions, _opacity);
|
|
556
|
+
this._textWritersMap.forEach(function (textWriter) { return textWriter.draw(); });
|
|
557
|
+
gl.enable(gl.DEPTH_TEST);
|
|
558
|
+
};
|
|
559
|
+
RangeRings.prototype.free = function () {
|
|
560
|
+
var _a;
|
|
561
|
+
if (this._isFreed)
|
|
562
|
+
return;
|
|
563
|
+
var globe = this.globe;
|
|
564
|
+
this.bufferManagersCompMap.forEach(function (_a) {
|
|
565
|
+
var bufferManager = _a.bufferManager;
|
|
566
|
+
return bufferManager.free();
|
|
567
|
+
});
|
|
568
|
+
this.bufferManagersCompMapPadding.forEach(function (_a) {
|
|
569
|
+
var bufferManager = _a.bufferManager;
|
|
570
|
+
return bufferManager.free();
|
|
571
|
+
});
|
|
572
|
+
// delete vaos
|
|
573
|
+
this.gl.deleteVertexArray(this._circle2DVao);
|
|
574
|
+
this.gl.deleteVertexArray(this._circle3DVao);
|
|
575
|
+
this.gl.deleteVertexArray(this._oneDegree2DPaddingVao);
|
|
576
|
+
this.gl.deleteVertexArray(this._padding3dOneDegreeVao);
|
|
577
|
+
this.gl.deleteVertexArray(this._bigPadding3dFlatVAO);
|
|
578
|
+
// delete programs
|
|
579
|
+
circle_accurate_flat_1.CircleCache.release(globe);
|
|
580
|
+
circle_accurate_3d_1.CircleCache.release(globe);
|
|
581
|
+
lines_color_instanced_flat_1.LinesColorInstancedFlatCache.release(globe);
|
|
582
|
+
degree_padding_around_circle_3d_1.CirclePadding3DCache.release(globe);
|
|
583
|
+
naive_accurate_flexible_1.LineOnGlobeCache.release(globe);
|
|
584
|
+
this._circleProgram2D = null;
|
|
585
|
+
this._circleProgram3D = null;
|
|
586
|
+
this._padding2dProgram = null;
|
|
587
|
+
this._padding3dProgram = null;
|
|
588
|
+
this._lineOnGlobe_bigPadding = null;
|
|
589
|
+
(_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.free();
|
|
590
|
+
this._isFreed = true;
|
|
591
|
+
};
|
|
592
|
+
RangeRings.prototype.__contextTextWriterUpdate = function (centerIDs, textWriterIDs) {
|
|
593
|
+
var _this = this;
|
|
594
|
+
if (textWriterIDs === void 0) { textWriterIDs = null; }
|
|
595
|
+
var textWriters = null;
|
|
596
|
+
if (textWriterIDs === null) {
|
|
597
|
+
textWriters = Array.from(this._textWritersMap.values());
|
|
598
|
+
}
|
|
599
|
+
else if (textWriterIDs.length === 0) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
textWriters = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
|
|
604
|
+
}
|
|
605
|
+
centerIDs.forEach(function (centerID) { _this._ringAccount.textUpdate(centerID, textWriters, _this._textDataPreAdaptor); });
|
|
606
|
+
};
|
|
607
|
+
return RangeRings;
|
|
608
|
+
}());
|
|
609
|
+
exports.RangeRings = RangeRings;
|
|
610
|
+
var textWriterGetOrThrow = (0, get_1.mapGetOrThrow)("textWriterIDs is invalid");
|