@loaders.gl/i3s 3.1.3 → 4.0.0-alpha.5

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 (112) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/dist.min.js +28 -25
  4. package/dist/i3s-attribute-loader.js +130 -155
  5. package/dist/i3s-attribute-loader.js.map +1 -0
  6. package/dist/i3s-building-scene-layer-loader.js +18 -23
  7. package/dist/i3s-building-scene-layer-loader.js.map +1 -0
  8. package/dist/i3s-content-loader.js +22 -25
  9. package/dist/i3s-content-loader.js.map +1 -0
  10. package/dist/i3s-content-worker.js +23 -21
  11. package/dist/i3s-loader.js +81 -84
  12. package/dist/i3s-loader.js.map +1 -0
  13. package/dist/i3s-node-page-loader.js +17 -21
  14. package/dist/i3s-node-page-loader.js.map +1 -0
  15. package/dist/index.js +6 -14
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/helpers/i3s-nodepages-tiles.js +228 -221
  18. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  19. package/dist/lib/parsers/constants.js +63 -85
  20. package/dist/lib/parsers/constants.js.map +1 -0
  21. package/dist/lib/parsers/parse-i3s-attribute.js +62 -86
  22. package/dist/lib/parsers/parse-i3s-attribute.js.map +1 -0
  23. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +40 -41
  24. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  25. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  26. package/dist/lib/parsers/parse-i3s-tile-content.js +458 -441
  27. package/dist/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  28. package/dist/lib/parsers/parse-i3s.js +88 -86
  29. package/dist/lib/parsers/parse-i3s.js.map +1 -0
  30. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +8 -19
  31. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  32. package/dist/lib/utils/url-utils.js +28 -41
  33. package/dist/lib/utils/url-utils.js.map +1 -0
  34. package/dist/types.d.ts +2 -3
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js +19 -18
  37. package/dist/types.js.map +1 -0
  38. package/dist/workers/i3s-content-worker.js +4 -5
  39. package/dist/workers/i3s-content-worker.js.map +1 -0
  40. package/package.json +12 -12
  41. package/src/i3s-building-scene-layer-loader.ts +1 -1
  42. package/src/i3s-content-loader.ts +1 -1
  43. package/src/lib/parsers/parse-i3s-tile-content.ts +4 -1
  44. package/src/types.ts +2 -3
  45. package/dist/es5/bundle.js +0 -7
  46. package/dist/es5/bundle.js.map +0 -1
  47. package/dist/es5/i3s-attribute-loader.js +0 -249
  48. package/dist/es5/i3s-attribute-loader.js.map +0 -1
  49. package/dist/es5/i3s-building-scene-layer-loader.js +0 -58
  50. package/dist/es5/i3s-building-scene-layer-loader.js.map +0 -1
  51. package/dist/es5/i3s-content-loader.js +0 -60
  52. package/dist/es5/i3s-content-loader.js.map +0 -1
  53. package/dist/es5/i3s-loader.js +0 -233
  54. package/dist/es5/i3s-loader.js.map +0 -1
  55. package/dist/es5/i3s-node-page-loader.js +0 -72
  56. package/dist/es5/i3s-node-page-loader.js.map +0 -1
  57. package/dist/es5/index.js +0 -52
  58. package/dist/es5/index.js.map +0 -1
  59. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +0 -393
  60. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  61. package/dist/es5/lib/parsers/constants.js +0 -89
  62. package/dist/es5/lib/parsers/constants.js.map +0 -1
  63. package/dist/es5/lib/parsers/parse-i3s-attribute.js +0 -124
  64. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +0 -1
  65. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +0 -86
  66. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  67. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +0 -635
  68. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  69. package/dist/es5/lib/parsers/parse-i3s.js +0 -155
  70. package/dist/es5/lib/parsers/parse-i3s.js.map +0 -1
  71. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +0 -24
  72. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  73. package/dist/es5/lib/utils/url-utils.js +0 -40
  74. package/dist/es5/lib/utils/url-utils.js.map +0 -1
  75. package/dist/es5/types.js +0 -29
  76. package/dist/es5/types.js.map +0 -1
  77. package/dist/es5/workers/i3s-content-worker.js +0 -8
  78. package/dist/es5/workers/i3s-content-worker.js.map +0 -1
  79. package/dist/esm/bundle.js +0 -5
  80. package/dist/esm/bundle.js.map +0 -1
  81. package/dist/esm/i3s-attribute-loader.js +0 -152
  82. package/dist/esm/i3s-attribute-loader.js.map +0 -1
  83. package/dist/esm/i3s-building-scene-layer-loader.js +0 -21
  84. package/dist/esm/i3s-building-scene-layer-loader.js.map +0 -1
  85. package/dist/esm/i3s-content-loader.js +0 -25
  86. package/dist/esm/i3s-content-loader.js.map +0 -1
  87. package/dist/esm/i3s-loader.js +0 -97
  88. package/dist/esm/i3s-loader.js.map +0 -1
  89. package/dist/esm/i3s-node-page-loader.js +0 -22
  90. package/dist/esm/i3s-node-page-loader.js.map +0 -1
  91. package/dist/esm/index.js +0 -6
  92. package/dist/esm/index.js.map +0 -1
  93. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +0 -239
  94. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  95. package/dist/esm/lib/parsers/constants.js +0 -67
  96. package/dist/esm/lib/parsers/constants.js.map +0 -1
  97. package/dist/esm/lib/parsers/parse-i3s-attribute.js +0 -74
  98. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +0 -1
  99. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +0 -45
  100. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  101. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +0 -494
  102. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  103. package/dist/esm/lib/parsers/parse-i3s.js +0 -91
  104. package/dist/esm/lib/parsers/parse-i3s.js.map +0 -1
  105. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js +0 -9
  106. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  107. package/dist/esm/lib/utils/url-utils.js +0 -31
  108. package/dist/esm/lib/utils/url-utils.js.map +0 -1
  109. package/dist/esm/types.js +0 -21
  110. package/dist/esm/types.js.map +0 -1
  111. package/dist/esm/workers/i3s-content-worker.js +0 -4
  112. package/dist/esm/workers/i3s-content-worker.js.map +0 -1
@@ -1,635 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.parseI3STileContent = parseI3STileContent;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
- var _core = require("@loaders.gl/core");
19
-
20
- var _core2 = require("@math.gl/core");
21
-
22
- var _geospatial = require("@math.gl/geospatial");
23
-
24
- var _images = require("@loaders.gl/images");
25
-
26
- var _draco = require("@loaders.gl/draco");
27
-
28
- var _textures = require("@loaders.gl/textures");
29
-
30
- var _types = require("../../types");
31
-
32
- var _urlUtils = require("../utils/url-utils");
33
-
34
- var _constants = require("./constants");
35
-
36
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
37
-
38
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
-
40
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
41
-
42
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
43
-
44
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
45
-
46
- var scratchVector = new _core2.Vector3([0, 0, 0]);
47
-
48
- function getLoaderForTextureFormat(textureFormat) {
49
- switch (textureFormat) {
50
- case 'ktx-etc2':
51
- case 'dds':
52
- return _textures.CompressedTextureLoader;
53
-
54
- case 'ktx2':
55
- return _textures.BasisLoader;
56
-
57
- case 'jpg':
58
- case 'png':
59
- default:
60
- return _images.ImageLoader;
61
- }
62
- }
63
-
64
- var I3S_ATTRIBUTE_TYPE = 'i3s-attribute-type';
65
-
66
- function parseI3STileContent(_x, _x2, _x3, _x4, _x5) {
67
- return _parseI3STileContent.apply(this, arguments);
68
- }
69
-
70
- function _parseI3STileContent() {
71
- _parseI3STileContent = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, tile, tileset, options, context) {
72
- var _options$i3s, url, loader, response, _arrayBuffer, _options, texture;
73
-
74
- return _regenerator.default.wrap(function _callee$(_context) {
75
- while (1) {
76
- switch (_context.prev = _context.next) {
77
- case 0:
78
- tile.content = tile.content || {};
79
- tile.content.featureIds = tile.content.featureIds || null;
80
- tile.content.attributes = {};
81
-
82
- if (!tile.textureUrl) {
83
- _context.next = 36;
84
- break;
85
- }
86
-
87
- url = (0, _urlUtils.getUrlWithToken)(tile.textureUrl, options === null || options === void 0 ? void 0 : (_options$i3s = options.i3s) === null || _options$i3s === void 0 ? void 0 : _options$i3s.token);
88
- loader = getLoaderForTextureFormat(tile.textureFormat);
89
- _context.next = 8;
90
- return fetch(url);
91
-
92
- case 8:
93
- response = _context.sent;
94
- _context.next = 11;
95
- return response.arrayBuffer();
96
-
97
- case 11:
98
- _arrayBuffer = _context.sent;
99
-
100
- if (!(options !== null && options !== void 0 && options.i3s.decodeTextures)) {
101
- _context.next = 35;
102
- break;
103
- }
104
-
105
- if (!(loader === _images.ImageLoader)) {
106
- _context.next = 28;
107
- break;
108
- }
109
-
110
- _options = _objectSpread(_objectSpread({}, tile.textureLoaderOptions), {}, {
111
- image: {
112
- type: 'data'
113
- }
114
- });
115
- _context.prev = 15;
116
- _context.next = 18;
117
- return context.parse(_arrayBuffer, _options);
118
-
119
- case 18:
120
- tile.content.texture = _context.sent;
121
- _context.next = 26;
122
- break;
123
-
124
- case 21:
125
- _context.prev = 21;
126
- _context.t0 = _context["catch"](15);
127
- _context.next = 25;
128
- return (0, _core.parse)(_arrayBuffer, loader, _options);
129
-
130
- case 25:
131
- tile.content.texture = _context.sent;
132
-
133
- case 26:
134
- _context.next = 33;
135
- break;
136
-
137
- case 28:
138
- if (!(loader === _textures.CompressedTextureLoader || loader === _textures.BasisLoader)) {
139
- _context.next = 33;
140
- break;
141
- }
142
-
143
- _context.next = 31;
144
- return (0, _core.load)(_arrayBuffer, loader, tile.textureLoaderOptions);
145
-
146
- case 31:
147
- texture = _context.sent;
148
- tile.content.texture = {
149
- compressed: true,
150
- mipmaps: false,
151
- width: texture[0].width,
152
- height: texture[0].height,
153
- data: texture
154
- };
155
-
156
- case 33:
157
- _context.next = 36;
158
- break;
159
-
160
- case 35:
161
- tile.content.texture = _arrayBuffer;
162
-
163
- case 36:
164
- tile.content.material = makePbrMaterial(tile.materialDefinition, tile.content.texture);
165
-
166
- if (tile.content.material) {
167
- tile.content.texture = null;
168
- }
169
-
170
- _context.next = 40;
171
- return parseI3SNodeGeometry(arrayBuffer, tile, tileset, options);
172
-
173
- case 40:
174
- return _context.abrupt("return", _context.sent);
175
-
176
- case 41:
177
- case "end":
178
- return _context.stop();
179
- }
180
- }
181
- }, _callee, null, [[15, 21]]);
182
- }));
183
- return _parseI3STileContent.apply(this, arguments);
184
- }
185
-
186
- function parseI3SNodeGeometry(_x6, _x7, _x8, _x9) {
187
- return _parseI3SNodeGeometry.apply(this, arguments);
188
- }
189
-
190
- function _parseI3SNodeGeometry() {
191
- _parseI3SNodeGeometry = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(arrayBuffer, tile, tileset, options) {
192
- var _options$i3s2;
193
-
194
- var content, attributes, vertexCount, byteOffset, featureCount, indices, _decompressedGeometry, decompressedGeometry, _decompressedGeometry2, POSITION, NORMAL, COLOR_0, TEXCOORD_0, featureIndex, uvRegion, featureIds, _tileset$store$defaul, vertexAttributes, attributesOrder, featureAttributes, featureAttributeOrder, headers, _normalizeAttributes, normalizedVertexAttributes, offset, _normalizeAttributes2, normalizedFeatureAttributes, enuMatrix, attributeIndex;
195
-
196
- return _regenerator.default.wrap(function _callee2$(_context2) {
197
- while (1) {
198
- switch (_context2.prev = _context2.next) {
199
- case 0:
200
- if (tile.content) {
201
- _context2.next = 2;
202
- break;
203
- }
204
-
205
- return _context2.abrupt("return", tile);
206
-
207
- case 2:
208
- content = tile.content;
209
- byteOffset = 0;
210
- featureCount = 0;
211
-
212
- if (!tile.isDracoGeometry) {
213
- _context2.next = 18;
214
- break;
215
- }
216
-
217
- _context2.next = 8;
218
- return (0, _core.parse)(arrayBuffer, _draco.DracoLoader, {
219
- draco: {
220
- attributeNameEntry: I3S_ATTRIBUTE_TYPE
221
- }
222
- });
223
-
224
- case 8:
225
- decompressedGeometry = _context2.sent;
226
- vertexCount = decompressedGeometry.header.vertexCount;
227
- indices = (_decompressedGeometry = decompressedGeometry.indices) === null || _decompressedGeometry === void 0 ? void 0 : _decompressedGeometry.value;
228
- _decompressedGeometry2 = decompressedGeometry.attributes, POSITION = _decompressedGeometry2.POSITION, NORMAL = _decompressedGeometry2.NORMAL, COLOR_0 = _decompressedGeometry2.COLOR_0, TEXCOORD_0 = _decompressedGeometry2.TEXCOORD_0, featureIndex = _decompressedGeometry2['feature-index'], uvRegion = _decompressedGeometry2['uv-region'];
229
- attributes = {
230
- position: POSITION,
231
- normal: NORMAL,
232
- color: COLOR_0,
233
- uv0: TEXCOORD_0,
234
- uvRegion: uvRegion,
235
- id: featureIndex
236
- };
237
- updateAttributesMetadata(attributes, decompressedGeometry);
238
- featureIds = getFeatureIdsFromFeatureIndexMetadata(featureIndex);
239
-
240
- if (featureIds) {
241
- flattenFeatureIdsByFeatureIndices(attributes, featureIds);
242
- }
243
-
244
- _context2.next = 27;
245
- break;
246
-
247
- case 18:
248
- _tileset$store$defaul = tileset.store.defaultGeometrySchema, vertexAttributes = _tileset$store$defaul.vertexAttributes, attributesOrder = _tileset$store$defaul.ordering, featureAttributes = _tileset$store$defaul.featureAttributes, featureAttributeOrder = _tileset$store$defaul.featureAttributeOrder;
249
- headers = parseHeaders(tileset, arrayBuffer);
250
- byteOffset = headers.byteOffset;
251
- vertexCount = headers.vertexCount;
252
- featureCount = headers.featureCount;
253
- _normalizeAttributes = normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCount, attributesOrder), normalizedVertexAttributes = _normalizeAttributes.attributes, offset = _normalizeAttributes.byteOffset;
254
- _normalizeAttributes2 = normalizeAttributes(arrayBuffer, offset, featureAttributes, featureCount, featureAttributeOrder), normalizedFeatureAttributes = _normalizeAttributes2.attributes;
255
- flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes);
256
- attributes = concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes);
257
-
258
- case 27:
259
- if (!(options !== null && options !== void 0 && (_options$i3s2 = options.i3s) !== null && _options$i3s2 !== void 0 && _options$i3s2.coordinateSystem) || options.i3s.coordinateSystem === _constants.COORDINATE_SYSTEM.METER_OFFSETS) {
260
- enuMatrix = parsePositions(attributes.position, tile);
261
- content.modelMatrix = enuMatrix.invert();
262
- content.coordinateSystem = _constants.COORDINATE_SYSTEM.METER_OFFSETS;
263
- } else {
264
- content.modelMatrix = getModelMatrix(attributes.position);
265
- content.coordinateSystem = _constants.COORDINATE_SYSTEM.LNGLAT_OFFSETS;
266
- }
267
-
268
- content.attributes = {
269
- positions: attributes.position,
270
- normals: attributes.normal,
271
- colors: normalizeAttribute(attributes.color),
272
- texCoords: attributes.uv0,
273
- uvRegions: normalizeAttribute(attributes.uvRegion)
274
- };
275
- content.indices = indices || null;
276
-
277
- if (attributes.id && attributes.id.value) {
278
- tile.content.featureIds = attributes.id.value;
279
- }
280
-
281
- for (attributeIndex in content.attributes) {
282
- if (!content.attributes[attributeIndex]) {
283
- delete content.attributes[attributeIndex];
284
- }
285
- }
286
-
287
- content.vertexCount = vertexCount;
288
- content.byteLength = arrayBuffer.byteLength;
289
- return _context2.abrupt("return", tile);
290
-
291
- case 35:
292
- case "end":
293
- return _context2.stop();
294
- }
295
- }
296
- }, _callee2);
297
- }));
298
- return _parseI3SNodeGeometry.apply(this, arguments);
299
- }
300
-
301
- function updateAttributesMetadata(attributes, decompressedGeometry) {
302
- for (var key in decompressedGeometry.loaderData.attributes) {
303
- var dracoAttribute = decompressedGeometry.loaderData.attributes[key];
304
-
305
- switch (dracoAttribute.name) {
306
- case 'POSITION':
307
- attributes.position.metadata = dracoAttribute.metadata;
308
- break;
309
-
310
- case 'feature-index':
311
- attributes.id.metadata = dracoAttribute.metadata;
312
- break;
313
-
314
- default:
315
- break;
316
- }
317
- }
318
- }
319
-
320
- function concatAttributes(normalizedVertexAttributes, normalizedFeatureAttributes) {
321
- return _objectSpread(_objectSpread({}, normalizedVertexAttributes), normalizedFeatureAttributes);
322
- }
323
-
324
- function normalizeAttribute(attribute) {
325
- if (!attribute) {
326
- return attribute;
327
- }
328
-
329
- attribute.normalized = true;
330
- return attribute;
331
- }
332
-
333
- function parseHeaders(tileset, arrayBuffer) {
334
- var byteOffset = 0;
335
- var vertexCount = 0;
336
- var featureCount = 0;
337
-
338
- var _iterator = _createForOfIteratorHelper(tileset.store.defaultGeometrySchema.header),
339
- _step;
340
-
341
- try {
342
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
343
- var _step$value = _step.value,
344
- property = _step$value.property,
345
- type = _step$value.type;
346
- var TypedArrayTypeHeader = (0, _constants.getConstructorForDataFormat)(type);
347
-
348
- switch (property) {
349
- case _types.HeaderAttributeProperty.vertexCount:
350
- vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
351
- byteOffset += (0, _constants.sizeOf)(type);
352
- break;
353
-
354
- case _types.HeaderAttributeProperty.featureCount:
355
- featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
356
- byteOffset += (0, _constants.sizeOf)(type);
357
- break;
358
-
359
- default:
360
- break;
361
- }
362
- }
363
- } catch (err) {
364
- _iterator.e(err);
365
- } finally {
366
- _iterator.f();
367
- }
368
-
369
- return {
370
- vertexCount: vertexCount,
371
- featureCount: featureCount,
372
- byteOffset: byteOffset
373
- };
374
- }
375
-
376
- function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCount, attributesOrder) {
377
- var attributes = {};
378
-
379
- var _iterator2 = _createForOfIteratorHelper(attributesOrder),
380
- _step2;
381
-
382
- try {
383
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
384
- var attribute = _step2.value;
385
-
386
- if (vertexAttributes[attribute]) {
387
- var _vertexAttributes$att = vertexAttributes[attribute],
388
- valueType = _vertexAttributes$att.valueType,
389
- valuesPerElement = _vertexAttributes$att.valuesPerElement;
390
- var count = vertexCount;
391
-
392
- if (byteOffset + count * valuesPerElement > arrayBuffer.byteLength) {
393
- break;
394
- }
395
-
396
- var buffer = arrayBuffer.slice(byteOffset);
397
- var value = void 0;
398
-
399
- if (valueType === 'UInt64') {
400
- value = parseUint64Values(buffer, count * valuesPerElement, (0, _constants.sizeOf)(valueType));
401
- } else {
402
- var TypedArrayType = (0, _constants.getConstructorForDataFormat)(valueType);
403
- value = new TypedArrayType(buffer, 0, count * valuesPerElement);
404
- }
405
-
406
- attributes[attribute] = {
407
- value: value,
408
- type: _constants.GL_TYPE_MAP[valueType],
409
- size: valuesPerElement
410
- };
411
-
412
- switch (attribute) {
413
- case 'color':
414
- attributes.color.normalized = true;
415
- break;
416
-
417
- case 'position':
418
- case 'region':
419
- case 'normal':
420
- default:
421
- }
422
-
423
- byteOffset = byteOffset + count * valuesPerElement * (0, _constants.sizeOf)(valueType);
424
- }
425
- }
426
- } catch (err) {
427
- _iterator2.e(err);
428
- } finally {
429
- _iterator2.f();
430
- }
431
-
432
- return {
433
- attributes: attributes,
434
- byteOffset: byteOffset
435
- };
436
- }
437
-
438
- function parseUint64Values(buffer, elementsCount, attributeSize) {
439
- var values = [];
440
- var dataView = new DataView(buffer);
441
- var offset = 0;
442
-
443
- for (var index = 0; index < elementsCount; index++) {
444
- var left = dataView.getUint32(offset, true);
445
- var right = dataView.getUint32(offset + 4, true);
446
- var value = left + Math.pow(2, 32) * right;
447
- values.push(value);
448
- offset += attributeSize;
449
- }
450
-
451
- return new Uint32Array(values);
452
- }
453
-
454
- function parsePositions(attribute, tile) {
455
- var mbs = tile.mbs;
456
- var value = attribute.value;
457
- var metadata = attribute.metadata;
458
- var enuMatrix = new _core2.Matrix4();
459
- var cartographicOrigin = new _core2.Vector3(mbs[0], mbs[1], mbs[2]);
460
- var cartesianOrigin = new _core2.Vector3();
461
-
462
- _geospatial.Ellipsoid.WGS84.cartographicToCartesian(cartographicOrigin, cartesianOrigin);
463
-
464
- _geospatial.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
465
-
466
- attribute.value = offsetsToCartesians(value, metadata, cartographicOrigin);
467
- return enuMatrix;
468
- }
469
-
470
- function offsetsToCartesians(vertices) {
471
- var metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
472
- var cartographicOrigin = arguments.length > 2 ? arguments[2] : undefined;
473
- var positions = new Float64Array(vertices.length);
474
- var scaleX = metadata['i3s-scale_x'] && metadata['i3s-scale_x'].double || 1;
475
- var scaleY = metadata['i3s-scale_y'] && metadata['i3s-scale_y'].double || 1;
476
-
477
- for (var i = 0; i < positions.length; i += 3) {
478
- positions[i] = vertices[i] * scaleX + cartographicOrigin.x;
479
- positions[i + 1] = vertices[i + 1] * scaleY + cartographicOrigin.y;
480
- positions[i + 2] = vertices[i + 2] + cartographicOrigin.z;
481
- }
482
-
483
- for (var _i = 0; _i < positions.length; _i += 3) {
484
- _geospatial.Ellipsoid.WGS84.cartographicToCartesian(positions.subarray(_i, _i + 3), scratchVector);
485
-
486
- positions[_i] = scratchVector.x;
487
- positions[_i + 1] = scratchVector.y;
488
- positions[_i + 2] = scratchVector.z;
489
- }
490
-
491
- return positions;
492
- }
493
-
494
- function getModelMatrix(positions) {
495
- var _metadata$i3sScale_x, _metadata$i3sScale_y;
496
-
497
- var metadata = positions.metadata;
498
- var scaleX = (metadata === null || metadata === void 0 ? void 0 : (_metadata$i3sScale_x = metadata['i3s-scale_x']) === null || _metadata$i3sScale_x === void 0 ? void 0 : _metadata$i3sScale_x.double) || 1;
499
- var scaleY = (metadata === null || metadata === void 0 ? void 0 : (_metadata$i3sScale_y = metadata['i3s-scale_y']) === null || _metadata$i3sScale_y === void 0 ? void 0 : _metadata$i3sScale_y.double) || 1;
500
- var modelMatrix = new _core2.Matrix4();
501
- modelMatrix[0] = scaleX;
502
- modelMatrix[5] = scaleY;
503
- return modelMatrix;
504
- }
505
-
506
- function makePbrMaterial(materialDefinition, texture) {
507
- var pbrMaterial;
508
-
509
- if (materialDefinition) {
510
- pbrMaterial = _objectSpread(_objectSpread({}, materialDefinition), {}, {
511
- pbrMetallicRoughness: materialDefinition.pbrMetallicRoughness ? _objectSpread({}, materialDefinition.pbrMetallicRoughness) : {
512
- baseColorFactor: [255, 255, 255, 255]
513
- }
514
- });
515
- } else {
516
- pbrMaterial = {
517
- pbrMetallicRoughness: {}
518
- };
519
-
520
- if (texture) {
521
- pbrMaterial.pbrMetallicRoughness.baseColorTexture = {
522
- texCoord: 0
523
- };
524
- } else {
525
- pbrMaterial.pbrMetallicRoughness.baseColorFactor = [255, 255, 255, 255];
526
- }
527
- }
528
-
529
- pbrMaterial.alphaCutoff = pbrMaterial.alphaCutoff || 0.25;
530
-
531
- if (pbrMaterial.alphaMode) {
532
- pbrMaterial.alphaMode = pbrMaterial.alphaMode.toUpperCase();
533
- }
534
-
535
- if (pbrMaterial.emissiveFactor) {
536
- pbrMaterial.emissiveFactor = convertColorFormat(pbrMaterial.emissiveFactor);
537
- }
538
-
539
- if (pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorFactor) {
540
- pbrMaterial.pbrMetallicRoughness.baseColorFactor = convertColorFormat(pbrMaterial.pbrMetallicRoughness.baseColorFactor);
541
- }
542
-
543
- if (texture) {
544
- setMaterialTexture(pbrMaterial, texture);
545
- }
546
-
547
- return pbrMaterial;
548
- }
549
-
550
- function convertColorFormat(colorFactor) {
551
- var normalizedColor = (0, _toConsumableArray2.default)(colorFactor);
552
-
553
- for (var index = 0; index < colorFactor.length; index++) {
554
- normalizedColor[index] = colorFactor[index] / 255;
555
- }
556
-
557
- return normalizedColor;
558
- }
559
-
560
- function setMaterialTexture(material, image) {
561
- var texture = {
562
- source: {
563
- image: image
564
- }
565
- };
566
-
567
- if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.baseColorTexture) {
568
- material.pbrMetallicRoughness.baseColorTexture = _objectSpread(_objectSpread({}, material.pbrMetallicRoughness.baseColorTexture), {}, {
569
- texture: texture
570
- });
571
- } else if (material.emissiveTexture) {
572
- material.emissiveTexture = _objectSpread(_objectSpread({}, material.emissiveTexture), {}, {
573
- texture: texture
574
- });
575
- } else if (material.pbrMetallicRoughness && material.pbrMetallicRoughness.metallicRoughnessTexture) {
576
- material.pbrMetallicRoughness.metallicRoughnessTexture = _objectSpread(_objectSpread({}, material.pbrMetallicRoughness.metallicRoughnessTexture), {}, {
577
- texture: texture
578
- });
579
- } else if (material.normalTexture) {
580
- material.normalTexture = _objectSpread(_objectSpread({}, material.normalTexture), {}, {
581
- texture: texture
582
- });
583
- } else if (material.occlusionTexture) {
584
- material.occlusionTexture = _objectSpread(_objectSpread({}, material.occlusionTexture), {}, {
585
- texture: texture
586
- });
587
- }
588
- }
589
-
590
- function flattenFeatureIdsByFaceRanges(normalizedFeatureAttributes) {
591
- var id = normalizedFeatureAttributes.id,
592
- faceRange = normalizedFeatureAttributes.faceRange;
593
-
594
- if (!id || !faceRange) {
595
- return;
596
- }
597
-
598
- var featureIds = id.value;
599
- var range = faceRange.value;
600
- var featureIdsLength = range[range.length - 1] + 1;
601
- var orderedFeatureIndices = new Uint32Array(featureIdsLength * 3);
602
- var featureIndex = 0;
603
- var startIndex = 0;
604
-
605
- for (var index = 1; index < range.length; index += 2) {
606
- var fillId = Number(featureIds[featureIndex]);
607
- var endValue = range[index];
608
- var prevValue = range[index - 1];
609
- var trianglesCount = endValue - prevValue + 1;
610
- var endIndex = startIndex + trianglesCount * 3;
611
- orderedFeatureIndices.fill(fillId, startIndex, endIndex);
612
- featureIndex++;
613
- startIndex = endIndex;
614
- }
615
-
616
- normalizedFeatureAttributes.id.value = orderedFeatureIndices;
617
- }
618
-
619
- function flattenFeatureIdsByFeatureIndices(attributes, featureIds) {
620
- var featureIndices = attributes.id.value;
621
- var result = new Float32Array(featureIndices.length);
622
-
623
- for (var index = 0; index < featureIndices.length; index++) {
624
- result[index] = featureIds[featureIndices[index]];
625
- }
626
-
627
- attributes.id.value = result;
628
- }
629
-
630
- function getFeatureIdsFromFeatureIndexMetadata(featureIndex) {
631
- var _featureIndex$metadat, _featureIndex$metadat2;
632
-
633
- return featureIndex === null || featureIndex === void 0 ? void 0 : (_featureIndex$metadat = featureIndex.metadata) === null || _featureIndex$metadat === void 0 ? void 0 : (_featureIndex$metadat2 = _featureIndex$metadat['i3s-feature-ids']) === null || _featureIndex$metadat2 === void 0 ? void 0 : _featureIndex$metadat2.intArray;
634
- }
635
- //# sourceMappingURL=parse-i3s-tile-content.js.map