@loaders.gl/3d-tiles 4.0.0-alpha.21 → 4.0.0-alpha.23

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 (123) hide show
  1. package/dist/3d-tiles-archive/3d-tiles-archive-archive.d.ts +30 -0
  2. package/dist/3d-tiles-archive/3d-tiles-archive-archive.d.ts.map +1 -0
  3. package/dist/{tz3/tz3-archive.js → 3d-tiles-archive/3d-tiles-archive-archive.js} +16 -16
  4. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts +10 -0
  5. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts.map +1 -0
  6. package/dist/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +5 -5
  7. package/dist/3d-tiles-archive-loader.d.ts +13 -0
  8. package/dist/3d-tiles-archive-loader.d.ts.map +1 -0
  9. package/dist/3d-tiles-archive-loader.js +31 -0
  10. package/dist/cesium-ion-loader.d.ts.map +1 -1
  11. package/dist/cesium-ion-loader.js +0 -1
  12. package/dist/dist.min.js +2218 -1370
  13. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js +126 -0
  14. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  15. package/dist/es5/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +7 -7
  16. package/dist/es5/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  17. package/dist/es5/3d-tiles-archive-loader.js +50 -0
  18. package/dist/es5/3d-tiles-archive-loader.js.map +1 -0
  19. package/dist/es5/cesium-ion-loader.js.map +1 -1
  20. package/dist/es5/index.js +14 -7
  21. package/dist/es5/index.js.map +1 -1
  22. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js +151 -0
  23. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  24. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +3 -3
  25. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  26. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +3 -1
  27. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  28. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +14 -12
  29. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  30. package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -1
  31. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  32. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +6 -6
  33. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  34. package/dist/es5/lib/parsers/parse-3d-tile.js +3 -1
  35. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  36. package/dist/es5/lib/utils/version.js +1 -1
  37. package/dist/es5/tiles-3d-loader.js +2 -0
  38. package/dist/es5/tiles-3d-loader.js.map +1 -1
  39. package/dist/es5/types.js.map +1 -1
  40. package/dist/esm/{tz3/tz3-archive.js → 3d-tiles-archive/3d-tiles-archive-archive.js} +14 -19
  41. package/dist/esm/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  42. package/dist/esm/{tz3/tz3-parser.js → 3d-tiles-archive/3d-tiles-archive-parser.js} +4 -4
  43. package/dist/esm/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  44. package/dist/esm/3d-tiles-archive-loader.js +20 -0
  45. package/dist/esm/3d-tiles-archive-loader.js.map +1 -0
  46. package/dist/esm/cesium-ion-loader.js.map +1 -1
  47. package/dist/esm/index.js +2 -1
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js +49 -0
  50. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  51. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +5 -6
  52. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  53. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +3 -1
  54. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  55. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +7 -8
  56. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  57. package/dist/esm/lib/parsers/parse-3d-tile-header.js +2 -1
  58. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  59. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +2 -4
  60. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  61. package/dist/esm/lib/parsers/parse-3d-tile.js +3 -1
  62. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  63. package/dist/esm/lib/utils/version.js +1 -1
  64. package/dist/esm/tiles-3d-loader.js +2 -0
  65. package/dist/esm/tiles-3d-loader.js.map +1 -1
  66. package/dist/esm/types.js.map +1 -1
  67. package/dist/index.d.ts +3 -2
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -3
  70. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts +32 -0
  71. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts.map +1 -0
  72. package/dist/lib/filesystems/tiles-3d-archive-file-system.js +75 -0
  73. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -1
  74. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +2 -2
  75. package/dist/lib/parsers/parse-3d-tile-composite.js +1 -1
  76. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -2
  77. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
  78. package/dist/lib/parsers/parse-3d-tile-gltf.js +8 -7
  79. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  80. package/dist/lib/parsers/parse-3d-tile-header.js +2 -1
  81. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +1 -1
  82. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -1
  83. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +10 -2
  84. package/dist/lib/parsers/parse-3d-tile.d.ts +1 -1
  85. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
  86. package/dist/lib/parsers/parse-3d-tile.js +1 -1
  87. package/dist/tiles-3d-loader.d.ts +2 -1
  88. package/dist/tiles-3d-loader.d.ts.map +1 -1
  89. package/dist/tiles-3d-loader.js +4 -0
  90. package/dist/types.d.ts +2 -0
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +8 -7
  93. package/src/{tz3/tz3-archive.ts → 3d-tiles-archive/3d-tiles-archive-archive.ts} +22 -19
  94. package/src/{tz3/tz3-parser.ts → 3d-tiles-archive/3d-tiles-archive-parser.ts} +5 -5
  95. package/src/3d-tiles-archive-loader.ts +47 -0
  96. package/src/cesium-ion-loader.ts +0 -1
  97. package/src/index.ts +3 -2
  98. package/src/lib/filesystems/tiles-3d-archive-file-system.ts +97 -0
  99. package/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts +8 -3
  100. package/src/lib/parsers/parse-3d-tile-composite.ts +1 -1
  101. package/src/lib/parsers/parse-3d-tile-gltf.ts +11 -10
  102. package/src/lib/parsers/parse-3d-tile-header.ts +2 -1
  103. package/src/lib/parsers/parse-3d-tile-point-cloud.ts +10 -3
  104. package/src/lib/parsers/parse-3d-tile.ts +2 -2
  105. package/src/tiles-3d-loader.ts +16 -4
  106. package/src/types.ts +3 -0
  107. package/dist/es5/tz3/tz3-archive.js +0 -161
  108. package/dist/es5/tz3/tz3-archive.js.map +0 -1
  109. package/dist/es5/tz3/tz3-parser.js.map +0 -1
  110. package/dist/es5/tz3-loader.js +0 -48
  111. package/dist/es5/tz3-loader.js.map +0 -1
  112. package/dist/esm/tz3/tz3-archive.js.map +0 -1
  113. package/dist/esm/tz3/tz3-parser.js.map +0 -1
  114. package/dist/esm/tz3-loader.js +0 -19
  115. package/dist/esm/tz3-loader.js.map +0 -1
  116. package/dist/tz3/tz3-archive.d.ts +0 -23
  117. package/dist/tz3/tz3-archive.d.ts.map +0 -1
  118. package/dist/tz3/tz3-parser.d.ts +0 -10
  119. package/dist/tz3/tz3-parser.d.ts.map +0 -1
  120. package/dist/tz3-loader.d.ts +0 -14
  121. package/dist/tz3-loader.d.ts.map +0 -1
  122. package/dist/tz3-loader.js +0 -30
  123. package/src/tz3-loader.ts +0 -41
@@ -7,40 +7,42 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.parseGltf3DTile = parseGltf3DTile;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _loaderUtils = require("@loaders.gl/loader-utils");
10
11
  var _gltf = require("@loaders.gl/gltf");
11
12
  function parseGltf3DTile(_x, _x2, _x3, _x4) {
12
13
  return _parseGltf3DTile.apply(this, arguments);
13
14
  }
14
15
  function _parseGltf3DTile() {
15
16
  _parseGltf3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, options, context) {
16
- var _options$3dTiles;
17
- var parse, gltfWithBuffers;
17
+ var _options$3dTiles, _options$3dTiles2;
18
+ var gltfWithBuffers;
18
19
  return _regenerator.default.wrap(function _callee$(_context) {
19
20
  while (1) switch (_context.prev = _context.next) {
20
21
  case 0:
21
22
  tile.rotateYtoZ = true;
22
- tile.gltfUpAxis = options !== null && options !== void 0 && options['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis ? options['3d-tiles'].assetGltfUpAxis : 'Y';
23
- if (!(options !== null && options !== void 0 && (_options$3dTiles = options['3d-tiles']) !== null && _options$3dTiles !== void 0 && _options$3dTiles.loadGLTF)) {
24
- _context.next = 13;
23
+ tile.gltfUpAxis = options !== null && options !== void 0 && (_options$3dTiles = options['3d-tiles']) !== null && _options$3dTiles !== void 0 && _options$3dTiles.assetGltfUpAxis ? options['3d-tiles'].assetGltfUpAxis : 'Y';
24
+ if (!(options !== null && options !== void 0 && (_options$3dTiles2 = options['3d-tiles']) !== null && _options$3dTiles2 !== void 0 && _options$3dTiles2.loadGLTF)) {
25
+ _context.next = 12;
25
26
  break;
26
27
  }
27
28
  if (context) {
28
29
  _context.next = 5;
29
30
  break;
30
31
  }
31
- return _context.abrupt("return");
32
+ return _context.abrupt("return", arrayBuffer.byteLength);
32
33
  case 5:
33
- parse = context.parse;
34
- _context.next = 8;
35
- return parse(arrayBuffer, _gltf.GLTFLoader, options, context);
36
- case 8:
34
+ _context.next = 7;
35
+ return (0, _loaderUtils.parseFromContext)(arrayBuffer, _gltf.GLTFLoader, options, context);
36
+ case 7:
37
37
  gltfWithBuffers = _context.sent;
38
38
  tile.gltf = (0, _gltf.postProcessGLTF)(gltfWithBuffers);
39
39
  tile.gpuMemoryUsageInBytes = (0, _gltf._getMemoryUsageGLTF)(tile.gltf);
40
- _context.next = 14;
40
+ _context.next = 13;
41
41
  break;
42
- case 13:
42
+ case 12:
43
43
  tile.gltfArrayBuffer = arrayBuffer;
44
+ case 13:
45
+ return _context.abrupt("return", arrayBuffer.byteLength);
44
46
  case 14:
45
47
  case "end":
46
48
  return _context.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-gltf.js","names":["_gltf","require","parseGltf3DTile","_x","_x2","_x3","_x4","_parseGltf3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","tile","arrayBuffer","options","context","_options$3dTiles","parse","gltfWithBuffers","wrap","_callee$","_context","prev","next","rotateYtoZ","gltfUpAxis","assetGltfUpAxis","loadGLTF","abrupt","GLTFLoader","sent","gltf","postProcessGLTF","gpuMemoryUsageInBytes","_getMemoryUsageGLTF","gltfArrayBuffer","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"sourcesContent":["import type {LoaderContext} from '@loaders.gl/loader-utils';\nimport type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {_getMemoryUsageGLTF, GLTFLoader, postProcessGLTF} from '@loaders.gl/gltf';\nimport {Tiles3DTileContent} from '../../types';\n\nexport async function parseGltf3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n // Set flags\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n tile.rotateYtoZ = true;\n // Save gltf up axis\n tile.gltfUpAxis =\n options?.['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis\n ? options['3d-tiles'].assetGltfUpAxis\n : 'Y';\n\n if (options?.['3d-tiles']?.loadGLTF) {\n if (!context) {\n return;\n }\n const {parse} = context;\n const gltfWithBuffers = await parse(arrayBuffer, GLTFLoader, options, context);\n tile.gltf = postProcessGLTF(gltfWithBuffers);\n tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);\n } else {\n tile.gltfArrayBuffer = arrayBuffer;\n }\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAAkF,SAG5DC,eAAeA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA9B,SAAAC,QACLC,IAAwB,EACxBC,WAAwB,EACxBC,OAA8B,EAC9BC,OAAuB;IAAA,IAAAC,gBAAA;IAAA,IAAAC,KAAA,EAAAC,eAAA;IAAA,OAAAT,YAAA,CAAAD,OAAA,CAAAW,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAKvBX,IAAI,CAACY,UAAU,GAAG,IAAI;UAEtBZ,IAAI,CAACa,UAAU,GACbX,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG,UAAU,CAAC,IAAIA,OAAO,CAAC,UAAU,CAAC,CAACY,eAAe,GACxDZ,OAAO,CAAC,UAAU,CAAC,CAACY,eAAe,GACnC,GAAG;UAAC,MAENZ,OAAO,aAAPA,OAAO,gBAAAE,gBAAA,GAAPF,OAAO,CAAG,UAAU,CAAC,cAAAE,gBAAA,eAArBA,gBAAA,CAAuBW,QAAQ;YAAAN,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,IAC5BR,OAAO;YAAAM,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAO,MAAA;QAAA;UAGLX,KAAK,GAAIF,OAAO,CAAhBE,KAAK;UAAAI,QAAA,CAAAE,IAAA;UAAA,OACkBN,KAAK,CAACJ,WAAW,EAAEgB,gBAAU,EAAEf,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAxEG,eAAe,GAAAG,QAAA,CAAAS,IAAA;UACrBlB,IAAI,CAACmB,IAAI,GAAG,IAAAC,qBAAe,EAACd,eAAe,CAAC;UAC5CN,IAAI,CAACqB,qBAAqB,GAAG,IAAAC,yBAAmB,EAACtB,IAAI,CAACmB,IAAI,CAAC;UAACV,QAAA,CAAAE,IAAA;UAAA;QAAA;UAE5DX,IAAI,CAACuB,eAAe,GAAGtB,WAAW;QAAC;QAAA;UAAA,OAAAQ,QAAA,CAAAe,IAAA;MAAA;IAAA,GAAAzB,OAAA;EAAA,CAEtC;EAAA,OAAAP,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"parse-3d-tile-gltf.js","names":["_loaderUtils","require","_gltf","parseGltf3DTile","_x","_x2","_x3","_x4","_parseGltf3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","tile","arrayBuffer","options","context","_options$3dTiles","_options$3dTiles2","gltfWithBuffers","wrap","_callee$","_context","prev","next","rotateYtoZ","gltfUpAxis","assetGltfUpAxis","loadGLTF","abrupt","byteLength","parseFromContext","GLTFLoader","sent","gltf","postProcessGLTF","gpuMemoryUsageInBytes","_getMemoryUsageGLTF","gltfArrayBuffer","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {parseFromContext, LoaderContext} from '@loaders.gl/loader-utils';\nimport {_getMemoryUsageGLTF, GLTFLoader, postProcessGLTF} from '@loaders.gl/gltf';\nimport type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {Tiles3DTileContent} from '../../types';\n\nexport async function parseGltf3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<number> {\n // Set flags\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n tile.rotateYtoZ = true;\n // Save gltf up axis\n tile.gltfUpAxis = options?.['3d-tiles']?.assetGltfUpAxis\n ? options['3d-tiles'].assetGltfUpAxis\n : 'Y';\n\n if (options?.['3d-tiles']?.loadGLTF) {\n if (!context) {\n return arrayBuffer.byteLength;\n }\n const gltfWithBuffers = await parseFromContext(arrayBuffer, GLTFLoader, options, context);\n tile.gltf = postProcessGLTF(gltfWithBuffers);\n tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);\n } else {\n tile.gltfArrayBuffer = arrayBuffer;\n }\n return arrayBuffer.byteLength;\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAkF,SAI5DE,eAAeA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA9B,SAAAC,QACLC,IAAwB,EACxBC,WAAwB,EACxBC,OAA8B,EAC9BC,OAAuB;IAAA,IAAAC,gBAAA,EAAAC,iBAAA;IAAA,IAAAC,eAAA;IAAA,OAAAT,YAAA,CAAAD,OAAA,CAAAW,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAKvBX,IAAI,CAACY,UAAU,GAAG,IAAI;UAEtBZ,IAAI,CAACa,UAAU,GAAGX,OAAO,aAAPA,OAAO,gBAAAE,gBAAA,GAAPF,OAAO,CAAG,UAAU,CAAC,cAAAE,gBAAA,eAArBA,gBAAA,CAAuBU,eAAe,GACpDZ,OAAO,CAAC,UAAU,CAAC,CAACY,eAAe,GACnC,GAAG;UAAC,MAEJZ,OAAO,aAAPA,OAAO,gBAAAG,iBAAA,GAAPH,OAAO,CAAG,UAAU,CAAC,cAAAG,iBAAA,eAArBA,iBAAA,CAAuBU,QAAQ;YAAAN,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,IAC5BR,OAAO;YAAAM,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAO,MAAA,WACHf,WAAW,CAACgB,UAAU;QAAA;UAAAR,QAAA,CAAAE,IAAA;UAAA,OAED,IAAAO,6BAAgB,EAACjB,WAAW,EAAEkB,gBAAU,EAAEjB,OAAO,EAAEC,OAAO,CAAC;QAAA;UAAnFG,eAAe,GAAAG,QAAA,CAAAW,IAAA;UACrBpB,IAAI,CAACqB,IAAI,GAAG,IAAAC,qBAAe,EAAChB,eAAe,CAAC;UAC5CN,IAAI,CAACuB,qBAAqB,GAAG,IAAAC,yBAAmB,EAACxB,IAAI,CAACqB,IAAI,CAAC;UAACZ,QAAA,CAAAE,IAAA;UAAA;QAAA;UAE5DX,IAAI,CAACyB,eAAe,GAAGxB,WAAW;QAAC;UAAA,OAAAQ,QAAA,CAAAO,MAAA,WAE9Bf,WAAW,CAACgB,UAAU;QAAA;QAAA;UAAA,OAAAR,QAAA,CAAAiB,IAAA;MAAA;IAAA,GAAA3B,OAAA;EAAA,CAC9B;EAAA,OAAAP,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
@@ -11,6 +11,7 @@ exports.normalizeTileHeaders = normalizeTileHeaders;
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _loaderUtils = require("@loaders.gl/loader-utils");
14
15
  var _tile3dSubtreeLoader = require("../../tile-3d-subtree-loader");
15
16
  var _core = require("@loaders.gl/core");
16
17
  var _tiles = require("@loaders.gl/tiles");
@@ -62,7 +63,7 @@ function resolveUri() {
62
63
  } else if (uri.startsWith('/')) {
63
64
  return uri;
64
65
  }
65
- return "".concat(basePath, "/").concat(uri);
66
+ return _loaderUtils.path.resolve(basePath, uri);
66
67
  }
67
68
  function normalizeTileData(tile, basePath) {
68
69
  if (!tile) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-header.js","names":["_tile3dSubtreeLoader","require","_core","_tiles","_parse3dImplicitTiles","_s2CornersToObb","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","getTileType","tile","tileContentUrl","undefined","TILE_TYPE","EMPTY","contentUrl","split","fileExtension","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","url","URL","concat","decodeURI","startsWith","normalizeTileData","content","_tile$content","contentUri","tilePostprocessed","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","_x","_x2","_x3","_normalizeTileHeaders","_asyncToGenerator2","_regenerator","mark","_callee","tileset","options","root","rootImplicitTilingExtension","stack","_tile","children","childrenPostprocessed","_iterator","_step","childHeader","childImplicitTilingExtension","childHeaderPostprocessed","wrap","_callee$","_context","prev","getImplicitTilingExtensionData","normalizeImplicitTileHeaders","sent","t0","finish","abrupt","stop","_x4","_x5","_x6","_x7","_x8","_normalizeImplicitTileHeaders","_callee2","implicitTilingExtension","_tile$content2","_tileset$root","_tile$boundingVolume$","subdivisionScheme","maximumLevel","availableLevels","subtreeLevels","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","s2VolumeInfo","box","s2VolumeBox","rootBoundingVolume","implicitOptions","_callee2$","_context2","subtrees","replaceContentUrlTemplate","load","Tile3DSubtreeLoader","boundingVolume","extensions","convertS2BoundingVolumetoOBB","Number","isFinite","normalizeImplicitTileData","_x9","_x10","_x11","_x12","_x13","_normalizeImplicitTileData","_callee3","rootSubtree","loaderOptions","_yield$parseImplicitT","tileContent","_callee3$","_context3","parseImplicitTiles","replace","_tile$extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {\n ImplicitTilingExensionData,\n Subtree,\n Tile3DBoundingVolume,\n Tiles3DTileContentJSON,\n Tiles3DTileJSON,\n Tiles3DTileJSONPostprocessed,\n Tiles3DTilesetJSON\n} from '../../types';\nimport type {S2VolumeBox} from './helpers/parse-3d-implicit-tiles';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\nimport type {S2VolumeInfo} from '../utils/obb/s2-corners-to-obb';\nimport {convertS2BoundingVolumetoOBB} from '../utils/obb/s2-corners-to-obb';\n\n/** Options for recursive loading implicit subtrees */\nexport type ImplicitOptions = {\n /** Template of the full url of the content template */\n contentUrlTemplate: string;\n /** Template of the full url of the subtree */\n subtreesUriTemplate: string;\n /** Implicit subdivision scheme */\n subdivisionScheme: 'QUADTREE' | 'OCTREE' | string;\n /** Levels per subtree */\n subtreeLevels: number;\n /** Maximum implicit level through all subtrees */\n maximumLevel?: number;\n /** 3DTiles refine method (add/replace) */\n refine?: string;\n /** Tileset base path */\n basePath: string;\n /** 3DTiles LOD metric type */\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n /** Root metric value of the root tile of the implicit subtrees */\n rootLodMetricValue: number;\n /** Bounding volume of the root tile of the implicit subtrees */\n rootBoundingVolume: Tile3DBoundingVolume;\n /** Function that detects TILE_TYPE by tile metadata and content URL */\n getTileType: (tile: Tiles3DTileJSON, tileContentUrl?: string) => TILE_TYPE | string;\n /** Function that converts string refine method to enum value */\n getRefine: (refine?: string) => TILE_REFINEMENT | string | undefined;\n};\n\nfunction getTileType(tile: Tiles3DTileJSON, tileContentUrl: string = ''): TILE_TYPE | string {\n if (!tileContentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tileContentUrl.split('?')[0]; // Discard query string\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension || TILE_TYPE.EMPTY;\n }\n}\n\nfunction getRefine(refine?: string): TILE_REFINEMENT | string | undefined {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri: string = '', basePath: string): string {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(\n tile: Tiles3DTileJSON | null,\n basePath: string\n): Tiles3DTileJSONPostprocessed | null {\n if (!tile) {\n return null;\n }\n let tileContentUrl: string | undefined;\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content?.url;\n tileContentUrl = resolveUri(contentUri, basePath);\n }\n const tilePostprocessed: Tiles3DTileJSONPostprocessed = {\n ...tile,\n id: tileContentUrl,\n contentUrl: tileContentUrl,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tile.geometricError,\n transformMatrix: tile.transform,\n type: getTileType(tile, tileContentUrl),\n refine: getRefine(tile.refine)\n };\n\n return tilePostprocessed;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tiles3DTilesetJSON,\n basePath: string,\n options: LoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n let root: Tiles3DTileJSONPostprocessed | null = null;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n basePath,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, basePath);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n const childrenPostprocessed: Tiles3DTileJSONPostprocessed[] = [];\n for (const childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n let childHeaderPostprocessed: Tiles3DTileJSONPostprocessed | null;\n if (childImplicitTilingExtension) {\n childHeaderPostprocessed = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n basePath,\n childImplicitTilingExtension,\n options\n );\n } else {\n childHeaderPostprocessed = normalizeTileData(childHeader, basePath);\n }\n\n if (childHeaderPostprocessed) {\n childrenPostprocessed.push(childHeaderPostprocessed);\n stack.push(childHeaderPostprocessed);\n }\n }\n tile.children = childrenPostprocessed;\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tiles3DTileJSON,\n tileset: Tiles3DTilesetJSON,\n basePath: string,\n implicitTilingExtension: ImplicitTilingExensionData,\n options: Tiles3DLoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n const {\n subdivisionScheme,\n maximumLevel,\n availableLevels,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content?.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n\n // Replace tile.boundingVolume with the the bounding volume specified by the extensions['3DTILES_bounding_volume_S2']\n const s2VolumeInfo: S2VolumeInfo = tile.boundingVolume.extensions?.['3DTILES_bounding_volume_S2'];\n if (s2VolumeInfo) {\n const box = convertS2BoundingVolumetoOBB(s2VolumeInfo);\n const s2VolumeBox: S2VolumeBox = {box, s2VolumeInfo};\n tile.boundingVolume = s2VolumeBox;\n }\n\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions: ImplicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(\n tile: Tiles3DTileJSON,\n basePath: string,\n rootSubtree: Subtree,\n implicitOptions: ImplicitOptions,\n loaderOptions: Tiles3DLoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n if (!tile) {\n return null;\n }\n\n const {children, contentUrl} = await parseImplicitTiles({\n subtree: rootSubtree,\n implicitOptions,\n loaderOptions\n });\n\n let tileContentUrl: string | undefined;\n let tileContent: Tiles3DTileContentJSON | null = null;\n if (contentUrl) {\n tileContentUrl = contentUrl;\n tileContent = {uri: contentUrl.replace(`${basePath}/`, '')};\n }\n const tilePostprocessed: Tiles3DTileJSONPostprocessed = {\n ...tile,\n id: tileContentUrl,\n contentUrl: tileContentUrl,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tile.geometricError,\n transformMatrix: tile.transform,\n type: getTileType(tile, tileContentUrl),\n refine: getRefine(tile.refine),\n content: tileContent || tile.content,\n children\n };\n\n return tilePostprocessed;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tiles3DTileJSON | null): ImplicitTilingExensionData {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile-header.js","names":["_loaderUtils","require","_tile3dSubtreeLoader","_core","_tiles","_parse3dImplicitTiles","_s2CornersToObb","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","getTileType","tile","tileContentUrl","undefined","TILE_TYPE","EMPTY","contentUrl","split","fileExtension","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","url","URL","concat","decodeURI","startsWith","path","resolve","normalizeTileData","content","_tile$content","contentUri","tilePostprocessed","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","_x","_x2","_x3","_normalizeTileHeaders","_asyncToGenerator2","_regenerator","mark","_callee","tileset","options","root","rootImplicitTilingExtension","stack","_tile","children","childrenPostprocessed","_iterator","_step","childHeader","childImplicitTilingExtension","childHeaderPostprocessed","wrap","_callee$","_context","prev","getImplicitTilingExtensionData","normalizeImplicitTileHeaders","sent","t0","finish","abrupt","stop","_x4","_x5","_x6","_x7","_x8","_normalizeImplicitTileHeaders","_callee2","implicitTilingExtension","_tile$content2","_tileset$root","_tile$boundingVolume$","subdivisionScheme","maximumLevel","availableLevels","subtreeLevels","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","s2VolumeInfo","box","s2VolumeBox","rootBoundingVolume","implicitOptions","_callee2$","_context2","subtrees","replaceContentUrlTemplate","load","Tile3DSubtreeLoader","boundingVolume","extensions","convertS2BoundingVolumetoOBB","Number","isFinite","normalizeImplicitTileData","_x9","_x10","_x11","_x12","_x13","_normalizeImplicitTileData","_callee3","rootSubtree","loaderOptions","_yield$parseImplicitT","tileContent","_callee3$","_context3","parseImplicitTiles","replace","_tile$extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {path} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {\n ImplicitTilingExensionData,\n Subtree,\n Tile3DBoundingVolume,\n Tiles3DTileContentJSON,\n Tiles3DTileJSON,\n Tiles3DTileJSONPostprocessed,\n Tiles3DTilesetJSON\n} from '../../types';\nimport type {S2VolumeBox} from './helpers/parse-3d-implicit-tiles';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\nimport type {S2VolumeInfo} from '../utils/obb/s2-corners-to-obb';\nimport {convertS2BoundingVolumetoOBB} from '../utils/obb/s2-corners-to-obb';\n\n/** Options for recursive loading implicit subtrees */\nexport type ImplicitOptions = {\n /** Template of the full url of the content template */\n contentUrlTemplate: string;\n /** Template of the full url of the subtree */\n subtreesUriTemplate: string;\n /** Implicit subdivision scheme */\n subdivisionScheme: 'QUADTREE' | 'OCTREE' | string;\n /** Levels per subtree */\n subtreeLevels: number;\n /** Maximum implicit level through all subtrees */\n maximumLevel?: number;\n /** 3DTiles refine method (add/replace) */\n refine?: string;\n /** Tileset base path */\n basePath: string;\n /** 3DTiles LOD metric type */\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n /** Root metric value of the root tile of the implicit subtrees */\n rootLodMetricValue: number;\n /** Bounding volume of the root tile of the implicit subtrees */\n rootBoundingVolume: Tile3DBoundingVolume;\n /** Function that detects TILE_TYPE by tile metadata and content URL */\n getTileType: (tile: Tiles3DTileJSON, tileContentUrl?: string) => TILE_TYPE | string;\n /** Function that converts string refine method to enum value */\n getRefine: (refine?: string) => TILE_REFINEMENT | string | undefined;\n};\n\nfunction getTileType(tile: Tiles3DTileJSON, tileContentUrl: string = ''): TILE_TYPE | string {\n if (!tileContentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tileContentUrl.split('?')[0]; // Discard query string\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension || TILE_TYPE.EMPTY;\n }\n}\n\nfunction getRefine(refine?: string): TILE_REFINEMENT | string | undefined {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri: string = '', basePath: string): string {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return path.resolve(basePath, uri);\n}\n\nexport function normalizeTileData(\n tile: Tiles3DTileJSON | null,\n basePath: string\n): Tiles3DTileJSONPostprocessed | null {\n if (!tile) {\n return null;\n }\n let tileContentUrl: string | undefined;\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content?.url;\n tileContentUrl = resolveUri(contentUri, basePath);\n }\n const tilePostprocessed: Tiles3DTileJSONPostprocessed = {\n ...tile,\n id: tileContentUrl,\n contentUrl: tileContentUrl,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tile.geometricError,\n transformMatrix: tile.transform,\n type: getTileType(tile, tileContentUrl),\n refine: getRefine(tile.refine)\n };\n\n return tilePostprocessed;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tiles3DTilesetJSON,\n basePath: string,\n options: LoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n let root: Tiles3DTileJSONPostprocessed | null = null;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n basePath,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, basePath);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n const childrenPostprocessed: Tiles3DTileJSONPostprocessed[] = [];\n for (const childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n let childHeaderPostprocessed: Tiles3DTileJSONPostprocessed | null;\n if (childImplicitTilingExtension) {\n childHeaderPostprocessed = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n basePath,\n childImplicitTilingExtension,\n options\n );\n } else {\n childHeaderPostprocessed = normalizeTileData(childHeader, basePath);\n }\n\n if (childHeaderPostprocessed) {\n childrenPostprocessed.push(childHeaderPostprocessed);\n stack.push(childHeaderPostprocessed);\n }\n }\n tile.children = childrenPostprocessed;\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tiles3DTileJSON,\n tileset: Tiles3DTilesetJSON,\n basePath: string,\n implicitTilingExtension: ImplicitTilingExensionData,\n options: Tiles3DLoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n const {\n subdivisionScheme,\n maximumLevel,\n availableLevels,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content?.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n\n // Replace tile.boundingVolume with the the bounding volume specified by the extensions['3DTILES_bounding_volume_S2']\n const s2VolumeInfo: S2VolumeInfo = tile.boundingVolume.extensions?.['3DTILES_bounding_volume_S2'];\n if (s2VolumeInfo) {\n const box = convertS2BoundingVolumetoOBB(s2VolumeInfo);\n const s2VolumeBox: S2VolumeBox = {box, s2VolumeInfo};\n tile.boundingVolume = s2VolumeBox;\n }\n\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions: ImplicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(\n tile: Tiles3DTileJSON,\n basePath: string,\n rootSubtree: Subtree,\n implicitOptions: ImplicitOptions,\n loaderOptions: Tiles3DLoaderOptions\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n if (!tile) {\n return null;\n }\n\n const {children, contentUrl} = await parseImplicitTiles({\n subtree: rootSubtree,\n implicitOptions,\n loaderOptions\n });\n\n let tileContentUrl: string | undefined;\n let tileContent: Tiles3DTileContentJSON | null = null;\n if (contentUrl) {\n tileContentUrl = contentUrl;\n tileContent = {uri: contentUrl.replace(`${basePath}/`, '')};\n }\n const tilePostprocessed: Tiles3DTileJSONPostprocessed = {\n ...tile,\n id: tileContentUrl,\n contentUrl: tileContentUrl,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tile.geometricError,\n transformMatrix: tile.transform,\n type: getTileType(tile, tileContentUrl),\n refine: getRefine(tile.refine),\n content: tileContent || tile.content,\n children\n };\n\n return tilePostprocessed;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tiles3DTileJSON | null): ImplicitTilingExensionData {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
@@ -10,6 +10,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
12
  var _draco = require("@loaders.gl/draco");
13
+ var _loaderUtils = require("@loaders.gl/loader-utils");
13
14
  var _math = require("@loaders.gl/math");
14
15
  var _core = require("@math.gl/core");
15
16
  var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
@@ -230,7 +231,7 @@ function loadDraco(_x11, _x12, _x13, _x14) {
230
231
  }
231
232
  function _loadDraco() {
232
233
  _loadDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, dracoData, options, context) {
233
- var parse, dracoOptions, data, decodedPositions, decodedColors, decodedNormals, decodedBatchIds, isQuantizedDraco, isOctEncodedDraco, quantization, range, batchTableAttributes, _i, _Object$keys, attributeName;
234
+ var dracoOptions, data, decodedPositions, decodedColors, decodedNormals, decodedBatchIds, isQuantizedDraco, isOctEncodedDraco, quantization, range, batchTableAttributes, _i, _Object$keys, attributeName;
234
235
  return _regenerator.default.wrap(function _callee3$(_context3) {
235
236
  while (1) switch (_context3.prev = _context3.next) {
236
237
  case 0:
@@ -240,16 +241,15 @@ function _loadDraco() {
240
241
  }
241
242
  return _context3.abrupt("return");
242
243
  case 2:
243
- parse = context.parse;
244
244
  dracoOptions = _objectSpread(_objectSpread({}, options), {}, {
245
245
  draco: _objectSpread(_objectSpread({}, options === null || options === void 0 ? void 0 : options.draco), {}, {
246
246
  extraAttributes: dracoData.batchTableProperties || {}
247
247
  })
248
248
  });
249
249
  delete dracoOptions['3d-tiles'];
250
- _context3.next = 7;
251
- return parse(dracoData.buffer, _draco.DracoLoader, dracoOptions);
252
- case 7:
250
+ _context3.next = 6;
251
+ return (0, _loaderUtils.parseFromContext)(dracoData.buffer, _draco.DracoLoader, dracoOptions, context);
252
+ case 6:
253
253
  data = _context3.sent;
254
254
  decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
255
255
  decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;
@@ -284,7 +284,7 @@ function _loadDraco() {
284
284
  normals: decodedNormals,
285
285
  batchIds: decodedBatchIds
286
286
  }, batchTableAttributes);
287
- case 19:
287
+ case 18:
288
288
  case "end":
289
289
  return _context3.stop();
290
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-point-cloud.js","names":["_draco","require","_math","_core","_tile3dFeatureTable","_interopRequireDefault","_tile3dBatchTable","_parse3dTileHeader","_parse3dTileTables","_normalize3dTileColors","_normalize3dTileNormals","_normalize3dTilePositions","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","parsePointCloud3DTile","_x","_x2","_x3","_x4","_x5","_parsePointCloud3DTile","_asyncToGenerator2","_regenerator","mark","_callee","tile","arrayBuffer","byteOffset","options","context","_parsePointCloudTable","featureTable","batchTable","wrap","_callee$","_context","prev","next","parse3DTileHeaderSync","parse3DTileTablesHeaderSync","parse3DTileTablesSync","initializeTile","parsePointCloudTables","parseDraco","parsePositions","parseColors","parseNormals","abrupt","stop","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","normalize3DTilePositionAttribute","UNSIGNED_BYTE","normalize3DTileColorAttribute","constantRGBA","normalize3DTileNormalAttribute","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","_x6","_x7","_x8","_x9","_x10","_parseDraco","_callee2","dracoBuffer","dracoFeatureTableProperties","dracoBatchTableProperties","batchTableDraco","featureTableDraco","dracoByteOffset","dracoByteLength","dracoData","_callee2$","_context2","extensions","properties","getExtension","byteLength","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","sent","_x11","_x12","_x13","_x14","_loadDraco","_callee3","parse","dracoOptions","data","decodedPositions","decodedColors","decodedNormals","decodedBatchIds","isQuantizedDraco","isOctEncodedDraco","quantization","range","batchTableAttributes","_i","_Object$keys","attributeName","_callee3$","_context3","draco","extraAttributes","DracoLoader","value","COLOR_0","Vector3","minValues","quantizationBits","octEncodedRange","toLowerCase","undefined"],"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {LoaderContext} from '@loaders.gl/loader-utils';\nimport {Tiles3DTileContent} from '../../types';\n\nexport async function parsePointCloud3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<number> {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n // @ts-expect-error TODO - do we need to assert on the batch table?\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile: Tiles3DTileContent): void {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile: Tiles3DTileContent): {\n featureTable: Tile3DFeatureTable;\n batchTable: Tile3DBatchTable | null;\n} {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n options: Tiles3DLoaderOptions | undefined\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable: Tile3DBatchTable\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile: Tiles3DTileContent, featureTable: Tile3DFeatureTable): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable\n): Tile3DBatchTable | null {\n let batchTable: Tile3DBatchTable | null = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = (tile.featureTableBinary || []).slice(\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(\n tile: Tiles3DTileContent,\n dracoData,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n if (!context) {\n return;\n }\n const {parse} = context;\n const dracoOptions = {\n ...options,\n draco: {\n ...options?.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n positions: decodedPositions,\n colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n normals: decodedNormals,\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile-point-cloud.js","names":["_draco","require","_loaderUtils","_math","_core","_tile3dFeatureTable","_interopRequireDefault","_tile3dBatchTable","_parse3dTileHeader","_parse3dTileTables","_normalize3dTileColors","_normalize3dTileNormals","_normalize3dTilePositions","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","parsePointCloud3DTile","_x","_x2","_x3","_x4","_x5","_parsePointCloud3DTile","_asyncToGenerator2","_regenerator","mark","_callee","tile","arrayBuffer","byteOffset","options","context","_parsePointCloudTable","featureTable","batchTable","wrap","_callee$","_context","prev","next","parse3DTileHeaderSync","parse3DTileTablesHeaderSync","parse3DTileTablesSync","initializeTile","parsePointCloudTables","parseDraco","parsePositions","parseColors","parseNormals","abrupt","stop","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","normalize3DTilePositionAttribute","UNSIGNED_BYTE","normalize3DTileColorAttribute","constantRGBA","normalize3DTileNormalAttribute","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","_x6","_x7","_x8","_x9","_x10","_parseDraco","_callee2","dracoBuffer","dracoFeatureTableProperties","dracoBatchTableProperties","batchTableDraco","featureTableDraco","dracoByteOffset","dracoByteLength","dracoData","_callee2$","_context2","extensions","properties","getExtension","byteLength","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","sent","_x11","_x12","_x13","_x14","_loadDraco","_callee3","dracoOptions","data","decodedPositions","decodedColors","decodedNormals","decodedBatchIds","isQuantizedDraco","isOctEncodedDraco","quantization","range","batchTableAttributes","_i","_Object$keys","attributeName","_callee3$","_context3","draco","extraAttributes","parseFromContext","DracoLoader","value","COLOR_0","Vector3","minValues","quantizationBits","octEncodedRange","toLowerCase","undefined"],"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {LoaderContext, parseFromContext} from '@loaders.gl/loader-utils';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {Tiles3DTileContent} from '../../types';\n\nexport async function parsePointCloud3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<number> {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n // @ts-expect-error TODO - do we need to assert on the batch table?\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile: Tiles3DTileContent): void {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile: Tiles3DTileContent): {\n featureTable: Tile3DFeatureTable;\n batchTable: Tile3DBatchTable | null;\n} {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n options: Tiles3DLoaderOptions | undefined\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable: Tile3DBatchTable\n): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile: Tiles3DTileContent, featureTable: Tile3DFeatureTable): void {\n tile.attributes = tile.attributes || {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable\n): Tile3DBatchTable | null {\n let batchTable: Tile3DBatchTable | null = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(\n tile: Tiles3DTileContent,\n featureTable: Tile3DFeatureTable,\n batchTable,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = (tile.featureTableBinary || []).slice(\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(\n tile: Tiles3DTileContent,\n dracoData,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n if (!context) {\n return;\n }\n const dracoOptions = {\n ...options,\n draco: {\n ...options?.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parseFromContext(dracoData.buffer, DracoLoader, dracoOptions, context);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n // @ts-expect-error\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n // @ts-expect-error\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n // @ts-expect-error This doesn't look right\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n // @ts-expect-error This doesn't look right\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n // @ts-expect-error\n positions: decodedPositions,\n // @ts-expect-error\n colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n // @ts-expect-error\n normals: decodedNormals,\n // @ts-expect-error\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"mappings":"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"}
@@ -30,7 +30,9 @@ function _parse3DTile() {
30
30
  byteOffset = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
31
31
  options = _args.length > 2 ? _args[2] : undefined;
32
32
  context = _args.length > 3 ? _args[3] : undefined;
33
- tile = _args.length > 4 && _args[4] !== undefined ? _args[4] : {};
33
+ tile = _args.length > 4 && _args[4] !== undefined ? _args[4] : {
34
+ shape: 'tile3d'
35
+ };
34
36
  tile.byteOffset = byteOffset;
35
37
  tile.type = (0, _parseUtils.getMagicString)(arrayBuffer, byteOffset);
36
38
  _context.t0 = tile.type;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile.js","names":["_constants","require","_parseUtils","_parse3dTilePointCloud","_parse3dTileBatchedModel","_parse3dTileInstancedModel","_parse3dTileComposite","_parse3dTileGltf","parse3DTile","_x","_parse3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","byteOffset","options","context","tile","_args","wrap","_callee$","_context","prev","next","length","undefined","type","getMagicString","t0","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","parseComposite3DTile","abrupt","sent","parseBatchedModel3DTile","parseGltf3DTile","parseInstancedModel3DTile","parsePointCloud3DTile","Error","concat","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\nimport {LoaderContext} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {Tiles3DTileContent} from '../../types';\n\n// Extracts\nexport async function parse3DTile(\n arrayBuffer: ArrayBuffer,\n byteOffset = 0,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n tile: Tiles3DTileContent = {}\n) {\n tile.byteOffset = byteOffset;\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile.js","names":["_constants","require","_parseUtils","_parse3dTilePointCloud","_parse3dTileBatchedModel","_parse3dTileInstancedModel","_parse3dTileComposite","_parse3dTileGltf","parse3DTile","_x","_parse3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","byteOffset","options","context","tile","_args","wrap","_callee$","_context","prev","next","length","undefined","shape","type","getMagicString","t0","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","parseComposite3DTile","abrupt","sent","parseBatchedModel3DTile","parseGltf3DTile","parseInstancedModel3DTile","parsePointCloud3DTile","Error","concat","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\nimport {LoaderContext} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {Tiles3DTileContent} from '../../types';\n\n// Extracts\nexport async function parse3DTile(\n arrayBuffer: ArrayBuffer,\n byteOffset = 0,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n tile: Tiles3DTileContent = {shape: 'tile3d'}\n): Promise<number> {\n tile.byteOffset = byteOffset;\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":"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"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "4.0.0-alpha.21" !== 'undefined' ? "4.0.0-alpha.21" : 'latest';
7
+ var VERSION = typeof "4.0.0-alpha.23" !== 'undefined' ? "4.0.0-alpha.23" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -82,6 +82,7 @@ function _parseTileset() {
82
82
  case 5:
83
83
  normalizedRoot = _context2.sent;
84
84
  tilesetJsonPostprocessed = _objectSpread(_objectSpread({}, tilesetJson), {}, {
85
+ shape: 'tileset3d',
85
86
  loader: Tiles3DLoader,
86
87
  url: tilesetUrl,
87
88
  queryString: (context === null || context === void 0 ? void 0 : context.queryString) || '',
@@ -111,6 +112,7 @@ function _parseTile() {
111
112
  case 0:
112
113
  tile = {
113
114
  content: {
115
+ shape: 'tile3d',
114
116
  featureIds: null
115
117
  }
116
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tiles-3d-loader.js","names":["_loaderUtils","require","_tiles","_version","_parse3dTile","_parse3dTileHeader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Tiles3DLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","exports","_x","_parse","_asyncToGenerator2","_regenerator","mark","_callee","data","context","loaderOptions","_args","wrap","_callee$","_context","prev","next","undefined","url","indexOf","abrupt","parseTileset","parseTile","stop","_x2","_x3","_x4","_parseTileset","_callee2","_tilesetJson$root","tilesetJson","tilesetUrl","basePath","normalizedRoot","tilesetJsonPostprocessed","_callee2$","_context2","JSON","TextDecoder","decode","getBaseUri","normalizeTileHeaders","sent","loader","queryString","root","type","TILESET_TYPE","TILES3D","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","_x5","_x6","_x7","_parseTile","_callee3","arrayBuffer","tile","byteOffset","_callee3$","_context3","content","featureIds","parse3DTile","path","dirname"],"sources":["../../src/tiles-3d-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\n// / import type { GLTFLoaderOptions } from '@loaders.gl/gltf';\nimport type {DracoLoaderOptions} from '@loaders.gl/draco';\nimport type {ImageLoaderOptions} from '@loaders.gl/images';\n\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';\nimport {Tiles3DTilesetJSON, Tiles3DTilesetJSONPostprocessed} from './types';\n\nexport type Tiles3DLoaderOptions = LoaderOptions &\n // GLTFLoaderOptions & - TODO not yet exported\n DracoLoaderOptions &\n ImageLoaderOptions & {\n '3d-tiles'?: {\n /** Whether to parse any embedded glTF binaries (or extract memory for independent glTF parsing) */\n loadGLTF?: boolean;\n /** If renderer doesn't support quantized positions, loader can decode them on CPU */\n decodeQuantizedPositions?: boolean;\n /** Whether this is a tileset or a tile */\n isTileset?: boolean | 'auto';\n /** Controls which axis is \"up\" in glTF files */\n assetGltfUpAxis?: 'x' | 'y' | 'z' | null;\n };\n };\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\n/** Parses a tileset or tile */\nasync function parse(data, options: Tiles3DLoaderOptions = {}, context?: LoaderContext) {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context?.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n return isTileset ? parseTileset(data, options, context) : parseTile(data, options, context);\n}\n\n/** Parse a tileset */\nasync function parseTileset(\n data: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<Tiles3DTilesetJSONPostprocessed> {\n const tilesetJson: Tiles3DTilesetJSON = JSON.parse(new TextDecoder().decode(data));\n\n const tilesetUrl = context?.url || '';\n const basePath = getBaseUri(tilesetUrl);\n const normalizedRoot = await normalizeTileHeaders(tilesetJson, basePath, options || {});\n const tilesetJsonPostprocessed: Tiles3DTilesetJSONPostprocessed = {\n ...tilesetJson,\n loader: Tiles3DLoader,\n url: tilesetUrl,\n queryString: context?.queryString || '',\n basePath,\n root: normalizedRoot || tilesetJson.root,\n type: TILESET_TYPE.TILES3D,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tilesetJson.root?.geometricError || 0\n };\n return tilesetJsonPostprocessed;\n}\n\n/** Parse a tile */\nasync function parseTile(\n arrayBuffer: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n) {\n const tile = {\n content: {\n featureIds: null\n }\n };\n const byteOffset = 0;\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n return tile.content;\n}\n\n/** Get base name */\nfunction getBaseUri(tilesetUrl: string): string {\n return path.dirname(tilesetUrl);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tiles-3d-loader.js","names":["_loaderUtils","require","_tiles","_version","_parse3dTile","_parse3dTileHeader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Tiles3DLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","exports","_x","_parse","_asyncToGenerator2","_regenerator","mark","_callee","data","context","loaderOptions","_args","wrap","_callee$","_context","prev","next","undefined","url","indexOf","abrupt","parseTileset","parseTile","stop","_x2","_x3","_x4","_parseTileset","_callee2","_tilesetJson$root","tilesetJson","tilesetUrl","basePath","normalizedRoot","tilesetJsonPostprocessed","_callee2$","_context2","JSON","TextDecoder","decode","getBaseUri","normalizeTileHeaders","sent","shape","loader","queryString","root","type","TILESET_TYPE","TILES3D","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","_x5","_x6","_x7","_parseTile","_callee3","arrayBuffer","tile","byteOffset","_callee3$","_context3","content","featureIds","parse3DTile","path","dirname"],"sources":["../../src/tiles-3d-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\n// / import type { GLTFLoaderOptions } from '@loaders.gl/gltf';\nimport type {DracoLoaderOptions} from '@loaders.gl/draco';\nimport type {ImageLoaderOptions} from '@loaders.gl/images';\n\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';\nimport {Tiles3DTilesetJSON, Tiles3DTileContent, Tiles3DTilesetJSONPostprocessed} from './types';\n\nexport type Tiles3DLoaderOptions = LoaderOptions &\n // GLTFLoaderOptions & - TODO not yet exported\n DracoLoaderOptions &\n ImageLoaderOptions & {\n '3d-tiles'?: {\n /** Whether to parse any embedded glTF binaries (or extract memory for independent glTF parsing) */\n loadGLTF?: boolean;\n /** If renderer doesn't support quantized positions, loader can decode them on CPU */\n decodeQuantizedPositions?: boolean;\n /** Whether this is a tileset or a tile */\n isTileset?: boolean | 'auto';\n /** Controls which axis is \"up\" in glTF files */\n assetGltfUpAxis?: 'x' | 'y' | 'z' | null;\n };\n };\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser<\n any, // Tiles3DTileContent | Tiles3DTilesetJSONPostprocessed,\n never,\n Tiles3DLoaderOptions\n> = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\n/** Parses a tileset or tile */\nasync function parse(\n data,\n options: Tiles3DLoaderOptions = {},\n context?: LoaderContext\n): Promise<Tiles3DTileContent | Tiles3DTilesetJSONPostprocessed> {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context?.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n return isTileset ? parseTileset(data, options, context) : parseTile(data, options, context);\n}\n\n/** Parse a tileset */\nasync function parseTileset(\n data: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<Tiles3DTilesetJSONPostprocessed> {\n const tilesetJson: Tiles3DTilesetJSON = JSON.parse(new TextDecoder().decode(data));\n\n const tilesetUrl = context?.url || '';\n const basePath = getBaseUri(tilesetUrl);\n const normalizedRoot = await normalizeTileHeaders(tilesetJson, basePath, options || {});\n const tilesetJsonPostprocessed: Tiles3DTilesetJSONPostprocessed = {\n ...tilesetJson,\n shape: 'tileset3d',\n loader: Tiles3DLoader,\n url: tilesetUrl,\n queryString: context?.queryString || '',\n basePath,\n root: normalizedRoot || tilesetJson.root,\n type: TILESET_TYPE.TILES3D,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n lodMetricValue: tilesetJson.root?.geometricError || 0\n };\n return tilesetJsonPostprocessed;\n}\n\n/** Parse a tile */\nasync function parseTile(\n arrayBuffer: ArrayBuffer,\n options?: Tiles3DLoaderOptions,\n context?: LoaderContext\n): Promise<Tiles3DTileContent> {\n const tile = {\n content: {\n shape: 'tile3d',\n featureIds: null\n }\n };\n const byteOffset = 0;\n // @ts-expect-error\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n // @ts-expect-error\n return tile.content;\n}\n\n/** Get base name */\nfunction getBaseUri(tilesetUrl: string): string {\n return path.dirname(tilesetUrl);\n}\n"],"mappings":"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"}