@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/util/account/index.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.BufferOffsetManager = void 0;
|
|
21
|
-
var bufferoffsetmanager_1 = __importDefault(require("./bufferoffsetmanager"));
|
|
22
|
-
exports.BufferOffsetManager = bufferoffsetmanager_1.default;
|
|
23
|
-
__exportStar(require("./single-attribute-buffer-management/index"), exports);
|
|
1
|
+
import BufferOffsetManager from './bufferoffsetmanager';
|
|
2
|
+
export { BufferOffsetManager };
|
|
3
|
+
export * from './single-attribute-buffer-management/index';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* BufferOffsetManager
|
|
4
3
|
* Purpose: To manage the offset of the buffer. Plus extend and defrag the buffer.
|
|
@@ -17,12 +16,13 @@
|
|
|
17
16
|
* READ, most of the time is not needed to be read, unless for defraging.
|
|
18
17
|
* This unpredicatable behavior is not handled by this class.
|
|
19
18
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
export class BufferManager {
|
|
20
|
+
gl;
|
|
21
|
+
buffer;
|
|
22
|
+
itemSize;
|
|
23
|
+
bufferType;
|
|
24
|
+
isFreed = false;
|
|
25
|
+
constructor(gl, itemSize, { bufferType = "STATIC_DRAW", buffer = null, initialCapacity = null } = {}) {
|
|
26
26
|
this.gl = gl;
|
|
27
27
|
this.itemSize = itemSize;
|
|
28
28
|
this.bufferType = bufferType;
|
|
@@ -30,47 +30,45 @@ var BufferManager = /** @class */ (function () {
|
|
|
30
30
|
if (initialCapacity !== null)
|
|
31
31
|
this.resetWithCapacity(initialCapacity);
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
resetWithCapacity(capacity) {
|
|
34
|
+
const { gl, buffer, bufferType, itemSize } = this;
|
|
35
35
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
36
36
|
// @ts-ignore
|
|
37
37
|
gl.bufferData(gl.ARRAY_BUFFER, capacity * itemSize * 4, gl[bufferType]);
|
|
38
38
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
}
|
|
40
|
+
deleteBulk(offsets) {
|
|
41
|
+
const { gl, buffer, itemSize } = this;
|
|
42
|
+
const emptyBlock = new Float32Array(this.itemSize).fill(NaN);
|
|
43
|
+
const offsetMultiplier = itemSize * 4;
|
|
44
44
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
45
|
-
for (
|
|
46
|
-
var offset = offsets_1[_i];
|
|
45
|
+
for (let offset of offsets) {
|
|
47
46
|
if (offset !== undefined) {
|
|
48
47
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset * offsetMultiplier, emptyBlock);
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
50
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
}
|
|
52
|
+
insertBulk(blocks, offsets) {
|
|
53
|
+
const { gl, buffer, itemSize } = this;
|
|
55
54
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
56
|
-
|
|
57
|
-
for (
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
const offsetMultiplier = itemSize * 4;
|
|
56
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
57
|
+
const block = blocks[i];
|
|
58
|
+
const offset = offsets[i] * offsetMultiplier;
|
|
60
59
|
if (offset !== undefined)
|
|
61
60
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset, block);
|
|
62
61
|
}
|
|
63
62
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
64
|
-
}
|
|
63
|
+
}
|
|
65
64
|
// TODO: this is broken
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
for (
|
|
72
|
-
|
|
73
|
-
var itemOffset = offset * itemSize;
|
|
65
|
+
defrag(offsetValues, occupiedCapacity, newCapacity) {
|
|
66
|
+
const { gl, buffer, bufferType, itemSize } = this;
|
|
67
|
+
const newArray = new Float32Array(newCapacity * itemSize);
|
|
68
|
+
const bufferData = this._getBufferData(occupiedCapacity);
|
|
69
|
+
let newOffset = 0;
|
|
70
|
+
for (const offset of offsetValues) {
|
|
71
|
+
const itemOffset = offset * itemSize;
|
|
74
72
|
newArray.set(bufferData.slice(itemOffset, itemOffset + itemSize), newOffset);
|
|
75
73
|
newOffset += itemSize;
|
|
76
74
|
}
|
|
@@ -79,34 +77,32 @@ var BufferManager = /** @class */ (function () {
|
|
|
79
77
|
gl.bufferData(gl.ARRAY_BUFFER, newCapacity * itemSize * 4, gl[bufferType]);
|
|
80
78
|
gl.bufferSubData(gl.ARRAY_BUFFER, 0, newArray);
|
|
81
79
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
}
|
|
81
|
+
extendBuffer(occupiedCapacity, newCapacity) {
|
|
82
|
+
const { gl, buffer, bufferType } = this;
|
|
83
|
+
const itemSize = this.itemSize;
|
|
84
|
+
const bufferData = this._getBufferData(occupiedCapacity);
|
|
87
85
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
88
86
|
// @ts-ignore
|
|
89
87
|
gl.bufferData(gl.ARRAY_BUFFER, newCapacity * itemSize * 4, gl[bufferType]);
|
|
90
88
|
gl.bufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
|
|
91
89
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
}
|
|
91
|
+
_getBufferData(occupiedCapacity) {
|
|
92
|
+
const { gl, buffer } = this;
|
|
93
|
+
const size = occupiedCapacity * this.itemSize;
|
|
94
|
+
const bufferData = new Float32Array(size);
|
|
97
95
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
98
96
|
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, bufferData);
|
|
99
97
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
100
98
|
return bufferData;
|
|
101
|
-
}
|
|
102
|
-
|
|
99
|
+
}
|
|
100
|
+
free() {
|
|
103
101
|
if (this.isFreed)
|
|
104
102
|
return;
|
|
105
103
|
this.gl.deleteBuffer(this.buffer);
|
|
106
104
|
// this.buffer = null;
|
|
107
105
|
// this.gl = null;
|
|
108
106
|
this.isFreed = true;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
}());
|
|
112
|
-
exports.BufferManager = BufferManager;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,50 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const EXTRA_SIZE = 10;
|
|
2
|
+
export class BufferOrchestrator {
|
|
3
|
+
_capacity;
|
|
4
|
+
offsetMap;
|
|
5
|
+
tombstoneOffsets;
|
|
6
|
+
_length;
|
|
7
|
+
constructor({ capacity = 10 } = {}) {
|
|
8
8
|
this._capacity = capacity;
|
|
9
9
|
this.offsetMap = new Map();
|
|
10
10
|
this.tombstoneOffsets = [];
|
|
11
11
|
this._length = 0;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
if (capacity === void 0) { capacity = null; }
|
|
13
|
+
resetWithCapacity(bufferManagersMap, capacity = null) {
|
|
15
14
|
this._capacity = capacity !== null ? capacity : this._capacity;
|
|
16
|
-
for (
|
|
17
|
-
var _a = bufferManagersMap_1[_i], key = _a[0], bufferManager = _a[1].bufferManager;
|
|
15
|
+
for (const [key, { bufferManager }] of bufferManagersMap) {
|
|
18
16
|
bufferManager.resetWithCapacity(this._capacity);
|
|
19
17
|
}
|
|
20
18
|
this.offsetMap.clear();
|
|
21
19
|
this.tombstoneOffsets = [];
|
|
22
20
|
this._length = 0;
|
|
23
|
-
}
|
|
24
|
-
|
|
21
|
+
}
|
|
22
|
+
insertBulk(items, bufferManagersMap) {
|
|
25
23
|
this.autoExtendBuffers(items.length, bufferManagersMap);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
for (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var offset = o !== undefined ? o : this.nextOffset();
|
|
24
|
+
const { offsetMap } = this;
|
|
25
|
+
const offsets = [];
|
|
26
|
+
for (const item of items) {
|
|
27
|
+
let o = offsetMap.get(item.key);
|
|
28
|
+
const offset = o !== undefined ? o : this.nextOffset();
|
|
32
29
|
offsetMap.set(item.key, offset);
|
|
33
30
|
offsets.push(offset);
|
|
34
31
|
}
|
|
35
|
-
for (
|
|
36
|
-
var _b = bufferManagersMap_2[_a], key = _b[0], _c = _b[1], bufferManager = _c.bufferManager, adaptor = _c.adaptor;
|
|
32
|
+
for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
|
|
37
33
|
bufferManager.insertBulk(items.map(adaptor), offsets);
|
|
38
34
|
}
|
|
39
|
-
}
|
|
35
|
+
}
|
|
40
36
|
// does not assign offset to the new items.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
var item = items_2[_i];
|
|
47
|
-
var offset = offsetMap.get(item.key);
|
|
37
|
+
updateBulk(items, bufferManagersMap, bufferKeys = null) {
|
|
38
|
+
const { offsetMap } = this;
|
|
39
|
+
const offsets = [];
|
|
40
|
+
for (const item of items) {
|
|
41
|
+
const offset = offsetMap.get(item.key);
|
|
48
42
|
if (offset !== undefined) {
|
|
49
43
|
offsets.push(offset);
|
|
50
44
|
}
|
|
@@ -53,79 +47,71 @@ var BufferOrchestrator = /** @class */ (function () {
|
|
|
53
47
|
}
|
|
54
48
|
}
|
|
55
49
|
if (bufferKeys) {
|
|
56
|
-
for (
|
|
57
|
-
|
|
58
|
-
var bufferManagerComp = bufferManagersMap.get(key);
|
|
50
|
+
for (const key of bufferKeys) {
|
|
51
|
+
const bufferManagerComp = bufferManagersMap.get(key);
|
|
59
52
|
if (bufferManagerComp === undefined)
|
|
60
53
|
throw new Error("updateBulk bufferKey does not exist");
|
|
61
|
-
|
|
54
|
+
const { bufferManager, adaptor } = bufferManagerComp;
|
|
62
55
|
bufferManager.insertBulk(items.map(adaptor), offsets);
|
|
63
56
|
}
|
|
64
57
|
}
|
|
65
58
|
else {
|
|
66
|
-
for (
|
|
67
|
-
var _c = bufferManagersMap_3[_b], key = _c[0], _d = _c[1], bufferManager = _d.bufferManager, adaptor = _d.adaptor;
|
|
59
|
+
for (const [key, { bufferManager, adaptor }] of bufferManagersMap) {
|
|
68
60
|
bufferManager.insertBulk(items.map(adaptor), offsets);
|
|
69
61
|
}
|
|
70
62
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
for (
|
|
75
|
-
|
|
76
|
-
var offset = this.getOffset(key);
|
|
63
|
+
}
|
|
64
|
+
deleteBulk(keys, bufferManagersMap) {
|
|
65
|
+
const offsets = [];
|
|
66
|
+
for (const key of keys) {
|
|
67
|
+
const offset = this.getOffset(key);
|
|
77
68
|
if (offset !== undefined) {
|
|
78
69
|
offsets.push(offset);
|
|
79
70
|
this.offsetMap.delete(key);
|
|
80
71
|
this.tombstoneOffsets.push(offset);
|
|
81
72
|
}
|
|
82
73
|
}
|
|
83
|
-
for (
|
|
84
|
-
var _b = bufferManagersMap_4[_a], key = _b[0], bufferManager = _b[1].bufferManager;
|
|
74
|
+
for (const [key, { bufferManager }] of bufferManagersMap) {
|
|
85
75
|
bufferManager.deleteBulk(offsets);
|
|
86
76
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
77
|
+
}
|
|
78
|
+
getOffset(key) {
|
|
89
79
|
return this.offsetMap.get(key);
|
|
90
|
-
}
|
|
91
|
-
|
|
80
|
+
}
|
|
81
|
+
nextOffset() {
|
|
92
82
|
if (this.tombstoneOffsets.length > 0) {
|
|
93
|
-
|
|
83
|
+
const offset = this.tombstoneOffsets.pop();
|
|
94
84
|
return offset;
|
|
95
85
|
}
|
|
96
86
|
if (this._length < this._capacity) {
|
|
97
87
|
return this._length++;
|
|
98
88
|
}
|
|
99
89
|
return false;
|
|
100
|
-
}
|
|
101
|
-
|
|
90
|
+
}
|
|
91
|
+
autoExtendBuffers(itemsLength, bufferManagersMap) {
|
|
102
92
|
if (itemsLength <= this.emptySpace)
|
|
103
93
|
return;
|
|
104
|
-
|
|
105
|
-
for (
|
|
106
|
-
var _a = bufferManagersMap_5[_i], key = _a[0], bufferManager = _a[1].bufferManager;
|
|
94
|
+
const newCapacity = this.length + itemsLength;
|
|
95
|
+
for (const [key, { bufferManager }] of bufferManagersMap) {
|
|
107
96
|
bufferManager.extendBuffer(this.length, newCapacity);
|
|
108
97
|
}
|
|
109
98
|
this._capacity = newCapacity;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
99
|
+
}
|
|
100
|
+
defrag(bufferManagers, bufferKeys) {
|
|
101
|
+
const offsetMap = this.offsetMap;
|
|
102
|
+
const newCapacity = offsetMap.size + EXTRA_SIZE;
|
|
114
103
|
if (bufferKeys) {
|
|
115
|
-
for (
|
|
116
|
-
|
|
117
|
-
var offset = offsetMap.get(key);
|
|
104
|
+
for (const key of bufferKeys) {
|
|
105
|
+
const offset = offsetMap.get(key);
|
|
118
106
|
if (offset !== undefined) {
|
|
119
|
-
for (
|
|
120
|
-
var _b = bufferManagers_1[_a], key_1 = _b[0], bufferManager = _b[1].bufferManager;
|
|
107
|
+
for (const [key, { bufferManager }] of bufferManagers) {
|
|
121
108
|
bufferManager.defrag([offset], this.length, newCapacity);
|
|
122
109
|
}
|
|
123
110
|
}
|
|
124
111
|
}
|
|
125
112
|
}
|
|
126
113
|
else {
|
|
127
|
-
for (
|
|
128
|
-
var _d = bufferManagers_2[_c], key = _d[0], bufferManager = _d[1].bufferManager;
|
|
114
|
+
for (const [key, { bufferManager }] of bufferManagers) {
|
|
129
115
|
bufferManager.defrag(offsetMap.values(), this.length, newCapacity);
|
|
130
116
|
}
|
|
131
117
|
}
|
|
@@ -133,48 +119,32 @@ var BufferOrchestrator = /** @class */ (function () {
|
|
|
133
119
|
this._length = offsetMap.size;
|
|
134
120
|
this._capacity = newCapacity;
|
|
135
121
|
this.tombstoneOffsets = [];
|
|
136
|
-
}
|
|
122
|
+
}
|
|
137
123
|
/**
|
|
138
124
|
* Flushes metadata and sets length to 0 without actualize change on buffers
|
|
139
125
|
* This method created for cases in which data is loaded on each frame
|
|
140
126
|
*/
|
|
141
|
-
|
|
142
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.capacity, capacity = _c === void 0 ? 10 : _c;
|
|
127
|
+
flush({ capacity = 10 } = {}) {
|
|
143
128
|
this._length = 0;
|
|
144
129
|
this._capacity = capacity;
|
|
145
130
|
this.tombstoneOffsets = [];
|
|
146
131
|
this.offsetMap.clear();
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
for (
|
|
152
|
-
var _b = _a[_i], key = _b[0], offset = _b[1];
|
|
132
|
+
}
|
|
133
|
+
_defrag() {
|
|
134
|
+
const newOffsetMap = new Map();
|
|
135
|
+
let newOffset = 0;
|
|
136
|
+
for (const [key, offset] of this.offsetMap) {
|
|
153
137
|
newOffsetMap.set(key, newOffset++);
|
|
154
138
|
}
|
|
155
139
|
this.offsetMap = newOffsetMap;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
},
|
|
168
|
-
enumerable: false,
|
|
169
|
-
configurable: true
|
|
170
|
-
});
|
|
171
|
-
Object.defineProperty(BufferOrchestrator.prototype, "capacity", {
|
|
172
|
-
get: function () {
|
|
173
|
-
return this._capacity;
|
|
174
|
-
},
|
|
175
|
-
enumerable: false,
|
|
176
|
-
configurable: true
|
|
177
|
-
});
|
|
178
|
-
return BufferOrchestrator;
|
|
179
|
-
}());
|
|
180
|
-
exports.BufferOrchestrator = BufferOrchestrator;
|
|
140
|
+
}
|
|
141
|
+
get length() {
|
|
142
|
+
return this._length;
|
|
143
|
+
}
|
|
144
|
+
get emptySpace() {
|
|
145
|
+
return this._capacity - this.offsetMap.size;
|
|
146
|
+
}
|
|
147
|
+
get capacity() {
|
|
148
|
+
return this._capacity;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "BufferOrchestrator", { enumerable: true, get: function () { return buffer_orchestrator_1.BufferOrchestrator; } });
|
|
6
|
-
var buffer_manager_1 = require("./buffer-manager");
|
|
7
|
-
Object.defineProperty(exports, "BufferManager", { enumerable: true, get: function () { return buffer_manager_1.BufferManager; } });
|
|
8
|
-
var object_store_1 = require("./object-store");
|
|
9
|
-
Object.defineProperty(exports, "ObjectStore", { enumerable: true, get: function () { return object_store_1.ObjectStore; } });
|
|
1
|
+
import { BufferOrchestrator } from "./buffer-orchestrator";
|
|
2
|
+
import { BufferManager } from "./buffer-manager";
|
|
3
|
+
import { ObjectStore } from "./object-store";
|
|
4
|
+
export { BufferOrchestrator, BufferManager, ObjectStore };
|
|
@@ -1,53 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var ObjectStore = /** @class */ (function () {
|
|
5
|
-
function ObjectStore(_a) {
|
|
6
|
-
var _b = _a === void 0 ? {} : _a, _c = _b.initialCapcity, initialCapcity = _c === void 0 ? 10 : _c;
|
|
1
|
+
export class ObjectStore {
|
|
2
|
+
_container;
|
|
3
|
+
constructor({ initialCapcity = 10 } = {}) {
|
|
7
4
|
this._container = this._createEmptyList(initialCapcity);
|
|
8
5
|
}
|
|
9
|
-
|
|
6
|
+
resetWithCapacity(capacity) {
|
|
10
7
|
this._container = this._createEmptyList(capacity);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
for (
|
|
14
|
-
|
|
8
|
+
}
|
|
9
|
+
deleteBulk(offsets) {
|
|
10
|
+
for (let i = 0; i < offsets.length; i++) {
|
|
11
|
+
const offset = offsets[i];
|
|
15
12
|
if (offset !== undefined) {
|
|
16
13
|
this._container[offset] = null;
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
for (
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
}
|
|
17
|
+
insertBulk(objects, offsets) {
|
|
18
|
+
for (let i = 0; i < objects.length; i++) {
|
|
19
|
+
const object = objects[i];
|
|
20
|
+
const offset = offsets[i];
|
|
24
21
|
if (offset !== undefined) {
|
|
25
22
|
this._container[offset] = object;
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
for (
|
|
32
|
-
|
|
25
|
+
}
|
|
26
|
+
defrag(offsetValues, occupiedCapacity, newCapacity) {
|
|
27
|
+
const hold = this._createEmptyList(newCapacity);
|
|
28
|
+
for (let i = 0; i < offsetValues.length; i++) {
|
|
29
|
+
const offset = offsetValues[i];
|
|
33
30
|
if (offset !== undefined) {
|
|
34
31
|
hold[i] = this._container[offset];
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
this._container = hold;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
}
|
|
36
|
+
extendBuffer(occupiedCapacity, newCapacity) {
|
|
37
|
+
const oldCapacity = this._container.length;
|
|
41
38
|
this._container = this._container.concat(this._createEmptyList(newCapacity - oldCapacity));
|
|
42
|
-
}
|
|
43
|
-
|
|
39
|
+
}
|
|
40
|
+
_createEmptyList(size) {
|
|
44
41
|
return new Array(size).fill(null);
|
|
45
|
-
}
|
|
46
|
-
|
|
42
|
+
}
|
|
43
|
+
get(index) {
|
|
47
44
|
return this._container[index];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
}());
|
|
53
|
-
exports.ObjectStore = ObjectStore;
|
|
45
|
+
}
|
|
46
|
+
free() {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
package/util/account/util.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.vaoAttributeLoader = void 0;
|
|
4
|
-
var vaoAttributeLoader = function (gl, buffer, index, size, stride, offset, divisor, type) {
|
|
5
|
-
if (divisor === void 0) { divisor = null; }
|
|
6
|
-
if (type === void 0) { type = null; }
|
|
1
|
+
export const vaoAttributeLoader = (gl, buffer, index, size, stride, offset, divisor = null, type = null) => {
|
|
7
2
|
if (!gl || !buffer) {
|
|
8
3
|
throw new Error("Invalid WebGL context or buffer");
|
|
9
4
|
}
|
|
@@ -13,7 +8,7 @@ var vaoAttributeLoader = function (gl, buffer, index, size, stride, offset, divi
|
|
|
13
8
|
if (stride < 0 || offset < 0) {
|
|
14
9
|
throw new Error("Stride and offset must be non-negative");
|
|
15
10
|
}
|
|
16
|
-
|
|
11
|
+
const attribType = type === null ? gl.FLOAT : type;
|
|
17
12
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
18
13
|
gl.enableVertexAttribArray(index);
|
|
19
14
|
gl.vertexAttribPointer(index, size, attribType, false, stride, offset);
|
|
@@ -21,4 +16,3 @@ var vaoAttributeLoader = function (gl, buffer, index, size, stride, offset, divi
|
|
|
21
16
|
gl.vertexAttribDivisor(index, divisor);
|
|
22
17
|
}
|
|
23
18
|
};
|
|
24
|
-
exports.vaoAttributeLoader = vaoAttributeLoader;
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @typedef {Array<number>} ListLike
|
|
4
3
|
* @typedef {number || null} Index
|
|
5
4
|
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.findFirstIndexInRange = void 0;
|
|
8
5
|
/**
|
|
9
6
|
* @param {ListLike} container
|
|
10
7
|
* @param {number} value
|
|
11
8
|
* @returns {Index}
|
|
12
9
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
const findFirstIndexInRange = (container, value) => {
|
|
11
|
+
let start = 0;
|
|
12
|
+
let end = container.length - 1;
|
|
13
|
+
let mid = 0;
|
|
17
14
|
while (start <= end) {
|
|
18
15
|
mid = Math.floor((start + end) / 2);
|
|
19
16
|
if (container[mid] <= value && value <= container[mid + 1])
|
|
@@ -25,4 +22,4 @@ var findFirstIndexInRange = function (container, value) {
|
|
|
25
22
|
}
|
|
26
23
|
return null;
|
|
27
24
|
};
|
|
28
|
-
|
|
25
|
+
export { findFirstIndexInRange };
|
package/util/check/get.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.mapGetOrThrow = void 0;
|
|
4
|
-
var mapGetOrThrow = function (errorNote) {
|
|
5
|
-
return function (mapInstance, ids) {
|
|
1
|
+
export const mapGetOrThrow = (errorNote) => {
|
|
2
|
+
return (mapInstance, ids) => {
|
|
6
3
|
if (!ids)
|
|
7
4
|
throw new Error("There is no map keys to get");
|
|
8
|
-
|
|
9
|
-
for (
|
|
10
|
-
|
|
5
|
+
const result = [];
|
|
6
|
+
for (let i = 0; i < ids.length; i++) {
|
|
7
|
+
const e = mapInstance.get(ids[i]);
|
|
11
8
|
if (e === undefined)
|
|
12
9
|
throw new Error(errorNote + " " + ids[i]);
|
|
13
10
|
result.push(e);
|
|
@@ -15,4 +12,3 @@ var mapGetOrThrow = function (errorNote) {
|
|
|
15
12
|
return result;
|
|
16
13
|
};
|
|
17
14
|
};
|
|
18
|
-
exports.mapGetOrThrow = mapGetOrThrow;
|