@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.
- package/dist/bundle.js +2418 -232
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +78 -23
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +8 -8
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +42 -30
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +59 -57
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +238 -201
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +78 -62
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +6 -5
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +22 -15
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +13 -6
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +23 -14
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +22 -15
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +3 -3
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -6
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +197 -69
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +18 -17
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +3 -3
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +3 -3
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +270 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +66 -26
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +4 -3
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +141 -53
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +17 -19
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +8 -7
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +36 -10
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +48 -12
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +45 -0
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +161 -14
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +63 -38
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +198 -117
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +74 -15
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +1 -1
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +5 -5
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +142 -37
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/esm/lib/constants.js +2 -1
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +173 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +10 -0
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +67 -0
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +4 -0
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +9 -2
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -1
- package/dist/lib/ion/ion.d.ts +3 -3
- package/dist/lib/ion/ion.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +39 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -0
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +189 -0
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -2
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -0
- package/dist/lib/parsers/parse-3d-tile-batched-model.js +1 -1
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -0
- package/dist/lib/parsers/parse-3d-tile-gltf.js +18 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +16 -0
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +67 -1
- package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile.js +3 -0
- package/dist/tiles-3d-loader.d.ts.map +1 -1
- package/dist/tiles-3d-loader.js +8 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/lib/constants.ts +2 -1
- package/src/lib/ion/{ion.js → ion.ts} +0 -0
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +255 -0
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +4 -3
- package/src/lib/parsers/parse-3d-tile-gltf.js +16 -0
- package/src/lib/parsers/parse-3d-tile-header.ts +82 -1
- package/src/lib/parsers/parse-3d-tile.ts +4 -0
- package/src/tiles-3d-loader.ts +17 -2
- 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
|
-
|
|
28
|
+
var clone = function clone(x, y) {
|
|
29
|
+
return x;
|
|
30
|
+
};
|
|
23
31
|
|
|
24
|
-
|
|
32
|
+
var IGNORED_PROPERTY_FIELDS = {
|
|
25
33
|
HIERARCHY: true,
|
|
26
34
|
extensions: true,
|
|
27
35
|
extras: true
|
|
28
36
|
};
|
|
29
37
|
|
|
30
|
-
|
|
31
|
-
|
|
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 (
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
-
this._checkBatchId(batchId);
|
|
131
|
+
this._checkBatchId(batchId);
|
|
105
132
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
133
|
+
results = defined(results) ? results : [];
|
|
134
|
+
results.length = 0;
|
|
135
|
+
var propertyNames = Object.keys(this._properties);
|
|
109
136
|
|
|
110
|
-
|
|
111
|
-
this._checkBatchId(batchId);
|
|
137
|
+
(_results = results).push.apply(_results, (0, _toConsumableArray2.default)(propertyNames));
|
|
112
138
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
results.push(...propertyNames);
|
|
139
|
+
if (this._hierarchy) {
|
|
140
|
+
this._getPropertyNamesInHierarchy(batchId, results);
|
|
141
|
+
}
|
|
117
142
|
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
131
|
-
|
|
152
|
+
if (this._binaryProperties) {
|
|
153
|
+
var binaryProperty = this._binaryProperties[name];
|
|
132
154
|
|
|
133
|
-
|
|
134
|
-
|
|
155
|
+
if (defined(binaryProperty)) {
|
|
156
|
+
return this._getBinaryProperty(binaryProperty, batchId);
|
|
157
|
+
}
|
|
135
158
|
}
|
|
136
|
-
}
|
|
137
159
|
|
|
138
|
-
|
|
160
|
+
var propertyValues = this._properties[name];
|
|
139
161
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
162
|
+
if (defined(propertyValues)) {
|
|
163
|
+
return clone(propertyValues[batchId], true);
|
|
164
|
+
}
|
|
143
165
|
|
|
144
|
-
|
|
145
|
-
|
|
166
|
+
if (this._hierarchy) {
|
|
167
|
+
var hierarchyProperty = this._getHierarchyProperty(batchId, name);
|
|
146
168
|
|
|
147
|
-
|
|
148
|
-
|
|
169
|
+
if (defined(hierarchyProperty)) {
|
|
170
|
+
return hierarchyProperty;
|
|
171
|
+
}
|
|
149
172
|
}
|
|
150
|
-
}
|
|
151
173
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
}, {
|
|
177
|
+
key: "setProperty",
|
|
178
|
+
value: function setProperty(batchId, name, value) {
|
|
179
|
+
var featureCount = this.featureCount;
|
|
157
180
|
|
|
158
|
-
|
|
181
|
+
this._checkBatchId(batchId);
|
|
159
182
|
|
|
160
|
-
|
|
183
|
+
(0, _loaderUtils.assert)(typeof name === 'string', name);
|
|
161
184
|
|
|
162
|
-
|
|
163
|
-
|
|
185
|
+
if (this._binaryProperties) {
|
|
186
|
+
var binaryProperty = this._binaryProperties[name];
|
|
164
187
|
|
|
165
|
-
|
|
166
|
-
|
|
188
|
+
if (binaryProperty) {
|
|
189
|
+
this._setBinaryProperty(binaryProperty, batchId, value);
|
|
167
190
|
|
|
168
|
-
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
169
193
|
}
|
|
170
|
-
}
|
|
171
194
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
186
|
-
}
|
|
201
|
+
var propertyValues = this._properties[name];
|
|
187
202
|
|
|
188
|
-
|
|
189
|
-
|
|
203
|
+
if (!defined(propertyValues)) {
|
|
204
|
+
this._properties[name] = new Array(featureCount);
|
|
205
|
+
propertyValues = this._properties[name];
|
|
206
|
+
}
|
|
190
207
|
|
|
191
|
-
|
|
192
|
-
throw new Error('batchId not in range [0, featureCount - 1].');
|
|
208
|
+
propertyValues[batchId] = clone(value, true);
|
|
193
209
|
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
208
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
244
|
-
|
|
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
|
-
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
results.push(name);
|
|
260
|
-
}
|
|
239
|
+
if (binaryProperty) {
|
|
240
|
+
binaryProperties = binaryProperties || {};
|
|
241
|
+
binaryProperties[name] = binaryProperty;
|
|
261
242
|
}
|
|
262
243
|
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
244
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
|
|
293
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|