@loaders.gl/3d-tiles 4.0.0-alpha.9 → 4.0.0-beta.2

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 (170) 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/3d-tiles-archive/3d-tiles-archive-parser.d.ts +10 -0
  4. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts.map +1 -0
  5. package/dist/3d-tiles-archive-loader.d.ts +13 -0
  6. package/dist/3d-tiles-archive-loader.d.ts.map +1 -0
  7. package/dist/cesium-ion-loader.d.ts +2 -2
  8. package/dist/cesium-ion-loader.d.ts.map +1 -1
  9. package/dist/dist.min.js +10981 -4462
  10. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js +126 -0
  11. package/dist/es5/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  12. package/dist/es5/3d-tiles-archive/3d-tiles-archive-parser.js +69 -0
  13. package/dist/es5/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  14. package/dist/es5/3d-tiles-archive-loader.js +50 -0
  15. package/dist/es5/3d-tiles-archive-loader.js.map +1 -0
  16. package/dist/es5/cesium-ion-loader.js.map +1 -1
  17. package/dist/es5/index.js +14 -0
  18. package/dist/es5/index.js.map +1 -1
  19. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js +151 -0
  20. package/dist/es5/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  21. package/dist/es5/lib/ion/ion.js +3 -9
  22. package/dist/es5/lib/ion/ion.js.map +1 -1
  23. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +63 -38
  24. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  25. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +3 -3
  26. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  27. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +70 -55
  28. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  29. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +3 -1
  30. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  31. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +14 -12
  32. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  33. package/dist/es5/lib/parsers/parse-3d-tile-header.js +14 -12
  34. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  35. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +6 -6
  36. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  37. package/dist/es5/lib/parsers/parse-3d-tile.js +3 -1
  38. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  39. package/dist/es5/lib/utils/version.js +1 -1
  40. package/dist/es5/lib/utils/version.js.map +1 -1
  41. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  42. package/dist/es5/tile-3d-writer.js.map +1 -1
  43. package/dist/es5/tiles-3d-loader.js +2 -0
  44. package/dist/es5/tiles-3d-loader.js.map +1 -1
  45. package/dist/es5/types.js.map +1 -1
  46. package/dist/esm/3d-tiles-archive/3d-tiles-archive-archive.js +46 -0
  47. package/dist/esm/3d-tiles-archive/3d-tiles-archive-archive.js.map +1 -0
  48. package/dist/esm/3d-tiles-archive/3d-tiles-archive-parser.js +23 -0
  49. package/dist/esm/3d-tiles-archive/3d-tiles-archive-parser.js.map +1 -0
  50. package/dist/esm/3d-tiles-archive-loader.js +20 -0
  51. package/dist/esm/3d-tiles-archive-loader.js.map +1 -0
  52. package/dist/esm/cesium-ion-loader.js.map +1 -1
  53. package/dist/esm/index.js +2 -0
  54. package/dist/esm/index.js.map +1 -1
  55. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js +49 -0
  56. package/dist/esm/lib/filesystems/tiles-3d-archive-file-system.js.map +1 -0
  57. package/dist/esm/lib/ion/ion.js +3 -9
  58. package/dist/esm/lib/ion/ion.js.map +1 -1
  59. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +45 -23
  60. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  61. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +5 -6
  62. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  63. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +18 -24
  64. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  65. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +3 -1
  66. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  67. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +7 -8
  68. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  69. package/dist/esm/lib/parsers/parse-3d-tile-header.js +8 -5
  70. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  71. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +2 -4
  72. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  73. package/dist/esm/lib/parsers/parse-3d-tile.js +3 -1
  74. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  75. package/dist/esm/lib/utils/version.js +1 -1
  76. package/dist/esm/lib/utils/version.js.map +1 -1
  77. package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
  78. package/dist/esm/tile-3d-writer.js.map +1 -1
  79. package/dist/esm/tiles-3d-loader.js +2 -0
  80. package/dist/esm/tiles-3d-loader.js.map +1 -1
  81. package/dist/esm/types.js.map +1 -1
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts +32 -0
  85. package/dist/lib/filesystems/tiles-3d-archive-file-system.d.ts.map +1 -0
  86. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +4 -1
  87. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  88. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -1
  89. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  90. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -2
  91. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
  92. package/dist/lib/parsers/parse-3d-tile-header.d.ts +30 -2
  93. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  94. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +1 -1
  95. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -1
  96. package/dist/lib/parsers/parse-3d-tile.d.ts +1 -1
  97. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
  98. package/dist/tile-3d-subtree-loader.d.ts +3 -3
  99. package/dist/tile-3d-subtree-loader.d.ts.map +1 -1
  100. package/dist/tile-3d-writer.d.ts +2 -2
  101. package/dist/tile-3d-writer.d.ts.map +1 -1
  102. package/dist/tiles-3d-loader.d.ts +2 -1
  103. package/dist/tiles-3d-loader.d.ts.map +1 -1
  104. package/dist/types.d.ts +49 -8
  105. package/dist/types.d.ts.map +1 -1
  106. package/package.json +9 -7
  107. package/src/3d-tiles-archive/3d-tiles-archive-archive.ts +85 -0
  108. package/src/3d-tiles-archive/3d-tiles-archive-parser.ts +52 -0
  109. package/src/3d-tiles-archive-loader.ts +47 -0
  110. package/src/cesium-ion-loader.ts +2 -3
  111. package/src/index.ts +3 -0
  112. package/src/lib/filesystems/tiles-3d-archive-file-system.ts +97 -0
  113. package/src/lib/ion/ion.ts +3 -3
  114. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +76 -32
  115. package/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts +8 -3
  116. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +44 -62
  117. package/src/lib/parsers/parse-3d-tile-composite.ts +1 -1
  118. package/src/lib/parsers/parse-3d-tile-gltf.ts +11 -10
  119. package/src/lib/parsers/parse-3d-tile-header.ts +39 -6
  120. package/src/lib/parsers/parse-3d-tile-point-cloud.ts +10 -3
  121. package/src/lib/parsers/parse-3d-tile.ts +2 -2
  122. package/src/tile-3d-subtree-loader.ts +3 -3
  123. package/src/tile-3d-writer.ts +2 -2
  124. package/src/tiles-3d-loader.ts +16 -4
  125. package/src/types.ts +52 -9
  126. package/dist/bundle.js +0 -5
  127. package/dist/cesium-ion-loader.js +0 -41
  128. package/dist/index.js +0 -26
  129. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +0 -113
  130. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +0 -197
  131. package/dist/lib/classes/tile-3d-batch-table.js +0 -245
  132. package/dist/lib/classes/tile-3d-feature-table.js +0 -72
  133. package/dist/lib/constants.js +0 -26
  134. package/dist/lib/encoders/encode-3d-tile-batched-model.js +0 -46
  135. package/dist/lib/encoders/encode-3d-tile-composite.js +0 -24
  136. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +0 -38
  137. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +0 -39
  138. package/dist/lib/encoders/encode-3d-tile.js +0 -33
  139. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +0 -30
  140. package/dist/lib/ion/ion.js +0 -68
  141. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +0 -65
  142. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -30
  143. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -42
  144. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +0 -266
  145. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +0 -96
  146. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +0 -28
  147. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -104
  148. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +0 -93
  149. package/dist/lib/parsers/helpers/parse-utils.js +0 -32
  150. package/dist/lib/parsers/parse-3d-tile-batched-model.js +0 -33
  151. package/dist/lib/parsers/parse-3d-tile-composite.js +0 -24
  152. package/dist/lib/parsers/parse-3d-tile-gltf.js +0 -28
  153. package/dist/lib/parsers/parse-3d-tile-header.js +0 -192
  154. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +0 -172
  155. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +0 -433
  156. package/dist/lib/parsers/parse-3d-tile.js +0 -33
  157. package/dist/lib/utils/obb/s2-corners-to-obb.js +0 -37
  158. package/dist/lib/utils/s2/converters/s2-to-boundary.js +0 -61
  159. package/dist/lib/utils/s2/converters/s2-to-obb-points.js +0 -36
  160. package/dist/lib/utils/s2/converters/s2-to-region.js +0 -59
  161. package/dist/lib/utils/s2/index.js +0 -23
  162. package/dist/lib/utils/s2/s2-geometry-functions.js +0 -29
  163. package/dist/lib/utils/s2/s2-token-functions.js +0 -68
  164. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.js +0 -32
  165. package/dist/lib/utils/s2/s2geometry/s2-geometry.js +0 -260
  166. package/dist/lib/utils/version.js +0 -7
  167. package/dist/tile-3d-subtree-loader.js +0 -23
  168. package/dist/tile-3d-writer.js +0 -27
  169. package/dist/tiles-3d-loader.js +0 -76
  170. package/dist/types.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-subtree.js","names":["SUBTREE_FILE_MAGIC","SUBTREE_FILE_VERSION","parse3DTilesSubtree","_x","_x2","_x3","_parse3DTilesSubtree","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","options","context","magic","version","jsonByteLength","stringAttribute","textDecoder","string","subtree","binaryByteLength","internalBinaryBuffer","wrap","_callee$","_context","prev","next","Uint32Array","slice","Error","parseUint64Value","Uint8Array","TextDecoder","decode","JSON","parse","ArrayBuffer","tileAvailability","getExplicitBitstream","explicitBitstream","sent","contentAvailability","childSubtreeAvailability","abrupt","stop","resolveBufferUri","bitstreamRelativeUri","basePath","hasProtocol","startsWith","resolvedUri","URL","decodeURI","toString","basePathWithProtocol","concat","host","pathname","_x4","_x5","_x6","_x7","_getExplicitBitstream","_callee2","name","bufferViewIndex","bufferView","buffer","bufferUri","response","_callee2$","_context2","bufferViews","buffers","url","fetch","uri","arrayBuffer","byteOffset","byteLength","dataView","DataView","left","getUint32","right","Math","pow"],"sources":["../../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"sourcesContent":["import type {Subtree, ExplicitBitstream} from '../../../types';\nimport type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\n\nconst SUBTREE_FILE_MAGIC = 0x74627573;\nconst SUBTREE_FILE_VERSION = 1;\n\n/**\n * Parse subtree file\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format\n * @param data\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport default async function parse3DTilesSubtree(\n data: ArrayBuffer,\n options: LoaderOptions | undefined,\n context: LoaderContext | undefined\n): Promise<Subtree> {\n const magic = new Uint32Array(data.slice(0, 4));\n\n if (magic[0] !== SUBTREE_FILE_MAGIC) {\n throw new Error('Wrong subtree file magic number');\n }\n\n const version = new Uint32Array(data.slice(4, 8));\n\n if (version[0] !== SUBTREE_FILE_VERSION) {\n throw new Error('Wrong subtree file verson, must be 1');\n }\n\n const jsonByteLength = parseUint64Value(data.slice(8, 16));\n const stringAttribute = new Uint8Array(data, 24, jsonByteLength);\n\n const textDecoder = new TextDecoder('utf8');\n const string = textDecoder.decode(stringAttribute);\n const subtree = JSON.parse(string);\n\n const binaryByteLength = parseUint64Value(data.slice(16, 24));\n let internalBinaryBuffer = new ArrayBuffer(0);\n\n if (binaryByteLength) {\n internalBinaryBuffer = data.slice(24 + jsonByteLength);\n }\n\n if ('bufferView' in subtree.tileAvailability) {\n subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'tileAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n if ('bufferView' in subtree.contentAvailability) {\n subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'contentAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n if ('bufferView' in subtree.childSubtreeAvailability) {\n subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'childSubtreeAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n return subtree;\n}\n\n/**\n * Get url for bitstream downloading\n * @param bitstreamRelativeUri\n * @param basePath\n * @returns\n */\nfunction resolveBufferUri(bitstreamRelativeUri: string, basePath: string): string {\n const hasProtocol = basePath.startsWith('http');\n\n if (hasProtocol) {\n const resolvedUri = new URL(bitstreamRelativeUri, basePath);\n return decodeURI(resolvedUri.toString());\n }\n\n /**\n * Adding http protocol only for new URL constructor usage.\n * It allows to resolve relative paths like ../../example with basePath.\n */\n const basePathWithProtocol = `http://${basePath}`;\n const resolvedUri = new URL(bitstreamRelativeUri, basePathWithProtocol);\n /**\n * Drop protocol and use just relative path.\n */\n return `/${resolvedUri.host}${resolvedUri.pathname}`;\n}\n\n/**\n * Get explicit bitstream for subtree availability data.\n * @param subtree\n * @param name\n * @param internalBinaryBuffer\n */\nasync function getExplicitBitstream(\n subtree: Subtree,\n name: string,\n internalBinaryBuffer: ArrayBuffer,\n context: LoaderContext | undefined\n): Promise<ExplicitBitstream> {\n const bufferViewIndex = subtree[name].bufferView;\n const bufferView = subtree.bufferViews[bufferViewIndex];\n const buffer = subtree.buffers[bufferView.buffer];\n\n if (!context?.url || !context.fetch) {\n throw new Error('Url is not provided');\n }\n\n if (!context.fetch) {\n throw new Error('fetch is not provided');\n }\n\n // External bitstream loading\n if (buffer.uri) {\n const bufferUri = resolveBufferUri(buffer.uri, context?.url);\n const response = await context.fetch(bufferUri);\n const data = await response.arrayBuffer();\n // Return view of bitstream.\n return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);\n }\n // Return view of bitstream.\n return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);\n}\n\n/**\n * Parse buffer to return uint64 value\n * @param buffer\n * @returns 64-bit value until precision is lost after Number.MAX_SAFE_INTEGER\n */\nfunction parseUint64Value(buffer: ArrayBuffer): number {\n const dataView = new DataView(buffer);\n const left = dataView.getUint32(0, true);\n const right = dataView.getUint32(4, true);\n // combine the two 32-bit values\n return left + 2 ** 32 * right;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile-subtree.js","names":["SUBTREE_FILE_MAGIC","SUBTREE_FILE_VERSION","parse3DTilesSubtree","_x","_x2","_x3","_parse3DTilesSubtree","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","options","context","magic","version","jsonByteLength","stringAttribute","textDecoder","string","subtree","binaryByteLength","internalBinaryBuffer","_iterator","_step","contentAvailability","wrap","_callee$","_context","prev","next","Uint32Array","slice","Error","parseUint64Value","Uint8Array","TextDecoder","decode","JSON","parse","ArrayBuffer","loadExplicitBitstream","tileAvailability","Array","isArray","_createForOfIteratorHelper","s","n","done","value","t0","e","f","finish","childSubtreeAvailability","abrupt","stop","_x4","_x5","_x6","_x7","_loadExplicitBitstream","_callee2","availabilityObject","bufferViewIndex","bufferView","buffer","bufferUri","response","_callee2$","_context2","Number","isFinite","bitstream","bufferViews","buffers","baseUrl","fetch","uri","concat","sent","arrayBuffer","explicitBitstream","byteOffset","byteLength","dataView","DataView","left","getUint32","right","Math","pow"],"sources":["../../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"sourcesContent":["import type {Subtree, Availability} from '../../../types';\nimport type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\n\nconst SUBTREE_FILE_MAGIC = 0x74627573;\nconst SUBTREE_FILE_VERSION = 1;\n\n/**\n * Parse subtree file\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format\n * @param data\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport default async function parse3DTilesSubtree(\n data: ArrayBuffer,\n options: LoaderOptions | undefined,\n context: LoaderContext | undefined\n): Promise<Subtree> {\n const magic = new Uint32Array(data.slice(0, 4));\n\n if (magic[0] !== SUBTREE_FILE_MAGIC) {\n throw new Error('Wrong subtree file magic number');\n }\n\n const version = new Uint32Array(data.slice(4, 8));\n\n if (version[0] !== SUBTREE_FILE_VERSION) {\n throw new Error('Wrong subtree file verson, must be 1');\n }\n\n const jsonByteLength = parseUint64Value(data.slice(8, 16));\n const stringAttribute = new Uint8Array(data, 24, jsonByteLength);\n\n const textDecoder = new TextDecoder('utf8');\n const string = textDecoder.decode(stringAttribute);\n const subtree = JSON.parse(string);\n\n const binaryByteLength = parseUint64Value(data.slice(16, 24));\n let internalBinaryBuffer = new ArrayBuffer(0);\n\n if (binaryByteLength) {\n internalBinaryBuffer = data.slice(24 + jsonByteLength);\n }\n\n await loadExplicitBitstream(subtree, subtree.tileAvailability, internalBinaryBuffer, context);\n if (Array.isArray(subtree.contentAvailability)) {\n for (const contentAvailability of subtree.contentAvailability) {\n await loadExplicitBitstream(subtree, contentAvailability, internalBinaryBuffer, context);\n }\n } else {\n await loadExplicitBitstream(\n subtree,\n subtree.contentAvailability,\n internalBinaryBuffer,\n context\n );\n }\n await loadExplicitBitstream(\n subtree,\n subtree.childSubtreeAvailability,\n internalBinaryBuffer,\n context\n );\n\n return subtree;\n}\n\n/**\n * Load explicit bitstream for subtree availability data.\n * @param subtree - subtree data\n * @param availabilityObject - tileAvailability / contentAvailability / childSubtreeAvailability object\n * @param internalBinaryBuffer - subtree binary buffer\n * @param context - loaders.gl context\n */\nasync function loadExplicitBitstream(\n subtree: Subtree,\n availabilityObject: Availability,\n internalBinaryBuffer: ArrayBuffer,\n context: LoaderContext | undefined\n): Promise<void> {\n const bufferViewIndex = Number.isFinite(availabilityObject.bitstream)\n ? availabilityObject.bitstream\n : availabilityObject.bufferView;\n\n if (typeof bufferViewIndex !== 'number') {\n return;\n }\n\n const bufferView = subtree.bufferViews[bufferViewIndex];\n const buffer = subtree.buffers[bufferView.buffer];\n\n if (!context?.baseUrl) {\n throw new Error('Url is not provided');\n }\n\n if (!context.fetch) {\n throw new Error('fetch is not provided');\n }\n\n // External bitstream loading\n if (buffer.uri) {\n const bufferUri = `${context?.baseUrl || ''}/${buffer.uri}`;\n const response = await context.fetch(bufferUri);\n const data = await response.arrayBuffer();\n availabilityObject.explicitBitstream = new Uint8Array(\n data,\n bufferView.byteOffset,\n bufferView.byteLength\n );\n return;\n }\n availabilityObject.explicitBitstream = new Uint8Array(\n internalBinaryBuffer,\n bufferView.byteOffset,\n bufferView.byteLength\n );\n}\n\n/**\n * Parse buffer to return uint64 value\n * @param buffer\n * @returns 64-bit value until precision is lost after Number.MAX_SAFE_INTEGER\n */\nfunction parseUint64Value(buffer: ArrayBuffer): number {\n const dataView = new DataView(buffer);\n const left = dataView.getUint32(0, true);\n const right = dataView.getUint32(4, true);\n // combine the two 32-bit values\n return left + 2 ** 32 * right;\n}\n"],"mappings":"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"}
@@ -27,7 +27,9 @@ function _parseComposite3DTile() {
27
27
  _context.next = 13;
28
28
  break;
29
29
  }
30
- _subtile = {};
30
+ _subtile = {
31
+ shape: 'tile3d'
32
+ };
31
33
  tile.tiles.push(_subtile);
32
34
  _context.next = 10;
33
35
  return parse3DTile(arrayBuffer, byteOffset, options, context, _subtile);
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-composite.js","names":["_parse3dTileHeader","require","parseComposite3DTile","_x","_x2","_x3","_x4","_x5","_x6","_parseComposite3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","tile","arrayBuffer","byteOffset","options","context","parse3DTile","view","_subtile","wrap","_callee$","_context","prev","next","parse3DTileHeaderSync","DataView","tilesLength","getUint32","tiles","length","byteLength","subtile","push","sent","abrupt","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile-composite.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\n// Reference code:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Composite3DTileContent.js#L182\n\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {Tiles3DTileContent} from '../../types';\n\n/** Resolve circulate dependency by passing in parsing function as argument */\ntype Parse3DTile = (\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n subtile\n) => Promise<number>;\n\n// eslint-disable-next-line max-params\nexport async function parseComposite3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n parse3DTile: Parse3DTile\n): Promise<number> {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n\n const view = new DataView(arrayBuffer);\n\n // Extract number of tiles\n tile.tilesLength = view.getUint32(byteOffset, true);\n byteOffset += 4;\n\n // extract each tile from the byte stream\n tile.tiles = [];\n while (tile.tiles.length < tile.tilesLength && (tile.byteLength || 0) - byteOffset > 12) {\n const subtile = {};\n tile.tiles.push(subtile);\n byteOffset = await parse3DTile(arrayBuffer, byteOffset, options, context, subtile);\n // TODO - do we need to add any padding in between tiles?\n }\n\n return byteOffset;\n}\n"],"mappings":";;;;;;;;;AAQA,IAAAA,kBAAA,GAAAC,OAAA;AAAqE,SAa/CC,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,sBAAA;EAAAA,qBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAnC,SAAAC,QACLC,IAAwB,EACxBC,WAAwB,EACxBC,UAAkB,EAClBC,OAAyC,EACzCC,OAAkC,EAClCC,WAAwB;IAAA,IAAAC,IAAA,EAAAC,QAAA;IAAA,OAAAV,YAAA,CAAAD,OAAA,CAAAY,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAExBV,UAAU,GAAG,IAAAW,wCAAqB,EAACb,IAAI,EAAEC,WAAW,EAAEC,UAAU,CAAC;UAE3DI,IAAI,GAAG,IAAIQ,QAAQ,CAACb,WAAW,CAAC;UAGtCD,IAAI,CAACe,WAAW,GAAGT,IAAI,CAACU,SAAS,CAACd,UAAU,EAAE,IAAI,CAAC;UACnDA,UAAU,IAAI,CAAC;UAGfF,IAAI,CAACiB,KAAK,GAAG,EAAE;QAAC;UAAA,MACTjB,IAAI,CAACiB,KAAK,CAACC,MAAM,GAAGlB,IAAI,CAACe,WAAW,IAAI,CAACf,IAAI,CAACmB,UAAU,IAAI,CAAC,IAAIjB,UAAU,GAAG,EAAE;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC/EQ,QAAO,GAAG,CAAC,CAAC;UAClBpB,IAAI,CAACiB,KAAK,CAACI,IAAI,CAACD,QAAO,CAAC;UAACV,QAAA,CAAAE,IAAA;UAAA,OACNP,WAAW,CAACJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,EAAEgB,QAAO,CAAC;QAAA;UAAlFlB,UAAU,GAAAQ,QAAA,CAAAY,IAAA;UAAAZ,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAA,OAAAF,QAAA,CAAAa,MAAA,WAILrB,UAAU;QAAA;QAAA;UAAA,OAAAQ,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAAzB,OAAA;EAAA,CAClB;EAAA,OAAAP,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"parse-3d-tile-composite.js","names":["_parse3dTileHeader","require","parseComposite3DTile","_x","_x2","_x3","_x4","_x5","_x6","_parseComposite3DTile","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","tile","arrayBuffer","byteOffset","options","context","parse3DTile","view","_subtile","wrap","_callee$","_context","prev","next","parse3DTileHeaderSync","DataView","tilesLength","getUint32","tiles","length","byteLength","subtile","shape","push","sent","abrupt","stop"],"sources":["../../../../src/lib/parsers/parse-3d-tile-composite.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\n// Reference code:\n// https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Scene/Composite3DTileContent.js#L182\n\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport type {Tiles3DLoaderOptions} from '../../tiles-3d-loader';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {Tiles3DTileContent} from '../../types';\n\n/** Resolve circulate dependency by passing in parsing function as argument */\ntype Parse3DTile = (\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n subtile\n) => Promise<number>;\n\n// eslint-disable-next-line max-params\nexport async function parseComposite3DTile(\n tile: Tiles3DTileContent,\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n options: Tiles3DLoaderOptions | undefined,\n context: LoaderContext | undefined,\n parse3DTile: Parse3DTile\n): Promise<number> {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n\n const view = new DataView(arrayBuffer);\n\n // Extract number of tiles\n tile.tilesLength = view.getUint32(byteOffset, true);\n byteOffset += 4;\n\n // extract each tile from the byte stream\n tile.tiles = [];\n while (tile.tiles.length < tile.tilesLength && (tile.byteLength || 0) - byteOffset > 12) {\n const subtile: Tiles3DTileContent = {shape: 'tile3d'};\n tile.tiles.push(subtile);\n byteOffset = await parse3DTile(arrayBuffer, byteOffset, options, context, subtile);\n // TODO - do we need to add any padding in between tiles?\n }\n\n return byteOffset;\n}\n"],"mappings":";;;;;;;;;AAQA,IAAAA,kBAAA,GAAAC,OAAA;AAAqE,SAa/CC,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,sBAAA;EAAAA,qBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAnC,SAAAC,QACLC,IAAwB,EACxBC,WAAwB,EACxBC,UAAkB,EAClBC,OAAyC,EACzCC,OAAkC,EAClCC,WAAwB;IAAA,IAAAC,IAAA,EAAAC,QAAA;IAAA,OAAAV,YAAA,CAAAD,OAAA,CAAAY,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAExBV,UAAU,GAAG,IAAAW,wCAAqB,EAACb,IAAI,EAAEC,WAAW,EAAEC,UAAU,CAAC;UAE3DI,IAAI,GAAG,IAAIQ,QAAQ,CAACb,WAAW,CAAC;UAGtCD,IAAI,CAACe,WAAW,GAAGT,IAAI,CAACU,SAAS,CAACd,UAAU,EAAE,IAAI,CAAC;UACnDA,UAAU,IAAI,CAAC;UAGfF,IAAI,CAACiB,KAAK,GAAG,EAAE;QAAC;UAAA,MACTjB,IAAI,CAACiB,KAAK,CAACC,MAAM,GAAGlB,IAAI,CAACe,WAAW,IAAI,CAACf,IAAI,CAACmB,UAAU,IAAI,CAAC,IAAIjB,UAAU,GAAG,EAAE;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC/EQ,QAA2B,GAAG;YAACC,KAAK,EAAE;UAAQ,CAAC;UACrDrB,IAAI,CAACiB,KAAK,CAACK,IAAI,CAACF,QAAO,CAAC;UAACV,QAAA,CAAAE,IAAA;UAAA,OACNP,WAAW,CAACJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,EAAEgB,QAAO,CAAC;QAAA;UAAlFlB,UAAU,GAAAQ,QAAA,CAAAa,IAAA;UAAAb,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAA,OAAAF,QAAA,CAAAc,MAAA,WAILtB,UAAU;QAAA;QAAA;UAAA,OAAAQ,QAAA,CAAAe,IAAA;MAAA;IAAA,GAAA1B,OAAA;EAAA,CAClB;EAAA,OAAAP,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
@@ -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) {
@@ -90,7 +91,7 @@ function normalizeTileHeaders(_x, _x2, _x3) {
90
91
  }
91
92
  function _normalizeTileHeaders() {
92
93
  _normalizeTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset, basePath, options) {
93
- var root, rootImplicitTilingExtension, stack, tile, children, childrenPostprocessed, _iterator, _step, childHeader, childImplicitTilingExtension, childHeaderPostprocessed;
94
+ var root, rootImplicitTilingExtension, stack, _tile, children, childrenPostprocessed, _iterator, _step, childHeader, childImplicitTilingExtension, childHeaderPostprocessed;
94
95
  return _regenerator.default.wrap(function _callee$(_context) {
95
96
  while (1) switch (_context.prev = _context.next) {
96
97
  case 0:
@@ -116,8 +117,8 @@ function _normalizeTileHeaders() {
116
117
  _context.next = 43;
117
118
  break;
118
119
  }
119
- tile = stack.pop() || {};
120
- children = tile.children || [];
120
+ _tile = stack.pop() || {};
121
+ children = _tile.children || [];
121
122
  childrenPostprocessed = [];
122
123
  _iterator = _createForOfIteratorHelper(children);
123
124
  _context.prev = 16;
@@ -162,7 +163,7 @@ function _normalizeTileHeaders() {
162
163
  _iterator.f();
163
164
  return _context.finish(37);
164
165
  case 40:
165
- tile.children = childrenPostprocessed;
166
+ _tile.children = childrenPostprocessed;
166
167
  _context.next = 11;
167
168
  break;
168
169
  case 43:
@@ -181,11 +182,11 @@ function normalizeImplicitTileHeaders(_x4, _x5, _x6, _x7, _x8) {
181
182
  function _normalizeImplicitTileHeaders() {
182
183
  _normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, tileset, basePath, implicitTilingExtension, options) {
183
184
  var _tile$content2, _tileset$root, _tile$boundingVolume$;
184
- var subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, replacedUrlTemplate, subtreeUrl, subtree, contentUrlTemplate, refine, rootLodMetricValue, s2VolumeInfo, box, s2VolumeBox, rootBoundingVolume, implicitOptions;
185
+ var subdivisionScheme, maximumLevel, availableLevels, subtreeLevels, subtreesUriTemplate, replacedUrlTemplate, subtreeUrl, subtree, contentUrlTemplate, refine, rootLodMetricValue, s2VolumeInfo, box, s2VolumeBox, rootBoundingVolume, implicitOptions;
185
186
  return _regenerator.default.wrap(function _callee2$(_context2) {
186
187
  while (1) switch (_context2.prev = _context2.next) {
187
188
  case 0:
188
- subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
189
+ subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, availableLevels = implicitTilingExtension.availableLevels, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
189
190
  replacedUrlTemplate = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
190
191
  subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
191
192
  _context2.next = 5;
@@ -210,7 +211,7 @@ function _normalizeImplicitTileHeaders() {
210
211
  subtreesUriTemplate: subtreesUriTemplate,
211
212
  subdivisionScheme: subdivisionScheme,
212
213
  subtreeLevels: subtreeLevels,
213
- maximumLevel: maximumLevel,
214
+ maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,
214
215
  refine: refine,
215
216
  basePath: basePath,
216
217
  lodMetricType: _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR,
@@ -220,7 +221,7 @@ function _normalizeImplicitTileHeaders() {
220
221
  getRefine: getRefine
221
222
  };
222
223
  _context2.next = 15;
223
- return normalizeImplicitTileData(tile, basePath, subtree, implicitOptions);
224
+ return normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);
224
225
  case 15:
225
226
  return _context2.abrupt("return", _context2.sent);
226
227
  case 16:
@@ -231,11 +232,11 @@ function _normalizeImplicitTileHeaders() {
231
232
  }));
232
233
  return _normalizeImplicitTileHeaders.apply(this, arguments);
233
234
  }
234
- function normalizeImplicitTileData(_x9, _x10, _x11, _x12) {
235
+ function normalizeImplicitTileData(_x9, _x10, _x11, _x12, _x13) {
235
236
  return _normalizeImplicitTileData.apply(this, arguments);
236
237
  }
237
238
  function _normalizeImplicitTileData() {
238
- _normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, basePath, rootSubtree, options) {
239
+ _normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, basePath, rootSubtree, implicitOptions, loaderOptions) {
239
240
  var _yield$parseImplicitT, children, contentUrl, tileContentUrl, tileContent, tilePostprocessed;
240
241
  return _regenerator.default.wrap(function _callee3$(_context3) {
241
242
  while (1) switch (_context3.prev = _context3.next) {
@@ -249,7 +250,8 @@ function _normalizeImplicitTileData() {
249
250
  _context3.next = 4;
250
251
  return (0, _parse3dImplicitTiles.parseImplicitTiles)({
251
252
  subtree: rootSubtree,
252
- options: options
253
+ implicitOptions: implicitOptions,
254
+ loaderOptions: loaderOptions
253
255
  });
254
256
  case 4:
255
257
  _yield$parseImplicitT = _context3.sent;
@@ -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","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","subtreeLevels","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","s2VolumeInfo","box","s2VolumeBox","rootBoundingVolume","implicitOptions","_callee2$","_context2","subtrees","replaceContentUrlTemplate","load","Tile3DSubtreeLoader","boundingVolume","extensions","convertS2BoundingVolumetoOBB","normalizeImplicitTileData","_x9","_x10","_x11","_x12","_normalizeImplicitTileData","_callee3","rootSubtree","_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 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\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 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 = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n 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);\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 options: any\n): Promise<Tiles3DTileJSONPostprocessed | null> {\n if (!tile) {\n return null;\n }\n\n const {children, contentUrl} = await parseImplicitTiles({\n subtree: rootSubtree,\n options\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":";;;;;;;;;;;;;AAEA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAUA,IAAAG,qBAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAA4E,SAAAK,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAO,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAT,CAAA,CAAAQ,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAS,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAT,EAAA,GAAAA,EAAA,CAAAoB,IAAA,CAAAtB,CAAA,MAAAY,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAArB,EAAA,CAAAsB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAjB,EAAA,CAAAwB,MAAA,UAAAxB,EAAA,CAAAwB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAP,CAAA,EAAA2B,MAAA,SAAA3B,CAAA,qBAAAA,CAAA,sBAAA4B,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAAtB,CAAA,EAAAgC,KAAA,aAAApB,CAAA,iBAAAZ,CAAA,CAAAiC,WAAA,EAAArB,CAAA,GAAAZ,CAAA,CAAAiC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAP,KAAA,CAAA8B,IAAA,CAAAnC,CAAA,OAAAY,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAlC,KAAA,CAAAiC,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAAA,SAAAC,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAd,MAAA,CAAAc,IAAA,CAAAF,MAAA,OAAAZ,MAAA,CAAAe,qBAAA,QAAAC,OAAA,GAAAhB,MAAA,CAAAe,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAlB,MAAA,CAAAmB,wBAAA,CAAAP,MAAA,EAAAM,GAAA,EAAAE,UAAA,OAAAN,IAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAS,cAAAC,MAAA,aAAA5C,CAAA,MAAAA,CAAA,GAAA6C,SAAA,CAAA9C,MAAA,EAAAC,CAAA,UAAA8C,MAAA,WAAAD,SAAA,CAAA7C,CAAA,IAAA6C,SAAA,CAAA7C,CAAA,QAAAA,CAAA,OAAA+B,OAAA,CAAAX,MAAA,CAAA0B,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAN,MAAA,EAAAI,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAA5B,MAAA,CAAA+B,yBAAA,GAAA/B,MAAA,CAAAgC,gBAAA,CAAAR,MAAA,EAAAxB,MAAA,CAAA+B,yBAAA,CAAAL,MAAA,KAAAf,OAAA,CAAAX,MAAA,CAAA0B,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAA5B,MAAA,CAAAiC,cAAA,CAAAT,MAAA,EAAAI,GAAA,EAAA5B,MAAA,CAAAmB,wBAAA,CAAAO,MAAA,EAAAE,GAAA,iBAAAJ,MAAA;AAE5E,SAASU,WAAWA,CAACC,IAAqB,EAAmD;EAAA,IAAjDC,cAAsB,GAAAX,SAAA,CAAA9C,MAAA,QAAA8C,SAAA,QAAAY,SAAA,GAAAZ,SAAA,MAAG,EAAE;EACrE,IAAI,CAACW,cAAc,EAAE;IACnB,OAAOE,gBAAS,CAACC,KAAK;EACxB;EAEA,IAAMC,UAAU,GAAGJ,cAAc,CAACK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,IAAMC,aAAa,GAAGF,UAAU,CAACC,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAAC,CAAC;EACjD,QAAQD,aAAa;IACnB,KAAK,MAAM;MACT,OAAOJ,gBAAS,CAACM,UAAU;IAC7B,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,KAAK;IACV,KAAK,MAAM;MACT,OAAON,gBAAS,CAACO,UAAU;IAC7B;MACE,OAAOH,aAAa,IAAIJ,gBAAS,CAACC,KAAK;EAC3C;AACF;AAEA,SAASO,SAASA,CAACC,MAAe,EAAwC;EACxE,QAAQA,MAAM;IACZ,KAAK,SAAS;IACd,KAAK,SAAS;MACZ,OAAOC,sBAAe,CAACC,OAAO;IAChC,KAAK,KAAK;IACV,KAAK,KAAK;MACR,OAAOD,sBAAe,CAACE,GAAG;IAC5B;MACE,OAAOH,MAAM;EACjB;AACF;AAEA,SAASI,UAAUA,CAAA,EAA6C;EAAA,IAA5CC,GAAW,GAAA3B,SAAA,CAAA9C,MAAA,QAAA8C,SAAA,QAAAY,SAAA,GAAAZ,SAAA,MAAG,EAAE;EAAA,IAAE4B,QAAgB,GAAA5B,SAAA,CAAA9C,MAAA,OAAA8C,SAAA,MAAAY,SAAA;EAEpD,IAAMiB,cAAc,GAAG,sBAAsB;EAE7C,IAAIA,cAAc,CAAC/C,IAAI,CAAC8C,QAAQ,CAAC,EAAE;IACjC,IAAME,GAAG,GAAG,IAAIC,GAAG,CAACJ,GAAG,KAAAK,MAAA,CAAKJ,QAAQ,MAAG,CAAC;IACxC,OAAOK,SAAS,CAACH,GAAG,CAACrD,QAAQ,CAAC,CAAC,CAAC;EAClC,CAAC,MAAM,IAAIkD,GAAG,CAACO,UAAU,CAAC,GAAG,CAAC,EAAE;IAC9B,OAAOP,GAAG;EACZ;EAEA,UAAAK,MAAA,CAAUJ,QAAQ,OAAAI,MAAA,CAAIL,GAAG;AAC3B;AAEO,SAASQ,iBAAiBA,CAC/BzB,IAA4B,EAC5BkB,QAAgB,EACqB;EACrC,IAAI,CAAClB,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EACA,IAAIC,cAAkC;EACtC,IAAID,IAAI,CAAC0B,OAAO,EAAE;IAAA,IAAAC,aAAA;IAChB,IAAMC,UAAU,GAAG5B,IAAI,CAAC0B,OAAO,CAACT,GAAG,MAAAU,aAAA,GAAI3B,IAAI,CAAC0B,OAAO,cAAAC,aAAA,uBAAZA,aAAA,CAAcP,GAAG;IACxDnB,cAAc,GAAGe,UAAU,CAACY,UAAU,EAAEV,QAAQ,CAAC;EACnD;EACA,IAAMW,iBAA+C,GAAAzC,aAAA,CAAAA,aAAA,KAChDY,IAAI;IACP8B,EAAE,EAAE7B,cAAc;IAClBI,UAAU,EAAEJ,cAAc;IAC1B8B,aAAa,EAAEC,sBAAe,CAACC,eAAe;IAC9CC,cAAc,EAAElC,IAAI,CAACmC,cAAc;IACnCC,eAAe,EAAEpC,IAAI,CAACqC,SAAS;IAC/BC,IAAI,EAAEvC,WAAW,CAACC,IAAI,EAAEC,cAAc,CAAC;IACvCW,MAAM,EAAED,SAAS,CAACX,IAAI,CAACY,MAAM;EAAC,EAC/B;EAED,OAAOiB,iBAAiB;AAC1B;AAAC,SAGqBU,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAxD,KAAA,OAAAG,SAAA;AAAA;AAAA,SAAAqD,sBAAA;EAAAA,qBAAA,OAAAC,kBAAA,CAAAjD,OAAA,EAAAkD,YAAA,CAAAlD,OAAA,CAAAmD,IAAA,CAAnC,SAAAC,QACLC,OAA2B,EAC3B9B,QAAgB,EAChB+B,OAAsB;IAAA,IAAAC,IAAA,EAAAC,2BAAA,EAAAC,KAAA,EAAApD,IAAA,EAAAqD,QAAA,EAAAC,qBAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,WAAA,EAAAC,4BAAA,EAAAC,wBAAA;IAAA,OAAAd,YAAA,CAAAlD,OAAA,CAAAiE,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAtG,IAAA;QAAA;UAElB0F,IAAyC,GAAG,IAAI;UAE9CC,2BAA2B,GAAGa,8BAA8B,CAAChB,OAAO,CAACE,IAAI,CAAC;UAAA,MAC5EC,2BAA2B,IAAIH,OAAO,CAACE,IAAI;YAAAY,QAAA,CAAAtG,IAAA;YAAA;UAAA;UAAAsG,QAAA,CAAAtG,IAAA;UAAA,OAChCyG,4BAA4B,CACvCjB,OAAO,CAACE,IAAI,EACZF,OAAO,EACP9B,QAAQ,EACRiC,2BAA2B,EAC3BF,OACF,CAAC;QAAA;UANDC,IAAI,GAAAY,QAAA,CAAAI,IAAA;UAAAJ,QAAA,CAAAtG,IAAA;UAAA;QAAA;UAQJ0F,IAAI,GAAGzB,iBAAiB,CAACuB,OAAO,CAACE,IAAI,EAAEhC,QAAQ,CAAC;QAAC;UAG7CkC,KAAY,GAAG,EAAE;UACvBA,KAAK,CAAClE,IAAI,CAACgE,IAAI,CAAC;QAAC;UAAA,MAEVE,KAAK,CAAC5G,MAAM,GAAG,CAAC;YAAAsH,QAAA,CAAAtG,IAAA;YAAA;UAAA;UACfwC,IAAI,GAAGoD,KAAK,CAAC5C,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;UACxB6C,QAAQ,GAAGrD,IAAI,CAACqD,QAAQ,IAAI,EAAE;UAC9BC,qBAAqD,GAAG,EAAE;UAAAC,SAAA,GAAAxH,0BAAA,CACtCsH,QAAQ;UAAAS,QAAA,CAAAC,IAAA;UAAAR,SAAA,CAAA5G,CAAA;QAAA;UAAA,KAAA6G,KAAA,GAAAD,SAAA,CAAA3G,CAAA,IAAAC,IAAA;YAAAiH,QAAA,CAAAtG,IAAA;YAAA;UAAA;UAAvBiG,WAAW,GAAAD,KAAA,CAAA1G,KAAA;UACd4G,4BAA4B,GAAGM,8BAA8B,CAACP,WAAW,CAAC;UAC5EE,wBAA6D;UAAA,KAC7DD,4BAA4B;YAAAI,QAAA,CAAAtG,IAAA;YAAA;UAAA;UAAAsG,QAAA,CAAAtG,IAAA;UAAA,OACGyG,4BAA4B,CAC3DR,WAAW,EACXT,OAAO,EACP9B,QAAQ,EACRwC,4BAA4B,EAC5BT,OACF,CAAC;QAAA;UANDU,wBAAwB,GAAAG,QAAA,CAAAI,IAAA;UAAAJ,QAAA,CAAAtG,IAAA;UAAA;QAAA;UAQxBmG,wBAAwB,GAAGlC,iBAAiB,CAACgC,WAAW,EAAEvC,QAAQ,CAAC;QAAC;UAGtE,IAAIyC,wBAAwB,EAAE;YAC5BL,qBAAqB,CAACpE,IAAI,CAACyE,wBAAwB,CAAC;YACpDP,KAAK,CAAClE,IAAI,CAACyE,wBAAwB,CAAC;UACtC;QAAC;UAAAG,QAAA,CAAAtG,IAAA;UAAA;QAAA;UAAAsG,QAAA,CAAAtG,IAAA;UAAA;QAAA;UAAAsG,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAK,EAAA,GAAAL,QAAA;UAAAP,SAAA,CAAAxG,CAAA,CAAA+G,QAAA,CAAAK,EAAA;QAAA;UAAAL,QAAA,CAAAC,IAAA;UAAAR,SAAA,CAAAtG,CAAA;UAAA,OAAA6G,QAAA,CAAAM,MAAA;QAAA;UAEHpE,IAAI,CAACqD,QAAQ,GAAGC,qBAAqB;UAACQ,QAAA,CAAAtG,IAAA;UAAA;QAAA;UAAA,OAAAsG,QAAA,CAAAO,MAAA,WAGjCnB,IAAI;QAAA;QAAA;UAAA,OAAAY,QAAA,CAAAQ,IAAA;MAAA;IAAA,GAAAvB,OAAA;EAAA,CACZ;EAAA,OAAAJ,qBAAA,CAAAxD,KAAA,OAAAG,SAAA;AAAA;AAAA,SAOqB2E,4BAA4BA,CAAAM,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,6BAAA,CAAAzF,KAAA,OAAAG,SAAA;AAAA;AAAA,SAAAsF,8BAAA;EAAAA,6BAAA,OAAAhC,kBAAA,CAAAjD,OAAA,EAAAkD,YAAA,CAAAlD,OAAA,CAAAmD,IAAA,CAA3C,SAAA+B,SACL7E,IAAqB,EACrBgD,OAA2B,EAC3B9B,QAAgB,EAChB4D,uBAAmD,EACnD7B,OAA6B;IAAA,IAAA8B,cAAA,EAAAC,aAAA,EAAAC,qBAAA;IAAA,IAAAC,iBAAA,EAAAC,YAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,UAAA,EAAAC,OAAA,EAAAC,kBAAA,EAAA7E,MAAA,EAAA8E,kBAAA,EAAAC,YAAA,EAAAC,GAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,eAAA;IAAA,OAAAlD,YAAA,CAAAlD,OAAA,CAAAiE,IAAA,UAAAoC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlC,IAAA,GAAAkC,SAAA,CAAAzI,IAAA;QAAA;UAG3B0H,iBAAiB,GAIfJ,uBAAuB,CAJzBI,iBAAiB,EACjBC,YAAY,GAGVL,uBAAuB,CAHzBK,YAAY,EACZC,aAAa,GAEXN,uBAAuB,CAFzBM,aAAa,EACGC,mBAAmB,GACjCP,uBAAuB,CADzBoB,QAAQ,CAAGjF,GAAG;UAEVqE,mBAAmB,GAAG,IAAAa,+CAAyB,EAACd,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UAChFE,UAAU,GAAGvE,UAAU,CAACsE,mBAAmB,EAAEpE,QAAQ,CAAC;UAAA+E,SAAA,CAAAzI,IAAA;UAAA,OACtC,IAAA4I,UAAI,EAACb,UAAU,EAAEc,wCAAmB,EAAEpD,OAAO,CAAC;QAAA;UAA9DuC,OAAO,GAAAS,SAAA,CAAA/B,IAAA;UACPuB,kBAAkB,GAAGzE,UAAU,EAAA+D,cAAA,GAAC/E,IAAI,CAAC0B,OAAO,cAAAqD,cAAA,uBAAZA,cAAA,CAAc9D,GAAG,EAAEC,QAAQ,CAAC;UAC5DN,MAAM,GAAGoC,OAAO,aAAPA,OAAO,wBAAAgC,aAAA,GAAPhC,OAAO,CAAEE,IAAI,cAAA8B,aAAA,uBAAbA,aAAA,CAAepE,MAAM;UAE9B8E,kBAAkB,GAAG1F,IAAI,CAACmC,cAAc;UAGxCwD,YAA0B,IAAAV,qBAAA,GAAGjF,IAAI,CAACsG,cAAc,CAACC,UAAU,cAAAtB,qBAAA,uBAA9BA,qBAAA,CAAiC,4BAA4B,CAAC;UACjG,IAAIU,YAAY,EAAE;YACVC,GAAG,GAAG,IAAAY,4CAA4B,EAACb,YAAY,CAAC;YAChDE,WAAwB,GAAG;cAACD,GAAG,EAAHA,GAAG;cAAED,YAAY,EAAZA;YAAY,CAAC;YACpD3F,IAAI,CAACsG,cAAc,GAAGT,WAAW;UACnC;UAEMC,kBAAkB,GAAG9F,IAAI,CAACsG,cAAc;UAExCP,eAAe,GAAG;YACtBN,kBAAkB,EAAlBA,kBAAkB;YAClBJ,mBAAmB,EAAnBA,mBAAmB;YACnBH,iBAAiB,EAAjBA,iBAAiB;YACjBE,aAAa,EAAbA,aAAa;YACbD,YAAY,EAAZA,YAAY;YACZvE,MAAM,EAANA,MAAM;YACNM,QAAQ,EAARA,QAAQ;YACRa,aAAa,EAAEC,sBAAe,CAACC,eAAe;YAC9CyD,kBAAkB,EAAlBA,kBAAkB;YAClBI,kBAAkB,EAAlBA,kBAAkB;YAClB/F,WAAW,EAAXA,WAAW;YACXY,SAAS,EAATA;UACF,CAAC;UAAAsF,SAAA,CAAAzI,IAAA;UAAA,OAEYiJ,yBAAyB,CAACzG,IAAI,EAAEkB,QAAQ,EAAEsE,OAAO,EAAEO,eAAe,CAAC;QAAA;UAAA,OAAAE,SAAA,CAAA5B,MAAA,WAAA4B,SAAA,CAAA/B,IAAA;QAAA;QAAA;UAAA,OAAA+B,SAAA,CAAA3B,IAAA;MAAA;IAAA,GAAAO,QAAA;EAAA,CACjF;EAAA,OAAAD,6BAAA,CAAAzF,KAAA,OAAAG,SAAA;AAAA;AAAA,SASqBmH,yBAAyBA,CAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,0BAAA,CAAA3H,KAAA,OAAAG,SAAA;AAAA;AAAA,SAAAwH,2BAAA;EAAAA,0BAAA,OAAAlE,kBAAA,CAAAjD,OAAA,EAAAkD,YAAA,CAAAlD,OAAA,CAAAmD,IAAA,CAAxC,SAAAiE,SACL/G,IAAqB,EACrBkB,QAAgB,EAChB8F,WAAoB,EACpB/D,OAAY;IAAA,IAAAgE,qBAAA,EAAA5D,QAAA,EAAAhD,UAAA,EAAAJ,cAAA,EAAAiH,WAAA,EAAArF,iBAAA;IAAA,OAAAgB,YAAA,CAAAlD,OAAA,CAAAiE,IAAA,UAAAuD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAArD,IAAA,GAAAqD,SAAA,CAAA5J,IAAA;QAAA;UAAA,IAEPwC,IAAI;YAAAoH,SAAA,CAAA5J,IAAA;YAAA;UAAA;UAAA,OAAA4J,SAAA,CAAA/C,MAAA,WACA,IAAI;QAAA;UAAA+C,SAAA,CAAA5J,IAAA;UAAA,OAGwB,IAAA6J,wCAAkB,EAAC;YACtD7B,OAAO,EAAEwB,WAAW;YACpB/D,OAAO,EAAPA;UACF,CAAC,CAAC;QAAA;UAAAgE,qBAAA,GAAAG,SAAA,CAAAlD,IAAA;UAHKb,QAAQ,GAAA4D,qBAAA,CAAR5D,QAAQ;UAAEhD,UAAU,GAAA4G,qBAAA,CAAV5G,UAAU;UAMvB6G,WAA0C,GAAG,IAAI;UACrD,IAAI7G,UAAU,EAAE;YACdJ,cAAc,GAAGI,UAAU;YAC3B6G,WAAW,GAAG;cAACjG,GAAG,EAAEZ,UAAU,CAACiH,OAAO,IAAAhG,MAAA,CAAIJ,QAAQ,QAAK,EAAE;YAAC,CAAC;UAC7D;UACMW,iBAA+C,GAAAzC,aAAA,CAAAA,aAAA,KAChDY,IAAI;YACP8B,EAAE,EAAE7B,cAAc;YAClBI,UAAU,EAAEJ,cAAc;YAC1B8B,aAAa,EAAEC,sBAAe,CAACC,eAAe;YAC9CC,cAAc,EAAElC,IAAI,CAACmC,cAAc;YACnCC,eAAe,EAAEpC,IAAI,CAACqC,SAAS;YAC/BC,IAAI,EAAEvC,WAAW,CAACC,IAAI,EAAEC,cAAc,CAAC;YACvCW,MAAM,EAAED,SAAS,CAACX,IAAI,CAACY,MAAM,CAAC;YAC9Bc,OAAO,EAAEwF,WAAW,IAAIlH,IAAI,CAAC0B,OAAO;YACpC2B,QAAQ,EAARA;UAAQ;UAAA,OAAA+D,SAAA,CAAA/C,MAAA,WAGHxC,iBAAiB;QAAA;QAAA;UAAA,OAAAuF,SAAA,CAAA9C,IAAA;MAAA;IAAA,GAAAyC,QAAA;EAAA,CACzB;EAAA,OAAAD,0BAAA,CAAA3H,KAAA,OAAAG,SAAA;AAAA;AASD,SAAS0E,8BAA8BA,CAAChE,IAA4B,EAA8B;EAAA,IAAAuH,gBAAA;EAChG,OAAO,CAAAvH,IAAI,aAAJA,IAAI,wBAAAuH,gBAAA,GAAJvH,IAAI,CAAEuG,UAAU,cAAAgB,gBAAA,uBAAhBA,gBAAA,CAAmB,yBAAyB,CAAC,MAAIvH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEwH,cAAc;AAC9E"}
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
  }