@loaders.gl/3d-tiles 3.3.0-alpha.5 → 3.3.0-alpha.6

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 (145) hide show
  1. package/dist/dist.min.js +924 -1372
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/cesium-ion-loader.js +7 -26
  5. package/dist/es5/cesium-ion-loader.js.map +1 -1
  6. package/dist/es5/index.js +14 -23
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
  9. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  10. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
  11. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  12. package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
  13. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
  15. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  16. package/dist/es5/lib/constants.js +3 -1
  17. package/dist/es5/lib/constants.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
  19. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  20. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
  21. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
  23. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
  25. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  26. package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
  27. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  28. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
  29. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  30. package/dist/es5/lib/ion/ion.js +5 -46
  31. package/dist/es5/lib/ion/ion.js.map +1 -1
  32. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
  33. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  34. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +17 -51
  39. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  40. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
  41. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  42. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -38
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  48. package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
  49. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  50. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
  51. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  52. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
  53. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
  55. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  56. package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -70
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  58. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  60. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  62. package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
  63. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  64. package/dist/es5/lib/utils/version.js +1 -1
  65. package/dist/es5/lib/utils/version.js.map +1 -1
  66. package/dist/es5/tile-3d-subtree-loader.js +0 -4
  67. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  68. package/dist/es5/tile-3d-writer.js +0 -6
  69. package/dist/es5/tile-3d-writer.js.map +1 -1
  70. package/dist/es5/tiles-3d-loader.js +0 -29
  71. package/dist/es5/tiles-3d-loader.js.map +1 -1
  72. package/dist/es5/types.js.map +1 -1
  73. package/dist/esm/bundle.js +1 -1
  74. package/dist/esm/bundle.js.map +1 -1
  75. package/dist/esm/cesium-ion-loader.js +9 -7
  76. package/dist/esm/cesium-ion-loader.js.map +1 -1
  77. package/dist/esm/index.js +4 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
  80. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  81. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
  82. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  83. package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
  84. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
  85. package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
  86. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
  87. package/dist/esm/lib/constants.js +3 -0
  88. package/dist/esm/lib/constants.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
  90. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
  92. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  93. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
  94. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  95. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
  96. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  97. package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
  98. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
  99. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
  100. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  101. package/dist/esm/lib/ion/ion.js +10 -8
  102. package/dist/esm/lib/ion/ion.js.map +1 -1
  103. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
  104. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  105. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
  106. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  107. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
  108. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  109. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -16
  110. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  111. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
  112. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  113. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
  114. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  115. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -13
  116. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  117. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
  118. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  119. package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
  120. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
  121. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
  122. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  123. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
  124. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  125. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  126. package/dist/esm/lib/parsers/parse-3d-tile-header.js +3 -26
  127. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  128. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
  129. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  130. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
  131. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  132. package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
  133. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  134. package/dist/esm/lib/utils/version.js +2 -1
  135. package/dist/esm/lib/utils/version.js.map +1 -1
  136. package/dist/esm/tile-3d-subtree-loader.js +1 -0
  137. package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
  138. package/dist/esm/tile-3d-writer.js +1 -1
  139. package/dist/esm/tile-3d-writer.js.map +1 -1
  140. package/dist/esm/tiles-3d-loader.js +1 -8
  141. package/dist/esm/tiles-3d-loader.js.map +1 -1
  142. package/dist/esm/types.js.map +1 -1
  143. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  144. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  145. package/package.json +7 -7
@@ -1,51 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports.parsePointCloud3DTile = parsePointCloud3DTile;
9
7
  exports.loadDraco = loadDraco;
10
-
8
+ exports.parsePointCloud3DTile = parsePointCloud3DTile;
11
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
-
17
12
  var _draco = require("@loaders.gl/draco");
18
-
19
13
  var _math = require("@loaders.gl/math");
20
-
21
14
  var _core = require("@math.gl/core");
22
-
23
15
  var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
24
-
25
16
  var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
26
-
27
17
  var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
28
-
29
18
  var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
30
-
31
19
  var _normalize3dTileColors = require("./helpers/normalize-3d-tile-colors");
32
-
33
20
  var _normalize3dTileNormals = require("./helpers/normalize-3d-tile-normals");
34
-
35
21
  var _normalize3dTilePositions = require("./helpers/normalize-3d-tile-positions");
36
-
37
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
38
-
39
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
40
-
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
24
  function parsePointCloud3DTile(_x, _x2, _x3, _x4, _x5) {
42
25
  return _parsePointCloud3DTile.apply(this, arguments);
43
26
  }
44
-
45
27
  function _parsePointCloud3DTile() {
46
28
  _parsePointCloud3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, byteOffset, options, context) {
47
29
  var _parsePointCloudTable, featureTable, batchTable;
48
-
49
30
  return _regenerator.default.wrap(function _callee$(_context) {
50
31
  while (1) {
51
32
  switch (_context.prev = _context.next) {
@@ -57,13 +38,11 @@ function _parsePointCloud3DTile() {
57
38
  _parsePointCloudTable = parsePointCloudTables(tile), featureTable = _parsePointCloudTable.featureTable, batchTable = _parsePointCloudTable.batchTable;
58
39
  _context.next = 7;
59
40
  return parseDraco(tile, featureTable, batchTable, options, context);
60
-
61
41
  case 7:
62
42
  parsePositions(tile, featureTable, options);
63
43
  parseColors(tile, featureTable, batchTable);
64
44
  parseNormals(tile, featureTable);
65
45
  return _context.abrupt("return", byteOffset);
66
-
67
46
  case 11:
68
47
  case "end":
69
48
  return _context.stop();
@@ -73,7 +52,6 @@ function _parsePointCloud3DTile() {
73
52
  }));
74
53
  return _parsePointCloud3DTile.apply(this, arguments);
75
54
  }
76
-
77
55
  function initializeTile(tile) {
78
56
  tile.attributes = {
79
57
  positions: null,
@@ -86,15 +64,12 @@ function initializeTile(tile) {
86
64
  tile.isRGB565 = false;
87
65
  tile.isOctEncoded16P = false;
88
66
  }
89
-
90
67
  function parsePointCloudTables(tile) {
91
68
  var featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
92
69
  var pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');
93
-
94
70
  if (!Number.isFinite(pointsLength)) {
95
71
  throw new Error('POINTS_LENGTH must be defined');
96
72
  }
97
-
98
73
  featureTable.featuresLength = pointsLength;
99
74
  tile.featuresLength = pointsLength;
100
75
  tile.pointsLength = pointsLength;
@@ -106,7 +81,6 @@ function parsePointCloudTables(tile) {
106
81
  batchTable: batchTable
107
82
  };
108
83
  }
109
-
110
84
  function parsePositions(tile, featureTable, options) {
111
85
  if (!tile.attributes.positions) {
112
86
  if (featureTable.hasProperty('POSITION')) {
@@ -116,30 +90,23 @@ function parsePositions(tile, featureTable, options) {
116
90
  tile.isQuantized = true;
117
91
  tile.quantizedRange = (1 << 16) - 1;
118
92
  tile.quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3);
119
-
120
93
  if (!tile.quantizedVolumeScale) {
121
94
  throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
122
95
  }
123
-
124
96
  tile.quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3);
125
-
126
97
  if (!tile.quantizedVolumeOffset) {
127
98
  throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
128
99
  }
129
-
130
100
  tile.attributes.positions = (0, _normalize3dTilePositions.normalize3DTilePositionAttribute)(tile, positions, options);
131
101
  }
132
102
  }
133
-
134
103
  if (!tile.attributes.positions) {
135
104
  throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');
136
105
  }
137
106
  }
138
-
139
107
  function parseColors(tile, featureTable, batchTable) {
140
108
  if (!tile.attributes.colors) {
141
109
  var colors = null;
142
-
143
110
  if (featureTable.hasProperty('RGBA')) {
144
111
  colors = featureTable.getPropertyArray('RGBA', _math.GL.UNSIGNED_BYTE, 4);
145
112
  tile.isTranslucent = true;
@@ -149,56 +116,44 @@ function parseColors(tile, featureTable, batchTable) {
149
116
  colors = featureTable.getPropertyArray('RGB565', _math.GL.UNSIGNED_SHORT, 1);
150
117
  tile.isRGB565 = true;
151
118
  }
152
-
153
119
  tile.attributes.colors = (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, colors, batchTable);
154
120
  }
155
-
156
121
  if (featureTable.hasProperty('CONSTANT_RGBA')) {
157
122
  tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', _math.GL.UNSIGNED_BYTE, 4);
158
123
  }
159
124
  }
160
-
161
125
  function parseNormals(tile, featureTable) {
162
126
  if (!tile.attributes.normals) {
163
127
  var normals = null;
164
-
165
128
  if (featureTable.hasProperty('NORMAL')) {
166
129
  normals = featureTable.getPropertyArray('NORMAL', _math.GL.FLOAT, 3);
167
130
  } else if (featureTable.hasProperty('NORMAL_OCT16P')) {
168
131
  normals = featureTable.getPropertyArray('NORMAL_OCT16P', _math.GL.UNSIGNED_BYTE, 2);
169
132
  tile.isOctEncoded16P = true;
170
133
  }
171
-
172
134
  tile.attributes.normals = (0, _normalize3dTileNormals.normalize3DTileNormalAttribute)(tile, normals);
173
135
  }
174
136
  }
175
-
176
137
  function parseBatchIds(tile, featureTable) {
177
138
  var batchTable = null;
178
-
179
139
  if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {
180
140
  tile.batchIds = featureTable.getPropertyArray('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1);
181
-
182
141
  if (tile.batchIds) {
183
142
  var batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');
184
-
185
143
  if (!batchFeatureLength) {
186
144
  throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');
187
145
  }
188
-
189
146
  var batchTableJson = tile.batchTableJson,
190
- batchTableBinary = tile.batchTableBinary;
147
+ batchTableBinary = tile.batchTableBinary;
191
148
  batchTable = new _tile3dBatchTable.default(batchTableJson, batchTableBinary, batchFeatureLength);
192
149
  }
193
150
  }
194
-
195
151
  return batchTable;
196
152
  }
197
153
 
198
154
  function parseDraco(_x6, _x7, _x8, _x9, _x10) {
199
155
  return _parseDraco.apply(this, arguments);
200
156
  }
201
-
202
157
  function _parseDraco() {
203
158
  _parseDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, featureTable, batchTable, options, context) {
204
159
  var dracoBuffer, dracoFeatureTableProperties, dracoBatchTableProperties, batchTableDraco, featureTableDraco, dracoByteOffset, dracoByteLength, dracoData;
@@ -207,29 +162,22 @@ function _parseDraco() {
207
162
  switch (_context2.prev = _context2.next) {
208
163
  case 0:
209
164
  batchTableDraco = tile.batchTableJson && tile.batchTableJson.extensions && tile.batchTableJson.extensions['3DTILES_draco_point_compression'];
210
-
211
165
  if (batchTableDraco) {
212
166
  dracoBatchTableProperties = batchTableDraco.properties;
213
167
  }
214
-
215
168
  featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');
216
-
217
169
  if (!featureTableDraco) {
218
170
  _context2.next = 15;
219
171
  break;
220
172
  }
221
-
222
173
  dracoFeatureTableProperties = featureTableDraco.properties;
223
174
  dracoByteOffset = featureTableDraco.byteOffset;
224
175
  dracoByteLength = featureTableDraco.byteLength;
225
-
226
176
  if (!(!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength)) {
227
177
  _context2.next = 9;
228
178
  break;
229
179
  }
230
-
231
180
  throw new Error('Draco properties, byteOffset, and byteLength must be defined');
232
-
233
181
  case 9:
234
182
  dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);
235
183
  tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);
@@ -237,15 +185,12 @@ function _parseDraco() {
237
185
  tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);
238
186
  tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);
239
187
  tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);
240
-
241
188
  case 15:
242
189
  if (dracoBuffer) {
243
190
  _context2.next = 17;
244
191
  break;
245
192
  }
246
-
247
193
  return _context2.abrupt("return", true);
248
-
249
194
  case 17:
250
195
  dracoData = {
251
196
  buffer: dracoBuffer,
@@ -256,10 +201,8 @@ function _parseDraco() {
256
201
  };
257
202
  _context2.next = 20;
258
203
  return loadDraco(tile, dracoData, options, context);
259
-
260
204
  case 20:
261
205
  return _context2.abrupt("return", _context2.sent);
262
-
263
206
  case 21:
264
207
  case "end":
265
208
  return _context2.stop();
@@ -269,15 +212,12 @@ function _parseDraco() {
269
212
  }));
270
213
  return _parseDraco.apply(this, arguments);
271
214
  }
272
-
273
215
  function loadDraco(_x11, _x12, _x13, _x14) {
274
216
  return _loadDraco.apply(this, arguments);
275
217
  }
276
-
277
218
  function _loadDraco() {
278
219
  _loadDraco = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, dracoData, options, context) {
279
220
  var parse, dracoOptions, data, decodedPositions, decodedColors, decodedNormals, decodedBatchIds, isQuantizedDraco, isOctEncodedDraco, quantization, range, batchTableAttributes, _i, _Object$keys, attributeName;
280
-
281
221
  return _regenerator.default.wrap(function _callee3$(_context3) {
282
222
  while (1) {
283
223
  switch (_context3.prev = _context3.next) {
@@ -291,7 +231,6 @@ function _loadDraco() {
291
231
  delete dracoOptions['3d-tiles'];
292
232
  _context3.next = 5;
293
233
  return parse(dracoData.buffer, _draco.DracoLoader, dracoOptions);
294
-
295
234
  case 5:
296
235
  data = _context3.sent;
297
236
  decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;
@@ -300,7 +239,6 @@ function _loadDraco() {
300
239
  decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;
301
240
  isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;
302
241
  isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;
303
-
304
242
  if (isQuantizedDraco) {
305
243
  quantization = data.POSITION.data.quantization;
306
244
  range = quantization.range;
@@ -309,31 +247,26 @@ function _loadDraco() {
309
247
  tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;
310
248
  tile.isQuantizedDraco = true;
311
249
  }
312
-
313
250
  if (isOctEncodedDraco) {
314
251
  tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;
315
252
  tile.isOctEncodedDraco = true;
316
253
  }
317
254
 
318
255
  batchTableAttributes = {};
319
-
320
256
  if (dracoData.batchTableProperties) {
321
257
  for (_i = 0, _Object$keys = Object.keys(dracoData.batchTableProperties); _i < _Object$keys.length; _i++) {
322
258
  attributeName = _Object$keys[_i];
323
-
324
259
  if (data.attributes[attributeName] && data.attributes[attributeName].value) {
325
260
  batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;
326
261
  }
327
262
  }
328
263
  }
329
-
330
264
  tile.attributes = _objectSpread({
331
265
  positions: decodedPositions,
332
266
  colors: (0, _normalize3dTileColors.normalize3DTileColorAttribute)(tile, decodedColors, undefined),
333
267
  normals: decodedNormals,
334
268
  batchIds: decodedBatchIds
335
269
  }, batchTableAttributes);
336
-
337
270
  case 17:
338
271
  case "end":
339
272
  return _context3.stop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.ts"],"names":["parsePointCloud3DTile","tile","arrayBuffer","byteOffset","options","context","initializeTile","parsePointCloudTables","featureTable","batchTable","parseDraco","parsePositions","parseColors","parseNormals","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","UNSIGNED_BYTE","constantRGBA","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","batchTableDraco","extensions","dracoBatchTableProperties","properties","featureTableDraco","getExtension","dracoFeatureTableProperties","dracoByteOffset","dracoByteLength","byteLength","dracoBuffer","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","dracoData","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","parse","dracoOptions","draco","extraAttributes","DracoLoader","data","decodedPositions","value","decodedColors","COLOR_0","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","range","Vector3","minValues","quantizationBits","octEncodedRange","batchTableAttributes","Object","keys","attributeName","toLowerCase","undefined"],"mappings":";;;;;;;;;;;;;;;;AAGA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;SAEsBA,qB;;;;;qFAAf,iBAAqCC,IAArC,EAA2CC,WAA3C,EAAwDC,UAAxD,EAAoEC,OAApE,EAA6EC,OAA7E;AAAA;;AAAA;AAAA;AAAA;AAAA;AACLF,YAAAA,UAAU,GAAG,8CAAsBF,IAAtB,EAA4BC,WAA5B,EAAyCC,UAAzC,CAAb;AACAA,YAAAA,UAAU,GAAG,oDAA4BF,IAA5B,EAAkCC,WAAlC,EAA+CC,UAA/C,CAAb;AACAA,YAAAA,UAAU,GAAG,8CAAsBF,IAAtB,EAA4BC,WAA5B,EAAyCC,UAAzC,EAAqDC,OAArD,CAAb;AACAE,YAAAA,cAAc,CAACL,IAAD,CAAd;AAJK,oCAM8BM,qBAAqB,CAACN,IAAD,CANnD,EAMEO,YANF,yBAMEA,YANF,EAMgBC,UANhB,yBAMgBA,UANhB;AAAA;AAAA,mBAQCC,UAAU,CAACT,IAAD,EAAOO,YAAP,EAAqBC,UAArB,EAAiCL,OAAjC,EAA0CC,OAA1C,CARX;;AAAA;AAULM,YAAAA,cAAc,CAACV,IAAD,EAAOO,YAAP,EAAqBJ,OAArB,CAAd;AACAQ,YAAAA,WAAW,CAACX,IAAD,EAAOO,YAAP,EAAqBC,UAArB,CAAX;AACAI,YAAAA,YAAY,CAACZ,IAAD,EAAOO,YAAP,CAAZ;AAZK,6CAcEL,UAdF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAiBP,SAASG,cAAT,CAAwBL,IAAxB,EAA8B;AAE5BA,EAAAA,IAAI,CAACa,UAAL,GAAkB;AAChBC,IAAAA,SAAS,EAAE,IADK;AAEhBC,IAAAA,MAAM,EAAE,IAFQ;AAGhBC,IAAAA,OAAO,EAAE,IAHO;AAIhBC,IAAAA,QAAQ,EAAE;AAJM,GAAlB;AAMAjB,EAAAA,IAAI,CAACkB,WAAL,GAAmB,KAAnB;AACAlB,EAAAA,IAAI,CAACmB,aAAL,GAAqB,KAArB;AACAnB,EAAAA,IAAI,CAACoB,QAAL,GAAgB,KAAhB;AACApB,EAAAA,IAAI,CAACqB,eAAL,GAAuB,KAAvB;AACD;;AAED,SAASf,qBAAT,CAA+BN,IAA/B,EAAqC;AACnC,MAAMO,YAAY,GAAG,IAAIe,2BAAJ,CAAuBtB,IAAI,CAACuB,gBAA5B,EAA8CvB,IAAI,CAACwB,kBAAnD,CAArB;AAEA,MAAMC,YAAY,GAAGlB,YAAY,CAACmB,iBAAb,CAA+B,eAA/B,CAArB;;AACA,MAAI,CAACC,MAAM,CAACC,QAAP,CAAgBH,YAAhB,CAAL,EAAoC;AAClC,UAAM,IAAII,KAAJ,CAAU,+BAAV,CAAN;AACD;;AACDtB,EAAAA,YAAY,CAACuB,cAAb,GAA8BL,YAA9B;AAEAzB,EAAAA,IAAI,CAAC8B,cAAL,GAAsBL,YAAtB;AACAzB,EAAAA,IAAI,CAACyB,YAAL,GAAoBA,YAApB;AACAzB,EAAAA,IAAI,CAAC+B,UAAL,GAAkBN,YAAlB;AAEAzB,EAAAA,IAAI,CAACgC,SAAL,GAAiBzB,YAAY,CAACmB,iBAAb,CAA+B,YAA/B,EAA6CO,SAAGC,KAAhD,EAAuD,CAAvD,CAAjB;AAEA,MAAM1B,UAAU,GAAG2B,aAAa,CAACnC,IAAD,EAAOO,YAAP,CAAhC;AAEA,SAAO;AAACA,IAAAA,YAAY,EAAZA,YAAD;AAAeC,IAAAA,UAAU,EAAVA;AAAf,GAAP;AACD;;AAED,SAASE,cAAT,CAAwBV,IAAxB,EAA8BO,YAA9B,EAA4CJ,OAA5C,EAAqD;AACnD,MAAI,CAACH,IAAI,CAACa,UAAL,CAAgBC,SAArB,EAAgC;AAC9B,QAAIP,YAAY,CAAC6B,WAAb,CAAyB,UAAzB,CAAJ,EAA0C;AACxCpC,MAAAA,IAAI,CAACa,UAAL,CAAgBC,SAAhB,GAA4BP,YAAY,CAAC8B,gBAAb,CAA8B,UAA9B,EAA0CJ,SAAGC,KAA7C,EAAoD,CAApD,CAA5B;AACD,KAFD,MAEO,IAAI3B,YAAY,CAAC6B,WAAb,CAAyB,oBAAzB,CAAJ,EAAoD;AACzD,UAAMtB,SAAS,GAAGP,YAAY,CAAC8B,gBAAb,CAA8B,oBAA9B,EAAoDJ,SAAGK,cAAvD,EAAuE,CAAvE,CAAlB;AAEAtC,MAAAA,IAAI,CAACkB,WAAL,GAAmB,IAAnB;AACAlB,MAAAA,IAAI,CAACuC,cAAL,GAAsB,CAAC,KAAK,EAAN,IAAY,CAAlC;AAEAvC,MAAAA,IAAI,CAACwC,oBAAL,GAA4BjC,YAAY,CAACmB,iBAAb,CAC1B,wBAD0B,EAE1BO,SAAGC,KAFuB,EAG1B,CAH0B,CAA5B;;AAKA,UAAI,CAAClC,IAAI,CAACwC,oBAAV,EAAgC;AAC9B,cAAM,IAAIX,KAAJ,CAAU,iEAAV,CAAN;AACD;;AAED7B,MAAAA,IAAI,CAACyC,qBAAL,GAA6BlC,YAAY,CAACmB,iBAAb,CAC3B,yBAD2B,EAE3BO,SAAGC,KAFwB,EAG3B,CAH2B,CAA7B;;AAKA,UAAI,CAAClC,IAAI,CAACyC,qBAAV,EAAiC;AAC/B,cAAM,IAAIZ,KAAJ,CAAU,kEAAV,CAAN;AACD;;AAED7B,MAAAA,IAAI,CAACa,UAAL,CAAgBC,SAAhB,GAA4B,gEAAiCd,IAAjC,EAAuCc,SAAvC,EAAkDX,OAAlD,CAA5B;AACD;AACF;;AAED,MAAI,CAACH,IAAI,CAACa,UAAL,CAAgBC,SAArB,EAAgC;AAC9B,UAAM,IAAIe,KAAJ,CAAU,wDAAV,CAAN;AACD;AACF;;AAED,SAASlB,WAAT,CAAqBX,IAArB,EAA2BO,YAA3B,EAAyCC,UAAzC,EAAqD;AACnD,MAAI,CAACR,IAAI,CAACa,UAAL,CAAgBE,MAArB,EAA6B;AAC3B,QAAIA,MAAM,GAAG,IAAb;;AACA,QAAIR,YAAY,CAAC6B,WAAb,CAAyB,MAAzB,CAAJ,EAAsC;AACpCrB,MAAAA,MAAM,GAAGR,YAAY,CAAC8B,gBAAb,CAA8B,MAA9B,EAAsCJ,SAAGS,aAAzC,EAAwD,CAAxD,CAAT;AACA1C,MAAAA,IAAI,CAACmB,aAAL,GAAqB,IAArB;AACD,KAHD,MAGO,IAAIZ,YAAY,CAAC6B,WAAb,CAAyB,KAAzB,CAAJ,EAAqC;AAC1CrB,MAAAA,MAAM,GAAGR,YAAY,CAAC8B,gBAAb,CAA8B,KAA9B,EAAqCJ,SAAGS,aAAxC,EAAuD,CAAvD,CAAT;AACD,KAFM,MAEA,IAAInC,YAAY,CAAC6B,WAAb,CAAyB,QAAzB,CAAJ,EAAwC;AAC7CrB,MAAAA,MAAM,GAAGR,YAAY,CAAC8B,gBAAb,CAA8B,QAA9B,EAAwCJ,SAAGK,cAA3C,EAA2D,CAA3D,CAAT;AACAtC,MAAAA,IAAI,CAACoB,QAAL,GAAgB,IAAhB;AACD;;AAEDpB,IAAAA,IAAI,CAACa,UAAL,CAAgBE,MAAhB,GAAyB,0DAA8Bf,IAA9B,EAAoCe,MAApC,EAA4CP,UAA5C,CAAzB;AACD;;AAED,MAAID,YAAY,CAAC6B,WAAb,CAAyB,eAAzB,CAAJ,EAA+C;AAC7CpC,IAAAA,IAAI,CAAC2C,YAAL,GAAoBpC,YAAY,CAACmB,iBAAb,CAA+B,eAA/B,EAAgDO,SAAGS,aAAnD,EAAkE,CAAlE,CAApB;AACD;AACF;;AAED,SAAS9B,YAAT,CAAsBZ,IAAtB,EAA4BO,YAA5B,EAA0C;AACxC,MAAI,CAACP,IAAI,CAACa,UAAL,CAAgBG,OAArB,EAA8B;AAC5B,QAAIA,OAAO,GAAG,IAAd;;AACA,QAAIT,YAAY,CAAC6B,WAAb,CAAyB,QAAzB,CAAJ,EAAwC;AACtCpB,MAAAA,OAAO,GAAGT,YAAY,CAAC8B,gBAAb,CAA8B,QAA9B,EAAwCJ,SAAGC,KAA3C,EAAkD,CAAlD,CAAV;AACD,KAFD,MAEO,IAAI3B,YAAY,CAAC6B,WAAb,CAAyB,eAAzB,CAAJ,EAA+C;AACpDpB,MAAAA,OAAO,GAAGT,YAAY,CAAC8B,gBAAb,CAA8B,eAA9B,EAA+CJ,SAAGS,aAAlD,EAAiE,CAAjE,CAAV;AACA1C,MAAAA,IAAI,CAACqB,eAAL,GAAuB,IAAvB;AACD;;AAEDrB,IAAAA,IAAI,CAACa,UAAL,CAAgBG,OAAhB,GAA0B,4DAA+BhB,IAA/B,EAAqCgB,OAArC,CAA1B;AACD;AACF;;AAED,SAASmB,aAAT,CAAuBnC,IAAvB,EAA6BO,YAA7B,EAA2C;AACzC,MAAIC,UAAmC,GAAG,IAA1C;;AACA,MAAI,CAACR,IAAI,CAACiB,QAAN,IAAkBV,YAAY,CAAC6B,WAAb,CAAyB,UAAzB,CAAtB,EAA4D;AAC1DpC,IAAAA,IAAI,CAACiB,QAAL,GAAgBV,YAAY,CAAC8B,gBAAb,CAA8B,UAA9B,EAA0CJ,SAAGK,cAA7C,EAA6D,CAA7D,CAAhB;;AAEA,QAAItC,IAAI,CAACiB,QAAT,EAAmB;AACjB,UAAM2B,kBAAkB,GAAGrC,YAAY,CAACmB,iBAAb,CAA+B,cAA/B,CAA3B;;AACA,UAAI,CAACkB,kBAAL,EAAyB;AACvB,cAAM,IAAIf,KAAJ,CAAU,yEAAV,CAAN;AACD;;AACD,UAAOgB,cAAP,GAA2C7C,IAA3C,CAAO6C,cAAP;AAAA,UAAuBC,gBAAvB,GAA2C9C,IAA3C,CAAuB8C,gBAAvB;AACAtC,MAAAA,UAAU,GAAG,IAAIuC,yBAAJ,CAAqBF,cAArB,EAAqCC,gBAArC,EAAuDF,kBAAvD,CAAb;AACD;AACF;;AACD,SAAOpC,UAAP;AACD;;SAGcC,U;;;;;0EAAf,kBAA0BT,IAA1B,EAAgCO,YAAhC,EAA8CC,UAA9C,EAA0DL,OAA1D,EAAmEC,OAAnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAIQ4C,YAAAA,eAJR,GAKIhD,IAAI,CAAC6C,cAAL,IACA7C,IAAI,CAAC6C,cAAL,CAAoBI,UADpB,IAEAjD,IAAI,CAAC6C,cAAL,CAAoBI,UAApB,CAA+B,iCAA/B,CAPJ;;AAQE,gBAAID,eAAJ,EAAqB;AACnBE,cAAAA,yBAAyB,GAAGF,eAAe,CAACG,UAA5C;AACD;;AAEKC,YAAAA,iBAZR,GAY4B7C,YAAY,CAAC8C,YAAb,CAA0B,iCAA1B,CAZ5B;;AAAA,iBAaMD,iBAbN;AAAA;AAAA;AAAA;;AAcIE,YAAAA,2BAA2B,GAAGF,iBAAiB,CAACD,UAAhD;AACMI,YAAAA,eAfV,GAe4BH,iBAAiB,CAAClD,UAf9C;AAgBUsD,YAAAA,eAhBV,GAgB4BJ,iBAAiB,CAACK,UAhB9C;;AAAA,kBAiBQ,CAACH,2BAAD,IAAgC,CAAC3B,MAAM,CAACC,QAAP,CAAgB2B,eAAhB,CAAjC,IAAqE,CAACC,eAjB9E;AAAA;AAAA;AAAA;;AAAA,kBAkBY,IAAI3B,KAAJ,CAAU,8DAAV,CAlBZ;;AAAA;AAqBI6B,YAAAA,WAAW,GAAG1D,IAAI,CAACwB,kBAAL,CAAwBmC,KAAxB,CAA8BJ,eAA9B,EAA+CA,eAAe,GAAGC,eAAjE,CAAd;AAEAxD,YAAAA,IAAI,CAAC4D,YAAL,GAAoBjC,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACO,QAA5C,CAApB;AACA7D,YAAAA,IAAI,CAAC8D,SAAL,GACEnC,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACS,GAA5C,KACApC,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACU,IAA5C,CAFF;AAGAhE,YAAAA,IAAI,CAACiE,UAAL,GAAkBtC,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACY,MAA5C,CAAlB;AACAlE,YAAAA,IAAI,CAACmE,WAAL,GAAmBxC,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACc,QAA5C,CAAnB;AACApE,YAAAA,IAAI,CAACmB,aAAL,GAAqBQ,MAAM,CAACC,QAAP,CAAgB0B,2BAA2B,CAACU,IAA5C,CAArB;;AA7BJ;AAAA,gBAgCON,WAhCP;AAAA;AAAA;AAAA;;AAAA,8CAiCW,IAjCX;;AAAA;AAoCQW,YAAAA,SApCR,GAoCoB;AAChBC,cAAAA,MAAM,EAAEZ,WADQ;AAEhBP,cAAAA,UAAU,kCAAMG,2BAAN,GAAsCJ,yBAAtC,CAFM;AAGhBqB,cAAAA,sBAAsB,EAAEjB,2BAHR;AAIhBkB,cAAAA,oBAAoB,EAAEtB,yBAJN;AAKhBuB,cAAAA,kBAAkB,EAAE;AALJ,aApCpB;AAAA;AAAA,mBA4CeC,SAAS,CAAC1E,IAAD,EAAOqE,SAAP,EAAkBlE,OAAlB,EAA2BC,OAA3B,CA5CxB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAgDsBsE,S;;;;;yEAAf,kBAAyB1E,IAAzB,EAA+BqE,SAA/B,EAA0ClE,OAA1C,EAAmDC,OAAnD;AAAA;;AAAA;AAAA;AAAA;AAAA;AACEuE,YAAAA,KADF,GACWvE,OADX,CACEuE,KADF;AAECC,YAAAA,YAFD,mCAGAzE,OAHA;AAIH0E,cAAAA,KAAK,kCACA1E,OAAO,CAAC0E,KADR;AAEHC,gBAAAA,eAAe,EAAET,SAAS,CAACG,oBAAV,IAAkC;AAFhD;AAJF;AAWL,mBAAOI,YAAY,CAAC,UAAD,CAAnB;AAXK;AAAA,mBAacD,KAAK,CAACN,SAAS,CAACC,MAAX,EAAmBS,kBAAnB,EAAgCH,YAAhC,CAbnB;;AAAA;AAaCI,YAAAA,IAbD;AAeCC,YAAAA,gBAfD,GAeoBD,IAAI,CAACnE,UAAL,CAAgBgD,QAAhB,IAA4BmB,IAAI,CAACnE,UAAL,CAAgBgD,QAAhB,CAAyBqB,KAfzE;AAgBCC,YAAAA,aAhBD,GAgBiBH,IAAI,CAACnE,UAAL,CAAgBuE,OAAhB,IAA2BJ,IAAI,CAACnE,UAAL,CAAgBuE,OAAhB,CAAwBF,KAhBpE;AAiBCG,YAAAA,cAjBD,GAiBkBL,IAAI,CAACnE,UAAL,CAAgBqD,MAAhB,IAA0Bc,IAAI,CAACnE,UAAL,CAAgBqD,MAAhB,CAAuBgB,KAjBnE;AAkBCI,YAAAA,eAlBD,GAkBmBN,IAAI,CAACnE,UAAL,CAAgBuD,QAAhB,IAA4BY,IAAI,CAACnE,UAAL,CAAgBuD,QAAhB,CAAyBc,KAlBxE;AAmBCK,YAAAA,gBAnBD,GAmBoBN,gBAAgB,IAAID,IAAI,CAACnE,UAAL,CAAgBgD,QAAhB,CAAyBqB,KAAzB,CAA+BM,YAnBvE;AAoBCC,YAAAA,iBApBD,GAoBqBJ,cAAc,IAAIL,IAAI,CAACnE,UAAL,CAAgBqD,MAAhB,CAAuBgB,KAAvB,CAA6BM,YApBpE;;AAqBL,gBAAID,gBAAJ,EAAsB;AAGdC,cAAAA,YAHc,GAGCR,IAAI,CAACnB,QAAL,CAAcmB,IAAd,CAAmBQ,YAHpB;AAIdE,cAAAA,KAJc,GAINF,YAAY,CAACE,KAJP;AAKpB1F,cAAAA,IAAI,CAACwC,oBAAL,GAA4B,IAAImD,aAAJ,CAAYD,KAAZ,EAAmBA,KAAnB,EAA0BA,KAA1B,CAA5B;AACA1F,cAAAA,IAAI,CAACyC,qBAAL,GAA6B,IAAIkD,aAAJ,CAAYH,YAAY,CAACI,SAAzB,CAA7B;AACA5F,cAAAA,IAAI,CAACuC,cAAL,GAAsB,CAAC,KAAKiD,YAAY,CAACK,gBAAnB,IAAuC,GAA7D;AACA7F,cAAAA,IAAI,CAACuF,gBAAL,GAAwB,IAAxB;AACD;;AACD,gBAAIE,iBAAJ,EAAuB;AACrBzF,cAAAA,IAAI,CAAC8F,eAAL,GAAuB,CAAC,KAAKd,IAAI,CAACd,MAAL,CAAYc,IAAZ,CAAiBQ,YAAjB,CAA8BK,gBAApC,IAAwD,GAA/E;AACA7F,cAAAA,IAAI,CAACyF,iBAAL,GAAyB,IAAzB;AACD;;AAGKM,YAAAA,oBArCD,GAqCwB,EArCxB;;AAsCL,gBAAI1B,SAAS,CAACG,oBAAd,EAAoC;AAClC,0CAA4BwB,MAAM,CAACC,IAAP,CAAY5B,SAAS,CAACG,oBAAtB,CAA5B,kCAAyE;AAA9D0B,gBAAAA,aAA8D;;AACvE,oBAAIlB,IAAI,CAACnE,UAAL,CAAgBqF,aAAhB,KAAkClB,IAAI,CAACnE,UAAL,CAAgBqF,aAAhB,EAA+BhB,KAArE,EAA4E;AAC1Ea,kBAAAA,oBAAoB,CAACG,aAAa,CAACC,WAAd,EAAD,CAApB,GAAoDnB,IAAI,CAACnE,UAAL,CAAgBqF,aAAhB,EAA+BhB,KAAnF;AACD;AACF;AACF;;AAEDlF,YAAAA,IAAI,CAACa,UAAL;AACEC,cAAAA,SAAS,EAAEmE,gBADb;AAEElE,cAAAA,MAAM,EAAE,0DAA8Bf,IAA9B,EAAoCmF,aAApC,EAAmDiB,SAAnD,CAFV;AAGEpF,cAAAA,OAAO,EAAEqE,cAHX;AAIEpE,cAAAA,QAAQ,EAAEqE;AAJZ,eAKKS,oBALL;;AA9CK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\n\nexport async function parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile) {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile) {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(tile, featureTable, options) {\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(tile, featureTable, batchTable) {\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile, featureTable) {\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(tile, featureTable) {\n let batchTable: Tile3DBatchTable | null = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(tile, featureTable, batchTable, options, context) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(tile, dracoData, options, context) {\n const {parse} = context;\n const dracoOptions = {\n ...options,\n draco: {\n ...options.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n positions: decodedPositions,\n colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n normals: decodedNormals,\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"file":"parse-3d-tile-point-cloud.js"}
1
+ {"version":3,"file":"parse-3d-tile-point-cloud.js","names":["parsePointCloud3DTile","tile","arrayBuffer","byteOffset","options","context","parse3DTileHeaderSync","parse3DTileTablesHeaderSync","parse3DTileTablesSync","initializeTile","parsePointCloudTables","featureTable","batchTable","parseDraco","parsePositions","parseColors","parseNormals","attributes","positions","colors","normals","batchIds","isQuantized","isTranslucent","isRGB565","isOctEncoded16P","Tile3DFeatureTable","featureTableJson","featureTableBinary","pointsLength","getGlobalProperty","Number","isFinite","Error","featuresLength","pointCount","rtcCenter","GL","FLOAT","parseBatchIds","hasProperty","getPropertyArray","UNSIGNED_SHORT","quantizedRange","quantizedVolumeScale","quantizedVolumeOffset","normalize3DTilePositionAttribute","UNSIGNED_BYTE","normalize3DTileColorAttribute","constantRGBA","normalize3DTileNormalAttribute","batchFeatureLength","batchTableJson","batchTableBinary","Tile3DBatchTable","batchTableDraco","extensions","dracoBatchTableProperties","properties","featureTableDraco","getExtension","dracoFeatureTableProperties","dracoByteOffset","dracoByteLength","byteLength","dracoBuffer","slice","hasPositions","POSITION","hasColors","RGB","RGBA","hasNormals","NORMAL","hasBatchIds","BATCH_ID","dracoData","buffer","featureTableProperties","batchTableProperties","dequantizeInShader","loadDraco","parse","dracoOptions","draco","extraAttributes","DracoLoader","data","decodedPositions","value","decodedColors","COLOR_0","decodedNormals","decodedBatchIds","isQuantizedDraco","quantization","isOctEncodedDraco","range","Vector3","minValues","quantizationBits","octEncodedRange","batchTableAttributes","Object","keys","attributeName","toLowerCase","undefined"],"sources":["../../../../src/lib/parsers/parse-3d-tile-point-cloud.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\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {GL} from '@loaders.gl/math';\nimport {Vector3} from '@math.gl/core';\n\nimport Tile3DFeatureTable from '../classes/tile-3d-feature-table';\nimport Tile3DBatchTable from '../classes/tile-3d-batch-table';\nimport {parse3DTileHeaderSync} from './helpers/parse-3d-tile-header';\nimport {parse3DTileTablesHeaderSync, parse3DTileTablesSync} from './helpers/parse-3d-tile-tables';\nimport {normalize3DTileColorAttribute} from './helpers/normalize-3d-tile-colors';\nimport {normalize3DTileNormalAttribute} from './helpers/normalize-3d-tile-normals';\nimport {normalize3DTilePositionAttribute} from './helpers/normalize-3d-tile-positions';\n\nexport async function parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context) {\n byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);\n byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);\n initializeTile(tile);\n\n const {featureTable, batchTable} = parsePointCloudTables(tile);\n\n await parseDraco(tile, featureTable, batchTable, options, context);\n\n parsePositions(tile, featureTable, options);\n parseColors(tile, featureTable, batchTable);\n parseNormals(tile, featureTable);\n\n return byteOffset;\n}\n\nfunction initializeTile(tile) {\n // Initialize point cloud tile defaults\n tile.attributes = {\n positions: null,\n colors: null,\n normals: null,\n batchIds: null\n };\n tile.isQuantized = false;\n tile.isTranslucent = false;\n tile.isRGB565 = false;\n tile.isOctEncoded16P = false;\n}\n\nfunction parsePointCloudTables(tile) {\n const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);\n\n const pointsLength = featureTable.getGlobalProperty('POINTS_LENGTH');\n if (!Number.isFinite(pointsLength)) {\n throw new Error('POINTS_LENGTH must be defined');\n }\n featureTable.featuresLength = pointsLength;\n\n tile.featuresLength = pointsLength;\n tile.pointsLength = pointsLength;\n tile.pointCount = pointsLength;\n\n tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);\n\n const batchTable = parseBatchIds(tile, featureTable);\n\n return {featureTable, batchTable};\n}\n\nfunction parsePositions(tile, featureTable, options) {\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n const positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n tile.isQuantized = true;\n tile.quantizedRange = (1 << 16) - 1;\n\n tile.quantizedVolumeScale = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_SCALE',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeScale) {\n throw new Error('QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');\n }\n\n tile.quantizedVolumeOffset = featureTable.getGlobalProperty(\n 'QUANTIZED_VOLUME_OFFSET',\n GL.FLOAT,\n 3\n );\n if (!tile.quantizedVolumeOffset) {\n throw new Error('QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');\n }\n\n tile.attributes.positions = normalize3DTilePositionAttribute(tile, positions, options);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n\nfunction parseColors(tile, featureTable, batchTable) {\n if (!tile.attributes.colors) {\n let colors = null;\n if (featureTable.hasProperty('RGBA')) {\n colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasProperty('RGB565')) {\n colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n\n tile.attributes.colors = normalize3DTileColorAttribute(tile, colors, batchTable);\n }\n\n if (featureTable.hasProperty('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n}\n\nfunction parseNormals(tile, featureTable) {\n if (!tile.attributes.normals) {\n let normals = null;\n if (featureTable.hasProperty('NORMAL')) {\n normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('NORMAL_OCT16P')) {\n normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n\n tile.attributes.normals = normalize3DTileNormalAttribute(tile, normals);\n }\n}\n\nfunction parseBatchIds(tile, featureTable) {\n let batchTable: Tile3DBatchTable | null = null;\n if (!tile.batchIds && featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n\n if (tile.batchIds) {\n const batchFeatureLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!batchFeatureLength) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n const {batchTableJson, batchTableBinary} = tile;\n batchTable = new Tile3DBatchTable(batchTableJson, batchTableBinary, batchFeatureLength);\n }\n }\n return batchTable;\n}\n\n// eslint-disable-next-line complexity\nasync function parseDraco(tile, featureTable, batchTable, options, context) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n const batchTableDraco =\n tile.batchTableJson &&\n tile.batchTableJson.extensions &&\n tile.batchTableJson.extensions['3DTILES_draco_point_compression'];\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !Number.isFinite(dracoByteOffset) || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = tile.featureTableBinary.slice(dracoByteOffset, dracoByteOffset + dracoByteLength);\n\n tile.hasPositions = Number.isFinite(dracoFeatureTableProperties.POSITION);\n tile.hasColors =\n Number.isFinite(dracoFeatureTableProperties.RGB) ||\n Number.isFinite(dracoFeatureTableProperties.RGBA);\n tile.hasNormals = Number.isFinite(dracoFeatureTableProperties.NORMAL);\n tile.hasBatchIds = Number.isFinite(dracoFeatureTableProperties.BATCH_ID);\n tile.isTranslucent = Number.isFinite(dracoFeatureTableProperties.RGBA);\n }\n\n if (!dracoBuffer) {\n return true;\n }\n\n const dracoData = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n return await loadDraco(tile, dracoData, options, context);\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport async function loadDraco(tile, dracoData, options, context) {\n const {parse} = context;\n const dracoOptions = {\n ...options,\n draco: {\n ...options.draco,\n extraAttributes: dracoData.batchTableProperties || {}\n }\n };\n\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n\n const data = await parse(dracoData.buffer, DracoLoader, dracoOptions);\n\n const decodedPositions = data.attributes.POSITION && data.attributes.POSITION.value;\n const decodedColors = data.attributes.COLOR_0 && data.attributes.COLOR_0.value;\n const decodedNormals = data.attributes.NORMAL && data.attributes.NORMAL.value;\n const decodedBatchIds = data.attributes.BATCH_ID && data.attributes.BATCH_ID.value;\n const isQuantizedDraco = decodedPositions && data.attributes.POSITION.value.quantization;\n const isOctEncodedDraco = decodedNormals && data.attributes.NORMAL.value.quantization;\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n const quantization = data.POSITION.data.quantization;\n const range = quantization.range;\n tile.quantizedVolumeScale = new Vector3(range, range, range);\n tile.quantizedVolumeOffset = new Vector3(quantization.minValues);\n tile.quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile.isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile.octEncodedRange = (1 << data.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile.isOctEncodedDraco = true;\n }\n\n // Extra batch table attributes\n const batchTableAttributes = {};\n if (dracoData.batchTableProperties) {\n for (const attributeName of Object.keys(dracoData.batchTableProperties)) {\n if (data.attributes[attributeName] && data.attributes[attributeName].value) {\n batchTableAttributes[attributeName.toLowerCase()] = data.attributes[attributeName].value;\n }\n }\n }\n\n tile.attributes = {\n positions: decodedPositions,\n colors: normalize3DTileColorAttribute(tile, decodedColors, undefined),\n normals: decodedNormals,\n batchIds: decodedBatchIds,\n ...batchTableAttributes\n };\n}\n\n// TODO - this is the remaining code from Cesium's parser\n/*\n const batchTable = new Tile3DBatchTable(tile);\n\n // parseDracoBuffer(tile, featureTable, batchTable);\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n}\n/*\n\n if (!tile.attributes.positions) {\n if (featureTable.hasProperty('POSITION')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION', GL.FLOAT, 3);\n } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {\n tile.attributes.positions = featureTable.getPropertyArray('POSITION_QUANTIZED', GL.UNSIGNED_SHORT, 3);\n\n\n if (!tile.colors) {\n if (featureTable.hasProperty('RGBA')) {\n tile.colors = featureTable.getPropertyArray('RGBA', GL.UNSIGNED_BYTE, 4);\n tile.isTranslucent = true;\n } else if (featureTable.hasProperty('RGB')) {\n tile.colors = featureTable.getPropertyArray('RGB', GL.UNSIGNED_BYTE, 3);\n } else if (featureTable.hasPropertry('RGB565')) {\n tile.colors = featureTable.getPropertyArray('RGB565', GL.UNSIGNED_SHORT, 1);\n tile.isRGB565 = true;\n }\n }\n\n if (!tile.attributes.normals) {\n if (featureTable.getPropertry('NORMAL')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL', GL.FLOAT, 3);\n } else if (featureTable.getProperty('NORMAL_OCT16P')) {\n tile.attributes.normals = featureTable.getPropertyArray('NORMAL_OCT16P', GL.UNSIGNED_BYTE, 2);\n tile.isOctEncoded16P = true;\n }\n }\n\n if (!tile.batchIds) {\n if (featureTable.hasProperty('BATCH_ID')) {\n tile.batchIds = featureTable.getPropertyArray('BATCH_ID', GL.UNSIGNED_SHORT, 1);\n }\n }\n\n if (!tile.attributes.positions) {\n throw new Error('Either POSITION or POSITION_QUANTIZED must be defined.');\n }\n\n if (featureTable.getPropertry('CONSTANT_RGBA')) {\n tile.constantRGBA = featureTable.getGlobalProperty('CONSTANT_RGBA', GL.UNSIGNED_BYTE, 4);\n }\n\n if (tile.batchIds) {\n const batchLength = featureTable.getGlobalProperty('BATCH_LENGTH');\n if (!defined(batchLength)) {\n throw new Error('Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.');\n }\n\n if (defined(batchTableBinary)) {\n // Copy the batchTableBinary section and let the underlying ArrayBuffer be freed\n batchTableBinary = new Uint8Array(batchTableBinary);\n }\n\n if (defined(pointCloud._batchTableLoaded)) {\n pointCloud._batchTableLoaded(batchLength, batchTableJson, batchTableBinary);\n }\n }\n\n // If points are not batched and there are per-point properties, use these properties for styling purposes\n var styleableProperties;\n if (!hasBatchIds && defined(batchTableBinary)) {\n tile.styleableProperties = Cesium3DTileBatchTable.getBinaryProperties(\n pointsLength,\n batchTableJson,\n batchTableBinary\n );\n }\n\n tile.draco = draco;\n}\n\n// Separate parsing and decoding of Draco\nexport function parseDracoBuffer(tile, featureTable, batchTable) {\n let dracoBuffer;\n let dracoFeatureTableProperties;\n let dracoBatchTableProperties;\n\n const batchTableDraco = batchTable.getExtension('3DTILES_draco_point_compression');\n if (batchTableDraco) {\n dracoBatchTableProperties = batchTableDraco.properties;\n }\n\n const featureTableDraco = featureTable.getExtension('3DTILES_draco_point_compression');\n if (featureTableDraco) {\n dracoFeatureTableProperties = featureTableDraco.properties;\n const dracoByteOffset = featureTableDraco.byteOffset;\n const dracoByteLength = featureTableDraco.byteLength;\n if (!dracoFeatureTableProperties || !dracoByteOffset || !dracoByteLength) {\n throw new Error('Draco properties, byteOffset, and byteLength must be defined');\n }\n\n dracoBuffer = arraySlice(\n featureTableBinary,\n dracoByteOffset,\n dracoByteOffset + dracoByteLength\n );\n tile.hasPositions = dracoFeatureTableProperties.POSITION;\n tile.hasColors = dracoFeatureTableProperties.RGB || dracoFeatureTableProperties.RGBA;\n tile.hasNormals = dracoFeatureTableProperties.NORMAL;\n tile.hasBatchIds = dracoFeatureTableProperties.BATCH_ID;\n tile.isTranslucent = dracoFeatureTableProperties.RGBA;\n }\n\n if (dracoBuffer) {\n tile.draco = {\n buffer: dracoBuffer,\n properties: {...dracoFeatureTableProperties, ...dracoBatchTableProperties},\n featureTableProperties: dracoFeatureTableProperties,\n batchTableProperties: dracoBatchTableProperties,\n dequantizeInShader: false\n };\n\n tile.decodingState = DECODING_STATE.NEEDS_DECODE;\n }\n}\n\n/*\nfunction decodeDraco(tile, context) {\n if (tile.decodingState === DECODING_STATE.READY) {\n return false;\n }\n if (tile.decodingState === DECODING_STATE.NEEDS_DECODE) {\n var parsedContent = tile._parsedContent;\n var draco = parsedContent.draco;\n var decodePromise = DracoLoader.decodePointCloud(draco, context);\n if (defined(decodePromise)) {\n tile.decodingState = DECODING_STATE.DECODING;\n decodePromise.then(function(result) {\n tile.decodingState = DECODING_STATE.READY;\n var decodedPositions = defined(result.POSITION) ? result.POSITION.array : undefined;\n var decodedRgb = defined(result.RGB) ? result.RGB.array : undefined;\n var decodedRgba = defined(result.RGBA) ? result.RGBA.array : undefined;\n var decodedNormals = defined(result.NORMAL) ? result.NORMAL.array : undefined;\n var decodedBatchIds = defined(result.BATCH_ID) ? result.BATCH_ID.array : undefined;\n var isQuantizedDraco = defined(decodedPositions) && defined(result.POSITION.data.quantization);\n var isOctEncodedDraco = defined(decodedNormals) && defined(result.NORMAL.data.quantization);\n if (isQuantizedDraco) {\n // Draco quantization range == quantized volume scale - size in meters of the quantized volume\n // Internal quantized range is the range of values of the quantized data, e.g. 255 for 8-bit, 1023 for 10-bit, etc\n var quantization = result.POSITION.data.quantization;\n var range = quantization.range;\n tile._quantizedVolumeScale = Cartesian3.fromElements(range, range, range);\n tile._quantizedVolumeOffset = Cartesian3.unpack(quantization.minValues);\n tile._quantizedRange = (1 << quantization.quantizationBits) - 1.0;\n tile._isQuantizedDraco = true;\n }\n if (isOctEncodedDraco) {\n tile._octEncodedRange = (1 << result.NORMAL.data.quantization.quantizationBits) - 1.0;\n tile._isOctEncodedDraco = true;\n }\n var styleableProperties = parsedContent.styleableProperties;\n var batchTableProperties = draco.batchTableProperties;\n for (var name in batchTableProperties) {\n if (batchTableProperties.hasOwnProperty(name)) {\n var property = result[name];\n if (!defined(styleableProperties)) {\n styleableProperties = {};\n }\n styleableProperties[name] = {\n typedArray : property.array,\n componentCount : property.data.componentsPerAttribute\n };\n }\n }\n parsedContent.positions = defaultValue(decodedPositions, parsedContent.positions);\n parsedContent.colors = defaultValue(defaultValue(decodedRgba, decodedRgb), parsedContent.colors);\n parsedContent.normals = defaultValue(decodedNormals, parsedContent.normals);\n parsedContent.batchIds = defaultValue(decodedBatchIds, parsedContent.batchIds);\n parsedContent.styleableProperties = styleableProperties;\n }).otherwise(function(error) {\n tile.decodingState = DECODING_STATE.FAILED;\n tile._readyPromise.reject(error);\n });\n }\n }\n return true;\n}\n*/\n"],"mappings":"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"}
@@ -1,41 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.parse3DTile = parse3DTile;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _constants = require("../constants");
15
-
16
11
  var _parseUtils = require("./helpers/parse-utils");
17
-
18
12
  var _parse3dTilePointCloud = require("./parse-3d-tile-point-cloud");
19
-
20
13
  var _parse3dTileBatchedModel = require("./parse-3d-tile-batched-model");
21
-
22
14
  var _parse3dTileInstancedModel = require("./parse-3d-tile-instanced-model");
23
-
24
15
  var _parse3dTileComposite = require("./parse-3d-tile-composite");
25
-
26
16
  var _parse3dTileGltf = require("./parse-3d-tile-gltf");
27
-
28
17
  function parse3DTile(_x) {
29
18
  return _parse3DTile.apply(this, arguments);
30
19
  }
31
-
32
20
  function _parse3DTile() {
33
21
  _parse3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
34
22
  var byteOffset,
35
- options,
36
- context,
37
- tile,
38
- _args = arguments;
23
+ options,
24
+ context,
25
+ tile,
26
+ _args = arguments;
39
27
  return _regenerator.default.wrap(function _callee$(_context) {
40
28
  while (1) {
41
29
  switch (_context.prev = _context.next) {
@@ -46,48 +34,37 @@ function _parse3DTile() {
46
34
  tile = _args.length > 4 && _args[4] !== undefined ? _args[4] : {};
47
35
  tile.byteOffset = byteOffset;
48
36
  tile.type = (0, _parseUtils.getMagicString)(arrayBuffer, byteOffset);
37
+
49
38
  _context.t0 = tile.type;
50
39
  _context.next = _context.t0 === _constants.TILE3D_TYPE.COMPOSITE ? 9 : _context.t0 === _constants.TILE3D_TYPE.BATCHED_3D_MODEL ? 12 : _context.t0 === _constants.TILE3D_TYPE.GLTF ? 15 : _context.t0 === _constants.TILE3D_TYPE.INSTANCED_3D_MODEL ? 18 : _context.t0 === _constants.TILE3D_TYPE.POINT_CLOUD ? 21 : 24;
51
40
  break;
52
-
53
41
  case 9:
54
42
  _context.next = 11;
55
43
  return (0, _parse3dTileComposite.parseComposite3DTile)(tile, arrayBuffer, byteOffset, options, context, parse3DTile);
56
-
57
44
  case 11:
58
45
  return _context.abrupt("return", _context.sent);
59
-
60
46
  case 12:
61
47
  _context.next = 14;
62
48
  return (0, _parse3dTileBatchedModel.parseBatchedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
63
-
64
49
  case 14:
65
50
  return _context.abrupt("return", _context.sent);
66
-
67
51
  case 15:
68
52
  _context.next = 17;
69
53
  return (0, _parse3dTileGltf.parseGltf3DTile)(tile, arrayBuffer, options, context);
70
-
71
54
  case 17:
72
55
  return _context.abrupt("return", _context.sent);
73
-
74
56
  case 18:
75
57
  _context.next = 20;
76
58
  return (0, _parse3dTileInstancedModel.parseInstancedModel3DTile)(tile, arrayBuffer, byteOffset, options, context);
77
-
78
59
  case 20:
79
60
  return _context.abrupt("return", _context.sent);
80
-
81
61
  case 21:
82
62
  _context.next = 23;
83
63
  return (0, _parse3dTilePointCloud.parsePointCloud3DTile)(tile, arrayBuffer, byteOffset, options, context);
84
-
85
64
  case 23:
86
65
  return _context.abrupt("return", _context.sent);
87
-
88
66
  case 24:
89
67
  throw new Error("3DTileLoader: unknown type ".concat(tile.type));
90
-
91
68
  case 25:
92
69
  case "end":
93
70
  return _context.stop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"names":["parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","Error"],"mappings":";;;;;;;;;;;;;AAGA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;SAGsBA,W;;;;;2EAAf,iBAA2BC,WAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwCC,YAAAA,UAAxC,2DAAqD,CAArD;AAAwDC,YAAAA,OAAxD;AAAiEC,YAAAA,OAAjE;AAA0EC,YAAAA,IAA1E,2DAAiF,EAAjF;AAELA,YAAAA,IAAI,CAACH,UAAL,GAAkBA,UAAlB;AAEAG,YAAAA,IAAI,CAACC,IAAL,GAAY,gCAAeL,WAAf,EAA4BC,UAA5B,CAAZ;AAJK,0BAOGG,IAAI,CAACC,IAPR;AAAA,4CAQEC,uBAAYC,SARd,uBAmBED,uBAAYE,gBAnBd,wBAsBEF,uBAAYG,IAtBd,wBAyBEH,uBAAYI,kBAzBd,wBA4BEJ,uBAAYK,WA5Bd;AAAA;;AAAA;AAAA;AAAA,mBAUY,gDACXP,IADW,EAEXJ,WAFW,EAGXC,UAHW,EAIXC,OAJW,EAKXC,OALW,EAMXJ,WANW,CAVZ;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAoBY,sDAAwBK,IAAxB,EAA8BJ,WAA9B,EAA2CC,UAA3C,EAAuDC,OAAvD,EAAgEC,OAAhE,CApBZ;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAuBY,sCAAgBC,IAAhB,EAAsBJ,WAAtB,EAAmCE,OAAnC,EAA4CC,OAA5C,CAvBZ;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBA0BY,0DAA0BC,IAA1B,EAAgCJ,WAAhC,EAA6CC,UAA7C,EAAyDC,OAAzD,EAAkEC,OAAlE,CA1BZ;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBA6BY,kDAAsBC,IAAtB,EAA4BJ,WAA5B,EAAyCC,UAAzC,EAAqDC,OAArD,EAA8DC,OAA9D,CA7BZ;;AAAA;AAAA;;AAAA;AAAA,kBAiCK,IAAIS,KAAJ,sCAAwCR,IAAI,CAACC,IAA7C,EAjCL;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n // @ts-expect-error\n tile.byteOffset = byteOffset;\n // @ts-expect-error\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n // @ts-expect-error\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n // @ts-expect-error\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"file":"parse-3d-tile.js"}
1
+ {"version":3,"file":"parse-3d-tile.js","names":["parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","getMagicString","TILE3D_TYPE","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","parseComposite3DTile","parseBatchedModel3DTile","parseGltf3DTile","parseInstancedModel3DTile","parsePointCloud3DTile","Error"],"sources":["../../../../src/lib/parsers/parse-3d-tile.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\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n // @ts-expect-error\n tile.byteOffset = byteOffset;\n // @ts-expect-error\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n // @ts-expect-error\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n // @ts-expect-error\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":";;;;;;;;;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAqD,SAG/BA,WAAW;EAAA;AAAA;AAAA;EAAA,yEAA1B,iBAA2BC,WAAW;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,UAAU,2DAAG,CAAC;YAAEC,OAAO;YAAEC,OAAO;YAAEC,IAAI,2DAAG,CAAC,CAAC;YAExFA,IAAI,CAACH,UAAU,GAAGA,UAAU;YAE5BG,IAAI,CAACC,IAAI,GAAG,IAAAC,0BAAc,EAACN,WAAW,EAAEC,UAAU,CAAC;;YAAC,cAG5CG,IAAI,CAACC,IAAI;YAAA,gCACVE,sBAAW,CAACC,SAAS,uBAWrBD,sBAAW,CAACE,gBAAgB,wBAG5BF,sBAAW,CAACG,IAAI,wBAGhBH,sBAAW,CAACI,kBAAkB,wBAG9BJ,sBAAW,CAACK,WAAW;YAAA;UAAA;YAAA;YAAA,OAlBb,IAAAC,0CAAoB,EAC/BT,IAAI,EACJJ,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPJ,WAAW,CACZ;UAAA;YAAA;UAAA;YAAA;YAAA,OAGY,IAAAe,gDAAuB,EAACV,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAGxE,IAAAY,gCAAe,EAACX,IAAI,EAAEJ,WAAW,EAAEE,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAGpD,IAAAa,oDAAyB,EAACZ,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA;YAAA,OAG1E,IAAAc,4CAAqB,EAACb,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA,MAI7E,IAAIe,KAAK,sCAA+Bd,IAAI,CAACC,IAAI,EAAG;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAE/D;EAAA;AAAA"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.3.0-alpha.5" !== 'undefined' ? "3.3.0-alpha.5" : 'latest';
7
+ var VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
1
+ {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAAC"}
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Tile3DSubtreeLoader = void 0;
9
-
10
8
  var _parse3dTileSubtree = _interopRequireDefault(require("./lib/parsers/helpers/parse-3d-tile-subtree"));
11
-
12
9
  var _version = require("./lib/utils/version");
13
-
14
10
  var Tile3DSubtreeLoader = {
15
11
  id: '3d-tiles-subtree',
16
12
  name: '3D Tiles Subtree',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tile-3d-subtree-loader.ts"],"names":["Tile3DSubtreeLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","parse3DTilesSubtree","options"],"mappings":";;;;;;;;;AACA;;AACA;;AAMO,IAAMA,mBAAqC,GAAG;AACnDC,EAAAA,EAAE,EAAE,kBAD+C;AAEnDC,EAAAA,IAAI,EAAE,kBAF6C;AAGnDC,EAAAA,MAAM,EAAE,UAH2C;AAInDC,EAAAA,OAAO,EAAEC,gBAJ0C;AAKnDC,EAAAA,UAAU,EAAE,CAAC,SAAD,CALuC;AAMnDC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANwC;AAOnDC,EAAAA,KAAK,EAAE,CAAC,SAAD,CAP4C;AAQnDC,EAAAA,KAAK,EAAEC,2BAR4C;AASnDC,EAAAA,OAAO,EAAE;AAT0C,CAA9C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Loader for 3D Tiles Subtree\n *\n */\nexport const Tile3DSubtreeLoader: LoaderWithParser = {\n id: '3d-tiles-subtree',\n name: '3D Tiles Subtree',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['subtree'],\n mimeTypes: ['application/octet-stream'],\n tests: ['subtree'],\n parse: parse3DTilesSubtree,\n options: {}\n};\n"],"file":"tile-3d-subtree-loader.js"}
1
+ {"version":3,"file":"tile-3d-subtree-loader.js","names":["Tile3DSubtreeLoader","id","name","module","version","VERSION","extensions","mimeTypes","tests","parse","parse3DTilesSubtree","options"],"sources":["../../src/tile-3d-subtree-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Loader for 3D Tiles Subtree\n *\n */\nexport const Tile3DSubtreeLoader: LoaderWithParser = {\n id: '3d-tiles-subtree',\n name: '3D Tiles Subtree',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['subtree'],\n mimeTypes: ['application/octet-stream'],\n tests: ['subtree'],\n parse: parse3DTilesSubtree,\n options: {}\n};\n"],"mappings":";;;;;;;AACA;AACA;AAMO,IAAMA,mBAAqC,GAAG;EACnDC,EAAE,EAAE,kBAAkB;EACtBC,IAAI,EAAE,kBAAkB;EACxBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEC,gBAAO;EAChBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAE,CAAC,SAAS,CAAC;EAClBC,KAAK,EAAEC,2BAAmB;EAC1BC,OAAO,EAAE,CAAC;AACZ,CAAC;AAAC"}
@@ -1,18 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.Tile3DWriter = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _version = require("./lib/utils/version");
13
-
14
10
  var _encode3dTile = _interopRequireDefault(require("./lib/encoders/encode-3d-tile"));
15
-
16
11
  var Tile3DWriter = {
17
12
  name: '3D Tile',
18
13
  id: '3d-tiles',
@@ -25,7 +20,6 @@ var Tile3DWriter = {
25
20
  options: (0, _defineProperty2.default)({}, '3d-tiles', {})
26
21
  };
27
22
  exports.Tile3DWriter = Tile3DWriter;
28
-
29
23
  function encodeSync(tile, options) {
30
24
  return (0, _encode3dTile.default)(tile, options);
31
25
  }