@pirireis/webglobeplugins 0.9.11 → 0.9.12
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 +8 -8
- package/Math/arc.js +18 -18
- package/Math/bounds/line-bbox.js +78 -80
- package/Math/constants.js +3 -3
- package/Math/juction/arc-plane.js +23 -23
- package/Math/juction/line-sphere.js +11 -11
- package/Math/juction/plane-plane.js +11 -11
- package/Math/line.js +14 -16
- package/Math/methods.js +65 -70
- package/Math/plane.js +16 -18
- package/Math/quaternion.js +45 -49
- package/Math/utils.js +2 -2
- package/Math/vec3.js +42 -45
- package/algorithms/search-binary.js +4 -4
- package/altitude-locator/draw-subset-obj.js +7 -8
- package/altitude-locator/plugin.js +98 -114
- package/arrowfield/adaptor.js +3 -4
- package/arrowfield/index.js +2 -2
- package/arrowfield/plugin.js +62 -65
- package/bearing-line/index.js +1 -1
- package/bearing-line/plugin.js +200 -226
- package/circle-line-chain/chain-list-map.js +82 -88
- package/circle-line-chain/plugin.js +134 -165
- package/circle-line-chain/util.js +1 -1
- package/compass-rose/compass-rose-padding-flat.js +108 -133
- package/compass-rose/compass-text-writer.js +62 -70
- package/compass-rose/index.js +2 -2
- package/compassrose/compassrose.js +46 -50
- package/compassrose/index.js +1 -1
- package/heatwave/index.js +2 -2
- package/heatwave/isobar/objectarraylabels.js +44 -48
- package/heatwave/isobar/plugin.js +104 -123
- package/heatwave/isobar/quadtreecontours.js +76 -92
- package/heatwave/plugins/heatwaveglobeshell.js +69 -87
- package/index.js +11 -11
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +32 -64
- package/partialrings/index.js +1 -1
- package/partialrings/plugin.js +48 -84
- package/partialrings/program.js +136 -47
- package/pin/pin-object-array.js +83 -86
- package/pin/pin-point-totem.js +21 -22
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
- package/point-heat-map/plugin-webworker.js +40 -45
- package/point-heat-map/point-to-heat-map-flow.js +40 -42
- package/point-tracks/key-methods.js +1 -1
- package/point-tracks/plugin.js +137 -162
- package/programs/arrowfield/index.js +1 -1
- package/programs/arrowfield/logic.js +170 -62
- package/programs/arrowfield/object.js +33 -35
- package/programs/data2legend/density-to-legend.js +45 -21
- package/programs/data2legend/point-to-density-texture.js +52 -27
- package/programs/float2legendwithratio/index.js +1 -1
- package/programs/float2legendwithratio/logic.js +88 -42
- package/programs/float2legendwithratio/object.js +43 -46
- package/programs/globe-util/is-globe-moved.js +10 -11
- package/programs/globeshell/index.js +1 -1
- package/programs/globeshell/wiggle/index.js +1 -1
- package/programs/globeshell/wiggle/logic.js +191 -98
- package/programs/globeshell/wiggle/object.js +33 -35
- package/programs/helpers/blender/program.js +36 -19
- package/programs/helpers/fadeaway/index.js +1 -1
- package/programs/helpers/fadeaway/logic.js +35 -13
- package/programs/helpers/fadeaway/object.js +9 -10
- package/programs/helpers/index.js +1 -1
- package/programs/index.js +8 -8
- package/programs/line-on-globe/angled-line.js +91 -32
- package/programs/line-on-globe/circle-accurate-3d.js +82 -32
- package/programs/line-on-globe/circle-accurate-flat.js +108 -50
- package/programs/line-on-globe/circle-accurate.js +103 -33
- package/programs/line-on-globe/circle.js +97 -32
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +83 -33
- package/programs/line-on-globe/lines-color-instanced-flat.js +79 -34
- package/programs/line-on-globe/linestrip.js +111 -45
- package/programs/line-on-globe/naive-accurate-flexible.js +120 -50
- package/programs/line-on-globe/to-the-surface.js +58 -29
- package/programs/line-on-globe/util.js +1 -1
- package/programs/picking/pickable-renderer.js +117 -33
- package/programs/point-on-globe/element-globe-surface-glow.js +78 -38
- package/programs/point-on-globe/element-point-glow.js +103 -35
- package/programs/point-on-globe/square-pixel-point.js +76 -27
- package/programs/programcache.js +13 -13
- package/programs/rings/distancering/circleflatprogram.js +63 -21
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +156 -145
- package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -197
- package/programs/rings/distancering/index.js +4 -4
- package/programs/rings/distancering/paddyflatprogram.js +73 -20
- package/programs/rings/distancering/paddyflatprogram2d.js +75 -22
- package/programs/rings/distancering/paddyflatprogram3d.js +73 -20
- package/programs/rings/partial-ring/piece-of-pie.js +137 -35
- package/programs/totems/camerauniformblock.js +64 -51
- package/programs/totems/canvas-webglobe-info.js +48 -40
- package/programs/totems/gpu-selection-uniform-block.js +44 -40
- package/programs/totems/index.js +1 -1
- package/programs/two-d/pixel-padding-for-compass.js +90 -29
- package/programs/util.js +6 -7
- package/programs/vectorfields/index.js +1 -1
- package/programs/vectorfields/logics/drawrectangleparticles.js +70 -29
- package/programs/vectorfields/logics/index.js +3 -3
- package/programs/vectorfields/logics/pixelbased.js +91 -35
- package/programs/vectorfields/logics/ubo.js +31 -25
- package/programs/vectorfields/pingpongbuffermanager.js +30 -34
- package/rangerings/index.js +4 -4
- package/rangerings/plugin.js +202 -258
- package/rangerings/rangeringangletext.js +108 -120
- package/rangerings/ring-account.js +52 -69
- package/shaders/fragment-toy/firework.js +55 -1
- package/shaders/fragment-toy/singularity.js +55 -1
- package/timetracks/adaptors-line-strip.js +26 -37
- package/timetracks/adaptors.js +47 -61
- package/timetracks/index.js +4 -4
- package/timetracks/plugin-line-strip.js +63 -71
- package/timetracks/plugin.js +69 -77
- package/timetracks/program-line-strip.js +296 -103
- package/timetracks/program.js +419 -113
- package/timetracks/programpoint-line-strip.js +97 -44
- package/timetracks/programpoint.js +90 -44
- package/util/account/bufferoffsetmanager.js +72 -95
- package/util/account/index.js +1 -1
- package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -44
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -94
- package/util/account/single-attribute-buffer-management/index.js +3 -3
- package/util/account/single-attribute-buffer-management/object-store.js +29 -30
- package/util/account/util.js +2 -4
- package/util/algorithms/search-binary.js +4 -4
- package/util/check/get.js +5 -5
- package/util/check/typecheck.js +13 -15
- package/util/geometry/index.js +9 -11
- package/util/gl-util/buffer/attribute-loader.js +8 -20
- package/util/gl-util/buffer/index.js +1 -1
- package/util/gl-util/draw-options/methods.js +8 -9
- package/util/gl-util/uniform-block/manager.js +67 -67
- package/util/heatwavedatamanager/datamanager.js +56 -116
- package/util/heatwavedatamanager/index.js +2 -2
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +37 -40
- package/util/heatwavedatamanager/pointcoordsmeta.js +9 -10
- package/util/index.js +6 -6
- package/util/interpolation/timetrack/index.js +1 -1
- package/util/interpolation/timetrack/timetrack-interpolator.js +27 -29
- package/util/interpolation/timetrack/web-worker-str.js +179 -1
- package/util/interpolation/timetrack/web-worker.js +4 -4
- package/util/jshelpers/data-filler.js +7 -7
- package/util/jshelpers/timefilters.js +7 -7
- package/util/picking/fence.js +7 -7
- package/util/picking/picker-displayer.js +46 -52
- package/util/programs/draw-texture-on-canvas.js +39 -21
- package/util/programs/shapesonglobe.js +104 -64
- package/util/programs/supersampletotextures.js +45 -39
- package/util/programs/texturetoglobe.js +98 -48
- package/util/shaderfunctions/geometrytransformations.js +322 -27
- package/util/shaderfunctions/nodata.js +7 -1
- package/util/shaderfunctions/noisefunctions.js +39 -9
- package/util/surface-line-data/arcs-to-cuts.js +20 -23
- package/util/webglobe/rasteroverlay.js +35 -37
- package/util/webglobjectbuilders.js +55 -60
- package/util/webglobjectbuilders1.js +48 -49
- package/waveparticles/adaptor.js +6 -7
- package/waveparticles/index.js +2 -2
- package/waveparticles/plugin.js +79 -84
- package/wind/imagetovectorfieldandmagnitude.js +15 -15
- package/wind/index.js +4 -4
- package/wind/plugin.js +453 -251
- package/wind/vectorfieldimage.js +5 -5
- package/write-text/attached-text-writer.js +46 -48
- package/write-text/context-text.js +51 -58
- package/write-text/context-text3.js +69 -74
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CircleLineChainPlugin = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
const naive_accurate_flexible_1 = require("../programs/line-on-globe/naive-accurate-flexible");
|
|
5
|
+
const circle_accurate_flat_1 = require("../programs/line-on-globe/circle-accurate-flat");
|
|
6
|
+
const circle_accurate_3d_1 = require("../programs/line-on-globe/circle-accurate-3d");
|
|
7
|
+
const account_1 = require("../util/account");
|
|
8
|
+
const chain_list_map_1 = require("./chain-list-map");
|
|
9
|
+
const get_1 = require("../util/check/get");
|
|
10
|
+
const util_1 = require("./util");
|
|
11
|
+
const data_filler_1 = require("../util/jshelpers/data-filler");
|
|
12
|
+
const context_text3_1 = require("../write-text/context-text3");
|
|
13
|
+
const typecheck_1 = require("../util/check/typecheck");
|
|
14
|
+
const attribute_loader_1 = require("../util/gl-util/buffer/attribute-loader");
|
|
15
|
+
const index_1 = require("../util/geometry/index");
|
|
16
16
|
/**
|
|
17
17
|
* Insert info to chain list map (nodes and properties)
|
|
18
18
|
*
|
|
@@ -55,19 +55,18 @@ var index_1 = require("../util/geometry/index");
|
|
|
55
55
|
*
|
|
56
56
|
* //property {Array<Node>} nodes
|
|
57
57
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const textWriterGetOrThrow = (0, get_1.mapGetOrThrow)("textWriterIDs is invalid");
|
|
59
|
+
class CircleLineChainPlugin {
|
|
60
60
|
/**
|
|
61
61
|
*
|
|
62
62
|
* @param {*} id
|
|
63
63
|
* @param {Map<[key, ContextTextWriter3]} textWritersMap //import { ContextTextWriter3 } from "@pirireis/webglobeplugins/write-text/context-text3";
|
|
64
64
|
*/
|
|
65
|
-
|
|
66
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.drawCircleOn, drawCircleOn = _c === void 0 ? true : _c, _d = _b.textWritersMap, textWritersMap = _d === void 0 ? new Map() : _d, _e = _b.textDataPreAdaptor, textDataPreAdaptor = _e === void 0 ? null : _e, _f = _b.circleFlatEdgeCount, circleFlatEdgeCount = _f === void 0 ? circle_accurate_flat_1.EDGE_COUNT - 2 : _f;
|
|
65
|
+
constructor(id, { drawCircleOn = true, textWritersMap = new Map(), textDataPreAdaptor = null, circleFlatEdgeCount = circle_accurate_flat_1.EDGE_COUNT - 2 } = {}) {
|
|
67
66
|
this.id = id;
|
|
68
67
|
this._checktextWritersMap(textWritersMap);
|
|
69
68
|
this._textWritersMap = textWritersMap;
|
|
70
|
-
this._textWritersMap.forEach(
|
|
69
|
+
this._textWritersMap.forEach((writer) => writer.setKeyAdaptor((v, i, c, properties) => v.__identity__));
|
|
71
70
|
this._opacity = 1;
|
|
72
71
|
this._chainListMap = new chain_list_map_1.ChainListMap(util_1.keyMethod);
|
|
73
72
|
this.bufferOrchestrator = new account_1.BufferOrchestrator({ capacity: 10 });
|
|
@@ -77,12 +76,12 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
77
76
|
}
|
|
78
77
|
// init
|
|
79
78
|
// API
|
|
80
|
-
|
|
79
|
+
setDrawCircleOn(bool) {
|
|
81
80
|
if (typeof bool !== 'boolean')
|
|
82
81
|
throw new Error("setDrawCircleOn parameter must be a boolean");
|
|
83
82
|
this._drawCircleOn = bool;
|
|
84
83
|
this.globe.DrawRender();
|
|
85
|
-
}
|
|
84
|
+
}
|
|
86
85
|
// ---- updateBulk
|
|
87
86
|
/**
|
|
88
87
|
* @param {Array<chain>} data
|
|
@@ -91,57 +90,48 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
91
90
|
* @property {Array<Node>} nodes
|
|
92
91
|
|
|
93
92
|
*/
|
|
94
|
-
|
|
95
|
-
var _this = this;
|
|
96
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
93
|
+
updateCoordinatesBulk(data, { textWriterIDs = [] } = {}) {
|
|
97
94
|
// update implicit data structure
|
|
98
95
|
// find keys to update.. (inserted data and the radius of "from")
|
|
99
96
|
// updateBuffers
|
|
100
97
|
// update text
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
const chainKeys = [];
|
|
99
|
+
for (const chain of data) {
|
|
103
100
|
chainKeys.push(chain.chainKey);
|
|
104
|
-
chain.nodes.forEach(
|
|
105
|
-
|
|
101
|
+
chain.nodes.forEach((node) => {
|
|
102
|
+
this._chainListMap.updateCoordsinatesOfNode(node, chain.chainKey);
|
|
106
103
|
});
|
|
107
|
-
};
|
|
108
|
-
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
|
109
|
-
var chain = data_1[_i];
|
|
110
|
-
_loop_1(chain);
|
|
111
104
|
}
|
|
112
105
|
this._reconstructChains(chainKeys);
|
|
113
106
|
this._updateTexts(chainKeys, textWriterIDs);
|
|
114
|
-
}
|
|
107
|
+
}
|
|
115
108
|
/**
|
|
116
109
|
* @param {*} chainKey
|
|
117
110
|
* @param {Array<{nodeKey, circleProperties:Map[propertyName ,value], lineProperties:Map[propertyName ,value] }} propertyMap
|
|
118
111
|
*/
|
|
119
|
-
|
|
120
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
112
|
+
updateNodesProperties(chainKey, nodesAndPropertyMap, { textWriterIDs = [] } = {}) {
|
|
121
113
|
this._chainListMap.updateNodesProperties(chainKey, nodesAndPropertyMap);
|
|
122
114
|
this._reconstructChains([chainKey]);
|
|
123
115
|
this._updateTexts([chainKey], textWriterIDs);
|
|
124
116
|
this.globe.DrawRender();
|
|
125
|
-
}
|
|
117
|
+
}
|
|
126
118
|
/**
|
|
127
119
|
* @param {*} chainKey
|
|
128
120
|
* @param {Map<propertyName ,value} propertyMap
|
|
129
121
|
*/
|
|
130
|
-
|
|
131
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
122
|
+
updateChainProperties(chainKey, propertyMap, { textWriterIDs = [] } = {}) {
|
|
132
123
|
this._chainListMap.updateChainProperties(chainKey, propertyMap);
|
|
133
124
|
this._reconstructChains([chainKey]);
|
|
134
125
|
if (textWriterIDs)
|
|
135
126
|
this._updateTexts([chainKey], textWriterIDs);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
127
|
+
}
|
|
128
|
+
updateNodeCoordinates(node, chainKey, { textWriterIDs = [] } = {}) {
|
|
139
129
|
this._chainListMap.updateCoordsinatesOfNode(node, chainKey);
|
|
140
130
|
if (textWriterIDs)
|
|
141
131
|
this._updateTexts([chainKey], textWriterIDs);
|
|
142
132
|
this._reconstructChains([chainKey]);
|
|
143
133
|
this.globe.DrawRender();
|
|
144
|
-
}
|
|
134
|
+
}
|
|
145
135
|
/**
|
|
146
136
|
*
|
|
147
137
|
|
|
@@ -149,27 +139,23 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
149
139
|
* @param {Array<string>} textWriterIDs | textWritersMap keys to be used for writing text.
|
|
150
140
|
* @param {Array<string>} chainKeys | if empty, all texts will be updated
|
|
151
141
|
*/
|
|
152
|
-
|
|
153
|
-
if (textWriterIDs === void 0) { textWriterIDs = []; }
|
|
154
|
-
if (chainKeys === void 0) { chainKeys = null; }
|
|
142
|
+
updateText(textWriterIDs = [], chainKeys = null) {
|
|
155
143
|
if (chainKeys === null)
|
|
156
144
|
chainKeys = this._chainListMap.getAllChainKeysIterator();
|
|
157
145
|
this._updateTexts(chainKeys, textWriterIDs);
|
|
158
146
|
this.globe.DrawRender();
|
|
159
|
-
}
|
|
147
|
+
}
|
|
160
148
|
// ---- insertBulk
|
|
161
149
|
/**
|
|
162
150
|
*
|
|
163
151
|
* @param {Array<chain>} data
|
|
164
152
|
*/
|
|
165
|
-
|
|
166
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
153
|
+
insertBulk(data, { textWriterIDs = [] } = {}) {
|
|
167
154
|
// first insert everything to implicit structure,
|
|
168
155
|
// then iterate over data again to update text
|
|
169
156
|
// let _reconstractChainBufferData method interact with data and bufferOrchestrator.
|
|
170
|
-
|
|
171
|
-
for (
|
|
172
|
-
var _d = data_2[_i], chainKey = _d.chainKey, chainProperties = _d.chainProperties, nodes = _d.nodes;
|
|
157
|
+
const chainKeysToConstruct = [];
|
|
158
|
+
for (const { chainKey, chainProperties, nodes } of data) {
|
|
173
159
|
this._chainListMap.setChain(chainKey, nodes);
|
|
174
160
|
this._chainListMap.setChainProperties(chainKey, chainProperties);
|
|
175
161
|
chainKeysToConstruct.push(chainKey);
|
|
@@ -178,112 +164,104 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
178
164
|
if (textWriterIDs)
|
|
179
165
|
this._updateTexts(chainKeysToConstruct, textWriterIDs);
|
|
180
166
|
this.globe.DrawRender();
|
|
181
|
-
}
|
|
167
|
+
}
|
|
182
168
|
/**
|
|
183
169
|
* @param {Node} node
|
|
184
170
|
* @param {*} chainKey
|
|
185
171
|
* @param {*} theNodeKeyFront | node key of the next node, null places to the last
|
|
186
172
|
*/
|
|
187
|
-
|
|
188
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.theNodeKeyFront, theNodeKeyFront = _c === void 0 ? null : _c, _d = _b.textWriterIDs, textWriterIDs = _d === void 0 ? [] : _d;
|
|
173
|
+
addNode(node, chainKey, { theNodeKeyFront = null, textWriterIDs = [] } = {}) {
|
|
189
174
|
this._chainListMap.addNode(node, chainKey, theNodeKeyFront);
|
|
190
175
|
if (textWriterIDs)
|
|
191
176
|
this._updateTexts([chainKey], textWriterIDs);
|
|
192
177
|
this._reconstructChains([chainKey]);
|
|
193
178
|
this.globe.DrawRender();
|
|
194
|
-
}
|
|
195
|
-
|
|
179
|
+
}
|
|
180
|
+
setOpacity(opacity) {
|
|
196
181
|
(0, typecheck_1.opacityCheck)(opacity);
|
|
197
|
-
this._textWritersMap.forEach(
|
|
182
|
+
this._textWritersMap.forEach((writer) => writer.setOpacity(opacity));
|
|
198
183
|
this._opacity = opacity;
|
|
199
184
|
this.globe.DrawRender();
|
|
200
|
-
}
|
|
201
|
-
|
|
185
|
+
}
|
|
186
|
+
getChain(chainKey) {
|
|
202
187
|
this._chainListMap.getChain(chainKey);
|
|
203
|
-
}
|
|
188
|
+
}
|
|
204
189
|
/**
|
|
205
190
|
*
|
|
206
191
|
* @param {*} chainKeys
|
|
207
192
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
for (
|
|
211
|
-
|
|
212
|
-
bufferKeys.push.apply(bufferKeys, this._chainListMap.deleteChainAndReturnChainKeys(chainKey));
|
|
193
|
+
deleteChains(chainKeys) {
|
|
194
|
+
const bufferKeys = [];
|
|
195
|
+
for (const chainKey of chainKeys) {
|
|
196
|
+
bufferKeys.push(...this._chainListMap.deleteChainAndReturnChainKeys(chainKey));
|
|
213
197
|
}
|
|
214
|
-
this._textWritersMap.forEach(
|
|
198
|
+
this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
|
|
215
199
|
this._updateTexts(chainKeys, this._textWritersMap.keys());
|
|
216
200
|
this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
|
|
217
201
|
this.globe.DrawRender();
|
|
218
|
-
}
|
|
202
|
+
}
|
|
219
203
|
/**
|
|
220
204
|
*
|
|
221
205
|
* @param {Array<{chainKey, nodeKeys:[]} keysAndNodes
|
|
222
206
|
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
keysAndNodes.forEach(function (_a) {
|
|
229
|
-
var chainKey = _a.chainKey, nodeKeys = _a.nodeKeys;
|
|
230
|
-
bufferKeys.push.apply(bufferKeys, _this._chainListMap.deleteNodesBelongToAChain(chainKey, nodeKeys));
|
|
207
|
+
deleteNodes(keysAndNodes, { textWriterIDs = [] } = {}) {
|
|
208
|
+
const bufferKeys = [];
|
|
209
|
+
const chainKeysToReconstuct = [];
|
|
210
|
+
keysAndNodes.forEach(({ chainKey, nodeKeys }) => {
|
|
211
|
+
bufferKeys.push(...this._chainListMap.deleteNodesBelongToAChain(chainKey, nodeKeys));
|
|
231
212
|
chainKeysToReconstuct.push(chainKey);
|
|
232
213
|
});
|
|
233
|
-
this._textWritersMap.forEach(
|
|
214
|
+
this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
|
|
234
215
|
this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
|
|
235
216
|
this._reconstructChains(chainKeysToReconstuct);
|
|
236
217
|
this._updateTexts(chainKeysToReconstuct, textWriterIDs);
|
|
237
218
|
this.globe.DrawRender();
|
|
238
|
-
}
|
|
239
|
-
|
|
219
|
+
}
|
|
220
|
+
init(globe, gl) {
|
|
240
221
|
this.gl = gl;
|
|
241
222
|
this.globe = globe;
|
|
242
223
|
this._initOrchestrations();
|
|
243
|
-
}
|
|
224
|
+
}
|
|
244
225
|
// implicit
|
|
245
|
-
|
|
226
|
+
_checktextWritersMap(textWritersMap) {
|
|
246
227
|
if (!(textWritersMap instanceof Map))
|
|
247
228
|
throw new Error("textWritersMap is not an instance of Map");
|
|
248
|
-
textWritersMap.forEach(
|
|
229
|
+
textWritersMap.forEach((v) => {
|
|
249
230
|
if (!(v instanceof context_text3_1.ContextTextWriter3))
|
|
250
231
|
throw new Error("textWritersMap element is not an instance of ContextTextWriter3");
|
|
251
232
|
});
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
var _this = this;
|
|
256
|
-
var _d = this, gl = _d.gl, globe = _d.globe;
|
|
233
|
+
}
|
|
234
|
+
_initOrchestrations() {
|
|
235
|
+
const { gl, globe } = this;
|
|
257
236
|
this.lineProgram = naive_accurate_flexible_1.LineOnGlobeCache.get(globe);
|
|
258
237
|
this.circleProgram2d = circle_accurate_flat_1.CircleCache.get(globe);
|
|
259
238
|
this.circle3DProgram = circle_accurate_3d_1.CircleCache.get(globe);
|
|
260
|
-
|
|
239
|
+
const _circleFlatEdgeCount = this._circleFlatEdgeCount;
|
|
261
240
|
{
|
|
262
241
|
// createBuffers
|
|
263
|
-
|
|
264
|
-
|
|
242
|
+
const bufferType = "DYNAMIC_DRAW";
|
|
243
|
+
const initialCapacity = this.bufferOrchestrator.capacity;
|
|
265
244
|
this.bufferManagersCompMap = new Map([
|
|
266
245
|
["centerCoords2d", {
|
|
267
|
-
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType
|
|
268
|
-
'adaptor':
|
|
246
|
+
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
|
|
247
|
+
'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.long, item.lat)),
|
|
269
248
|
}],
|
|
270
249
|
["centerCoords3d", {
|
|
271
|
-
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType
|
|
272
|
-
'adaptor':
|
|
250
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
|
|
251
|
+
'adaptor': (item) => (0, index_1.sphereCoord)(item.long, item.lat, globe, item.altitude),
|
|
273
252
|
}],
|
|
274
253
|
["targetCoords2d", {
|
|
275
|
-
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType
|
|
276
|
-
'adaptor':
|
|
254
|
+
'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
|
|
255
|
+
'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.targetLong, item.targetLat)),
|
|
277
256
|
}],
|
|
278
257
|
["targetCoords3d", {
|
|
279
|
-
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType
|
|
280
|
-
'adaptor':
|
|
258
|
+
'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
|
|
259
|
+
'adaptor': (item) => (0, index_1.sphereCoord)(item.targetLong, item.targetLat, globe, item.altitude),
|
|
281
260
|
}],
|
|
282
261
|
["rgba", {
|
|
283
|
-
'bufferManager': new account_1.BufferManager(gl, 4, { bufferType
|
|
284
|
-
'adaptor':
|
|
285
|
-
|
|
286
|
-
if ((_a = item.lineProperties) === null || _a === void 0 ? void 0 : _a.rgba)
|
|
262
|
+
'bufferManager': new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
|
|
263
|
+
'adaptor': (item) => {
|
|
264
|
+
if (item.lineProperties?.rgba)
|
|
287
265
|
return new Float32Array(item.lineProperties.rgba);
|
|
288
266
|
return new Float32Array(item.chainProperties.rgba);
|
|
289
267
|
}
|
|
@@ -293,87 +271,80 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
293
271
|
// 'adaptor': (item) => new Float32Array([item.bigRadius])
|
|
294
272
|
// }],
|
|
295
273
|
["dashRatio", {
|
|
296
|
-
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType
|
|
297
|
-
'adaptor':
|
|
274
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
275
|
+
'adaptor': (item) => new Float32Array([item.chainProperties.dashRatio])
|
|
298
276
|
}],
|
|
299
277
|
["dashOpacity", {
|
|
300
|
-
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType
|
|
301
|
-
'adaptor':
|
|
278
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
279
|
+
'adaptor': (item) => new Float32Array([item.chainProperties.dashOpacity])
|
|
302
280
|
}],
|
|
303
281
|
["circleDashAngle", {
|
|
304
|
-
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType
|
|
305
|
-
'adaptor':
|
|
306
|
-
|
|
307
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
|
|
282
|
+
'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
283
|
+
'adaptor': (item) => {
|
|
284
|
+
if (item.circleProperties?.circleDashAngle)
|
|
308
285
|
return new Float32Array([item.circleProperties.circleDashAngle / 360]);
|
|
309
286
|
return new Float32Array([item.chainProperties.circleDashAngle / 360]);
|
|
310
287
|
}
|
|
311
288
|
}],
|
|
312
289
|
["rgbaCircle", {
|
|
313
|
-
"bufferManager": new account_1.BufferManager(gl, 4, { bufferType
|
|
314
|
-
"adaptor":
|
|
315
|
-
|
|
316
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.rgba)
|
|
290
|
+
"bufferManager": new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
|
|
291
|
+
"adaptor": (item) => {
|
|
292
|
+
if (item.circleProperties?.rgba)
|
|
317
293
|
return new Float32Array(item.circleProperties.rgba);
|
|
318
294
|
return new Float32Array(item.chainProperties.rgba);
|
|
319
295
|
}
|
|
320
296
|
}],
|
|
321
297
|
// Mercator buffers
|
|
322
298
|
["circleDashAngleMercator", {
|
|
323
|
-
'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType
|
|
324
|
-
'adaptor':
|
|
325
|
-
|
|
326
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
|
|
299
|
+
'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
300
|
+
'adaptor': (item) => {
|
|
301
|
+
if (item.circleProperties?.circleDashAngle)
|
|
327
302
|
return new Float32Array([item.circleProperties.circleDashAngle / 360]);
|
|
328
303
|
return data_filler_1.populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.circleDashAngle / 360);
|
|
329
304
|
}
|
|
330
305
|
}],
|
|
331
306
|
["rgbaCircleMercator", {
|
|
332
|
-
"bufferManager": new account_1.BufferManager(gl, 4 * _circleFlatEdgeCount, { bufferType
|
|
333
|
-
"adaptor":
|
|
334
|
-
|
|
335
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.rgba)
|
|
307
|
+
"bufferManager": new account_1.BufferManager(gl, 4 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
308
|
+
"adaptor": (item) => {
|
|
309
|
+
if (item.circleProperties?.rgba)
|
|
336
310
|
return data_filler_1.populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.circleProperties.rgba);
|
|
337
311
|
return data_filler_1.populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.chainProperties.rgba);
|
|
338
312
|
}
|
|
339
313
|
}],
|
|
340
314
|
["dashOpacityMercator", {
|
|
341
|
-
'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType
|
|
342
|
-
'adaptor':
|
|
315
|
+
'bufferManager': new account_1.BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
316
|
+
'adaptor': (item) => data_filler_1.populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.dashOpacity)
|
|
343
317
|
}],
|
|
344
318
|
["centerCoords2dMercator", {
|
|
345
|
-
'bufferManager': new account_1.BufferManager(gl, 2 * _circleFlatEdgeCount, { bufferType
|
|
346
|
-
'adaptor':
|
|
319
|
+
'bufferManager': new account_1.BufferManager(gl, 2 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
320
|
+
'adaptor': (item) => item.centerCoords2dflat,
|
|
347
321
|
}],
|
|
348
322
|
]);
|
|
349
|
-
|
|
350
|
-
this.lineVao =
|
|
351
|
-
].map(
|
|
352
|
-
this.circleVao2d =
|
|
353
|
-
].map(
|
|
354
|
-
this.circle3DVao =
|
|
355
|
-
].map(
|
|
323
|
+
const obj = (key) => (0, attribute_loader_1.createBufferAndReadInfo)(this.bufferManagersCompMap.get(key).bufferManager.buffer);
|
|
324
|
+
this.lineVao = this.lineProgram.createVAO(...['centerCoords2d', 'centerCoords3d', 'targetCoords2d', 'targetCoords3d', 'dashRatio', 'dashOpacity', 'rgba'
|
|
325
|
+
].map(key => obj(key)));
|
|
326
|
+
this.circleVao2d = this.circleProgram2d.createVAO(...["centerCoords2dMercator", "rgbaCircleMercator", "circleDashAngleMercator", "dashOpacityMercator"
|
|
327
|
+
].map(key => obj(key)));
|
|
328
|
+
this.circle3DVao = this.circle3DProgram.createVAO(...["centerCoords3d", "targetCoords3d", "rgbaCircle", "circleDashAngle", "dashOpacity"
|
|
329
|
+
].map(key => obj(key)));
|
|
356
330
|
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
var _this = this;
|
|
331
|
+
}
|
|
332
|
+
_updateTexts(chainKeys, textWriterIDs) {
|
|
360
333
|
if (textWriterIDs.length === 0)
|
|
361
334
|
return;
|
|
362
|
-
|
|
363
|
-
chainKeys.forEach(
|
|
364
|
-
|
|
335
|
+
const textWriters = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
|
|
336
|
+
chainKeys.forEach((chainKey) => {
|
|
337
|
+
this._chainListMap.textUpdate(chainKey, textWriters, this._textDataPreAdaptor);
|
|
365
338
|
});
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
var globe = this.globe;
|
|
339
|
+
}
|
|
340
|
+
_reconstructChains(chainKeys) {
|
|
341
|
+
const { globe } = this;
|
|
370
342
|
// const radiusM = radiusMethod(globe);
|
|
371
|
-
|
|
372
|
-
var _a, _b;
|
|
343
|
+
const callback = (v, i, array, chainProperties) => {
|
|
373
344
|
if (i === array.length - 1)
|
|
374
345
|
return null;
|
|
375
|
-
|
|
376
|
-
|
|
346
|
+
const centerCoords2dflat = (0, circle_accurate_flat_1.centerCoords2dflatDataCreator)(globe, v.long, v.lat, array[i + 1].long, array[i + 1].lat, { edgeCount: this._circleFlatEdgeCount });
|
|
347
|
+
const altitude = (v.altitude ?? chainProperties.altitude ?? 0) / 1000;
|
|
377
348
|
return {
|
|
378
349
|
chainProperties: chainProperties,
|
|
379
350
|
// bigRadius: radiusM(v, i, array),
|
|
@@ -384,53 +355,52 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
384
355
|
lat: v.lat,
|
|
385
356
|
lineProperties: v.lineProperties,
|
|
386
357
|
circleProperties: v.circleProperties,
|
|
387
|
-
centerCoords2dflat
|
|
358
|
+
centerCoords2dflat,
|
|
388
359
|
key: v.__identity__
|
|
389
360
|
};
|
|
390
361
|
};
|
|
391
|
-
|
|
392
|
-
chainKeys.forEach(
|
|
393
|
-
|
|
362
|
+
const bulkData = [];
|
|
363
|
+
chainKeys.forEach((k) => {
|
|
364
|
+
this._chainListMap.calculateBufferPropertiesChain(k, callback, bulkData);
|
|
394
365
|
});
|
|
395
366
|
this._insertBulk(bulkData);
|
|
396
|
-
}
|
|
397
|
-
|
|
367
|
+
}
|
|
368
|
+
_insertBulk(bulkData) {
|
|
398
369
|
this.bufferOrchestrator.insertBulk(bulkData, this.bufferManagersCompMap);
|
|
399
370
|
this.globe.DrawRender();
|
|
400
|
-
}
|
|
371
|
+
}
|
|
401
372
|
// GLOBE API
|
|
402
|
-
|
|
373
|
+
free() {
|
|
403
374
|
if (this.isFreed)
|
|
404
375
|
return;
|
|
405
|
-
this.bufferManagersCompMap.forEach(
|
|
406
|
-
var bufferManager = _a.bufferManager;
|
|
376
|
+
this.bufferManagersCompMap.forEach(({ bufferManager }) => {
|
|
407
377
|
bufferManager.free();
|
|
408
378
|
});
|
|
409
379
|
naive_accurate_flexible_1.LineOnGlobeCache.release(this.globe);
|
|
410
380
|
circle_accurate_flat_1.CircleCache.release(this.globe);
|
|
411
381
|
circle_accurate_3d_1.CircleCache.release(this.globe);
|
|
412
382
|
// LineToTheOriginCache.release(this.globe);
|
|
413
|
-
this._textWritersMap.forEach(
|
|
414
|
-
|
|
383
|
+
this._textWritersMap.forEach((writer) => writer.free());
|
|
384
|
+
const { gl } = this;
|
|
415
385
|
gl.deleteVertexArray(this.lineVao);
|
|
416
386
|
gl.deleteVertexArray(this.circleVao2d);
|
|
417
387
|
gl.deleteVertexArray(this.circle3DVao);
|
|
418
388
|
this.lineProgram = null;
|
|
419
389
|
this.circleProgram2d = null;
|
|
420
390
|
this.isFreed = true;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
391
|
+
}
|
|
392
|
+
draw3D() {
|
|
393
|
+
const { gl, globe } = this;
|
|
424
394
|
gl.disable(gl.DEPTH_TEST);
|
|
425
|
-
|
|
395
|
+
const drawOptions = {
|
|
426
396
|
drawRange: {
|
|
427
397
|
first: 0,
|
|
428
398
|
count: this.bufferOrchestrator.length
|
|
429
399
|
}
|
|
430
400
|
};
|
|
431
401
|
this.lineProgram.draw(this.lineVao, drawOptions, this._opacity);
|
|
432
|
-
this._textWritersMap.forEach(
|
|
433
|
-
|
|
402
|
+
this._textWritersMap.forEach((writer) => writer.draw());
|
|
403
|
+
const is3D = globe.api_GetCurrentGeometry() === 0;
|
|
434
404
|
if (this._drawCircleOn) {
|
|
435
405
|
if (is3D) {
|
|
436
406
|
this.circle3DProgram.draw(this.circle3DVao, this.bufferOrchestrator.length, this._opacity);
|
|
@@ -440,9 +410,8 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
440
410
|
}
|
|
441
411
|
}
|
|
442
412
|
gl.enable(gl.DEPTH_TEST);
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
}());
|
|
413
|
+
}
|
|
414
|
+
}
|
|
446
415
|
exports.CircleLineChainPlugin = CircleLineChainPlugin;
|
|
447
416
|
// const radiusMethod = (globe) => (v, i, array) => {
|
|
448
417
|
// return globe.Math.GetDist3D(v.long, v.lat, array[i + 1].long, array[i + 1].lat)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.keyMethod = void 0;
|
|
4
|
-
|
|
4
|
+
const keyMethod = (chainKey, nodeKey) => `${chainKey}_${nodeKey}`;
|
|
5
5
|
exports.keyMethod = keyMethod;
|