@loaders.gl/i3s 3.3.0-alpha.4 → 3.3.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 (94) hide show
  1. package/dist/dist.min.js +984 -1291
  2. package/dist/es5/arcgis-webscene-loader.js +2 -8
  3. package/dist/es5/arcgis-webscene-loader.js.map +1 -1
  4. package/dist/es5/bundle.js +0 -1
  5. package/dist/es5/bundle.js.map +1 -1
  6. package/dist/es5/i3s-attribute-loader.js +19 -60
  7. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  8. package/dist/es5/i3s-building-scene-layer-loader.js +1 -10
  9. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  10. package/dist/es5/i3s-content-loader.js +1 -14
  11. package/dist/es5/i3s-content-loader.js.map +1 -1
  12. package/dist/es5/i3s-loader.js +7 -45
  13. package/dist/es5/i3s-loader.js.map +1 -1
  14. package/dist/es5/i3s-node-page-loader.js +1 -12
  15. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  16. package/dist/es5/index.js +12 -18
  17. package/dist/es5/index.js.map +1 -1
  18. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +18 -78
  19. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  20. package/dist/es5/lib/parsers/constants.js +2 -18
  21. package/dist/es5/lib/parsers/constants.js.map +1 -1
  22. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +128 -30
  23. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -1
  24. package/dist/es5/lib/parsers/parse-i3s-attribute.js +1 -23
  25. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -1
  26. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +8 -25
  27. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -1
  28. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +10 -124
  29. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  30. package/dist/es5/lib/parsers/parse-i3s.js +5 -36
  31. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  32. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +0 -7
  33. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
  34. package/dist/es5/lib/utils/customizeColors.js +4 -53
  35. package/dist/es5/lib/utils/customizeColors.js.map +1 -1
  36. package/dist/es5/lib/utils/url-utils.js +3 -8
  37. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  38. package/dist/es5/types.js +0 -3
  39. package/dist/es5/types.js.map +1 -1
  40. package/dist/es5/workers/i3s-content-nodejs-worker.js +0 -3
  41. package/dist/es5/workers/i3s-content-nodejs-worker.js.map +1 -1
  42. package/dist/es5/workers/i3s-content-worker.js +0 -2
  43. package/dist/es5/workers/i3s-content-worker.js.map +1 -1
  44. package/dist/esm/arcgis-webscene-loader.js +3 -1
  45. package/dist/esm/arcgis-webscene-loader.js.map +1 -1
  46. package/dist/esm/bundle.js +1 -1
  47. package/dist/esm/bundle.js.map +1 -1
  48. package/dist/esm/i3s-attribute-loader.js +8 -25
  49. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  50. package/dist/esm/i3s-building-scene-layer-loader.js +2 -3
  51. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  52. package/dist/esm/i3s-content-loader.js +2 -4
  53. package/dist/esm/i3s-content-loader.js.map +1 -1
  54. package/dist/esm/i3s-loader.js +4 -13
  55. package/dist/esm/i3s-loader.js.map +1 -1
  56. package/dist/esm/i3s-node-page-loader.js +1 -2
  57. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +2 -45
  60. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  61. package/dist/esm/lib/parsers/constants.js +1 -10
  62. package/dist/esm/lib/parsers/constants.js.map +1 -1
  63. package/dist/esm/lib/parsers/parse-arcgis-webscene.js +50 -11
  64. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -1
  65. package/dist/esm/lib/parsers/parse-i3s-attribute.js +1 -8
  66. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -1
  67. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +1 -4
  68. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -1
  69. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +23 -71
  70. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  71. package/dist/esm/lib/parsers/parse-i3s.js +15 -17
  72. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
  73. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
  74. package/dist/esm/lib/utils/customizeColors.js +24 -36
  75. package/dist/esm/lib/utils/customizeColors.js.map +1 -1
  76. package/dist/esm/lib/utils/url-utils.js +5 -5
  77. package/dist/esm/lib/utils/url-utils.js.map +1 -1
  78. package/dist/esm/types.js +0 -3
  79. package/dist/esm/types.js.map +1 -1
  80. package/dist/esm/workers/i3s-content-nodejs-worker.js.map +1 -1
  81. package/dist/esm/workers/i3s-content-worker.js.map +1 -1
  82. package/dist/i3s-content-nodejs-worker.js +61 -60
  83. package/dist/i3s-content-nodejs-worker.js.map +3 -3
  84. package/dist/i3s-content-worker.js +490 -1020
  85. package/dist/index.d.ts +1 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -1
  88. package/dist/lib/parsers/parse-arcgis-webscene.js +49 -7
  89. package/dist/types.d.ts +2 -1
  90. package/dist/types.d.ts.map +1 -1
  91. package/package.json +8 -8
  92. package/src/index.ts +6 -1
  93. package/src/lib/parsers/parse-arcgis-webscene.ts +57 -7
  94. package/src/types.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-building-scene-layer-loader.ts"],"names":["parseBuildingSceneLayer","VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"mappings":"AAGA,SAAQA,uBAAR,QAAsC,8CAAtC;AAKA,MAAMC,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIA,OAAO,MAAMC,2BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,0BADqD;AAE3DC,EAAAA,EAAE,EAAE,0BAFuD;AAG3DC,EAAAA,MAAM,EAAE,KAHmD;AAI3DC,EAAAA,OAAO,EAAEL,OAJkD;AAK3DM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALgD;AAM3DC,EAAAA,KAN2D;AAO3DC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP+C;AAQ3DC,EAAAA,OAAO,EAAE;AARkD,CAAtD;;AAWP,eAAeF,KAAf,CACEG,IADF,EAEED,OAFF,EAGEE,OAHF,EAIsC;AACpC,MAAI,EAACA,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEC,GAAV,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,CAAU,qBAAV,CAAN;AACD;;AAED,SAAOd,uBAAuB,CAACW,IAAD,EAAOC,OAAO,CAACC,GAAf,CAA9B;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"file":"i3s-building-scene-layer-loader.js"}
1
+ {"version":3,"file":"i3s-building-scene-layer-loader.js","names":["parseBuildingSceneLayer","VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"sources":["../../src/i3s-building-scene-layer-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"mappings":"AAGA,SAAQA,uBAAuB,QAAO,8CAA8C;;AAKpF,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM;AAIzE,OAAO,MAAMC,2BAA6C,GAAG;EAC3DC,IAAI,EAAE,0BAA0B;EAChCC,EAAE,EAAE,0BAA0B;EAC9BC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,KAAK;EACLC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,eAAeF,KAAK,CAClBG,IAAiB,EACjBD,OAAuB,EACvBE,OAAuB,EACa;EACpC,IAAI,EAACA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,GAAG,GAAE;IACjB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;EACxC;EAEA,OAAOd,uBAAuB,CAACW,IAAI,EAAEC,OAAO,CAACC,GAAG,CAAC;AACnD"}
@@ -1,6 +1,7 @@
1
1
  import { isBrowser } from '@loaders.gl/worker-utils';
2
2
  import { parseI3STileContent } from './lib/parsers/parse-i3s-tile-content';
3
- const VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'beta';
3
+
4
+ const VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'beta';
4
5
  export const I3SContentLoader = {
5
6
  name: 'I3S Content (Indexed Scene Layers)',
6
7
  id: isBrowser ? 'i3s-content' : 'i3s-content-nodejs',
@@ -14,7 +15,6 @@ export const I3SContentLoader = {
14
15
  'i3s-content': {}
15
16
  }
16
17
  };
17
-
18
18
  async function parse(data, options, context) {
19
19
  const {
20
20
  tile,
@@ -24,11 +24,9 @@ async function parse(data, options, context) {
24
24
  } = (options === null || options === void 0 ? void 0 : options.i3s) || {};
25
25
  const tileOptions = _tileOptions || tile;
26
26
  const tilesetOptions = _tilesetOptions || tileset;
27
-
28
27
  if (!tileOptions || !tilesetOptions) {
29
28
  return null;
30
29
  }
31
-
32
30
  return await parseI3STileContent(data, tileOptions, tilesetOptions, options, context);
33
31
  }
34
32
  //# sourceMappingURL=i3s-content-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-content-loader.ts"],"names":["isBrowser","parseI3STileContent","VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","tile","_tileOptions","tileset","_tilesetOptions","i3s","tileOptions","tilesetOptions"],"mappings":"AAAA,SAAQA,SAAR,QAAwB,0BAAxB;AAGA,SAAQC,mBAAR,QAAkC,sCAAlC;AAMA,MAAMC,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIA,OAAO,MAAMC,gBAAkC,GAAG;AAChDC,EAAAA,IAAI,EAAE,oCAD0C;AAEhDC,EAAAA,EAAE,EAAEL,SAAS,GAAG,aAAH,GAAmB,oBAFgB;AAGhDM,EAAAA,MAAM,EAAE,KAHwC;AAIhDC,EAAAA,MAAM,EAAE,IAJwC;AAKhDC,EAAAA,OAAO,EAAEN,OALuC;AAMhDO,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANqC;AAOhDC,EAAAA,KAPgD;AAQhDC,EAAAA,UAAU,EAAE,CAAC,KAAD,CARoC;AAShDC,EAAAA,OAAO,EAAE;AACP,mBAAe;AADR;AATuC,CAA3C;;AAcP,eAAeF,KAAf,CAAqBG,IAArB,EAA2BD,OAA3B,EAAuDE,OAAvD,EAAgF;AAC9E,QAAM;AAACC,IAAAA,IAAD;AAAOC,IAAAA,YAAP;AAAqBC,IAAAA,OAArB;AAA8BC,IAAAA;AAA9B,MAAiD,CAAAN,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEO,GAAT,KAAgB,EAAvE;AACA,QAAMC,WAAW,GAAGJ,YAAY,IAAID,IAApC;AACA,QAAMM,cAAc,GAAGH,eAAe,IAAID,OAA1C;;AACA,MAAI,CAACG,WAAD,IAAgB,CAACC,cAArB,EAAqC;AACnC,WAAO,IAAP;AACD;;AACD,SAAO,MAAMpB,mBAAmB,CAC9BY,IAD8B,EAE9BO,WAF8B,EAG9BC,cAH8B,EAI9BT,OAJ8B,EAK9BE,OAL8B,CAAhC;AAOD","sourcesContent":["import {isBrowser} from '@loaders.gl/worker-utils';\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {I3SLoaderOptions} from './i3s-loader';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\nimport {I3STileOptions, I3STilesetOptions} from './types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: isBrowser ? 'i3s-content' : 'i3s-content-nodejs',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: I3SLoaderOptions, context?: LoaderContext) {\n const {tile, _tileOptions, tileset, _tilesetOptions} = options?.i3s || {};\n const tileOptions = _tileOptions || tile;\n const tilesetOptions = _tilesetOptions || tileset;\n if (!tileOptions || !tilesetOptions) {\n return null;\n }\n return await parseI3STileContent(\n data,\n tileOptions as I3STileOptions,\n tilesetOptions as I3STilesetOptions,\n options,\n context\n );\n}\n"],"file":"i3s-content-loader.js"}
1
+ {"version":3,"file":"i3s-content-loader.js","names":["isBrowser","parseI3STileContent","VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","tile","_tileOptions","tileset","_tilesetOptions","i3s","tileOptions","tilesetOptions"],"sources":["../../src/i3s-content-loader.ts"],"sourcesContent":["import {isBrowser} from '@loaders.gl/worker-utils';\nimport type {LoaderWithParser, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {I3SLoaderOptions} from './i3s-loader';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\nimport {I3STileOptions, I3STilesetOptions} from './types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: isBrowser ? 'i3s-content' : 'i3s-content-nodejs',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: I3SLoaderOptions, context?: LoaderContext) {\n const {tile, _tileOptions, tileset, _tilesetOptions} = options?.i3s || {};\n const tileOptions = _tileOptions || tile;\n const tilesetOptions = _tilesetOptions || tileset;\n if (!tileOptions || !tilesetOptions) {\n return null;\n }\n return await parseI3STileContent(\n data,\n tileOptions as I3STileOptions,\n tilesetOptions as I3STilesetOptions,\n options,\n context\n );\n}\n"],"mappings":"AAAA,SAAQA,SAAS,QAAO,0BAA0B;AAGlD,SAAQC,mBAAmB,QAAO,sCAAsC;;AAMxE,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,MAAM;AAIzE,OAAO,MAAMC,gBAAkC,GAAG;EAChDC,IAAI,EAAE,oCAAoC;EAC1CC,EAAE,EAAEL,SAAS,GAAG,aAAa,GAAG,oBAAoB;EACpDM,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAEN,OAAO;EAChBO,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK;EACLC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,OAAO,EAAE;IACP,aAAa,EAAE,CAAC;EAClB;AACF,CAAC;AAED,eAAeF,KAAK,CAACG,IAAI,EAAED,OAA0B,EAAEE,OAAuB,EAAE;EAC9E,MAAM;IAACC,IAAI;IAAEC,YAAY;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAG,CAAAN,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,GAAG,KAAI,CAAC,CAAC;EACzE,MAAMC,WAAW,GAAGJ,YAAY,IAAID,IAAI;EACxC,MAAMM,cAAc,GAAGH,eAAe,IAAID,OAAO;EACjD,IAAI,CAACG,WAAW,IAAI,CAACC,cAAc,EAAE;IACnC,OAAO,IAAI;EACb;EACA,OAAO,MAAMpB,mBAAmB,CAC9BY,IAAI,EACJO,WAAW,EACXC,cAAc,EACdT,OAAO,EACPE,OAAO,CACR;AACH"}
@@ -2,7 +2,7 @@ import { parse } from '@loaders.gl/core';
2
2
  import { I3SContentLoader } from './i3s-content-loader';
3
3
  import { normalizeTileData, normalizeTilesetData } from './lib/parsers/parse-i3s';
4
4
  import { COORDINATE_SYSTEM } from './lib/parsers/constants';
5
- const VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'latest';
5
+ const VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
6
6
  const TILESET_REGEX = /layers\/[0-9]+$/;
7
7
  const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
8
8
  const SLPK_HEX = '504b0304';
@@ -31,8 +31,9 @@ export const I3SLoader = {
31
31
  }
32
32
  }
33
33
  };
34
-
35
- async function parseI3S(data, options = {}, context) {
34
+ async function parseI3S(data) {
35
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
+ let context = arguments.length > 2 ? arguments[2] : undefined;
36
37
  const url = context.url;
37
38
  options.i3s = options.i3s || {};
38
39
  const magicNumber = getMagicNumber(data);
@@ -42,21 +43,17 @@ async function parseI3S(data, options = {}, context) {
42
43
  }
43
44
 
44
45
  let isTileset;
45
-
46
46
  if (options.i3s.isTileset === 'auto') {
47
47
  isTileset = TILESET_REGEX.test(url);
48
48
  } else {
49
49
  isTileset = options.i3s.isTileset;
50
50
  }
51
-
52
51
  let isTileHeader;
53
-
54
52
  if (options.isTileHeader === 'auto') {
55
53
  isTileHeader = TILE_HEADER_REGEX.test(url);
56
54
  } else {
57
55
  isTileHeader = options.i3s.isTileHeader;
58
56
  }
59
-
60
57
  if (isTileset) {
61
58
  data = await parseTileset(data, options, context);
62
59
  } else if (isTileHeader) {
@@ -64,31 +61,25 @@ async function parseI3S(data, options = {}, context) {
64
61
  } else {
65
62
  data = await parseTileContent(data, options);
66
63
  }
67
-
68
64
  return data;
69
65
  }
70
-
71
66
  async function parseTileContent(arrayBuffer, options) {
72
67
  return await parse(arrayBuffer, I3SContentLoader, options);
73
68
  }
74
-
75
69
  async function parseTileset(data, options, context) {
76
70
  const tilesetJson = JSON.parse(new TextDecoder().decode(data));
77
71
  tilesetJson.loader = I3SLoader;
78
72
  await normalizeTilesetData(tilesetJson, options, context);
79
73
  return tilesetJson;
80
74
  }
81
-
82
75
  async function parseTile(data, context) {
83
76
  data = JSON.parse(new TextDecoder().decode(data));
84
77
  return normalizeTileData(data, context);
85
78
  }
86
-
87
79
  function getMagicNumber(data) {
88
80
  if (data instanceof ArrayBuffer) {
89
81
  return [...new Uint8Array(data, 0, 4)].map(value => value.toString(16).padStart(2, '0')).join('');
90
82
  }
91
-
92
83
  return null;
93
84
  }
94
85
  //# sourceMappingURL=i3s-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-loader.ts"],"names":["parse","I3SContentLoader","normalizeTileData","normalizeTilesetData","COORDINATE_SYSTEM","VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parseI3S","extensions","options","i3s","token","isTileset","isTileHeader","tile","tileset","_tileOptions","_tilesetOptions","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","METER_OFFSETS","colorsByAttribute","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","parseTileContent","arrayBuffer","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\nimport {I3SParseOptions} from './types';\nimport {LoaderOptions} from './../../loader-utils/src/types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\nexport type I3SLoaderOptions = LoaderOptions & {\n i3s?: I3SParseOptions;\n};\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n _tileOptions: null,\n _tilesetOptions: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n colorsByAttribute: null\n }\n }\n};\n\nasync function parseI3S(data, options: I3SLoaderOptions = {}, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, context);\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options: I3SLoaderOptions) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options: I3SLoaderOptions, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
1
+ {"version":3,"file":"i3s-loader.js","names":["parse","I3SContentLoader","normalizeTileData","normalizeTilesetData","COORDINATE_SYSTEM","VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parseI3S","extensions","options","i3s","token","isTileset","isTileHeader","tile","tileset","_tileOptions","_tilesetOptions","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","METER_OFFSETS","colorsByAttribute","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","parseTileContent","arrayBuffer","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"sources":["../../src/i3s-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\nimport {I3SParseOptions} from './types';\nimport {LoaderOptions} from './../../loader-utils/src/types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\nexport type I3SLoaderOptions = LoaderOptions & {\n i3s?: I3SParseOptions;\n};\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n _tileOptions: null,\n _tilesetOptions: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n colorsByAttribute: null\n }\n }\n};\n\nasync function parseI3S(data, options: I3SLoaderOptions = {}, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, context);\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options: I3SLoaderOptions) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options: I3SLoaderOptions, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'latest';
2
1
 
2
+ const VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
3
3
  async function parseNodePage(data) {
4
4
  return JSON.parse(new TextDecoder().decode(data));
5
5
  }
@@ -14,7 +14,6 @@ export const I3SNodePageLoader = {
14
14
  extensions: ['json'],
15
15
  options: {}
16
16
  };
17
-
18
17
  async function parse(data) {
19
18
  data = parseNodePage(data);
20
19
  return data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;;AAEA,eAAeC,aAAf,CAA6BC,IAA7B,EAAmC;AACjC,SAAOC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CAAP;AACD;;AAKD,OAAO,MAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;AAWP,eAAeV,KAAf,CAAqBF,IAArB,EAA2B;AACzBA,EAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AACA,SAAOA,IAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"file":"i3s-node-page-loader.js"}
1
+ {"version":3,"file":"i3s-node-page-loader.js","names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"sources":["../../src/i3s-node-page-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"mappings":";AAIA,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAE3E,eAAeC,aAAa,CAACC,IAAI,EAAE;EACjC,OAAOC,IAAI,CAACC,KAAK,CAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACJ,IAAI,CAAC,CAAC;AACnD;;AAKA,OAAO,MAAMK,iBAAmC,GAAG;EACjDC,IAAI,EAAE,eAAe;EACrBC,EAAE,EAAE,eAAe;EACnBC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEX,OAAO;EAChBY,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BR,KAAK;EACLS,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,eAAeV,KAAK,CAACF,IAAI,EAAE;EACzBA,IAAI,GAAGD,aAAa,CAACC,IAAI,CAAC;EAC1B,OAAOA,IAAI;AACb"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["I3SLoader","I3SContentLoader","I3SAttributeLoader","loadFeatureAttributes","I3SBuildingSceneLayerLoader","ArcGisWebSceneLoader","COORDINATE_SYSTEM"],"mappings":"AAAA,SAAQA,SAAR,QAAwB,cAAxB;AACA,SAAQC,gBAAR,QAA+B,sBAA/B;AACA,SAAQC,kBAAR,EAA4BC,qBAA5B,QAAwD,wBAAxD;AACA,SAAQC,2BAAR,QAA0C,mCAA1C;AACA,SAAQC,oBAAR,QAAmC,0BAAnC;AA4BA,SAAQC,iBAAR,QAAgC,yBAAhC","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 StatisticsInfo,\n StatsInfo\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["I3SLoader","I3SContentLoader","I3SAttributeLoader","loadFeatureAttributes","I3SBuildingSceneLayerLoader","ArcGisWebSceneLoader","COORDINATE_SYSTEM"],"sources":["../../src/index.ts"],"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 StatisticsInfo,\n StatsInfo,\n Histogram,\n ValueCount,\n BuildingSceneSublayer,\n DATA_TYPE,\n OperationalLayer\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"mappings":"AAAA,SAAQA,SAAS,QAAO,cAAc;AACtC,SAAQC,gBAAgB,QAAO,sBAAsB;AACrD,SAAQC,kBAAkB,EAAEC,qBAAqB,QAAO,wBAAwB;AAChF,SAAQC,2BAA2B,QAAO,mCAAmC;AAC7E,SAAQC,oBAAoB,QAAO,0BAA0B;AAiC7D,SAAQC,iBAAiB,QAAO,yBAAyB"}
@@ -7,26 +7,17 @@ import { getUrlWithToken, generateTilesetAttributeUrls } from '../utils/url-util
7
7
  export default class I3SNodePagesTiles {
8
8
  constructor(tileset, options) {
9
9
  var _tileset$nodePages, _tileset$nodePages2;
10
-
11
10
  _defineProperty(this, "tileset", void 0);
12
-
13
11
  _defineProperty(this, "nodePages", []);
14
-
15
12
  _defineProperty(this, "pendingNodePages", []);
16
-
17
13
  _defineProperty(this, "nodesPerPage", void 0);
18
-
19
14
  _defineProperty(this, "options", void 0);
20
-
21
15
  _defineProperty(this, "lodSelectionMetricType", void 0);
22
-
23
16
  _defineProperty(this, "textureDefinitionsSelectedFormats", []);
24
-
25
17
  _defineProperty(this, "nodesInNodePages", void 0);
26
-
27
18
  _defineProperty(this, "textureLoaderOptions", {});
28
-
29
- this.tileset = { ...tileset
19
+ this.tileset = {
20
+ ...tileset
30
21
  };
31
22
  this.nodesPerPage = ((_tileset$nodePages = tileset.nodePages) === null || _tileset$nodePages === void 0 ? void 0 : _tileset$nodePages.nodesPerPage) || 64;
32
23
  this.lodSelectionMetricType = (_tileset$nodePages2 = tileset.nodePages) === null || _tileset$nodePages2 === void 0 ? void 0 : _tileset$nodePages2.lodSelectionMetricType;
@@ -37,10 +28,8 @@ export default class I3SNodePagesTiles {
37
28
 
38
29
  async getNodeById(id) {
39
30
  const pageIndex = Math.floor(id / this.nodesPerPage);
40
-
41
31
  if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
42
32
  var _this$options$i3s;
43
-
44
33
  const nodePageUrl = getUrlWithToken("".concat(this.tileset.url, "/nodepages/").concat(pageIndex), (_this$options$i3s = this.options.i3s) === null || _this$options$i3s === void 0 ? void 0 : _this$options$i3s.token);
45
34
  this.pendingNodePages[pageIndex] = {
46
35
  status: 'Pending',
@@ -50,11 +39,9 @@ export default class I3SNodePagesTiles {
50
39
  this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;
51
40
  this.pendingNodePages[pageIndex].status = 'Done';
52
41
  }
53
-
54
42
  if (this.pendingNodePages[pageIndex].status === 'Pending') {
55
43
  this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;
56
44
  }
57
-
58
45
  const nodeIndex = id % this.nodesPerPage;
59
46
  return this.nodePages[pageIndex].nodes[nodeIndex];
60
47
  }
@@ -63,27 +50,22 @@ export default class I3SNodePagesTiles {
63
50
  const node = await this.getNodeById(id);
64
51
  const children = [];
65
52
  const childNodesPromises = [];
66
-
67
53
  for (const child of node.children || []) {
68
54
  childNodesPromises.push(this.getNodeById(child));
69
55
  }
70
-
71
56
  const childNodes = await Promise.all(childNodesPromises);
72
-
73
57
  for (const childNode of childNodes) {
74
58
  children.push({
75
59
  id: childNode.index.toString(),
76
60
  obb: childNode.obb
77
61
  });
78
62
  }
79
-
80
63
  let contentUrl;
81
64
  let textureUrl;
82
65
  let materialDefinition;
83
66
  let textureFormat = 'jpg';
84
67
  let attributeUrls = [];
85
68
  let isDracoGeometry = false;
86
-
87
69
  if (node && node.mesh) {
88
70
  const {
89
71
  url,
@@ -99,16 +81,13 @@ export default class I3SNodePagesTiles {
99
81
  } = this.getInformationFromMaterial(node.mesh.material);
100
82
  materialDefinition = nodeMaterialDefinition;
101
83
  textureFormat = textureData.format || textureFormat;
102
-
103
84
  if (textureData.name) {
104
85
  textureUrl = "".concat(this.tileset.url, "/nodes/").concat(node.mesh.material.resource, "/textures/").concat(textureData.name);
105
86
  }
106
-
107
87
  if (this.tileset.attributeStorageInfo) {
108
88
  attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);
109
89
  }
110
90
  }
111
-
112
91
  const lodSelection = this.getLodSelection(node);
113
92
  return normalizeTileNonUrlData({
114
93
  id: id.toString(),
@@ -129,15 +108,12 @@ export default class I3SNodePagesTiles {
129
108
  let result = null;
130
109
  const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];
131
110
  let geometryIndex = -1;
132
-
133
111
  if (this.options.i3s && this.options.i3s.useDracoGeometry) {
134
112
  geometryIndex = geometryDefinition.geometryBuffers.findIndex(buffer => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco');
135
113
  }
136
-
137
114
  if (geometryIndex === -1) {
138
115
  geometryIndex = geometryDefinition.geometryBuffers.findIndex(buffer => !buffer.compressedAttributes);
139
116
  }
140
-
141
117
  if (geometryIndex !== -1) {
142
118
  const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
143
119
  result = {
@@ -145,20 +121,17 @@ export default class I3SNodePagesTiles {
145
121
  isDracoGeometry
146
122
  };
147
123
  }
148
-
149
124
  return result;
150
125
  }
151
126
 
152
127
  getLodSelection(node) {
153
128
  const lodSelection = [];
154
-
155
129
  if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {
156
130
  lodSelection.push({
157
131
  metricType: 'maxScreenThreshold',
158
132
  maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))
159
133
  });
160
134
  }
161
-
162
135
  lodSelection.push({
163
136
  metricType: this.lodSelectionMetricType,
164
137
  maxError: node.lodThreshold
@@ -172,24 +145,18 @@ export default class I3SNodePagesTiles {
172
145
  name: null
173
146
  }
174
147
  };
175
-
176
148
  if (material) {
177
149
  var _this$tileset$materia;
178
-
179
150
  const materialDefinition = (_this$tileset$materia = this.tileset.materialDefinitions) === null || _this$tileset$materia === void 0 ? void 0 : _this$tileset$materia[material.definition];
180
-
181
151
  if (materialDefinition) {
182
152
  var _materialDefinition$p, _materialDefinition$p2;
183
-
184
153
  informationFromMaterial.materialDefinition = materialDefinition;
185
154
  const textureSetDefinitionIndex = materialDefinition === null || materialDefinition === void 0 ? void 0 : (_materialDefinition$p = materialDefinition.pbrMetallicRoughness) === null || _materialDefinition$p === void 0 ? void 0 : (_materialDefinition$p2 = _materialDefinition$p.baseColorTexture) === null || _materialDefinition$p2 === void 0 ? void 0 : _materialDefinition$p2.textureSetDefinitionId;
186
-
187
155
  if (typeof textureSetDefinitionIndex === 'number') {
188
156
  informationFromMaterial.textureData = this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] || informationFromMaterial.textureData;
189
157
  }
190
158
  }
191
159
  }
192
-
193
160
  return informationFromMaterial;
194
161
  }
195
162
 
@@ -197,20 +164,16 @@ export default class I3SNodePagesTiles {
197
164
  this.textureDefinitionsSelectedFormats = [];
198
165
  const possibleI3sFormats = this.getSupportedTextureFormats();
199
166
  const textureSetDefinitions = tileset.textureSetDefinitions || [];
200
-
201
167
  for (const textureSetDefinition of textureSetDefinitions) {
202
168
  const formats = textureSetDefinition && textureSetDefinition.formats || [];
203
169
  let selectedFormat = null;
204
-
205
170
  for (const i3sFormat of possibleI3sFormats) {
206
171
  const format = formats.find(value => value.format === i3sFormat);
207
-
208
172
  if (format) {
209
173
  selectedFormat = format;
210
174
  break;
211
175
  }
212
176
  }
213
-
214
177
  if (selectedFormat && selectedFormat.format === 'ktx2') {
215
178
  this.textureLoaderOptions.basis = {
216
179
  format: selectSupportedBasisFormat(),
@@ -218,32 +181,26 @@ export default class I3SNodePagesTiles {
218
181
  module: 'encoder'
219
182
  };
220
183
  }
221
-
222
184
  this.textureDefinitionsSelectedFormats.push(selectedFormat);
223
185
  }
224
186
  }
225
187
 
226
188
  getSupportedTextureFormats() {
227
189
  const formats = [];
228
-
229
190
  if (!this.options.i3s || this.options.i3s.useCompressedTextures) {
230
191
  const supportedCompressedFormats = getSupportedGPUTextureFormats();
231
-
232
192
  if (supportedCompressedFormats.has('etc2')) {
233
193
  formats.push('ktx-etc2');
234
194
  }
235
-
236
195
  if (supportedCompressedFormats.has('dxt')) {
237
196
  formats.push('dds');
238
197
  }
239
198
 
240
199
  formats.push('ktx2');
241
200
  }
242
-
243
201
  formats.push('jpg');
244
202
  formats.push('png');
245
203
  return formats;
246
204
  }
247
-
248
205
  }
249
206
  //# sourceMappingURL=i3s-nodepages-tiles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":["load","getSupportedGPUTextureFormats","selectSupportedBasisFormat","I3SNodePageLoader","normalizeTileNonUrlData","getUrlWithToken","generateTilesetAttributeUrls","I3SNodePagesTiles","constructor","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","nodesInNodePages","initSelectedFormatsForTextureDefinitions","getNodeById","id","pageIndex","Math","floor","pendingNodePages","nodePageUrl","url","i3s","token","status","promise","nodes","length","nodeIndex","formTileFromNodePages","node","children","childNodesPromises","child","push","childNodes","Promise","all","childNode","index","toString","obb","contentUrl","textureUrl","materialDefinition","textureFormat","attributeUrls","isDracoGeometry","mesh","isDracoGeometryResult","geometry","getContentUrl","textureData","nodeMaterialDefinition","getInformationFromMaterial","material","format","name","resource","attributeStorageInfo","attribute","lodSelection","getLodSelection","textureLoaderOptions","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","informationFromMaterial","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","textureDefinitionsSelectedFormats","possibleI3sFormats","getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","basis","containerFormat","module","useCompressedTextures","supportedCompressedFormats","has"],"mappings":"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","sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {\n I3STilesetHeader,\n LodSelection,\n NodePage,\n NodeInPage,\n Obb,\n MeshMaterial,\n I3SMaterialDefinition,\n I3STextureFormat,\n MeshGeometry,\n I3STileHeader\n} from '../../types';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: I3STilesetHeader;\n nodePages: NodePage[] = [];\n pendingNodePages: {promise: Promise<NodePage>; status: 'Pending' | 'Done'}[] = [];\n nodesPerPage: number;\n options: LoaderOptions;\n lodSelectionMetricType?: string;\n textureDefinitionsSelectedFormats: ({format: I3STextureFormat; name: string} | null)[] = [];\n nodesInNodePages: number;\n private textureLoaderOptions: {[key: string]: any} = {};\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: I3STilesetHeader, options: LoaderOptions) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;\n this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;\n this.options = options;\n this.nodesInNodePages = 0;\n\n this.initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number): Promise<NodeInPage> {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.pendingNodePages[pageIndex] = {\n status: 'Pending',\n promise: load(nodePageUrl, I3SNodePageLoader, this.options)\n };\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;\n this.pendingNodePages[pageIndex].status = 'Done';\n }\n if (this.pendingNodePages[pageIndex].status === 'Pending') {\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity, max-statements\n async formTileFromNodePages(id: number): Promise<I3STileHeader> {\n const node: NodeInPage = await this.getNodeById(id);\n const children: {id: string; obb: Obb}[] = [];\n const childNodesPromises: Promise<NodeInPage>[] = [];\n for (const child of node.children || []) {\n childNodesPromises.push(this.getNodeById(child));\n }\n\n const childNodes = await Promise.all(childNodesPromises);\n for (const childNode of childNodes) {\n children.push({\n id: childNode.index.toString(),\n obb: childNode.obb\n });\n }\n\n let contentUrl: string | undefined;\n let textureUrl: string | undefined;\n let materialDefinition: I3SMaterialDefinition | undefined;\n let textureFormat: I3STextureFormat = 'jpg';\n let attributeUrls: string[] = [];\n let isDracoGeometry: boolean = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this.getContentUrl(node.mesh.geometry)) || {isDracoGeometry: false};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const {textureData, materialDefinition: nodeMaterialDefinition} =\n this.getInformationFromMaterial(node.mesh.material);\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this.getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id: id.toString(),\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n textureLoaderOptions: this.textureLoaderOptions,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param - data about the node's mesh from the nodepage\n * @returns -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n private getContentUrl(meshGeometryData: MeshGeometry) {\n let result: {url: string; isDracoGeometry: boolean} | null = null;\n // @ts-ignore\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param node - a node from nodepage\n * @returns- Array of LodSelection\n */\n private getLodSelection(node: NodeInPage): LodSelection[] {\n const lodSelection: LodSelection[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n // @ts-ignore\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n // @ts-ignore\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param material - material data from nodepage\n * @returns - Couple {textureData, materialDefinition}\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n private getInformationFromMaterial(material: MeshMaterial) {\n const informationFromMaterial: {\n textureData: {name: string | null; format?: I3STextureFormat};\n materialDefinition?: I3SMaterialDefinition;\n } = {textureData: {name: null}};\n\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions?.[material.definition];\n if (materialDefinition) {\n informationFromMaterial.materialDefinition = materialDefinition;\n const textureSetDefinitionIndex =\n materialDefinition?.pbrMetallicRoughness?.baseColorTexture?.textureSetDefinitionId;\n\n if (typeof textureSetDefinitionIndex === 'number') {\n informationFromMaterial.textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] ||\n informationFromMaterial.textureData;\n }\n }\n }\n return informationFromMaterial;\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param tileset - I3S layer data\n * @returns\n */\n private initSelectedFormatsForTextureDefinitions(tileset: I3STilesetHeader): void {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this.getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat: {name: string; format: I3STextureFormat} | null = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n // For I3S 1.8 need to define basis target format to decode\n if (selectedFormat && selectedFormat.format === 'ktx2') {\n this.textureLoaderOptions.basis = {\n format: selectSupportedBasisFormat(),\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n }\n\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n private getSupportedTextureFormats(): I3STextureFormat[] {\n const formats: I3STextureFormat[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n // I3S 1.7 selection\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n\n // I3S 1.8 selection\n // ktx2 wraps basis texture which at the edge case can be decoded as uncompressed image\n formats.push('ktx2');\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"file":"i3s-nodepages-tiles.js"}
1
+ {"version":3,"file":"i3s-nodepages-tiles.js","names":["load","getSupportedGPUTextureFormats","selectSupportedBasisFormat","I3SNodePageLoader","normalizeTileNonUrlData","getUrlWithToken","generateTilesetAttributeUrls","I3SNodePagesTiles","constructor","tileset","options","nodesPerPage","nodePages","lodSelectionMetricType","nodesInNodePages","initSelectedFormatsForTextureDefinitions","getNodeById","id","pageIndex","Math","floor","pendingNodePages","nodePageUrl","url","i3s","token","status","promise","nodes","length","nodeIndex","formTileFromNodePages","node","children","childNodesPromises","child","push","childNodes","Promise","all","childNode","index","toString","obb","contentUrl","textureUrl","materialDefinition","textureFormat","attributeUrls","isDracoGeometry","mesh","isDracoGeometryResult","geometry","getContentUrl","textureData","nodeMaterialDefinition","getInformationFromMaterial","material","format","name","resource","attributeStorageInfo","attribute","lodSelection","getLodSelection","textureLoaderOptions","meshGeometryData","result","geometryDefinition","geometryDefinitions","definition","geometryIndex","useDracoGeometry","geometryBuffers","findIndex","buffer","compressedAttributes","encoding","Boolean","metricType","maxError","sqrt","lodThreshold","PI","informationFromMaterial","materialDefinitions","textureSetDefinitionIndex","pbrMetallicRoughness","baseColorTexture","textureSetDefinitionId","textureDefinitionsSelectedFormats","possibleI3sFormats","getSupportedTextureFormats","textureSetDefinitions","textureSetDefinition","formats","selectedFormat","i3sFormat","find","value","basis","containerFormat","module","useCompressedTextures","supportedCompressedFormats","has"],"sources":["../../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"sourcesContent":["import {load} from '@loaders.gl/core';\nimport {getSupportedGPUTextureFormats, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport {I3SNodePageLoader} from '../../i3s-node-page-loader';\nimport {normalizeTileNonUrlData} from '../parsers/parse-i3s';\nimport {getUrlWithToken, generateTilesetAttributeUrls} from '../utils/url-utils';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {\n I3STilesetHeader,\n LodSelection,\n NodePage,\n NodeInPage,\n Obb,\n MeshMaterial,\n I3SMaterialDefinition,\n I3STextureFormat,\n MeshGeometry,\n I3STileHeader\n} from '../../types';\n\n/**\n * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them\n */\nexport default class I3SNodePagesTiles {\n tileset: I3STilesetHeader;\n nodePages: NodePage[] = [];\n pendingNodePages: {promise: Promise<NodePage>; status: 'Pending' | 'Done'}[] = [];\n nodesPerPage: number;\n options: LoaderOptions;\n lodSelectionMetricType?: string;\n textureDefinitionsSelectedFormats: ({format: I3STextureFormat; name: string} | null)[] = [];\n nodesInNodePages: number;\n private textureLoaderOptions: {[key: string]: any} = {};\n\n /**\n * @constructs\n * Create a I3SNodePagesTiles instance.\n * @param tileset - i3s tileset header ('layers/0')\n * @param options - i3s loader options\n */\n constructor(tileset: I3STilesetHeader, options: LoaderOptions) {\n this.tileset = {...tileset}; // spread the tileset to avoid circular reference\n this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;\n this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;\n this.options = options;\n this.nodesInNodePages = 0;\n\n this.initSelectedFormatsForTextureDefinitions(tileset);\n }\n\n /**\n * Loads some nodePage and return a particular node from it\n * @param id - id of node through all node pages\n */\n async getNodeById(id: number): Promise<NodeInPage> {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {\n const nodePageUrl = getUrlWithToken(\n `${this.tileset.url}/nodepages/${pageIndex}`,\n this.options.i3s?.token\n );\n this.pendingNodePages[pageIndex] = {\n status: 'Pending',\n promise: load(nodePageUrl, I3SNodePageLoader, this.options)\n };\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n this.nodesInNodePages += this.nodePages[pageIndex].nodes.length;\n this.pendingNodePages[pageIndex].status = 'Done';\n }\n if (this.pendingNodePages[pageIndex].status === 'Pending') {\n this.nodePages[pageIndex] = await this.pendingNodePages[pageIndex].promise;\n }\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Forms tile header using node and tileset data\n * @param id - id of node through all node pages\n */\n // eslint-disable-next-line complexity, max-statements\n async formTileFromNodePages(id: number): Promise<I3STileHeader> {\n const node: NodeInPage = await this.getNodeById(id);\n const children: {id: string; obb: Obb}[] = [];\n const childNodesPromises: Promise<NodeInPage>[] = [];\n for (const child of node.children || []) {\n childNodesPromises.push(this.getNodeById(child));\n }\n\n const childNodes = await Promise.all(childNodesPromises);\n for (const childNode of childNodes) {\n children.push({\n id: childNode.index.toString(),\n obb: childNode.obb\n });\n }\n\n let contentUrl: string | undefined;\n let textureUrl: string | undefined;\n let materialDefinition: I3SMaterialDefinition | undefined;\n let textureFormat: I3STextureFormat = 'jpg';\n let attributeUrls: string[] = [];\n let isDracoGeometry: boolean = false;\n\n if (node && node.mesh) {\n // Get geometry resource URL and type (compressed / non-compressed)\n const {url, isDracoGeometry: isDracoGeometryResult} = (node.mesh.geometry &&\n this.getContentUrl(node.mesh.geometry)) || {isDracoGeometry: false};\n contentUrl = url;\n isDracoGeometry = isDracoGeometryResult;\n\n const {textureData, materialDefinition: nodeMaterialDefinition} =\n this.getInformationFromMaterial(node.mesh.material);\n materialDefinition = nodeMaterialDefinition;\n textureFormat = textureData.format || textureFormat;\n if (textureData.name) {\n textureUrl = `${this.tileset.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;\n }\n\n if (this.tileset.attributeStorageInfo) {\n attributeUrls = generateTilesetAttributeUrls(this.tileset, node.mesh.attribute.resource);\n }\n }\n\n const lodSelection = this.getLodSelection(node);\n\n return normalizeTileNonUrlData({\n id: id.toString(),\n lodSelection,\n obb: node.obb,\n contentUrl,\n textureUrl,\n attributeUrls,\n materialDefinition,\n textureFormat,\n textureLoaderOptions: this.textureLoaderOptions,\n children,\n isDracoGeometry\n });\n }\n\n /**\n * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset\n * @param - data about the node's mesh from the nodepage\n * @returns -\n * {string} url - url to the geometry resource\n * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry\n */\n private getContentUrl(meshGeometryData: MeshGeometry) {\n let result: {url: string; isDracoGeometry: boolean} | null = null;\n // @ts-ignore\n const geometryDefinition = this.tileset.geometryDefinitions[meshGeometryData.definition];\n let geometryIndex = -1;\n // Try to find DRACO geometryDefinition of `useDracoGeometry` option is set\n if (this.options.i3s && this.options.i3s.useDracoGeometry) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => buffer.compressedAttributes && buffer.compressedAttributes.encoding === 'draco'\n );\n }\n // If DRACO geometry is not applicable try to select non-compressed geometry\n if (geometryIndex === -1) {\n geometryIndex = geometryDefinition.geometryBuffers.findIndex(\n (buffer) => !buffer.compressedAttributes\n );\n }\n if (geometryIndex !== -1) {\n const isDracoGeometry = Boolean(\n geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes\n );\n result = {\n url: `${this.tileset.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,\n isDracoGeometry\n };\n }\n return result;\n }\n\n /**\n * Forms 1.6 compatible LOD selection object from a nodepage's node data\n * @param node - a node from nodepage\n * @returns- Array of LodSelection\n */\n private getLodSelection(node: NodeInPage): LodSelection[] {\n const lodSelection: LodSelection[] = [];\n if (this.lodSelectionMetricType === 'maxScreenThresholdSQ') {\n lodSelection.push({\n metricType: 'maxScreenThreshold',\n // @ts-ignore\n maxError: Math.sqrt(node.lodThreshold / (Math.PI * 0.25))\n });\n }\n lodSelection.push({\n metricType: this.lodSelectionMetricType,\n // @ts-ignore\n maxError: node.lodThreshold\n });\n return lodSelection;\n }\n\n /**\n * Returns information about texture and material from `materialDefinitions`\n * @param material - material data from nodepage\n * @returns - Couple {textureData, materialDefinition}\n * {string} textureData.name - path name of the texture\n * {string} textureData.format - format of the texture\n * materialDefinition - PBR-like material definition from `materialDefinitions`\n */\n private getInformationFromMaterial(material: MeshMaterial) {\n const informationFromMaterial: {\n textureData: {name: string | null; format?: I3STextureFormat};\n materialDefinition?: I3SMaterialDefinition;\n } = {textureData: {name: null}};\n\n if (material) {\n const materialDefinition = this.tileset.materialDefinitions?.[material.definition];\n if (materialDefinition) {\n informationFromMaterial.materialDefinition = materialDefinition;\n const textureSetDefinitionIndex =\n materialDefinition?.pbrMetallicRoughness?.baseColorTexture?.textureSetDefinitionId;\n\n if (typeof textureSetDefinitionIndex === 'number') {\n informationFromMaterial.textureData =\n this.textureDefinitionsSelectedFormats[textureSetDefinitionIndex] ||\n informationFromMaterial.textureData;\n }\n }\n }\n return informationFromMaterial;\n }\n\n /**\n * Sets preferable and supported format for each textureDefinition of the tileset\n * @param tileset - I3S layer data\n * @returns\n */\n private initSelectedFormatsForTextureDefinitions(tileset: I3STilesetHeader): void {\n this.textureDefinitionsSelectedFormats = [];\n const possibleI3sFormats = this.getSupportedTextureFormats();\n const textureSetDefinitions = tileset.textureSetDefinitions || [];\n for (const textureSetDefinition of textureSetDefinitions) {\n const formats = (textureSetDefinition && textureSetDefinition.formats) || [];\n let selectedFormat: {name: string; format: I3STextureFormat} | null = null;\n for (const i3sFormat of possibleI3sFormats) {\n const format = formats.find((value) => value.format === i3sFormat);\n if (format) {\n selectedFormat = format;\n break;\n }\n }\n // For I3S 1.8 need to define basis target format to decode\n if (selectedFormat && selectedFormat.format === 'ktx2') {\n this.textureLoaderOptions.basis = {\n format: selectSupportedBasisFormat(),\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n }\n\n this.textureDefinitionsSelectedFormats.push(selectedFormat);\n }\n }\n\n /**\n * Returns the array of supported texture format\n * @returns list of format strings\n */\n private getSupportedTextureFormats(): I3STextureFormat[] {\n const formats: I3STextureFormat[] = [];\n if (!this.options.i3s || this.options.i3s.useCompressedTextures) {\n // I3S 1.7 selection\n const supportedCompressedFormats = getSupportedGPUTextureFormats();\n // List of possible in i3s formats:\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md\n if (supportedCompressedFormats.has('etc2')) {\n formats.push('ktx-etc2');\n }\n if (supportedCompressedFormats.has('dxt')) {\n formats.push('dds');\n }\n\n // I3S 1.8 selection\n // ktx2 wraps basis texture which at the edge case can be decoded as uncompressed image\n formats.push('ktx2');\n }\n\n formats.push('jpg');\n formats.push('png');\n return formats;\n }\n}\n"],"mappings":"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"}
@@ -4,19 +4,14 @@ export function getConstructorForDataFormat(dataType) {
4
4
  switch (dataType) {
5
5
  case DATA_TYPE.UInt8:
6
6
  return Uint8Array;
7
-
8
7
  case DATA_TYPE.UInt16:
9
8
  return Uint16Array;
10
-
11
9
  case DATA_TYPE.UInt32:
12
10
  return Uint32Array;
13
-
14
11
  case DATA_TYPE.Float32:
15
12
  return Float32Array;
16
-
17
13
  case DATA_TYPE.UInt64:
18
14
  return Float64Array;
19
-
20
15
  default:
21
16
  throw new Error("parse i3s tile content: unknown type of data: ".concat(dataType));
22
17
  }
@@ -32,21 +27,17 @@ export function sizeOf(dataType) {
32
27
  switch (dataType) {
33
28
  case DATA_TYPE.UInt8:
34
29
  return 1;
35
-
36
30
  case DATA_TYPE.UInt16:
37
31
  case DATA_TYPE.Int16:
38
32
  return 2;
39
-
40
33
  case DATA_TYPE.UInt32:
41
34
  case DATA_TYPE.Int32:
42
35
  case DATA_TYPE.Float32:
43
36
  return 4;
44
-
45
37
  case DATA_TYPE.UInt64:
46
38
  case DATA_TYPE.Int64:
47
39
  case DATA_TYPE.Float64:
48
40
  return 8;
49
-
50
41
  default:
51
42
  throw new Error("parse i3s tile content: unknown size of data: ".concat(dataType));
52
43
  }
@@ -55,8 +46,8 @@ export const STRING_ATTRIBUTE_TYPE = 'String';
55
46
  export const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';
56
47
  export const FLOAT_64_TYPE = 'Float64';
57
48
  export const INT_16_ATTRIBUTE_TYPE = 'Int16';
58
- export let COORDINATE_SYSTEM;
59
49
 
50
+ export let COORDINATE_SYSTEM;
60
51
  (function (COORDINATE_SYSTEM) {
61
52
  COORDINATE_SYSTEM[COORDINATE_SYSTEM["DEFAULT"] = -1] = "DEFAULT";
62
53
  COORDINATE_SYSTEM[COORDINATE_SYSTEM["LNGLAT"] = 1] = "LNGLAT";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/constants.ts"],"names":["GL","DATA_TYPE","getConstructorForDataFormat","dataType","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","Error","GL_TYPE_MAP","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","sizeOf","Int16","Int32","Int64","Float64","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"mappings":"AAAA,OAAOA,EAAP,MAAe,oBAAf;AACA,SAAQC,SAAR,QAAwB,aAAxB;AAEA,OAAO,SAASC,2BAAT,CAAqCC,QAArC,EAAuD;AAC5D,UAAQA,QAAR;AACE,SAAKF,SAAS,CAACG,KAAf;AACE,aAAOC,UAAP;;AACF,SAAKJ,SAAS,CAACK,MAAf;AACE,aAAOC,WAAP;;AACF,SAAKN,SAAS,CAACO,MAAf;AACE,aAAOC,WAAP;;AACF,SAAKR,SAAS,CAACS,OAAf;AACE,aAAOC,YAAP;;AACF,SAAKV,SAAS,CAACW,MAAf;AACE,aAAOC,YAAP;;AACF;AACE,YAAM,IAAIC,KAAJ,yDAA2DX,QAA3D,EAAN;AAZJ;AAcD;AAED,OAAO,MAAMY,WAAoC,GAAG;AAClDX,EAAAA,KAAK,EAAEJ,EAAE,CAACgB,aADwC;AAElDV,EAAAA,MAAM,EAAEN,EAAE,CAACiB,YAFuC;AAGlDP,EAAAA,OAAO,EAAEV,EAAE,CAACkB,KAHsC;AAIlDV,EAAAA,MAAM,EAAER,EAAE,CAACiB,YAJuC;AAKlDL,EAAAA,MAAM,EAAEZ,EAAE,CAACmB;AALuC,CAA7C;AAYP,OAAO,SAASC,MAAT,CAAgBjB,QAAhB,EAA0C;AAC/C,UAAQA,QAAR;AACE,SAAKF,SAAS,CAACG,KAAf;AACE,aAAO,CAAP;;AACF,SAAKH,SAAS,CAACK,MAAf;AACA,SAAKL,SAAS,CAACoB,KAAf;AACE,aAAO,CAAP;;AACF,SAAKpB,SAAS,CAACO,MAAf;AACA,SAAKP,SAAS,CAACqB,KAAf;AACA,SAAKrB,SAAS,CAACS,OAAf;AACE,aAAO,CAAP;;AACF,SAAKT,SAAS,CAACW,MAAf;AACA,SAAKX,SAAS,CAACsB,KAAf;AACA,SAAKtB,SAAS,CAACuB,OAAf;AACE,aAAO,CAAP;;AACF;AACE,YAAM,IAAIV,KAAJ,yDAA2DX,QAA3D,EAAN;AAfJ;AAiBD;AAED,OAAO,MAAMsB,qBAAqB,GAAG,QAA9B;AACP,OAAO,MAAMC,wBAAwB,GAAG,OAAjC;AACP,OAAO,MAAMC,aAAa,GAAG,SAAtB;AACP,OAAO,MAAMC,qBAAqB,GAAG,OAA9B;AAIP,WAAYC,iBAAZ;;WAAYA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;GAAAA,iB,KAAAA,iB","sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"file":"constants.js"}
1
+ {"version":3,"file":"constants.js","names":["GL","DATA_TYPE","getConstructorForDataFormat","dataType","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","Error","GL_TYPE_MAP","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","sizeOf","Int16","Int32","Int64","Float64","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"sources":["../../../../src/lib/parsers/constants.ts"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n throw new Error(`parse i3s tile content: unknown type of data: ${dataType}`);\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n throw new Error(`parse i3s tile content: unknown size of data: ${dataType}`);\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,oBAAoB;AACnC,SAAQC,SAAS,QAAO,aAAa;AAErC,OAAO,SAASC,2BAA2B,CAACC,QAAgB,EAAE;EAC5D,QAAQA,QAAQ;IACd,KAAKF,SAAS,CAACG,KAAK;MAClB,OAAOC,UAAU;IACnB,KAAKJ,SAAS,CAACK,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKN,SAAS,CAACO,MAAM;MACnB,OAAOC,WAAW;IACpB,KAAKR,SAAS,CAACS,OAAO;MACpB,OAAOC,YAAY;IACrB,KAAKV,SAAS,CAACW,MAAM;MACnB,OAAOC,YAAY;IACrB;MACE,MAAM,IAAIC,KAAK,yDAAkDX,QAAQ,EAAG;EAAC;AAEnF;AAEA,OAAO,MAAMY,WAAoC,GAAG;EAClDX,KAAK,EAAEJ,EAAE,CAACgB,aAAa;EACvBV,MAAM,EAAEN,EAAE,CAACiB,YAAY;EACvBP,OAAO,EAAEV,EAAE,CAACkB,KAAK;EACjBV,MAAM,EAAER,EAAE,CAACiB,YAAY;EACvBL,MAAM,EAAEZ,EAAE,CAACmB;AACb,CAAC;AAMD,OAAO,SAASC,MAAM,CAACjB,QAAgB,EAAU;EAC/C,QAAQA,QAAQ;IACd,KAAKF,SAAS,CAACG,KAAK;MAClB,OAAO,CAAC;IACV,KAAKH,SAAS,CAACK,MAAM;IACrB,KAAKL,SAAS,CAACoB,KAAK;MAClB,OAAO,CAAC;IACV,KAAKpB,SAAS,CAACO,MAAM;IACrB,KAAKP,SAAS,CAACqB,KAAK;IACpB,KAAKrB,SAAS,CAACS,OAAO;MACpB,OAAO,CAAC;IACV,KAAKT,SAAS,CAACW,MAAM;IACrB,KAAKX,SAAS,CAACsB,KAAK;IACpB,KAAKtB,SAAS,CAACuB,OAAO;MACpB,OAAO,CAAC;IACV;MACE,MAAM,IAAIV,KAAK,yDAAkDX,QAAQ,EAAG;EAAC;AAEnF;AAEA,OAAO,MAAMsB,qBAAqB,GAAG,QAAQ;AAC7C,OAAO,MAAMC,wBAAwB,GAAG,OAAO;AAC/C,OAAO,MAAMC,aAAa,GAAG,SAAS;AACtC,OAAO,MAAMC,qBAAqB,GAAG,OAAO;;AAI5C,WAAYC,iBAAiB;AAwB5B,WAxBWA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,KAAjBA,iBAAiB"}