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

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