@deck.gl/geo-layers 8.7.0-alpha.1 → 8.7.0-alpha.2

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 (50) hide show
  1. package/dist/dist.dev.js +27 -12
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +1 -26
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +87 -149
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +226 -321
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +9 -9
  9. package/dist/es5/mesh-layer/mesh-layer.js +125 -151
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +19 -45
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +26 -45
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +282 -374
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +32 -43
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +69 -104
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +28 -27
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +208 -254
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +329 -382
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +119 -183
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +115 -178
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +216 -258
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +290 -435
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +61 -110
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +44 -81
  38. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  39. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  40. package/dist/esm/s2-layer/s2-utils.js.map +1 -1
  41. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  42. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  43. package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
  44. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  45. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  46. package/dist.min.js +2 -2
  47. package/package.json +2 -2
  48. package/src/s2-layer/s2-utils.js +7 -1
  49. package/src/tile-3d-layer/tile-3d-layer.js +2 -7
  50. package/src/tile-layer/tile-2d-traversal.js +17 -3
@@ -7,22 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
10
  var _core = require("@luma.gl/core");
27
11
 
28
12
  var _core2 = require("@deck.gl/core");
@@ -39,16 +23,8 @@ var _tiles = require("@loaders.gl/tiles");
39
23
 
40
24
  var _dTiles = require("@loaders.gl/3d-tiles");
41
25
 
42
- 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; }
43
-
44
- 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; }
45
-
46
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
47
-
48
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
49
-
50
- var SINGLE_DATA = [0];
51
- var defaultProps = {
26
+ const SINGLE_DATA = [0];
27
+ const defaultProps = {
52
28
  getPointColor: {
53
29
  type: 'accessor',
54
30
  value: [0, 0, 0, 255]
@@ -58,430 +34,401 @@ var defaultProps = {
58
34
  loader: _dTiles.Tiles3DLoader,
59
35
  onTilesetLoad: {
60
36
  type: 'function',
61
- value: function value(tileset3d) {},
37
+ value: tileset3d => {},
62
38
  compare: false
63
39
  },
64
40
  onTileLoad: {
65
41
  type: 'function',
66
- value: function value(tileHeader) {},
42
+ value: tileHeader => {},
67
43
  compare: false
68
44
  },
69
45
  onTileUnload: {
70
46
  type: 'function',
71
- value: function value(tileHeader) {},
47
+ value: tileHeader => {},
72
48
  compare: false
73
49
  },
74
50
  onTileError: {
75
51
  type: 'function',
76
- value: function value(tile, message, url) {},
52
+ value: (tile, message, url) => {},
77
53
  compare: false
78
54
  },
79
55
  _getMeshColor: {
80
56
  type: 'function',
81
- value: function value(tileHeader) {
82
- return [255, 255, 255];
83
- },
57
+ value: tileHeader => [255, 255, 255],
84
58
  compare: false
85
59
  }
86
60
  };
87
61
 
88
- var Tile3DLayer = function (_CompositeLayer) {
89
- (0, _inherits2.default)(Tile3DLayer, _CompositeLayer);
62
+ class Tile3DLayer extends _core2.CompositeLayer {
63
+ initializeState() {
64
+ if ('onTileLoadFail' in this.props) {
65
+ _core2.log.removed('onTileLoadFail', 'onTileError')();
66
+ }
90
67
 
91
- var _super = _createSuper(Tile3DLayer);
68
+ this.state = {
69
+ layerMap: {},
70
+ tileset3d: null,
71
+ activeViewports: {},
72
+ lastUpdatedViewports: null
73
+ };
74
+ }
92
75
 
93
- function Tile3DLayer() {
94
- (0, _classCallCheck2.default)(this, Tile3DLayer);
95
- return _super.apply(this, arguments);
76
+ get isLoaded() {
77
+ const {
78
+ tileset3d
79
+ } = this.state;
80
+ return tileset3d && tileset3d.isLoaded();
96
81
  }
97
82
 
98
- (0, _createClass2.default)(Tile3DLayer, [{
99
- key: "initializeState",
100
- value: function initializeState() {
101
- if ('onTileLoadFail' in this.props) {
102
- _core2.log.removed('onTileLoadFail', 'onTileError')();
103
- }
83
+ shouldUpdateState({
84
+ changeFlags
85
+ }) {
86
+ return changeFlags.somethingChanged;
87
+ }
104
88
 
105
- this.state = {
106
- layerMap: {},
107
- tileset3d: null,
108
- activeViewports: {},
109
- lastUpdatedViewports: null
110
- };
111
- }
112
- }, {
113
- key: "shouldUpdateState",
114
- value: function shouldUpdateState(_ref) {
115
- var changeFlags = _ref.changeFlags;
116
- return changeFlags.somethingChanged;
89
+ updateState({
90
+ props,
91
+ oldProps,
92
+ changeFlags
93
+ }) {
94
+ if (props.data && props.data !== oldProps.data) {
95
+ this._loadTileset(props.data);
117
96
  }
118
- }, {
119
- key: "updateState",
120
- value: function updateState(_ref2) {
121
- var props = _ref2.props,
122
- oldProps = _ref2.oldProps,
123
- changeFlags = _ref2.changeFlags;
124
-
125
- if (props.data && props.data !== oldProps.data) {
126
- this._loadTileset(props.data);
127
- }
128
97
 
129
- if (changeFlags.viewportChanged) {
130
- var activeViewports = this.state.activeViewports;
131
- var viewportsNumber = Object.keys(activeViewports).length;
98
+ if (changeFlags.viewportChanged) {
99
+ const {
100
+ activeViewports
101
+ } = this.state;
102
+ const viewportsNumber = Object.keys(activeViewports).length;
132
103
 
133
- if (viewportsNumber) {
134
- this._updateTileset(activeViewports);
104
+ if (viewportsNumber) {
105
+ this._updateTileset(activeViewports);
135
106
 
136
- this.state.lastUpdatedViewports = activeViewports;
137
- this.state.activeViewports = {};
138
- }
107
+ this.state.lastUpdatedViewports = activeViewports;
108
+ this.state.activeViewports = {};
139
109
  }
110
+ }
140
111
 
141
- if (changeFlags.propsChanged) {
142
- var layerMap = this.state.layerMap;
112
+ if (changeFlags.propsChanged) {
113
+ const {
114
+ layerMap
115
+ } = this.state;
143
116
 
144
- for (var key in layerMap) {
145
- layerMap[key].needsUpdate = true;
146
- }
117
+ for (const key in layerMap) {
118
+ layerMap[key].needsUpdate = true;
147
119
  }
148
120
  }
149
- }, {
150
- key: "activateViewport",
151
- value: function activateViewport(viewport) {
152
- var _this$state = this.state,
153
- activeViewports = _this$state.activeViewports,
154
- lastUpdatedViewports = _this$state.lastUpdatedViewports;
155
- this.internalState.viewport = viewport;
156
- activeViewports[viewport.id] = viewport;
157
- var lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
158
-
159
- if (!lastViewport || !viewport.equals(lastViewport)) {
160
- this.setChangeFlags({
161
- viewportChanged: true
162
- });
163
- this.setNeedsUpdate();
164
- }
165
- }
166
- }, {
167
- key: "getPickingInfo",
168
- value: function getPickingInfo(_ref3) {
169
- var info = _ref3.info,
170
- sourceLayer = _ref3.sourceLayer;
171
- var layerMap = this.state.layerMap;
172
- var layerId = sourceLayer && sourceLayer.id;
173
-
174
- if (layerId) {
175
- var substr = layerId.substring(this.id.length + 1);
176
- var tileId = substr.substring(substr.indexOf('-') + 1);
177
- info.object = layerMap[tileId] && layerMap[tileId].tile;
178
- }
121
+ }
179
122
 
180
- return info;
181
- }
182
- }, {
183
- key: "filterSubLayer",
184
- value: function filterSubLayer(_ref4) {
185
- var layer = _ref4.layer,
186
- viewport = _ref4.viewport;
187
- var tile = layer.props.tile;
188
- var viewportId = viewport.id;
189
- return tile.selected && tile.viewportIds.includes(viewportId);
123
+ activateViewport(viewport) {
124
+ const {
125
+ activeViewports,
126
+ lastUpdatedViewports
127
+ } = this.state;
128
+ this.internalState.viewport = viewport;
129
+ activeViewports[viewport.id] = viewport;
130
+ const lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
131
+
132
+ if (!lastViewport || !viewport.equals(lastViewport)) {
133
+ this.setChangeFlags({
134
+ viewportChanged: true
135
+ });
136
+ this.setNeedsUpdate();
190
137
  }
191
- }, {
192
- key: "_updateAutoHighlight",
193
- value: function _updateAutoHighlight(info) {
194
- if (info.sourceLayer) {
195
- info.sourceLayer.updateAutoHighlight(info);
196
- }
138
+ }
139
+
140
+ getPickingInfo({
141
+ info,
142
+ sourceLayer
143
+ }) {
144
+ const {
145
+ layerMap
146
+ } = this.state;
147
+ const layerId = sourceLayer && sourceLayer.id;
148
+
149
+ if (layerId) {
150
+ const substr = layerId.substring(this.id.length + 1);
151
+ const tileId = substr.substring(substr.indexOf('-') + 1);
152
+ info.object = layerMap[tileId] && layerMap[tileId].tile;
197
153
  }
198
- }, {
199
- key: "_loadTileset",
200
- value: function () {
201
- var _loadTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tilesetUrl) {
202
- var _this$props$loadOptio, loadOptions, loader, options, preloadOptions, tilesetJson, tileset3d;
203
-
204
- return _regenerator.default.wrap(function _callee$(_context) {
205
- while (1) {
206
- switch (_context.prev = _context.next) {
207
- case 0:
208
- _this$props$loadOptio = this.props.loadOptions, loadOptions = _this$props$loadOptio === void 0 ? {} : _this$props$loadOptio;
209
- loader = this.props.loader || this.props.loaders;
210
-
211
- if (Array.isArray(loader)) {
212
- loader = loader[0];
213
- }
214
-
215
- options = {
216
- loadOptions: _objectSpread({}, loadOptions)
217
- };
218
-
219
- if (!loader.preload) {
220
- _context.next = 10;
221
- break;
222
- }
223
-
224
- _context.next = 7;
225
- return loader.preload(tilesetUrl, loadOptions);
226
-
227
- case 7:
228
- preloadOptions = _context.sent;
229
-
230
- if (preloadOptions.headers) {
231
- options.loadOptions.fetch = _objectSpread(_objectSpread({}, options.loadOptions.fetch), {}, {
232
- headers: preloadOptions.headers
233
- });
234
- }
235
-
236
- Object.assign(options, preloadOptions);
237
-
238
- case 10:
239
- _context.next = 12;
240
- return (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
241
-
242
- case 12:
243
- tilesetJson = _context.sent;
244
- tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
245
- onTileLoad: this._onTileLoad.bind(this),
246
- onTileUnload: this._onTileUnload.bind(this),
247
- onTileLoadFail: this.props.onTileError
248
- }, options));
249
- this.setState({
250
- tileset3d: tileset3d,
251
- layerMap: {}
252
- });
253
-
254
- this._updateTileset(this.state.activeViewports);
255
-
256
- this.props.onTilesetLoad(tileset3d);
257
-
258
- case 17:
259
- case "end":
260
- return _context.stop();
261
- }
262
- }
263
- }, _callee, this);
264
- }));
265
-
266
- function _loadTileset(_x) {
267
- return _loadTileset2.apply(this, arguments);
268
- }
269
154
 
270
- return _loadTileset;
271
- }()
272
- }, {
273
- key: "_onTileLoad",
274
- value: function _onTileLoad(tileHeader) {
275
- var lastUpdatedViewports = this.state.lastUpdatedViewports;
276
- this.props.onTileLoad(tileHeader);
155
+ return info;
156
+ }
277
157
 
278
- this._updateTileset(lastUpdatedViewports);
158
+ filterSubLayer({
159
+ layer,
160
+ viewport
161
+ }) {
162
+ const {
163
+ tile
164
+ } = layer.props;
165
+ const {
166
+ id: viewportId
167
+ } = viewport;
168
+ return tile.selected && tile.viewportIds.includes(viewportId);
169
+ }
279
170
 
280
- this.setNeedsUpdate();
171
+ _updateAutoHighlight(info) {
172
+ if (info.sourceLayer) {
173
+ info.sourceLayer.updateAutoHighlight(info);
281
174
  }
282
- }, {
283
- key: "_onTileUnload",
284
- value: function _onTileUnload(tileHeader) {
285
- delete this.state.layerMap[tileHeader.id];
286
- this.props.onTileUnload(tileHeader);
175
+ }
176
+
177
+ async _loadTileset(tilesetUrl) {
178
+ const {
179
+ loadOptions = {}
180
+ } = this.props;
181
+ let loader = this.props.loader || this.props.loaders;
182
+
183
+ if (Array.isArray(loader)) {
184
+ loader = loader[0];
287
185
  }
288
- }, {
289
- key: "_updateTileset",
290
- value: function _updateTileset(viewports) {
291
- var tileset3d = this.state.tileset3d;
292
- var timeline = this.context.timeline;
293
- var viewportsNumber = Object.keys(viewports).length;
294
-
295
- if (!timeline || !viewportsNumber || !tileset3d) {
296
- return;
186
+
187
+ const options = {
188
+ loadOptions: { ...loadOptions
297
189
  }
190
+ };
298
191
 
299
- var frameNumber = tileset3d.update(Object.values(viewports));
300
- var tilesetChanged = this.state.frameNumber !== frameNumber;
192
+ if (loader.preload) {
193
+ const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
301
194
 
302
- if (tilesetChanged) {
303
- this.setState({
304
- frameNumber: frameNumber
305
- });
195
+ if (preloadOptions.headers) {
196
+ options.loadOptions.fetch = { ...options.loadOptions.fetch,
197
+ headers: preloadOptions.headers
198
+ };
306
199
  }
200
+
201
+ Object.assign(options, preloadOptions);
307
202
  }
308
- }, {
309
- key: "_getSubLayer",
310
- value: function _getSubLayer(tileHeader, oldLayer) {
311
- if (!tileHeader.content) {
312
- return null;
313
- }
314
203
 
315
- switch (tileHeader.type) {
316
- case _tiles.TILE_TYPE.POINTCLOUD:
317
- return this._makePointCloudLayer(tileHeader, oldLayer);
204
+ const tilesetJson = await (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
205
+ const tileset3d = new _tiles.Tileset3D(tilesetJson, {
206
+ onTileLoad: this._onTileLoad.bind(this),
207
+ onTileUnload: this._onTileUnload.bind(this),
208
+ onTileLoadFail: this.props.onTileError,
209
+ ...options
210
+ });
211
+ this.setState({
212
+ tileset3d,
213
+ layerMap: {}
214
+ });
215
+
216
+ this._updateTileset(this.state.activeViewports);
217
+
218
+ this.props.onTilesetLoad(tileset3d);
219
+ }
318
220
 
319
- case _tiles.TILE_TYPE.SCENEGRAPH:
320
- return this._make3DModelLayer(tileHeader, oldLayer);
221
+ _onTileLoad(tileHeader) {
222
+ const {
223
+ lastUpdatedViewports
224
+ } = this.state;
225
+ this.props.onTileLoad(tileHeader);
321
226
 
322
- case _tiles.TILE_TYPE.MESH:
323
- return this._makeSimpleMeshLayer(tileHeader, oldLayer);
227
+ this._updateTileset(lastUpdatedViewports);
324
228
 
325
- default:
326
- throw new Error("Tile3DLayer: Failed to render layer of type ".concat(tileHeader.content.type));
327
- }
229
+ this.setNeedsUpdate();
230
+ }
231
+
232
+ _onTileUnload(tileHeader) {
233
+ delete this.state.layerMap[tileHeader.id];
234
+ this.props.onTileUnload(tileHeader);
235
+ }
236
+
237
+ _updateTileset(viewports) {
238
+ const {
239
+ tileset3d
240
+ } = this.state;
241
+ const {
242
+ timeline
243
+ } = this.context;
244
+ const viewportsNumber = Object.keys(viewports).length;
245
+
246
+ if (!timeline || !viewportsNumber || !tileset3d) {
247
+ return;
328
248
  }
329
- }, {
330
- key: "_makePointCloudLayer",
331
- value: function _makePointCloudLayer(tileHeader, oldLayer) {
332
- var _tileHeader$content = tileHeader.content,
333
- attributes = _tileHeader$content.attributes,
334
- pointCount = _tileHeader$content.pointCount,
335
- constantRGBA = _tileHeader$content.constantRGBA,
336
- cartographicOrigin = _tileHeader$content.cartographicOrigin,
337
- modelMatrix = _tileHeader$content.modelMatrix;
338
- var positions = attributes.positions,
339
- normals = attributes.normals,
340
- colors = attributes.colors;
341
-
342
- if (!positions) {
343
- return null;
344
- }
345
249
 
346
- var data = oldLayer && oldLayer.props.data || {
347
- header: {
348
- vertexCount: pointCount
349
- },
350
- attributes: {
351
- POSITION: positions,
352
- NORMAL: normals,
353
- COLOR_0: colors
354
- }
355
- };
356
- var _this$props = this.props,
357
- pointSize = _this$props.pointSize,
358
- getPointColor = _this$props.getPointColor;
359
- var SubLayerClass = this.getSubLayerClass('pointcloud', _layers.PointCloudLayer);
360
- return new SubLayerClass({
361
- pointSize: pointSize
362
- }, this.getSubLayerProps({
363
- id: 'pointcloud'
364
- }), {
365
- id: "".concat(this.id, "-pointcloud-").concat(tileHeader.id),
366
- tile: tileHeader,
367
- data: data,
368
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
369
- coordinateOrigin: cartographicOrigin,
370
- modelMatrix: modelMatrix,
371
- getColor: constantRGBA || getPointColor,
372
- _offset: 0
250
+ const frameNumber = tileset3d.update(Object.values(viewports));
251
+ const tilesetChanged = this.state.frameNumber !== frameNumber;
252
+
253
+ if (tilesetChanged) {
254
+ this.setState({
255
+ frameNumber
373
256
  });
374
257
  }
375
- }, {
376
- key: "_make3DModelLayer",
377
- value: function _make3DModelLayer(tileHeader) {
378
- var _tileHeader$content2 = tileHeader.content,
379
- gltf = _tileHeader$content2.gltf,
380
- instances = _tileHeader$content2.instances,
381
- cartographicOrigin = _tileHeader$content2.cartographicOrigin,
382
- modelMatrix = _tileHeader$content2.modelMatrix;
383
- var SubLayerClass = this.getSubLayerClass('scenegraph', _meshLayers.ScenegraphLayer);
384
- return new SubLayerClass({
385
- _lighting: 'pbr'
386
- }, this.getSubLayerProps({
387
- id: 'scenegraph'
388
- }), {
389
- id: "".concat(this.id, "-scenegraph-").concat(tileHeader.id),
390
- tile: tileHeader,
391
- data: instances || SINGLE_DATA,
392
- scenegraph: gltf,
393
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
394
- coordinateOrigin: cartographicOrigin,
395
- modelMatrix: modelMatrix,
396
- getTransformMatrix: function getTransformMatrix(instance) {
397
- return instance.modelMatrix;
398
- },
399
- getPosition: [0, 0, 0],
400
- _offset: 0
401
- });
258
+ }
259
+
260
+ _getSubLayer(tileHeader, oldLayer) {
261
+ if (!tileHeader.content) {
262
+ return null;
402
263
  }
403
- }, {
404
- key: "_makeSimpleMeshLayer",
405
- value: function _makeSimpleMeshLayer(tileHeader, oldLayer) {
406
- var content = tileHeader.content;
407
- var attributes = content.attributes,
408
- indices = content.indices,
409
- modelMatrix = content.modelMatrix,
410
- cartographicOrigin = content.cartographicOrigin,
411
- material = content.material,
412
- featureIds = content.featureIds;
413
- var _getMeshColor = this.props._getMeshColor;
414
- var geometry = oldLayer && oldLayer.props.mesh || new _core.Geometry({
415
- drawMode: 4,
416
- attributes: getMeshGeometry(attributes),
417
- indices: indices
418
- });
419
- var SubLayerClass = this.getSubLayerClass('mesh', _meshLayer.default);
420
- return new SubLayerClass(this.getSubLayerProps({
421
- id: 'mesh'
422
- }), {
423
- id: "".concat(this.id, "-mesh-").concat(tileHeader.id),
424
- tile: tileHeader,
425
- mesh: geometry,
426
- data: SINGLE_DATA,
427
- getColor: _getMeshColor(tileHeader),
428
- pbrMaterial: material,
429
- modelMatrix: modelMatrix,
430
- coordinateOrigin: cartographicOrigin,
431
- coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
432
- featureIds: featureIds,
433
- _offset: 0
434
- });
264
+
265
+ switch (tileHeader.type) {
266
+ case _tiles.TILE_TYPE.POINTCLOUD:
267
+ return this._makePointCloudLayer(tileHeader, oldLayer);
268
+
269
+ case _tiles.TILE_TYPE.SCENEGRAPH:
270
+ return this._make3DModelLayer(tileHeader, oldLayer);
271
+
272
+ case _tiles.TILE_TYPE.MESH:
273
+ return this._makeSimpleMeshLayer(tileHeader, oldLayer);
274
+
275
+ default:
276
+ throw new Error("Tile3DLayer: Failed to render layer of type ".concat(tileHeader.content.type));
435
277
  }
436
- }, {
437
- key: "renderLayers",
438
- value: function renderLayers() {
439
- var _this = this;
278
+ }
440
279
 
441
- var _this$state2 = this.state,
442
- tileset3d = _this$state2.tileset3d,
443
- layerMap = _this$state2.layerMap;
280
+ _makePointCloudLayer(tileHeader, oldLayer) {
281
+ const {
282
+ attributes,
283
+ pointCount,
284
+ constantRGBA,
285
+ cartographicOrigin,
286
+ modelMatrix
287
+ } = tileHeader.content;
288
+ const {
289
+ positions,
290
+ normals,
291
+ colors
292
+ } = attributes;
293
+
294
+ if (!positions) {
295
+ return null;
296
+ }
444
297
 
445
- if (!tileset3d) {
446
- return null;
298
+ const data = oldLayer && oldLayer.props.data || {
299
+ header: {
300
+ vertexCount: pointCount
301
+ },
302
+ attributes: {
303
+ POSITION: positions,
304
+ NORMAL: normals,
305
+ COLOR_0: colors
447
306
  }
307
+ };
308
+ const {
309
+ pointSize,
310
+ getPointColor
311
+ } = this.props;
312
+ const SubLayerClass = this.getSubLayerClass('pointcloud', _layers.PointCloudLayer);
313
+ return new SubLayerClass({
314
+ pointSize
315
+ }, this.getSubLayerProps({
316
+ id: 'pointcloud'
317
+ }), {
318
+ id: "".concat(this.id, "-pointcloud-").concat(tileHeader.id),
319
+ tile: tileHeader,
320
+ data,
321
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
322
+ coordinateOrigin: cartographicOrigin,
323
+ modelMatrix,
324
+ getColor: constantRGBA || getPointColor,
325
+ _offset: 0
326
+ });
327
+ }
448
328
 
449
- return tileset3d.tiles.map(function (tile) {
450
- var layerCache = layerMap[tile.id] = layerMap[tile.id] || {
451
- tile: tile
452
- };
453
- var layer = layerCache.layer;
454
-
455
- if (tile.selected) {
456
- if (!layer) {
457
- layer = _this._getSubLayer(tile);
458
- } else if (layerCache.needsUpdate) {
459
- layer = _this._getSubLayer(tile, layer);
460
- layerCache.needsUpdate = false;
461
- }
462
- }
329
+ _make3DModelLayer(tileHeader) {
330
+ const {
331
+ gltf,
332
+ instances,
333
+ cartographicOrigin,
334
+ modelMatrix
335
+ } = tileHeader.content;
336
+ const SubLayerClass = this.getSubLayerClass('scenegraph', _meshLayers.ScenegraphLayer);
337
+ return new SubLayerClass({
338
+ _lighting: 'pbr'
339
+ }, this.getSubLayerProps({
340
+ id: 'scenegraph'
341
+ }), {
342
+ id: "".concat(this.id, "-scenegraph-").concat(tileHeader.id),
343
+ tile: tileHeader,
344
+ data: instances || SINGLE_DATA,
345
+ scenegraph: gltf,
346
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
347
+ coordinateOrigin: cartographicOrigin,
348
+ modelMatrix,
349
+ getTransformMatrix: instance => instance.modelMatrix,
350
+ getPosition: [0, 0, 0],
351
+ _offset: 0
352
+ });
353
+ }
463
354
 
464
- layerCache.layer = layer;
465
- return layer;
466
- }).filter(Boolean);
467
- }
468
- }, {
469
- key: "isLoaded",
470
- get: function get() {
471
- var tileset3d = this.state.tileset3d;
472
- return tileset3d && tileset3d.isLoaded();
355
+ _makeSimpleMeshLayer(tileHeader, oldLayer) {
356
+ const content = tileHeader.content;
357
+ const {
358
+ attributes,
359
+ indices,
360
+ modelMatrix,
361
+ cartographicOrigin,
362
+ material,
363
+ featureIds
364
+ } = content;
365
+ const {
366
+ _getMeshColor
367
+ } = this.props;
368
+ const geometry = oldLayer && oldLayer.props.mesh || new _core.Geometry({
369
+ drawMode: 4,
370
+ attributes: getMeshGeometry(attributes),
371
+ indices
372
+ });
373
+ const SubLayerClass = this.getSubLayerClass('mesh', _meshLayer.default);
374
+ return new SubLayerClass(this.getSubLayerProps({
375
+ id: 'mesh'
376
+ }), {
377
+ id: "".concat(this.id, "-mesh-").concat(tileHeader.id),
378
+ tile: tileHeader,
379
+ mesh: geometry,
380
+ data: SINGLE_DATA,
381
+ getColor: _getMeshColor(tileHeader),
382
+ pbrMaterial: material,
383
+ modelMatrix,
384
+ coordinateOrigin: cartographicOrigin,
385
+ coordinateSystem: _core2.COORDINATE_SYSTEM.METER_OFFSETS,
386
+ featureIds,
387
+ _offset: 0
388
+ });
389
+ }
390
+
391
+ renderLayers() {
392
+ const {
393
+ tileset3d,
394
+ layerMap
395
+ } = this.state;
396
+
397
+ if (!tileset3d) {
398
+ return null;
473
399
  }
474
- }]);
475
- return Tile3DLayer;
476
- }(_core2.CompositeLayer);
400
+
401
+ return tileset3d.tiles.map(tile => {
402
+ const layerCache = layerMap[tile.id] = layerMap[tile.id] || {
403
+ tile
404
+ };
405
+ let {
406
+ layer
407
+ } = layerCache;
408
+
409
+ if (tile.selected) {
410
+ if (!layer) {
411
+ layer = this._getSubLayer(tile);
412
+ } else if (layerCache.needsUpdate) {
413
+ layer = this._getSubLayer(tile, layer);
414
+ layerCache.needsUpdate = false;
415
+ }
416
+ }
417
+
418
+ layerCache.layer = layer;
419
+ return layer;
420
+ }).filter(Boolean);
421
+ }
422
+
423
+ }
477
424
 
478
425
  exports.default = Tile3DLayer;
479
426
 
480
427
  function getMeshGeometry(contentAttributes) {
481
- var attributes = {};
482
- attributes.positions = _objectSpread(_objectSpread({}, contentAttributes.positions), {}, {
428
+ const attributes = {};
429
+ attributes.positions = { ...contentAttributes.positions,
483
430
  value: new Float32Array(contentAttributes.positions.value)
484
- });
431
+ };
485
432
 
486
433
  if (contentAttributes.normals) {
487
434
  attributes.normals = contentAttributes.normals;