@loaders.gl/tile-converter 4.0.0-alpha.22 → 4.0.0-alpha.24

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 (137) hide show
  1. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts.map +1 -1
  2. package/dist/constants.d.ts +0 -2
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/converter.min.js +106 -106
  5. package/dist/dist.min.js +1883 -1241
  6. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +1 -1
  7. package/dist/es5/constants.js +1 -5
  8. package/dist/es5/constants.js.map +1 -1
  9. package/dist/es5/deps-installer/deps-installer.js +1 -1
  10. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +26 -11
  11. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  12. package/dist/es5/i3s-converter/helpers/feature-attributes.js +7 -17
  13. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
  14. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +83 -44
  15. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  16. package/dist/es5/i3s-converter/helpers/geometry-converter.js +70 -17
  17. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  18. package/dist/es5/i3s-converter/helpers/node-index-document.js +3 -2
  19. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
  20. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +1 -2
  21. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  22. package/dist/es5/i3s-converter/i3s-converter.js +36 -26
  23. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  24. package/dist/es5/i3s-converter/types.js.map +1 -1
  25. package/dist/es5/i3s-server/controllers/slpk-controller.js +2 -2
  26. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
  27. package/dist/es5/pgm-loader.js +11 -3
  28. package/dist/es5/pgm-loader.js.map +1 -1
  29. package/dist/es5/slpk-extractor/slpk-extractor.js +1 -1
  30. package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
  31. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +1 -1
  32. package/dist/esm/constants.js +0 -2
  33. package/dist/esm/constants.js.map +1 -1
  34. package/dist/esm/deps-installer/deps-installer.js +1 -1
  35. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +21 -6
  36. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  37. package/dist/esm/i3s-converter/helpers/feature-attributes.js +9 -7
  38. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
  39. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +76 -34
  40. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  41. package/dist/esm/i3s-converter/helpers/geometry-converter.js +66 -13
  42. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  43. package/dist/esm/i3s-converter/helpers/node-index-document.js +2 -1
  44. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
  45. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +1 -1
  46. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  47. package/dist/esm/i3s-converter/i3s-converter.js +20 -17
  48. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  49. package/dist/esm/i3s-converter/types.js.map +1 -1
  50. package/dist/esm/i3s-server/bin/i3s-server.min.js +71 -71
  51. package/dist/esm/i3s-server/controllers/slpk-controller.js +1 -1
  52. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
  53. package/dist/esm/pgm-loader.js +7 -4
  54. package/dist/esm/pgm-loader.js.map +1 -1
  55. package/dist/esm/slpk-extractor/slpk-extractor.js +2 -1
  56. package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
  57. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  58. package/dist/i3s-converter/helpers/feature-attributes.d.ts +6 -6
  59. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -1
  60. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  61. package/dist/i3s-converter/helpers/geometry-converter.d.ts +2 -2
  62. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  63. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
  64. package/dist/i3s-converter/i3s-converter.d.ts +1 -1
  65. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  66. package/dist/i3s-converter/types.d.ts +7 -4
  67. package/dist/i3s-converter/types.d.ts.map +1 -1
  68. package/dist/pgm-loader.d.ts +9 -2
  69. package/dist/pgm-loader.d.ts.map +1 -1
  70. package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -1
  71. package/dist/slpk-extractor.min.js +38 -38
  72. package/package.json +14 -14
  73. package/src/3d-tiles-converter/helpers/load-i3s.ts +1 -0
  74. package/src/constants.ts +0 -3
  75. package/src/i3s-converter/helpers/batch-ids-extensions.ts +53 -14
  76. package/src/i3s-converter/helpers/feature-attributes.ts +20 -15
  77. package/src/i3s-converter/helpers/geometry-attributes.ts +80 -50
  78. package/src/i3s-converter/helpers/geometry-converter.ts +153 -21
  79. package/src/i3s-converter/helpers/node-index-document.ts +5 -1
  80. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +1 -1
  81. package/src/i3s-converter/i3s-converter.ts +42 -17
  82. package/src/i3s-converter/types.ts +8 -4
  83. package/src/i3s-server/controllers/slpk-controller.ts +1 -1
  84. package/src/pgm-loader.ts +15 -7
  85. package/src/slpk-extractor/slpk-extractor.ts +2 -1
  86. package/dist/3d-tiles-converter/3d-tiles-converter.js +0 -279
  87. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +0 -271
  88. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -23
  89. package/dist/3d-tiles-converter/helpers/load-i3s.js +0 -42
  90. package/dist/3d-tiles-converter/helpers/texture-atlas.js +0 -54
  91. package/dist/3d-tiles-converter/json-templates/tileset.js +0 -43
  92. package/dist/bundle.js +0 -5
  93. package/dist/constants.js +0 -6
  94. package/dist/converter-cli.js +0 -222
  95. package/dist/deps-installer/deps-installer.js +0 -89
  96. package/dist/i3s-converter/helpers/batch-ids-extensions.js +0 -158
  97. package/dist/i3s-converter/helpers/coordinate-converter.js +0 -122
  98. package/dist/i3s-converter/helpers/create-scene-server-path.js +0 -28
  99. package/dist/i3s-converter/helpers/feature-attributes.js +0 -216
  100. package/dist/i3s-converter/helpers/geometry-attributes.js +0 -203
  101. package/dist/i3s-converter/helpers/geometry-converter.js +0 -1240
  102. package/dist/i3s-converter/helpers/gltf-attributes.js +0 -129
  103. package/dist/i3s-converter/helpers/load-3d-tiles.js +0 -99
  104. package/dist/i3s-converter/helpers/node-debug.js +0 -120
  105. package/dist/i3s-converter/helpers/node-index-document.js +0 -268
  106. package/dist/i3s-converter/helpers/node-pages.js +0 -316
  107. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +0 -100
  108. package/dist/i3s-converter/helpers/tileset-traversal.js +0 -29
  109. package/dist/i3s-converter/i3s-converter.js +0 -945
  110. package/dist/i3s-converter/json-templates/geometry-definitions.js +0 -87
  111. package/dist/i3s-converter/json-templates/layers.js +0 -139
  112. package/dist/i3s-converter/json-templates/metadata.js +0 -25
  113. package/dist/i3s-converter/json-templates/node.js +0 -89
  114. package/dist/i3s-converter/json-templates/scene-server.js +0 -31
  115. package/dist/i3s-converter/json-templates/shared-resources.js +0 -129
  116. package/dist/i3s-converter/json-templates/store.js +0 -103
  117. package/dist/i3s-converter/types.js +0 -17
  118. package/dist/i3s-server/app.js +0 -29
  119. package/dist/i3s-server/bin/www.js +0 -37
  120. package/dist/i3s-server/controllers/index-controller.js +0 -31
  121. package/dist/i3s-server/controllers/slpk-controller.js +0 -33
  122. package/dist/i3s-server/routes/index.js +0 -20
  123. package/dist/i3s-server/routes/slpk-router.js +0 -34
  124. package/dist/i3s-server/utils/create-scene-server.js +0 -22
  125. package/dist/i3s-server/utils/server-utils.js +0 -66
  126. package/dist/index.js +0 -10
  127. package/dist/lib/utils/cli-utils.js +0 -82
  128. package/dist/lib/utils/compress-util.js +0 -257
  129. package/dist/lib/utils/file-utils.js +0 -139
  130. package/dist/lib/utils/geometry-utils.js +0 -18
  131. package/dist/lib/utils/lod-conversion-utils.js +0 -76
  132. package/dist/lib/utils/queue.js +0 -18
  133. package/dist/lib/utils/statistic-utills.js +0 -64
  134. package/dist/lib/utils/write-queue.js +0 -80
  135. package/dist/pgm-loader.js +0 -24
  136. package/dist/slpk-extractor/slpk-extractor.js +0 -74
  137. package/dist/slpk-extractor-cli.js +0 -102
@@ -452,7 +452,7 @@ var NodeIndexDocument = function () {
452
452
  key: "createNodeIndexDocument",
453
453
  value: function () {
454
454
  var _createNodeIndexDocument = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(parentNode, boundingVolumes, lodSelection, nodeInPage, resources) {
455
- var texture, attributes, nodeId, parentNodeData, nodeData, node, _parentNode$converter, _parentNode$converter2, index, folderName;
455
+ var texture, attributes, nodeId, parentNodeData, nodeData, node, _parentNode$converter, _parentNode$converter2, minimumLength, index, folderName;
456
456
  return _regenerator.default.wrap(function _callee9$(_context9) {
457
457
  while (1) switch (_context9.prev = _context9.next) {
458
458
  case 0:
@@ -494,7 +494,8 @@ var NodeIndexDocument = function () {
494
494
  }
495
495
  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) {
496
496
  node.attributeData = [];
497
- for (index = 0; index < attributes.length; index++) {
497
+ minimumLength = attributes.length < parentNode.converter.layers0.attributeStorageInfo.length ? attributes.length : parentNode.converter.layers0.attributeStorageInfo.length;
498
+ for (index = 0; index < minimumLength; index++) {
498
499
  folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
499
500
  node.attributeData.push({
500
501
  href: "./attributes/".concat(folderName, "/0")
@@ -1 +1 @@
1
- {"version":3,"file":"node-index-document.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_uuid","_fileUtils","_node","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodeIndexDocument","id","converter","_classCallCheck2","inPageId","_createClass2","get","_finalized","_addData","_asyncToGenerator2","_regenerator","mark","_callee","data","wrap","_callee$","_context","prev","options","instantNodeWriting","write","abrupt","stop","addData","_x","_addChildren","_callee2","childNodes","newChildren","_iterator","_step","node","nodeData","_data$children","_callee2$","_context2","load","sent","href","concat","obb","mbs","t0","finish","children","addChildren","_x2","_addNeighbors","_callee3","_iterator2","_step2","_childNodeData$neighb","_nodeData$children","childNode","childNodeData","_iterator3","_step3","neighbor","_callee3$","_context3","finalized","neighbors","Number","console","warn","save","t1","finalize","addNeighbors","_save","_callee4","_callee4$","_context4","_iterator4","_step4","child","flush","_write","_callee5","_this","path","_callee5$","_context5","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","_x3","_load","_callee6","parentNodePath","parentNodeFileName","_callee6$","_context6","openJson","_createRootNode","_callee7","boundingVolumes","rootData","rootNode","_callee7$","_context7","createRootNodeIndexDocument","createRootNode","_x4","_x5","_createNode","_callee8","parentNode","lodSelection","nodeInPage","resources","_callee8$","_context8","createNodeIndexDocument","index","createNode","_x6","_x7","_x8","_x9","_x10","_x11","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","_createNodeIndexDocument","_callee9","texture","attributes","nodeId","parentNodeData","_parentNode$converter","_parentNode$converter2","folderName","_callee9$","_context9","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","_x12","_x13","_x14","_x15","_x16","exports"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * 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\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Finalized property. It means that all child nodes are saved and their data\n * is unloaded\n */\n private _finalized: boolean = false;\n get finalized(): boolean {\n return this._finalized;\n }\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n if (this.finalized) {\n return;\n }\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n }\n // The save after adding neighbors is the last one. Finalize the the node\n this.finalize();\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /** Finalize the node */\n private finalize(): void {\n this._finalized = true;\n for (const child of this.children) {\n child.flush();\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"node-index-document.js","names":["_path","require","_jsonMapTransform","_interopRequireDefault","_uuid","_fileUtils","_node","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NodeIndexDocument","id","converter","_classCallCheck2","inPageId","_createClass2","get","_finalized","_addData","_asyncToGenerator2","_regenerator","mark","_callee","data","wrap","_callee$","_context","prev","options","instantNodeWriting","write","abrupt","stop","addData","_x","_addChildren","_callee2","childNodes","newChildren","_iterator","_step","node","nodeData","_data$children","_callee2$","_context2","load","sent","href","concat","obb","mbs","t0","finish","children","addChildren","_x2","_addNeighbors","_callee3","_iterator2","_step2","_childNodeData$neighb","_nodeData$children","childNode","childNodeData","_iterator3","_step3","neighbor","_callee3$","_context3","finalized","neighbors","Number","console","warn","save","t1","finalize","addNeighbors","_save","_callee4","_callee4$","_context4","_iterator4","_step4","child","flush","_write","_callee5","_this","path","_callee5$","_context5","join","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","writeFileForSlpk","JSON","stringify","compressList","writeFile","_x3","_load","_callee6","parentNodePath","parentNodeFileName","_callee6$","_context6","openJson","_createRootNode","_callee7","boundingVolumes","rootData","rootNode","_callee7$","_context7","createRootNodeIndexDocument","createRootNode","_x4","_x5","_createNode","_callee8","parentNode","lodSelection","nodeInPage","resources","_callee8$","_context8","createNodeIndexDocument","index","createNode","_x6","_x7","_x8","_x9","_x10","_x11","root0data","version","uuidv4","toUpperCase","level","metricType","maxError","transform","nodeTemplate","_createNodeIndexDocument","_callee9","texture","attributes","nodeId","parentNodeData","_parentNode$converter","_parentNode$converter2","minimumLength","folderName","_callee9$","_context9","mesh","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","_x12","_x13","_x14","_x15","_x16","exports"],"sources":["../../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * 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\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Finalized property. It means that all child nodes are saved and their data\n * is unloaded\n */\n private _finalized: boolean = false;\n get finalized(): boolean {\n return this._finalized;\n }\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n if (this.finalized) {\n return;\n }\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n }\n // The save after adding neighbors is the last one. Finalize the the node\n this.finalize();\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /** Finalize the node */\n private finalize(): void {\n this._finalized = true;\n for (const child of this.children) {\n child.flush();\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n const minimumLength =\n attributes.length < parentNode.converter.layers0.attributeStorageInfo.length\n ? attributes.length\n : parentNode.converter.layers0.attributeStorageInfo.length;\n for (let index = 0; index < minimumLength; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
@@ -10,7 +10,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
10
10
  var _types = require("../types");
11
11
  var _gltf = require("@loaders.gl/gltf");
12
12
  var _core = require("@loaders.gl/core");
13
- var _constants = require("../../constants");
14
13
  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; } } }; }
15
14
  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); }
16
15
  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; }
@@ -101,7 +100,7 @@ var getMeshTypesFromGltf = function getMeshTypesFromGltf(gltfJson) {
101
100
  var getMetadataClassesFromGltf = function getMetadataClassesFromGltf(gltfJson) {
102
101
  var _gltfJson$extensions, _gltfJson$extensions$, _gltfJson$extensions$2;
103
102
  var result = new Set();
104
- var classes = (_gltfJson$extensions = gltfJson.extensions) === null || _gltfJson$extensions === void 0 ? void 0 : (_gltfJson$extensions$ = _gltfJson$extensions[_constants.EXT_FEATURE_METADATA]) === null || _gltfJson$extensions$ === void 0 ? void 0 : (_gltfJson$extensions$2 = _gltfJson$extensions$.schema) === null || _gltfJson$extensions$2 === void 0 ? void 0 : _gltfJson$extensions$2.classes;
103
+ var classes = (_gltfJson$extensions = gltfJson.extensions) === null || _gltfJson$extensions === void 0 ? void 0 : (_gltfJson$extensions$ = _gltfJson$extensions[_gltf.EXT_FEATURE_METADATA]) === null || _gltfJson$extensions$ === void 0 ? void 0 : (_gltfJson$extensions$2 = _gltfJson$extensions$.schema) === null || _gltfJson$extensions$2 === void 0 ? void 0 : _gltfJson$extensions$2.classes;
105
104
  if (classes) {
106
105
  for (var _i = 0, _Object$keys = Object.keys(classes); _i < _Object$keys.length; _i++) {
107
106
  var classKey = _Object$keys[_i];
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess-3d-tiles.js","names":["_types","require","_gltf","_core","_constants","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","GLTF_PRIMITIVE_MODES","GLTFPrimitiveModeString","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","exports","analyzeTileContent","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","tileContent","defaultResult","gltfData","gltf","meshTopologyTypes","metadataClasses","wrap","_callee$","_context","prev","Set","gltfArrayBuffer","abrupt","parse","GLTFLoader","normalize","loadBuffers","loadImages","decompressMeshes","sent","json","getMeshTypesFromGltf","getMetadataClassesFromGltf","stop","_x","apply","arguments","gltfJson","result","_iterator","meshes","_step","mesh","_iterator2","primitives","_step2","primitive","mode","add","_gltfJson$extensions","_gltfJson$extensions$","_gltfJson$extensions$2","classes","extensions","EXT_FEATURE_METADATA","schema","_i","_Object$keys","keys","classKey","mergePreprocessData","object1","object2","_iterator3","_step3","type","_iterator4","_step4","metadataClass"],"sources":["../../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"sourcesContent":["import {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport {GLTFPrimitiveModeString, PreprocessData} from '../types';\nimport {GLTF, GLTFLoader, GLTF_EXT_feature_metadata_GLTF} from '@loaders.gl/gltf';\nimport {parse} from '@loaders.gl/core';\nimport {EXT_FEATURE_METADATA} from '../../constants';\n\n/**\n * glTF primitive modes\n * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode\n */\nexport const GLTF_PRIMITIVE_MODES = [\n GLTFPrimitiveModeString.POINTS, // 0\n GLTFPrimitiveModeString.LINES, // 1\n GLTFPrimitiveModeString.LINE_LOOP, // 2\n GLTFPrimitiveModeString.LINE_STRIP, // 3\n GLTFPrimitiveModeString.TRIANGLES, // 4\n GLTFPrimitiveModeString.TRIANGLE_STRIP, // 5\n GLTFPrimitiveModeString.TRIANGLE_FAN // 6\n];\n\n/**\n * Analyze tile content. This function is used during preprocess stage of\n * conversion\n * @param tileContent - 3DTiles tile content ArrayBuffer\n * @returns\n */\nexport const analyzeTileContent = async (\n tileContent: Tiles3DTileContent | null\n): Promise<PreprocessData> => {\n const defaultResult = {\n meshTopologyTypes: new Set<GLTFPrimitiveModeString>(),\n metadataClasses: new Set<string>()\n };\n if (!tileContent?.gltfArrayBuffer) {\n return defaultResult;\n }\n\n const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {\n gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}\n });\n const gltf = gltfData.json;\n\n if (!gltf) {\n return defaultResult;\n }\n const meshTopologyTypes = getMeshTypesFromGltf(gltf);\n const metadataClasses = getMetadataClassesFromGltf(gltf);\n return {\n meshTopologyTypes,\n metadataClasses\n };\n};\n\n/**\n * Get mesh topology types that the glb content has\n * @param gltfJson - JSON part of GLB content\n * @returns array of mesh types found\n */\nconst getMeshTypesFromGltf = (gltfJson: GLTF): Set<GLTFPrimitiveModeString> => {\n const result: Set<GLTFPrimitiveModeString> = new Set();\n for (const mesh of gltfJson.meshes || []) {\n for (const primitive of mesh.primitives) {\n let {mode} = primitive;\n if (typeof mode !== 'number') {\n mode = 4; // Default is 4 - TRIANGLES\n }\n result.add(GLTF_PRIMITIVE_MODES[mode]);\n }\n }\n return result;\n};\n\n/**\n * Get feature metadata classes from glTF\n * @param gltfJson - JSON part of GLB content\n * @returns array of classes\n */\nconst getMetadataClassesFromGltf = (gltfJson: GLTF): Set<string> => {\n const result: Set<string> = new Set();\n\n const classes = (gltfJson.extensions?.[EXT_FEATURE_METADATA] as GLTF_EXT_feature_metadata_GLTF)\n ?.schema?.classes;\n\n if (classes) {\n for (const classKey of Object.keys(classes)) {\n result.add(classKey);\n }\n }\n\n return result;\n};\n\n/**\n * Merge object2 into object1\n * @param object1\n * @param object2\n * @returns nothing\n */\nexport const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {\n // Merge topology mesh types info\n for (const type of object2.meshTopologyTypes) {\n object1.meshTopologyTypes.add(type);\n }\n\n // Merge feature metadata classes\n for (const metadataClass of object2.metadataClasses) {\n object1.metadataClasses.add(metadataClass);\n }\n};\n"],"mappings":";;;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAAqD,SAAAI,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAO,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAT,CAAA,CAAAQ,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAS,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAT,EAAA,GAAAA,EAAA,CAAAoB,IAAA,CAAAtB,CAAA,MAAAY,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAArB,EAAA,CAAAsB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAjB,EAAA,CAAAwB,MAAA,UAAAxB,EAAA,CAAAwB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAP,CAAA,EAAA2B,MAAA,SAAA3B,CAAA,qBAAAA,CAAA,sBAAA4B,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAAtB,CAAA,EAAAgC,KAAA,aAAApB,CAAA,iBAAAZ,CAAA,CAAAiC,WAAA,EAAArB,CAAA,GAAAZ,CAAA,CAAAiC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAP,KAAA,CAAA8B,IAAA,CAAAnC,CAAA,OAAAY,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAlC,KAAA,CAAAiC,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAM9C,IAAMC,oBAAoB,GAAG,CAClCC,8BAAuB,CAACC,MAAM,EAC9BD,8BAAuB,CAACE,KAAK,EAC7BF,8BAAuB,CAACG,SAAS,EACjCH,8BAAuB,CAACI,UAAU,EAClCJ,8BAAuB,CAACK,SAAS,EACjCL,8BAAuB,CAACM,cAAc,EACtCN,8BAAuB,CAACO,YAAY,CACrC;AAACC,OAAA,CAAAT,oBAAA,GAAAA,oBAAA;AAQK,IAAMU,kBAAkB;EAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAChCC,WAAsC;IAAA,IAAAC,aAAA,EAAAC,QAAA,EAAAC,IAAA,EAAAC,iBAAA,EAAAC,eAAA;IAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAzC,IAAA;QAAA;UAEhCkC,aAAa,GAAG;YACpBG,iBAAiB,EAAE,IAAIM,GAAG,CAA0B,CAAC;YACrDL,eAAe,EAAE,IAAIK,GAAG,CAAS;UACnC,CAAC;UAAA,IACIV,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEW,eAAe;YAAAH,QAAA,CAAAzC,IAAA;YAAA;UAAA;UAAA,OAAAyC,QAAA,CAAAI,MAAA,WACxBX,aAAa;QAAA;UAAAO,QAAA,CAAAzC,IAAA;UAAA,OAGC,IAAA8C,WAAK,EAACb,WAAW,CAACW,eAAe,EAAEG,gBAAU,EAAE;YACpEX,IAAI,EAAE;cAACY,SAAS,EAAE,KAAK;cAAEC,WAAW,EAAE,KAAK;cAAEC,UAAU,EAAE,KAAK;cAAEC,gBAAgB,EAAE;YAAK;UACzF,CAAC,CAAC;QAAA;UAFIhB,QAAQ,GAAAM,QAAA,CAAAW,IAAA;UAGRhB,IAAI,GAAGD,QAAQ,CAACkB,IAAI;UAAA,IAErBjB,IAAI;YAAAK,QAAA,CAAAzC,IAAA;YAAA;UAAA;UAAA,OAAAyC,QAAA,CAAAI,MAAA,WACAX,aAAa;QAAA;UAEhBG,iBAAiB,GAAGiB,oBAAoB,CAAClB,IAAI,CAAC;UAC9CE,eAAe,GAAGiB,0BAA0B,CAACnB,IAAI,CAAC;UAAA,OAAAK,QAAA,CAAAI,MAAA,WACjD;YACLR,iBAAiB,EAAjBA,iBAAiB;YACjBC,eAAe,EAAfA;UACF,CAAC;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAAe,IAAA;MAAA;IAAA,GAAAxB,OAAA;EAAA,CACF;EAAA,gBAzBYN,kBAAkBA,CAAA+B,EAAA;IAAA,OAAA9B,IAAA,CAAA+B,KAAA,OAAAC,SAAA;EAAA;AAAA,GAyB9B;AAAClC,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAOF,IAAM4B,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIM,QAAc,EAAmC;EAC7E,IAAMC,MAAoC,GAAG,IAAIlB,GAAG,CAAC,CAAC;EAAC,IAAAmB,SAAA,GAAAvF,0BAAA,CACpCqF,QAAQ,CAACG,MAAM,IAAI,EAAE;IAAAC,KAAA;EAAA;IAAxC,KAAAF,SAAA,CAAA3E,CAAA,MAAA6E,KAAA,GAAAF,SAAA,CAAA1E,CAAA,IAAAC,IAAA,GAA0C;MAAA,IAA/B4E,IAAI,GAAAD,KAAA,CAAA1E,KAAA;MAAA,IAAA4E,UAAA,GAAA3F,0BAAA,CACW0F,IAAI,CAACE,UAAU;QAAAC,MAAA;MAAA;QAAvC,KAAAF,UAAA,CAAA/E,CAAA,MAAAiF,MAAA,GAAAF,UAAA,CAAA9E,CAAA,IAAAC,IAAA,GAAyC;UAAA,IAA9BgF,SAAS,GAAAD,MAAA,CAAA9E,KAAA;UAClB,IAAKgF,IAAI,GAAID,SAAS,CAAjBC,IAAI;UACT,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YAC5BA,IAAI,GAAG,CAAC;UACV;UACAT,MAAM,CAACU,GAAG,CAACvD,oBAAoB,CAACsD,IAAI,CAAC,CAAC;QACxC;MAAC,SAAAzE,GAAA;QAAAqE,UAAA,CAAA3E,CAAA,CAAAM,GAAA;MAAA;QAAAqE,UAAA,CAAAzE,CAAA;MAAA;IACH;EAAC,SAAAI,GAAA;IAAAiE,SAAA,CAAAvE,CAAA,CAAAM,GAAA;EAAA;IAAAiE,SAAA,CAAArE,CAAA;EAAA;EACD,OAAOoE,MAAM;AACf,CAAC;AAOD,IAAMN,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAIK,QAAc,EAAkB;EAAA,IAAAY,oBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAClE,IAAMb,MAAmB,GAAG,IAAIlB,GAAG,CAAC,CAAC;EAErC,IAAMgC,OAAO,IAAAH,oBAAA,GAAIZ,QAAQ,CAACgB,UAAU,cAAAJ,oBAAA,wBAAAC,qBAAA,GAAnBD,oBAAA,CAAsBK,+BAAoB,CAAC,cAAAJ,qBAAA,wBAAAC,sBAAA,GAA5CD,qBAAA,CACZK,MAAM,cAAAJ,sBAAA,uBADMA,sBAAA,CACJC,OAAO;EAEnB,IAAIA,OAAO,EAAE;IACX,SAAAI,EAAA,MAAAC,YAAA,GAAuB3E,MAAM,CAAC4E,IAAI,CAACN,OAAO,CAAC,EAAAI,EAAA,GAAAC,YAAA,CAAAhG,MAAA,EAAA+F,EAAA,IAAE;MAAxC,IAAMG,QAAQ,GAAAF,YAAA,CAAAD,EAAA;MACjBlB,MAAM,CAACU,GAAG,CAACW,QAAQ,CAAC;IACtB;EACF;EAEA,OAAOrB,MAAM;AACf,CAAC;AAQM,IAAMsB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,OAAuB,EAAEC,OAAuB,EAAW;EAAA,IAAAC,UAAA,GAAA/G,0BAAA,CAE1E8G,OAAO,CAAChD,iBAAiB;IAAAkD,MAAA;EAAA;IAA5C,KAAAD,UAAA,CAAAnG,CAAA,MAAAoG,MAAA,GAAAD,UAAA,CAAAlG,CAAA,IAAAC,IAAA,GAA8C;MAAA,IAAnCmG,IAAI,GAAAD,MAAA,CAAAjG,KAAA;MACb8F,OAAO,CAAC/C,iBAAiB,CAACkC,GAAG,CAACiB,IAAI,CAAC;IACrC;EAAC,SAAA3F,GAAA;IAAAyF,UAAA,CAAA/F,CAAA,CAAAM,GAAA;EAAA;IAAAyF,UAAA,CAAA7F,CAAA;EAAA;EAAA,IAAAgG,UAAA,GAAAlH,0BAAA,CAG2B8G,OAAO,CAAC/C,eAAe;IAAAoD,MAAA;EAAA;IAAnD,KAAAD,UAAA,CAAAtG,CAAA,MAAAuG,MAAA,GAAAD,UAAA,CAAArG,CAAA,IAAAC,IAAA,GAAqD;MAAA,IAA1CsG,aAAa,GAAAD,MAAA,CAAApG,KAAA;MACtB8F,OAAO,CAAC9C,eAAe,CAACiC,GAAG,CAACoB,aAAa,CAAC;IAC5C;EAAC,SAAA9F,GAAA;IAAA4F,UAAA,CAAAlG,CAAA,CAAAM,GAAA;EAAA;IAAA4F,UAAA,CAAAhG,CAAA;EAAA;AACH,CAAC;AAACgC,OAAA,CAAA0D,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"preprocess-3d-tiles.js","names":["_types","require","_gltf","_core","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","GLTF_PRIMITIVE_MODES","GLTFPrimitiveModeString","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","exports","analyzeTileContent","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","tileContent","defaultResult","gltfData","gltf","meshTopologyTypes","metadataClasses","wrap","_callee$","_context","prev","Set","gltfArrayBuffer","abrupt","parse","GLTFLoader","normalize","loadBuffers","loadImages","decompressMeshes","sent","json","getMeshTypesFromGltf","getMetadataClassesFromGltf","stop","_x","apply","arguments","gltfJson","result","_iterator","meshes","_step","mesh","_iterator2","primitives","_step2","primitive","mode","add","_gltfJson$extensions","_gltfJson$extensions$","_gltfJson$extensions$2","classes","extensions","EXT_FEATURE_METADATA","schema","_i","_Object$keys","keys","classKey","mergePreprocessData","object1","object2","_iterator3","_step3","type","_iterator4","_step4","metadataClass"],"sources":["../../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"sourcesContent":["import {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport {GLTFPrimitiveModeString, PreprocessData} from '../types';\nimport {GLTF, GLTFLoader, GLTF_EXT_feature_metadata_GLTF} from '@loaders.gl/gltf';\nimport {parse} from '@loaders.gl/core';\nimport {EXT_FEATURE_METADATA} from '@loaders.gl/gltf';\n\n/**\n * glTF primitive modes\n * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode\n */\nexport const GLTF_PRIMITIVE_MODES = [\n GLTFPrimitiveModeString.POINTS, // 0\n GLTFPrimitiveModeString.LINES, // 1\n GLTFPrimitiveModeString.LINE_LOOP, // 2\n GLTFPrimitiveModeString.LINE_STRIP, // 3\n GLTFPrimitiveModeString.TRIANGLES, // 4\n GLTFPrimitiveModeString.TRIANGLE_STRIP, // 5\n GLTFPrimitiveModeString.TRIANGLE_FAN // 6\n];\n\n/**\n * Analyze tile content. This function is used during preprocess stage of\n * conversion\n * @param tileContent - 3DTiles tile content ArrayBuffer\n * @returns\n */\nexport const analyzeTileContent = async (\n tileContent: Tiles3DTileContent | null\n): Promise<PreprocessData> => {\n const defaultResult = {\n meshTopologyTypes: new Set<GLTFPrimitiveModeString>(),\n metadataClasses: new Set<string>()\n };\n if (!tileContent?.gltfArrayBuffer) {\n return defaultResult;\n }\n\n const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {\n gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}\n });\n const gltf = gltfData.json;\n\n if (!gltf) {\n return defaultResult;\n }\n const meshTopologyTypes = getMeshTypesFromGltf(gltf);\n const metadataClasses = getMetadataClassesFromGltf(gltf);\n return {\n meshTopologyTypes,\n metadataClasses\n };\n};\n\n/**\n * Get mesh topology types that the glb content has\n * @param gltfJson - JSON part of GLB content\n * @returns array of mesh types found\n */\nconst getMeshTypesFromGltf = (gltfJson: GLTF): Set<GLTFPrimitiveModeString> => {\n const result: Set<GLTFPrimitiveModeString> = new Set();\n for (const mesh of gltfJson.meshes || []) {\n for (const primitive of mesh.primitives) {\n let {mode} = primitive;\n if (typeof mode !== 'number') {\n mode = 4; // Default is 4 - TRIANGLES\n }\n result.add(GLTF_PRIMITIVE_MODES[mode]);\n }\n }\n return result;\n};\n\n/**\n * Get feature metadata classes from glTF\n * @param gltfJson - JSON part of GLB content\n * @returns array of classes\n */\nconst getMetadataClassesFromGltf = (gltfJson: GLTF): Set<string> => {\n const result: Set<string> = new Set();\n\n const classes = (gltfJson.extensions?.[EXT_FEATURE_METADATA] as GLTF_EXT_feature_metadata_GLTF)\n ?.schema?.classes;\n\n if (classes) {\n for (const classKey of Object.keys(classes)) {\n result.add(classKey);\n }\n }\n\n return result;\n};\n\n/**\n * Merge object2 into object1\n * @param object1\n * @param object2\n * @returns nothing\n */\nexport const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {\n // Merge topology mesh types info\n for (const type of object2.meshTopologyTypes) {\n object1.meshTopologyTypes.add(type);\n }\n\n // Merge feature metadata classes\n for (const metadataClass of object2.metadataClasses) {\n object1.metadataClasses.add(metadataClass);\n }\n};\n"],"mappings":"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"}
@@ -739,7 +739,6 @@ var I3SConverter = function () {
739
739
  key: "_createNode",
740
740
  value: function () {
741
741
  var _createNode2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee9(parentNode, sourceTile, transformationMatrix) {
742
- var _this$layers, _this$layers$attribut;
743
742
  var tileContent, sourceBoundingVolume, boundingVolumes, propertyTable, resourcesData, nodes, nodeIds, nodesInPage, emptyResources, _iterator5, _step5, resources, lodSelection, maxScreenThresholdSQ, nodeInPage, nodeData, node, _console;
744
743
  return _regenerator.default.wrap(function _callee9$(_context9) {
745
744
  while (1) switch (_context9.prev = _context9.next) {
@@ -764,7 +763,7 @@ var I3SConverter = function () {
764
763
  sourceBoundingVolume = (0, _tiles.createBoundingVolume)(sourceTile.boundingVolume, transformationMatrix, null);
765
764
  boundingVolumes = (0, _coordinateConverter.createBoundingVolumes)(sourceBoundingVolume, this.geoidHeightModel);
766
765
  propertyTable = (0, _geometryConverter.getPropertyTable)(tileContent, this.options.metadataClass);
767
- if (propertyTable && !((_this$layers = this.layers0) !== null && _this$layers !== void 0 && (_this$layers$attribut = _this$layers.attributeStorageInfo) !== null && _this$layers$attribut !== void 0 && _this$layers$attribut.length)) {
766
+ if (propertyTable) {
768
767
  this._convertPropertyTableToNodeAttributes(propertyTable);
769
768
  }
770
769
  _context9.next = 19;
@@ -865,7 +864,7 @@ var I3SConverter = function () {
865
864
  value: function () {
866
865
  var _convertResources2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee11(sourceTile, transformationMatrix, boundingVolume, tileContent, parentId, propertyTable) {
867
866
  var _this3 = this,
868
- _this$layers2;
867
+ _this$layers;
869
868
  var draftObb, resourcesData;
870
869
  return _regenerator.default.wrap(function _callee11$(_context11) {
871
870
  while (1) switch (_context11.prev = _context11.next) {
@@ -898,7 +897,7 @@ var I3SConverter = function () {
898
897
  return _context10.stop();
899
898
  }
900
899
  }, _callee10);
901
- })), propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.loadOptions.modules, this.options.metadataClass);
900
+ })), propertyTable, this.featuresHashArray, (_this$layers = this.layers0) === null || _this$layers === void 0 ? void 0 : _this$layers.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.loadOptions.modules, this.options.metadataClass);
902
901
  case 5:
903
902
  resourcesData = _context11.sent;
904
903
  return _context11.abrupt("return", resourcesData);
@@ -1277,12 +1276,13 @@ var I3SConverter = function () {
1277
1276
  key: "_writeAttributes",
1278
1277
  value: function () {
1279
1278
  var _writeAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee18() {
1280
- var _this$layers3,
1281
- _this$layers3$attribu,
1279
+ var _this$layers2,
1280
+ _this$layers2$attribu,
1282
1281
  _this4 = this;
1283
1282
  var attributes,
1284
1283
  childPath,
1285
1284
  slpkChildPath,
1285
+ minimumLength,
1286
1286
  _loop,
1287
1287
  index,
1288
1288
  _args19 = arguments;
@@ -1292,10 +1292,11 @@ var I3SConverter = function () {
1292
1292
  attributes = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : [];
1293
1293
  childPath = _args19.length > 1 ? _args19[1] : undefined;
1294
1294
  slpkChildPath = _args19.length > 2 ? _args19[2] : undefined;
1295
- if (!(attributes !== null && attributes !== void 0 && attributes.length && (_this$layers3 = this.layers0) !== null && _this$layers3 !== void 0 && (_this$layers3$attribu = _this$layers3.attributeStorageInfo) !== null && _this$layers3$attribu !== void 0 && _this$layers3$attribu.length)) {
1296
- _context19.next = 11;
1295
+ if (!(attributes !== null && attributes !== void 0 && attributes.length && (_this$layers2 = this.layers0) !== null && _this$layers2 !== void 0 && (_this$layers2$attribu = _this$layers2.attributeStorageInfo) !== null && _this$layers2$attribu !== void 0 && _this$layers2$attribu.length)) {
1296
+ _context19.next = 12;
1297
1297
  break;
1298
1298
  }
1299
+ minimumLength = attributes.length < this.layers0.attributeStorageInfo.length ? attributes.length : this.layers0.attributeStorageInfo.length;
1299
1300
  _loop = _regenerator.default.mark(function _loop() {
1300
1301
  var folderName, fileBuffer, slpkAttributesPath, attributesPath;
1301
1302
  return _regenerator.default.wrap(function _loop$(_context18) {
@@ -1333,17 +1334,17 @@ var I3SConverter = function () {
1333
1334
  }, _loop);
1334
1335
  });
1335
1336
  index = 0;
1336
- case 6:
1337
- if (!(index < attributes.length)) {
1338
- _context19.next = 11;
1337
+ case 7:
1338
+ if (!(index < minimumLength)) {
1339
+ _context19.next = 12;
1339
1340
  break;
1340
1341
  }
1341
- return _context19.delegateYield(_loop(), "t0", 8);
1342
- case 8:
1342
+ return _context19.delegateYield(_loop(), "t0", 9);
1343
+ case 9:
1343
1344
  index++;
1344
- _context19.next = 6;
1345
+ _context19.next = 7;
1345
1346
  break;
1346
- case 11:
1347
+ case 12:
1347
1348
  case "end":
1348
1349
  return _context19.stop();
1349
1350
  }
@@ -1397,22 +1398,31 @@ var I3SConverter = function () {
1397
1398
  }, {
1398
1399
  key: "_convertPropertyTableToNodeAttributes",
1399
1400
  value: function _convertPropertyTableToNodeAttributes(propertyTable) {
1401
+ var _this5 = this;
1400
1402
  var attributeIndex = 0;
1401
1403
  var propertyTableWithObjectId = _objectSpread({
1402
1404
  OBJECTID: [0]
1403
1405
  }, propertyTable);
1404
- for (var _key in propertyTableWithObjectId) {
1405
- var firstAttribute = propertyTableWithObjectId[_key][0];
1406
- var attributeType = (0, _featureAttributes.getAttributeType)(_key, firstAttribute);
1407
- var storageAttribute = (0, _featureAttributes.createdStorageAttribute)(attributeIndex, _key, attributeType);
1408
- var fieldAttributeType = (0, _featureAttributes.getFieldAttributeType)(attributeType);
1409
- var fieldAttribute = (0, _featureAttributes.createFieldAttribute)(_key, fieldAttributeType);
1410
- var popupInfo = (0, _featureAttributes.createPopupInfo)(propertyTableWithObjectId);
1411
- this.layers0.attributeStorageInfo.push(storageAttribute);
1412
- this.layers0.fields.push(fieldAttribute);
1413
- this.layers0.popupInfo = popupInfo;
1414
- this.layers0.layerType = _3D_OBJECT_LAYER_TYPE;
1406
+ var _loop2 = function _loop2(_key) {
1407
+ var found = _this5.layers0.attributeStorageInfo.find(function (element) {
1408
+ return element.name === _key;
1409
+ });
1410
+ if (!found) {
1411
+ var firstAttribute = propertyTableWithObjectId[_key][0];
1412
+ var attributeType = (0, _featureAttributes.getAttributeType)(_key, firstAttribute);
1413
+ var storageAttribute = (0, _featureAttributes.createdStorageAttribute)(attributeIndex, _key, attributeType);
1414
+ var fieldAttributeType = (0, _featureAttributes.getFieldAttributeType)(attributeType);
1415
+ var fieldAttribute = (0, _featureAttributes.createFieldAttribute)(_key, fieldAttributeType);
1416
+ var popupInfo = (0, _featureAttributes.createPopupInfo)(propertyTableWithObjectId);
1417
+ _this5.layers0.attributeStorageInfo.push(storageAttribute);
1418
+ _this5.layers0.fields.push(fieldAttribute);
1419
+ _this5.layers0.popupInfo = popupInfo;
1420
+ _this5.layers0.layerType = _3D_OBJECT_LAYER_TYPE;
1421
+ }
1415
1422
  attributeIndex += 1;
1423
+ };
1424
+ for (var _key in propertyTableWithObjectId) {
1425
+ _loop2(_key);
1416
1426
  }
1417
1427
  }
1418
1428
  }, {