@loaders.gl/tiles 3.3.0-alpha.1 → 3.3.0-alpha.11
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/dist.min.js +1031 -1433
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js +2 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/index.js +26 -36
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/tileset/helpers/3d-tiles-options.js +0 -1
- package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -1
- package/dist/es5/tileset/helpers/bounding-volume.js +7 -26
- package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
- package/dist/es5/tileset/helpers/frame-state.js +45 -50
- package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
- package/dist/es5/tileset/helpers/i3s-lod.js +0 -13
- package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/tiles-3d-lod.js +7 -16
- package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/es5/tileset/helpers/transform-utils.js +2 -11
- package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/es5/tileset/helpers/zoom.js +6 -16
- package/dist/es5/tileset/helpers/zoom.js.map +1 -1
- package/dist/es5/tileset/tile-3d.js +111 -98
- package/dist/es5/tileset/tile-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-3d.js +130 -196
- package/dist/es5/tileset/tileset-3d.js.map +1 -1
- package/dist/es5/tileset/tileset-cache.js +1 -14
- package/dist/es5/tileset/tileset-cache.js.map +1 -1
- package/dist/es5/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +21 -16
- package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
- package/dist/es5/tileset/traversers/i3s-tile-manager.js +33 -27
- package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +10 -52
- package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js +0 -22
- package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
- package/dist/es5/tileset/traversers/tileset-traverser.js +55 -78
- package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list-node.js +3 -7
- package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/es5/utils/doubly-linked-list.js +9 -17
- package/dist/es5/utils/doubly-linked-list.js.map +1 -1
- package/dist/es5/utils/managed-array.js +29 -30
- package/dist/es5/utils/managed-array.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/constants.js +3 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -1
- package/dist/esm/tileset/helpers/bounding-volume.js +4 -10
- package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -1
- package/dist/esm/tileset/helpers/frame-state.js +36 -20
- package/dist/esm/tileset/helpers/frame-state.js.map +1 -1
- package/dist/esm/tileset/helpers/i3s-lod.js +4 -4
- package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/tiles-3d-lod.js +11 -8
- package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +1 -1
- package/dist/esm/tileset/helpers/transform-utils.js +1 -3
- package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
- package/dist/esm/tileset/helpers/zoom.js +3 -2
- package/dist/esm/tileset/helpers/zoom.js.map +1 -1
- package/dist/esm/tileset/tile-3d.js +47 -108
- package/dist/esm/tileset/tile-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-3d.js +70 -163
- package/dist/esm/tileset/tileset-3d.js.map +1 -1
- package/dist/esm/tileset/tileset-cache.js +2 -18
- package/dist/esm/tileset/tileset-cache.js.map +1 -1
- package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js +28 -0
- package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
- package/dist/esm/tileset/traversers/i3s-tile-manager.js +34 -15
- package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +1 -1
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +8 -22
- package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
- package/dist/esm/tileset/traversers/tileset-3d-traverser.js +2 -9
- package/dist/esm/tileset/traversers/tileset-3d-traverser.js.map +1 -1
- package/dist/esm/tileset/traversers/tileset-traverser.js +20 -59
- package/dist/esm/tileset/traversers/tileset-traverser.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/doubly-linked-list-node.js +1 -4
- package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
- package/dist/esm/utils/doubly-linked-list.js +2 -11
- package/dist/esm/utils/doubly-linked-list.js.map +1 -1
- package/dist/esm/utils/managed-array.js +4 -22
- package/dist/esm/utils/managed-array.js.map +1 -1
- package/dist/tileset/helpers/frame-state.d.ts +5 -8
- package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
- package/dist/tileset/helpers/frame-state.js +27 -12
- package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
- package/dist/tileset/tile-3d.d.ts +15 -4
- package/dist/tileset/tile-3d.d.ts.map +1 -1
- package/dist/tileset/tile-3d.js +15 -2
- package/dist/tileset/tileset-3d.d.ts +17 -4
- package/dist/tileset/tileset-3d.d.ts.map +1 -1
- package/dist/tileset/tileset-3d.js +47 -10
- package/dist/tileset/traversers/{i3s-frame-counter.d.ts → i3s-pending-tiles-register.d.ts} +7 -4
- package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +17 -8
- package/dist/tileset/traversers/i3s-tile-manager.d.ts +19 -1
- package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -1
- package/dist/tileset/traversers/i3s-tile-manager.js +32 -12
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +1 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -1
- package/dist/tileset/traversers/i3s-tileset-traverser.js +9 -9
- package/dist/tileset/traversers/tileset-traverser.d.ts +3 -3
- package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -1
- package/dist/tileset/traversers/tileset-traverser.js +4 -4
- package/dist/types.d.ts +30 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/tileset/helpers/frame-state.ts +47 -19
- package/src/tileset/helpers/i3s-lod.ts +3 -1
- package/src/tileset/tile-3d.ts +16 -2
- package/src/tileset/tileset-3d.ts +55 -16
- package/src/tileset/traversers/i3s-pending-tiles-register.ts +44 -0
- package/src/tileset/traversers/i3s-tile-manager.ts +47 -11
- package/src/tileset/traversers/i3s-tileset-traverser.ts +5 -5
- package/src/tileset/traversers/tileset-traverser.ts +2 -2
- package/src/types.ts +32 -0
- package/dist/es5/tileset/traversers/i3s-frame-counter.js.map +0 -1
- package/dist/esm/tileset/traversers/i3s-frame-counter.js +0 -23
- package/dist/esm/tileset/traversers/i3s-frame-counter.js.map +0 -1
- package/dist/tileset/traversers/i3s-frame-counter.d.ts.map +0 -1
- package/src/tileset/traversers/i3s-frame-counter.ts +0 -35
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
|
|
2
3
|
import DoublyLinkedListNode from '../utils/doubly-linked-list-node';
|
|
4
|
+
|
|
3
5
|
export default class DoublyLinkedList {
|
|
4
6
|
constructor() {
|
|
5
7
|
_defineProperty(this, "head", null);
|
|
6
|
-
|
|
7
8
|
_defineProperty(this, "tail", null);
|
|
8
|
-
|
|
9
9
|
_defineProperty(this, "_length", 0);
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
get length() {
|
|
13
12
|
return this._length;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
add(item) {
|
|
17
16
|
const node = new DoublyLinkedListNode(item, this.tail, null);
|
|
18
|
-
|
|
19
17
|
if (this.tail) {
|
|
20
18
|
this.tail.next = node;
|
|
21
19
|
this.tail = node;
|
|
@@ -23,7 +21,6 @@ export default class DoublyLinkedList {
|
|
|
23
21
|
this.head = node;
|
|
24
22
|
this.tail = node;
|
|
25
23
|
}
|
|
26
|
-
|
|
27
24
|
++this._length;
|
|
28
25
|
return node;
|
|
29
26
|
}
|
|
@@ -32,7 +29,6 @@ export default class DoublyLinkedList {
|
|
|
32
29
|
if (!node) {
|
|
33
30
|
return;
|
|
34
31
|
}
|
|
35
|
-
|
|
36
32
|
if (node.previous && node.next) {
|
|
37
33
|
node.previous.next = node.next;
|
|
38
34
|
node.next.previous = node.previous;
|
|
@@ -46,7 +42,6 @@ export default class DoublyLinkedList {
|
|
|
46
42
|
this.head = null;
|
|
47
43
|
this.tail = null;
|
|
48
44
|
}
|
|
49
|
-
|
|
50
45
|
node.next = null;
|
|
51
46
|
node.previous = null;
|
|
52
47
|
--this._length;
|
|
@@ -58,10 +53,8 @@ export default class DoublyLinkedList {
|
|
|
58
53
|
}
|
|
59
54
|
|
|
60
55
|
this.remove(nextNode);
|
|
61
|
-
|
|
62
56
|
this._insert(node, nextNode);
|
|
63
57
|
}
|
|
64
|
-
|
|
65
58
|
_insert(node, nextNode) {
|
|
66
59
|
const oldNodeNext = node.next;
|
|
67
60
|
node.next = nextNode;
|
|
@@ -71,11 +64,9 @@ export default class DoublyLinkedList {
|
|
|
71
64
|
} else {
|
|
72
65
|
oldNodeNext.previous = nextNode;
|
|
73
66
|
}
|
|
74
|
-
|
|
75
67
|
nextNode.next = oldNodeNext;
|
|
76
68
|
nextNode.previous = node;
|
|
77
69
|
++this._length;
|
|
78
70
|
}
|
|
79
|
-
|
|
80
71
|
}
|
|
81
72
|
//# sourceMappingURL=doubly-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"doubly-linked-list.js","names":["DoublyLinkedListNode","DoublyLinkedList","length","_length","add","item","node","tail","next","head","remove","previous","splice","nextNode","_insert","oldNodeNext"],"sources":["../../../src/utils/doubly-linked-list.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport DoublyLinkedListNode from '../utils/doubly-linked-list-node';\n\n/**\n * Doubly linked list\n *\n * @private\n */\nexport default class DoublyLinkedList {\n head: DoublyLinkedListNode | null = null;\n tail: DoublyLinkedListNode | null = null;\n _length = 0;\n\n get length() {\n return this._length;\n }\n\n /**\n * Adds the item to the end of the list\n * @param {*} [item]\n * @return {DoublyLinkedListNode}\n */\n add(item) {\n const node = new DoublyLinkedListNode(item, this.tail, null);\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = node;\n this.tail = node;\n }\n\n ++this._length;\n\n return node;\n }\n\n /**\n * Removes the given node from the list\n * @param {DoublyLinkedListNode} node\n */\n remove(node) {\n if (!node) {\n return;\n }\n\n if (node.previous && node.next) {\n node.previous.next = node.next;\n node.next.previous = node.previous;\n } else if (node.previous) {\n // Remove last node\n node.previous.next = null;\n this.tail = node.previous;\n } else if (node.next) {\n // Remove first node\n node.next.previous = null;\n this.head = node.next;\n } else {\n // Remove last node in the linked list\n this.head = null;\n this.tail = null;\n }\n\n node.next = null;\n node.previous = null;\n\n --this._length;\n }\n\n /**\n * Moves nextNode after node\n * @param {DoublyLinkedListNode} node\n * @param {DoublyLinkedListNode} nextNode\n */\n splice(node, nextNode) {\n if (node === nextNode) {\n return;\n }\n\n // Remove nextNode, then insert after node\n this.remove(nextNode);\n this._insert(node, nextNode);\n }\n\n _insert(node, nextNode) {\n const oldNodeNext = node.next;\n node.next = nextNode;\n\n // nextNode is the new tail\n if (this.tail === node) {\n this.tail = nextNode;\n } else {\n oldNodeNext.previous = nextNode;\n }\n\n nextNode.next = oldNodeNext;\n nextNode.previous = node;\n\n ++this._length;\n }\n}\n"],"mappings":";;AAGA,OAAOA,oBAAoB,MAAM,kCAAkC;;AAOnE,eAAe,MAAMC,gBAAgB,CAAC;EAAA;IAAA,8BACA,IAAI;IAAA,8BACJ,IAAI;IAAA,iCAC9B,CAAC;EAAA;EAEX,IAAIC,MAAM,GAAG;IACX,OAAO,IAAI,CAACC,OAAO;EACrB;;EAOAC,GAAG,CAACC,IAAI,EAAE;IACR,MAAMC,IAAI,GAAG,IAAIN,oBAAoB,CAACK,IAAI,EAAE,IAAI,CAACE,IAAI,EAAE,IAAI,CAAC;IAE5D,IAAI,IAAI,CAACA,IAAI,EAAE;MACb,IAAI,CAACA,IAAI,CAACC,IAAI,GAAGF,IAAI;MACrB,IAAI,CAACC,IAAI,GAAGD,IAAI;IAClB,CAAC,MAAM;MACL,IAAI,CAACG,IAAI,GAAGH,IAAI;MAChB,IAAI,CAACC,IAAI,GAAGD,IAAI;IAClB;IAEA,EAAE,IAAI,CAACH,OAAO;IAEd,OAAOG,IAAI;EACb;;EAMAI,MAAM,CAACJ,IAAI,EAAE;IACX,IAAI,CAACA,IAAI,EAAE;MACT;IACF;IAEA,IAAIA,IAAI,CAACK,QAAQ,IAAIL,IAAI,CAACE,IAAI,EAAE;MAC9BF,IAAI,CAACK,QAAQ,CAACH,IAAI,GAAGF,IAAI,CAACE,IAAI;MAC9BF,IAAI,CAACE,IAAI,CAACG,QAAQ,GAAGL,IAAI,CAACK,QAAQ;IACpC,CAAC,MAAM,IAAIL,IAAI,CAACK,QAAQ,EAAE;MAExBL,IAAI,CAACK,QAAQ,CAACH,IAAI,GAAG,IAAI;MACzB,IAAI,CAACD,IAAI,GAAGD,IAAI,CAACK,QAAQ;IAC3B,CAAC,MAAM,IAAIL,IAAI,CAACE,IAAI,EAAE;MAEpBF,IAAI,CAACE,IAAI,CAACG,QAAQ,GAAG,IAAI;MACzB,IAAI,CAACF,IAAI,GAAGH,IAAI,CAACE,IAAI;IACvB,CAAC,MAAM;MAEL,IAAI,CAACC,IAAI,GAAG,IAAI;MAChB,IAAI,CAACF,IAAI,GAAG,IAAI;IAClB;IAEAD,IAAI,CAACE,IAAI,GAAG,IAAI;IAChBF,IAAI,CAACK,QAAQ,GAAG,IAAI;IAEpB,EAAE,IAAI,CAACR,OAAO;EAChB;;EAOAS,MAAM,CAACN,IAAI,EAAEO,QAAQ,EAAE;IACrB,IAAIP,IAAI,KAAKO,QAAQ,EAAE;MACrB;IACF;;IAGA,IAAI,CAACH,MAAM,CAACG,QAAQ,CAAC;IACrB,IAAI,CAACC,OAAO,CAACR,IAAI,EAAEO,QAAQ,CAAC;EAC9B;EAEAC,OAAO,CAACR,IAAI,EAAEO,QAAQ,EAAE;IACtB,MAAME,WAAW,GAAGT,IAAI,CAACE,IAAI;IAC7BF,IAAI,CAACE,IAAI,GAAGK,QAAQ;;IAGpB,IAAI,IAAI,CAACN,IAAI,KAAKD,IAAI,EAAE;MACtB,IAAI,CAACC,IAAI,GAAGM,QAAQ;IACtB,CAAC,MAAM;MACLE,WAAW,CAACJ,QAAQ,GAAGE,QAAQ;IACjC;IAEAA,QAAQ,CAACL,IAAI,GAAGO,WAAW;IAC3BF,QAAQ,CAACF,QAAQ,GAAGL,IAAI;IAExB,EAAE,IAAI,CAACH,OAAO;EAChB;AACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
|
|
2
3
|
import { assert } from '@loaders.gl/loader-utils';
|
|
4
|
+
|
|
3
5
|
export default class ManagedArray {
|
|
4
|
-
constructor(
|
|
6
|
+
constructor() {
|
|
7
|
+
let length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
5
8
|
_defineProperty(this, "_map", new Map());
|
|
6
|
-
|
|
7
9
|
_defineProperty(this, "_array", void 0);
|
|
8
|
-
|
|
9
10
|
_defineProperty(this, "_length", void 0);
|
|
10
|
-
|
|
11
11
|
this._array = new Array(length);
|
|
12
12
|
this._length = length;
|
|
13
13
|
}
|
|
@@ -15,10 +15,8 @@ export default class ManagedArray {
|
|
|
15
15
|
get length() {
|
|
16
16
|
return this._length;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
18
|
set length(length) {
|
|
20
19
|
this._length = length;
|
|
21
|
-
|
|
22
20
|
if (length > this._array.length) {
|
|
23
21
|
this._array.length = length;
|
|
24
22
|
}
|
|
@@ -35,28 +33,20 @@ export default class ManagedArray {
|
|
|
35
33
|
|
|
36
34
|
set(index, element) {
|
|
37
35
|
assert(index >= 0);
|
|
38
|
-
|
|
39
36
|
if (index >= this.length) {
|
|
40
37
|
this.length = index + 1;
|
|
41
38
|
}
|
|
42
|
-
|
|
43
39
|
if (this._map.has(this._array[index])) {
|
|
44
40
|
this._map.delete(this._array[index]);
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
this._array[index] = element;
|
|
48
|
-
|
|
49
43
|
this._map.set(element, index);
|
|
50
44
|
}
|
|
51
|
-
|
|
52
45
|
delete(element) {
|
|
53
46
|
const index = this._map.get(element);
|
|
54
|
-
|
|
55
47
|
if (index >= 0) {
|
|
56
48
|
this._array.splice(index, 1);
|
|
57
|
-
|
|
58
49
|
this._map.delete(element);
|
|
59
|
-
|
|
60
50
|
this.length--;
|
|
61
51
|
}
|
|
62
52
|
}
|
|
@@ -69,22 +59,18 @@ export default class ManagedArray {
|
|
|
69
59
|
if (!this._map.has(element)) {
|
|
70
60
|
const index = this.length++;
|
|
71
61
|
this._array[index] = element;
|
|
72
|
-
|
|
73
62
|
this._map.set(element, index);
|
|
74
63
|
}
|
|
75
64
|
}
|
|
76
65
|
|
|
77
66
|
pop() {
|
|
78
67
|
const element = this._array[--this.length];
|
|
79
|
-
|
|
80
68
|
this._map.delete(element);
|
|
81
|
-
|
|
82
69
|
return element;
|
|
83
70
|
}
|
|
84
71
|
|
|
85
72
|
reserve(length) {
|
|
86
73
|
assert(length >= 0);
|
|
87
|
-
|
|
88
74
|
if (length > this._array.length) {
|
|
89
75
|
this._array.length = length;
|
|
90
76
|
}
|
|
@@ -99,19 +85,15 @@ export default class ManagedArray {
|
|
|
99
85
|
if (length === null || length === undefined) {
|
|
100
86
|
length = this.length;
|
|
101
87
|
}
|
|
102
|
-
|
|
103
88
|
this._array.length = length;
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
reset() {
|
|
107
91
|
this._array = [];
|
|
108
92
|
this._map = new Map();
|
|
109
93
|
this._length = 0;
|
|
110
94
|
}
|
|
111
|
-
|
|
112
95
|
find(target) {
|
|
113
96
|
return this._map.has(target);
|
|
114
97
|
}
|
|
115
|
-
|
|
116
98
|
}
|
|
117
99
|
//# sourceMappingURL=managed-array.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"managed-array.js","names":["assert","ManagedArray","constructor","length","Map","_array","Array","_length","values","get","index","set","element","_map","has","delete","splice","peek","push","pop","reserve","resize","trim","undefined","reset","find","target"],"sources":["../../../src/utils/managed-array.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {assert} from '@loaders.gl/loader-utils';\n\n/**\n * A wrapper around arrays so that the internal length of the array can be manually managed.\n *\n * @alias ManagedArray\n * @constructor\n * @private\n *\n * @param {Number} [length=0] The initial length of the array.\n */\nexport default class ManagedArray {\n _map = new Map();\n _array: any[];\n _length: number;\n\n constructor(length = 0) {\n this._array = new Array(length);\n this._length = length;\n }\n\n /**\n * Gets or sets the length of the array.\n * If the set length is greater than the length of the internal array, the internal array is resized.\n *\n * @memberof ManagedArray.prototype\n * @type Number\n */\n get length() {\n return this._length;\n }\n\n set length(length) {\n this._length = length;\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Gets the internal array.\n *\n * @memberof ManagedArray.prototype\n * @type Array\n * @readonly\n */\n get values() {\n return this._array;\n }\n\n /**\n * Gets the element at an index.\n *\n * @param {Number} index The index to get.\n */\n get(index) {\n assert(index < this._array.length);\n return this._array[index];\n }\n\n /**\n * Sets the element at an index. Resizes the array if index is greater than the length of the array.\n *\n * @param {Number} index The index to set.\n * @param {*} element The element to set at index.\n */\n set(index, element) {\n assert(index >= 0);\n\n if (index >= this.length) {\n this.length = index + 1;\n }\n\n if (this._map.has(this._array[index])) {\n this._map.delete(this._array[index]);\n }\n\n this._array[index] = element;\n this._map.set(element, index);\n }\n\n delete(element) {\n const index = this._map.get(element);\n if (index >= 0) {\n this._array.splice(index, 1);\n this._map.delete(element);\n this.length--;\n }\n }\n\n /**\n * Returns the last element in the array without modifying the array.\n *\n * @returns {*} The last element in the array.\n */\n peek() {\n return this._array[this._length - 1];\n }\n\n /**\n * Push an element into the array.\n *\n * @param {*} element The element to push.\n */\n push(element) {\n if (!this._map.has(element)) {\n const index = this.length++;\n this._array[index] = element;\n this._map.set(element, index);\n }\n }\n\n /**\n * Pop an element from the array.\n *\n * @returns {*} The last element in the array.\n */\n pop() {\n const element = this._array[--this.length];\n this._map.delete(element);\n return element;\n }\n\n /**\n * Resize the internal array if length > _array.length.\n *\n * @param {Number} length The length.\n */\n reserve(length) {\n assert(length >= 0);\n\n if (length > this._array.length) {\n this._array.length = length;\n }\n }\n\n /**\n * Resize the array.\n *\n * @param {Number} length The length.\n */\n resize(length) {\n assert(length >= 0);\n\n this.length = length;\n }\n\n /**\n * Trim the internal array to the specified length. Defaults to the current length.\n *\n * @param {Number} [length] The length.\n */\n trim(length) {\n if (length === null || length === undefined) {\n length = this.length;\n }\n this._array.length = length;\n }\n\n reset() {\n this._array = [];\n this._map = new Map();\n this._length = 0;\n }\n\n find(target) {\n return this._map.has(target);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import { Tile3D } from '@loaders.gl/tiles';
|
|
2
2
|
import { CullingVolume } from '@math.gl/culling';
|
|
3
|
-
|
|
3
|
+
import { GeospatialViewport } from '../../types';
|
|
4
|
+
export type FrameState = {
|
|
4
5
|
camera: {
|
|
5
6
|
position: number[];
|
|
6
7
|
direction: number[];
|
|
7
8
|
up: number[];
|
|
8
9
|
};
|
|
9
|
-
viewport:
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
topDownViewport: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
};
|
|
10
|
+
viewport: GeospatialViewport;
|
|
11
|
+
topDownViewport: GeospatialViewport;
|
|
15
12
|
height: number;
|
|
16
13
|
cullingVolume: CullingVolume;
|
|
17
14
|
frameNumber: number;
|
|
18
15
|
sseDenominator: number;
|
|
19
16
|
};
|
|
20
|
-
export declare function getFrameState(viewport:
|
|
17
|
+
export declare function getFrameState(viewport: GeospatialViewport, frameNumber: number): FrameState;
|
|
21
18
|
/**
|
|
22
19
|
* Limit `tiles` array length with `maximumTilesSelected` number.
|
|
23
20
|
* The criteria for this filtering is distance of a tile center
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-state.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/frame-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,aAAa,EAAQ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"frame-state.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/frame-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAC,aAAa,EAAQ,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAC,kBAAkB,EAAW,MAAM,aAAa,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,EAAE,EAAE,MAAM,EAAE,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAeF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAwD3F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,MAAM,GAC3B,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAyBtB"}
|
|
@@ -17,13 +17,13 @@ const cullingVolume = new culling_1.CullingVolume([
|
|
|
17
17
|
// Extracts a frame state appropriate for tile culling from a deck.gl viewport
|
|
18
18
|
// TODO - this could likely be generalized and merged back into deck.gl for other culling scenarios
|
|
19
19
|
function getFrameState(viewport, frameNumber) {
|
|
20
|
+
// Traverse and and request. Update _selectedTiles so that we know what to render.
|
|
20
21
|
// Traverse and and request. Update _selectedTiles so that we know what to render.
|
|
21
22
|
const { cameraDirection, cameraUp, height } = viewport;
|
|
22
23
|
const { metersPerUnit } = viewport.distanceScales;
|
|
23
|
-
const viewportCenterCartographic = viewport.unprojectPosition(viewport.center);
|
|
24
24
|
// TODO - Ellipsoid.eastNorthUpToFixedFrame() breaks on raw array, create a Vector.
|
|
25
25
|
// TODO - Ellipsoid.eastNorthUpToFixedFrame() takes a cartesian, is that intuitive?
|
|
26
|
-
const viewportCenterCartesian =
|
|
26
|
+
const viewportCenterCartesian = worldToCartesian(viewport, viewport.center);
|
|
27
27
|
const enuToFixedTransform = geospatial_1.Ellipsoid.WGS84.eastNorthUpToFixedFrame(viewportCenterCartesian);
|
|
28
28
|
const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
|
|
29
29
|
const cameraPositionCartesian = geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new core_1.Vector3());
|
|
@@ -34,7 +34,7 @@ function getFrameState(viewport, frameNumber) {
|
|
|
34
34
|
const cameraUpCartesian = new core_1.Vector3(
|
|
35
35
|
// @ts-ignore
|
|
36
36
|
enuToFixedTransform.transformAsVector(new core_1.Vector3(cameraUp).scale(metersPerUnit))).normalize();
|
|
37
|
-
commonSpacePlanesToWGS84(viewport
|
|
37
|
+
commonSpacePlanesToWGS84(viewport);
|
|
38
38
|
const ViewportClass = viewport.constructor;
|
|
39
39
|
const { longitude, latitude, width, bearing, zoom } = viewport;
|
|
40
40
|
// @ts-ignore
|
|
@@ -98,21 +98,36 @@ function limitSelectedTiles(tiles, frameState, maximumTilesSelected) {
|
|
|
98
98
|
return [selectedTiles, unselectedTiles];
|
|
99
99
|
}
|
|
100
100
|
exports.limitSelectedTiles = limitSelectedTiles;
|
|
101
|
-
function commonSpacePlanesToWGS84(viewport
|
|
101
|
+
function commonSpacePlanesToWGS84(viewport) {
|
|
102
102
|
// Extract frustum planes based on current view.
|
|
103
103
|
const frustumPlanes = viewport.getFrustumPlanes();
|
|
104
|
+
// Get the near/far plane centers
|
|
105
|
+
const nearCenterCommon = closestPointOnPlane(frustumPlanes.near, viewport.cameraPosition);
|
|
106
|
+
const nearCenterCartesian = worldToCartesian(viewport, nearCenterCommon);
|
|
107
|
+
const cameraCartesian = worldToCartesian(viewport, viewport.cameraPosition, scratchPosition);
|
|
104
108
|
let i = 0;
|
|
109
|
+
cullingVolume.planes[i++].fromPointNormal(nearCenterCartesian, scratchVector.copy(nearCenterCartesian).subtract(cameraCartesian));
|
|
105
110
|
for (const dir in frustumPlanes) {
|
|
111
|
+
if (dir === 'near') {
|
|
112
|
+
continue; // eslint-disable-line no-continue
|
|
113
|
+
}
|
|
106
114
|
const plane = frustumPlanes[dir];
|
|
107
|
-
const
|
|
108
|
-
scratchPosition
|
|
109
|
-
.copy(plane.normal)
|
|
110
|
-
.scale(plane.distance - distanceToCenter)
|
|
111
|
-
.add(viewport.center);
|
|
112
|
-
const cartographicPos = viewport.unprojectPosition(scratchPosition);
|
|
113
|
-
const cartesianPos = geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(cartographicPos, new core_1.Vector3());
|
|
115
|
+
const posCommon = closestPointOnPlane(plane, nearCenterCommon, scratchPosition);
|
|
116
|
+
const cartesianPos = worldToCartesian(viewport, posCommon, scratchPosition);
|
|
114
117
|
cullingVolume.planes[i++].fromPointNormal(cartesianPos,
|
|
115
118
|
// Want the normal to point into the frustum since that's what culling expects
|
|
116
|
-
scratchVector.copy(
|
|
119
|
+
scratchVector.copy(nearCenterCartesian).subtract(cartesianPos));
|
|
117
120
|
}
|
|
118
121
|
}
|
|
122
|
+
function closestPointOnPlane(plane, refPoint, out = new core_1.Vector3()) {
|
|
123
|
+
const distanceToRef = plane.normal.dot(refPoint);
|
|
124
|
+
out
|
|
125
|
+
.copy(plane.normal)
|
|
126
|
+
.scale(plane.distance - distanceToRef)
|
|
127
|
+
.add(refPoint);
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
function worldToCartesian(viewport, point, out = new core_1.Vector3()) {
|
|
131
|
+
const cartographicPos = viewport.unprojectPosition(point);
|
|
132
|
+
return geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(cartographicPos, out);
|
|
133
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i3s-lod.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/i3s-lod.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAUzC;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAczF;AAED;;;;;GAKG;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"i3s-lod.d.ts","sourceRoot":"","sources":["../../../src/tileset/helpers/i3s-lod.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAUzC;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAczF;AAED;;;;;GAKG;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CA6C/E"}
|
|
@@ -8,7 +8,7 @@ import type Tileset3D from './tileset-3d';
|
|
|
8
8
|
* @param extendedId - optional ID to separate copies of a tile for different viewports.
|
|
9
9
|
* const extendedId = `${tile.id}-${frameState.viewport.id}`;
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export type TileHeaderProps = {
|
|
12
12
|
tileset: Tileset3D;
|
|
13
13
|
header: Object;
|
|
14
14
|
parentHeader: TileHeader;
|
|
@@ -39,6 +39,7 @@ export default class TileHeader {
|
|
|
39
39
|
viewportIds: any[];
|
|
40
40
|
transform: Matrix4;
|
|
41
41
|
extensions: any;
|
|
42
|
+
implicitTiling?: any;
|
|
42
43
|
userData: {
|
|
43
44
|
[key: string]: any;
|
|
44
45
|
};
|
|
@@ -178,9 +179,19 @@ export default class TileHeader {
|
|
|
178
179
|
_getLoaderSpecificOptions(loaderId: any): {
|
|
179
180
|
assetGltfUpAxis: any;
|
|
180
181
|
} | {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
_tileOptions: {
|
|
183
|
+
attributeUrls: any;
|
|
184
|
+
textureUrl: any;
|
|
185
|
+
textureFormat: any;
|
|
186
|
+
textureLoaderOptions: any;
|
|
187
|
+
materialDefinition: any;
|
|
188
|
+
isDracoGeometry: any;
|
|
189
|
+
mbs: any;
|
|
190
|
+
};
|
|
191
|
+
_tilesetOptions: {
|
|
192
|
+
store: any;
|
|
193
|
+
attributeStorageInfo: any;
|
|
194
|
+
fields: any;
|
|
184
195
|
};
|
|
185
196
|
isTileHeader: boolean;
|
|
186
197
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tile-3d.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,OAAO,EAAC,MAAM,eAAe,CAAC;AAM/C,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAQjD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAQ1C;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tile-3d.ts"],"names":[],"mappings":"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"}
|
package/dist/tileset/tile-3d.js
CHANGED
|
@@ -97,6 +97,7 @@ class TileHeader {
|
|
|
97
97
|
// TODO Cesium 3d tiles specific
|
|
98
98
|
this._expireDate = null;
|
|
99
99
|
this._expiredContent = null;
|
|
100
|
+
this.implicitTiling = null;
|
|
100
101
|
Object.seal(this);
|
|
101
102
|
}
|
|
102
103
|
destroy() {
|
|
@@ -560,8 +561,20 @@ class TileHeader {
|
|
|
560
561
|
case 'i3s':
|
|
561
562
|
return {
|
|
562
563
|
...this.tileset.options.i3s,
|
|
563
|
-
|
|
564
|
-
|
|
564
|
+
_tileOptions: {
|
|
565
|
+
attributeUrls: this.header.attributeUrls,
|
|
566
|
+
textureUrl: this.header.textureUrl,
|
|
567
|
+
textureFormat: this.header.textureFormat,
|
|
568
|
+
textureLoaderOptions: this.header.textureLoaderOptions,
|
|
569
|
+
materialDefinition: this.header.materialDefinition,
|
|
570
|
+
isDracoGeometry: this.header.isDracoGeometry,
|
|
571
|
+
mbs: this.header.mbs
|
|
572
|
+
},
|
|
573
|
+
_tilesetOptions: {
|
|
574
|
+
store: this.tileset.tileset.store,
|
|
575
|
+
attributeStorageInfo: this.tileset.tileset.attributeStorageInfo,
|
|
576
|
+
fields: this.tileset.tileset.fields
|
|
577
|
+
},
|
|
565
578
|
isTileHeader: false
|
|
566
579
|
};
|
|
567
580
|
case '3d-tiles':
|
|
@@ -4,7 +4,8 @@ import { RequestScheduler, LoaderWithParser, LoaderOptions } from '@loaders.gl/l
|
|
|
4
4
|
import { FrameState } from './helpers/frame-state';
|
|
5
5
|
import Tile3D from './tile-3d';
|
|
6
6
|
import TilesetTraverser from './traversers/tileset-traverser';
|
|
7
|
-
|
|
7
|
+
import { Viewport } from '../types';
|
|
8
|
+
export type Tileset3DProps = {
|
|
8
9
|
throttleRequests?: boolean;
|
|
9
10
|
maxRequests?: number;
|
|
10
11
|
loadOptions?: LoaderOptions;
|
|
@@ -27,7 +28,7 @@ export declare type Tileset3DProps = {
|
|
|
27
28
|
contentLoader?: (tile: Tile3D) => Promise<void>;
|
|
28
29
|
onTraversalComplete?: (selectedTiles: Tile3D[]) => Tile3D[];
|
|
29
30
|
};
|
|
30
|
-
|
|
31
|
+
type Props = {
|
|
31
32
|
description: string;
|
|
32
33
|
ellipsoid: object;
|
|
33
34
|
modelMatrix: Matrix4;
|
|
@@ -83,6 +84,13 @@ export default class Tileset3D {
|
|
|
83
84
|
attributions: any;
|
|
84
85
|
credits: any;
|
|
85
86
|
stats: Stats;
|
|
87
|
+
/** flags that contain information about data types in nested tiles */
|
|
88
|
+
contentFormats: {
|
|
89
|
+
draco: boolean;
|
|
90
|
+
meshopt: boolean;
|
|
91
|
+
dds: boolean;
|
|
92
|
+
ktx2: boolean;
|
|
93
|
+
};
|
|
86
94
|
traverseCounter: number;
|
|
87
95
|
geometricError: number;
|
|
88
96
|
selectedTiles: Tile3D[];
|
|
@@ -135,14 +143,14 @@ export default class Tileset3D {
|
|
|
135
143
|
* @param viewports - list of viewports
|
|
136
144
|
* @deprecated
|
|
137
145
|
*/
|
|
138
|
-
update(viewports?:
|
|
146
|
+
update(viewports?: Viewport[] | Viewport | null): void;
|
|
139
147
|
/**
|
|
140
148
|
* Update visible tiles relying on a list of viewports.
|
|
141
149
|
* Do it with debounce delay to prevent update spam
|
|
142
150
|
* @param viewports viewports
|
|
143
151
|
* @returns Promise of new frameNumber
|
|
144
152
|
*/
|
|
145
|
-
selectTiles(viewports?:
|
|
153
|
+
selectTiles(viewports?: Viewport[] | Viewport | null): Promise<number>;
|
|
146
154
|
/**
|
|
147
155
|
* Update visible tiles relying on a list of viewports
|
|
148
156
|
* @param viewports viewports
|
|
@@ -189,6 +197,11 @@ export default class Tileset3D {
|
|
|
189
197
|
_loadTile(tile: any): Promise<void>;
|
|
190
198
|
_onTileLoadError(tile: any, error: any): void;
|
|
191
199
|
_onTileLoad(tile: any, loaded: any): void;
|
|
200
|
+
/**
|
|
201
|
+
* Update information about data types in nested tiles
|
|
202
|
+
* @param tile instance of a nested Tile3D
|
|
203
|
+
*/
|
|
204
|
+
private updateContentTypes;
|
|
192
205
|
_onStartTileLoading(): void;
|
|
193
206
|
_onEndTileLoading(): void;
|
|
194
207
|
_addTileToCache(tile: any): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileset-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tileset-3d.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EACL,gBAAgB,EAGhB,gBAAgB,EAChB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAC,UAAU,EAAoC,MAAM,uBAAuB,CAAC;AAEpF,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"tileset-3d.d.ts","sourceRoot":"","sources":["../../src/tileset/tileset-3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,8 @@ class Tileset3D {
|
|
|
116
116
|
*/
|
|
117
117
|
// eslint-disable-next-line max-statements
|
|
118
118
|
constructor(json, options) {
|
|
119
|
+
/** flags that contain information about data types in nested tiles */
|
|
120
|
+
this.contentFormats = { draco: false, meshopt: false, dds: false, ktx2: false };
|
|
119
121
|
this.updatePromise = null;
|
|
120
122
|
(0, loader_utils_1.assert)(json);
|
|
121
123
|
// PUBLIC MEMBERS
|
|
@@ -240,7 +242,9 @@ class Tileset3D {
|
|
|
240
242
|
else {
|
|
241
243
|
this.lastUpdatedVieports = viewports;
|
|
242
244
|
}
|
|
243
|
-
|
|
245
|
+
if (viewports) {
|
|
246
|
+
this.doUpdate(viewports);
|
|
247
|
+
}
|
|
244
248
|
});
|
|
245
249
|
}
|
|
246
250
|
/**
|
|
@@ -257,7 +261,9 @@ class Tileset3D {
|
|
|
257
261
|
if (!this.updatePromise) {
|
|
258
262
|
this.updatePromise = new Promise((resolve) => {
|
|
259
263
|
setTimeout(() => {
|
|
260
|
-
|
|
264
|
+
if (this.lastUpdatedVieports) {
|
|
265
|
+
this.doUpdate(this.lastUpdatedVieports);
|
|
266
|
+
}
|
|
261
267
|
resolve(this._frameNumber);
|
|
262
268
|
this.updatePromise = null;
|
|
263
269
|
}, this.options.debounceTime);
|
|
@@ -270,22 +276,20 @@ class Tileset3D {
|
|
|
270
276
|
* @param viewports viewports
|
|
271
277
|
*/
|
|
272
278
|
// eslint-disable-next-line max-statements, complexity
|
|
273
|
-
doUpdate(viewports
|
|
279
|
+
doUpdate(viewports) {
|
|
274
280
|
if ('loadTiles' in this.options && !this.options.loadTiles) {
|
|
275
281
|
return;
|
|
276
282
|
}
|
|
277
283
|
if (this.traverseCounter > 0) {
|
|
278
284
|
return;
|
|
279
285
|
}
|
|
280
|
-
|
|
281
|
-
viewports = [viewports];
|
|
282
|
-
}
|
|
286
|
+
const preparedViewports = viewports instanceof Array ? viewports : [viewports];
|
|
283
287
|
this._cache.reset();
|
|
284
288
|
this._frameNumber++;
|
|
285
|
-
this.traverseCounter =
|
|
289
|
+
this.traverseCounter = preparedViewports.length;
|
|
286
290
|
const viewportsToTraverse = [];
|
|
287
291
|
// First loop to decrement traverseCounter
|
|
288
|
-
for (const viewport of
|
|
292
|
+
for (const viewport of preparedViewports) {
|
|
289
293
|
const id = viewport.id;
|
|
290
294
|
if (this._needTraverse(id)) {
|
|
291
295
|
viewportsToTraverse.push(id);
|
|
@@ -295,7 +299,7 @@ class Tileset3D {
|
|
|
295
299
|
}
|
|
296
300
|
}
|
|
297
301
|
// Second loop to traverse
|
|
298
|
-
for (const viewport of
|
|
302
|
+
for (const viewport of preparedViewports) {
|
|
299
303
|
const id = viewport.id;
|
|
300
304
|
if (!this.roots[id]) {
|
|
301
305
|
this.roots[id] = this._initializeTileHeaders(this.tileset, null);
|
|
@@ -493,7 +497,7 @@ class Tileset3D {
|
|
|
493
497
|
this.stats.get(TILES_LOADED);
|
|
494
498
|
this.stats.get(TILES_UNLOADED);
|
|
495
499
|
this.stats.get(TILES_LOAD_FAILED);
|
|
496
|
-
this.stats.get(POINTS_COUNT
|
|
500
|
+
this.stats.get(POINTS_COUNT);
|
|
497
501
|
this.stats.get(TILES_GPU_MEMORY, 'memory');
|
|
498
502
|
}
|
|
499
503
|
// Installs the main tileset JSON file or a tileset JSON file referenced from a tile.
|
|
@@ -583,9 +587,42 @@ class Tileset3D {
|
|
|
583
587
|
if (tile && tile.content) {
|
|
584
588
|
(0, transform_utils_1.calculateTransformProps)(tile, tile.content);
|
|
585
589
|
}
|
|
590
|
+
this.updateContentTypes(tile);
|
|
586
591
|
this._addTileToCache(tile);
|
|
587
592
|
this.options.onTileLoad(tile);
|
|
588
593
|
}
|
|
594
|
+
/**
|
|
595
|
+
* Update information about data types in nested tiles
|
|
596
|
+
* @param tile instance of a nested Tile3D
|
|
597
|
+
*/
|
|
598
|
+
updateContentTypes(tile) {
|
|
599
|
+
if (this.type === constants_1.TILESET_TYPE.I3S) {
|
|
600
|
+
if (tile.header.isDracoGeometry) {
|
|
601
|
+
this.contentFormats.draco = true;
|
|
602
|
+
}
|
|
603
|
+
switch (tile.header.textureFormat) {
|
|
604
|
+
case 'dds':
|
|
605
|
+
this.contentFormats.dds = true;
|
|
606
|
+
break;
|
|
607
|
+
case 'ktx2':
|
|
608
|
+
this.contentFormats.ktx2 = true;
|
|
609
|
+
break;
|
|
610
|
+
default:
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
else if (this.type === constants_1.TILESET_TYPE.TILES3D) {
|
|
614
|
+
const { extensionsRemoved = [] } = tile.content?.gltf || {};
|
|
615
|
+
if (extensionsRemoved.includes('KHR_draco_mesh_compression')) {
|
|
616
|
+
this.contentFormats.draco = true;
|
|
617
|
+
}
|
|
618
|
+
if (extensionsRemoved.includes('EXT_meshopt_compression')) {
|
|
619
|
+
this.contentFormats.meshopt = true;
|
|
620
|
+
}
|
|
621
|
+
if (extensionsRemoved.includes('KHR_texture_basisu')) {
|
|
622
|
+
this.contentFormats.ktx2 = true;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
}
|
|
589
626
|
_onStartTileLoading() {
|
|
590
627
|
this._pendingCount++;
|
|
591
628
|
this.stats.get(TILES_LOADING).incrementCount();
|