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