@loaders.gl/tile-converter 3.2.12 → 3.3.0-alpha.10

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 (251) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +3 -3
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
  3. package/dist/3d-tiles-attributes-worker.js +2 -3
  4. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +8 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +57 -43
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -5
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +21 -17
  11. package/dist/converter-cli.js +43 -8
  12. package/dist/converter.min.js +24 -21
  13. package/dist/deps-installer/deps-installer.d.ts +5 -1
  14. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  15. package/dist/deps-installer/deps-installer.js +29 -1
  16. package/dist/dist.min.js +58405 -61237
  17. package/dist/es5/3d-tiles-attributes-worker.js +4 -7
  18. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  19. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +125 -210
  20. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  21. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +53 -85
  22. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  23. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
  24. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  25. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
  26. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  27. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
  28. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  29. package/dist/es5/bundle.js +0 -1
  30. package/dist/es5/bundle.js.map +1 -1
  31. package/dist/es5/constants.js.map +1 -1
  32. package/dist/es5/converter-cli.js +50 -60
  33. package/dist/es5/converter-cli.js.map +1 -1
  34. package/dist/es5/deps-installer/deps-installer.js +73 -28
  35. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  36. package/dist/es5/i3s-attributes-worker.js +3 -6
  37. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  38. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +124 -0
  39. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  40. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +2 -19
  41. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  42. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
  43. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  44. package/dist/es5/i3s-converter/helpers/feature-attributes.js +184 -0
  45. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  46. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +60 -51
  47. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  48. package/dist/es5/i3s-converter/helpers/geometry-converter.js +516 -356
  49. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  50. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +57 -43
  51. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  52. package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
  53. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  54. package/dist/es5/i3s-converter/helpers/node-index-document.js +507 -0
  55. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  56. package/dist/es5/i3s-converter/helpers/node-pages.js +462 -208
  57. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  58. package/dist/es5/i3s-converter/i3s-converter.js +722 -1153
  59. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  60. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  61. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  62. package/dist/es5/i3s-converter/json-templates/layers.js +2 -107
  63. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  64. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
  65. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  66. package/dist/es5/i3s-converter/json-templates/node.js +2 -12
  67. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  68. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
  69. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  70. package/dist/es5/i3s-converter/json-templates/shared-resources.js +9 -32
  71. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  72. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  73. package/dist/es5/i3s-converter/types.js.map +1 -1
  74. package/dist/es5/i3s-server/app.js +0 -5
  75. package/dist/es5/i3s-server/app.js.map +1 -1
  76. package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
  77. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  78. package/dist/es5/i3s-server/routes/index.js +1 -10
  79. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  80. package/dist/es5/index.js +0 -3
  81. package/dist/es5/index.js.map +1 -1
  82. package/dist/es5/lib/utils/compress-util.js +19 -74
  83. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  84. package/dist/es5/lib/utils/file-utils.js +103 -47
  85. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  86. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
  87. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  88. package/dist/es5/lib/utils/queue.js +0 -14
  89. package/dist/es5/lib/utils/queue.js.map +1 -1
  90. package/dist/es5/lib/utils/statistic-utills.js +1 -46
  91. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  92. package/dist/es5/lib/utils/write-queue.js +41 -82
  93. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  94. package/dist/es5/pgm-loader.js +1 -8
  95. package/dist/es5/pgm-loader.js.map +1 -1
  96. package/dist/es5/workers/3d-tiles-attributes-worker.js +2 -9
  97. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
  98. package/dist/es5/workers/i3s-attributes-worker.js +2 -10
  99. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  100. package/dist/esm/3d-tiles-attributes-worker.js +4 -2
  101. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  102. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +60 -77
  103. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  104. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +29 -50
  105. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  106. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
  107. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  108. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
  109. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  110. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
  111. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  112. package/dist/esm/bundle.js +1 -1
  113. package/dist/esm/bundle.js.map +1 -1
  114. package/dist/esm/constants.js.map +1 -1
  115. package/dist/esm/converter-cli.js +46 -40
  116. package/dist/esm/converter-cli.js.map +1 -1
  117. package/dist/esm/deps-installer/deps-installer.js +30 -4
  118. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  119. package/dist/esm/i3s-attributes-worker.js +3 -1
  120. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  121. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +113 -0
  122. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  123. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +5 -6
  124. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  125. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
  126. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  127. package/dist/esm/i3s-converter/helpers/feature-attributes.js +158 -0
  128. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  129. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +39 -33
  130. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  131. package/dist/esm/i3s-converter/helpers/geometry-converter.js +295 -196
  132. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  133. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +59 -34
  134. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  135. package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
  136. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  137. package/dist/esm/i3s-converter/helpers/node-index-document.js +197 -0
  138. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  139. package/dist/esm/i3s-converter/helpers/node-pages.js +161 -87
  140. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  141. package/dist/esm/i3s-converter/i3s-converter.js +216 -491
  142. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  143. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  144. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  145. package/dist/esm/i3s-converter/json-templates/layers.js +2 -95
  146. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  147. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  148. package/dist/esm/i3s-converter/json-templates/node.js +0 -4
  149. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
  150. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  151. package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -15
  152. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  153. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  154. package/dist/esm/i3s-converter/types.js.map +1 -1
  155. package/dist/esm/i3s-server/app.js +0 -5
  156. package/dist/esm/i3s-server/app.js.map +1 -1
  157. package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
  158. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  159. package/dist/esm/i3s-server/routes/index.js +0 -3
  160. package/dist/esm/i3s-server/routes/index.js.map +1 -1
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lib/utils/compress-util.js +19 -12
  163. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  164. package/dist/esm/lib/utils/file-utils.js +54 -11
  165. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  166. package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
  167. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  168. package/dist/esm/lib/utils/queue.js +0 -4
  169. package/dist/esm/lib/utils/queue.js.map +1 -1
  170. package/dist/esm/lib/utils/statistic-utills.js +0 -11
  171. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  172. package/dist/esm/lib/utils/write-queue.js +27 -38
  173. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  174. package/dist/esm/pgm-loader.js +3 -1
  175. package/dist/esm/pgm-loader.js.map +1 -1
  176. package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
  177. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
  178. package/dist/esm/workers/i3s-attributes-worker.js +4 -1
  179. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  180. package/dist/i3s-attributes-worker.d.ts +7 -3
  181. package/dist/i3s-attributes-worker.d.ts.map +1 -1
  182. package/dist/i3s-attributes-worker.js +2 -3
  183. package/dist/i3s-attributes-worker.js.map +3 -3
  184. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -0
  185. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  186. package/dist/i3s-converter/helpers/batch-ids-extensions.js +141 -0
  187. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +2 -2
  188. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  189. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  190. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  191. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  192. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  193. package/dist/i3s-converter/helpers/geometry-attributes.js +42 -17
  194. package/dist/i3s-converter/helpers/geometry-converter.d.ts +18 -6
  195. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  196. package/dist/i3s-converter/helpers/geometry-converter.js +349 -99
  197. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  198. package/dist/i3s-converter/helpers/gltf-attributes.js +53 -21
  199. package/dist/i3s-converter/helpers/node-index-document.d.ts +91 -0
  200. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  201. package/dist/i3s-converter/helpers/node-index-document.js +242 -0
  202. package/dist/i3s-converter/helpers/node-pages.d.ts +81 -42
  203. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  204. package/dist/i3s-converter/helpers/node-pages.js +200 -92
  205. package/dist/i3s-converter/i3s-converter.d.ts +52 -108
  206. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  207. package/dist/i3s-converter/i3s-converter.js +218 -403
  208. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  209. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  210. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  211. package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
  212. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  213. package/dist/i3s-converter/json-templates/layers.js +2 -86
  214. package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
  215. package/dist/i3s-converter/types.d.ts +38 -8
  216. package/dist/i3s-converter/types.d.ts.map +1 -1
  217. package/dist/lib/utils/file-utils.d.ts +17 -1
  218. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  219. package/dist/lib/utils/file-utils.js +64 -7
  220. package/dist/lib/utils/write-queue.d.ts +19 -3
  221. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  222. package/dist/lib/utils/write-queue.js +21 -16
  223. package/dist/pgm-loader.d.ts.map +1 -1
  224. package/dist/pgm-loader.js +2 -1
  225. package/dist/workers/3d-tiles-attributes-worker.js +1 -1
  226. package/dist/workers/i3s-attributes-worker.js +1 -1
  227. package/package.json +18 -16
  228. package/src/3d-tiles-attributes-worker.ts +1 -1
  229. package/src/3d-tiles-converter/3d-tiles-converter.ts +71 -55
  230. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +25 -18
  231. package/src/converter-cli.ts +54 -8
  232. package/src/deps-installer/deps-installer.ts +38 -2
  233. package/src/i3s-attributes-worker.ts +5 -1
  234. package/src/i3s-converter/helpers/batch-ids-extensions.ts +206 -0
  235. package/src/i3s-converter/helpers/coordinate-converter.ts +2 -2
  236. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  237. package/src/i3s-converter/helpers/geometry-attributes.ts +46 -18
  238. package/src/i3s-converter/helpers/geometry-converter.ts +423 -111
  239. package/src/i3s-converter/helpers/gltf-attributes.ts +59 -24
  240. package/src/i3s-converter/helpers/node-index-document.ts +306 -0
  241. package/src/i3s-converter/helpers/node-pages.ts +222 -109
  242. package/src/i3s-converter/i3s-converter.ts +264 -487
  243. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  244. package/src/i3s-converter/json-templates/layers.ts +2 -91
  245. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  246. package/src/i3s-converter/types.ts +33 -2
  247. package/src/lib/utils/file-utils.ts +62 -7
  248. package/src/lib/utils/write-queue.ts +42 -19
  249. package/src/pgm-loader.ts +2 -2
  250. package/src/workers/3d-tiles-attributes-worker.ts +1 -1
  251. package/src/workers/i3s-attributes-worker.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAsC/F"}
1
+ {"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAyC/F"}
@@ -20,37 +20,69 @@ function getB3DMAttributesWithoutBufferView(attributes) {
20
20
  * @returns
21
21
  */
22
22
  function prepareDataForAttributesConversion(tileContent) {
23
- const gltfMaterials = tileContent.gltf?.materials?.map((material) => ({ id: material.id }));
24
23
  let nodes = tileContent.gltf?.scene?.nodes ||
25
24
  tileContent.gltf?.scenes?.[0]?.nodes ||
26
25
  tileContent.gltf?.nodes ||
27
26
  [];
28
- const prepearedNodes = nodes.map((node) => {
29
- if (!node.mesh) {
30
- return node;
27
+ const images = tileContent.gltf?.images?.map((imageObject) => {
28
+ // Need data only for uncompressed images because we can't get batchIds from compressed textures.
29
+ if (imageObject?.image?.compressed) {
30
+ return {
31
+ data: null,
32
+ compressed: true
33
+ };
31
34
  }
32
- return {
33
- ...node,
34
- mesh: {
35
- ...node.mesh,
36
- primitives: node.mesh?.primitives.map((primitive) => ({
37
- ...primitive,
38
- indices: { value: primitive?.indices?.value },
39
- attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),
40
- material: {
41
- id: primitive?.material?.id
42
- }
43
- }))
44
- }
45
- };
46
- });
35
+ else {
36
+ const data = imageObject?.image?.data;
37
+ const dataCopy = new Uint8Array(data.length);
38
+ dataCopy.set(data);
39
+ return {
40
+ data: dataCopy,
41
+ compressed: false,
42
+ height: imageObject.image.height,
43
+ width: imageObject.image.width,
44
+ components: imageObject.image.components,
45
+ mimeType: imageObject.mimeType
46
+ };
47
+ }
48
+ }) || [];
49
+ prepareNodes(nodes);
47
50
  const cartographicOrigin = tileContent.cartographicOrigin;
48
51
  const cartesianModelMatrix = tileContent.cartesianModelMatrix;
49
52
  return {
50
- gltfMaterials,
51
- nodes: prepearedNodes,
53
+ nodes,
54
+ images,
52
55
  cartographicOrigin,
53
56
  cartesianModelMatrix
54
57
  };
55
58
  }
56
59
  exports.prepareDataForAttributesConversion = prepareDataForAttributesConversion;
60
+ /**
61
+ * Traverse all nodes to replace all sensible data with copy to avoid data corruption in worker.
62
+ * @param nodes
63
+ */
64
+ function prepareNodes(nodes) {
65
+ for (let index = 0; index < nodes.length; index++) {
66
+ const node = nodes[index];
67
+ if (node.mesh) {
68
+ nodes[index] = {
69
+ ...node,
70
+ mesh: {
71
+ ...node.mesh,
72
+ primitives: node.mesh?.primitives.map((primitive) => ({
73
+ ...primitive,
74
+ indices: { value: primitive?.indices?.value },
75
+ attributes: getB3DMAttributesWithoutBufferView(primitive.attributes),
76
+ material: {
77
+ id: primitive?.material?.id,
78
+ uniqueId: primitive?.material?.uniqueId
79
+ }
80
+ }))
81
+ }
82
+ };
83
+ }
84
+ if (node.children) {
85
+ prepareNodes(node.children);
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,91 @@
1
+ import { BoundingVolumes, LodSelection, Node3DIndexDocument, NodeInPage } from '@loaders.gl/i3s';
2
+ import I3SConverter from '../i3s-converter';
3
+ import { I3SConvertedResources } from '../types';
4
+ /**
5
+ * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data
6
+ * The class allows working with 3DNodeIndexDocument in 2 modes:
7
+ * in memory: the data is stored in `data` field
8
+ * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added
9
+ */
10
+ export declare class NodeIndexDocument {
11
+ /** Node id */
12
+ id: string;
13
+ /** Id in node pages */
14
+ inPageId: number;
15
+ /** 3DNodeIndexDocument data */
16
+ data: Node3DIndexDocument | null;
17
+ /** children */
18
+ children: NodeIndexDocument[];
19
+ /** converter instance */
20
+ private converter;
21
+ /**
22
+ * Constructor
23
+ * @param id - id of the node in node pages
24
+ * @param converter - converter instance
25
+ */
26
+ constructor(id: number, converter: I3SConverter);
27
+ /**
28
+ * Add Node3DIndexDocument data to the node
29
+ * @param data Node3DIndexDocument data
30
+ * @returns this NodeIndexDocument instance (to recurring with constructor)
31
+ */
32
+ addData(data: Node3DIndexDocument): Promise<NodeIndexDocument>;
33
+ /**
34
+ * Add child node references
35
+ * @param childNodes - child NodeIndexDocument instances
36
+ */
37
+ addChildren(childNodes: NodeIndexDocument[]): Promise<void>;
38
+ /**
39
+ * Add neighbors to child nodes of this node
40
+ */
41
+ addNeighbors(): Promise<void>;
42
+ /** Save 3DNodeIndexDocument in file on disk */
43
+ save(): Promise<void>;
44
+ /**
45
+ * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
46
+ * @param node - Node3DIndexDocument object
47
+ */
48
+ private write;
49
+ /**
50
+ * Load 3DNodeIndexDocument data from file on disk
51
+ * @returns 3DNodeIndexDocument object
52
+ */
53
+ private load;
54
+ /**
55
+ * Create root node of the tree
56
+ * @param boundingVolumes - MBS and OOB bounding volumes data
57
+ * @param converter - I3SConverter instance
58
+ * @returns instance of NodeIndexDocument
59
+ */
60
+ static createRootNode(boundingVolumes: BoundingVolumes, converter: I3SConverter): Promise<NodeIndexDocument>;
61
+ /**
62
+ * Create NodeIndexDocument instance
63
+ * @param parentNode - parent NodeIndexDocument
64
+ * @param boundingVolumes - MBS and OOB bounding volumes data
65
+ * @param lodSelection - LOD metrics data
66
+ * @param nodeInPage - node data in node pages
67
+ * @param resources - resources extracted from gltf/b3dm file
68
+ * @param converter - I3SConverter instance
69
+ * @returns NodeIndexDocument instance
70
+ */
71
+ static createNode(parentNode: NodeIndexDocument, boundingVolumes: BoundingVolumes, lodSelection: LodSelection[], nodeInPage: NodeInPage, resources: I3SConvertedResources, converter: I3SConverter): Promise<NodeIndexDocument>;
72
+ /**
73
+ * Form 3DNodeIndexDocument data for the root node
74
+ * @param boundingVolumes - mbs and obb data about node's bounding volume
75
+ * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
76
+ */
77
+ static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument;
78
+ /**
79
+ * Create a new Node3DIndexDocument
80
+ * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node
81
+ * @param boundingVolumes - Bounding volumes
82
+ * @param lodSelection - Level of Details (LOD) metrics
83
+ * @param nodeInPage - corresponding node object in a node page
84
+ * @param resources - the node resources data
85
+ * @param resources.texture - texture image
86
+ * @param resources.attributes - feature attributes
87
+ * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object
88
+ */
89
+ static createNodeIndexDocument(parentNode: NodeIndexDocument, boundingVolumes: BoundingVolumes, lodSelection: LodSelection[], nodeInPage: NodeInPage, resources: I3SConvertedResources): Promise<Node3DIndexDocument>;
90
+ }
91
+ //# sourceMappingURL=node-index-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-index-document.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/node-index-document.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AAIzB,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAC,qBAAqB,EAAC,MAAM,UAAU,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,cAAc;IACP,EAAE,EAAE,MAAM,CAAC;IAClB,uBAAuB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACxB,+BAA+B;IACxB,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IAC/C,eAAe;IACR,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IAC1C,yBAAyB;IACzB,OAAO,CAAC,SAAS,CAAe;IAEhC;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;IAM/C;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAS3E;;;OAGG;IACU,WAAW,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxE;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B1C,+CAA+C;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC;;;OAGG;YACW,KAAK;IAyBnB;;;OAGG;YACW,IAAI;IAalB;;;;;OAKG;WACU,cAAc,CACzB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;;;;;;OASG;WACU,UAAU,CACrB,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAAE,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,qBAAqB,EAChC,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAY7B;;;;OAIG;IACH,MAAM,CAAC,2BAA2B,CAAC,eAAe,EAAE,eAAe,GAAG,mBAAmB;IAqBzF;;;;;;;;;;OAUG;WACU,uBAAuB,CAClC,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAAE,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,mBAAmB,CAAC;CA4ChC"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NodeIndexDocument = void 0;
7
+ const path_1 = require("path");
8
+ const json_map_transform_1 = __importDefault(require("json-map-transform"));
9
+ const uuid_1 = require("uuid");
10
+ const file_utils_1 = require("../../lib/utils/file-utils");
11
+ const node_1 = require("../json-templates/node");
12
+ /**
13
+ * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data
14
+ * The class allows working with 3DNodeIndexDocument in 2 modes:
15
+ * in memory: the data is stored in `data` field
16
+ * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added
17
+ */
18
+ class NodeIndexDocument {
19
+ /**
20
+ * Constructor
21
+ * @param id - id of the node in node pages
22
+ * @param converter - converter instance
23
+ */
24
+ constructor(id, converter) {
25
+ /** 3DNodeIndexDocument data */
26
+ this.data = null;
27
+ /** children */
28
+ this.children = [];
29
+ this.inPageId = id;
30
+ this.id = id === 0 ? 'root' : id.toString();
31
+ this.converter = converter;
32
+ }
33
+ /**
34
+ * Add Node3DIndexDocument data to the node
35
+ * @param data Node3DIndexDocument data
36
+ * @returns this NodeIndexDocument instance (to recurring with constructor)
37
+ */
38
+ async addData(data) {
39
+ if (this.converter.options.instantNodeWriting) {
40
+ await this.write(data);
41
+ }
42
+ else {
43
+ this.data = data;
44
+ }
45
+ return this;
46
+ }
47
+ /**
48
+ * Add child node references
49
+ * @param childNodes - child NodeIndexDocument instances
50
+ */
51
+ async addChildren(childNodes) {
52
+ const newChildren = [];
53
+ for (const node of childNodes) {
54
+ const nodeData = await node.load();
55
+ newChildren.push({
56
+ id: node.id,
57
+ href: `../${node.id}`,
58
+ obb: nodeData.obb,
59
+ mbs: nodeData.mbs
60
+ });
61
+ }
62
+ this.children = this.children.concat(childNodes);
63
+ let data = this.data;
64
+ if (this.converter.options.instantNodeWriting) {
65
+ data = (await this.load());
66
+ }
67
+ if (data) {
68
+ data.children = data.children ?? [];
69
+ data.children = data.children.concat(newChildren);
70
+ }
71
+ if (this.converter.options.instantNodeWriting && data) {
72
+ await this.write(data);
73
+ }
74
+ }
75
+ /**
76
+ * Add neighbors to child nodes of this node
77
+ */
78
+ async addNeighbors() {
79
+ const nodeData = await this.load();
80
+ for (const childNode of this.children) {
81
+ const childNodeData = await childNode.load();
82
+ childNodeData.neighbors = childNodeData.neighbors ?? [];
83
+ // Don't do large amount of "neightbors" to avoid big memory consumption
84
+ if (Number(nodeData?.children?.length) < 1000) {
85
+ for (const neighbor of nodeData.children || []) {
86
+ if (childNode.id === neighbor.id) {
87
+ continue; // eslint-disable-line
88
+ }
89
+ childNodeData.neighbors.push({ ...neighbor });
90
+ }
91
+ }
92
+ else {
93
+ // eslint-disable-next-line no-console, no-undef
94
+ console.warn(`Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`);
95
+ delete childNodeData.neighbors;
96
+ }
97
+ if (this.converter.options.instantNodeWriting && childNodeData) {
98
+ await childNode.write(childNodeData);
99
+ }
100
+ childNode.save();
101
+ }
102
+ }
103
+ /** Save 3DNodeIndexDocument in file on disk */
104
+ async save() {
105
+ if (this.data) {
106
+ await this.write(this.data);
107
+ }
108
+ }
109
+ /**
110
+ * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
111
+ * @param node - Node3DIndexDocument object
112
+ */
113
+ async write(node) {
114
+ const path = (0, path_1.join)(this.converter.layers0Path, 'nodes', this.id);
115
+ if (this.converter.options.slpk) {
116
+ await this.converter.writeQueue.enqueue({
117
+ archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,
118
+ writePromise: () => (0, file_utils_1.writeFileForSlpk)(path, JSON.stringify(node), '3dNodeIndexDocument.json', true, this.converter.compressList)
119
+ }, true);
120
+ }
121
+ else {
122
+ await this.converter.writeQueue.enqueue({ writePromise: () => (0, file_utils_1.writeFile)(path, JSON.stringify(node)) }, true);
123
+ }
124
+ }
125
+ /**
126
+ * Load 3DNodeIndexDocument data from file on disk
127
+ * @returns 3DNodeIndexDocument object
128
+ */
129
+ async load() {
130
+ if (this.data) {
131
+ return this.data;
132
+ }
133
+ const path = this.id;
134
+ const parentNodePath = (0, path_1.join)(this.converter.layers0Path, 'nodes', path);
135
+ let parentNodeFileName = 'index.json';
136
+ if (this.converter.options.slpk) {
137
+ parentNodeFileName = '3dNodeIndexDocument.json';
138
+ }
139
+ return (await (0, file_utils_1.openJson)(parentNodePath, parentNodeFileName));
140
+ }
141
+ /**
142
+ * Create root node of the tree
143
+ * @param boundingVolumes - MBS and OOB bounding volumes data
144
+ * @param converter - I3SConverter instance
145
+ * @returns instance of NodeIndexDocument
146
+ */
147
+ static async createRootNode(boundingVolumes, converter) {
148
+ const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);
149
+ const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);
150
+ return rootNode;
151
+ }
152
+ /**
153
+ * Create NodeIndexDocument instance
154
+ * @param parentNode - parent NodeIndexDocument
155
+ * @param boundingVolumes - MBS and OOB bounding volumes data
156
+ * @param lodSelection - LOD metrics data
157
+ * @param nodeInPage - node data in node pages
158
+ * @param resources - resources extracted from gltf/b3dm file
159
+ * @param converter - I3SConverter instance
160
+ * @returns NodeIndexDocument instance
161
+ */
162
+ static async createNode(parentNode, boundingVolumes, lodSelection, nodeInPage, resources, converter) {
163
+ const data = await NodeIndexDocument.createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources);
164
+ const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);
165
+ return node;
166
+ }
167
+ /**
168
+ * Form 3DNodeIndexDocument data for the root node
169
+ * @param boundingVolumes - mbs and obb data about node's bounding volume
170
+ * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
171
+ */
172
+ static createRootNodeIndexDocument(boundingVolumes) {
173
+ const root0data = {
174
+ version: `{${(0, uuid_1.v4)().toUpperCase()}}`,
175
+ id: 'root',
176
+ level: 0,
177
+ lodSelection: [
178
+ {
179
+ metricType: 'maxScreenThresholdSQ',
180
+ maxError: 0
181
+ },
182
+ {
183
+ metricType: 'maxScreenThreshold',
184
+ maxError: 0
185
+ }
186
+ ],
187
+ ...boundingVolumes,
188
+ children: []
189
+ };
190
+ return (0, json_map_transform_1.default)(root0data, (0, node_1.NODE)());
191
+ }
192
+ /**
193
+ * Create a new Node3DIndexDocument
194
+ * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node
195
+ * @param boundingVolumes - Bounding volumes
196
+ * @param lodSelection - Level of Details (LOD) metrics
197
+ * @param nodeInPage - corresponding node object in a node page
198
+ * @param resources - the node resources data
199
+ * @param resources.texture - texture image
200
+ * @param resources.attributes - feature attributes
201
+ * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object
202
+ */
203
+ static async createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
204
+ const { texture, attributes } = resources;
205
+ const nodeId = nodeInPage.index;
206
+ const parentNodeData = await parentNode.load();
207
+ const nodeData = {
208
+ version: parentNodeData.version,
209
+ id: nodeId.toString(),
210
+ level: parentNodeData.level + 1,
211
+ ...boundingVolumes,
212
+ lodSelection,
213
+ parentNode: {
214
+ id: parentNode.id,
215
+ href: `../${parentNode.id}`,
216
+ mbs: parentNodeData.mbs,
217
+ obb: parentNodeData.obb
218
+ },
219
+ children: [],
220
+ neighbors: []
221
+ };
222
+ const node = (0, json_map_transform_1.default)(nodeData, (0, node_1.NODE)());
223
+ if (nodeInPage.mesh) {
224
+ node.geometryData = [{ href: './geometries/0' }];
225
+ node.sharedResource = { href: './shared' };
226
+ if (texture) {
227
+ node.textureData = [{ href: './textures/0' }, { href: './textures/1' }];
228
+ }
229
+ if (attributes &&
230
+ attributes.length &&
231
+ parentNode.converter.layers0?.attributeStorageInfo?.length) {
232
+ node.attributeData = [];
233
+ for (let index = 0; index < attributes.length; index++) {
234
+ const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
235
+ node.attributeData.push({ href: `./attributes/${folderName}/0` });
236
+ }
237
+ }
238
+ }
239
+ return node;
240
+ }
241
+ }
242
+ exports.NodeIndexDocument = NodeIndexDocument;
@@ -1,6 +1,5 @@
1
- import type { WriteQueueItem } from '../../lib/utils/write-queue';
2
1
  import { NodeInPage } from '@loaders.gl/i3s';
3
- import WriteQueue from '../../lib/utils/write-queue';
2
+ import I3SConverter from '../i3s-converter';
4
3
  /**
5
4
  * class NodePages - wrapper of nodePages array
6
5
  *
@@ -11,7 +10,7 @@ import WriteQueue from '../../lib/utils/write-queue';
11
10
  * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);
12
11
  * ...
13
12
  * // push root node
14
- * const parentId = nodePages.push({
13
+ * const parent = await nodePages.push({
15
14
  lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
16
15
  obb: coordinates.obb,
17
16
  children: []
@@ -28,7 +27,7 @@ import WriteQueue from '../../lib/utils/write-queue';
28
27
  }
29
28
  }
30
29
  };
31
- * const nodeId = this.nodePages.push(nodeInPage, parentId);
30
+ * const node = await this.nodePages.push(nodeInPage, parent.index);
32
31
  * ...
33
32
  * // save all the nodePages in the end of pushing all the nodes
34
33
  * await this.nodePages.save(layers0path);
@@ -36,82 +35,122 @@ import WriteQueue from '../../lib/utils/write-queue';
36
35
  export default class NodePages {
37
36
  readonly nodesPerPage: number;
38
37
  nodesCounter: number;
39
- writeFile: Function;
38
+ writeFile: (...args: any[]) => Promise<null | string>;
39
+ converter: I3SConverter;
40
40
  readonly nodePages: {
41
41
  nodes: NodeInPage[];
42
42
  }[];
43
+ readonly length: number;
43
44
  /**
44
45
  * @constructs
45
46
  * Create a nodePages instance.
46
47
  * @param writeFileFunc - function to save one nodePage into a file
47
48
  * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met
48
49
  */
49
- constructor(writeFileFunc: any, nodesPerPage: any);
50
+ constructor(writeFileFunc: any, nodesPerPage: any, converter: I3SConverter);
50
51
  /**
51
52
  * Setup function to save node pages
52
53
  * @param func - function which should be used to save node pages
53
54
  */
54
- useWriteFunction(func: Function): void;
55
+ useWriteFunction(func: (...args: any[]) => Promise<null | string>): void;
55
56
  /**
56
- * Get the node by its end-to-end index
57
- * @param id - end-to-end index of the node
58
- * @return the node object
57
+ * Get file path and file name of the node page with the particular id
58
+ * @param nodePageId - node page id
59
+ * @returns file path and file name
59
60
  */
60
- getNodeById(id: number): NodeInPage;
61
+ private getNodePageFileName;
61
62
  /**
62
- * Update material in node.mesh object by node id
63
- * @param id - end-to-end index of the node
64
- * @param materialId - id from scene layer materialDefinitions
63
+ * Load node page from a file on the disk
64
+ * @param nodePageId - node page id
65
+ * @returns - node page data
65
66
  */
66
- updateMaterialByNodeId(id: number, materialId: number): void;
67
+ private loadNodePage;
67
68
  /**
68
- * Update vertexCount in node.mesh.geometry object by node id
69
- * @param id - end-to-end index of the node
70
- * @param vertexCount - vertex count for particular node
69
+ * Get nodepage id by node id
70
+ * @param id node id
71
+ * @returns node page id
71
72
  */
72
- updateVertexCountByNodeId(id: number, vertexCount: number): void;
73
+ private getPageIndexByNodeId;
73
74
  /**
74
- * Update resource in node.mesh.attribute object by node id
75
- * @param id - end-to-end index of the node
76
- */
77
- updateNodeAttributeByNodeId(id: number): void;
78
- /**
79
- * Update featureCount in node.mesh.geometry object by node id
80
- * @param id - end-to-end index of the node
81
- * @param featureCount - features count of the node
75
+ * Get node page data by node id
76
+ * @param id node id
77
+ * @returns node page data
82
78
  */
83
- updateFeatureCountByNodeId(id: number, featureCount: number): void;
79
+ private getPageByNodeId;
84
80
  /**
85
- * Update texelCountHint in node.mesh.material object by node id
81
+ * Get the node by its end-to-end index
86
82
  * @param id - end-to-end index of the node
87
- * @param texelCountHint - texelCountHint of particular node
83
+ * @return the node object
88
84
  */
89
- updateTexelCountHintByNodeId(id: number, texelCountHint: number): void;
85
+ getNodeById(id: number, nodePage?: {
86
+ nodes: NodeInPage[];
87
+ }): Promise<NodeInPage>;
90
88
  /**
91
89
  * Add a child id into the parent node.children array
92
90
  * @param parentId - end-to-end parent node index
93
91
  * @param childId - end-to-end child node index
94
92
  */
95
- addChildRelation(parentId: number | undefined, childId: number): void;
96
- /**
97
- * Update resource index in node.mesh object
98
- * @param node - node object
99
- */
100
- updateResourceInMesh(node: NodeInPage): void;
93
+ private addChildRelation;
101
94
  /**
102
95
  * Put new node in nodePages array
103
96
  * @param node - node object
104
97
  * @param parentId - index of parent node
105
98
  * @return
106
99
  */
107
- push(node: NodeInPage, parentId?: number): number;
100
+ push(node: NodeInPage, parentId?: number): Promise<NodeInPage>;
101
+ /**
102
+ * Save node to the file on the disk
103
+ * @param node - node data
104
+ */
105
+ saveNode(node: NodeInPage): Promise<void>;
106
+ /**
107
+ * Save metadata file (for slpk only)
108
+ */
109
+ saveMetadata(): Promise<void>;
108
110
  /**
109
111
  * Save all the node pages
110
112
  * Run this method when all nodes is pushed in nodePages
111
- * @param layers0Path - path of layer
112
- * @param writeQueue - write queue that controlls files write concurrency
113
- * @param slpk
114
113
  */
115
- save(layers0Path: string, writeQueue: WriteQueue<WriteQueueItem>, slpk?: boolean): Promise<void>;
114
+ save(): Promise<void>;
115
+ /**
116
+ * Update resource index in node.mesh object
117
+ * @param node - node object
118
+ */
119
+ static updateResourceInMesh(node: NodeInPage): void;
120
+ /**
121
+ * Update all fields in the node excluding id
122
+ * @param node - node object
123
+ * @param data - NodeInPage data to replace original data
124
+ */
125
+ static updateAll(node: NodeInPage, data: NodeInPage): NodeInPage;
126
+ /**
127
+ * Update material in node.mesh object by node id
128
+ * @param id - end-to-end index of the node
129
+ * @param materialId - id from scene layer materialDefinitions
130
+ */
131
+ static updateMaterialByNodeId(node: NodeInPage, materialId: number): void;
132
+ /**
133
+ * Update vertexCount in node.mesh.geometry object by node id
134
+ * @param id - end-to-end index of the node
135
+ * @param vertexCount - vertex count for particular node
136
+ */
137
+ static updateVertexCountByNodeId(node: NodeInPage, vertexCount: number): void;
138
+ /**
139
+ * Update resource in node.mesh.attribute object by node id
140
+ * @param node - node object
141
+ */
142
+ static updateNodeAttributeByNodeId(node: NodeInPage): void;
143
+ /**
144
+ * Update featureCount in node.mesh.geometry object by node id
145
+ * @param node - node object
146
+ * @param featureCount - features count of the node
147
+ */
148
+ static updateFeatureCountByNodeId(node: NodeInPage, featureCount: number): void;
149
+ /**
150
+ * Update texelCountHint in node.mesh.material object by node id
151
+ * @param node - node object
152
+ * @param texelCountHint - texelCountHint of particular node
153
+ */
154
+ static updateTexelCountHintByNodeId(node: NodeInPage, texelCountHint: number): void;
116
155
  }
117
156
  //# sourceMappingURL=node-pages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-pages.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/node-pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAKhE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAGrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAC,EAAE,CAAC;IAE5C;;;;;OAKG;gBACS,aAAa,KAAA,EAAE,YAAY,KAAA;IASvC;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAItC;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;IAMnC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAW5D;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAQhE;;;OAGG;IACH,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7C;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQlE;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAQtE;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQrE;;;OAGG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5C;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAajD;;;;;;OAMG;IACG,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,EACtC,IAAI,GAAE,OAAe,GACpB,OAAO,CAAC,IAAI,CAAC;CA6BjB"}
1
+ {"version":3,"file":"node-pages.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/node-pages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAE3C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IAC/C,SAAS,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAC,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAK;IAE5B;;;;;OAKG;gBACS,aAAa,KAAA,EAAE,YAAY,KAAA,EAAE,SAAS,EAAE,YAAY;IAWhE;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI;IAIjE;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;OAIG;YACW,YAAY;IAW1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;;OAIG;YACW,eAAe;IAQ7B;;;;OAIG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpF;;;;OAIG;YACW,gBAAgB;IAS9B;;;;;OAKG;IACG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBpE;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC/C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAMnD;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAMhE;;;;OAIG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUzE;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAO7E;;;OAGG;IACH,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAO1D;;;;OAIG;IACH,MAAM,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAO/E;;;;OAIG;IACH,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;CAMpF"}