@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,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* ring data model
|
|
4
3
|
* [centerX, centerY, range, padding, r, g, b, a, hide]
|
|
@@ -6,68 +5,21 @@
|
|
|
6
5
|
* Buffer is initialized with ring capacity and buffer is created with that capacity. It might be called buffer orphaning.
|
|
7
6
|
*
|
|
8
7
|
* */
|
|
9
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
19
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
20
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
21
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
22
|
-
function step(op) {
|
|
23
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
24
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
25
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
26
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
27
|
-
switch (op[0]) {
|
|
28
|
-
case 0: case 1: t = op; break;
|
|
29
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
30
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
31
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
32
|
-
default:
|
|
33
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
34
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
35
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
36
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
37
|
-
if (t[2]) _.ops.pop();
|
|
38
|
-
_.trys.pop(); continue;
|
|
39
|
-
}
|
|
40
|
-
op = body.call(thisArg, _);
|
|
41
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
42
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
46
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
47
|
-
if (ar || !(i in from)) {
|
|
48
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
49
|
-
ar[i] = from[i];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
53
|
-
};
|
|
54
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
8
|
/**
|
|
56
9
|
* TODO
|
|
57
10
|
* delete registerCenter
|
|
58
11
|
*
|
|
59
12
|
*
|
|
60
13
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
14
|
+
const RING_SIZE = 9;
|
|
15
|
+
export default class {
|
|
63
16
|
/**
|
|
64
17
|
* @param {WebGL2RenderingContext} gl
|
|
65
18
|
* @param {Object} options
|
|
66
19
|
* @param {Number} options.initialRingCapacity
|
|
67
20
|
* @param {String} options.bufferType - "static" or "dynamic"
|
|
68
21
|
* */
|
|
69
|
-
|
|
70
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.initialRingCapacity, initialRingCapacity = _c === void 0 ? 20 : _c, _d = _b.bufferType, bufferType = _d === void 0 ? "STATIC_DRAW" : _d, _e = _b.implicitExtentionRate, implicitExtentionRate = _e === void 0 ? 1.2 : _e;
|
|
22
|
+
constructor(gl, globe, { initialRingCapacity = 20, bufferType = "STATIC_DRAW", implicitExtentionRate = 1.2 } = {}) {
|
|
71
23
|
this.gl = gl;
|
|
72
24
|
this.globe = globe;
|
|
73
25
|
this._capacity = initialRingCapacity;
|
|
@@ -131,103 +83,86 @@ var default_1 = /** @class */ (function () {
|
|
|
131
83
|
* @param {Number} options.x
|
|
132
84
|
* @param {Number} options.y
|
|
133
85
|
* */
|
|
134
|
-
|
|
135
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.x, x = _c === void 0 ? 0 : _c, _d = _b.y, y = _d === void 0 ? 0 : _d;
|
|
86
|
+
registerCenter(centerID, { x = 0, y = 0 } = {}) {
|
|
136
87
|
this._centerMap.set(centerID, new Map([
|
|
137
88
|
["x", x],
|
|
138
89
|
["y", y],
|
|
139
90
|
["rings", []] // ring keys
|
|
140
91
|
]));
|
|
141
|
-
}
|
|
92
|
+
}
|
|
142
93
|
/**
|
|
143
94
|
*
|
|
144
95
|
* @param {null | number} newCapacity if null, vacuum defragmentation is applied -> capacity is set to the current ring count
|
|
145
96
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
var _a = this, _removedRingsOffsetStack = _a._removedRingsOffsetStack, _ringOffsets = _a._ringOffsets;
|
|
97
|
+
defrag(newCapacity = null) {
|
|
98
|
+
const { _removedRingsOffsetStack, _ringOffsets } = this;
|
|
149
99
|
_removedRingsOffsetStack.sort();
|
|
150
100
|
this._capacity = newCapacity || this._ringCounter;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
for (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
var ringData = bufferData.slice(ringOffset, ringOffset + RING_SIZE);
|
|
101
|
+
const arrayToLoad = new Float32Array(this._capacity * RING_SIZE);
|
|
102
|
+
const bufferData = this._getBufferData();
|
|
103
|
+
let arrayOffset = 0;
|
|
104
|
+
const newRingOffsets = new Map();
|
|
105
|
+
for (const [key, offset] of _ringOffsets) {
|
|
106
|
+
const ringOffset = offset / 4;
|
|
107
|
+
const ringData = bufferData.slice(ringOffset, ringOffset + RING_SIZE);
|
|
159
108
|
arrayToLoad.set(ringData, arrayOffset);
|
|
160
109
|
newRingOffsets.set(key, arrayOffset * 4);
|
|
161
110
|
arrayOffset += RING_SIZE;
|
|
162
111
|
}
|
|
163
|
-
|
|
112
|
+
const { gl, buffer } = this;
|
|
164
113
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
165
114
|
gl.bufferData(gl.ARRAY_BUFFER, arrayToLoad, this._bufferType);
|
|
166
115
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
167
116
|
this._ringOffsets = newRingOffsets;
|
|
168
117
|
this._removedRingsOffsetStack = [];
|
|
169
118
|
this._length = this._ringCounter;
|
|
170
|
-
}
|
|
171
|
-
|
|
119
|
+
}
|
|
120
|
+
extendBuffer(newCapacity) {
|
|
172
121
|
if (this._capacity >= newCapacity) {
|
|
173
122
|
console.warn("New capacity is smaller than the current capacity");
|
|
174
123
|
return;
|
|
175
124
|
}
|
|
176
125
|
this._capacity = newCapacity;
|
|
177
|
-
|
|
178
|
-
|
|
126
|
+
const { gl, buffer } = this;
|
|
127
|
+
const bufferData = this._getBufferData();
|
|
179
128
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
180
129
|
gl.bufferData(gl.ARRAY_BUFFER, newCapacity * RING_SIZE * 4, this._bufferType);
|
|
181
130
|
gl.bufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
|
|
182
131
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (sizeLeft === void 0) { sizeLeft = 1; }
|
|
132
|
+
}
|
|
133
|
+
checkCapacity(sizeLeft = 1) {
|
|
186
134
|
return sizeLeft <= this._capacity - this._ringCounter;
|
|
187
|
-
}
|
|
188
|
-
|
|
135
|
+
}
|
|
136
|
+
capacityLeft() {
|
|
189
137
|
return this._capacity - this._ringCounter;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return this._length;
|
|
201
|
-
},
|
|
202
|
-
enumerable: false,
|
|
203
|
-
configurable: true
|
|
204
|
-
});
|
|
205
|
-
Object.defineProperty(default_1.prototype, "ringCount", {
|
|
206
|
-
get: function () {
|
|
207
|
-
return this._ringCounter;
|
|
208
|
-
},
|
|
209
|
-
enumerable: false,
|
|
210
|
-
configurable: true
|
|
211
|
-
});
|
|
138
|
+
}
|
|
139
|
+
get capacity() {
|
|
140
|
+
return this._capacity;
|
|
141
|
+
}
|
|
142
|
+
get length() {
|
|
143
|
+
return this._length;
|
|
144
|
+
}
|
|
145
|
+
get ringCount() {
|
|
146
|
+
return this._ringCounter;
|
|
147
|
+
}
|
|
212
148
|
/**
|
|
213
149
|
* @param {Array<string>} centerIDs
|
|
214
150
|
* */
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
151
|
+
removeCenters(centerIDs) {
|
|
152
|
+
const { gl, buffer } = this;
|
|
153
|
+
const zero = new Float32Array([0]);
|
|
218
154
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
219
|
-
for (
|
|
220
|
-
var centerID = centerIDs_1[_i];
|
|
155
|
+
for (let centerID of centerIDs) {
|
|
221
156
|
if (!this._centerMap.has(centerID)) {
|
|
222
157
|
// console.warn("Center is not registered yet");
|
|
223
158
|
// return;
|
|
224
159
|
continue;
|
|
225
160
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
for (
|
|
161
|
+
const center = this._centerMap.get(centerID);
|
|
162
|
+
const rings = center.get("rings");
|
|
163
|
+
for (let i = 0; i < rings.length; i++) {
|
|
229
164
|
// set range to 0, 3rd index of float32array
|
|
230
|
-
|
|
165
|
+
const offset = this._ringOffsets.get(rings[i]);
|
|
231
166
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset + 8, zero);
|
|
232
167
|
this._removedRingsOffsetStack.push(offset);
|
|
233
168
|
this._ringOffsets.delete(rings[i]);
|
|
@@ -237,7 +172,7 @@ var default_1 = /** @class */ (function () {
|
|
|
237
172
|
}
|
|
238
173
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
239
174
|
this.globe.DrawRender();
|
|
240
|
-
}
|
|
175
|
+
}
|
|
241
176
|
/**
|
|
242
177
|
*
|
|
243
178
|
* @property {String} centerID
|
|
@@ -245,46 +180,43 @@ var default_1 = /** @class */ (function () {
|
|
|
245
180
|
* @property {Number} y radians y
|
|
246
181
|
* @param {*} centerIDxyList
|
|
247
182
|
*/
|
|
248
|
-
|
|
249
|
-
|
|
183
|
+
updateCentersXY(centerIDxyList) {
|
|
184
|
+
const { gl, buffer } = this;
|
|
250
185
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
251
|
-
for (
|
|
252
|
-
|
|
253
|
-
var center = this._centerMap.get(centerID);
|
|
186
|
+
for (let { centerID, x, y } of centerIDxyList) {
|
|
187
|
+
const center = this._centerMap.get(centerID);
|
|
254
188
|
center.set("x", x);
|
|
255
189
|
center.set("y", y);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
for (
|
|
259
|
-
|
|
190
|
+
const xyBlock = new Float32Array([x, y]);
|
|
191
|
+
const rings = center.get("rings");
|
|
192
|
+
for (let i = 0; i < rings.length; i++) {
|
|
193
|
+
const offset = this._ringOffsets.get(rings[i]);
|
|
260
194
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset, xyBlock);
|
|
261
195
|
}
|
|
262
196
|
}
|
|
263
197
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
264
198
|
this.globe.DrawRender();
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
|
|
199
|
+
}
|
|
200
|
+
updateCentersHide(data) {
|
|
201
|
+
const { gl, buffer } = this;
|
|
268
202
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
269
|
-
for (
|
|
270
|
-
var _b = data_1[_i], centerID = _b.centerID, _c = _b.hide, hide = _c === void 0 ? null : _c;
|
|
203
|
+
for (let { centerID, hide = null } of data) {
|
|
271
204
|
if (hide === null)
|
|
272
205
|
continue;
|
|
273
|
-
|
|
274
|
-
for (
|
|
275
|
-
|
|
206
|
+
const rings = this._centerMap.get(centerID).get("rings");
|
|
207
|
+
for (let i = 0; i < rings.length; i++) {
|
|
208
|
+
const offset = this._ringOffsets.get(rings[i]);
|
|
276
209
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset + 32, new Float32Array([hide]));
|
|
277
210
|
}
|
|
278
211
|
}
|
|
279
212
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
280
213
|
this.globe.DrawRender();
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
|
|
214
|
+
}
|
|
215
|
+
insertBulk(rangeRingDatas) {
|
|
216
|
+
const { gl, buffer } = this;
|
|
284
217
|
{ // remove existring centers
|
|
285
|
-
|
|
286
|
-
for (
|
|
287
|
-
var centerID = rangeRingDatas_1[_i].centerID;
|
|
218
|
+
const existingCenterIDs = [];
|
|
219
|
+
for (let { centerID } of rangeRingDatas) {
|
|
288
220
|
if (this._centerMap.has(centerID)) {
|
|
289
221
|
existingCenterIDs.push(centerID);
|
|
290
222
|
}
|
|
@@ -292,9 +224,8 @@ var default_1 = /** @class */ (function () {
|
|
|
292
224
|
this.removeCenters(existingCenterIDs);
|
|
293
225
|
}
|
|
294
226
|
{ // capacity check
|
|
295
|
-
|
|
296
|
-
for (
|
|
297
|
-
var rings = rangeRingDatas_2[_b].rings;
|
|
227
|
+
let incomingRingSize = 0;
|
|
228
|
+
for (let { rings } of rangeRingDatas) {
|
|
298
229
|
incomingRingSize += rings.length;
|
|
299
230
|
// It should check if ring is already registered but for now it is not implemented.
|
|
300
231
|
// Reasons: increase in complexity and performance
|
|
@@ -302,14 +233,12 @@ var default_1 = /** @class */ (function () {
|
|
|
302
233
|
this._implicitExtendBufferInNeed(incomingRingSize);
|
|
303
234
|
}
|
|
304
235
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
305
|
-
for (
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
var bufferData = new Float32Array(__spreadArray(__spreadArray([x, y, radius, padding], rgba, true), [hide], false));
|
|
312
|
-
var offset = this._nextBufferOffset();
|
|
236
|
+
for (const { centerID, x, y, rings, hide = 0 } of rangeRingDatas) {
|
|
237
|
+
this.registerCenter(centerID, { x, y });
|
|
238
|
+
for (const { ringID, radius, padding, rgba } of rings) {
|
|
239
|
+
const key = this._ringKey(centerID, ringID);
|
|
240
|
+
const bufferData = new Float32Array([x, y, radius, padding, ...rgba, hide]);
|
|
241
|
+
const offset = this._nextBufferOffset();
|
|
313
242
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset, bufferData);
|
|
314
243
|
this._ringOffsets.set(key, offset);
|
|
315
244
|
this._centerMap.get(centerID).get("rings").push(key);
|
|
@@ -317,61 +246,60 @@ var default_1 = /** @class */ (function () {
|
|
|
317
246
|
}
|
|
318
247
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
319
248
|
this.globe.DrawRender();
|
|
320
|
-
}
|
|
249
|
+
}
|
|
321
250
|
/**
|
|
322
251
|
*
|
|
323
252
|
* @param {Array<{centerID, rgba}} centersColors
|
|
324
253
|
*/
|
|
325
|
-
|
|
326
|
-
|
|
254
|
+
updateCentersColor(centersColors) {
|
|
255
|
+
const { gl, buffer } = this;
|
|
327
256
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
328
|
-
for (
|
|
329
|
-
var _b = centersColors_1[_i], centerID = _b.centerID, rgba = _b.rgba;
|
|
257
|
+
for (let { centerID, rgba } of centersColors) {
|
|
330
258
|
if (!this._centerMap.has(centerID)) {
|
|
331
259
|
console.warn("Center is not registered yet");
|
|
332
260
|
continue;
|
|
333
261
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
for (
|
|
337
|
-
|
|
262
|
+
const rings = this._centerMap.get(centerID).get("rings");
|
|
263
|
+
const block = new Float32Array(rgba);
|
|
264
|
+
for (let i = 0; i < rings.length; i++) {
|
|
265
|
+
const offset = this._ringOffsets.get(rings[i]);
|
|
338
266
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset + 16, block);
|
|
339
267
|
}
|
|
340
268
|
}
|
|
341
269
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
342
270
|
this.globe.DrawRender();
|
|
343
|
-
}
|
|
271
|
+
}
|
|
344
272
|
// ----------------- INTERNAL METHODS ----------------- //
|
|
345
|
-
|
|
273
|
+
bindCircleVAO() {
|
|
346
274
|
this.gl.bindVertexArray(this._circleVAO);
|
|
347
|
-
}
|
|
348
|
-
|
|
275
|
+
}
|
|
276
|
+
bindPaddingVAO() {
|
|
349
277
|
this.gl.bindVertexArray(this._paddingVAO);
|
|
350
|
-
}
|
|
351
|
-
|
|
278
|
+
}
|
|
279
|
+
free() {
|
|
352
280
|
this.gl.deleteBuffer(this.buffer);
|
|
353
281
|
this.gl.deleteVertexArray(this._circleVAO);
|
|
354
282
|
this.gl.deleteVertexArray(this._paddingVAO);
|
|
355
|
-
}
|
|
283
|
+
}
|
|
356
284
|
// ----------------- PRIVATE METHODS ----------------- //
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
285
|
+
_getBufferData() {
|
|
286
|
+
const { gl, buffer } = this;
|
|
287
|
+
const size = new Float32Array(this._length * RING_SIZE);
|
|
288
|
+
const bufferData = new Float32Array(size);
|
|
361
289
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
362
290
|
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
|
|
363
291
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
364
292
|
return bufferData;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
return
|
|
368
|
-
}
|
|
369
|
-
|
|
293
|
+
}
|
|
294
|
+
_ringKey(centerID, ringID) {
|
|
295
|
+
return `C=${centerID},R=${ringID}`;
|
|
296
|
+
}
|
|
297
|
+
_nextBufferOffset() {
|
|
370
298
|
if (!this.checkCapacity()) {
|
|
371
299
|
throw new Error("Buffer is full");
|
|
372
300
|
return;
|
|
373
301
|
}
|
|
374
|
-
|
|
302
|
+
let offset;
|
|
375
303
|
if (this._removedRingsOffsetStack.length > 0) {
|
|
376
304
|
offset = this._removedRingsOffsetStack.pop();
|
|
377
305
|
}
|
|
@@ -381,42 +309,35 @@ var default_1 = /** @class */ (function () {
|
|
|
381
309
|
}
|
|
382
310
|
this._ringCounter++;
|
|
383
311
|
return offset;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
|
|
312
|
+
}
|
|
313
|
+
_implicitExtendBufferInNeed(incomingRingSize) {
|
|
314
|
+
const overCapacity = incomingRingSize - this.capacityLeft();
|
|
387
315
|
if (overCapacity <= 0)
|
|
388
316
|
return;
|
|
389
|
-
|
|
317
|
+
const newCapacity = Math.ceil((this._capacity + overCapacity) * this.implicitExtentionRate);
|
|
390
318
|
this.extendBuffer(newCapacity);
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
}];
|
|
414
|
-
});
|
|
415
|
-
});
|
|
416
|
-
};
|
|
417
|
-
return default_1;
|
|
418
|
-
}());
|
|
419
|
-
exports.default = default_1;
|
|
319
|
+
}
|
|
320
|
+
async readRing(centerID, ringID) {
|
|
321
|
+
const key = this._ringKey(centerID, ringID);
|
|
322
|
+
if (!this._ringOffsets.has(key)) {
|
|
323
|
+
console.warn("Ring is not registered yet");
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const offset = this._ringOffsets.get(key);
|
|
327
|
+
const { gl, buffer } = this;
|
|
328
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
329
|
+
const bufferData = new Float32Array(9);
|
|
330
|
+
gl.getBufferSubData(gl.ARRAY_BUFFER, offset, bufferData);
|
|
331
|
+
return {
|
|
332
|
+
centerX: bufferData[0],
|
|
333
|
+
centerY: bufferData[1],
|
|
334
|
+
range: bufferData[2],
|
|
335
|
+
padding: bufferData[3],
|
|
336
|
+
rgba: [bufferData[4], bufferData[5], bufferData[6], bufferData[7]],
|
|
337
|
+
hide: bufferData[8]
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
420
341
|
/**
|
|
421
342
|
* Documentation
|
|
422
343
|
*
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
exports.PaddingFreeAngleCache = exports.CirclePaddySharedBuffer = exports.PaddingProgramCache = exports.circleProgramCache = void 0;
|
|
7
|
-
var circleflatprogram_1 = require("./circleflatprogram");
|
|
8
|
-
Object.defineProperty(exports, "circleProgramCache", { enumerable: true, get: function () { return circleflatprogram_1.programCache; } });
|
|
9
|
-
var paddyflatprogram_1 = require("./paddyflatprogram");
|
|
10
|
-
Object.defineProperty(exports, "PaddingProgramCache", { enumerable: true, get: function () { return paddyflatprogram_1.PaddingProgramCache; } });
|
|
11
|
-
var circlepaddysharedbuffer_1 = __importDefault(require("./circlepaddysharedbuffer"));
|
|
12
|
-
exports.CirclePaddySharedBuffer = circlepaddysharedbuffer_1.default;
|
|
13
|
-
var circlepaddingfreeangleprogram_1 = require("./circlepaddingfreeangleprogram");
|
|
14
|
-
Object.defineProperty(exports, "PaddingFreeAngleCache", { enumerable: true, get: function () { return circlepaddingfreeangleprogram_1.PaddingFreeAngleCache; } });
|
|
1
|
+
import { programCache as circleProgramCache } from './circleflatprogram';
|
|
2
|
+
import { PaddingProgramCache } from './paddyflatprogram';
|
|
3
|
+
import CirclePaddySharedBuffer from './circlepaddysharedbuffer';
|
|
4
|
+
import { PaddingFreeAngleCache } from './circlepaddingfreeangleprogram';
|
|
5
|
+
export { circleProgramCache, PaddingProgramCache, CirclePaddySharedBuffer, PaddingFreeAngleCache };
|