@loaders.gl/tiles 4.0.0-alpha.5 → 4.0.0-alpha.6
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/dist/bundle.js +2 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +30 -26
- package/dist/dist.min.js +1572 -855
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/constants.js +44 -0
- package/dist/es5/constants.js.map +1 -0
- package/dist/es5/index.js +93 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js +70 -0
- package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js +45 -0
- package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-tile-manager.js +84 -0
- package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js +143 -0
- package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/es5/tileset/helpers/3d-tiles-options.js +12 -0
- package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/es5/tileset/helpers/bounding-volume.js +176 -0
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/es5/tileset/helpers/frame-state.js +129 -0
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -0
- package/dist/es5/tileset/helpers/i3s-lod.js +60 -0
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +103 -0
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/es5/tileset/helpers/transform-utils.js +50 -0
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/es5/tileset/helpers/zoom.js +63 -0
- package/dist/es5/tileset/helpers/zoom.js.map +1 -0
- package/dist/es5/tileset/tile-3d.js +565 -0
- package/dist/es5/tileset/tile-3d.js.map +1 -0
- package/dist/es5/tileset/tileset-3d.js +890 -0
- package/dist/es5/tileset/tileset-3d.js.map +1 -0
- package/dist/es5/tileset/tileset-cache.js +85 -0
- package/dist/es5/tileset/tileset-cache.js.map +1 -0
- package/dist/es5/tileset/tileset-traverser.js +328 -0
- package/dist/es5/tileset/tileset-traverser.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/utils/doubly-linked-list-node.js +21 -0
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/es5/utils/doubly-linked-list.js +88 -0
- package/dist/es5/utils/doubly-linked-list.js.map +1 -0
- package/dist/es5/utils/managed-array.js +126 -0
- package/dist/es5/utils/managed-array.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/constants.js +32 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset/format-3d-tiles}/tileset-3d-traverser.js +2 -13
- package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js +26 -0
- package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/esm/tileset/format-i3s/i3s-tile-manager.js +79 -0
- package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset/format-i3s}/i3s-tileset-traverser.js +14 -26
- package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/esm/tileset/helpers/3d-tiles-options.js +6 -0
- package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -0
- package/dist/esm/tileset/helpers/bounding-volume.js +155 -0
- package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -0
- package/dist/esm/tileset/helpers/frame-state.js +109 -0
- package/dist/esm/tileset/helpers/frame-state.js.map +1 -0
- package/dist/esm/tileset/helpers/i3s-lod.js +53 -0
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -0
- package/dist/esm/tileset/helpers/tiles-3d-lod.js +100 -0
- package/dist/{tileset → esm/tileset}/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/transform-utils.js +50 -0
- package/dist/esm/tileset/helpers/transform-utils.js.map +1 -0
- package/dist/esm/tileset/helpers/zoom.js +55 -0
- package/dist/esm/tileset/helpers/zoom.js.map +1 -0
- package/dist/esm/tileset/tile-3d.js +445 -0
- package/dist/esm/tileset/tile-3d.js.map +1 -0
- package/dist/esm/tileset/tileset-3d.js +637 -0
- package/dist/esm/tileset/tileset-3d.js.map +1 -0
- package/dist/esm/tileset/tileset-cache.js +60 -0
- package/dist/esm/tileset/tileset-cache.js.map +1 -0
- package/dist/{tileset/traversers → esm/tileset}/tileset-traverser.js +20 -72
- package/dist/esm/tileset/tileset-traverser.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/doubly-linked-list-node.js +12 -0
- package/dist/esm/utils/doubly-linked-list-node.js.map +1 -0
- package/dist/esm/utils/doubly-linked-list.js +65 -0
- package/dist/esm/utils/doubly-linked-list.js.map +1 -0
- package/dist/esm/utils/managed-array.js +87 -0
- package/dist/esm/utils/managed-array.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/dist/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.d.ts +2 -2
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +54 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts +27 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +47 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts +34 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-tile-manager.js +80 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts +25 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js +92 -0
- package/dist/tileset/helpers/3d-tiles-options.js +8 -5
- package/dist/tileset/helpers/bounding-volume.d.ts +10 -0
- package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -1
- package/dist/tileset/helpers/bounding-volume.js +274 -69
- package/dist/tileset/helpers/frame-state.d.ts +16 -5
- package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset/helpers/frame-state.js +131 -49
- package/dist/tileset/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset/helpers/i3s-lod.js +82 -64
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -1
- package/dist/tileset/helpers/tiles-3d-lod.js +112 -100
- package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
- package/dist/tileset/helpers/transform-utils.js +51 -56
- package/dist/tileset/helpers/zoom.d.ts +41 -2
- package/dist/tileset/helpers/zoom.d.ts.map +1 -1
- package/dist/tileset/helpers/zoom.js +83 -30
- package/dist/tileset/tile-3d.d.ts +45 -14
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +593 -534
- package/dist/tileset/tileset-3d.d.ts +54 -9
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +707 -648
- package/dist/tileset/tileset-cache.d.ts +1 -1
- package/dist/tileset/tileset-cache.d.ts.map +1 -1
- package/dist/tileset/tileset-cache.js +70 -71
- package/dist/tileset/{traversers/tileset-traverser.d.ts → tileset-traverser.d.ts} +11 -17
- package/dist/tileset/tileset-traverser.d.ts.map +1 -0
- package/dist/tileset/tileset-traverser.js +309 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/utils/doubly-linked-list-node.d.ts +1 -2
- package/dist/utils/doubly-linked-list-node.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list-node.js +17 -15
- package/dist/utils/doubly-linked-list.d.ts +2 -3
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +91 -75
- package/dist/utils/managed-array.d.ts +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +144 -109
- package/package.json +8 -8
- package/src/constants.ts +2 -0
- package/src/index.ts +6 -4
- package/src/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.ts +4 -2
- package/src/tileset/format-i3s/i3s-pending-tiles-register.ts +44 -0
- package/src/tileset/format-i3s/i3s-tile-manager.ts +101 -0
- package/src/tileset/{traversers → format-i3s}/i3s-tileset-traverser.ts +25 -12
- package/src/tileset/helpers/bounding-volume.ts +136 -0
- package/src/tileset/helpers/frame-state.ts +102 -18
- package/src/tileset/helpers/i3s-lod.ts +24 -21
- package/src/tileset/helpers/tiles-3d-lod.ts +2 -0
- package/src/tileset/helpers/transform-utils.ts +2 -0
- package/src/tileset/helpers/zoom.ts +84 -9
- package/src/tileset/tile-3d.ts +73 -18
- package/src/tileset/tileset-3d.ts +205 -43
- package/src/tileset/tileset-cache.ts +4 -2
- package/src/tileset/{traversers/tileset-traverser.ts → tileset-traverser.ts} +29 -17
- package/src/types.ts +36 -0
- package/src/utils/doubly-linked-list-node.ts +3 -2
- package/src/utils/doubly-linked-list.ts +2 -3
- package/src/utils/managed-array.ts +1 -1
- package/dist/bundle.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/traversers/i3s-tile-manager.d.ts +0 -8
- package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/traversers/i3s-tile-manager.js +0 -45
- package/dist/tileset/traversers/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +0 -18
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/traversers/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/traversers/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/traversers/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/traversers/tileset-traverser.js.map +0 -1
- package/dist/utils/doubly-linked-list-node.js.map +0 -1
- package/dist/utils/doubly-linked-list.js.map +0 -1
- package/dist/utils/managed-array.js.map +0 -1
- package/src/tileset/traversers/i3s-tile-manager.ts +0 -39
|
@@ -1,81 +1,97 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
add(item) {
|
|
17
|
-
const node = new DoublyLinkedListNode(item, this.tail, null);
|
|
18
|
-
|
|
19
|
-
if (this.tail) {
|
|
20
|
-
this.tail.next = node;
|
|
21
|
-
this.tail = node;
|
|
22
|
-
} else {
|
|
23
|
-
this.head = node;
|
|
24
|
-
this.tail = node;
|
|
1
|
+
"use strict";
|
|
2
|
+
// This file is derived from the Cesium code base under Apache 2 license
|
|
3
|
+
// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.DoublyLinkedList = void 0;
|
|
6
|
+
const doubly_linked_list_node_1 = require("./doubly-linked-list-node");
|
|
7
|
+
/**
|
|
8
|
+
* Doubly linked list
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
class DoublyLinkedList {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.head = null;
|
|
14
|
+
this.tail = null;
|
|
15
|
+
this._length = 0;
|
|
25
16
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return node;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
remove(node) {
|
|
32
|
-
if (!node) {
|
|
33
|
-
return;
|
|
17
|
+
get length() {
|
|
18
|
+
return this._length;
|
|
34
19
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Adds the item to the end of the list
|
|
22
|
+
* @param {*} [item]
|
|
23
|
+
* @return {DoublyLinkedListNode}
|
|
24
|
+
*/
|
|
25
|
+
add(item) {
|
|
26
|
+
const node = new doubly_linked_list_node_1.DoublyLinkedListNode(item, this.tail, null);
|
|
27
|
+
if (this.tail) {
|
|
28
|
+
this.tail.next = node;
|
|
29
|
+
this.tail = node;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.head = node;
|
|
33
|
+
this.tail = node;
|
|
34
|
+
}
|
|
35
|
+
++this._length;
|
|
36
|
+
return node;
|
|
48
37
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Removes the given node from the list
|
|
40
|
+
* @param {DoublyLinkedListNode} node
|
|
41
|
+
*/
|
|
42
|
+
remove(node) {
|
|
43
|
+
if (!node) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (node.previous && node.next) {
|
|
47
|
+
node.previous.next = node.next;
|
|
48
|
+
node.next.previous = node.previous;
|
|
49
|
+
}
|
|
50
|
+
else if (node.previous) {
|
|
51
|
+
// Remove last node
|
|
52
|
+
node.previous.next = null;
|
|
53
|
+
this.tail = node.previous;
|
|
54
|
+
}
|
|
55
|
+
else if (node.next) {
|
|
56
|
+
// Remove first node
|
|
57
|
+
node.next.previous = null;
|
|
58
|
+
this.head = node.next;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Remove last node in the linked list
|
|
62
|
+
this.head = null;
|
|
63
|
+
this.tail = null;
|
|
64
|
+
}
|
|
65
|
+
node.next = null;
|
|
66
|
+
node.previous = null;
|
|
67
|
+
--this._length;
|
|
58
68
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Moves nextNode after node
|
|
71
|
+
* @param {DoublyLinkedListNode} node
|
|
72
|
+
* @param {DoublyLinkedListNode} nextNode
|
|
73
|
+
*/
|
|
74
|
+
splice(node, nextNode) {
|
|
75
|
+
if (node === nextNode) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Remove nextNode, then insert after node
|
|
79
|
+
this.remove(nextNode);
|
|
80
|
+
this._insert(node, nextNode);
|
|
81
|
+
}
|
|
82
|
+
_insert(node, nextNode) {
|
|
83
|
+
const oldNodeNext = node.next;
|
|
84
|
+
node.next = nextNode;
|
|
85
|
+
// nextNode is the new tail
|
|
86
|
+
if (this.tail === node) {
|
|
87
|
+
this.tail = nextNode;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
oldNodeNext.previous = nextNode;
|
|
91
|
+
}
|
|
92
|
+
nextNode.next = oldNodeNext;
|
|
93
|
+
nextNode.previous = node;
|
|
94
|
+
++this._length;
|
|
73
95
|
}
|
|
74
|
-
|
|
75
|
-
nextNode.next = oldNodeNext;
|
|
76
|
-
nextNode.previous = node;
|
|
77
|
-
++this._length;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
96
|
}
|
|
81
|
-
|
|
97
|
+
exports.DoublyLinkedList = DoublyLinkedList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-array.d.ts","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,
|
|
1
|
+
{"version":3,"file":"managed-array.d.ts","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,IAAI,gBAAa;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;gBAEJ,MAAM,SAAI;IAKtB;;;;;;OAMG;IACH,IAAI,MAAM,WAET;IAED,IAAI,MAAM,CAAC,MAAM,QAAA,EAKhB;IAED;;;;;;OAMG;IACH,IAAI,MAAM,UAET;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,KAAA;IAKT;;;;;OAKG;IACH,GAAG,CAAC,KAAK,KAAA,EAAE,OAAO,KAAA;IAelB,MAAM,CAAC,OAAO,KAAA;IASd;;;;OAIG;IACH,IAAI;IAIJ;;;;OAIG;IACH,IAAI,CAAC,OAAO,KAAA;IAQZ;;;;OAIG;IACH,GAAG;IAMH;;;;OAIG;IACH,OAAO,CAAC,MAAM,KAAA;IAQd;;;;OAIG;IACH,MAAM,CAAC,MAAM,KAAA;IAMb;;;;OAIG;IACH,IAAI,CAAC,MAAM,KAAA;IAOX,KAAK;IAML,IAAI,CAAC,MAAM,KAAA;CAGZ"}
|
|
@@ -1,117 +1,152 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (length > this._array.length) {
|
|
23
|
-
this._array.length = length;
|
|
1
|
+
"use strict";
|
|
2
|
+
// This file is derived from the Cesium code base under Apache 2 license
|
|
3
|
+
// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.ManagedArray = void 0;
|
|
6
|
+
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
7
|
+
/**
|
|
8
|
+
* A wrapper around arrays so that the internal length of the array can be manually managed.
|
|
9
|
+
*
|
|
10
|
+
* @alias ManagedArray
|
|
11
|
+
* @constructor
|
|
12
|
+
* @private
|
|
13
|
+
*
|
|
14
|
+
* @param {Number} [length=0] The initial length of the array.
|
|
15
|
+
*/
|
|
16
|
+
class ManagedArray {
|
|
17
|
+
constructor(length = 0) {
|
|
18
|
+
this._map = new Map();
|
|
19
|
+
this._array = new Array(length);
|
|
20
|
+
this._length = length;
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
set(index, element) {
|
|
37
|
-
assert(index >= 0);
|
|
38
|
-
|
|
39
|
-
if (index >= this.length) {
|
|
40
|
-
this.length = index + 1;
|
|
22
|
+
/**
|
|
23
|
+
* Gets or sets the length of the array.
|
|
24
|
+
* If the set length is greater than the length of the internal array, the internal array is resized.
|
|
25
|
+
*
|
|
26
|
+
* @memberof ManagedArray.prototype
|
|
27
|
+
* @type Number
|
|
28
|
+
*/
|
|
29
|
+
get length() {
|
|
30
|
+
return this._length;
|
|
41
31
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
set length(length) {
|
|
33
|
+
this._length = length;
|
|
34
|
+
if (length > this._array.length) {
|
|
35
|
+
this._array.length = length;
|
|
36
|
+
}
|
|
45
37
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (index >= 0) {
|
|
56
|
-
this._array.splice(index, 1);
|
|
57
|
-
|
|
58
|
-
this._map.delete(element);
|
|
59
|
-
|
|
60
|
-
this.length--;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the internal array.
|
|
40
|
+
*
|
|
41
|
+
* @memberof ManagedArray.prototype
|
|
42
|
+
* @type Array
|
|
43
|
+
* @readonly
|
|
44
|
+
*/
|
|
45
|
+
get values() {
|
|
46
|
+
return this._array;
|
|
61
47
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const index = this.length++;
|
|
71
|
-
this._array[index] = element;
|
|
72
|
-
|
|
73
|
-
this._map.set(element, index);
|
|
48
|
+
/**
|
|
49
|
+
* Gets the element at an index.
|
|
50
|
+
*
|
|
51
|
+
* @param {Number} index The index to get.
|
|
52
|
+
*/
|
|
53
|
+
get(index) {
|
|
54
|
+
(0, loader_utils_1.assert)(index < this._array.length);
|
|
55
|
+
return this._array[index];
|
|
74
56
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Sets the element at an index. Resizes the array if index is greater than the length of the array.
|
|
59
|
+
*
|
|
60
|
+
* @param {Number} index The index to set.
|
|
61
|
+
* @param {*} element The element to set at index.
|
|
62
|
+
*/
|
|
63
|
+
set(index, element) {
|
|
64
|
+
(0, loader_utils_1.assert)(index >= 0);
|
|
65
|
+
if (index >= this.length) {
|
|
66
|
+
this.length = index + 1;
|
|
67
|
+
}
|
|
68
|
+
if (this._map.has(this._array[index])) {
|
|
69
|
+
this._map.delete(this._array[index]);
|
|
70
|
+
}
|
|
71
|
+
this._array[index] = element;
|
|
72
|
+
this._map.set(element, index);
|
|
90
73
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
74
|
+
delete(element) {
|
|
75
|
+
const index = this._map.get(element);
|
|
76
|
+
if (index >= 0) {
|
|
77
|
+
this._array.splice(index, 1);
|
|
78
|
+
this._map.delete(element);
|
|
79
|
+
this.length--;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Returns the last element in the array without modifying the array.
|
|
84
|
+
*
|
|
85
|
+
* @returns {*} The last element in the array.
|
|
86
|
+
*/
|
|
87
|
+
peek() {
|
|
88
|
+
return this._array[this._length - 1];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Push an element into the array.
|
|
92
|
+
*
|
|
93
|
+
* @param {*} element The element to push.
|
|
94
|
+
*/
|
|
95
|
+
push(element) {
|
|
96
|
+
if (!this._map.has(element)) {
|
|
97
|
+
const index = this.length++;
|
|
98
|
+
this._array[index] = element;
|
|
99
|
+
this._map.set(element, index);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Pop an element from the array.
|
|
104
|
+
*
|
|
105
|
+
* @returns {*} The last element in the array.
|
|
106
|
+
*/
|
|
107
|
+
pop() {
|
|
108
|
+
const element = this._array[--this.length];
|
|
109
|
+
this._map.delete(element);
|
|
110
|
+
return element;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resize the internal array if length > _array.length.
|
|
114
|
+
*
|
|
115
|
+
* @param {Number} length The length.
|
|
116
|
+
*/
|
|
117
|
+
reserve(length) {
|
|
118
|
+
(0, loader_utils_1.assert)(length >= 0);
|
|
119
|
+
if (length > this._array.length) {
|
|
120
|
+
this._array.length = length;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Resize the array.
|
|
125
|
+
*
|
|
126
|
+
* @param {Number} length The length.
|
|
127
|
+
*/
|
|
128
|
+
resize(length) {
|
|
129
|
+
(0, loader_utils_1.assert)(length >= 0);
|
|
130
|
+
this.length = length;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Trim the internal array to the specified length. Defaults to the current length.
|
|
134
|
+
*
|
|
135
|
+
* @param {Number} [length] The length.
|
|
136
|
+
*/
|
|
137
|
+
trim(length) {
|
|
138
|
+
if (length === null || length === undefined) {
|
|
139
|
+
length = this.length;
|
|
140
|
+
}
|
|
141
|
+
this._array.length = length;
|
|
142
|
+
}
|
|
143
|
+
reset() {
|
|
144
|
+
this._array = [];
|
|
145
|
+
this._map = new Map();
|
|
146
|
+
this._length = 0;
|
|
147
|
+
}
|
|
148
|
+
find(target) {
|
|
149
|
+
return this._map.has(target);
|
|
101
150
|
}
|
|
102
|
-
|
|
103
|
-
this._array.length = length;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
reset() {
|
|
107
|
-
this._array = [];
|
|
108
|
-
this._map = new Map();
|
|
109
|
-
this._length = 0;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
find(target) {
|
|
113
|
-
return this._map.has(target);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
151
|
}
|
|
117
|
-
|
|
152
|
+
exports.ManagedArray = ManagedArray;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tiles",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.6",
|
|
4
4
|
"description": "Common components for different tiles loaders.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"pointcloud"
|
|
21
21
|
],
|
|
22
22
|
"types": "dist/index.d.ts",
|
|
23
|
-
"main": "dist/index.js",
|
|
24
|
-
"module": "dist/index.js",
|
|
23
|
+
"main": "dist/es5/index.js",
|
|
24
|
+
"module": "dist/esm/index.js",
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"files": [
|
|
27
27
|
"src",
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
37
|
-
"@loaders.gl/math": "4.0.0-alpha.
|
|
36
|
+
"@loaders.gl/loader-utils": "4.0.0-alpha.6",
|
|
37
|
+
"@loaders.gl/math": "4.0.0-alpha.6",
|
|
38
38
|
"@math.gl/core": "^3.5.1",
|
|
39
39
|
"@math.gl/culling": "^3.5.1",
|
|
40
40
|
"@math.gl/geospatial": "^3.5.1",
|
|
41
41
|
"@math.gl/web-mercator": "^3.5.1",
|
|
42
|
-
"@probe.gl/stats": "^
|
|
42
|
+
"@probe.gl/stats": "^4.0.2"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@loaders.gl/core": "4.0.0-alpha.
|
|
45
|
+
"@loaders.gl/core": "4.0.0-alpha.5"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "acc1985050dfaa0f1f0c066f8da5bce7454a046c"
|
|
48
48
|
}
|
package/src/constants.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
1
3
|
export type {Tileset3DProps} from './tileset/tileset-3d';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
+
export {Tileset3D} from './tileset/tileset-3d';
|
|
5
|
+
export {Tile3D} from './tileset/tile-3d';
|
|
4
6
|
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
+
export {TilesetTraverser} from './tileset/tileset-traverser';
|
|
8
|
+
export {TilesetCache} from './tileset/tileset-cache';
|
|
7
9
|
|
|
8
10
|
export {createBoundingVolume} from './tileset/helpers/bounding-volume';
|
|
9
11
|
export {calculateTransformProps} from './tileset/helpers/transform-utils';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
1
3
|
// This file is derived from the Cesium code base under Apache 2 license
|
|
2
4
|
// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
|
|
3
5
|
|
|
4
6
|
import {TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT} from '../../constants';
|
|
5
|
-
import TilesetTraverser from '
|
|
7
|
+
import {TilesetTraverser} from '../tileset-traverser';
|
|
6
8
|
|
|
7
|
-
export
|
|
9
|
+
export class Tileset3DTraverser extends TilesetTraverser {
|
|
8
10
|
compareDistanceToCamera(a, b) {
|
|
9
11
|
// Sort by farthest child first since this is going on a stack
|
|
10
12
|
return b._distanceToCamera === 0 && a._distanceToCamera === 0
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counter to register pending tile headers for the particular frameNumber
|
|
3
|
+
* Until all tiles are loaded we won't call `onTraversalEnd` callback
|
|
4
|
+
*/
|
|
5
|
+
export class I3SPendingTilesRegister {
|
|
6
|
+
private frameNumberMap: Map<string, Map<number, number>> = new Map();
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Register a new pending tile header for the particular frameNumber
|
|
10
|
+
* @param viewportId
|
|
11
|
+
* @param frameNumber
|
|
12
|
+
*/
|
|
13
|
+
register(viewportId: string, frameNumber: number) {
|
|
14
|
+
const viewportMap = this.frameNumberMap.get(viewportId) || new Map();
|
|
15
|
+
const oldCount = viewportMap.get(frameNumber) || 0;
|
|
16
|
+
viewportMap.set(frameNumber, oldCount + 1);
|
|
17
|
+
this.frameNumberMap.set(viewportId, viewportMap);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Deregister a pending tile header for the particular frameNumber
|
|
22
|
+
* @param viewportId
|
|
23
|
+
* @param frameNumber
|
|
24
|
+
*/
|
|
25
|
+
deregister(viewportId: string, frameNumber: number) {
|
|
26
|
+
const viewportMap = this.frameNumberMap.get(viewportId);
|
|
27
|
+
if (!viewportMap) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const oldCount = viewportMap.get(frameNumber) || 1;
|
|
31
|
+
viewportMap.set(frameNumber, oldCount - 1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Check is there are no pending tile headers registered for the particular frameNumber
|
|
36
|
+
* @param viewportId
|
|
37
|
+
* @param frameNumber
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
isZero(viewportId: string, frameNumber: number) {
|
|
41
|
+
const count = this.frameNumberMap.get(viewportId)?.get(frameNumber) || 0;
|
|
42
|
+
return count === 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {FrameState} from '../helpers/frame-state';
|
|
2
|
+
import {I3SPendingTilesRegister} from './i3s-pending-tiles-register';
|
|
3
|
+
|
|
4
|
+
const STATUS = {
|
|
5
|
+
REQUESTED: 'REQUESTED',
|
|
6
|
+
COMPLETED: 'COMPLETED',
|
|
7
|
+
ERROR: 'ERROR'
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// A helper class to manage tile metadata fetching
|
|
11
|
+
export class I3STileManager {
|
|
12
|
+
private _statusMap: object;
|
|
13
|
+
private pendingTilesRegister = new I3SPendingTilesRegister();
|
|
14
|
+
|
|
15
|
+
constructor() {
|
|
16
|
+
this._statusMap = {};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Add request to map
|
|
21
|
+
* @param request - node metadata request
|
|
22
|
+
* @param key - unique key
|
|
23
|
+
* @param callback - callback after request completed
|
|
24
|
+
* @param frameState - frameState data
|
|
25
|
+
*/
|
|
26
|
+
add(request, key, callback, frameState: FrameState) {
|
|
27
|
+
if (!this._statusMap[key]) {
|
|
28
|
+
const {
|
|
29
|
+
frameNumber,
|
|
30
|
+
viewport: {id}
|
|
31
|
+
} = frameState;
|
|
32
|
+
this._statusMap[key] = {request, callback, key, frameState, status: STATUS.REQUESTED};
|
|
33
|
+
// Register pending request for the frameNumber
|
|
34
|
+
this.pendingTilesRegister.register(id, frameNumber);
|
|
35
|
+
request()
|
|
36
|
+
.then((data) => {
|
|
37
|
+
this._statusMap[key].status = STATUS.COMPLETED;
|
|
38
|
+
const {
|
|
39
|
+
frameNumber: actualFrameNumber,
|
|
40
|
+
viewport: {id}
|
|
41
|
+
} = this._statusMap[key].frameState;
|
|
42
|
+
// Deregister pending request for the frameNumber
|
|
43
|
+
this.pendingTilesRegister.deregister(id, actualFrameNumber);
|
|
44
|
+
this._statusMap[key].callback(data, frameState);
|
|
45
|
+
})
|
|
46
|
+
.catch((error) => {
|
|
47
|
+
this._statusMap[key].status = STATUS.ERROR;
|
|
48
|
+
const {
|
|
49
|
+
frameNumber: actualFrameNumber,
|
|
50
|
+
viewport: {id}
|
|
51
|
+
} = this._statusMap[key].frameState;
|
|
52
|
+
// Deregister pending request for the frameNumber
|
|
53
|
+
this.pendingTilesRegister.deregister(id, actualFrameNumber);
|
|
54
|
+
callback(error);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Update request if it is still actual for the new frameState
|
|
61
|
+
* @param key - unique key
|
|
62
|
+
* @param frameState - frameState data
|
|
63
|
+
*/
|
|
64
|
+
update(key, frameState: FrameState) {
|
|
65
|
+
if (this._statusMap[key]) {
|
|
66
|
+
// Deregister pending request for the old frameNumber
|
|
67
|
+
const {
|
|
68
|
+
frameNumber,
|
|
69
|
+
viewport: {id}
|
|
70
|
+
} = this._statusMap[key].frameState;
|
|
71
|
+
this.pendingTilesRegister.deregister(id, frameNumber);
|
|
72
|
+
|
|
73
|
+
// Register pending request for the new frameNumber
|
|
74
|
+
const {
|
|
75
|
+
frameNumber: newFrameNumber,
|
|
76
|
+
viewport: {id: newViewportId}
|
|
77
|
+
} = frameState;
|
|
78
|
+
this.pendingTilesRegister.register(newViewportId, newFrameNumber);
|
|
79
|
+
this._statusMap[key].frameState = frameState;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Find request in the map
|
|
85
|
+
* @param key - unique key
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
find(key) {
|
|
89
|
+
return this._statusMap[key];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Check it there are pending tile headers for the particular frameNumber
|
|
94
|
+
* @param viewportId
|
|
95
|
+
* @param frameNumber
|
|
96
|
+
* @returns
|
|
97
|
+
*/
|
|
98
|
+
hasPendingTiles(viewportId: string, frameNumber: number): boolean {
|
|
99
|
+
return !this.pendingTilesRegister.isZero(viewportId, frameNumber);
|
|
100
|
+
}
|
|
101
|
+
}
|