@loaders.gl/3d-tiles 3.4.13 → 3.4.15

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 (89) hide show
  1. package/dist/dist.min.js +117 -120
  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 +27 -61
  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 +30 -42
  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 +57 -59
  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 +177 -223
  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 +52 -71
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  15. package/dist/es5/lib/constants.js +4 -4
  16. package/dist/es5/lib/constants.js.map +1 -1
  17. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +15 -18
  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 +6 -9
  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 +14 -19
  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 +15 -18
  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 +63 -155
  30. package/dist/es5/lib/ion/ion.js.map +1 -1
  31. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +17 -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 +166 -198
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  39. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +25 -53
  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 +3 -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 +57 -129
  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 +19 -17
  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 +7 -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 +10 -29
  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 +12 -39
  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 +8 -27
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  55. package/dist/es5/lib/parsers/parse-3d-tile-header.js +99 -197
  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 +37 -55
  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 +110 -162
  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 +21 -59
  62. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  63. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js +10 -12
  64. package/dist/es5/lib/utils/obb/s2-corners-to-obb.js.map +1 -1
  65. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js +22 -20
  66. package/dist/es5/lib/utils/s2/converters/s2-to-boundary.js.map +1 -1
  67. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js +9 -9
  68. package/dist/es5/lib/utils/s2/converters/s2-to-obb-points.js.map +1 -1
  69. package/dist/es5/lib/utils/s2/converters/s2-to-region.js +14 -18
  70. package/dist/es5/lib/utils/s2/converters/s2-to-region.js.map +1 -1
  71. package/dist/es5/lib/utils/s2/index.js +13 -13
  72. package/dist/es5/lib/utils/s2/s2-geometry-functions.js +2 -2
  73. package/dist/es5/lib/utils/s2/s2-geometry-functions.js.map +1 -1
  74. package/dist/es5/lib/utils/s2/s2-token-functions.js +10 -10
  75. package/dist/es5/lib/utils/s2/s2-token-functions.js.map +1 -1
  76. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js +3 -3
  77. package/dist/es5/lib/utils/s2/s2geometry/s2-cell-utils.js.map +1 -1
  78. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js +48 -54
  79. package/dist/es5/lib/utils/s2/s2geometry/s2-geometry.js.map +1 -1
  80. package/dist/es5/lib/utils/version.js +1 -1
  81. package/dist/es5/lib/utils/version.js.map +1 -1
  82. package/dist/es5/tile-3d-subtree-loader.js +1 -1
  83. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  84. package/dist/es5/tile-3d-writer.js +5 -4
  85. package/dist/es5/tile-3d-writer.js.map +1 -1
  86. package/dist/es5/tiles-3d-loader.js +37 -100
  87. package/dist/es5/tiles-3d-loader.js.map +1 -1
  88. package/dist/esm/lib/utils/version.js +1 -1
  89. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"cesium-ion-loader.js","names":["_tiles3dLoader","require","_ion","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","preload","_x","_preload","_asyncToGenerator2","_regenerator","mark","_callee2","url","options","_options","accessToken","assetId","matched","_args2","wrap","_callee2$","_context2","prev","next","undefined","Number","isFinite","match","abrupt","getIonTilesetMetadata","stop","CesiumIonLoader","Tiles3DLoader","id","name","parse","_parse","_callee","data","context","_callee$","_context","loader","_x2","_x3","_x4","exports"],"sources":["../../src/cesium-ion-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoader} from './tiles-3d-loader';\nimport {getIonTilesetMetadata} from './lib/ion/ion';\n\nasync function preload(url, options = {}) {\n options = options['cesium-ion'] || {};\n // @ts-ignore\n const {accessToken} = options;\n // @ts-ignore\n let assetId = options.assetId;\n if (!Number.isFinite(assetId)) {\n const matched = url.match(/\\/([0-9]+)\\/tileset.json/);\n assetId = matched && matched[1];\n }\n return getIonTilesetMetadata(accessToken, assetId);\n}\n\n/**\n * Loader for 3D tiles from Cesium ION\n */\nexport const CesiumIonLoader: LoaderWithParser = {\n ...Tiles3DLoader,\n id: 'cesium-ion',\n name: 'Cesium Ion',\n // @ts-ignore\n preload,\n parse: async (data, options?, context?) => {\n options = {...options};\n options['3d-tiles'] = options['cesium-ion'];\n // @ts-ignore\n options.loader = CesiumIonLoader;\n return Tiles3DLoader.parse(data, options, context); // , loader);\n },\n options: {\n 'cesium-ion': {\n // @ts-expect-error\n ...Tiles3DLoader.options['3d-tiles'],\n accessToken: null\n }\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"cesium-ion-loader.js","names":["_tiles3dLoader","require","_ion","preload","url","options","arguments","length","undefined","accessToken","assetId","Number","isFinite","matched","match","getIonTilesetMetadata","CesiumIonLoader","Tiles3DLoader","id","name","parse","data","context","loader","exports"],"sources":["../../src/cesium-ion-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoader} from './tiles-3d-loader';\nimport {getIonTilesetMetadata} from './lib/ion/ion';\n\nasync function preload(url, options = {}) {\n options = options['cesium-ion'] || {};\n // @ts-ignore\n const {accessToken} = options;\n // @ts-ignore\n let assetId = options.assetId;\n if (!Number.isFinite(assetId)) {\n const matched = url.match(/\\/([0-9]+)\\/tileset.json/);\n assetId = matched && matched[1];\n }\n return getIonTilesetMetadata(accessToken, assetId);\n}\n\n/**\n * Loader for 3D tiles from Cesium ION\n */\nexport const CesiumIonLoader: LoaderWithParser = {\n ...Tiles3DLoader,\n id: 'cesium-ion',\n name: 'Cesium Ion',\n // @ts-ignore\n preload,\n parse: async (data, options?, context?) => {\n options = {...options};\n options['3d-tiles'] = options['cesium-ion'];\n // @ts-ignore\n options.loader = CesiumIonLoader;\n return Tiles3DLoader.parse(data, options, context); // , loader);\n },\n options: {\n 'cesium-ion': {\n // @ts-expect-error\n ...Tiles3DLoader.options['3d-tiles'],\n accessToken: null\n }\n }\n};\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,eAAeE,OAAOA,CAACC,GAAG,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACtCD,OAAO,GAAGA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EAErC,MAAM;IAACI;EAAW,CAAC,GAAGJ,OAAO;EAE7B,IAAIK,OAAO,GAAGL,OAAO,CAACK,OAAO;EAC7B,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,OAAO,CAAC,EAAE;IAC7B,MAAMG,OAAO,GAAGT,GAAG,CAACU,KAAK,CAAC,0BAA0B,CAAC;IACrDJ,OAAO,GAAGG,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC;EACjC;EACA,OAAO,IAAAE,0BAAqB,EAACN,WAAW,EAAEC,OAAO,CAAC;AACpD;AAKO,MAAMM,eAAiC,GAAG;EAC/C,GAAGC,4BAAa;EAChBC,EAAE,EAAE,YAAY;EAChBC,IAAI,EAAE,YAAY;EAElBhB,OAAO;EACPiB,KAAK,EAAE,MAAAA,CAAOC,IAAI,EAAEhB,OAAQ,EAAEiB,OAAQ,KAAK;IACzCjB,OAAO,GAAG;MAAC,GAAGA;IAAO,CAAC;IACtBA,OAAO,CAAC,UAAU,CAAC,GAAGA,OAAO,CAAC,YAAY,CAAC;IAE3CA,OAAO,CAACkB,MAAM,GAAGP,eAAe;IAChC,OAAOC,4BAAa,CAACG,KAAK,CAACC,IAAI,EAAEhB,OAAO,EAAEiB,OAAO,CAAC;EACpD,CAAC;EACDjB,OAAO,EAAE;IACP,YAAY,EAAE;MAEZ,GAAGY,4BAAa,CAACZ,OAAO,CAAC,UAAU,CAAC;MACpCI,WAAW,EAAE;IACf;EACF;AACF,CAAC;AAACe,OAAA,CAAAR,eAAA,GAAAA,eAAA"}
package/dist/es5/index.js CHANGED
@@ -6,49 +6,49 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  Object.defineProperty(exports, "CesiumIonLoader", {
8
8
  enumerable: true,
9
- get: function get() {
9
+ get: function () {
10
10
  return _cesiumIonLoader.CesiumIonLoader;
11
11
  }
12
12
  });
13
13
  Object.defineProperty(exports, "TILE3D_TYPE", {
14
14
  enumerable: true,
15
- get: function get() {
15
+ get: function () {
16
16
  return _constants.TILE3D_TYPE;
17
17
  }
18
18
  });
19
19
  Object.defineProperty(exports, "Tile3DBatchTable", {
20
20
  enumerable: true,
21
- get: function get() {
21
+ get: function () {
22
22
  return _tile3dBatchTable.default;
23
23
  }
24
24
  });
25
25
  Object.defineProperty(exports, "Tile3DFeatureTable", {
26
26
  enumerable: true,
27
- get: function get() {
27
+ get: function () {
28
28
  return _tile3dFeatureTable.default;
29
29
  }
30
30
  });
31
31
  Object.defineProperty(exports, "Tile3DSubtreeLoader", {
32
32
  enumerable: true,
33
- get: function get() {
33
+ get: function () {
34
34
  return _tile3dSubtreeLoader.Tile3DSubtreeLoader;
35
35
  }
36
36
  });
37
37
  Object.defineProperty(exports, "Tile3DWriter", {
38
38
  enumerable: true,
39
- get: function get() {
39
+ get: function () {
40
40
  return _tile3dWriter.Tile3DWriter;
41
41
  }
42
42
  });
43
43
  Object.defineProperty(exports, "Tiles3DLoader", {
44
44
  enumerable: true,
45
- get: function get() {
45
+ get: function () {
46
46
  return _tiles3dLoader.Tiles3DLoader;
47
47
  }
48
48
  });
49
49
  Object.defineProperty(exports, "_getIonTilesetMetadata", {
50
50
  enumerable: true,
51
- get: function get() {
51
+ get: function () {
52
52
  return _ion.getIonTilesetMetadata;
53
53
  }
54
54
  });
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.createTypedArrayFromAccessor = createTypedArrayFromAccessor;
7
7
  var _math = require("@loaders.gl/math");
8
8
  var _loaderUtils = require("@loaders.gl/loader-utils");
9
- var COMPONENTS_PER_ATTRIBUTE = {
9
+ const COMPONENTS_PER_ATTRIBUTE = {
10
10
  SCALAR: 1,
11
11
  VEC2: 2,
12
12
  VEC3: 3,
@@ -15,55 +15,41 @@ var COMPONENTS_PER_ATTRIBUTE = {
15
15
  MAT3: 9,
16
16
  MAT4: 16
17
17
  };
18
- var UNPACKER = {
19
- SCALAR: function SCALAR(values, i) {
20
- return values[i];
21
- },
22
- VEC2: function VEC2(values, i) {
23
- return [values[2 * i + 0], values[2 * i + 1]];
24
- },
25
- VEC3: function VEC3(values, i) {
26
- return [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]];
27
- },
28
- VEC4: function VEC4(values, i) {
29
- return [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]];
30
- },
31
- MAT2: function MAT2(values, i) {
32
- return [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]];
33
- },
34
- MAT3: function MAT3(values, i) {
35
- return [values[9 * i + 0], values[9 * i + 1], values[9 * i + 2], values[9 * i + 3], values[9 * i + 4], values[9 * i + 5], values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]];
36
- },
37
- MAT4: function MAT4(values, i) {
38
- return [values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3], values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7], values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11], values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]];
39
- }
18
+ const UNPACKER = {
19
+ SCALAR: (values, i) => values[i],
20
+ VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],
21
+ VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],
22
+ VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],
23
+ MAT2: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],
24
+ MAT3: (values, i) => [values[9 * i + 0], values[9 * i + 1], values[9 * i + 2], values[9 * i + 3], values[9 * i + 4], values[9 * i + 5], values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]],
25
+ MAT4: (values, i) => [values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3], values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7], values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11], values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]]
40
26
  };
41
- var PACKER = {
42
- SCALAR: function SCALAR(x, values, i) {
27
+ const PACKER = {
28
+ SCALAR: (x, values, i) => {
43
29
  values[i] = x;
44
30
  },
45
- VEC2: function VEC2(x, values, i) {
31
+ VEC2: (x, values, i) => {
46
32
  values[2 * i + 0] = x[0];
47
33
  values[2 * i + 1] = x[1];
48
34
  },
49
- VEC3: function VEC3(x, values, i) {
35
+ VEC3: (x, values, i) => {
50
36
  values[3 * i + 0] = x[0];
51
37
  values[3 * i + 1] = x[1];
52
38
  values[3 * i + 2] = x[2];
53
39
  },
54
- VEC4: function VEC4(x, values, i) {
40
+ VEC4: (x, values, i) => {
55
41
  values[4 * i + 0] = x[0];
56
42
  values[4 * i + 1] = x[1];
57
43
  values[4 * i + 2] = x[2];
58
44
  values[4 * i + 3] = x[3];
59
45
  },
60
- MAT2: function MAT2(x, values, i) {
46
+ MAT2: (x, values, i) => {
61
47
  values[4 * i + 0] = x[0];
62
48
  values[4 * i + 1] = x[1];
63
49
  values[4 * i + 2] = x[2];
64
50
  values[4 * i + 3] = x[3];
65
51
  },
66
- MAT3: function MAT3(x, values, i) {
52
+ MAT3: (x, values, i) => {
67
53
  values[9 * i + 0] = x[0];
68
54
  values[9 * i + 1] = x[1];
69
55
  values[9 * i + 2] = x[2];
@@ -75,7 +61,7 @@ var PACKER = {
75
61
  values[9 * i + 8] = x[8];
76
62
  values[9 * i + 9] = x[9];
77
63
  },
78
- MAT4: function MAT4(x, values, i) {
64
+ MAT4: (x, values, i) => {
79
65
  values[16 * i + 0] = x[0];
80
66
  values[16 * i + 1] = x[1];
81
67
  values[16 * i + 2] = x[2];
@@ -95,20 +81,22 @@ var PACKER = {
95
81
  }
96
82
  };
97
83
  function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {
98
- var componentType = tile3DAccessor.componentType;
84
+ const {
85
+ componentType
86
+ } = tile3DAccessor;
99
87
  (0, _loaderUtils.assert)(tile3DAccessor.componentType);
100
- var type = typeof componentType === 'string' ? _math.GLType.fromName(componentType) : componentType;
101
- var size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];
102
- var unpacker = UNPACKER[tile3DAccessor.type];
103
- var packer = PACKER[tile3DAccessor.type];
88
+ const type = typeof componentType === 'string' ? _math.GLType.fromName(componentType) : componentType;
89
+ const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];
90
+ const unpacker = UNPACKER[tile3DAccessor.type];
91
+ const packer = PACKER[tile3DAccessor.type];
104
92
  byteOffset += tile3DAccessor.byteOffset;
105
- var values = _math.GLType.createTypedArray(type, buffer, byteOffset, size * length);
93
+ const values = _math.GLType.createTypedArray(type, buffer, byteOffset, size * length);
106
94
  return {
107
- values: values,
108
- type: type,
109
- size: size,
110
- unpacker: unpacker,
111
- packer: packer
95
+ values,
96
+ type,
97
+ size,
98
+ unpacker,
99
+ packer
112
100
  };
113
101
  }
114
102
  //# sourceMappingURL=tile-3d-accessor-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-3d-accessor-utils.js","names":["_math","require","_loaderUtils","COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","assert","type","GLType","fromName","size","unpacker","packer","createTypedArray"],"sources":["../../../../../src/lib/classes/helpers/tile-3d-accessor-utils.ts"],"sourcesContent":["import {GLType} from '@loaders.gl/math'; // '@math.gl/geometry';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst COMPONENTS_PER_ATTRIBUTE = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\n// TODO - could just return typed array views...\n// prettier-ignore\nconst UNPACKER = {\n SCALAR: (values, i) => values[i],\n VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n // TODO: check column major\n MAT2: (values, i) => [\n values[4 * i + 0], values[4 * i + 1],\n values[4 * i + 2], values[4 * i + 3]\n ],\n MAT3: (values, i) => [\n values[9 * i + 0], values[9 * i + 1], values[9 * i + 2],\n values[9 * i + 3], values[9 * i + 4], values[9 * i + 5],\n values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]\n ],\n MAT4: (values, i) => [\n values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3],\n values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7],\n values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11],\n values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]\n ]\n};\n\nconst PACKER = {\n SCALAR: (x, values, i) => {\n values[i] = x;\n },\n VEC2: (x, values, i) => {\n values[2 * i + 0] = x[0];\n values[2 * i + 1] = x[1];\n },\n VEC3: (x, values, i) => {\n values[3 * i + 0] = x[0];\n values[3 * i + 1] = x[1];\n values[3 * i + 2] = x[2];\n },\n VEC4: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n // TODO: check column major correctness\n MAT2: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n MAT3: (x, values, i) => {\n values[9 * i + 0] = x[0];\n values[9 * i + 1] = x[1];\n values[9 * i + 2] = x[2];\n values[9 * i + 3] = x[3];\n values[9 * i + 4] = x[4];\n values[9 * i + 5] = x[5];\n values[9 * i + 6] = x[6];\n values[9 * i + 7] = x[7];\n values[9 * i + 8] = x[8];\n values[9 * i + 9] = x[9];\n },\n MAT4: (x, values, i) => {\n values[16 * i + 0] = x[0];\n values[16 * i + 1] = x[1];\n values[16 * i + 2] = x[2];\n values[16 * i + 3] = x[3];\n values[16 * i + 4] = x[4];\n values[16 * i + 5] = x[5];\n values[16 * i + 6] = x[6];\n values[16 * i + 7] = x[7];\n values[16 * i + 8] = x[8];\n values[16 * i + 9] = x[9];\n values[16 * i + 10] = x[10];\n values[16 * i + 11] = x[11];\n values[16 * i + 12] = x[12];\n values[16 * i + 13] = x[13];\n values[16 * i + 14] = x[14];\n values[16 * i + 15] = x[15];\n }\n};\n\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n const {componentType} = tile3DAccessor;\n assert(tile3DAccessor.componentType);\n const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n const unpacker = UNPACKER[tile3DAccessor.type];\n const packer = PACKER[tile3DAccessor.type];\n\n byteOffset += tile3DAccessor.byteOffset;\n const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n\n return {\n values,\n type,\n size,\n unpacker,\n packer\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tile-3d-accessor-utils.js","names":["_math","require","_loaderUtils","COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","assert","type","GLType","fromName","size","unpacker","packer","createTypedArray"],"sources":["../../../../../src/lib/classes/helpers/tile-3d-accessor-utils.ts"],"sourcesContent":["import {GLType} from '@loaders.gl/math'; // '@math.gl/geometry';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst COMPONENTS_PER_ATTRIBUTE = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\n// TODO - could just return typed array views...\n// prettier-ignore\nconst UNPACKER = {\n SCALAR: (values, i) => values[i],\n VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n // TODO: check column major\n MAT2: (values, i) => [\n values[4 * i + 0], values[4 * i + 1],\n values[4 * i + 2], values[4 * i + 3]\n ],\n MAT3: (values, i) => [\n values[9 * i + 0], values[9 * i + 1], values[9 * i + 2],\n values[9 * i + 3], values[9 * i + 4], values[9 * i + 5],\n values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]\n ],\n MAT4: (values, i) => [\n values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3],\n values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7],\n values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11],\n values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]\n ]\n};\n\nconst PACKER = {\n SCALAR: (x, values, i) => {\n values[i] = x;\n },\n VEC2: (x, values, i) => {\n values[2 * i + 0] = x[0];\n values[2 * i + 1] = x[1];\n },\n VEC3: (x, values, i) => {\n values[3 * i + 0] = x[0];\n values[3 * i + 1] = x[1];\n values[3 * i + 2] = x[2];\n },\n VEC4: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n // TODO: check column major correctness\n MAT2: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n MAT3: (x, values, i) => {\n values[9 * i + 0] = x[0];\n values[9 * i + 1] = x[1];\n values[9 * i + 2] = x[2];\n values[9 * i + 3] = x[3];\n values[9 * i + 4] = x[4];\n values[9 * i + 5] = x[5];\n values[9 * i + 6] = x[6];\n values[9 * i + 7] = x[7];\n values[9 * i + 8] = x[8];\n values[9 * i + 9] = x[9];\n },\n MAT4: (x, values, i) => {\n values[16 * i + 0] = x[0];\n values[16 * i + 1] = x[1];\n values[16 * i + 2] = x[2];\n values[16 * i + 3] = x[3];\n values[16 * i + 4] = x[4];\n values[16 * i + 5] = x[5];\n values[16 * i + 6] = x[6];\n values[16 * i + 7] = x[7];\n values[16 * i + 8] = x[8];\n values[16 * i + 9] = x[9];\n values[16 * i + 10] = x[10];\n values[16 * i + 11] = x[11];\n values[16 * i + 12] = x[12];\n values[16 * i + 13] = x[13];\n values[16 * i + 14] = x[14];\n values[16 * i + 15] = x[15];\n }\n};\n\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n const {componentType} = tile3DAccessor;\n assert(tile3DAccessor.componentType);\n const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n const unpacker = UNPACKER[tile3DAccessor.type];\n const packer = PACKER[tile3DAccessor.type];\n\n byteOffset += tile3DAccessor.byteOffset;\n const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n\n return {\n values,\n type,\n size,\n unpacker,\n packer\n };\n}\n"],"mappings":"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"}
@@ -5,15 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.initializeHierarchy = initializeHierarchy;
7
7
  exports.traverseHierarchy = traverseHierarchy;
8
- var defined = function defined(x) {
9
- return x !== undefined;
10
- };
8
+ const defined = x => x !== undefined;
11
9
  function initializeHierarchy(batchTable, jsonHeader, binaryBody) {
12
10
  if (!jsonHeader) {
13
11
  return null;
14
12
  }
15
- var hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');
16
- var legacyHierarchy = jsonHeader.HIERARCHY;
13
+ let hierarchy = batchTable.getExtension('3DTILES_batch_table_hierarchy');
14
+ const legacyHierarchy = jsonHeader.HIERARCHY;
17
15
  if (legacyHierarchy) {
18
16
  console.warn('3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.');
19
17
  jsonHeader.extensions = jsonHeader.extensions || {};
@@ -26,22 +24,22 @@ function initializeHierarchy(batchTable, jsonHeader, binaryBody) {
26
24
  return initializeHierarchyValues(hierarchy, binaryBody);
27
25
  }
28
26
  function initializeHierarchyValues(hierarchyJson, binaryBody) {
29
- var i;
30
- var classId;
31
- var binaryAccessor;
32
- var instancesLength = hierarchyJson.instancesLength;
33
- var classes = hierarchyJson.classes;
34
- var classIds = hierarchyJson.classIds;
35
- var parentCounts = hierarchyJson.parentCounts;
36
- var parentIds = hierarchyJson.parentIds;
37
- var parentIdsLength = instancesLength;
27
+ let i;
28
+ let classId;
29
+ let binaryAccessor;
30
+ const instancesLength = hierarchyJson.instancesLength;
31
+ const classes = hierarchyJson.classes;
32
+ let classIds = hierarchyJson.classIds;
33
+ let parentCounts = hierarchyJson.parentCounts;
34
+ let parentIds = hierarchyJson.parentIds;
35
+ let parentIdsLength = instancesLength;
38
36
  if (defined(classIds.byteOffset)) {
39
37
  classIds.componentType = defaultValue(classIds.componentType, GL.UNSIGNED_SHORT);
40
38
  classIds.type = AttributeType.SCALAR;
41
39
  binaryAccessor = getBinaryAccessor(classIds);
42
40
  classIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + classIds.byteOffset, instancesLength);
43
41
  }
44
- var parentIndexes;
42
+ let parentIndexes;
45
43
  if (defined(parentCounts)) {
46
44
  if (defined(parentCounts.byteOffset)) {
47
45
  parentCounts.componentType = defaultValue(parentCounts.componentType, GL.UNSIGNED_SHORT);
@@ -62,27 +60,27 @@ function initializeHierarchyValues(hierarchyJson, binaryBody) {
62
60
  binaryAccessor = getBinaryAccessor(parentIds);
63
61
  parentIds = binaryAccessor.createArrayBufferView(binaryBody.buffer, binaryBody.byteOffset + parentIds.byteOffset, parentIdsLength);
64
62
  }
65
- var classesLength = classes.length;
63
+ const classesLength = classes.length;
66
64
  for (i = 0; i < classesLength; ++i) {
67
- var classInstancesLength = classes[i].length;
68
- var properties = classes[i].instances;
69
- var binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);
65
+ const classInstancesLength = classes[i].length;
66
+ const properties = classes[i].instances;
67
+ const binaryProperties = getBinaryProperties(classInstancesLength, properties, binaryBody);
70
68
  classes[i].instances = combine(binaryProperties, properties);
71
69
  }
72
- var classCounts = new Array(classesLength).fill(0);
73
- var classIndexes = new Uint16Array(instancesLength);
70
+ const classCounts = new Array(classesLength).fill(0);
71
+ const classIndexes = new Uint16Array(instancesLength);
74
72
  for (i = 0; i < instancesLength; ++i) {
75
73
  classId = classIds[i];
76
74
  classIndexes[i] = classCounts[classId];
77
75
  ++classCounts[classId];
78
76
  }
79
- var hierarchy = {
80
- classes: classes,
81
- classIds: classIds,
82
- classIndexes: classIndexes,
83
- parentCounts: parentCounts,
84
- parentIndexes: parentIndexes,
85
- parentIds: parentIds
77
+ const hierarchy = {
78
+ classes,
79
+ classIds,
80
+ classIndexes,
81
+ parentCounts,
82
+ parentIndexes,
83
+ parentIds
86
84
  };
87
85
  validateHierarchy(hierarchy);
88
86
  return hierarchy;
@@ -91,8 +89,8 @@ function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {
91
89
  if (!hierarchy) {
92
90
  return;
93
91
  }
94
- var parentCounts = hierarchy.parentCounts;
95
- var parentIds = hierarchy.parentIds;
92
+ const parentCounts = hierarchy.parentCounts;
93
+ const parentIds = hierarchy.parentIds;
96
94
  if (parentIds) {
97
95
  return endConditionCallback(hierarchy, instanceIndex);
98
96
  }
@@ -102,15 +100,15 @@ function traverseHierarchy(hierarchy, instanceIndex, endConditionCallback) {
102
100
  return traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback);
103
101
  }
104
102
  function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endConditionCallback) {
105
- var classIds = hierarchy.classIds;
106
- var parentCounts = hierarchy.parentCounts;
107
- var parentIds = hierarchy.parentIds;
108
- var parentIndexes = hierarchy.parentIndexes;
109
- var instancesLength = classIds.length;
110
- var visited = scratchVisited;
103
+ const classIds = hierarchy.classIds;
104
+ const parentCounts = hierarchy.parentCounts;
105
+ const parentIds = hierarchy.parentIds;
106
+ const parentIndexes = hierarchy.parentIndexes;
107
+ const instancesLength = classIds.length;
108
+ const visited = scratchVisited;
111
109
  visited.length = Math.max(visited.length, instancesLength);
112
- var visitedMarker = ++marker;
113
- var stack = scratchStack;
110
+ const visitedMarker = ++marker;
111
+ const stack = scratchStack;
114
112
  stack.length = 0;
115
113
  stack.push(instanceIndex);
116
114
  while (stack.length > 0) {
@@ -119,14 +117,14 @@ function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endCondition
119
117
  continue;
120
118
  }
121
119
  visited[instanceIndex] = visitedMarker;
122
- var result = endConditionCallback(hierarchy, instanceIndex);
120
+ const result = endConditionCallback(hierarchy, instanceIndex);
123
121
  if (defined(result)) {
124
122
  return result;
125
123
  }
126
- var parentCount = parentCounts[instanceIndex];
127
- var parentIndex = parentIndexes[instanceIndex];
128
- for (var i = 0; i < parentCount; ++i) {
129
- var parentId = parentIds[parentIndex + i];
124
+ const parentCount = parentCounts[instanceIndex];
125
+ const parentIndex = parentIndexes[instanceIndex];
126
+ for (let i = 0; i < parentCount; ++i) {
127
+ const parentId = parentIds[parentIndex + i];
130
128
  if (parentId !== instanceIndex) {
131
129
  stack.push(parentId);
132
130
  }
@@ -135,42 +133,42 @@ function traverseHierarchyMultipleParents(hierarchy, instanceIndex, endCondition
135
133
  return null;
136
134
  }
137
135
  function traverseHierarchySingleParent(hierarchy, instanceIndex, endConditionCallback) {
138
- var hasParent = true;
136
+ let hasParent = true;
139
137
  while (hasParent) {
140
- var result = endConditionCallback(hierarchy, instanceIndex);
138
+ const result = endConditionCallback(hierarchy, instanceIndex);
141
139
  if (defined(result)) {
142
140
  return result;
143
141
  }
144
- var parentId = hierarchy.parentIds[instanceIndex];
142
+ const parentId = hierarchy.parentIds[instanceIndex];
145
143
  hasParent = parentId !== instanceIndex;
146
144
  instanceIndex = parentId;
147
145
  }
148
146
  throw new Error('traverseHierarchySingleParent');
149
147
  }
150
148
  function validateHierarchy(hierarchy) {
151
- var scratchValidateStack = [];
152
- var classIds = hierarchy.classIds;
153
- var instancesLength = classIds.length;
154
- for (var i = 0; i < instancesLength; ++i) {
149
+ const scratchValidateStack = [];
150
+ const classIds = hierarchy.classIds;
151
+ const instancesLength = classIds.length;
152
+ for (let i = 0; i < instancesLength; ++i) {
155
153
  validateInstance(hierarchy, i, stack);
156
154
  }
157
155
  }
158
156
  function validateInstance(hierarchy, instanceIndex, stack) {
159
- var parentCounts = hierarchy.parentCounts;
160
- var parentIds = hierarchy.parentIds;
161
- var parentIndexes = hierarchy.parentIndexes;
162
- var classIds = hierarchy.classIds;
163
- var instancesLength = classIds.length;
157
+ const parentCounts = hierarchy.parentCounts;
158
+ const parentIds = hierarchy.parentIds;
159
+ const parentIndexes = hierarchy.parentIndexes;
160
+ const classIds = hierarchy.classIds;
161
+ const instancesLength = classIds.length;
164
162
  if (!defined(parentIds)) {
165
163
  return;
166
164
  }
167
165
  assert(instanceIndex < instancesLength, "Parent index ".concat(instanceIndex, " exceeds the total number of instances: ").concat(instancesLength));
168
166
  assert(stack.indexOf(instanceIndex) === -1, 'Circular dependency detected in the batch table hierarchy.');
169
167
  stack.push(instanceIndex);
170
- var parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
171
- var parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;
172
- for (var i = 0; i < parentCount; ++i) {
173
- var parentId = parentIds[parentIndex + i];
168
+ const parentCount = defined(parentCounts) ? parentCounts[instanceIndex] : 1;
169
+ const parentIndex = defined(parentCounts) ? parentIndexes[instanceIndex] : instanceIndex;
170
+ for (let i = 0; i < parentCount; ++i) {
171
+ const parentId = parentIds[parentIndex + i];
174
172
  if (parentId !== instanceIndex) {
175
173
  validateInstance(hierarchy, parentId, stack);
176
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tile-3d-batch-table-hierarchy.js","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","concat","indexOf"],"sources":["../../../../src/lib/classes/tile-3d-batch-table-hierarchy.ts"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"tile-3d-batch-table-hierarchy.js","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","concat","indexOf"],"sources":["../../../../src/lib/classes/tile-3d-batch-table-hierarchy.ts"],"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"],"mappings":"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"}