@loaders.gl/tiles 4.0.0-alpha.4 → 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.
Files changed (197) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/constants.d.ts +32 -0
  5. package/dist/constants.d.ts.map +1 -0
  6. package/dist/constants.js +30 -26
  7. package/dist/dist.min.js +8921 -0
  8. package/dist/es5/bundle.js +6 -0
  9. package/dist/es5/bundle.js.map +1 -0
  10. package/dist/es5/constants.js +44 -0
  11. package/dist/es5/constants.js.map +1 -0
  12. package/dist/es5/index.js +93 -0
  13. package/dist/es5/index.js.map +1 -0
  14. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js +70 -0
  15. package/dist/es5/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  16. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js +45 -0
  17. package/dist/es5/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  18. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js +84 -0
  19. package/dist/es5/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
  20. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js +143 -0
  21. package/dist/es5/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
  22. package/dist/es5/tileset/helpers/3d-tiles-options.js +12 -0
  23. package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -0
  24. package/dist/es5/tileset/helpers/bounding-volume.js +176 -0
  25. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -0
  26. package/dist/es5/tileset/helpers/frame-state.js +129 -0
  27. package/dist/es5/tileset/helpers/frame-state.js.map +1 -0
  28. package/dist/es5/tileset/helpers/i3s-lod.js +60 -0
  29. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -0
  30. package/dist/es5/tileset/helpers/tiles-3d-lod.js +103 -0
  31. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -0
  32. package/dist/es5/tileset/helpers/transform-utils.js +50 -0
  33. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -0
  34. package/dist/es5/tileset/helpers/zoom.js +63 -0
  35. package/dist/es5/tileset/helpers/zoom.js.map +1 -0
  36. package/dist/es5/tileset/tile-3d.js +565 -0
  37. package/dist/es5/tileset/tile-3d.js.map +1 -0
  38. package/dist/es5/tileset/tileset-3d.js +890 -0
  39. package/dist/es5/tileset/tileset-3d.js.map +1 -0
  40. package/dist/es5/tileset/tileset-cache.js +85 -0
  41. package/dist/es5/tileset/tileset-cache.js.map +1 -0
  42. package/dist/es5/tileset/tileset-traverser.js +328 -0
  43. package/dist/es5/tileset/tileset-traverser.js.map +1 -0
  44. package/dist/es5/types.js +2 -0
  45. package/dist/es5/types.js.map +1 -0
  46. package/dist/es5/utils/doubly-linked-list-node.js +21 -0
  47. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -0
  48. package/dist/es5/utils/doubly-linked-list.js +88 -0
  49. package/dist/es5/utils/doubly-linked-list.js.map +1 -0
  50. package/dist/es5/utils/managed-array.js +126 -0
  51. package/dist/es5/utils/managed-array.js.map +1 -0
  52. package/dist/esm/bundle.js +4 -0
  53. package/dist/esm/bundle.js.map +1 -0
  54. package/dist/esm/constants.js +32 -0
  55. package/dist/esm/constants.js.map +1 -0
  56. package/dist/esm/index.js +10 -0
  57. package/dist/esm/index.js.map +1 -0
  58. package/dist/{tileset/traversers → esm/tileset/format-3d-tiles}/tileset-3d-traverser.js +2 -13
  59. package/dist/esm/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  60. package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js +26 -0
  61. package/dist/esm/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  62. package/dist/esm/tileset/format-i3s/i3s-tile-manager.js +79 -0
  63. package/dist/esm/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
  64. package/dist/{tileset/traversers → esm/tileset/format-i3s}/i3s-tileset-traverser.js +16 -28
  65. package/dist/esm/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
  66. package/dist/esm/tileset/helpers/3d-tiles-options.js +6 -0
  67. package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -0
  68. package/dist/esm/tileset/helpers/bounding-volume.js +155 -0
  69. package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -0
  70. package/dist/esm/tileset/helpers/frame-state.js +109 -0
  71. package/dist/esm/tileset/helpers/frame-state.js.map +1 -0
  72. package/dist/esm/tileset/helpers/i3s-lod.js +53 -0
  73. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -0
  74. package/dist/esm/tileset/helpers/tiles-3d-lod.js +100 -0
  75. package/dist/{tileset → esm/tileset}/helpers/tiles-3d-lod.js.map +1 -1
  76. package/dist/esm/tileset/helpers/transform-utils.js +50 -0
  77. package/dist/esm/tileset/helpers/transform-utils.js.map +1 -0
  78. package/dist/esm/tileset/helpers/zoom.js +55 -0
  79. package/dist/esm/tileset/helpers/zoom.js.map +1 -0
  80. package/dist/esm/tileset/tile-3d.js +445 -0
  81. package/dist/esm/tileset/tile-3d.js.map +1 -0
  82. package/dist/esm/tileset/tileset-3d.js +637 -0
  83. package/dist/esm/tileset/tileset-3d.js.map +1 -0
  84. package/dist/esm/tileset/tileset-cache.js +60 -0
  85. package/dist/esm/tileset/tileset-cache.js.map +1 -0
  86. package/dist/{tileset/traversers → esm/tileset}/tileset-traverser.js +20 -72
  87. package/dist/esm/tileset/tileset-traverser.js.map +1 -0
  88. package/dist/esm/types.js +2 -0
  89. package/dist/esm/types.js.map +1 -0
  90. package/dist/esm/utils/doubly-linked-list-node.js +12 -0
  91. package/dist/esm/utils/doubly-linked-list-node.js.map +1 -0
  92. package/dist/esm/utils/doubly-linked-list.js +65 -0
  93. package/dist/esm/utils/doubly-linked-list.js.map +1 -0
  94. package/dist/esm/utils/managed-array.js +87 -0
  95. package/dist/esm/utils/managed-array.js.map +1 -0
  96. package/dist/index.d.ts +11 -0
  97. package/dist/index.d.ts.map +1 -0
  98. package/dist/index.js +26 -9
  99. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +7 -0
  100. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  101. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +54 -0
  102. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts +27 -0
  103. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  104. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +47 -0
  105. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts +34 -0
  106. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  107. package/dist/tileset/format-i3s/i3s-tile-manager.js +80 -0
  108. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts +25 -0
  109. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  110. package/dist/tileset/format-i3s/i3s-tileset-traverser.js +92 -0
  111. package/dist/tileset/helpers/3d-tiles-options.d.ts +4 -0
  112. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +1 -0
  113. package/dist/tileset/helpers/3d-tiles-options.js +8 -5
  114. package/dist/tileset/helpers/bounding-volume.d.ts +19 -0
  115. package/dist/tileset/helpers/bounding-volume.d.ts.map +1 -0
  116. package/dist/tileset/helpers/bounding-volume.js +274 -69
  117. package/dist/tileset/helpers/frame-state.d.ts +28 -0
  118. package/dist/tileset/helpers/frame-state.d.ts.map +1 -0
  119. package/dist/tileset/helpers/frame-state.js +131 -49
  120. package/dist/tileset/helpers/i3s-lod.d.ts +20 -0
  121. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -0
  122. package/dist/tileset/helpers/i3s-lod.js +82 -105
  123. package/dist/tileset/helpers/tiles-3d-lod.d.ts +8 -0
  124. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +1 -0
  125. package/dist/tileset/helpers/tiles-3d-lod.js +112 -100
  126. package/dist/tileset/helpers/transform-utils.d.ts +2 -0
  127. package/dist/tileset/helpers/transform-utils.d.ts.map +1 -0
  128. package/dist/tileset/helpers/transform-utils.js +51 -56
  129. package/dist/tileset/helpers/zoom.d.ts +46 -0
  130. package/dist/tileset/helpers/zoom.d.ts.map +1 -0
  131. package/dist/tileset/helpers/zoom.js +83 -30
  132. package/dist/tileset/tile-3d.d.ts +206 -0
  133. package/dist/tileset/tile-3d.d.ts.map +1 -0
  134. package/dist/tileset/tile-3d.js +593 -531
  135. package/dist/tileset/tileset-3d.d.ts +217 -0
  136. package/dist/tileset/tileset-3d.d.ts.map +1 -0
  137. package/dist/tileset/tileset-3d.js +707 -648
  138. package/dist/tileset/tileset-cache.d.ts +18 -0
  139. package/dist/tileset/tileset-cache.d.ts.map +1 -0
  140. package/dist/tileset/tileset-cache.js +70 -71
  141. package/dist/tileset/tileset-traverser.d.ts +46 -0
  142. package/dist/tileset/tileset-traverser.d.ts.map +1 -0
  143. package/dist/tileset/tileset-traverser.js +309 -0
  144. package/dist/types.d.ts +34 -0
  145. package/dist/types.d.ts.map +1 -0
  146. package/dist/types.js +2 -0
  147. package/dist/utils/doubly-linked-list-node.d.ts +11 -0
  148. package/dist/utils/doubly-linked-list-node.d.ts.map +1 -0
  149. package/dist/utils/doubly-linked-list-node.js +17 -8
  150. package/dist/utils/doubly-linked-list.d.ts +30 -0
  151. package/dist/utils/doubly-linked-list.d.ts.map +1 -0
  152. package/dist/utils/doubly-linked-list.js +91 -72
  153. package/dist/utils/managed-array.d.ts +85 -0
  154. package/dist/utils/managed-array.d.ts.map +1 -0
  155. package/dist/utils/managed-array.js +144 -103
  156. package/package.json +10 -10
  157. package/src/constants.ts +2 -0
  158. package/src/index.ts +7 -4
  159. package/src/tileset/{traversers → format-3d-tiles}/tileset-3d-traverser.ts +4 -2
  160. package/src/tileset/format-i3s/i3s-pending-tiles-register.ts +44 -0
  161. package/src/tileset/format-i3s/i3s-tile-manager.ts +101 -0
  162. package/src/tileset/{traversers → format-i3s}/i3s-tileset-traverser.ts +27 -15
  163. package/src/tileset/helpers/bounding-volume.ts +136 -0
  164. package/src/tileset/helpers/frame-state.ts +102 -18
  165. package/src/tileset/helpers/i3s-lod.ts +75 -96
  166. package/src/tileset/helpers/tiles-3d-lod.ts +2 -0
  167. package/src/tileset/helpers/transform-utils.ts +2 -0
  168. package/src/tileset/helpers/zoom.ts +84 -9
  169. package/src/tileset/tile-3d.ts +77 -20
  170. package/src/tileset/tileset-3d.ts +205 -43
  171. package/src/tileset/tileset-cache.ts +6 -2
  172. package/src/tileset/{traversers/tileset-traverser.ts → tileset-traverser.ts} +29 -17
  173. package/src/types.ts +36 -0
  174. package/src/utils/{doubly-linked-list-node.js → doubly-linked-list-node.ts} +7 -2
  175. package/src/utils/{doubly-linked-list.js → doubly-linked-list.ts} +5 -8
  176. package/src/utils/{managed-array.js → managed-array.ts} +5 -2
  177. package/dist/bundle.js.map +0 -1
  178. package/dist/constants.js.map +0 -1
  179. package/dist/index.js.map +0 -1
  180. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  181. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  182. package/dist/tileset/helpers/frame-state.js.map +0 -1
  183. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  184. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  185. package/dist/tileset/helpers/zoom.js.map +0 -1
  186. package/dist/tileset/tile-3d.js.map +0 -1
  187. package/dist/tileset/tileset-3d.js.map +0 -1
  188. package/dist/tileset/tileset-cache.js.map +0 -1
  189. package/dist/tileset/traversers/i3s-tile-manager.js +0 -45
  190. package/dist/tileset/traversers/i3s-tile-manager.js.map +0 -1
  191. package/dist/tileset/traversers/i3s-tileset-traverser.js.map +0 -1
  192. package/dist/tileset/traversers/tileset-3d-traverser.js.map +0 -1
  193. package/dist/tileset/traversers/tileset-traverser.js.map +0 -1
  194. package/dist/utils/doubly-linked-list-node.js.map +0 -1
  195. package/dist/utils/doubly-linked-list.js.map +0 -1
  196. package/dist/utils/managed-array.js.map +0 -1
  197. package/src/tileset/traversers/i3s-tile-manager.ts +0 -39
@@ -1,78 +1,97 @@
1
- import DoublyLinkedListNode from '../utils/doubly-linked-list-node';
2
- export default class DoublyLinkedList {
3
- constructor() {
4
- this.head = null;
5
- this.tail = null;
6
- this._length = 0;
7
- }
8
-
9
- get length() {
10
- return this._length;
11
- }
12
-
13
- add(item) {
14
- const node = new DoublyLinkedListNode(item, this.tail, null);
15
-
16
- if (this.tail) {
17
- this.tail.next = node;
18
- this.tail = node;
19
- } else {
20
- this.head = node;
21
- 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;
22
16
  }
23
-
24
- ++this._length;
25
- return node;
26
- }
27
-
28
- remove(node) {
29
- if (!node) {
30
- return;
17
+ get length() {
18
+ return this._length;
31
19
  }
32
-
33
- if (node.previous && node.next) {
34
- node.previous.next = node.next;
35
- node.next.previous = node.previous;
36
- } else if (node.previous) {
37
- node.previous.next = null;
38
- this.tail = node.previous;
39
- } else if (node.next) {
40
- node.next.previous = null;
41
- this.head = node.next;
42
- } else {
43
- this.head = null;
44
- this.tail = null;
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;
45
37
  }
46
-
47
- node.next = null;
48
- node.previous = null;
49
- --this._length;
50
- }
51
-
52
- splice(node, nextNode) {
53
- if (node === nextNode) {
54
- return;
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;
55
68
  }
56
-
57
- this.remove(nextNode);
58
-
59
- this._insert(node, nextNode);
60
- }
61
-
62
- _insert(node, nextNode) {
63
- const oldNodeNext = node.next;
64
- node.next = nextNode;
65
-
66
- if (this.tail === node) {
67
- this.tail = nextNode;
68
- } else {
69
- oldNodeNext.previous = nextNode;
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;
70
95
  }
71
-
72
- nextNode.next = oldNodeNext;
73
- nextNode.previous = node;
74
- ++this._length;
75
- }
76
-
77
96
  }
78
- //# sourceMappingURL=doubly-linked-list.js.map
97
+ exports.DoublyLinkedList = DoublyLinkedList;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * A wrapper around arrays so that the internal length of the array can be manually managed.
3
+ *
4
+ * @alias ManagedArray
5
+ * @constructor
6
+ * @private
7
+ *
8
+ * @param {Number} [length=0] The initial length of the array.
9
+ */
10
+ export declare class ManagedArray {
11
+ _map: Map<any, any>;
12
+ _array: any[];
13
+ _length: number;
14
+ constructor(length?: number);
15
+ /**
16
+ * Gets or sets the length of the array.
17
+ * If the set length is greater than the length of the internal array, the internal array is resized.
18
+ *
19
+ * @memberof ManagedArray.prototype
20
+ * @type Number
21
+ */
22
+ get length(): number;
23
+ set length(length: number);
24
+ /**
25
+ * Gets the internal array.
26
+ *
27
+ * @memberof ManagedArray.prototype
28
+ * @type Array
29
+ * @readonly
30
+ */
31
+ get values(): any[];
32
+ /**
33
+ * Gets the element at an index.
34
+ *
35
+ * @param {Number} index The index to get.
36
+ */
37
+ get(index: any): any;
38
+ /**
39
+ * Sets the element at an index. Resizes the array if index is greater than the length of the array.
40
+ *
41
+ * @param {Number} index The index to set.
42
+ * @param {*} element The element to set at index.
43
+ */
44
+ set(index: any, element: any): void;
45
+ delete(element: any): void;
46
+ /**
47
+ * Returns the last element in the array without modifying the array.
48
+ *
49
+ * @returns {*} The last element in the array.
50
+ */
51
+ peek(): any;
52
+ /**
53
+ * Push an element into the array.
54
+ *
55
+ * @param {*} element The element to push.
56
+ */
57
+ push(element: any): void;
58
+ /**
59
+ * Pop an element from the array.
60
+ *
61
+ * @returns {*} The last element in the array.
62
+ */
63
+ pop(): any;
64
+ /**
65
+ * Resize the internal array if length > _array.length.
66
+ *
67
+ * @param {Number} length The length.
68
+ */
69
+ reserve(length: any): void;
70
+ /**
71
+ * Resize the array.
72
+ *
73
+ * @param {Number} length The length.
74
+ */
75
+ resize(length: any): void;
76
+ /**
77
+ * Trim the internal array to the specified length. Defaults to the current length.
78
+ *
79
+ * @param {Number} [length] The length.
80
+ */
81
+ trim(length: any): void;
82
+ reset(): void;
83
+ find(target: any): boolean;
84
+ }
85
+ //# sourceMappingURL=managed-array.d.ts.map
@@ -0,0 +1 @@
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,111 +1,152 @@
1
- import { assert } from '@loaders.gl/loader-utils';
2
- export default class ManagedArray {
3
- constructor(length = 0) {
4
- this._array = new Array(length);
5
- this._map = new Map();
6
- this._length = length;
7
- }
8
-
9
- get length() {
10
- return this._length;
11
- }
12
-
13
- set length(length) {
14
- this._length = length;
15
-
16
- if (length > this._array.length) {
17
- 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;
18
21
  }
19
- }
20
-
21
- get values() {
22
- return this._array;
23
- }
24
-
25
- get(index) {
26
- assert(index < this._array.length);
27
- return this._array[index];
28
- }
29
-
30
- set(index, element) {
31
- assert(index >= 0);
32
-
33
- if (index >= this.length) {
34
- 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;
35
31
  }
36
-
37
- if (this._map.has(this._array[index])) {
38
- this._map.delete(this._array[index]);
32
+ set length(length) {
33
+ this._length = length;
34
+ if (length > this._array.length) {
35
+ this._array.length = length;
36
+ }
39
37
  }
40
-
41
- this._array[index] = element;
42
-
43
- this._map.set(element, index);
44
- }
45
-
46
- delete(element) {
47
- const index = this._map.get(element);
48
-
49
- if (index >= 0) {
50
- this._array.splice(index, 1);
51
-
52
- this._map.delete(element);
53
-
54
- 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;
55
47
  }
56
- }
57
-
58
- peek() {
59
- return this._array[this._length - 1];
60
- }
61
-
62
- push(element) {
63
- if (!this._map.has(element)) {
64
- const index = this.length++;
65
- this._array[index] = element;
66
-
67
- 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];
68
56
  }
69
- }
70
-
71
- pop() {
72
- const element = this._array[--this.length];
73
-
74
- this._map.delete(element);
75
-
76
- return element;
77
- }
78
-
79
- reserve(length) {
80
- assert(length >= 0);
81
-
82
- if (length > this._array.length) {
83
- this._array.length = length;
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);
84
73
  }
85
- }
86
-
87
- resize(length) {
88
- assert(length >= 0);
89
- this.length = length;
90
- }
91
-
92
- trim(length) {
93
- if (length === null || length === undefined) {
94
- length = this.length;
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);
95
150
  }
96
-
97
- this._array.length = length;
98
- }
99
-
100
- reset() {
101
- this._array = [];
102
- this._map = new Map();
103
- this._length = 0;
104
- }
105
-
106
- find(target) {
107
- return this._map.has(target);
108
- }
109
-
110
151
  }
111
- //# sourceMappingURL=managed-array.js.map
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.4",
3
+ "version": "4.0.0-alpha.6",
4
4
  "description": "Common components for different tiles loaders.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -19,9 +19,9 @@
19
19
  "point cloud",
20
20
  "pointcloud"
21
21
  ],
22
- "types": "src/index.ts",
23
- "main": "dist/index.js",
24
- "module": "dist/index.js",
22
+ "types": "dist/index.d.ts",
23
+ "main": "dist/es5/index.js",
24
+ "module": "dist/esm/index.js",
25
25
  "sideEffects": false,
26
26
  "files": [
27
27
  "src",
@@ -30,19 +30,19 @@
30
30
  ],
31
31
  "scripts": {
32
32
  "pre-build": "npm run build-bundle",
33
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js"
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.4",
37
- "@loaders.gl/math": "4.0.0-alpha.4",
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": "^3.4.0"
42
+ "@probe.gl/stats": "^4.0.2"
43
43
  },
44
44
  "peerDependencies": {
45
- "@loaders.gl/core": "^3.0.0"
45
+ "@loaders.gl/core": "4.0.0-alpha.5"
46
46
  },
47
- "gitHead": "53026061b3c8871f7e96d3a5826125cc6613bddc"
47
+ "gitHead": "acc1985050dfaa0f1f0c066f8da5bce7454a046c"
48
48
  }
package/src/constants.ts CHANGED
@@ -1,3 +1,5 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  export const TILE_CONTENT_STATE = {
2
4
  UNLOADED: 0, // Has never been requested
3
5
  LOADING: 1, // Is waiting on a pending request
package/src/index.ts CHANGED
@@ -1,14 +1,17 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  export type {Tileset3DProps} from './tileset/tileset-3d';
2
- export {default as Tileset3D} from './tileset/tileset-3d';
3
- export {default as Tile3D} from './tileset/tile-3d';
4
+ export {Tileset3D} from './tileset/tileset-3d';
5
+ export {Tile3D} from './tileset/tile-3d';
4
6
 
5
- export {default as TilesetTraverser} from './tileset/traversers/tileset-traverser';
6
- export {default as TilesetCache} from './tileset/tileset-cache';
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';
10
12
 
11
13
  export {getFrameState} from './tileset/helpers/frame-state';
14
+ export {getLodStatus} from './tileset/helpers/i3s-lod';
12
15
 
13
16
  export {
14
17
  TILE_CONTENT_STATE,
@@ -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 './tileset-traverser';
7
+ import {TilesetTraverser} from '../tileset-traverser';
6
8
 
7
- export default class Tileset3DTraverser extends TilesetTraverser {
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
+ }