@loaders.gl/3d-tiles 3.1.0-beta.1 → 3.1.0

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 (120) hide show
  1. package/dist/bundle.js +2418 -232
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/cesium-ion-loader.js +78 -23
  5. package/dist/es5/cesium-ion-loader.js.map +1 -1
  6. package/dist/es5/index.js +8 -8
  7. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +42 -30
  8. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  9. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +59 -57
  10. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  11. package/dist/es5/lib/classes/tile-3d-batch-table.js +238 -201
  12. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  13. package/dist/es5/lib/classes/tile-3d-feature-table.js +78 -62
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  15. package/dist/es5/lib/constants.js +6 -5
  16. package/dist/es5/lib/constants.js.map +1 -1
  17. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +22 -15
  18. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  19. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +13 -6
  20. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  21. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +23 -14
  22. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  23. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +22 -15
  24. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  25. package/dist/es5/lib/encoders/encode-3d-tile.js +3 -3
  26. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  27. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -6
  28. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  29. package/dist/es5/lib/ion/ion.js +197 -69
  30. package/dist/es5/lib/ion/ion.js.map +1 -1
  31. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +18 -17
  32. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  33. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +3 -3
  34. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +3 -3
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  37. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +270 -0
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  39. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +66 -26
  40. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  41. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +4 -3
  42. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +141 -53
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +17 -19
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  47. package/dist/es5/lib/parsers/helpers/parse-utils.js +8 -7
  48. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  49. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +36 -10
  50. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  51. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +48 -12
  52. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +45 -0
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  55. package/dist/es5/lib/parsers/parse-3d-tile-header.js +161 -14
  56. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  57. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +63 -38
  58. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  59. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +198 -117
  60. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  61. package/dist/es5/lib/parsers/parse-3d-tile.js +74 -15
  62. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  63. package/dist/es5/lib/utils/version.js +1 -1
  64. package/dist/es5/lib/utils/version.js.map +1 -1
  65. package/dist/es5/tile-3d-subtree-loader.js +1 -1
  66. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  67. package/dist/es5/tile-3d-writer.js +5 -5
  68. package/dist/es5/tile-3d-writer.js.map +1 -1
  69. package/dist/es5/tiles-3d-loader.js +142 -37
  70. package/dist/es5/tiles-3d-loader.js.map +1 -1
  71. package/dist/esm/lib/constants.js +2 -1
  72. package/dist/esm/lib/constants.js.map +1 -1
  73. package/dist/esm/lib/ion/ion.js.map +1 -1
  74. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +173 -0
  75. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  76. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  77. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +10 -0
  78. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  79. package/dist/esm/lib/parsers/parse-3d-tile-header.js +67 -0
  80. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  81. package/dist/esm/lib/parsers/parse-3d-tile.js +4 -0
  82. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  83. package/dist/esm/lib/utils/version.js +1 -1
  84. package/dist/esm/lib/utils/version.js.map +1 -1
  85. package/dist/esm/tiles-3d-loader.js +9 -2
  86. package/dist/esm/tiles-3d-loader.js.map +1 -1
  87. package/dist/lib/constants.d.ts +1 -0
  88. package/dist/lib/constants.d.ts.map +1 -1
  89. package/dist/lib/constants.js +2 -1
  90. package/dist/lib/ion/ion.d.ts +3 -3
  91. package/dist/lib/ion/ion.d.ts.map +1 -1
  92. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +39 -0
  93. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
  94. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +189 -0
  95. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -2
  96. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  97. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -0
  98. package/dist/lib/parsers/parse-3d-tile-batched-model.js +1 -1
  99. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -0
  100. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
  101. package/dist/lib/parsers/parse-3d-tile-gltf.js +18 -0
  102. package/dist/lib/parsers/parse-3d-tile-header.d.ts +16 -0
  103. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  104. package/dist/lib/parsers/parse-3d-tile-header.js +67 -1
  105. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
  106. package/dist/lib/parsers/parse-3d-tile.js +3 -0
  107. package/dist/tiles-3d-loader.d.ts.map +1 -1
  108. package/dist/tiles-3d-loader.js +8 -1
  109. package/dist/types.d.ts +6 -2
  110. package/dist/types.d.ts.map +1 -1
  111. package/package.json +8 -8
  112. package/src/lib/constants.ts +2 -1
  113. package/src/lib/ion/{ion.js → ion.ts} +0 -0
  114. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +255 -0
  115. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +4 -3
  116. package/src/lib/parsers/parse-3d-tile-gltf.js +16 -0
  117. package/src/lib/parsers/parse-3d-tile-header.ts +82 -1
  118. package/src/lib/parsers/parse-3d-tile.ts +4 -0
  119. package/src/tiles-3d-loader.ts +17 -2
  120. package/src/types.ts +7 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table-hierarchy.ts"],"names":["defined","x","undefined","initializeHierarchy","batchTable","jsonHeader","binaryBody","hierarchy","getExtension","legacyHierarchy","HIERARCHY","console","warn","extensions","initializeHierarchyValues","hierarchyJson","i","classId","binaryAccessor","instancesLength","classes","classIds","parentCounts","parentIds","parentIdsLength","byteOffset","componentType","defaultValue","GL","UNSIGNED_SHORT","type","AttributeType","SCALAR","getBinaryAccessor","createArrayBufferView","buffer","parentIndexes","Uint16Array","classesLength","length","classInstancesLength","properties","instances","binaryProperties","getBinaryProperties","combine","classCounts","Array","fill","classIndexes","validateHierarchy","traverseHierarchy","instanceIndex","endConditionCallback","traverseHierarchyMultipleParents","traverseHierarchySingleParent","visited","scratchVisited","Math","max","visitedMarker","marker","stack","scratchStack","push","pop","result","parentCount","parentIndex","parentId","hasParent","Error","scratchValidateStack","validateInstance","assert","indexOf"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Finish hierarchy suypport: this file is only half ported\n/* eslint-disable */\n// @ts-nocheck\nconst defined = (x) => x !== undefined;\n\nexport function initializeHierarchy(batchTable, jsonHeader, binaryBody) {\n if (!jsonHeader) {\n return null;\n }\n\n let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');\n\n const legacyHierarchy = jsonHeader.HIERARCHY;\n if (legacyHierarchy) {\n // eslint-disable-next-line\n console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');\n jsonHeader.extensions = jsonHeader.extensions || {};\n jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;\n hierarchy = legacyHierarchy;\n }\n\n if (!hierarchy) {\n return null;\n }\n\n return initializeHierarchyValues(hierarchy, binaryBody);\n}\n\n// eslint-disable-next-line max-statements\nfunction initializeHierarchyValues(hierarchyJson, binaryBody) {\n let i;\n let classId;\n let binaryAccessor;\n\n const instancesLength = hierarchyJson.instancesLength;\n const classes = hierarchyJson.classes;\n let classIds = hierarchyJson.classIds;\n let parentCounts = hierarchyJson.parentCounts;\n let parentIds = hierarchyJson.parentIds;\n let parentIdsLength = instancesLength;\n\n if (defined(classIds.byteOffset)) {\n classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);\n classIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(classIds);\n classIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + classIds.byteOffset,\n instancesLength\n );\n }\n\n let parentIndexes;\n if (defined(parentCounts)) {\n if (defined(parentCounts.byteOffset)) {\n parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);\n parentCounts.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentCounts);\n parentCounts = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentCounts.byteOffset,\n instancesLength\n );\n }\n parentIndexes = new Uint16Array(instancesLength);\n parentIdsLength = 0;\n for (i = 0; i < instancesLength; ++i) {\n parentIndexes[i] = parentIdsLength;\n parentIdsLength += parentCounts[i];\n }\n }\n\n if (defined(parentIds) && defined(parentIds.byteOffset)) {\n parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);\n parentIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentIds);\n parentIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentIds.byteOffset,\n parentIdsLength\n );\n }\n\n const classesLength = classes.length;\n for (i = 0; i < classesLength; ++i) {\n const classInstancesLength = classes[i].length;\n const properties = classes[i].instances;\n const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);\n classes[i].instances = combine(binaryProperties, properties);\n }\n\n const classCounts = new Array(classesLength).fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (i = 0; i < instancesLength; ++i) {\n classId = classIds[i];\n classIndexes[i] = classCounts[classId];\n ++classCounts[classId];\n }\n\n const hierarchy = {\n classes,\n classIds,\n classIndexes,\n parentCounts,\n parentIndexes,\n parentIds\n };\n\n validateHierarchy(hierarchy);\n\n return hierarchy;\n}\n\n// HELPER CODE\n\n// Traverse over the hierarchy and process each instance with the endConditionCallback.\n// When the endConditionCallback returns a value, the traversal stops and that value is returned.\nexport function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {\n if (!hierarchy) {\n return;\n }\n\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n if (parentIds) {\n return endConditionCallback(hierarchy, instanceIndex);\n }\n if (parentCounts > 0) {\n return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);\n }\n return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);\n}\n\n// eslint-disable-next-line max-statements\nfunction traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {\n const classIds = hierarchy.classIds;\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const instancesLength = classIds.length;\n\n // Ignore instances that have already been visited. This occurs in diamond inheritance situations.\n // Use a marker value to indicate that an instance has been visited, which increments with each run.\n // This is more efficient than clearing the visited array every time.\n const visited = scratchVisited;\n visited.length = Math.max(visited.length, instancesLength);\n const visitedMarker = ++marker;\n\n const stack = scratchStack;\n stack.length = 0;\n stack.push(instanceIndex);\n\n while (stack.length > 0) {\n instanceIndex = stack.pop();\n if (visited[instanceIndex] === visitedMarker) {\n // This instance has already been visited, stop traversal\n continue;\n }\n visited[instanceIndex] = visitedMarker;\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentCount = parentCounts[instanceIndex];\n const parentIndex = parentIndexes[instanceIndex];\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself)\n // else add the parent to the stack to continue the traversal.\n if (parentId !== instanceIndex) {\n stack.push(parentId);\n }\n }\n }\n\n return null;\n}\n\nfunction traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {\n let hasParent = true;\n while (hasParent) {\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentId = hierarchy.parentIds[instanceIndex];\n hasParent = parentId !== instanceIndex;\n instanceIndex = parentId;\n }\n throw new Error('traverseHierarchySingleParent');\n}\n\n// DEBUG CODE\n\nfunction validateHierarchy(hierarchy) {\n const scratchValidateStack = [];\n\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n for (let i = 0; i < instancesLength; ++i) {\n validateInstance(hierarchy, i, stack);\n }\n}\n\nfunction validateInstance(hierarchy, instanceIndex, stack) {\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n if (!defined(parentIds)) {\n // No need to validate if there are no parents\n return;\n }\n\n assert(\n instanceIndex < instancesLength,\n `Parent index ${instanceIndex} exceeds the total number of instances: ${instancesLength}`\n );\n assert(\n stack.indexOf(instanceIndex) === -1,\n 'Circular dependency detected in the batch table hierarchy.'\n );\n\n stack.push(instanceIndex);\n const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;\n const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself), else continue the traversal.\n if (parentId !== instanceIndex) {\n validateInstance(hierarchy, parentId, stack);\n }\n }\n stack.pop(instanceIndex);\n}\n"],"file":"tile-3d-batch-table-hierarchy.js"}
1
+ {"version":3,"sources":["../../../../src/lib/classes/tile-3d-batch-table-hierarchy.ts"],"names":["defined","x","undefined","initializeHierarchy","batchTable","jsonHeader","binaryBody","hierarchy","getExtension","legacyHierarchy","HIERARCHY","console","warn","extensions","initializeHierarchyValues","hierarchyJson","i","classId","binaryAccessor","instancesLength","classes","classIds","parentCounts","parentIds","parentIdsLength","byteOffset","componentType","defaultValue","GL","UNSIGNED_SHORT","type","AttributeType","SCALAR","getBinaryAccessor","createArrayBufferView","buffer","parentIndexes","Uint16Array","classesLength","length","classInstancesLength","properties","instances","binaryProperties","getBinaryProperties","combine","classCounts","Array","fill","classIndexes","validateHierarchy","traverseHierarchy","instanceIndex","endConditionCallback","traverseHierarchyMultipleParents","traverseHierarchySingleParent","visited","scratchVisited","Math","max","visitedMarker","marker","stack","scratchStack","push","pop","result","parentCount","parentIndex","parentId","hasParent","Error","scratchValidateStack","validateInstance","assert","indexOf"],"mappings":"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","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\n// TODO - Finish hierarchy suypport: this file is only half ported\n/* eslint-disable */\n// @ts-nocheck\nconst defined = (x) => x !== undefined;\n\nexport function initializeHierarchy(batchTable, jsonHeader, binaryBody) {\n if (!jsonHeader) {\n return null;\n }\n\n let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');\n\n const legacyHierarchy = jsonHeader.HIERARCHY;\n if (legacyHierarchy) {\n // eslint-disable-next-line\n console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');\n jsonHeader.extensions = jsonHeader.extensions || {};\n jsonHeader.extensions['3DTILES_batch_table_hierarchy'] = legacyHierarchy;\n hierarchy = legacyHierarchy;\n }\n\n if (!hierarchy) {\n return null;\n }\n\n return initializeHierarchyValues(hierarchy, binaryBody);\n}\n\n// eslint-disable-next-line max-statements\nfunction initializeHierarchyValues(hierarchyJson, binaryBody) {\n let i;\n let classId;\n let binaryAccessor;\n\n const instancesLength = hierarchyJson.instancesLength;\n const classes = hierarchyJson.classes;\n let classIds = hierarchyJson.classIds;\n let parentCounts = hierarchyJson.parentCounts;\n let parentIds = hierarchyJson.parentIds;\n let parentIdsLength = instancesLength;\n\n if (defined(classIds.byteOffset)) {\n classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);\n classIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(classIds);\n classIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + classIds.byteOffset,\n instancesLength\n );\n }\n\n let parentIndexes;\n if (defined(parentCounts)) {\n if (defined(parentCounts.byteOffset)) {\n parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);\n parentCounts.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentCounts);\n parentCounts = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentCounts.byteOffset,\n instancesLength\n );\n }\n parentIndexes = new Uint16Array(instancesLength);\n parentIdsLength = 0;\n for (i = 0; i < instancesLength; ++i) {\n parentIndexes[i] = parentIdsLength;\n parentIdsLength += parentCounts[i];\n }\n }\n\n if (defined(parentIds) && defined(parentIds.byteOffset)) {\n parentIds.componentType = defaultValue(parentIds.componentType, GL.UNSIGNED_SHORT);\n parentIds.type = AttributeType.SCALAR;\n binaryAccessor = getBinaryAccessor(parentIds);\n parentIds = binaryAccessor.createArrayBufferView(\n binaryBody.buffer,\n binaryBody.byteOffset + parentIds.byteOffset,\n parentIdsLength\n );\n }\n\n const classesLength = classes.length;\n for (i = 0; i < classesLength; ++i) {\n const classInstancesLength = classes[i].length;\n const properties = classes[i].instances;\n const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);\n classes[i].instances = combine(binaryProperties, properties);\n }\n\n const classCounts = new Array(classesLength).fill(0);\n const classIndexes = new Uint16Array(instancesLength);\n for (i = 0; i < instancesLength; ++i) {\n classId = classIds[i];\n classIndexes[i] = classCounts[classId];\n ++classCounts[classId];\n }\n\n const hierarchy = {\n classes,\n classIds,\n classIndexes,\n parentCounts,\n parentIndexes,\n parentIds\n };\n\n validateHierarchy(hierarchy);\n\n return hierarchy;\n}\n\n// HELPER CODE\n\n// Traverse over the hierarchy and process each instance with the endConditionCallback.\n// When the endConditionCallback returns a value, the traversal stops and that value is returned.\nexport function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {\n if (!hierarchy) {\n return;\n }\n\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n if (parentIds) {\n return endConditionCallback(hierarchy, instanceIndex);\n }\n if (parentCounts > 0) {\n return traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback);\n }\n return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);\n}\n\n// eslint-disable-next-line max-statements\nfunction traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {\n const classIds = hierarchy.classIds;\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const instancesLength = classIds.length;\n\n // Ignore instances that have already been visited. This occurs in diamond inheritance situations.\n // Use a marker value to indicate that an instance has been visited, which increments with each run.\n // This is more efficient than clearing the visited array every time.\n const visited = scratchVisited;\n visited.length = Math.max(visited.length, instancesLength);\n const visitedMarker = ++marker;\n\n const stack = scratchStack;\n stack.length = 0;\n stack.push(instanceIndex);\n\n while (stack.length > 0) {\n instanceIndex = stack.pop();\n if (visited[instanceIndex] === visitedMarker) {\n // This instance has already been visited, stop traversal\n continue;\n }\n visited[instanceIndex] = visitedMarker;\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentCount = parentCounts[instanceIndex];\n const parentIndex = parentIndexes[instanceIndex];\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself)\n // else add the parent to the stack to continue the traversal.\n if (parentId !== instanceIndex) {\n stack.push(parentId);\n }\n }\n }\n\n return null;\n}\n\nfunction traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {\n let hasParent = true;\n while (hasParent) {\n const result = endConditionCallback(hierarchy, instanceIndex);\n if (defined(result)) {\n // The end condition was met, stop the traversal and return the result\n return result;\n }\n const parentId = hierarchy.parentIds[instanceIndex];\n hasParent = parentId !== instanceIndex;\n instanceIndex = parentId;\n }\n throw new Error('traverseHierarchySingleParent');\n}\n\n// DEBUG CODE\n\nfunction validateHierarchy(hierarchy) {\n const scratchValidateStack = [];\n\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n for (let i = 0; i < instancesLength; ++i) {\n validateInstance(hierarchy, i, stack);\n }\n}\n\nfunction validateInstance(hierarchy, instanceIndex, stack) {\n const parentCounts = hierarchy.parentCounts;\n const parentIds = hierarchy.parentIds;\n const parentIndexes = hierarchy.parentIndexes;\n const classIds = hierarchy.classIds;\n const instancesLength = classIds.length;\n\n if (!defined(parentIds)) {\n // No need to validate if there are no parents\n return;\n }\n\n assert(\n instanceIndex < instancesLength,\n `Parent index ${instanceIndex} exceeds the total number of instances: ${instancesLength}`\n );\n assert(\n stack.indexOf(instanceIndex) === -1,\n 'Circular dependency detected in the batch table hierarchy.'\n );\n\n stack.push(instanceIndex);\n const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;\n const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;\n for (let i = 0; i < parentCount; ++i) {\n const parentId = parentIds[parentIndex + i];\n // Stop the traversal when the instance has no parent (its parentId equals itself), else continue the traversal.\n if (parentId !== instanceIndex) {\n validateInstance(hierarchy, parentId, stack);\n }\n }\n stack.pop(instanceIndex);\n}\n"],"file":"tile-3d-batch-table-hierarchy.js"}
@@ -7,6 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
10
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
17
 
12
18
  var _loaderUtils = require("@loaders.gl/loader-utils");
@@ -19,18 +25,22 @@ function defined(x) {
19
25
  return x !== undefined && x !== null;
20
26
  }
21
27
 
22
- const clone = (x, y) => x;
28
+ var clone = function clone(x, y) {
29
+ return x;
30
+ };
23
31
 
24
- const IGNORED_PROPERTY_FIELDS = {
32
+ var IGNORED_PROPERTY_FIELDS = {
25
33
  HIERARCHY: true,
26
34
  extensions: true,
27
35
  extras: true
28
36
  };
29
37
 
30
- class Tile3DBatchTableParser {
31
- constructor(json, binary, featureCount, options = {}) {
38
+ var Tile3DBatchTableParser = function () {
39
+ function Tile3DBatchTableParser(json, binary, featureCount) {
32
40
  var _this$json;
33
41
 
42
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
43
+ (0, _classCallCheck2.default)(this, Tile3DBatchTableParser);
34
44
  (0, _defineProperty2.default)(this, "json", void 0);
35
45
  (0, _defineProperty2.default)(this, "binary", void 0);
36
46
  (0, _defineProperty2.default)(this, "featureCount", void 0);
@@ -45,7 +55,7 @@ class Tile3DBatchTableParser {
45
55
  this._extensions = ((_this$json = this.json) === null || _this$json === void 0 ? void 0 : _this$json.extensions) || {};
46
56
  this._properties = {};
47
57
 
48
- for (const propertyName in this.json) {
58
+ for (var propertyName in this.json) {
49
59
  if (!IGNORED_PROPERTY_FIELDS[propertyName]) {
50
60
  this._properties[propertyName] = this.json[propertyName];
51
61
  }
@@ -58,255 +68,282 @@ class Tile3DBatchTableParser {
58
68
  }
59
69
  }
60
70
 
61
- getExtension(extensionName) {
62
- return this.json && this.json.extensions && this.json.extensions[extensionName];
63
- }
64
-
65
- memorySizeInBytes() {
66
- return 0;
67
- }
68
-
69
- isClass(batchId, className) {
70
- this._checkBatchId(batchId);
71
-
72
- (0, _loaderUtils.assert)(typeof className === 'string', className);
73
-
74
- if (this._hierarchy) {
75
- const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
76
- const classId = hierarchy.classIds[instanceIndex];
77
- const instanceClass = hierarchy.classes[classId];
78
- return instanceClass.name === className;
79
- });
80
- return defined(result);
71
+ (0, _createClass2.default)(Tile3DBatchTableParser, [{
72
+ key: "getExtension",
73
+ value: function getExtension(extensionName) {
74
+ return this.json && this.json.extensions && this.json.extensions[extensionName];
81
75
  }
76
+ }, {
77
+ key: "memorySizeInBytes",
78
+ value: function memorySizeInBytes() {
79
+ return 0;
80
+ }
81
+ }, {
82
+ key: "isClass",
83
+ value: function isClass(batchId, className) {
84
+ this._checkBatchId(batchId);
85
+
86
+ (0, _loaderUtils.assert)(typeof className === 'string', className);
87
+
88
+ if (this._hierarchy) {
89
+ var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
90
+ var classId = hierarchy.classIds[instanceIndex];
91
+ var instanceClass = hierarchy.classes[classId];
92
+ return instanceClass.name === className;
93
+ });
94
+ return defined(result);
95
+ }
82
96
 
83
- return false;
84
- }
85
-
86
- isExactClass(batchId, className) {
87
- (0, _loaderUtils.assert)(typeof className === 'string', className);
88
- return this.getExactClassName(batchId) === className;
89
- }
90
-
91
- getExactClassName(batchId) {
92
- this._checkBatchId(batchId);
97
+ return false;
98
+ }
99
+ }, {
100
+ key: "isExactClass",
101
+ value: function isExactClass(batchId, className) {
102
+ (0, _loaderUtils.assert)(typeof className === 'string', className);
103
+ return this.getExactClassName(batchId) === className;
104
+ }
105
+ }, {
106
+ key: "getExactClassName",
107
+ value: function getExactClassName(batchId) {
108
+ this._checkBatchId(batchId);
109
+
110
+ if (this._hierarchy) {
111
+ var classId = this._hierarchy.classIds[batchId];
112
+ var instanceClass = this._hierarchy.classes[classId];
113
+ return instanceClass.name;
114
+ }
93
115
 
94
- if (this._hierarchy) {
95
- const classId = this._hierarchy.classIds[batchId];
96
- const instanceClass = this._hierarchy.classes[classId];
97
- return instanceClass.name;
116
+ return undefined;
98
117
  }
118
+ }, {
119
+ key: "hasProperty",
120
+ value: function hasProperty(batchId, name) {
121
+ this._checkBatchId(batchId);
99
122
 
100
- return undefined;
101
- }
123
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
124
+ return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
125
+ }
126
+ }, {
127
+ key: "getPropertyNames",
128
+ value: function getPropertyNames(batchId, results) {
129
+ var _results;
102
130
 
103
- hasProperty(batchId, name) {
104
- this._checkBatchId(batchId);
131
+ this._checkBatchId(batchId);
105
132
 
106
- (0, _loaderUtils.assert)(typeof name === 'string', name);
107
- return defined(this._properties[name]) || this._hasPropertyInHierarchy(batchId, name);
108
- }
133
+ results = defined(results) ? results : [];
134
+ results.length = 0;
135
+ var propertyNames = Object.keys(this._properties);
109
136
 
110
- getPropertyNames(batchId, results) {
111
- this._checkBatchId(batchId);
137
+ (_results = results).push.apply(_results, (0, _toConsumableArray2.default)(propertyNames));
112
138
 
113
- results = defined(results) ? results : [];
114
- results.length = 0;
115
- const propertyNames = Object.keys(this._properties);
116
- results.push(...propertyNames);
139
+ if (this._hierarchy) {
140
+ this._getPropertyNamesInHierarchy(batchId, results);
141
+ }
117
142
 
118
- if (this._hierarchy) {
119
- this._getPropertyNamesInHierarchy(batchId, results);
143
+ return results;
120
144
  }
145
+ }, {
146
+ key: "getProperty",
147
+ value: function getProperty(batchId, name) {
148
+ this._checkBatchId(batchId);
121
149
 
122
- return results;
123
- }
124
-
125
- getProperty(batchId, name) {
126
- this._checkBatchId(batchId);
127
-
128
- (0, _loaderUtils.assert)(typeof name === 'string', name);
150
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
129
151
 
130
- if (this._binaryProperties) {
131
- const binaryProperty = this._binaryProperties[name];
152
+ if (this._binaryProperties) {
153
+ var binaryProperty = this._binaryProperties[name];
132
154
 
133
- if (defined(binaryProperty)) {
134
- return this._getBinaryProperty(binaryProperty, batchId);
155
+ if (defined(binaryProperty)) {
156
+ return this._getBinaryProperty(binaryProperty, batchId);
157
+ }
135
158
  }
136
- }
137
159
 
138
- const propertyValues = this._properties[name];
160
+ var propertyValues = this._properties[name];
139
161
 
140
- if (defined(propertyValues)) {
141
- return clone(propertyValues[batchId], true);
142
- }
162
+ if (defined(propertyValues)) {
163
+ return clone(propertyValues[batchId], true);
164
+ }
143
165
 
144
- if (this._hierarchy) {
145
- const hierarchyProperty = this._getHierarchyProperty(batchId, name);
166
+ if (this._hierarchy) {
167
+ var hierarchyProperty = this._getHierarchyProperty(batchId, name);
146
168
 
147
- if (defined(hierarchyProperty)) {
148
- return hierarchyProperty;
169
+ if (defined(hierarchyProperty)) {
170
+ return hierarchyProperty;
171
+ }
149
172
  }
150
- }
151
173
 
152
- return undefined;
153
- }
154
-
155
- setProperty(batchId, name, value) {
156
- const featureCount = this.featureCount;
174
+ return undefined;
175
+ }
176
+ }, {
177
+ key: "setProperty",
178
+ value: function setProperty(batchId, name, value) {
179
+ var featureCount = this.featureCount;
157
180
 
158
- this._checkBatchId(batchId);
181
+ this._checkBatchId(batchId);
159
182
 
160
- (0, _loaderUtils.assert)(typeof name === 'string', name);
183
+ (0, _loaderUtils.assert)(typeof name === 'string', name);
161
184
 
162
- if (this._binaryProperties) {
163
- const binaryProperty = this._binaryProperties[name];
185
+ if (this._binaryProperties) {
186
+ var binaryProperty = this._binaryProperties[name];
164
187
 
165
- if (binaryProperty) {
166
- this._setBinaryProperty(binaryProperty, batchId, value);
188
+ if (binaryProperty) {
189
+ this._setBinaryProperty(binaryProperty, batchId, value);
167
190
 
168
- return;
191
+ return;
192
+ }
169
193
  }
170
- }
171
194
 
172
- if (this._hierarchy) {
173
- if (this._setHierarchyProperty(this, batchId, name, value)) {
174
- return;
195
+ if (this._hierarchy) {
196
+ if (this._setHierarchyProperty(this, batchId, name, value)) {
197
+ return;
198
+ }
175
199
  }
176
- }
177
-
178
- let propertyValues = this._properties[name];
179
-
180
- if (!defined(propertyValues)) {
181
- this._properties[name] = new Array(featureCount);
182
- propertyValues = this._properties[name];
183
- }
184
200
 
185
- propertyValues[batchId] = clone(value, true);
186
- }
201
+ var propertyValues = this._properties[name];
187
202
 
188
- _checkBatchId(batchId) {
189
- const valid = batchId >= 0 && batchId < this.featureCount;
203
+ if (!defined(propertyValues)) {
204
+ this._properties[name] = new Array(featureCount);
205
+ propertyValues = this._properties[name];
206
+ }
190
207
 
191
- if (!valid) {
192
- throw new Error('batchId not in range [0, featureCount - 1].');
208
+ propertyValues[batchId] = clone(value, true);
193
209
  }
194
- }
195
-
196
- _getBinaryProperty(binaryProperty, index) {
197
- return binaryProperty.unpack(binaryProperty.typedArray, index);
198
- }
199
-
200
- _setBinaryProperty(binaryProperty, index, value) {
201
- binaryProperty.pack(value, binaryProperty.typedArray, index);
202
- }
203
-
204
- _initializeBinaryProperties() {
205
- let binaryProperties = null;
210
+ }, {
211
+ key: "_checkBatchId",
212
+ value: function _checkBatchId(batchId) {
213
+ var valid = batchId >= 0 && batchId < this.featureCount;
206
214
 
207
- for (const name in this._properties) {
208
- const property = this._properties[name];
209
-
210
- const binaryProperty = this._initializeBinaryProperty(name, property);
211
-
212
- if (binaryProperty) {
213
- binaryProperties = binaryProperties || {};
214
- binaryProperties[name] = binaryProperty;
215
+ if (!valid) {
216
+ throw new Error('batchId not in range [0, featureCount - 1].');
215
217
  }
216
218
  }
217
-
218
- return binaryProperties;
219
- }
220
-
221
- _initializeBinaryProperty(name, property) {
222
- if ('byteOffset' in property) {
223
- const tile3DAccessor = property;
224
- (0, _loaderUtils.assert)(this.binary, "Property ".concat(name, " requires a batch table binary."));
225
- (0, _loaderUtils.assert)(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
226
- const accessor = (0, _tile3dAccessorUtils.createTypedArrayFromAccessor)(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
227
- return {
228
- typedArray: accessor.values,
229
- componentCount: accessor.size,
230
- unpack: accessor.unpacker,
231
- pack: accessor.packer
232
- };
219
+ }, {
220
+ key: "_getBinaryProperty",
221
+ value: function _getBinaryProperty(binaryProperty, index) {
222
+ return binaryProperty.unpack(binaryProperty.typedArray, index);
233
223
  }
234
-
235
- return null;
236
- }
237
-
238
- _hasPropertyInHierarchy(batchId, name) {
239
- if (!this._hierarchy) {
240
- return false;
224
+ }, {
225
+ key: "_setBinaryProperty",
226
+ value: function _setBinaryProperty(binaryProperty, index, value) {
227
+ binaryProperty.pack(value, binaryProperty.typedArray, index);
241
228
  }
229
+ }, {
230
+ key: "_initializeBinaryProperties",
231
+ value: function _initializeBinaryProperties() {
232
+ var binaryProperties = null;
242
233
 
243
- const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
244
- const classId = hierarchy.classIds[instanceIndex];
245
- const instances = hierarchy.classes[classId].instances;
246
- return defined(instances[name]);
247
- });
248
- return defined(result);
249
- }
234
+ for (var name in this._properties) {
235
+ var property = this._properties[name];
250
236
 
251
- _getPropertyNamesInHierarchy(batchId, results) {
252
- (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
253
- const classId = hierarchy.classIds[instanceIndex];
254
- const instances = hierarchy.classes[classId].instances;
237
+ var binaryProperty = this._initializeBinaryProperty(name, property);
255
238
 
256
- for (const name in instances) {
257
- if (instances.hasOwnProperty(name)) {
258
- if (results.indexOf(name) === -1) {
259
- results.push(name);
260
- }
239
+ if (binaryProperty) {
240
+ binaryProperties = binaryProperties || {};
241
+ binaryProperties[name] = binaryProperty;
261
242
  }
262
243
  }
263
- });
264
- }
265
244
 
266
- _getHierarchyProperty(batchId, name) {
267
- return (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
268
- const classId = hierarchy.classIds[instanceIndex];
269
- const instanceClass = hierarchy.classes[classId];
270
- const indexInClass = hierarchy.classIndexes[instanceIndex];
271
- const propertyValues = instanceClass.instances[name];
272
-
273
- if (defined(propertyValues)) {
274
- if (defined(propertyValues.typedArray)) {
275
- return this._getBinaryProperty(propertyValues, indexInClass);
276
- }
277
-
278
- return clone(propertyValues[indexInClass], true);
245
+ return binaryProperties;
246
+ }
247
+ }, {
248
+ key: "_initializeBinaryProperty",
249
+ value: function _initializeBinaryProperty(name, property) {
250
+ if ('byteOffset' in property) {
251
+ var tile3DAccessor = property;
252
+ (0, _loaderUtils.assert)(this.binary, "Property ".concat(name, " requires a batch table binary."));
253
+ (0, _loaderUtils.assert)(tile3DAccessor.type, "Property ".concat(name, " requires a type."));
254
+ var accessor = (0, _tile3dAccessorUtils.createTypedArrayFromAccessor)(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
255
+ return {
256
+ typedArray: accessor.values,
257
+ componentCount: accessor.size,
258
+ unpack: accessor.unpacker,
259
+ pack: accessor.packer
260
+ };
279
261
  }
280
262
 
281
263
  return null;
282
- });
283
- }
284
-
285
- _setHierarchyProperty(batchTable, batchId, name, value) {
286
- const result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
287
- const classId = hierarchy.classIds[instanceIndex];
288
- const instanceClass = hierarchy.classes[classId];
289
- const indexInClass = hierarchy.classIndexes[instanceIndex];
290
- const propertyValues = instanceClass.instances[name];
264
+ }
265
+ }, {
266
+ key: "_hasPropertyInHierarchy",
267
+ value: function _hasPropertyInHierarchy(batchId, name) {
268
+ if (!this._hierarchy) {
269
+ return false;
270
+ }
291
271
 
292
- if (defined(propertyValues)) {
293
- (0, _loaderUtils.assert)(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
272
+ var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
273
+ var classId = hierarchy.classIds[instanceIndex];
274
+ var instances = hierarchy.classes[classId].instances;
275
+ return defined(instances[name]);
276
+ });
277
+ return defined(result);
278
+ }
279
+ }, {
280
+ key: "_getPropertyNamesInHierarchy",
281
+ value: function _getPropertyNamesInHierarchy(batchId, results) {
282
+ (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
283
+ var classId = hierarchy.classIds[instanceIndex];
284
+ var instances = hierarchy.classes[classId].instances;
285
+
286
+ for (var name in instances) {
287
+ if (instances.hasOwnProperty(name)) {
288
+ if (results.indexOf(name) === -1) {
289
+ results.push(name);
290
+ }
291
+ }
292
+ }
293
+ });
294
+ }
295
+ }, {
296
+ key: "_getHierarchyProperty",
297
+ value: function _getHierarchyProperty(batchId, name) {
298
+ var _this = this;
299
+
300
+ return (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
301
+ var classId = hierarchy.classIds[instanceIndex];
302
+ var instanceClass = hierarchy.classes[classId];
303
+ var indexInClass = hierarchy.classIndexes[instanceIndex];
304
+ var propertyValues = instanceClass.instances[name];
305
+
306
+ if (defined(propertyValues)) {
307
+ if (defined(propertyValues.typedArray)) {
308
+ return _this._getBinaryProperty(propertyValues, indexInClass);
309
+ }
294
310
 
295
- if (defined(propertyValues.typedArray)) {
296
- this._setBinaryProperty(propertyValues, indexInClass, value);
297
- } else {
298
- propertyValues[indexInClass] = clone(value, true);
311
+ return clone(propertyValues[indexInClass], true);
299
312
  }
300
313
 
301
- return true;
302
- }
314
+ return null;
315
+ });
316
+ }
317
+ }, {
318
+ key: "_setHierarchyProperty",
319
+ value: function _setHierarchyProperty(batchTable, batchId, name, value) {
320
+ var _this2 = this;
321
+
322
+ var result = (0, _tile3dBatchTableHierarchy.traverseHierarchy)(this._hierarchy, batchId, function (hierarchy, instanceIndex) {
323
+ var classId = hierarchy.classIds[instanceIndex];
324
+ var instanceClass = hierarchy.classes[classId];
325
+ var indexInClass = hierarchy.classIndexes[instanceIndex];
326
+ var propertyValues = instanceClass.instances[name];
327
+
328
+ if (defined(propertyValues)) {
329
+ (0, _loaderUtils.assert)(instanceIndex === batchId, "Inherited property \"".concat(name, "\" is read-only."));
330
+
331
+ if (defined(propertyValues.typedArray)) {
332
+ _this2._setBinaryProperty(propertyValues, indexInClass, value);
333
+ } else {
334
+ propertyValues[indexInClass] = clone(value, true);
335
+ }
303
336
 
304
- return false;
305
- });
306
- return defined(result);
307
- }
337
+ return true;
338
+ }
308
339
 
309
- }
340
+ return false;
341
+ });
342
+ return defined(result);
343
+ }
344
+ }]);
345
+ return Tile3DBatchTableParser;
346
+ }();
310
347
 
311
348
  exports.default = Tile3DBatchTableParser;
312
349
  //# sourceMappingURL=tile-3d-batch-table.js.map