@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
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var typecheck_1 = require("../util/check/typecheck");
|
|
14
|
-
var attribute_loader_1 = require("../util/gl-util/buffer/attribute-loader");
|
|
15
|
-
var index_1 = require("../util/geometry/index");
|
|
1
|
+
import { LineOnGlobeCache } from '../programs/line-on-globe/naive-accurate-flexible';
|
|
2
|
+
import { CircleCache, EDGE_COUNT as flatCircleEdgeCount, centerCoords2dflatDataCreator } from '../programs/line-on-globe/circle-accurate-flat';
|
|
3
|
+
import { CircleCache as Circle3DCache } from '../programs/line-on-globe/circle-accurate-3d';
|
|
4
|
+
import { BufferOrchestrator, BufferManager } from "../util/account";
|
|
5
|
+
import { ChainListMap } from "./chain-list-map";
|
|
6
|
+
import { mapGetOrThrow } from "../util/check/get";
|
|
7
|
+
import { keyMethod } from "./util";
|
|
8
|
+
import { populateFloat32Array } from "../util/jshelpers/data-filler";
|
|
9
|
+
import { ContextTextWriter3 } from '../write-text/context-text3';
|
|
10
|
+
import { isBoolean, constraintFloat, opacityCheck } from '../util/check/typecheck';
|
|
11
|
+
import { createBufferAndReadInfo } from '../util/gl-util/buffer/attribute-loader';
|
|
12
|
+
import { sphereCoord } from '../util/geometry/index';
|
|
16
13
|
/**
|
|
17
14
|
* Insert info to chain list map (nodes and properties)
|
|
18
15
|
*
|
|
@@ -55,34 +52,33 @@ var index_1 = require("../util/geometry/index");
|
|
|
55
52
|
*
|
|
56
53
|
* //property {Array<Node>} nodes
|
|
57
54
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
const textWriterGetOrThrow = mapGetOrThrow("textWriterIDs is invalid");
|
|
56
|
+
export class CircleLineChainPlugin {
|
|
60
57
|
/**
|
|
61
58
|
*
|
|
62
59
|
* @param {*} id
|
|
63
60
|
* @param {Map<[key, ContextTextWriter3]} textWritersMap //import { ContextTextWriter3 } from "@pirireis/webglobeplugins/write-text/context-text3";
|
|
64
61
|
*/
|
|
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;
|
|
62
|
+
constructor(id, { drawCircleOn = true, textWritersMap = new Map(), textDataPreAdaptor = null, circleFlatEdgeCount = flatCircleEdgeCount - 2 } = {}) {
|
|
67
63
|
this.id = id;
|
|
68
64
|
this._checktextWritersMap(textWritersMap);
|
|
69
65
|
this._textWritersMap = textWritersMap;
|
|
70
|
-
this._textWritersMap.forEach(
|
|
66
|
+
this._textWritersMap.forEach((writer) => writer.setKeyAdaptor((v, i, c, properties) => v.__identity__));
|
|
71
67
|
this._opacity = 1;
|
|
72
|
-
this._chainListMap = new
|
|
73
|
-
this.bufferOrchestrator = new
|
|
68
|
+
this._chainListMap = new ChainListMap(keyMethod);
|
|
69
|
+
this.bufferOrchestrator = new BufferOrchestrator({ capacity: 10 });
|
|
74
70
|
this._drawCircleOn = drawCircleOn;
|
|
75
71
|
this._textDataPreAdaptor = textDataPreAdaptor;
|
|
76
72
|
this._circleFlatEdgeCount = circleFlatEdgeCount + 2;
|
|
77
73
|
}
|
|
78
74
|
// init
|
|
79
75
|
// API
|
|
80
|
-
|
|
76
|
+
setDrawCircleOn(bool) {
|
|
81
77
|
if (typeof bool !== 'boolean')
|
|
82
78
|
throw new Error("setDrawCircleOn parameter must be a boolean");
|
|
83
79
|
this._drawCircleOn = bool;
|
|
84
80
|
this.globe.DrawRender();
|
|
85
|
-
}
|
|
81
|
+
}
|
|
86
82
|
// ---- updateBulk
|
|
87
83
|
/**
|
|
88
84
|
* @param {Array<chain>} data
|
|
@@ -91,57 +87,48 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
91
87
|
* @property {Array<Node>} nodes
|
|
92
88
|
|
|
93
89
|
*/
|
|
94
|
-
|
|
95
|
-
var _this = this;
|
|
96
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
90
|
+
updateCoordinatesBulk(data, { textWriterIDs = [] } = {}) {
|
|
97
91
|
// update implicit data structure
|
|
98
92
|
// find keys to update.. (inserted data and the radius of "from")
|
|
99
93
|
// updateBuffers
|
|
100
94
|
// update text
|
|
101
|
-
|
|
102
|
-
|
|
95
|
+
const chainKeys = [];
|
|
96
|
+
for (const chain of data) {
|
|
103
97
|
chainKeys.push(chain.chainKey);
|
|
104
|
-
chain.nodes.forEach(
|
|
105
|
-
|
|
98
|
+
chain.nodes.forEach((node) => {
|
|
99
|
+
this._chainListMap.updateCoordsinatesOfNode(node, chain.chainKey);
|
|
106
100
|
});
|
|
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
101
|
}
|
|
112
102
|
this._reconstructChains(chainKeys);
|
|
113
103
|
this._updateTexts(chainKeys, textWriterIDs);
|
|
114
|
-
}
|
|
104
|
+
}
|
|
115
105
|
/**
|
|
116
106
|
* @param {*} chainKey
|
|
117
107
|
* @param {Array<{nodeKey, circleProperties:Map[propertyName ,value], lineProperties:Map[propertyName ,value] }} propertyMap
|
|
118
108
|
*/
|
|
119
|
-
|
|
120
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
109
|
+
updateNodesProperties(chainKey, nodesAndPropertyMap, { textWriterIDs = [] } = {}) {
|
|
121
110
|
this._chainListMap.updateNodesProperties(chainKey, nodesAndPropertyMap);
|
|
122
111
|
this._reconstructChains([chainKey]);
|
|
123
112
|
this._updateTexts([chainKey], textWriterIDs);
|
|
124
113
|
this.globe.DrawRender();
|
|
125
|
-
}
|
|
114
|
+
}
|
|
126
115
|
/**
|
|
127
116
|
* @param {*} chainKey
|
|
128
117
|
* @param {Map<propertyName ,value} propertyMap
|
|
129
118
|
*/
|
|
130
|
-
|
|
131
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
119
|
+
updateChainProperties(chainKey, propertyMap, { textWriterIDs = [] } = {}) {
|
|
132
120
|
this._chainListMap.updateChainProperties(chainKey, propertyMap);
|
|
133
121
|
this._reconstructChains([chainKey]);
|
|
134
122
|
if (textWriterIDs)
|
|
135
123
|
this._updateTexts([chainKey], textWriterIDs);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
124
|
+
}
|
|
125
|
+
updateNodeCoordinates(node, chainKey, { textWriterIDs = [] } = {}) {
|
|
139
126
|
this._chainListMap.updateCoordsinatesOfNode(node, chainKey);
|
|
140
127
|
if (textWriterIDs)
|
|
141
128
|
this._updateTexts([chainKey], textWriterIDs);
|
|
142
129
|
this._reconstructChains([chainKey]);
|
|
143
130
|
this.globe.DrawRender();
|
|
144
|
-
}
|
|
131
|
+
}
|
|
145
132
|
/**
|
|
146
133
|
*
|
|
147
134
|
|
|
@@ -149,27 +136,23 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
149
136
|
* @param {Array<string>} textWriterIDs | textWritersMap keys to be used for writing text.
|
|
150
137
|
* @param {Array<string>} chainKeys | if empty, all texts will be updated
|
|
151
138
|
*/
|
|
152
|
-
|
|
153
|
-
if (textWriterIDs === void 0) { textWriterIDs = []; }
|
|
154
|
-
if (chainKeys === void 0) { chainKeys = null; }
|
|
139
|
+
updateText(textWriterIDs = [], chainKeys = null) {
|
|
155
140
|
if (chainKeys === null)
|
|
156
141
|
chainKeys = this._chainListMap.getAllChainKeysIterator();
|
|
157
142
|
this._updateTexts(chainKeys, textWriterIDs);
|
|
158
143
|
this.globe.DrawRender();
|
|
159
|
-
}
|
|
144
|
+
}
|
|
160
145
|
// ---- insertBulk
|
|
161
146
|
/**
|
|
162
147
|
*
|
|
163
148
|
* @param {Array<chain>} data
|
|
164
149
|
*/
|
|
165
|
-
|
|
166
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.textWriterIDs, textWriterIDs = _c === void 0 ? [] : _c;
|
|
150
|
+
insertBulk(data, { textWriterIDs = [] } = {}) {
|
|
167
151
|
// first insert everything to implicit structure,
|
|
168
152
|
// then iterate over data again to update text
|
|
169
153
|
// 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;
|
|
154
|
+
const chainKeysToConstruct = [];
|
|
155
|
+
for (const { chainKey, chainProperties, nodes } of data) {
|
|
173
156
|
this._chainListMap.setChain(chainKey, nodes);
|
|
174
157
|
this._chainListMap.setChainProperties(chainKey, chainProperties);
|
|
175
158
|
chainKeysToConstruct.push(chainKey);
|
|
@@ -178,112 +161,104 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
178
161
|
if (textWriterIDs)
|
|
179
162
|
this._updateTexts(chainKeysToConstruct, textWriterIDs);
|
|
180
163
|
this.globe.DrawRender();
|
|
181
|
-
}
|
|
164
|
+
}
|
|
182
165
|
/**
|
|
183
166
|
* @param {Node} node
|
|
184
167
|
* @param {*} chainKey
|
|
185
168
|
* @param {*} theNodeKeyFront | node key of the next node, null places to the last
|
|
186
169
|
*/
|
|
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;
|
|
170
|
+
addNode(node, chainKey, { theNodeKeyFront = null, textWriterIDs = [] } = {}) {
|
|
189
171
|
this._chainListMap.addNode(node, chainKey, theNodeKeyFront);
|
|
190
172
|
if (textWriterIDs)
|
|
191
173
|
this._updateTexts([chainKey], textWriterIDs);
|
|
192
174
|
this._reconstructChains([chainKey]);
|
|
193
175
|
this.globe.DrawRender();
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
this._textWritersMap.forEach(
|
|
176
|
+
}
|
|
177
|
+
setOpacity(opacity) {
|
|
178
|
+
opacityCheck(opacity);
|
|
179
|
+
this._textWritersMap.forEach((writer) => writer.setOpacity(opacity));
|
|
198
180
|
this._opacity = opacity;
|
|
199
181
|
this.globe.DrawRender();
|
|
200
|
-
}
|
|
201
|
-
|
|
182
|
+
}
|
|
183
|
+
getChain(chainKey) {
|
|
202
184
|
this._chainListMap.getChain(chainKey);
|
|
203
|
-
}
|
|
185
|
+
}
|
|
204
186
|
/**
|
|
205
187
|
*
|
|
206
188
|
* @param {*} chainKeys
|
|
207
189
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
for (
|
|
211
|
-
|
|
212
|
-
bufferKeys.push.apply(bufferKeys, this._chainListMap.deleteChainAndReturnChainKeys(chainKey));
|
|
190
|
+
deleteChains(chainKeys) {
|
|
191
|
+
const bufferKeys = [];
|
|
192
|
+
for (const chainKey of chainKeys) {
|
|
193
|
+
bufferKeys.push(...this._chainListMap.deleteChainAndReturnChainKeys(chainKey));
|
|
213
194
|
}
|
|
214
|
-
this._textWritersMap.forEach(
|
|
195
|
+
this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
|
|
215
196
|
this._updateTexts(chainKeys, this._textWritersMap.keys());
|
|
216
197
|
this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
|
|
217
198
|
this.globe.DrawRender();
|
|
218
|
-
}
|
|
199
|
+
}
|
|
219
200
|
/**
|
|
220
201
|
*
|
|
221
202
|
* @param {Array<{chainKey, nodeKeys:[]} keysAndNodes
|
|
222
203
|
*/
|
|
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));
|
|
204
|
+
deleteNodes(keysAndNodes, { textWriterIDs = [] } = {}) {
|
|
205
|
+
const bufferKeys = [];
|
|
206
|
+
const chainKeysToReconstuct = [];
|
|
207
|
+
keysAndNodes.forEach(({ chainKey, nodeKeys }) => {
|
|
208
|
+
bufferKeys.push(...this._chainListMap.deleteNodesBelongToAChain(chainKey, nodeKeys));
|
|
231
209
|
chainKeysToReconstuct.push(chainKey);
|
|
232
210
|
});
|
|
233
|
-
this._textWritersMap.forEach(
|
|
211
|
+
this._textWritersMap.forEach((writer) => writer.deleteTextBulk(bufferKeys));
|
|
234
212
|
this.bufferOrchestrator.deleteBulk(bufferKeys, this.bufferManagersCompMap);
|
|
235
213
|
this._reconstructChains(chainKeysToReconstuct);
|
|
236
214
|
this._updateTexts(chainKeysToReconstuct, textWriterIDs);
|
|
237
215
|
this.globe.DrawRender();
|
|
238
|
-
}
|
|
239
|
-
|
|
216
|
+
}
|
|
217
|
+
init(globe, gl) {
|
|
240
218
|
this.gl = gl;
|
|
241
219
|
this.globe = globe;
|
|
242
220
|
this._initOrchestrations();
|
|
243
|
-
}
|
|
221
|
+
}
|
|
244
222
|
// implicit
|
|
245
|
-
|
|
223
|
+
_checktextWritersMap(textWritersMap) {
|
|
246
224
|
if (!(textWritersMap instanceof Map))
|
|
247
225
|
throw new Error("textWritersMap is not an instance of Map");
|
|
248
|
-
textWritersMap.forEach(
|
|
249
|
-
if (!(v instanceof
|
|
226
|
+
textWritersMap.forEach((v) => {
|
|
227
|
+
if (!(v instanceof ContextTextWriter3))
|
|
250
228
|
throw new Error("textWritersMap element is not an instance of ContextTextWriter3");
|
|
251
229
|
});
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
this.
|
|
258
|
-
|
|
259
|
-
this.circle3DProgram = circle_accurate_3d_1.CircleCache.get(globe);
|
|
260
|
-
var _circleFlatEdgeCount = this._circleFlatEdgeCount;
|
|
230
|
+
}
|
|
231
|
+
_initOrchestrations() {
|
|
232
|
+
const { gl, globe } = this;
|
|
233
|
+
this.lineProgram = LineOnGlobeCache.get(globe);
|
|
234
|
+
this.circleProgram2d = CircleCache.get(globe);
|
|
235
|
+
this.circle3DProgram = Circle3DCache.get(globe);
|
|
236
|
+
const _circleFlatEdgeCount = this._circleFlatEdgeCount;
|
|
261
237
|
{
|
|
262
238
|
// createBuffers
|
|
263
|
-
|
|
264
|
-
|
|
239
|
+
const bufferType = "DYNAMIC_DRAW";
|
|
240
|
+
const initialCapacity = this.bufferOrchestrator.capacity;
|
|
265
241
|
this.bufferManagersCompMap = new Map([
|
|
266
242
|
["centerCoords2d", {
|
|
267
|
-
'bufferManager': new
|
|
268
|
-
'adaptor':
|
|
243
|
+
'bufferManager': new BufferManager(gl, 2, { bufferType, initialCapacity }),
|
|
244
|
+
'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.long, item.lat)),
|
|
269
245
|
}],
|
|
270
246
|
["centerCoords3d", {
|
|
271
|
-
'bufferManager': new
|
|
272
|
-
'adaptor':
|
|
247
|
+
'bufferManager': new BufferManager(gl, 3, { bufferType, initialCapacity }),
|
|
248
|
+
'adaptor': (item) => sphereCoord(item.long, item.lat, globe, item.altitude),
|
|
273
249
|
}],
|
|
274
250
|
["targetCoords2d", {
|
|
275
|
-
'bufferManager': new
|
|
276
|
-
'adaptor':
|
|
251
|
+
'bufferManager': new BufferManager(gl, 2, { bufferType, initialCapacity }),
|
|
252
|
+
'adaptor': (item) => new Float32Array(globe.api_GetMercator2DPoint(item.targetLong, item.targetLat)),
|
|
277
253
|
}],
|
|
278
254
|
["targetCoords3d", {
|
|
279
|
-
'bufferManager': new
|
|
280
|
-
'adaptor':
|
|
255
|
+
'bufferManager': new BufferManager(gl, 3, { bufferType, initialCapacity }),
|
|
256
|
+
'adaptor': (item) => sphereCoord(item.targetLong, item.targetLat, globe, item.altitude),
|
|
281
257
|
}],
|
|
282
258
|
["rgba", {
|
|
283
|
-
'bufferManager': new
|
|
284
|
-
'adaptor':
|
|
285
|
-
|
|
286
|
-
if ((_a = item.lineProperties) === null || _a === void 0 ? void 0 : _a.rgba)
|
|
259
|
+
'bufferManager': new BufferManager(gl, 4, { bufferType, initialCapacity }),
|
|
260
|
+
'adaptor': (item) => {
|
|
261
|
+
if (item.lineProperties?.rgba)
|
|
287
262
|
return new Float32Array(item.lineProperties.rgba);
|
|
288
263
|
return new Float32Array(item.chainProperties.rgba);
|
|
289
264
|
}
|
|
@@ -293,87 +268,80 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
293
268
|
// 'adaptor': (item) => new Float32Array([item.bigRadius])
|
|
294
269
|
// }],
|
|
295
270
|
["dashRatio", {
|
|
296
|
-
'bufferManager': new
|
|
297
|
-
'adaptor':
|
|
271
|
+
'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
272
|
+
'adaptor': (item) => new Float32Array([item.chainProperties.dashRatio])
|
|
298
273
|
}],
|
|
299
274
|
["dashOpacity", {
|
|
300
|
-
'bufferManager': new
|
|
301
|
-
'adaptor':
|
|
275
|
+
'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
276
|
+
'adaptor': (item) => new Float32Array([item.chainProperties.dashOpacity])
|
|
302
277
|
}],
|
|
303
278
|
["circleDashAngle", {
|
|
304
|
-
'bufferManager': new
|
|
305
|
-
'adaptor':
|
|
306
|
-
|
|
307
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
|
|
279
|
+
'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
|
|
280
|
+
'adaptor': (item) => {
|
|
281
|
+
if (item.circleProperties?.circleDashAngle)
|
|
308
282
|
return new Float32Array([item.circleProperties.circleDashAngle / 360]);
|
|
309
283
|
return new Float32Array([item.chainProperties.circleDashAngle / 360]);
|
|
310
284
|
}
|
|
311
285
|
}],
|
|
312
286
|
["rgbaCircle", {
|
|
313
|
-
"bufferManager": new
|
|
314
|
-
"adaptor":
|
|
315
|
-
|
|
316
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.rgba)
|
|
287
|
+
"bufferManager": new BufferManager(gl, 4, { bufferType, initialCapacity }),
|
|
288
|
+
"adaptor": (item) => {
|
|
289
|
+
if (item.circleProperties?.rgba)
|
|
317
290
|
return new Float32Array(item.circleProperties.rgba);
|
|
318
291
|
return new Float32Array(item.chainProperties.rgba);
|
|
319
292
|
}
|
|
320
293
|
}],
|
|
321
294
|
// Mercator buffers
|
|
322
295
|
["circleDashAngleMercator", {
|
|
323
|
-
'bufferManager': new
|
|
324
|
-
'adaptor':
|
|
325
|
-
|
|
326
|
-
if ((_a = item.circleProperties) === null || _a === void 0 ? void 0 : _a.circleDashAngle)
|
|
296
|
+
'bufferManager': new BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
297
|
+
'adaptor': (item) => {
|
|
298
|
+
if (item.circleProperties?.circleDashAngle)
|
|
327
299
|
return new Float32Array([item.circleProperties.circleDashAngle / 360]);
|
|
328
|
-
return
|
|
300
|
+
return populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.circleDashAngle / 360);
|
|
329
301
|
}
|
|
330
302
|
}],
|
|
331
303
|
["rgbaCircleMercator", {
|
|
332
|
-
"bufferManager": new
|
|
333
|
-
"adaptor":
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
return data_filler_1.populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.chainProperties.rgba);
|
|
304
|
+
"bufferManager": new BufferManager(gl, 4 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
305
|
+
"adaptor": (item) => {
|
|
306
|
+
if (item.circleProperties?.rgba)
|
|
307
|
+
return populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.circleProperties.rgba);
|
|
308
|
+
return populateFloat32Array.fillWithListData(_circleFlatEdgeCount, item.chainProperties.rgba);
|
|
338
309
|
}
|
|
339
310
|
}],
|
|
340
311
|
["dashOpacityMercator", {
|
|
341
|
-
'bufferManager': new
|
|
342
|
-
'adaptor':
|
|
312
|
+
'bufferManager': new BufferManager(gl, 1 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
313
|
+
'adaptor': (item) => populateFloat32Array.fillFloat32Array(_circleFlatEdgeCount, item.chainProperties.dashOpacity)
|
|
343
314
|
}],
|
|
344
315
|
["centerCoords2dMercator", {
|
|
345
|
-
'bufferManager': new
|
|
346
|
-
'adaptor':
|
|
316
|
+
'bufferManager': new BufferManager(gl, 2 * _circleFlatEdgeCount, { bufferType, initialCapacity }),
|
|
317
|
+
'adaptor': (item) => item.centerCoords2dflat,
|
|
347
318
|
}],
|
|
348
319
|
]);
|
|
349
|
-
|
|
350
|
-
this.lineVao =
|
|
351
|
-
].map(
|
|
352
|
-
this.circleVao2d =
|
|
353
|
-
].map(
|
|
354
|
-
this.circle3DVao =
|
|
355
|
-
].map(
|
|
320
|
+
const obj = (key) => createBufferAndReadInfo(this.bufferManagersCompMap.get(key).bufferManager.buffer);
|
|
321
|
+
this.lineVao = this.lineProgram.createVAO(...['centerCoords2d', 'centerCoords3d', 'targetCoords2d', 'targetCoords3d', 'dashRatio', 'dashOpacity', 'rgba'
|
|
322
|
+
].map(key => obj(key)));
|
|
323
|
+
this.circleVao2d = this.circleProgram2d.createVAO(...["centerCoords2dMercator", "rgbaCircleMercator", "circleDashAngleMercator", "dashOpacityMercator"
|
|
324
|
+
].map(key => obj(key)));
|
|
325
|
+
this.circle3DVao = this.circle3DProgram.createVAO(...["centerCoords3d", "targetCoords3d", "rgbaCircle", "circleDashAngle", "dashOpacity"
|
|
326
|
+
].map(key => obj(key)));
|
|
356
327
|
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
var _this = this;
|
|
328
|
+
}
|
|
329
|
+
_updateTexts(chainKeys, textWriterIDs) {
|
|
360
330
|
if (textWriterIDs.length === 0)
|
|
361
331
|
return;
|
|
362
|
-
|
|
363
|
-
chainKeys.forEach(
|
|
364
|
-
|
|
332
|
+
const textWriters = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
|
|
333
|
+
chainKeys.forEach((chainKey) => {
|
|
334
|
+
this._chainListMap.textUpdate(chainKey, textWriters, this._textDataPreAdaptor);
|
|
365
335
|
});
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
var globe = this.globe;
|
|
336
|
+
}
|
|
337
|
+
_reconstructChains(chainKeys) {
|
|
338
|
+
const { globe } = this;
|
|
370
339
|
// const radiusM = radiusMethod(globe);
|
|
371
|
-
|
|
372
|
-
var _a, _b;
|
|
340
|
+
const callback = (v, i, array, chainProperties) => {
|
|
373
341
|
if (i === array.length - 1)
|
|
374
342
|
return null;
|
|
375
|
-
|
|
376
|
-
|
|
343
|
+
const centerCoords2dflat = centerCoords2dflatDataCreator(globe, v.long, v.lat, array[i + 1].long, array[i + 1].lat, { edgeCount: this._circleFlatEdgeCount });
|
|
344
|
+
const altitude = (v.altitude ?? chainProperties.altitude ?? 0) / 1000;
|
|
377
345
|
return {
|
|
378
346
|
chainProperties: chainProperties,
|
|
379
347
|
// bigRadius: radiusM(v, i, array),
|
|
@@ -384,53 +352,52 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
384
352
|
lat: v.lat,
|
|
385
353
|
lineProperties: v.lineProperties,
|
|
386
354
|
circleProperties: v.circleProperties,
|
|
387
|
-
centerCoords2dflat
|
|
355
|
+
centerCoords2dflat,
|
|
388
356
|
key: v.__identity__
|
|
389
357
|
};
|
|
390
358
|
};
|
|
391
|
-
|
|
392
|
-
chainKeys.forEach(
|
|
393
|
-
|
|
359
|
+
const bulkData = [];
|
|
360
|
+
chainKeys.forEach((k) => {
|
|
361
|
+
this._chainListMap.calculateBufferPropertiesChain(k, callback, bulkData);
|
|
394
362
|
});
|
|
395
363
|
this._insertBulk(bulkData);
|
|
396
|
-
}
|
|
397
|
-
|
|
364
|
+
}
|
|
365
|
+
_insertBulk(bulkData) {
|
|
398
366
|
this.bufferOrchestrator.insertBulk(bulkData, this.bufferManagersCompMap);
|
|
399
367
|
this.globe.DrawRender();
|
|
400
|
-
}
|
|
368
|
+
}
|
|
401
369
|
// GLOBE API
|
|
402
|
-
|
|
370
|
+
free() {
|
|
403
371
|
if (this.isFreed)
|
|
404
372
|
return;
|
|
405
|
-
this.bufferManagersCompMap.forEach(
|
|
406
|
-
var bufferManager = _a.bufferManager;
|
|
373
|
+
this.bufferManagersCompMap.forEach(({ bufferManager }) => {
|
|
407
374
|
bufferManager.free();
|
|
408
375
|
});
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
376
|
+
LineOnGlobeCache.release(this.globe);
|
|
377
|
+
CircleCache.release(this.globe);
|
|
378
|
+
Circle3DCache.release(this.globe);
|
|
412
379
|
// LineToTheOriginCache.release(this.globe);
|
|
413
|
-
this._textWritersMap.forEach(
|
|
414
|
-
|
|
380
|
+
this._textWritersMap.forEach((writer) => writer.free());
|
|
381
|
+
const { gl } = this;
|
|
415
382
|
gl.deleteVertexArray(this.lineVao);
|
|
416
383
|
gl.deleteVertexArray(this.circleVao2d);
|
|
417
384
|
gl.deleteVertexArray(this.circle3DVao);
|
|
418
385
|
this.lineProgram = null;
|
|
419
386
|
this.circleProgram2d = null;
|
|
420
387
|
this.isFreed = true;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
388
|
+
}
|
|
389
|
+
draw3D() {
|
|
390
|
+
const { gl, globe } = this;
|
|
424
391
|
gl.disable(gl.DEPTH_TEST);
|
|
425
|
-
|
|
392
|
+
const drawOptions = {
|
|
426
393
|
drawRange: {
|
|
427
394
|
first: 0,
|
|
428
395
|
count: this.bufferOrchestrator.length
|
|
429
396
|
}
|
|
430
397
|
};
|
|
431
398
|
this.lineProgram.draw(this.lineVao, drawOptions, this._opacity);
|
|
432
|
-
this._textWritersMap.forEach(
|
|
433
|
-
|
|
399
|
+
this._textWritersMap.forEach((writer) => writer.draw());
|
|
400
|
+
const is3D = globe.api_GetCurrentGeometry() === 0;
|
|
434
401
|
if (this._drawCircleOn) {
|
|
435
402
|
if (is3D) {
|
|
436
403
|
this.circle3DProgram.draw(this.circle3DVao, this.bufferOrchestrator.length, this._opacity);
|
|
@@ -440,10 +407,8 @@ var CircleLineChainPlugin = /** @class */ (function () {
|
|
|
440
407
|
}
|
|
441
408
|
}
|
|
442
409
|
gl.enable(gl.DEPTH_TEST);
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
}());
|
|
446
|
-
exports.CircleLineChainPlugin = CircleLineChainPlugin;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
447
412
|
// const radiusMethod = (globe) => (v, i, array) => {
|
|
448
413
|
// return globe.Math.GetDist3D(v.long, v.lat, array[i + 1].long, array[i + 1].lat)
|
|
449
414
|
// }
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.keyMethod = void 0;
|
|
4
|
-
var keyMethod = function (chainKey, nodeKey) { return "".concat(chainKey, "_").concat(nodeKey); };
|
|
5
|
-
exports.keyMethod = keyMethod;
|
|
1
|
+
export const keyMethod = (chainKey, nodeKey) => `${chainKey}_${nodeKey}`;
|