@loaders.gl/i3s 3.2.0-alpha.1 → 3.2.0-alpha.4

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 (62) hide show
  1. package/dist/arcgis-webscene-loader.d.ts +7 -0
  2. package/dist/arcgis-webscene-loader.d.ts.map +1 -0
  3. package/dist/arcgis-webscene-loader.js +28 -0
  4. package/dist/dist.min.js +83 -7
  5. package/dist/es5/arcgis-webscene-loader.js +50 -0
  6. package/dist/es5/arcgis-webscene-loader.js.map +1 -0
  7. package/dist/es5/i3s-attribute-loader.js +1 -1
  8. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  9. package/dist/es5/i3s-content-loader.js +1 -1
  10. package/dist/es5/i3s-loader.js +1 -1
  11. package/dist/es5/i3s-node-page-loader.js +1 -1
  12. package/dist/es5/index.js +8 -0
  13. package/dist/es5/index.js.map +1 -1
  14. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +53 -59
  15. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +68 -0
  17. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  18. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +10 -9
  19. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  20. package/dist/es5/lib/parsers/parse-i3s.js +8 -12
  21. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  22. package/dist/es5/types.js.map +1 -1
  23. package/dist/esm/arcgis-webscene-loader.js +17 -0
  24. package/dist/esm/arcgis-webscene-loader.js.map +1 -0
  25. package/dist/esm/i3s-attribute-loader.js +1 -1
  26. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  27. package/dist/esm/i3s-content-loader.js +1 -1
  28. package/dist/esm/i3s-loader.js +1 -1
  29. package/dist/esm/i3s-node-page-loader.js +1 -1
  30. package/dist/esm/index.js +1 -0
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +12 -2
  33. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  34. package/dist/esm/lib/parsers/parse-arcgis-webscene.js +35 -0
  35. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  36. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +2 -1
  37. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  38. package/dist/esm/lib/parsers/parse-i3s.js +1 -1
  39. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  40. package/dist/esm/types.js.map +1 -1
  41. package/dist/i3s-content-worker.js +23 -13
  42. package/dist/index.d.ts +2 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +3 -1
  45. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -0
  46. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  47. package/dist/lib/helpers/i3s-nodepages-tiles.js +9 -3
  48. package/dist/lib/parsers/parse-arcgis-webscene.d.ts +7 -0
  49. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
  50. package/dist/lib/parsers/parse-arcgis-webscene.js +45 -0
  51. package/dist/lib/parsers/parse-i3s-tile-content.js +2 -1
  52. package/dist/lib/parsers/parse-i3s.js +1 -1
  53. package/dist/types.d.ts +272 -31
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +9 -9
  56. package/src/arcgis-webscene-loader.ts +31 -0
  57. package/src/index.ts +5 -1
  58. package/src/lib/helpers/i3s-nodepages-tiles.ts +11 -3
  59. package/src/lib/parsers/parse-arcgis-webscene.ts +51 -0
  60. package/src/lib/parsers/parse-i3s-tile-content.ts +2 -1
  61. package/src/lib/parsers/parse-i3s.ts +1 -1
  62. package/src/types.ts +284 -31
@@ -0,0 +1,7 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Loader for ArcGis WebScene
4
+ * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/
5
+ */
6
+ export declare const ArcGisWebSceneLoader: LoaderWithParser;
7
+ //# sourceMappingURL=arcgis-webscene-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-webscene-loader.d.ts","sourceRoot":"","sources":["../src/arcgis-webscene-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAS/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBASlC,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArcGisWebSceneLoader = void 0;
4
+ const parse_arcgis_webscene_1 = require("./lib/parsers/parse-arcgis-webscene");
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
8
+ /**
9
+ * Loader for ArcGis WebScene
10
+ * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/
11
+ */
12
+ exports.ArcGisWebSceneLoader = {
13
+ name: 'ArcGIS Web Scene Loader',
14
+ id: 'arcgis-web-scene',
15
+ module: 'i3s',
16
+ version: VERSION,
17
+ mimeTypes: ['application/json'],
18
+ parse,
19
+ extensions: ['json'],
20
+ options: {}
21
+ };
22
+ /**
23
+ * Parse ArcGis webscene
24
+ * @param data
25
+ */
26
+ async function parse(data) {
27
+ return (0, parse_arcgis_webscene_1.parseWebscene)(data);
28
+ }
package/dist/dist.min.js CHANGED
@@ -268,7 +268,7 @@
268
268
  this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
269
269
  }
270
270
  static isSupported() {
271
- return typeof Worker !== "undefined" && isBrowser2;
271
+ return typeof Worker !== "undefined" && isBrowser2 || typeof Worker2 !== void 0;
272
272
  }
273
273
  destroy() {
274
274
  this.onMessage = NOOP;
@@ -674,10 +674,12 @@
674
674
  const workerFarm = WorkerFarm.getWorkerFarm(options);
675
675
  const workerPool = workerFarm.getWorkerPool({ name, url });
676
676
  options = JSON.parse(JSON.stringify(options));
677
+ context = JSON.parse(JSON.stringify(context || {}));
677
678
  const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
678
679
  job.postMessage("process", {
679
680
  input: data,
680
- options
681
+ options,
682
+ context
681
683
  });
682
684
  const result = await job.result;
683
685
  return await result.result;
@@ -1021,7 +1023,7 @@
1021
1023
  text += ` ${await response.text()}`;
1022
1024
  }
1023
1025
  message += text;
1024
- message = message.length > 60 ? `${message.slice(60)}...` : message;
1026
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
1025
1027
  } catch (error) {
1026
1028
  }
1027
1029
  return message;
@@ -3024,6 +3026,12 @@
3024
3026
  }
3025
3027
  async function parseWithLoader(loader, data, options, context) {
3026
3028
  validateWorkerVersion(loader);
3029
+ if (isResponse(data)) {
3030
+ const response = data;
3031
+ const { ok, redirected, status, statusText, type, url } = response;
3032
+ const headers = Object.fromEntries(response.headers.entries());
3033
+ context.response = { headers, ok, redirected, status, statusText, type, url };
3034
+ }
3027
3035
  data = await getArrayBufferOrStringFromData(data, loader, options);
3028
3036
  if (loader.parseTextSync && typeof data === "string") {
3029
3037
  options.dataType = "text";
@@ -3046,6 +3054,7 @@
3046
3054
  init_src();
3047
3055
  init_src2();
3048
3056
  init_normalize_loader();
3057
+ init_is_type();
3049
3058
  init_option_utils();
3050
3059
  init_get_data();
3051
3060
  init_loader_context();
@@ -9594,6 +9603,7 @@
9594
9603
  return tile;
9595
9604
  }
9596
9605
  const content = tile.content;
9606
+ const contentByteLength = arrayBuffer.byteLength;
9597
9607
  let attributes;
9598
9608
  let vertexCount;
9599
9609
  let byteOffset = 0;
@@ -9669,7 +9679,7 @@
9669
9679
  }
9670
9680
  }
9671
9681
  content.vertexCount = vertexCount;
9672
- content.byteLength = arrayBuffer.byteLength;
9682
+ content.byteLength = contentByteLength;
9673
9683
  return tile;
9674
9684
  }
9675
9685
  function updateAttributesMetadata(attributes, decompressedGeometry) {
@@ -10492,6 +10502,7 @@
10492
10502
  this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
10493
10503
  this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
10494
10504
  this.options = options;
10505
+ this.nodesInNodePages = 0;
10495
10506
  this.initSelectedFormatsForTextureDefinitions(tileset);
10496
10507
  }
10497
10508
  async getNodeById(id) {
@@ -10503,6 +10514,7 @@
10503
10514
  promise: load(nodePageUrl, I3SNodePageLoader, this.options)
10504
10515
  };
10505
10516
  this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;
10517
+ this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
10506
10518
  this.pendingNodePages[pageIndex].status = "Done";
10507
10519
  }
10508
10520
  if (this.pendingNodePages[pageIndex].status === "Pending") {
@@ -10514,10 +10526,14 @@
10514
10526
  async formTileFromNodePages(id) {
10515
10527
  const node2 = await this.getNodeById(id);
10516
10528
  const children = [];
10529
+ const childNodesPromises = [];
10517
10530
  for (const child of node2.children || []) {
10518
- const childNode = await this.getNodeById(child);
10531
+ childNodesPromises.push(this.getNodeById(child));
10532
+ }
10533
+ const childNodes = await Promise.all(childNodesPromises);
10534
+ for (const childNode of childNodes) {
10519
10535
  children.push({
10520
- id: child.toString(),
10536
+ id: childNode.index.toString(),
10521
10537
  obb: childNode.obb
10522
10538
  });
10523
10539
  }
@@ -10702,7 +10718,7 @@
10702
10718
  tileset.url = context.url;
10703
10719
  if (tileset.nodePages) {
10704
10720
  tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);
10705
- tileset.root = await tileset.nodePagesTile.formTileFromNodePages(0);
10721
+ tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
10706
10722
  } else {
10707
10723
  const rootNodeUrl = getUrlWithToken(`${tileset.url}/nodes/root`, options.i3s?.token);
10708
10724
  tileset.root = await load(rootNodeUrl, tileset.loader, {
@@ -11058,9 +11074,68 @@
11058
11074
  }
11059
11075
  });
11060
11076
 
11077
+ // src/lib/parsers/parse-arcgis-webscene.ts
11078
+ async function parseWebscene(data) {
11079
+ const layer0 = JSON.parse(new TextDecoder().decode(data));
11080
+ const { operationalLayers } = layer0;
11081
+ return {
11082
+ header: layer0,
11083
+ layers: parseOperationalLayers(operationalLayers)
11084
+ };
11085
+ }
11086
+ function parseOperationalLayers(layersList) {
11087
+ let layers = [];
11088
+ for (let index = 0; index < layersList.length; index++) {
11089
+ const layer = layersList[index];
11090
+ if (SUPPORTED_LAYERS_TYPES.includes(layer.layerType)) {
11091
+ layers.push(layer);
11092
+ }
11093
+ if (layer.layers?.length) {
11094
+ layers = [...layers, ...parseOperationalLayers(layer.layers)];
11095
+ }
11096
+ }
11097
+ return layers;
11098
+ }
11099
+ var ARCGIS_SCENE_SERVER_LAYER_TYPE, BUILDING_SCENE_LAYER, INTEGRATED_MESH_LAYER, SUPPORTED_LAYERS_TYPES;
11100
+ var init_parse_arcgis_webscene = __esm({
11101
+ "src/lib/parsers/parse-arcgis-webscene.ts"() {
11102
+ ARCGIS_SCENE_SERVER_LAYER_TYPE = "ArcGISSceneServiceLayer";
11103
+ BUILDING_SCENE_LAYER = "BuildingSceneLayer";
11104
+ INTEGRATED_MESH_LAYER = "IntegratedMeshLayer";
11105
+ SUPPORTED_LAYERS_TYPES = [
11106
+ ARCGIS_SCENE_SERVER_LAYER_TYPE,
11107
+ INTEGRATED_MESH_LAYER,
11108
+ BUILDING_SCENE_LAYER
11109
+ ];
11110
+ }
11111
+ });
11112
+
11113
+ // src/arcgis-webscene-loader.ts
11114
+ async function parse7(data) {
11115
+ return parseWebscene(data);
11116
+ }
11117
+ var VERSION14, ArcGisWebSceneLoader;
11118
+ var init_arcgis_webscene_loader = __esm({
11119
+ "src/arcgis-webscene-loader.ts"() {
11120
+ init_parse_arcgis_webscene();
11121
+ VERSION14 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
11122
+ ArcGisWebSceneLoader = {
11123
+ name: "ArcGIS Web Scene Loader",
11124
+ id: "arcgis-web-scene",
11125
+ module: "i3s",
11126
+ version: VERSION14,
11127
+ mimeTypes: ["application/json"],
11128
+ parse: parse7,
11129
+ extensions: ["json"],
11130
+ options: {}
11131
+ };
11132
+ }
11133
+ });
11134
+
11061
11135
  // src/index.ts
11062
11136
  var src_exports = {};
11063
11137
  __export(src_exports, {
11138
+ ArcGisWebSceneLoader: () => ArcGisWebSceneLoader,
11064
11139
  COORDINATE_SYSTEM: () => COORDINATE_SYSTEM,
11065
11140
  I3SAttributeLoader: () => I3SAttributeLoader,
11066
11141
  I3SBuildingSceneLayerLoader: () => I3SBuildingSceneLayerLoader,
@@ -11074,6 +11149,7 @@
11074
11149
  init_i3s_content_loader();
11075
11150
  init_i3s_attribute_loader();
11076
11151
  init_i3s_building_scene_layer_loader();
11152
+ init_arcgis_webscene_loader();
11077
11153
  init_constants2();
11078
11154
  }
11079
11155
  });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ArcGisWebSceneLoader = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _parseArcgisWebscene = require("./lib/parsers/parse-arcgis-webscene");
15
+
16
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'beta';
17
+ var ArcGisWebSceneLoader = {
18
+ name: 'ArcGIS Web Scene Loader',
19
+ id: 'arcgis-web-scene',
20
+ module: 'i3s',
21
+ version: VERSION,
22
+ mimeTypes: ['application/json'],
23
+ parse: parse,
24
+ extensions: ['json'],
25
+ options: {}
26
+ };
27
+ exports.ArcGisWebSceneLoader = ArcGisWebSceneLoader;
28
+
29
+ function parse(_x) {
30
+ return _parse.apply(this, arguments);
31
+ }
32
+
33
+ function _parse() {
34
+ _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
35
+ return _regenerator.default.wrap(function _callee$(_context) {
36
+ while (1) {
37
+ switch (_context.prev = _context.next) {
38
+ case 0:
39
+ return _context.abrupt("return", (0, _parseArcgisWebscene.parseWebscene)(data));
40
+
41
+ case 1:
42
+ case "end":
43
+ return _context.stop();
44
+ }
45
+ }
46
+ }, _callee);
47
+ }));
48
+ return _parse.apply(this, arguments);
49
+ }
50
+ //# sourceMappingURL=arcgis-webscene-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/arcgis-webscene-loader.ts"],"names":["VERSION","ArcGisWebSceneLoader","name","id","module","version","mimeTypes","parse","extensions","options","data"],"mappings":";;;;;;;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAMO,IAAMC,oBAAsC,GAAG;AACpDC,EAAAA,IAAI,EAAE,yBAD8C;AAEpDC,EAAAA,EAAE,EAAE,kBAFgD;AAGpDC,EAAAA,MAAM,EAAE,KAH4C;AAIpDC,EAAAA,OAAO,EAAEL,OAJ2C;AAKpDM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALyC;AAMpDC,EAAAA,KAAK,EAALA,KANoD;AAOpDC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPwC;AAQpDC,EAAAA,OAAO,EAAE;AAR2C,CAA/C;;;SAeQF,K;;;;;qEAAf,iBAAqBG,IAArB;AAAA;AAAA;AAAA;AAAA;AAAA,6CACS,wCAAcA,IAAd,CADT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ArcGisWebSceneData} from './types';\n\nimport {parseWebscene} from './lib/parsers/parse-arcgis-webscene';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n/**\n * Loader for ArcGis WebScene\n * Spec - https://developers.arcgis.com/web-scene-specification/objects/webscene/\n */\nexport const ArcGisWebSceneLoader: LoaderWithParser = {\n name: 'ArcGIS Web Scene Loader',\n id: 'arcgis-web-scene',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\n/**\n * Parse ArcGis webscene\n * @param data\n */\nasync function parse(data: ArrayBuffer): Promise<ArcGisWebSceneData> {\n return parseWebscene(data);\n}\n"],"file":"arcgis-webscene-loader.js"}
@@ -24,7 +24,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
24
24
 
25
25
  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; }
26
26
 
27
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'latest';
27
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
28
28
  var EMPTY_VALUE = '';
29
29
  var REJECTED_STATUS = 'rejected';
30
30
  var I3SAttributeLoader = {
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
15
15
 
16
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'beta';
16
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'beta';
17
17
  var I3SBuildingSceneLayerLoader = {
18
18
  name: 'I3S Building Scene Layer',
19
19
  id: 'i3s-building-scene-layer',
@@ -13,7 +13,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
15
15
 
16
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'beta';
16
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'beta';
17
17
  var I3SContentLoader = {
18
18
  name: 'I3S Content (Indexed Scene Layers)',
19
19
  id: 'i3s-content',
@@ -21,7 +21,7 @@ var _parseI3s = require("./lib/parsers/parse-i3s");
21
21
 
22
22
  var _constants = require("./lib/parsers/constants");
23
23
 
24
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'latest';
24
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
25
25
  var TILESET_REGEX = /layers\/[0-9]+$/;
26
26
  var TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
27
27
  var SLPK_HEX = '504b0304';
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'latest';
14
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
15
15
 
16
16
  function parseNodePage(_x) {
17
17
  return _parseNodePage.apply(this, arguments);
package/dist/es5/index.js CHANGED
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "I3SBuildingSceneLayerLoader", {
33
33
  return _i3sBuildingSceneLayerLoader.I3SBuildingSceneLayerLoader;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "ArcGisWebSceneLoader", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _arcgisWebsceneLoader.ArcGisWebSceneLoader;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "COORDINATE_SYSTEM", {
37
43
  enumerable: true,
38
44
  get: function get() {
@@ -48,5 +54,7 @@ var _i3sAttributeLoader = require("./i3s-attribute-loader");
48
54
 
49
55
  var _i3sBuildingSceneLayerLoader = require("./i3s-building-scene-layer-loader");
50
56
 
57
+ var _arcgisWebsceneLoader = require("./arcgis-webscene-loader");
58
+
51
59
  var _constants = require("./lib/parsers/constants");
52
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAuBA","sourcesContent":["export {I3SLoader} from './i3s-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AA0BA","sourcesContent":["export {I3SLoader} from './i3s-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {ArcGisWebSceneLoader} from './arcgis-webscene-loader';\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition,\n TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}
@@ -49,11 +49,13 @@ var I3SNodePagesTiles = function () {
49
49
  (0, _defineProperty2.default)(this, "options", void 0);
50
50
  (0, _defineProperty2.default)(this, "lodSelectionMetricType", void 0);
51
51
  (0, _defineProperty2.default)(this, "textureDefinitionsSelectedFormats", []);
52
+ (0, _defineProperty2.default)(this, "nodesInNodePages", void 0);
52
53
  (0, _defineProperty2.default)(this, "textureLoaderOptions", {});
53
54
  this.tileset = _objectSpread({}, tileset);
54
55
  this.nodesPerPage = ((_tileset$nodePages = tileset.nodePages) === null || _tileset$nodePages === void 0 ? void 0 : _tileset$nodePages.nodesPerPage) || 64;
55
56
  this.lodSelectionMetricType = (_tileset$nodePages2 = tileset.nodePages) === null || _tileset$nodePages2 === void 0 ? void 0 : _tileset$nodePages2.lodSelectionMetricType;
56
57
  this.options = options;
58
+ this.nodesInNodePages = 0;
57
59
  this.initSelectedFormatsForTextureDefinitions(tileset);
58
60
  }
59
61
 
@@ -70,7 +72,7 @@ var I3SNodePagesTiles = function () {
70
72
  pageIndex = Math.floor(id / this.nodesPerPage);
71
73
 
72
74
  if (!(!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex])) {
73
- _context.next = 8;
75
+ _context.next = 9;
74
76
  break;
75
77
  }
76
78
 
@@ -84,25 +86,26 @@ var I3SNodePagesTiles = function () {
84
86
 
85
87
  case 6:
86
88
  this.nodePages[pageIndex] = _context.sent;
89
+ this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
87
90
  this.pendingNodePages[pageIndex].status = 'Done';
88
91
 
89
- case 8:
92
+ case 9:
90
93
  if (!(this.pendingNodePages[pageIndex].status === 'Pending')) {
91
- _context.next = 12;
94
+ _context.next = 13;
92
95
  break;
93
96
  }
94
97
 
95
- _context.next = 11;
98
+ _context.next = 12;
96
99
  return this.pendingNodePages[pageIndex].promise;
97
100
 
98
- case 11:
101
+ case 12:
99
102
  this.nodePages[pageIndex] = _context.sent;
100
103
 
101
- case 12:
104
+ case 13:
102
105
  nodeIndex = id % this.nodesPerPage;
103
106
  return _context.abrupt("return", this.nodePages[pageIndex].nodes[nodeIndex]);
104
107
 
105
- case 14:
108
+ case 15:
106
109
  case "end":
107
110
  return _context.stop();
108
111
  }
@@ -120,7 +123,7 @@ var I3SNodePagesTiles = function () {
120
123
  key: "formTileFromNodePages",
121
124
  value: function () {
122
125
  var _formTileFromNodePages = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(id) {
123
- var node, children, _iterator, _step, child, childNode, contentUrl, textureUrl, materialDefinition, textureFormat, attributeUrls, isDracoGeometry, _ref, url, isDracoGeometryResult, _this$getInformationF, textureData, nodeMaterialDefinition, lodSelection;
126
+ var node, children, childNodesPromises, _iterator, _step, child, childNodes, _iterator2, _step2, childNode, contentUrl, textureUrl, materialDefinition, textureFormat, attributeUrls, isDracoGeometry, _ref, url, isDracoGeometryResult, _this$getInformationF, textureData, nodeMaterialDefinition, lodSelection;
124
127
 
125
128
  return _regenerator.default.wrap(function _callee2$(_context2) {
126
129
  while (1) {
@@ -132,50 +135,41 @@ var I3SNodePagesTiles = function () {
132
135
  case 2:
133
136
  node = _context2.sent;
134
137
  children = [];
138
+ childNodesPromises = [];
135
139
  _iterator = _createForOfIteratorHelper(node.children || []);
136
- _context2.prev = 5;
137
-
138
- _iterator.s();
139
140
 
140
- case 7:
141
- if ((_step = _iterator.n()).done) {
142
- _context2.next = 15;
143
- break;
141
+ try {
142
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
143
+ child = _step.value;
144
+ childNodesPromises.push(this.getNodeById(child));
145
+ }
146
+ } catch (err) {
147
+ _iterator.e(err);
148
+ } finally {
149
+ _iterator.f();
144
150
  }
145
151
 
146
- child = _step.value;
147
- _context2.next = 11;
148
- return this.getNodeById(child);
152
+ _context2.next = 9;
153
+ return Promise.all(childNodesPromises);
149
154
 
150
- case 11:
151
- childNode = _context2.sent;
152
- children.push({
153
- id: child.toString(),
154
- obb: childNode.obb
155
- });
156
-
157
- case 13:
158
- _context2.next = 7;
159
- break;
155
+ case 9:
156
+ childNodes = _context2.sent;
157
+ _iterator2 = _createForOfIteratorHelper(childNodes);
160
158
 
161
- case 15:
162
- _context2.next = 20;
163
- break;
164
-
165
- case 17:
166
- _context2.prev = 17;
167
- _context2.t0 = _context2["catch"](5);
168
-
169
- _iterator.e(_context2.t0);
170
-
171
- case 20:
172
- _context2.prev = 20;
173
-
174
- _iterator.f();
175
-
176
- return _context2.finish(20);
159
+ try {
160
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
161
+ childNode = _step2.value;
162
+ children.push({
163
+ id: childNode.index.toString(),
164
+ obb: childNode.obb
165
+ });
166
+ }
167
+ } catch (err) {
168
+ _iterator2.e(err);
169
+ } finally {
170
+ _iterator2.f();
171
+ }
177
172
 
178
- case 23:
179
173
  textureFormat = 'jpg';
180
174
  attributeUrls = [];
181
175
  isDracoGeometry = false;
@@ -214,12 +208,12 @@ var I3SNodePagesTiles = function () {
214
208
  isDracoGeometry: isDracoGeometry
215
209
  }));
216
210
 
217
- case 29:
211
+ case 18:
218
212
  case "end":
219
213
  return _context2.stop();
220
214
  }
221
215
  }
222
- }, _callee2, this, [[5, 17, 20, 23]]);
216
+ }, _callee2, this);
223
217
  }));
224
218
 
225
219
  function formTileFromNodePages(_x2) {
@@ -310,21 +304,21 @@ var I3SNodePagesTiles = function () {
310
304
  var possibleI3sFormats = this.getSupportedTextureFormats();
311
305
  var textureSetDefinitions = tileset.textureSetDefinitions || [];
312
306
 
313
- var _iterator2 = _createForOfIteratorHelper(textureSetDefinitions),
314
- _step2;
307
+ var _iterator3 = _createForOfIteratorHelper(textureSetDefinitions),
308
+ _step3;
315
309
 
316
310
  try {
317
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
318
- var textureSetDefinition = _step2.value;
311
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
312
+ var textureSetDefinition = _step3.value;
319
313
  var formats = textureSetDefinition && textureSetDefinition.formats || [];
320
314
  var selectedFormat = null;
321
315
 
322
- var _iterator3 = _createForOfIteratorHelper(possibleI3sFormats),
323
- _step3;
316
+ var _iterator4 = _createForOfIteratorHelper(possibleI3sFormats),
317
+ _step4;
324
318
 
325
319
  try {
326
320
  var _loop = function _loop() {
327
- var i3sFormat = _step3.value;
321
+ var i3sFormat = _step4.value;
328
322
  var format = formats.find(function (value) {
329
323
  return value.format === i3sFormat;
330
324
  });
@@ -335,15 +329,15 @@ var I3SNodePagesTiles = function () {
335
329
  }
336
330
  };
337
331
 
338
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
332
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
339
333
  var _ret = _loop();
340
334
 
341
335
  if (_ret === "break") break;
342
336
  }
343
337
  } catch (err) {
344
- _iterator3.e(err);
338
+ _iterator4.e(err);
345
339
  } finally {
346
- _iterator3.f();
340
+ _iterator4.f();
347
341
  }
348
342
 
349
343
  if (selectedFormat && selectedFormat.format === 'ktx2') {
@@ -357,9 +351,9 @@ var I3SNodePagesTiles = function () {
357
351
  this.textureDefinitionsSelectedFormats.push(selectedFormat);
358
352
  }
359
353
  } catch (err) {
360
- _iterator2.e(err);
354
+ _iterator3.e(err);
361
355
  } finally {
362
- _iterator2.f();
356
+ _iterator3.f();
363
357
  }
364
358
  }
365
359
  }, {