@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
@@ -4,22 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.validateNodeBoundingVolumes = validateNodeBoundingVolumes;
7
-
8
7
  var _culling = require("@math.gl/culling");
9
-
10
8
  var _engine = require("@luma.gl/engine");
11
-
12
9
  var _core = require("@math.gl/core");
13
-
14
10
  var _geospatial = require("@math.gl/geospatial");
15
11
 
16
12
  function validateNodeBoundingVolumes(node) {
17
13
  var _node$parentNode, _node$parentNode2;
18
-
19
14
  if (!(node !== null && node !== void 0 && (_node$parentNode = node.parentNode) !== null && _node$parentNode !== void 0 && _node$parentNode.obb) || !(node !== null && node !== void 0 && (_node$parentNode2 = node.parentNode) !== null && _node$parentNode2 !== void 0 && _node$parentNode2.mbs)) {
20
15
  return [];
21
16
  }
22
-
23
17
  var tileWarnings = [];
24
18
  validateObb(tileWarnings, node);
25
19
  validateMbs(tileWarnings, node);
@@ -28,15 +22,12 @@ function validateNodeBoundingVolumes(node) {
28
22
 
29
23
  function validateObb(tileWarnings, node) {
30
24
  var _node$parentNode3;
31
-
32
25
  var parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);
33
26
  var tileVertices = getTileObbVertices(node);
34
27
  var isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);
35
-
36
28
  if (isTileObbInsideParentObb) {
37
29
  return;
38
30
  }
39
-
40
31
  var title = "OBB of Tile (".concat(node.id, ") doesn't fit into Parent (").concat((_node$parentNode3 = node.parentNode) === null || _node$parentNode3 === void 0 ? void 0 : _node$parentNode3.id, ") tile OBB");
41
32
  tileWarnings.push(title);
42
33
  }
@@ -45,10 +36,8 @@ function validateMbs(tileWarnings, node) {
45
36
  var tileMbs = createBoundingSphereFromTileMbs(node.mbs);
46
37
  var parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);
47
38
  var distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);
48
-
49
39
  if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {
50
40
  var _node$parentNode4;
51
-
52
41
  var title = "MBS of Tile (".concat(node.id, ") doesn't fit into Parent (").concat((_node$parentNode4 = node.parentNode) === null || _node$parentNode4 === void 0 ? void 0 : _node$parentNode4.id, ") tile MBS");
53
42
  tileWarnings.push(title);
54
43
  }
@@ -60,8 +49,8 @@ function createBoundingSphereFromTileMbs(mbs) {
60
49
 
61
50
  function createBoundingBoxFromTileObb(obb) {
62
51
  var center = obb.center,
63
- halfSize = obb.halfSize,
64
- quaternion = obb.quaternion;
52
+ halfSize = obb.halfSize,
53
+ quaternion = obb.quaternion;
65
54
  return new _culling.OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);
66
55
  }
67
56
 
@@ -70,36 +59,28 @@ function getTileObbVertices(node) {
70
59
  var halfSize = node.obb.halfSize;
71
60
  var attributes = geometry.getAttributes();
72
61
  var positions = new Float32Array(attributes.POSITION.value);
73
-
74
62
  var obbCenterCartesian = _geospatial.Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);
75
-
76
63
  var vertices = [];
77
-
78
64
  for (var i = 0; i < positions.length; i += 3) {
79
65
  var positionsVector = new _core.Vector3(positions[i] *= halfSize[0], positions[i + 1] *= halfSize[1], positions[i + 2] *= halfSize[2]);
80
- var rotatedPositions = positionsVector.transformByQuaternion(node.obb.quaternion).add(obbCenterCartesian);
66
+ var rotatedPositions = positionsVector
67
+ .transformByQuaternion(node.obb.quaternion).add(obbCenterCartesian);
81
68
  vertices = vertices.concat(rotatedPositions);
82
69
  }
83
-
84
70
  return vertices;
85
71
  }
86
72
 
87
73
  function isAllVerticesInsideBoundingVolume(boundingVolume, positions) {
88
74
  var isVerticesInsideObb = true;
89
-
90
75
  for (var index = 0; index < positions.length / 3; index += 3) {
91
76
  var point = [positions[index], positions[index + 1], positions[index + 2]];
92
-
93
77
  var cartographicPoint = _geospatial.Ellipsoid.WGS84.cartesianToCartographic(point);
94
-
95
78
  var distance = boundingVolume.distanceTo(cartographicPoint);
96
-
97
79
  if (distance > 0) {
98
80
  isVerticesInsideObb = false;
99
81
  break;
100
82
  }
101
83
  }
102
-
103
84
  return isVerticesInsideObb;
104
85
  }
105
86
  //# sourceMappingURL=node-debug.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/i3s-converter/helpers/node-debug.ts"],"names":["validateNodeBoundingVolumes","node","parentNode","obb","mbs","tileWarnings","validateObb","validateMbs","parentObb","createBoundingBoxFromTileObb","tileVertices","getTileObbVertices","isTileObbInsideParentObb","isAllVerticesInsideBoundingVolume","title","id","push","tileMbs","createBoundingSphereFromTileMbs","parentMbs","distanceBetweenCenters","center","distanceTo","radius","BoundingSphere","halfSize","quaternion","OrientedBoundingBox","fromCenterHalfSizeQuaternion","geometry","CubeGeometry","attributes","getAttributes","positions","Float32Array","POSITION","value","obbCenterCartesian","Ellipsoid","WGS84","cartographicToCartesian","vertices","i","length","positionsVector","Vector3","rotatedPositions","transformByQuaternion","add","concat","boundingVolume","isVerticesInsideObb","index","point","cartographicPoint","cartesianToCartographic","distance"],"mappings":"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","sourcesContent":["import type {Mbs, Node3DIndexDocument, Obb} from '@loaders.gl/i3s';\n\nimport {OrientedBoundingBox, BoundingSphere} from '@math.gl/culling';\nimport {CubeGeometry} from '@luma.gl/engine';\nimport {Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\n// TODO Unite Tile validation logic in i3s-17-and-debug with this code.\n\n/**\n * Do validation of bounding volumes for particular node.\n * Generates special warnings if there are some issues.\n * @param node\n */\nexport function validateNodeBoundingVolumes(node: Node3DIndexDocument): string[] {\n if (!node?.parentNode?.obb || !node?.parentNode?.mbs) {\n return [];\n }\n\n const tileWarnings: string[] = [];\n\n validateObb(tileWarnings, node);\n validateMbs(tileWarnings, node);\n\n return tileWarnings;\n}\n\n/**\n * Check if child Obb fit into parent Obb.\n * @param tileWarnings\n * @param node\n */\nfunction validateObb(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);\n const tileVertices = getTileObbVertices(node);\n const isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);\n\n if (isTileObbInsideParentObb) {\n return;\n }\n\n const title = `OBB of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile OBB`;\n tileWarnings.push(title);\n}\n\n/**\n * Check if child Mbs fit into parent Mbs.\n * @param tileWarnings\n * @param node\n */\nfunction validateMbs(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const tileMbs = createBoundingSphereFromTileMbs(node.mbs);\n // @ts-expect-error\n const parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);\n const distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);\n\n if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {\n const title = `MBS of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile MBS`;\n tileWarnings.push(title);\n }\n}\n\n/**\n * Generates bounding sphere from mbs\n * @param mbs\n */\nfunction createBoundingSphereFromTileMbs(mbs: Mbs): BoundingSphere {\n return new BoundingSphere([mbs[0], mbs[1], mbs[2]], mbs[3]);\n}\n\n/**\n * Generates oriented bounding box from tile obb\n * @param obb\n * @returns\n */\nfunction createBoundingBoxFromTileObb(obb: Obb): OrientedBoundingBox {\n const {center, halfSize, quaternion} = obb;\n return new OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);\n}\n\n/**\n * Get vertices fromnode obb\n * TODO check if Obb generates properly\n * @param node\n */\nfunction getTileObbVertices(node: Node3DIndexDocument): number[] {\n const geometry = new CubeGeometry();\n // @ts-expect-error\n const halfSize = node.obb.halfSize;\n const attributes = geometry.getAttributes();\n const positions = new Float32Array(attributes.POSITION.value);\n // @ts-expect-error\n const obbCenterCartesian = Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);\n\n let vertices = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n const positionsVector = new Vector3(\n (positions[i] *= halfSize[0]),\n (positions[i + 1] *= halfSize[1]),\n (positions[i + 2] *= halfSize[2])\n );\n const rotatedPositions = positionsVector\n // @ts-expect-error\n .transformByQuaternion(node.obb.quaternion)\n .add(obbCenterCartesian);\n // @ts-expect-error\n vertices = vertices.concat(rotatedPositions);\n }\n\n return vertices;\n}\n\n/**\n * Check if all vertices inside bounding volume\n * @param boundingVolume\n * @param positions\n */\nfunction isAllVerticesInsideBoundingVolume(\n boundingVolume: OrientedBoundingBox,\n positions: number[]\n): boolean {\n let isVerticesInsideObb = true;\n\n for (let index = 0; index < positions.length / 3; index += 3) {\n const point = [positions[index], positions[index + 1], positions[index + 2]];\n const cartographicPoint = Ellipsoid.WGS84.cartesianToCartographic(point);\n\n const distance = boundingVolume.distanceTo(cartographicPoint);\n\n if (distance > 0) {\n isVerticesInsideObb = false;\n break;\n }\n }\n\n return isVerticesInsideObb;\n}\n"],"file":"node-debug.js"}
1
+ {"version":3,"file":"node-debug.js","names":["validateNodeBoundingVolumes","node","parentNode","obb","mbs","tileWarnings","validateObb","validateMbs","parentObb","createBoundingBoxFromTileObb","tileVertices","getTileObbVertices","isTileObbInsideParentObb","isAllVerticesInsideBoundingVolume","title","id","push","tileMbs","createBoundingSphereFromTileMbs","parentMbs","distanceBetweenCenters","center","distanceTo","radius","BoundingSphere","halfSize","quaternion","OrientedBoundingBox","fromCenterHalfSizeQuaternion","geometry","CubeGeometry","attributes","getAttributes","positions","Float32Array","POSITION","value","obbCenterCartesian","Ellipsoid","WGS84","cartographicToCartesian","vertices","i","length","positionsVector","Vector3","rotatedPositions","transformByQuaternion","add","concat","boundingVolume","isVerticesInsideObb","index","point","cartographicPoint","cartesianToCartographic","distance"],"sources":["../../../../src/i3s-converter/helpers/node-debug.ts"],"sourcesContent":["import type {Mbs, Node3DIndexDocument, Obb} from '@loaders.gl/i3s';\n\nimport {OrientedBoundingBox, BoundingSphere} from '@math.gl/culling';\nimport {CubeGeometry} from '@luma.gl/engine';\nimport {Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\n// TODO Unite Tile validation logic in i3s-17-and-debug with this code.\n\n/**\n * Do validation of bounding volumes for particular node.\n * Generates special warnings if there are some issues.\n * @param node\n */\nexport function validateNodeBoundingVolumes(node: Node3DIndexDocument): string[] {\n if (!node?.parentNode?.obb || !node?.parentNode?.mbs) {\n return [];\n }\n\n const tileWarnings: string[] = [];\n\n validateObb(tileWarnings, node);\n validateMbs(tileWarnings, node);\n\n return tileWarnings;\n}\n\n/**\n * Check if child Obb fit into parent Obb.\n * @param tileWarnings\n * @param node\n */\nfunction validateObb(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);\n const tileVertices = getTileObbVertices(node);\n const isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);\n\n if (isTileObbInsideParentObb) {\n return;\n }\n\n const title = `OBB of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile OBB`;\n tileWarnings.push(title);\n}\n\n/**\n * Check if child Mbs fit into parent Mbs.\n * @param tileWarnings\n * @param node\n */\nfunction validateMbs(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const tileMbs = createBoundingSphereFromTileMbs(node.mbs);\n // @ts-expect-error\n const parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);\n const distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);\n\n if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {\n const title = `MBS of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile MBS`;\n tileWarnings.push(title);\n }\n}\n\n/**\n * Generates bounding sphere from mbs\n * @param mbs\n */\nfunction createBoundingSphereFromTileMbs(mbs: Mbs): BoundingSphere {\n return new BoundingSphere([mbs[0], mbs[1], mbs[2]], mbs[3]);\n}\n\n/**\n * Generates oriented bounding box from tile obb\n * @param obb\n * @returns\n */\nfunction createBoundingBoxFromTileObb(obb: Obb): OrientedBoundingBox {\n const {center, halfSize, quaternion} = obb;\n return new OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);\n}\n\n/**\n * Get vertices fromnode obb\n * TODO check if Obb generates properly\n * @param node\n */\nfunction getTileObbVertices(node: Node3DIndexDocument): number[] {\n const geometry = new CubeGeometry();\n // @ts-expect-error\n const halfSize = node.obb.halfSize;\n const attributes = geometry.getAttributes();\n const positions = new Float32Array(attributes.POSITION.value);\n // @ts-expect-error\n const obbCenterCartesian = Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);\n\n let vertices = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n const positionsVector = new Vector3(\n (positions[i] *= halfSize[0]),\n (positions[i + 1] *= halfSize[1]),\n (positions[i + 2] *= halfSize[2])\n );\n const rotatedPositions = positionsVector\n // @ts-expect-error\n .transformByQuaternion(node.obb.quaternion)\n .add(obbCenterCartesian);\n // @ts-expect-error\n vertices = vertices.concat(rotatedPositions);\n }\n\n return vertices;\n}\n\n/**\n * Check if all vertices inside bounding volume\n * @param boundingVolume\n * @param positions\n */\nfunction isAllVerticesInsideBoundingVolume(\n boundingVolume: OrientedBoundingBox,\n positions: number[]\n): boolean {\n let isVerticesInsideObb = true;\n\n for (let index = 0; index < positions.length / 3; index += 3) {\n const point = [positions[index], positions[index + 1], positions[index + 2]];\n const cartographicPoint = Ellipsoid.WGS84.cartesianToCartographic(point);\n\n const distance = boundingVolume.distanceTo(cartographicPoint);\n\n if (distance > 0) {\n isVerticesInsideObb = false;\n break;\n }\n }\n\n return isVerticesInsideObb;\n}\n"],"mappings":"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"}
@@ -0,0 +1,507 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.NodeIndexDocument = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _path = require("path");
14
+ var _jsonMapTransform = _interopRequireDefault(require("json-map-transform"));
15
+ var _uuid = require("uuid");
16
+ var _fileUtils = require("../../lib/utils/file-utils");
17
+ var _node = require("../json-templates/node");
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
+ var NodeIndexDocument = function () {
24
+
25
+ function NodeIndexDocument(id, converter) {
26
+ (0, _classCallCheck2.default)(this, NodeIndexDocument);
27
+ (0, _defineProperty2.default)(this, "id", void 0);
28
+ (0, _defineProperty2.default)(this, "inPageId", void 0);
29
+ (0, _defineProperty2.default)(this, "data", null);
30
+ (0, _defineProperty2.default)(this, "children", []);
31
+ (0, _defineProperty2.default)(this, "converter", void 0);
32
+ this.inPageId = id;
33
+ this.id = id === 0 ? 'root' : id.toString();
34
+ this.converter = converter;
35
+ }
36
+
37
+ (0, _createClass2.default)(NodeIndexDocument, [{
38
+ key: "addData",
39
+ value: function () {
40
+ var _addData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data) {
41
+ return _regenerator.default.wrap(function _callee$(_context) {
42
+ while (1) {
43
+ switch (_context.prev = _context.next) {
44
+ case 0:
45
+ if (!this.converter.options.instantNodeWriting) {
46
+ _context.next = 5;
47
+ break;
48
+ }
49
+ _context.next = 3;
50
+ return this.write(data);
51
+ case 3:
52
+ _context.next = 6;
53
+ break;
54
+ case 5:
55
+ this.data = data;
56
+ case 6:
57
+ return _context.abrupt("return", this);
58
+ case 7:
59
+ case "end":
60
+ return _context.stop();
61
+ }
62
+ }
63
+ }, _callee, this);
64
+ }));
65
+ function addData(_x) {
66
+ return _addData.apply(this, arguments);
67
+ }
68
+ return addData;
69
+ }()
70
+ }, {
71
+ key: "addChildren",
72
+ value: function () {
73
+ var _addChildren = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(childNodes) {
74
+ var newChildren, _iterator, _step, node, nodeData, data, _data$children;
75
+ return _regenerator.default.wrap(function _callee2$(_context2) {
76
+ while (1) {
77
+ switch (_context2.prev = _context2.next) {
78
+ case 0:
79
+ newChildren = [];
80
+ _iterator = _createForOfIteratorHelper(childNodes);
81
+ _context2.prev = 2;
82
+ _iterator.s();
83
+ case 4:
84
+ if ((_step = _iterator.n()).done) {
85
+ _context2.next = 12;
86
+ break;
87
+ }
88
+ node = _step.value;
89
+ _context2.next = 8;
90
+ return node.load();
91
+ case 8:
92
+ nodeData = _context2.sent;
93
+ newChildren.push({
94
+ id: node.id,
95
+ href: "../".concat(node.id),
96
+ obb: nodeData.obb,
97
+ mbs: nodeData.mbs
98
+ });
99
+ case 10:
100
+ _context2.next = 4;
101
+ break;
102
+ case 12:
103
+ _context2.next = 17;
104
+ break;
105
+ case 14:
106
+ _context2.prev = 14;
107
+ _context2.t0 = _context2["catch"](2);
108
+ _iterator.e(_context2.t0);
109
+ case 17:
110
+ _context2.prev = 17;
111
+ _iterator.f();
112
+ return _context2.finish(17);
113
+ case 20:
114
+ this.children = this.children.concat(childNodes);
115
+ data = this.data;
116
+ if (!this.converter.options.instantNodeWriting) {
117
+ _context2.next = 26;
118
+ break;
119
+ }
120
+ _context2.next = 25;
121
+ return this.load();
122
+ case 25:
123
+ data = _context2.sent;
124
+ case 26:
125
+ if (data) {
126
+ data.children = (_data$children = data.children) !== null && _data$children !== void 0 ? _data$children : [];
127
+ data.children = data.children.concat(newChildren);
128
+ }
129
+ if (!(this.converter.options.instantNodeWriting && data)) {
130
+ _context2.next = 30;
131
+ break;
132
+ }
133
+ _context2.next = 30;
134
+ return this.write(data);
135
+ case 30:
136
+ case "end":
137
+ return _context2.stop();
138
+ }
139
+ }
140
+ }, _callee2, this, [[2, 14, 17, 20]]);
141
+ }));
142
+ function addChildren(_x2) {
143
+ return _addChildren.apply(this, arguments);
144
+ }
145
+ return addChildren;
146
+ }()
147
+ }, {
148
+ key: "addNeighbors",
149
+ value: function () {
150
+ var _addNeighbors = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
151
+ var nodeData, _iterator2, _step2, _childNodeData$neighb, _nodeData$children, childNode, childNodeData, _iterator3, _step3, neighbor;
152
+ return _regenerator.default.wrap(function _callee3$(_context3) {
153
+ while (1) {
154
+ switch (_context3.prev = _context3.next) {
155
+ case 0:
156
+ _context3.next = 2;
157
+ return this.load();
158
+ case 2:
159
+ nodeData = _context3.sent;
160
+ _iterator2 = _createForOfIteratorHelper(this.children);
161
+ _context3.prev = 4;
162
+ _iterator2.s();
163
+ case 6:
164
+ if ((_step2 = _iterator2.n()).done) {
165
+ _context3.next = 41;
166
+ break;
167
+ }
168
+ childNode = _step2.value;
169
+ _context3.next = 10;
170
+ return childNode.load();
171
+ case 10:
172
+ childNodeData = _context3.sent;
173
+ childNodeData.neighbors = (_childNodeData$neighb = childNodeData.neighbors) !== null && _childNodeData$neighb !== void 0 ? _childNodeData$neighb : [];
174
+
175
+ if (!(Number(nodeData === null || nodeData === void 0 ? void 0 : (_nodeData$children = nodeData.children) === null || _nodeData$children === void 0 ? void 0 : _nodeData$children.length) < 1000)) {
176
+ _context3.next = 33;
177
+ break;
178
+ }
179
+ _iterator3 = _createForOfIteratorHelper(nodeData.children || []);
180
+ _context3.prev = 14;
181
+ _iterator3.s();
182
+ case 16:
183
+ if ((_step3 = _iterator3.n()).done) {
184
+ _context3.next = 23;
185
+ break;
186
+ }
187
+ neighbor = _step3.value;
188
+ if (!(childNode.id === neighbor.id)) {
189
+ _context3.next = 20;
190
+ break;
191
+ }
192
+ return _context3.abrupt("continue", 21);
193
+ case 20:
194
+ childNodeData.neighbors.push(_objectSpread({}, neighbor));
195
+ case 21:
196
+ _context3.next = 16;
197
+ break;
198
+ case 23:
199
+ _context3.next = 28;
200
+ break;
201
+ case 25:
202
+ _context3.prev = 25;
203
+ _context3.t0 = _context3["catch"](14);
204
+ _iterator3.e(_context3.t0);
205
+ case 28:
206
+ _context3.prev = 28;
207
+ _iterator3.f();
208
+ return _context3.finish(28);
209
+ case 31:
210
+ _context3.next = 35;
211
+ break;
212
+ case 33:
213
+ console.warn("Node ".concat(childNode.id, ": neighbors attribute is omited because of large number of neigbors"));
214
+ delete childNodeData.neighbors;
215
+ case 35:
216
+ if (!(this.converter.options.instantNodeWriting && childNodeData)) {
217
+ _context3.next = 38;
218
+ break;
219
+ }
220
+ _context3.next = 38;
221
+ return childNode.write(childNodeData);
222
+ case 38:
223
+ childNode.save();
224
+ case 39:
225
+ _context3.next = 6;
226
+ break;
227
+ case 41:
228
+ _context3.next = 46;
229
+ break;
230
+ case 43:
231
+ _context3.prev = 43;
232
+ _context3.t1 = _context3["catch"](4);
233
+ _iterator2.e(_context3.t1);
234
+ case 46:
235
+ _context3.prev = 46;
236
+ _iterator2.f();
237
+ return _context3.finish(46);
238
+ case 49:
239
+ case "end":
240
+ return _context3.stop();
241
+ }
242
+ }
243
+ }, _callee3, this, [[4, 43, 46, 49], [14, 25, 28, 31]]);
244
+ }));
245
+ function addNeighbors() {
246
+ return _addNeighbors.apply(this, arguments);
247
+ }
248
+ return addNeighbors;
249
+ }()
250
+ }, {
251
+ key: "save",
252
+ value: function () {
253
+ var _save = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
254
+ return _regenerator.default.wrap(function _callee4$(_context4) {
255
+ while (1) {
256
+ switch (_context4.prev = _context4.next) {
257
+ case 0:
258
+ if (!this.data) {
259
+ _context4.next = 3;
260
+ break;
261
+ }
262
+ _context4.next = 3;
263
+ return this.write(this.data);
264
+ case 3:
265
+ case "end":
266
+ return _context4.stop();
267
+ }
268
+ }
269
+ }, _callee4, this);
270
+ }));
271
+ function save() {
272
+ return _save.apply(this, arguments);
273
+ }
274
+ return save;
275
+ }()
276
+ }, {
277
+ key: "write",
278
+ value: function () {
279
+ var _write = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(node) {
280
+ var _this = this;
281
+ var path;
282
+ return _regenerator.default.wrap(function _callee5$(_context5) {
283
+ while (1) {
284
+ switch (_context5.prev = _context5.next) {
285
+ case 0:
286
+ path = (0, _path.join)(this.converter.layers0Path, 'nodes', this.id);
287
+ if (!this.converter.options.slpk) {
288
+ _context5.next = 6;
289
+ break;
290
+ }
291
+ _context5.next = 4;
292
+ return this.converter.writeQueue.enqueue({
293
+ archiveKey: "nodes/".concat(this.id, "/3dNodeIndexDocument.json.gz"),
294
+ writePromise: function writePromise() {
295
+ return (0, _fileUtils.writeFileForSlpk)(path, JSON.stringify(node), '3dNodeIndexDocument.json', true, _this.converter.compressList);
296
+ }
297
+ }, true);
298
+ case 4:
299
+ _context5.next = 8;
300
+ break;
301
+ case 6:
302
+ _context5.next = 8;
303
+ return this.converter.writeQueue.enqueue({
304
+ writePromise: function writePromise() {
305
+ return (0, _fileUtils.writeFile)(path, JSON.stringify(node));
306
+ }
307
+ }, true);
308
+ case 8:
309
+ case "end":
310
+ return _context5.stop();
311
+ }
312
+ }
313
+ }, _callee5, this);
314
+ }));
315
+ function write(_x3) {
316
+ return _write.apply(this, arguments);
317
+ }
318
+ return write;
319
+ }()
320
+ }, {
321
+ key: "load",
322
+ value: function () {
323
+ var _load = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
324
+ var path, parentNodePath, parentNodeFileName;
325
+ return _regenerator.default.wrap(function _callee6$(_context6) {
326
+ while (1) {
327
+ switch (_context6.prev = _context6.next) {
328
+ case 0:
329
+ if (!this.data) {
330
+ _context6.next = 2;
331
+ break;
332
+ }
333
+ return _context6.abrupt("return", this.data);
334
+ case 2:
335
+ path = this.id;
336
+ parentNodePath = (0, _path.join)(this.converter.layers0Path, 'nodes', path);
337
+ parentNodeFileName = 'index.json';
338
+ if (this.converter.options.slpk) {
339
+ parentNodeFileName = '3dNodeIndexDocument.json';
340
+ }
341
+ _context6.next = 8;
342
+ return (0, _fileUtils.openJson)(parentNodePath, parentNodeFileName);
343
+ case 8:
344
+ return _context6.abrupt("return", _context6.sent);
345
+ case 9:
346
+ case "end":
347
+ return _context6.stop();
348
+ }
349
+ }
350
+ }, _callee6, this);
351
+ }));
352
+ function load() {
353
+ return _load.apply(this, arguments);
354
+ }
355
+ return load;
356
+ }()
357
+ }], [{
358
+ key: "createRootNode",
359
+ value: function () {
360
+ var _createRootNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(boundingVolumes, converter) {
361
+ var rootData, rootNode;
362
+ return _regenerator.default.wrap(function _callee7$(_context7) {
363
+ while (1) {
364
+ switch (_context7.prev = _context7.next) {
365
+ case 0:
366
+ rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);
367
+ _context7.next = 3;
368
+ return new NodeIndexDocument(0, converter).addData(rootData);
369
+ case 3:
370
+ rootNode = _context7.sent;
371
+ return _context7.abrupt("return", rootNode);
372
+ case 5:
373
+ case "end":
374
+ return _context7.stop();
375
+ }
376
+ }
377
+ }, _callee7);
378
+ }));
379
+ function createRootNode(_x4, _x5) {
380
+ return _createRootNode.apply(this, arguments);
381
+ }
382
+ return createRootNode;
383
+ }()
384
+ }, {
385
+ key: "createNode",
386
+ value: function () {
387
+ var _createNode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(parentNode, boundingVolumes, lodSelection, nodeInPage, resources, converter) {
388
+ var data, node;
389
+ return _regenerator.default.wrap(function _callee8$(_context8) {
390
+ while (1) {
391
+ switch (_context8.prev = _context8.next) {
392
+ case 0:
393
+ _context8.next = 2;
394
+ return NodeIndexDocument.createNodeIndexDocument(parentNode, boundingVolumes, lodSelection, nodeInPage, resources);
395
+ case 2:
396
+ data = _context8.sent;
397
+ _context8.next = 5;
398
+ return new NodeIndexDocument(nodeInPage.index, converter).addData(data);
399
+ case 5:
400
+ node = _context8.sent;
401
+ return _context8.abrupt("return", node);
402
+ case 7:
403
+ case "end":
404
+ return _context8.stop();
405
+ }
406
+ }
407
+ }, _callee8);
408
+ }));
409
+ function createNode(_x6, _x7, _x8, _x9, _x10, _x11) {
410
+ return _createNode.apply(this, arguments);
411
+ }
412
+ return createNode;
413
+ }()
414
+ }, {
415
+ key: "createRootNodeIndexDocument",
416
+ value:
417
+ function createRootNodeIndexDocument(boundingVolumes) {
418
+ var root0data = _objectSpread(_objectSpread({
419
+ version: "{".concat((0, _uuid.v4)().toUpperCase(), "}"),
420
+ id: 'root',
421
+ level: 0,
422
+ lodSelection: [{
423
+ metricType: 'maxScreenThresholdSQ',
424
+ maxError: 0
425
+ }, {
426
+ metricType: 'maxScreenThreshold',
427
+ maxError: 0
428
+ }]
429
+ }, boundingVolumes), {}, {
430
+ children: []
431
+ });
432
+ return (0, _jsonMapTransform.default)(root0data, (0, _node.NODE)());
433
+ }
434
+
435
+ }, {
436
+ key: "createNodeIndexDocument",
437
+ value: function () {
438
+ var _createNodeIndexDocument = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
439
+ var texture, attributes, nodeId, parentNodeData, nodeData, node, _parentNode$converter, _parentNode$converter2, index, folderName;
440
+ return _regenerator.default.wrap(function _callee9$(_context9) {
441
+ while (1) {
442
+ switch (_context9.prev = _context9.next) {
443
+ case 0:
444
+ texture = resources.texture, attributes = resources.attributes;
445
+ nodeId = nodeInPage.index;
446
+ _context9.next = 4;
447
+ return parentNode.load();
448
+ case 4:
449
+ parentNodeData = _context9.sent;
450
+ nodeData = _objectSpread(_objectSpread({
451
+ version: parentNodeData.version,
452
+ id: nodeId.toString(),
453
+ level: parentNodeData.level + 1
454
+ }, boundingVolumes), {}, {
455
+ lodSelection: lodSelection,
456
+ parentNode: {
457
+ id: parentNode.id,
458
+ href: "../".concat(parentNode.id),
459
+ mbs: parentNodeData.mbs,
460
+ obb: parentNodeData.obb
461
+ },
462
+ children: [],
463
+ neighbors: []
464
+ });
465
+ node = (0, _jsonMapTransform.default)(nodeData, (0, _node.NODE)());
466
+ if (nodeInPage.mesh) {
467
+ node.geometryData = [{
468
+ href: './geometries/0'
469
+ }];
470
+ node.sharedResource = {
471
+ href: './shared'
472
+ };
473
+ if (texture) {
474
+ node.textureData = [{
475
+ href: './textures/0'
476
+ }, {
477
+ href: './textures/1'
478
+ }];
479
+ }
480
+ if (attributes && attributes.length && (_parentNode$converter = parentNode.converter.layers0) !== null && _parentNode$converter !== void 0 && (_parentNode$converter2 = _parentNode$converter.attributeStorageInfo) !== null && _parentNode$converter2 !== void 0 && _parentNode$converter2.length) {
481
+ node.attributeData = [];
482
+ for (index = 0; index < attributes.length; index++) {
483
+ folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
484
+ node.attributeData.push({
485
+ href: "./attributes/".concat(folderName, "/0")
486
+ });
487
+ }
488
+ }
489
+ }
490
+ return _context9.abrupt("return", node);
491
+ case 9:
492
+ case "end":
493
+ return _context9.stop();
494
+ }
495
+ }
496
+ }, _callee9);
497
+ }));
498
+ function createNodeIndexDocument(_x12, _x13, _x14, _x15, _x16) {
499
+ return _createNodeIndexDocument.apply(this, arguments);
500
+ }
501
+ return createNodeIndexDocument;
502
+ }()
503
+ }]);
504
+ return NodeIndexDocument;
505
+ }();
506
+ exports.NodeIndexDocument = NodeIndexDocument;
507
+ //# sourceMappingURL=node-index-document.js.map