@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/point-tracks/plugin.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var picker_displayer_1 = require("../util/picking/picker-displayer");
|
|
6
|
-
var square_pixel_point_1 = require("../programs/point-on-globe/square-pixel-point");
|
|
7
|
-
var methods_1 = require("../Math/methods");
|
|
1
|
+
import { BufferOrchestrator, BufferManager, ObjectStore } from "../util/account";
|
|
2
|
+
import { PickerDisplayer } from "../util/picking/picker-displayer";
|
|
3
|
+
import { PointOnGlobeProgramCache } from "../programs/point-on-globe/square-pixel-point";
|
|
4
|
+
import { wgs84ToCartesian3d, wgs84ToMercator } from "../Math/methods";
|
|
8
5
|
/**
|
|
9
6
|
* @typedef {number} long
|
|
10
7
|
* @typedef {number} lat
|
|
@@ -15,9 +12,8 @@ var methods_1 = require("../Math/methods");
|
|
|
15
12
|
* @typedef { long ,lat, height, ID } Point
|
|
16
13
|
* @typedef {Array<Point>, rgba, trackID} Track
|
|
17
14
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.pointSize, pointSize = _c === void 0 ? 2 : _c, _d = _b.hoveredPointSize, hoveredPointSize = _d === void 0 ? 4 : _d, _e = _b.selectionPointFilling, selectionPointFilling = _e === void 0 ? 4 : _e, _f = _b.opacity, opacity = _f === void 0 ? 1.0 : _f;
|
|
15
|
+
class PointTracksPlugin {
|
|
16
|
+
constructor(id, { pointSize = 2, hoveredPointSize = 4, selectionPointFilling = 4, opacity = 1.0 } = {}) {
|
|
21
17
|
this.id = id;
|
|
22
18
|
this._isFreed = false;
|
|
23
19
|
this._pointProgram = null;
|
|
@@ -33,40 +29,40 @@ var PointTracksPlugin = /** @class */ (function () {
|
|
|
33
29
|
this._lastWH = { w: 0, h: 0 };
|
|
34
30
|
this._focusParams = { on: false, length: 0, elementBuffer: null, trackIDs: [] };
|
|
35
31
|
this.pointSizes = {
|
|
36
|
-
pointSize
|
|
37
|
-
selectionPointFilling
|
|
38
|
-
hoveredPointSize
|
|
32
|
+
pointSize,
|
|
33
|
+
selectionPointFilling,
|
|
34
|
+
hoveredPointSize
|
|
39
35
|
};
|
|
40
36
|
}
|
|
41
|
-
|
|
37
|
+
init(globe, gl) {
|
|
42
38
|
this.globe = globe;
|
|
43
39
|
this.gl = gl;
|
|
44
|
-
this._pickerDisplayer = new
|
|
45
|
-
this._pointProgram =
|
|
40
|
+
this._pickerDisplayer = new PickerDisplayer(globe);
|
|
41
|
+
this._pointProgram = PointOnGlobeProgramCache.get(globe);
|
|
46
42
|
this._focusParams.elementBuffer = gl.createBuffer();
|
|
47
43
|
this._initBufferManagers();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this._bufferOrchestrator = new
|
|
44
|
+
}
|
|
45
|
+
_initBufferManagers() {
|
|
46
|
+
const { gl } = this;
|
|
47
|
+
const initialCapacity = 10;
|
|
48
|
+
const bufferType = "DYNAMIC_DRAW";
|
|
49
|
+
this._bufferOrchestrator = new BufferOrchestrator({ initialCapacity });
|
|
54
50
|
this._bufferManagersMap = new Map([
|
|
55
51
|
["pos3D", {
|
|
56
|
-
bufferManager: new
|
|
57
|
-
adaptor:
|
|
52
|
+
bufferManager: new BufferManager(gl, 3, { bufferType, initialCapacity }),
|
|
53
|
+
adaptor: (item) => new Float32Array(wgs84ToCartesian3d(item.long, item.lat, item.height / 1000)) // height is in meters
|
|
58
54
|
}],
|
|
59
55
|
["pos2D", {
|
|
60
|
-
bufferManager: new
|
|
61
|
-
adaptor:
|
|
56
|
+
bufferManager: new BufferManager(gl, 2, { bufferType, initialCapacity }),
|
|
57
|
+
adaptor: (item) => new Float32Array(wgs84ToMercator(item.long, item.lat))
|
|
62
58
|
}],
|
|
63
59
|
["rgba", {
|
|
64
|
-
bufferManager: new
|
|
65
|
-
adaptor:
|
|
60
|
+
bufferManager: new BufferManager(gl, 4, { bufferType, initialCapacity }),
|
|
61
|
+
adaptor: (item) => item.rgba
|
|
66
62
|
}],
|
|
67
63
|
["objectStore", {
|
|
68
|
-
bufferManager: new
|
|
69
|
-
adaptor:
|
|
64
|
+
bufferManager: new ObjectStore({ initialCapacity }),
|
|
65
|
+
adaptor: (item) => {
|
|
70
66
|
return {
|
|
71
67
|
trackID: item.trackID, pointID: item.pointID
|
|
72
68
|
};
|
|
@@ -74,127 +70,113 @@ var PointTracksPlugin = /** @class */ (function () {
|
|
|
74
70
|
}]
|
|
75
71
|
]);
|
|
76
72
|
this._vao = this._pointProgram.createVAO(this._bufferManagersMap.get("pos3D").bufferManager.buffer, this._bufferManagersMap.get("pos2D").bufferManager.buffer, this._bufferManagersMap.get("rgba").bufferManager.buffer);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
var _a;
|
|
73
|
+
}
|
|
74
|
+
setPointSize(size) {
|
|
80
75
|
this.pointSizes.pointSize = size;
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var _a;
|
|
76
|
+
this.globe?.DrawRender();
|
|
77
|
+
}
|
|
78
|
+
setSelectionPointFilling(size) {
|
|
85
79
|
this.pointSizes.selectionPointFilling = size;
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
var _a;
|
|
80
|
+
this.globe?.DrawRender();
|
|
81
|
+
}
|
|
82
|
+
setHoveredPointSize(size) {
|
|
90
83
|
this.pointSizes.hoveredPointSize = size;
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
var _a;
|
|
84
|
+
this.globe?.DrawRender();
|
|
85
|
+
}
|
|
86
|
+
setOpacity(opacity) {
|
|
95
87
|
if (opacity < 0 || opacity > 1)
|
|
96
88
|
return;
|
|
97
89
|
this._opacity = opacity;
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
90
|
+
this.globe?.DrawRender();
|
|
91
|
+
}
|
|
92
|
+
getCurrentSelection() {
|
|
101
93
|
return this._selectedObj;
|
|
102
|
-
}
|
|
94
|
+
}
|
|
103
95
|
/**
|
|
104
96
|
*
|
|
105
97
|
* @param {*} x screen x
|
|
106
98
|
* @param {*} y screen y
|
|
107
99
|
* @param {*} callback callback on selection
|
|
108
100
|
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
var selectedIDs = Array.from(selectedIDsSet);
|
|
101
|
+
screenSelection(x, y, callback) {
|
|
102
|
+
const { pointSizes, _pickerDisplayer } = this;
|
|
103
|
+
const objectStore = this._bufferManagersMap.get("objectStore").bufferManager;
|
|
104
|
+
const wrapper = (selectedIDsSet) => {
|
|
105
|
+
const selectedIDs = Array.from(selectedIDsSet);
|
|
115
106
|
if (selectedIDs.length === 0) {
|
|
116
|
-
|
|
117
|
-
|
|
107
|
+
this._selectedObj = null;
|
|
108
|
+
this._selectedID = -1;
|
|
118
109
|
callback([]);
|
|
119
110
|
return;
|
|
120
111
|
}
|
|
121
|
-
|
|
122
|
-
for (
|
|
123
|
-
|
|
112
|
+
const selectedPoints = [];
|
|
113
|
+
for (let i = 0; i < selectedIDs.length; i++) {
|
|
114
|
+
const id = selectedIDs[i];
|
|
124
115
|
if (i === 0) {
|
|
125
|
-
|
|
126
|
-
|
|
116
|
+
this._selectedID = id;
|
|
117
|
+
this._selectedObj = objectStore.get(id);
|
|
127
118
|
}
|
|
128
|
-
|
|
119
|
+
const obj = objectStore.get(id);
|
|
129
120
|
selectedPoints.push(obj);
|
|
130
121
|
}
|
|
131
122
|
callback(selectedPoints);
|
|
132
123
|
};
|
|
133
124
|
_pickerDisplayer.pickXY(x, y, pointSizes.selectionPointFilling, wrapper);
|
|
134
|
-
}
|
|
125
|
+
}
|
|
135
126
|
/**
|
|
136
127
|
* @param {Array<Track>} tracks
|
|
137
128
|
* @returns
|
|
138
129
|
*/
|
|
139
|
-
|
|
140
|
-
var _a;
|
|
130
|
+
insertBulk(tracks) {
|
|
141
131
|
this._fillTracksToPointsMap(tracks); // TODO error should be at the top
|
|
142
|
-
|
|
143
|
-
|
|
132
|
+
const flattenedPoints = tracks.map(trackToFlatPoints).flat();
|
|
133
|
+
const currentLoad = this._bufferOrchestrator.length;
|
|
144
134
|
if (currentLoad + flattenedPoints.length >= 2147483647) {
|
|
145
135
|
throw new Error("Too many points, Point count cannot exceed 2147483647");
|
|
146
136
|
}
|
|
147
|
-
|
|
137
|
+
const { _bufferManagersMap, _bufferOrchestrator } = this;
|
|
148
138
|
_bufferOrchestrator.insertBulk(flattenedPoints, _bufferManagersMap);
|
|
149
139
|
this._refillFocus();
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
(
|
|
156
|
-
this._bufferManagersMap.forEach(function (_a) {
|
|
157
|
-
var bufferManager = _a.bufferManager;
|
|
158
|
-
return bufferManager.resetWithCapacity(capacity);
|
|
159
|
-
});
|
|
140
|
+
this.globe?.DrawRender();
|
|
141
|
+
}
|
|
142
|
+
flush() {
|
|
143
|
+
const capacity = 100;
|
|
144
|
+
this._bufferOrchestrator?.flush({ capacity });
|
|
145
|
+
this._bufferManagersMap.forEach(({ bufferManager }) => bufferManager.resetWithCapacity(capacity));
|
|
160
146
|
this._turnOffFocus();
|
|
161
147
|
this._tracksToPointsMap.clear();
|
|
162
|
-
|
|
163
|
-
}
|
|
148
|
+
this.globe?.DrawRender();
|
|
149
|
+
}
|
|
164
150
|
/**
|
|
165
151
|
* @param {string} trackID
|
|
166
152
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
_bufferOrchestrator.deleteBulk(points.map(function (pointID) { return keyMethod(trackID, pointID); }), _bufferManagersMap);
|
|
153
|
+
deleteTrack(trackID) {
|
|
154
|
+
const pointSet = this._tracksToPointsMap.get(trackID);
|
|
155
|
+
const points = Array.from(pointSet);
|
|
156
|
+
const { _bufferOrchestrator, _bufferManagersMap } = this;
|
|
157
|
+
_bufferOrchestrator.deleteBulk(points.map((pointID) => keyMethod(trackID, pointID)), _bufferManagersMap);
|
|
173
158
|
this._tracksToPointsMap.delete(trackID);
|
|
174
159
|
this._redraw = true;
|
|
175
160
|
this._refillFocus();
|
|
176
|
-
|
|
177
|
-
}
|
|
161
|
+
this.globe?.DrawRender();
|
|
162
|
+
}
|
|
178
163
|
/**
|
|
179
164
|
* @param {string} trackID
|
|
180
165
|
* @param {Array<string>} pointIDs
|
|
181
166
|
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
_bufferOrchestrator.deleteBulk(pointIDs.map(function (pointID) { return keyMethod(trackID, pointID); }), _bufferManagersMap);
|
|
167
|
+
deletePoints(trackID, pointIDs) {
|
|
168
|
+
const { _bufferOrchestrator, _bufferManagersMap } = this;
|
|
169
|
+
_bufferOrchestrator.deleteBulk(pointIDs.map((pointID) => keyMethod(trackID, pointID)), _bufferManagersMap);
|
|
186
170
|
this._deletePointsFromTracksMap(trackID, pointIDs);
|
|
187
171
|
this._refillFocus();
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
var _a;
|
|
192
|
-
if (trackIDs === void 0) { trackIDs = null; }
|
|
172
|
+
this.globe?.DrawRender();
|
|
173
|
+
}
|
|
174
|
+
focusTracks(trackIDs = null) {
|
|
193
175
|
if (!this.globe)
|
|
194
176
|
return;
|
|
195
177
|
if (!trackIDs) {
|
|
196
178
|
this._focusParams.on = false;
|
|
197
|
-
|
|
179
|
+
this.globe?.DrawRender();
|
|
198
180
|
return;
|
|
199
181
|
}
|
|
200
182
|
this._focusParams.on = this._fillElementBuffer(trackIDs);
|
|
@@ -202,22 +184,19 @@ var PointTracksPlugin = /** @class */ (function () {
|
|
|
202
184
|
this._turnOffFocus();
|
|
203
185
|
}
|
|
204
186
|
this.globe.DrawRender();
|
|
205
|
-
}
|
|
187
|
+
}
|
|
206
188
|
// GLOBE API METHODS
|
|
207
|
-
|
|
189
|
+
free() {
|
|
208
190
|
if (this._isFreed)
|
|
209
191
|
return;
|
|
210
192
|
this._isFreed = true;
|
|
211
193
|
this._pickerDisplayer.free();
|
|
212
|
-
|
|
194
|
+
PointOnGlobeProgramCache.release(this.globe);
|
|
213
195
|
this.gl.deleteBuffer(this._focusParams.elementBuffer);
|
|
214
|
-
this._bufferManagersMap.forEach(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
PointTracksPlugin.prototype.draw3D = function () {
|
|
220
|
-
var _a = this, gl = _a.gl, _pointProgram = _a._pointProgram, _pickerDisplayer = _a._pickerDisplayer, _bufferOrchestrator = _a._bufferOrchestrator, _vao = _a._vao;
|
|
196
|
+
this._bufferManagersMap.forEach(({ bufferManager, adaptor }) => bufferManager.free());
|
|
197
|
+
}
|
|
198
|
+
draw3D() {
|
|
199
|
+
const { gl, _pointProgram, _pickerDisplayer, _bufferOrchestrator, _vao } = this;
|
|
221
200
|
this.resize();
|
|
222
201
|
_pickerDisplayer.bindFBO();
|
|
223
202
|
_pickerDisplayer.clearTextures();
|
|
@@ -241,77 +220,72 @@ var PointTracksPlugin = /** @class */ (function () {
|
|
|
241
220
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
242
221
|
_pickerDisplayer.drawColorTexture();
|
|
243
222
|
this._selfSelect();
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
var h = this.globe.api_ScrH();
|
|
223
|
+
}
|
|
224
|
+
resize() {
|
|
225
|
+
const w = this.globe.api_ScrW();
|
|
226
|
+
const h = this.globe.api_ScrH();
|
|
249
227
|
if (w === this._lastWH.w && h === this._lastWH.h)
|
|
250
228
|
return;
|
|
251
229
|
this._lastWH.w = w;
|
|
252
230
|
this._lastWH.h = h;
|
|
253
231
|
this._pickerDisplayer.resize();
|
|
254
|
-
|
|
255
|
-
}
|
|
232
|
+
this.globe?.DrawRender();
|
|
233
|
+
}
|
|
256
234
|
// IMPLICIT METHODS
|
|
257
|
-
|
|
258
|
-
for (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
var points = track.points;
|
|
235
|
+
_fillTracksToPointsMap(tracks) {
|
|
236
|
+
for (const track of tracks) {
|
|
237
|
+
const trackID = track.trackID;
|
|
238
|
+
const points = track.points;
|
|
262
239
|
if (!this._tracksToPointsMap.has(trackID)) {
|
|
263
240
|
this._tracksToPointsMap.set(trackID, new Set());
|
|
264
241
|
}
|
|
265
|
-
|
|
266
|
-
for (
|
|
267
|
-
|
|
242
|
+
const pointSet = this._tracksToPointsMap.get(trackID);
|
|
243
|
+
for (let p = 0; p < points.length; p++) {
|
|
244
|
+
const pointID = points[p].ID;
|
|
268
245
|
pointSet.add(pointID);
|
|
269
246
|
}
|
|
270
247
|
}
|
|
271
|
-
}
|
|
272
|
-
|
|
248
|
+
}
|
|
249
|
+
_refillFocus() {
|
|
273
250
|
if (this._focusParams.on) {
|
|
274
251
|
this.focusTracks(this._focusParams.trackIDs);
|
|
275
252
|
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
for (
|
|
280
|
-
var pointID = pointIDs_1[_i];
|
|
253
|
+
}
|
|
254
|
+
_deletePointsFromTracksMap(trackID, pointIDs) {
|
|
255
|
+
const trackSet = this._tracksToPointsMap.get(trackID);
|
|
256
|
+
for (const pointID of pointIDs) {
|
|
281
257
|
trackSet.delete(pointID);
|
|
282
258
|
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
this.screenSelection(x, y,
|
|
259
|
+
}
|
|
260
|
+
_selfSelect() {
|
|
261
|
+
const { globe } = this;
|
|
262
|
+
const pos = globe.api_GetMousePos();
|
|
263
|
+
const x = pos.canvasX;
|
|
264
|
+
const y = globe.api_ScrH() - pos.canvasY;
|
|
265
|
+
this.screenSelection(x, y, (selectedPoints) => {
|
|
290
266
|
});
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
|
|
267
|
+
}
|
|
268
|
+
_turnOffFocus() {
|
|
269
|
+
const { gl } = this;
|
|
294
270
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._focusParams.elementBuffer);
|
|
295
271
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array([]), gl.STATIC_DRAW);
|
|
296
272
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
|
|
297
273
|
this._focusParams.length = 0;
|
|
298
274
|
this._focusParams.on = false;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
for (
|
|
305
|
-
|
|
306
|
-
var pointSet = this._tracksToPointsMap.get(trackID);
|
|
275
|
+
}
|
|
276
|
+
_fillElementBuffer(trackIDs) {
|
|
277
|
+
let length = 0;
|
|
278
|
+
const indexes = [];
|
|
279
|
+
const foundTracks = [];
|
|
280
|
+
for (const trackID of trackIDs) {
|
|
281
|
+
const pointSet = this._tracksToPointsMap.get(trackID);
|
|
307
282
|
if (!pointSet)
|
|
308
283
|
continue;
|
|
309
284
|
foundTracks.push(trackID);
|
|
310
|
-
|
|
311
|
-
for (
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
var index = this._bufferOrchestrator.offsetMap.get(key);
|
|
285
|
+
const points = Array.from(pointSet);
|
|
286
|
+
for (const pointID of points) {
|
|
287
|
+
const key = keyMethod(trackID, pointID);
|
|
288
|
+
const index = this._bufferOrchestrator.offsetMap.get(key);
|
|
315
289
|
indexes.push(index);
|
|
316
290
|
length++;
|
|
317
291
|
}
|
|
@@ -321,33 +295,30 @@ var PointTracksPlugin = /** @class */ (function () {
|
|
|
321
295
|
if (length === 0) {
|
|
322
296
|
return false;
|
|
323
297
|
}
|
|
324
|
-
|
|
298
|
+
const { gl } = this;
|
|
325
299
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._focusParams.elementBuffer);
|
|
326
300
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(indexes), gl.STATIC_DRAW);
|
|
327
301
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
|
|
328
302
|
return true;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
var flatPoints = [];
|
|
338
|
-
for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {
|
|
339
|
-
var point = points_2[_i];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const trackToFlatPoints = (track) => {
|
|
306
|
+
const trackID = track.trackID;
|
|
307
|
+
const points = track.points;
|
|
308
|
+
const rgba = new Float32Array(track.rgba);
|
|
309
|
+
const flatPoints = [];
|
|
310
|
+
for (const point of points) {
|
|
340
311
|
flatPoints.push({
|
|
341
312
|
key: keyMethod(trackID, point.ID),
|
|
342
313
|
long: point.long,
|
|
343
314
|
lat: point.lat,
|
|
344
315
|
height: point.height,
|
|
345
316
|
pointID: point.ID,
|
|
346
|
-
rgba
|
|
347
|
-
trackID
|
|
317
|
+
rgba,
|
|
318
|
+
trackID
|
|
348
319
|
});
|
|
349
320
|
}
|
|
350
321
|
return flatPoints;
|
|
351
322
|
};
|
|
352
|
-
|
|
353
|
-
|
|
323
|
+
const keyMethod = (trackID, pointID) => `${trackID}_${pointID}`;
|
|
324
|
+
export { PointTracksPlugin, keyMethod };
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var object_1 = __importDefault(require("./object"));
|
|
7
|
-
exports.default = object_1.default;
|
|
1
|
+
import ArrowField from './object';
|
|
2
|
+
export default ArrowField;
|