@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
@@ -0,0 +1,565 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Tile3D = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _core = require("@math.gl/core");
14
+ var _culling = require("@math.gl/culling");
15
+ var _core2 = require("@loaders.gl/core");
16
+ var _constants = require("../constants");
17
+ var _boundingVolume = require("./helpers/bounding-volume");
18
+ var _tiles3dLod = require("./helpers/tiles-3d-lod");
19
+ var _i3sLod = require("./helpers/i3s-lod");
20
+ var _dTilesOptions = require("./helpers/3d-tiles-options");
21
+ var _tilesetTraverser = require("./tileset-traverser");
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+ var scratchVector = new _core.Vector3();
25
+ function defined(x) {
26
+ return x !== undefined && x !== null;
27
+ }
28
+ var Tile3D = function () {
29
+ function Tile3D(tileset, header, parentHeader) {
30
+ var extendedId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
31
+ (0, _classCallCheck2.default)(this, Tile3D);
32
+ (0, _defineProperty2.default)(this, "tileset", void 0);
33
+ (0, _defineProperty2.default)(this, "header", void 0);
34
+ (0, _defineProperty2.default)(this, "id", void 0);
35
+ (0, _defineProperty2.default)(this, "url", void 0);
36
+ (0, _defineProperty2.default)(this, "parent", void 0);
37
+ (0, _defineProperty2.default)(this, "refine", void 0);
38
+ (0, _defineProperty2.default)(this, "type", void 0);
39
+ (0, _defineProperty2.default)(this, "contentUrl", void 0);
40
+ (0, _defineProperty2.default)(this, "lodMetricType", void 0);
41
+ (0, _defineProperty2.default)(this, "lodMetricValue", void 0);
42
+ (0, _defineProperty2.default)(this, "boundingVolume", void 0);
43
+ (0, _defineProperty2.default)(this, "content", void 0);
44
+ (0, _defineProperty2.default)(this, "contentState", void 0);
45
+ (0, _defineProperty2.default)(this, "gpuMemoryUsageInBytes", void 0);
46
+ (0, _defineProperty2.default)(this, "children", void 0);
47
+ (0, _defineProperty2.default)(this, "depth", void 0);
48
+ (0, _defineProperty2.default)(this, "viewportIds", void 0);
49
+ (0, _defineProperty2.default)(this, "transform", void 0);
50
+ (0, _defineProperty2.default)(this, "extensions", void 0);
51
+ (0, _defineProperty2.default)(this, "implicitTiling", void 0);
52
+ (0, _defineProperty2.default)(this, "userData", void 0);
53
+ (0, _defineProperty2.default)(this, "computedTransform", void 0);
54
+ (0, _defineProperty2.default)(this, "hasEmptyContent", void 0);
55
+ (0, _defineProperty2.default)(this, "hasTilesetContent", void 0);
56
+ (0, _defineProperty2.default)(this, "traverser", void 0);
57
+ (0, _defineProperty2.default)(this, "_cacheNode", void 0);
58
+ (0, _defineProperty2.default)(this, "_frameNumber", void 0);
59
+ (0, _defineProperty2.default)(this, "_lodJudge", void 0);
60
+ (0, _defineProperty2.default)(this, "_expireDate", void 0);
61
+ (0, _defineProperty2.default)(this, "_expiredContent", void 0);
62
+ (0, _defineProperty2.default)(this, "_shouldRefine", void 0);
63
+ (0, _defineProperty2.default)(this, "_boundingBox", void 0);
64
+ (0, _defineProperty2.default)(this, "_distanceToCamera", void 0);
65
+ (0, _defineProperty2.default)(this, "_centerZDepth", void 0);
66
+ (0, _defineProperty2.default)(this, "_screenSpaceError", void 0);
67
+ (0, _defineProperty2.default)(this, "_visibilityPlaneMask", void 0);
68
+ (0, _defineProperty2.default)(this, "_visible", void 0);
69
+ (0, _defineProperty2.default)(this, "_inRequestVolume", void 0);
70
+ (0, _defineProperty2.default)(this, "_stackLength", void 0);
71
+ (0, _defineProperty2.default)(this, "_selectionDepth", void 0);
72
+ (0, _defineProperty2.default)(this, "_touchedFrame", void 0);
73
+ (0, _defineProperty2.default)(this, "_visitedFrame", void 0);
74
+ (0, _defineProperty2.default)(this, "_selectedFrame", void 0);
75
+ (0, _defineProperty2.default)(this, "_requestedFrame", void 0);
76
+ (0, _defineProperty2.default)(this, "_priority", void 0);
77
+ (0, _defineProperty2.default)(this, "_contentBoundingVolume", void 0);
78
+ (0, _defineProperty2.default)(this, "_viewerRequestVolume", void 0);
79
+ (0, _defineProperty2.default)(this, "_initialTransform", void 0);
80
+ this.header = header;
81
+ this.tileset = tileset;
82
+ this.id = extendedId || header.id;
83
+ this.url = header.url;
84
+ this.parent = parentHeader;
85
+ this.refine = this._getRefine(header.refine);
86
+ this.type = header.type;
87
+ this.contentUrl = header.contentUrl;
88
+ this.lodMetricType = 'geometricError';
89
+ this.lodMetricValue = 0;
90
+ this.boundingVolume = null;
91
+ this.content = null;
92
+ this.contentState = _constants.TILE_CONTENT_STATE.UNLOADED;
93
+ this.gpuMemoryUsageInBytes = 0;
94
+ this.children = [];
95
+ this.hasEmptyContent = false;
96
+ this.hasTilesetContent = false;
97
+ this.depth = 0;
98
+ this.viewportIds = [];
99
+ this.userData = {};
100
+ this.extensions = null;
101
+ this._priority = 0;
102
+ this._touchedFrame = 0;
103
+ this._visitedFrame = 0;
104
+ this._selectedFrame = 0;
105
+ this._requestedFrame = 0;
106
+ this._screenSpaceError = 0;
107
+ this._cacheNode = null;
108
+ this._frameNumber = null;
109
+ this._cacheNode = null;
110
+ this.traverser = new _tilesetTraverser.TilesetTraverser({});
111
+ this._shouldRefine = false;
112
+ this._distanceToCamera = 0;
113
+ this._centerZDepth = 0;
114
+ this._visible = undefined;
115
+ this._inRequestVolume = false;
116
+ this._stackLength = 0;
117
+ this._selectionDepth = 0;
118
+ this._initialTransform = new _core.Matrix4();
119
+ this.transform = new _core.Matrix4();
120
+ this._initializeLodMetric(header);
121
+ this._initializeTransforms(header);
122
+ this._initializeBoundingVolumes(header);
123
+ this._initializeContent(header);
124
+ this._initializeRenderingState(header);
125
+ this._lodJudge = null;
126
+ this._expireDate = null;
127
+ this._expiredContent = null;
128
+ this.implicitTiling = null;
129
+ Object.seal(this);
130
+ }
131
+ (0, _createClass2.default)(Tile3D, [{
132
+ key: "destroy",
133
+ value: function destroy() {
134
+ this.header = null;
135
+ }
136
+ }, {
137
+ key: "isDestroyed",
138
+ value: function isDestroyed() {
139
+ return this.header === null;
140
+ }
141
+ }, {
142
+ key: "selected",
143
+ get: function get() {
144
+ return this._selectedFrame === this.tileset._frameNumber;
145
+ }
146
+ }, {
147
+ key: "isVisible",
148
+ get: function get() {
149
+ return this._visible;
150
+ }
151
+ }, {
152
+ key: "isVisibleAndInRequestVolume",
153
+ get: function get() {
154
+ return this._visible && this._inRequestVolume;
155
+ }
156
+ }, {
157
+ key: "hasRenderContent",
158
+ get: function get() {
159
+ return !this.hasEmptyContent && !this.hasTilesetContent;
160
+ }
161
+ }, {
162
+ key: "hasChildren",
163
+ get: function get() {
164
+ return this.children.length > 0 || this.header.children && this.header.children.length > 0;
165
+ }
166
+ }, {
167
+ key: "contentReady",
168
+ get: function get() {
169
+ return this.contentState === _constants.TILE_CONTENT_STATE.READY || this.hasEmptyContent;
170
+ }
171
+ }, {
172
+ key: "contentAvailable",
173
+ get: function get() {
174
+ return Boolean(this.contentReady && this.hasRenderContent || this._expiredContent && !this.contentFailed);
175
+ }
176
+ }, {
177
+ key: "hasUnloadedContent",
178
+ get: function get() {
179
+ return this.hasRenderContent && this.contentUnloaded;
180
+ }
181
+ }, {
182
+ key: "contentUnloaded",
183
+ get: function get() {
184
+ return this.contentState === _constants.TILE_CONTENT_STATE.UNLOADED;
185
+ }
186
+ }, {
187
+ key: "contentExpired",
188
+ get: function get() {
189
+ return this.contentState === _constants.TILE_CONTENT_STATE.EXPIRED;
190
+ }
191
+ }, {
192
+ key: "contentFailed",
193
+ get: function get() {
194
+ return this.contentState === _constants.TILE_CONTENT_STATE.FAILED;
195
+ }
196
+ }, {
197
+ key: "distanceToCamera",
198
+ get: function get() {
199
+ return this._distanceToCamera;
200
+ }
201
+ }, {
202
+ key: "screenSpaceError",
203
+ get: function get() {
204
+ return this._screenSpaceError;
205
+ }
206
+ }, {
207
+ key: "boundingBox",
208
+ get: function get() {
209
+ if (!this._boundingBox) {
210
+ this._boundingBox = (0, _boundingVolume.getCartographicBounds)(this.header.boundingVolume, this.boundingVolume);
211
+ }
212
+ return this._boundingBox;
213
+ }
214
+ }, {
215
+ key: "getScreenSpaceError",
216
+ value: function getScreenSpaceError(frameState, useParentLodMetric) {
217
+ switch (this.tileset.type) {
218
+ case _constants.TILESET_TYPE.I3S:
219
+ return (0, _i3sLod.getProjectedRadius)(this, frameState);
220
+ case _constants.TILESET_TYPE.TILES3D:
221
+ return (0, _tiles3dLod.getTiles3DScreenSpaceError)(this, frameState, useParentLodMetric);
222
+ default:
223
+ throw new Error('Unsupported tileset type');
224
+ }
225
+ }
226
+ }, {
227
+ key: "unselect",
228
+ value: function unselect() {
229
+ this._selectedFrame = 0;
230
+ }
231
+ }, {
232
+ key: "_getPriority",
233
+ value: function _getPriority() {
234
+ var traverser = this.tileset._traverser;
235
+ var skipLevelOfDetail = traverser.options.skipLevelOfDetail;
236
+ var maySkipTile = this.refine === _constants.TILE_REFINEMENT.ADD || skipLevelOfDetail;
237
+ if (maySkipTile && !this.isVisible && this._visible !== undefined) {
238
+ return -1;
239
+ }
240
+ if (this.tileset._frameNumber - this._touchedFrame >= 1) {
241
+ return -1;
242
+ }
243
+ if (this.contentState === _constants.TILE_CONTENT_STATE.UNLOADED) {
244
+ return -1;
245
+ }
246
+ var parent = this.parent;
247
+ var useParentScreenSpaceError = parent && (!maySkipTile || this._screenSpaceError === 0.0 || parent.hasTilesetContent);
248
+ var screenSpaceError = useParentScreenSpaceError ? parent._screenSpaceError : this._screenSpaceError;
249
+ var rootScreenSpaceError = traverser.root ? traverser.root._screenSpaceError : 0.0;
250
+ return Math.max(rootScreenSpaceError - screenSpaceError, 0);
251
+ }
252
+ }, {
253
+ key: "loadContent",
254
+ value: function () {
255
+ var _loadContent = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
256
+ var expired, requestToken, contentUrl, loader, options;
257
+ return _regenerator.default.wrap(function _callee$(_context) {
258
+ while (1) switch (_context.prev = _context.next) {
259
+ case 0:
260
+ if (!this.hasEmptyContent) {
261
+ _context.next = 2;
262
+ break;
263
+ }
264
+ return _context.abrupt("return", false);
265
+ case 2:
266
+ if (!this.content) {
267
+ _context.next = 4;
268
+ break;
269
+ }
270
+ return _context.abrupt("return", true);
271
+ case 4:
272
+ expired = this.contentExpired;
273
+ if (expired) {
274
+ this._expireDate = null;
275
+ }
276
+ this.contentState = _constants.TILE_CONTENT_STATE.LOADING;
277
+ _context.next = 9;
278
+ return this.tileset._requestScheduler.scheduleRequest(this.id, this._getPriority.bind(this));
279
+ case 9:
280
+ requestToken = _context.sent;
281
+ if (requestToken) {
282
+ _context.next = 13;
283
+ break;
284
+ }
285
+ this.contentState = _constants.TILE_CONTENT_STATE.UNLOADED;
286
+ return _context.abrupt("return", false);
287
+ case 13:
288
+ _context.prev = 13;
289
+ contentUrl = this.tileset.getTileUrl(this.contentUrl);
290
+ loader = this.tileset.loader;
291
+ options = _objectSpread(_objectSpread({}, this.tileset.loadOptions), {}, (0, _defineProperty2.default)({}, loader.id, _objectSpread(_objectSpread({}, this.tileset.loadOptions[loader.id]), {}, {
292
+ isTileset: this.type === 'json'
293
+ }, this._getLoaderSpecificOptions(loader.id))));
294
+ _context.next = 19;
295
+ return (0, _core2.load)(contentUrl, loader, options);
296
+ case 19:
297
+ this.content = _context.sent;
298
+ if (!this.tileset.options.contentLoader) {
299
+ _context.next = 23;
300
+ break;
301
+ }
302
+ _context.next = 23;
303
+ return this.tileset.options.contentLoader(this);
304
+ case 23:
305
+ if (this._isTileset()) {
306
+ this.tileset._initializeTileHeaders(this.content, this);
307
+ }
308
+ this.contentState = _constants.TILE_CONTENT_STATE.READY;
309
+ this._onContentLoaded();
310
+ return _context.abrupt("return", true);
311
+ case 29:
312
+ _context.prev = 29;
313
+ _context.t0 = _context["catch"](13);
314
+ this.contentState = _constants.TILE_CONTENT_STATE.FAILED;
315
+ throw _context.t0;
316
+ case 33:
317
+ _context.prev = 33;
318
+ requestToken.done();
319
+ return _context.finish(33);
320
+ case 36:
321
+ case "end":
322
+ return _context.stop();
323
+ }
324
+ }, _callee, this, [[13, 29, 33, 36]]);
325
+ }));
326
+ function loadContent() {
327
+ return _loadContent.apply(this, arguments);
328
+ }
329
+ return loadContent;
330
+ }()
331
+ }, {
332
+ key: "unloadContent",
333
+ value: function unloadContent() {
334
+ if (this.content && this.content.destroy) {
335
+ this.content.destroy();
336
+ }
337
+ this.content = null;
338
+ if (this.header.content && this.header.content.destroy) {
339
+ this.header.content.destroy();
340
+ }
341
+ this.header.content = null;
342
+ this.contentState = _constants.TILE_CONTENT_STATE.UNLOADED;
343
+ return true;
344
+ }
345
+ }, {
346
+ key: "updateVisibility",
347
+ value: function updateVisibility(frameState, viewportIds) {
348
+ if (this._frameNumber === frameState.frameNumber) {
349
+ return;
350
+ }
351
+ var parent = this.parent;
352
+ var parentVisibilityPlaneMask = parent ? parent._visibilityPlaneMask : _culling.CullingVolume.MASK_INDETERMINATE;
353
+ if (this.tileset._traverser.options.updateTransforms) {
354
+ var parentTransform = parent ? parent.computedTransform : this.tileset.modelMatrix;
355
+ this._updateTransform(parentTransform);
356
+ }
357
+ this._distanceToCamera = this.distanceToTile(frameState);
358
+ this._screenSpaceError = this.getScreenSpaceError(frameState, false);
359
+ this._visibilityPlaneMask = this.visibility(frameState, parentVisibilityPlaneMask);
360
+ this._visible = this._visibilityPlaneMask !== _culling.CullingVolume.MASK_OUTSIDE;
361
+ this._inRequestVolume = this.insideViewerRequestVolume(frameState);
362
+ this._frameNumber = frameState.frameNumber;
363
+ this.viewportIds = viewportIds;
364
+ }
365
+ }, {
366
+ key: "visibility",
367
+ value: function visibility(frameState, parentVisibilityPlaneMask) {
368
+ var cullingVolume = frameState.cullingVolume;
369
+ var boundingVolume = this.boundingVolume;
370
+ return cullingVolume.computeVisibilityWithPlaneMask(boundingVolume, parentVisibilityPlaneMask);
371
+ }
372
+ }, {
373
+ key: "contentVisibility",
374
+ value: function contentVisibility() {
375
+ return true;
376
+ }
377
+ }, {
378
+ key: "distanceToTile",
379
+ value: function distanceToTile(frameState) {
380
+ var boundingVolume = this.boundingVolume;
381
+ return Math.sqrt(Math.max(boundingVolume.distanceSquaredTo(frameState.camera.position), 0));
382
+ }
383
+ }, {
384
+ key: "cameraSpaceZDepth",
385
+ value: function cameraSpaceZDepth(_ref) {
386
+ var camera = _ref.camera;
387
+ var boundingVolume = this.boundingVolume;
388
+ scratchVector.subVectors(boundingVolume.center, camera.position);
389
+ return camera.direction.dot(scratchVector);
390
+ }
391
+ }, {
392
+ key: "insideViewerRequestVolume",
393
+ value: function insideViewerRequestVolume(frameState) {
394
+ var viewerRequestVolume = this._viewerRequestVolume;
395
+ return !viewerRequestVolume || viewerRequestVolume.distanceSquaredTo(frameState.camera.position) <= 0;
396
+ }
397
+ }, {
398
+ key: "updateExpiration",
399
+ value: function updateExpiration() {
400
+ if (defined(this._expireDate) && this.contentReady && !this.hasEmptyContent) {
401
+ var now = Date.now();
402
+ if (Date.lessThan(this._expireDate, now)) {
403
+ this.contentState = _constants.TILE_CONTENT_STATE.EXPIRED;
404
+ this._expiredContent = this.content;
405
+ }
406
+ }
407
+ }
408
+ }, {
409
+ key: "extras",
410
+ get: function get() {
411
+ return this.header.extras;
412
+ }
413
+ }, {
414
+ key: "_initializeLodMetric",
415
+ value: function _initializeLodMetric(header) {
416
+ if ('lodMetricType' in header) {
417
+ this.lodMetricType = header.lodMetricType;
418
+ } else {
419
+ this.lodMetricType = this.parent && this.parent.lodMetricType || this.tileset.lodMetricType;
420
+ console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType");
421
+ }
422
+ if ('lodMetricValue' in header) {
423
+ this.lodMetricValue = header.lodMetricValue;
424
+ } else {
425
+ this.lodMetricValue = this.parent && this.parent.lodMetricValue || this.tileset.lodMetricValue;
426
+ console.warn('3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue');
427
+ }
428
+ }
429
+ }, {
430
+ key: "_initializeTransforms",
431
+ value: function _initializeTransforms(tileHeader) {
432
+ this.transform = tileHeader.transform ? new _core.Matrix4(tileHeader.transform) : new _core.Matrix4();
433
+ var parent = this.parent;
434
+ var tileset = this.tileset;
435
+ var parentTransform = parent && parent.computedTransform ? parent.computedTransform.clone() : tileset.modelMatrix.clone();
436
+ this.computedTransform = new _core.Matrix4(parentTransform).multiplyRight(this.transform);
437
+ var parentInitialTransform = parent && parent._initialTransform ? parent._initialTransform.clone() : new _core.Matrix4();
438
+ this._initialTransform = new _core.Matrix4(parentInitialTransform).multiplyRight(this.transform);
439
+ }
440
+ }, {
441
+ key: "_initializeBoundingVolumes",
442
+ value: function _initializeBoundingVolumes(tileHeader) {
443
+ this._contentBoundingVolume = null;
444
+ this._viewerRequestVolume = null;
445
+ this._updateBoundingVolume(tileHeader);
446
+ }
447
+ }, {
448
+ key: "_initializeContent",
449
+ value: function _initializeContent(tileHeader) {
450
+ this.content = {
451
+ _tileset: this.tileset,
452
+ _tile: this
453
+ };
454
+ this.hasEmptyContent = true;
455
+ this.contentState = _constants.TILE_CONTENT_STATE.UNLOADED;
456
+ this.hasTilesetContent = false;
457
+ if (tileHeader.contentUrl) {
458
+ this.content = null;
459
+ this.hasEmptyContent = false;
460
+ }
461
+ }
462
+ }, {
463
+ key: "_initializeRenderingState",
464
+ value: function _initializeRenderingState(header) {
465
+ this.depth = header.level || (this.parent ? this.parent.depth + 1 : 0);
466
+ this._shouldRefine = false;
467
+ this._distanceToCamera = 0;
468
+ this._centerZDepth = 0;
469
+ this._screenSpaceError = 0;
470
+ this._visibilityPlaneMask = _culling.CullingVolume.MASK_INDETERMINATE;
471
+ this._visible = undefined;
472
+ this._inRequestVolume = false;
473
+ this._stackLength = 0;
474
+ this._selectionDepth = 0;
475
+ this._frameNumber = 0;
476
+ this._touchedFrame = 0;
477
+ this._visitedFrame = 0;
478
+ this._selectedFrame = 0;
479
+ this._requestedFrame = 0;
480
+ this._priority = 0.0;
481
+ }
482
+ }, {
483
+ key: "_getRefine",
484
+ value: function _getRefine(refine) {
485
+ return refine || this.parent && this.parent.refine || _constants.TILE_REFINEMENT.REPLACE;
486
+ }
487
+ }, {
488
+ key: "_isTileset",
489
+ value: function _isTileset() {
490
+ return this.contentUrl.indexOf('.json') !== -1;
491
+ }
492
+ }, {
493
+ key: "_onContentLoaded",
494
+ value: function _onContentLoaded() {
495
+ switch (this.content && this.content.type) {
496
+ case 'vctr':
497
+ case 'geom':
498
+ this.tileset._traverser.disableSkipLevelOfDetail = true;
499
+ break;
500
+ default:
501
+ }
502
+ if (this._isTileset()) {
503
+ this.hasTilesetContent = true;
504
+ }
505
+ }
506
+ }, {
507
+ key: "_updateBoundingVolume",
508
+ value: function _updateBoundingVolume(header) {
509
+ this.boundingVolume = (0, _boundingVolume.createBoundingVolume)(header.boundingVolume, this.computedTransform, this.boundingVolume);
510
+ var content = header.content;
511
+ if (!content) {
512
+ return;
513
+ }
514
+ if (content.boundingVolume) {
515
+ this._contentBoundingVolume = (0, _boundingVolume.createBoundingVolume)(content.boundingVolume, this.computedTransform, this._contentBoundingVolume);
516
+ }
517
+ if (header.viewerRequestVolume) {
518
+ this._viewerRequestVolume = (0, _boundingVolume.createBoundingVolume)(header.viewerRequestVolume, this.computedTransform, this._viewerRequestVolume);
519
+ }
520
+ }
521
+ }, {
522
+ key: "_updateTransform",
523
+ value: function _updateTransform() {
524
+ var parentTransform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _core.Matrix4();
525
+ var computedTransform = parentTransform.clone().multiplyRight(this.transform);
526
+ var didTransformChange = !computedTransform.equals(this.computedTransform);
527
+ if (!didTransformChange) {
528
+ return;
529
+ }
530
+ this.computedTransform = computedTransform;
531
+ this._updateBoundingVolume(this.header);
532
+ }
533
+ }, {
534
+ key: "_getLoaderSpecificOptions",
535
+ value: function _getLoaderSpecificOptions(loaderId) {
536
+ switch (loaderId) {
537
+ case 'i3s':
538
+ return _objectSpread(_objectSpread({}, this.tileset.options.i3s), {}, {
539
+ _tileOptions: {
540
+ attributeUrls: this.header.attributeUrls,
541
+ textureUrl: this.header.textureUrl,
542
+ textureFormat: this.header.textureFormat,
543
+ textureLoaderOptions: this.header.textureLoaderOptions,
544
+ materialDefinition: this.header.materialDefinition,
545
+ isDracoGeometry: this.header.isDracoGeometry,
546
+ mbs: this.header.mbs
547
+ },
548
+ _tilesetOptions: {
549
+ store: this.tileset.tileset.store,
550
+ attributeStorageInfo: this.tileset.tileset.attributeStorageInfo,
551
+ fields: this.tileset.tileset.fields
552
+ },
553
+ isTileHeader: false
554
+ });
555
+ case '3d-tiles':
556
+ case 'cesium-ion':
557
+ default:
558
+ return (0, _dTilesOptions.get3dTilesOptions)(this.tileset.tileset);
559
+ }
560
+ }
561
+ }]);
562
+ return Tile3D;
563
+ }();
564
+ exports.Tile3D = Tile3D;
565
+ //# sourceMappingURL=tile-3d.js.map