@deck.gl/geo-layers 8.8.0-alpha.6 → 8.8.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +32245 -42466
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/geohash-layer/geohash-layer.js +71 -0
- package/dist/es5/geohash-layer/geohash-layer.js.map +1 -0
- package/dist/es5/geohash-layer/geohash-utils.js +77 -0
- package/dist/es5/geohash-layer/geohash-utils.js.map +1 -0
- package/dist/es5/great-circle-layer/great-circle-layer.js +12 -8
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +5 -4
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +49 -34
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +22 -26
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +6 -3
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +4 -2
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +57 -34
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +31 -16
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +8 -3
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +38 -1
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +46 -12
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +9 -7
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/geohash-layer/geohash-layer.js +29 -0
- package/dist/esm/geohash-layer/geohash-layer.js.map +1 -0
- package/dist/esm/geohash-layer/geohash-utils.js +56 -0
- package/dist/esm/geohash-layer/geohash-utils.js.map +1 -0
- package/dist/esm/great-circle-layer/great-circle-layer.js +7 -3
- package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-cluster-layer.js +6 -4
- package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +38 -24
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +15 -17
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +6 -3
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-geometry.js.map +1 -1
- package/dist/esm/s2-layer/s2-layer.js +5 -2
- package/dist/esm/s2-layer/s2-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-utils.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +35 -13
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +21 -10
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +10 -3
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +36 -3
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +36 -0
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist/esm/trips-layer/trips-layer.js +8 -5
- package/dist/esm/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +17 -15
- package/src/geo-cell-layer/GeoCellLayer.ts +2 -2
- package/src/geohash-layer/geohash-layer.ts +38 -0
- package/src/geohash-layer/geohash-utils.ts +54 -0
- package/src/great-circle-layer/{great-circle-layer.js → great-circle-layer.ts} +17 -8
- package/src/h3-layers/h3-cluster-layer.ts +60 -0
- package/src/h3-layers/{h3-hexagon-layer.js → h3-hexagon-layer.ts} +110 -42
- package/src/index.ts +7 -0
- package/src/mesh-layer/{mesh-layer-fragment.glsl.js → mesh-layer-fragment.glsl.ts} +0 -0
- package/src/mesh-layer/{mesh-layer-vertex.glsl.js → mesh-layer-vertex.glsl.ts} +2 -2
- package/src/mesh-layer/{mesh-layer.js → mesh-layer.ts} +46 -13
- package/src/mvt-layer/mvt-layer.ts +5 -3
- package/src/quadkey-layer/quadkey-layer.ts +5 -5
- package/src/s2-layer/{s2-geometry.js → s2-geometry.ts} +17 -9
- package/src/s2-layer/{s2-layer.js → s2-layer.ts} +25 -8
- package/src/s2-layer/{s2-utils.js → s2-utils.ts} +14 -7
- package/src/terrain-layer/{terrain-layer.js → terrain-layer.ts} +119 -37
- package/src/tile-3d-layer/{tile-3d-layer.js → tile-3d-layer.ts} +107 -36
- package/src/tile-layer/tile-layer.ts +11 -8
- package/src/tile-layer/tileset-2d.ts +42 -6
- package/src/tile-layer/utils.ts +44 -0
- package/src/trips-layer/{trips-layer.js → trips-layer.ts} +41 -10
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +2 -37
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/geohash-layer/geohash-layer.d.ts +20 -0
- package/typed/geohash-layer/geohash-layer.d.ts.map +1 -0
- package/typed/geohash-layer/geohash-utils.d.ts +3 -0
- package/typed/geohash-layer/geohash-utils.d.ts.map +1 -0
- package/typed/great-circle-layer/great-circle-layer.d.ts +7 -13
- package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-cluster-layer.d.ts +20 -14
- package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts +55 -92
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/index.d.ts +7 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer.d.ts +32 -22
- package/typed/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts +2 -34
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts +4 -4
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-geometry.d.ts +8 -8
- package/typed/s2-layer/s2-geometry.d.ts.map +1 -1
- package/typed/s2-layer/s2-layer.d.ts +18 -14
- package/typed/s2-layer/s2-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-utils.d.ts +3 -4
- package/typed/s2-layer/s2-utils.d.ts.map +1 -1
- package/typed/terrain-layer/terrain-layer.d.ts +61 -26
- package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +58 -68
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
- package/typed/tile-layer/tile-layer.d.ts +5 -7
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/tile-layer/tileset-2d.d.ts +12 -3
- package/typed/tile-layer/tileset-2d.d.ts.map +1 -1
- package/typed/tile-layer/utils.d.ts +14 -0
- package/typed/tile-layer/utils.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.d.ts +34 -30
- package/typed/trips-layer/trips-layer.d.ts.map +1 -1
- package/src/h3-layers/h3-cluster-layer.js +0 -43
|
@@ -15,6 +15,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
15
15
|
|
|
16
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
17
|
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
18
20
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
21
|
|
|
20
22
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -85,7 +87,7 @@ function urlTemplateToUpdateTrigger(template) {
|
|
|
85
87
|
return template.join(';');
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
return template;
|
|
90
|
+
return template || '';
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
var TerrainLayer = function (_CompositeLayer) {
|
|
@@ -94,8 +96,17 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
94
96
|
var _super = _createSuper(TerrainLayer);
|
|
95
97
|
|
|
96
98
|
function TerrainLayer() {
|
|
99
|
+
var _this;
|
|
100
|
+
|
|
97
101
|
(0, _classCallCheck2.default)(this, TerrainLayer);
|
|
98
|
-
|
|
102
|
+
|
|
103
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
104
|
+
args[_key] = arguments[_key];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
108
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", void 0);
|
|
109
|
+
return _this;
|
|
99
110
|
}
|
|
100
111
|
|
|
101
112
|
(0, _createClass2.default)(TerrainLayer, [{
|
|
@@ -170,11 +181,21 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
170
181
|
meshMaxError = _this$props.meshMaxError;
|
|
171
182
|
var viewport = this.context.viewport;
|
|
172
183
|
var dataUrl = (0, _utils.getURLFromTemplate)(elevationData, tile);
|
|
173
|
-
var textureUrl = (0, _utils.getURLFromTemplate)(texture, tile);
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
var
|
|
177
|
-
|
|
184
|
+
var textureUrl = texture && (0, _utils.getURLFromTemplate)(texture, tile);
|
|
185
|
+
var signal = tile.signal;
|
|
186
|
+
var bottomLeft = [0, 0];
|
|
187
|
+
var topRight = [0, 0];
|
|
188
|
+
|
|
189
|
+
if (viewport.isGeospatial) {
|
|
190
|
+
var bbox = tile.bbox;
|
|
191
|
+
bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);
|
|
192
|
+
topRight = viewport.projectFlat([bbox.east, bbox.north]);
|
|
193
|
+
} else {
|
|
194
|
+
var _bbox = tile.bbox;
|
|
195
|
+
bottomLeft = [_bbox.left, _bbox.bottom];
|
|
196
|
+
topRight = [_bbox.right, _bbox.top];
|
|
197
|
+
}
|
|
198
|
+
|
|
178
199
|
var bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];
|
|
179
200
|
var terrain = this.loadTerrain({
|
|
180
201
|
elevationData: dataUrl,
|
|
@@ -197,8 +218,11 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
197
218
|
key: "renderSubLayers",
|
|
198
219
|
value: function renderSubLayers(props) {
|
|
199
220
|
var SubLayerClass = this.getSubLayerClass('mesh', _meshLayers.SimpleMeshLayer);
|
|
200
|
-
var
|
|
201
|
-
color =
|
|
221
|
+
var _this$props2 = this.props,
|
|
222
|
+
color = _this$props2.color,
|
|
223
|
+
wireframe = _this$props2.wireframe,
|
|
224
|
+
material = _this$props2.material;
|
|
225
|
+
var data = props.data;
|
|
202
226
|
|
|
203
227
|
if (!data) {
|
|
204
228
|
return null;
|
|
@@ -217,7 +241,9 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
217
241
|
getPosition: function getPosition(d) {
|
|
218
242
|
return [0, 0, 0];
|
|
219
243
|
},
|
|
220
|
-
getColor: color
|
|
244
|
+
getColor: color,
|
|
245
|
+
wireframe: wireframe,
|
|
246
|
+
material: material
|
|
221
247
|
});
|
|
222
248
|
}
|
|
223
249
|
}, {
|
|
@@ -257,33 +283,30 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
257
283
|
}, {
|
|
258
284
|
key: "renderLayers",
|
|
259
285
|
value: function renderLayers() {
|
|
260
|
-
var _this$
|
|
261
|
-
color = _this$
|
|
262
|
-
material = _this$
|
|
263
|
-
elevationData = _this$
|
|
264
|
-
texture = _this$
|
|
265
|
-
wireframe = _this$
|
|
266
|
-
meshMaxError = _this$
|
|
267
|
-
elevationDecoder = _this$
|
|
268
|
-
tileSize = _this$
|
|
269
|
-
maxZoom = _this$
|
|
270
|
-
minZoom = _this$
|
|
271
|
-
extent = _this$
|
|
272
|
-
maxRequests = _this$
|
|
273
|
-
onTileLoad = _this$
|
|
274
|
-
onTileUnload = _this$
|
|
275
|
-
onTileError = _this$
|
|
276
|
-
maxCacheSize = _this$
|
|
277
|
-
maxCacheByteSize = _this$
|
|
278
|
-
refinementStrategy = _this$
|
|
286
|
+
var _this$props3 = this.props,
|
|
287
|
+
color = _this$props3.color,
|
|
288
|
+
material = _this$props3.material,
|
|
289
|
+
elevationData = _this$props3.elevationData,
|
|
290
|
+
texture = _this$props3.texture,
|
|
291
|
+
wireframe = _this$props3.wireframe,
|
|
292
|
+
meshMaxError = _this$props3.meshMaxError,
|
|
293
|
+
elevationDecoder = _this$props3.elevationDecoder,
|
|
294
|
+
tileSize = _this$props3.tileSize,
|
|
295
|
+
maxZoom = _this$props3.maxZoom,
|
|
296
|
+
minZoom = _this$props3.minZoom,
|
|
297
|
+
extent = _this$props3.extent,
|
|
298
|
+
maxRequests = _this$props3.maxRequests,
|
|
299
|
+
onTileLoad = _this$props3.onTileLoad,
|
|
300
|
+
onTileUnload = _this$props3.onTileUnload,
|
|
301
|
+
onTileError = _this$props3.onTileError,
|
|
302
|
+
maxCacheSize = _this$props3.maxCacheSize,
|
|
303
|
+
maxCacheByteSize = _this$props3.maxCacheByteSize,
|
|
304
|
+
refinementStrategy = _this$props3.refinementStrategy;
|
|
279
305
|
|
|
280
306
|
if (this.state.isTiled) {
|
|
281
307
|
return new _tileLayer.default(this.getSubLayerProps({
|
|
282
308
|
id: 'tiles'
|
|
283
309
|
}), {
|
|
284
|
-
wireframe: wireframe,
|
|
285
|
-
color: color,
|
|
286
|
-
material: material,
|
|
287
310
|
getTileData: this.getTiledTerrainData.bind(this),
|
|
288
311
|
renderSubLayers: this.renderSubLayers.bind(this),
|
|
289
312
|
updateTriggers: {
|
|
@@ -331,6 +354,6 @@ var TerrainLayer = function (_CompositeLayer) {
|
|
|
331
354
|
}(_core.CompositeLayer);
|
|
332
355
|
|
|
333
356
|
exports.default = TerrainLayer;
|
|
334
|
-
TerrainLayer
|
|
335
|
-
TerrainLayer
|
|
357
|
+
(0, _defineProperty2.default)(TerrainLayer, "defaultProps", defaultProps);
|
|
358
|
+
(0, _defineProperty2.default)(TerrainLayer, "layerName", 'TerrainLayer');
|
|
336
359
|
//# sourceMappingURL=terrain-layer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.js"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","tile","viewport","context","dataUrl","textureUrl","bbox","bottomLeft","isGeospatial","projectFlat","west","south","left","bottom","topRight","east","north","right","top","surface","catch","_","Promise","resolve","all","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","_instanced","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","getTiledTerrainData","bind","renderSubLayers","updateTriggers","onViewportLoad","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, log} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer from '../tile-layer/tile-layer';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template) {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template;\n}\n\n/**\n * state: {\n * isTiled: True renders TileLayer of many SimpleMeshLayers, false renders one SimpleMeshLayer\n * terrain: Mesh object. Only defined when isTiled is false.\n * }\n */\nexport default class TerrainLayer extends CompositeLayer {\n updateState({props, oldProps}) {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n const terrain = this.loadTerrain(props);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({elevationData, bounds, elevationDecoder, meshMaxError, signal}) {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile) {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = getURLFromTemplate(texture, tile);\n\n const {bbox, signal} = tile;\n const bottomLeft = viewport.isGeospatial\n ? viewport.projectFlat([bbox.west, bbox.south])\n : [bbox.left, bbox.bottom];\n const topRight = viewport.isGeospatial\n ? viewport.projectFlat([bbox.east, bbox.north])\n : [bbox.right, bbox.top];\n const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(props) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n const {data, color} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles) {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers() {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n wireframe,\n color,\n material,\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n\nTerrainLayer.layerName = 'TerrainLayer';\nTerrainLayer.defaultProps = defaultProps;\n"],"file":"terrain-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain-layer/terrain-layer.ts"],"names":["DUMMY_DATA","defaultProps","TileLayer","elevationData","urlType","texture","optional","meshMaxError","type","value","bounds","compare","color","elevationDecoder","rScaler","gScaler","bScaler","offset","workerUrl","wireframe","material","loaders","TerrainWorkerLoader","urlTemplateToUpdateTrigger","template","Array","isArray","join","TerrainLayer","props","oldProps","elevationDataChanged","isTiled","includes","setState","shouldReload","state","terrain","loadTerrain","log","removed","signal","loadOptions","getLoadOptions","skirtHeight","fetch","propName","layer","tile","viewport","context","dataUrl","textureUrl","bottomLeft","topRight","isGeospatial","bbox","projectFlat","west","south","east","north","left","bottom","right","top","surface","catch","_","Promise","resolve","all","SubLayerClass","getSubLayerClass","SimpleMeshLayer","data","mesh","_instanced","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","getPosition","d","getColor","tiles","zRange","ranges","map","content","filter","Boolean","arr","header","boundingBox","bound","length","minZ","Math","min","x","maxZ","max","tileSize","maxZoom","minZoom","extent","maxRequests","onTileLoad","onTileUnload","onTileError","maxCacheSize","maxCacheByteSize","refinementStrategy","getSubLayerProps","id","getTileData","getTiledTerrainData","bind","renderSubLayers","updateTriggers","onViewportLoad","CompositeLayer"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Color,\n CompositeLayer,\n CompositeLayerProps,\n DefaultProps,\n Layer,\n LayersList,\n log,\n Material,\n Texture,\n UpdateParameters\n} from '@deck.gl/core';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport type {MeshAttributes} from '@loaders.gl/schema';\nimport {TerrainWorkerLoader} from '@loaders.gl/terrain';\nimport TileLayer, {TileLayerProps} from '../tile-layer/tile-layer';\nimport Tile2DHeader from '../tile-layer/tile-2d-header';\nimport {Bounds, GeoBoundingBox, TileBoundingBox, TileLoadProps, ZRange} from '../tile-layer/types';\nimport {urlType, getURLFromTemplate} from '../tile-layer/utils';\n\nconst DUMMY_DATA = [1];\n\nconst defaultProps: DefaultProps<TerrainLayerProps> = {\n ...TileLayer.defaultProps,\n // Image url that encodes height data\n elevationData: urlType,\n // Image url to use as texture\n texture: {...urlType, optional: true},\n // Martini error tolerance in meters, smaller number -> more detailed mesh\n meshMaxError: {type: 'number', value: 4.0},\n // Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates\n bounds: {type: 'array', value: null, optional: true, compare: true},\n // Color to use if texture is unavailable\n color: {type: 'color', value: [255, 255, 255]},\n // Object to decode height data, from (r, g, b) to height in meters\n elevationDecoder: {\n type: 'object',\n value: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n }\n },\n // Supply url to local terrain worker bundle. Only required if running offline and cannot access CDN.\n workerUrl: {type: 'string', value: null},\n // Same as SimpleMeshLayer wireframe\n wireframe: false,\n material: true,\n\n loaders: [TerrainWorkerLoader]\n};\n\ntype URLTemplate = string | string[];\n\n// Turns array of templates into a single string to work around shallow change\nfunction urlTemplateToUpdateTrigger(template: URLTemplate | null): string {\n if (Array.isArray(template)) {\n return template.join(';');\n }\n return template || '';\n}\n\ntype ElevationDecoder = {rScaler: number; gScaler: number; bScaler: number; offset: number};\ntype TerrainLoadProps = {\n bounds: Bounds;\n elevationData: string | null;\n elevationDecoder: ElevationDecoder;\n meshMaxError: number;\n signal?: AbortSignal;\n};\n\ntype MeshAndTexture = [MeshAttributes | null, Texture | null];\n\n/** All properties supported by TerrainLayer */\nexport type TerrainLayerProps = _TerrainLayerProps &\n TileLayerProps<MeshAndTexture> &\n CompositeLayerProps;\n\n/** Props added by the TerrainLayer */\ntype _TerrainLayerProps = {\n /** Image url that encodes height data. **/\n elevationData: URLTemplate;\n\n /** Image url to use as texture. **/\n texture?: URLTemplate | null;\n\n /** Martini error tolerance in meters, smaller number -> more detailed mesh. **/\n meshMaxError?: number;\n\n /** Bounding box of the terrain image, [minX, minY, maxX, maxY] in world coordinates. **/\n bounds?: Bounds | null;\n\n /** Color to use if texture is unavailable. **/\n color?: Color;\n\n /** Object to decode height data, from (r, g, b) to height in meters. **/\n elevationDecoder?: ElevationDecoder;\n\n /** Whether to render the mesh in wireframe mode. **/\n wireframe?: boolean;\n\n /** Material props for lighting effect. **/\n material?: Material;\n};\n\nexport default class TerrainLayer<ExtraPropsT = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TerrainLayerProps & Required<TileLayerProps<MeshAndTexture>>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TerrainLayer';\n\n state!: {\n isTiled?: boolean;\n terrain: MeshAttributes;\n zRange?: ZRange | null;\n };\n\n updateState({props, oldProps}: UpdateParameters<this>): void {\n const elevationDataChanged = props.elevationData !== oldProps.elevationData;\n if (elevationDataChanged) {\n const {elevationData} = props;\n const isTiled =\n elevationData &&\n (Array.isArray(elevationData) ||\n (elevationData.includes('{x}') && elevationData.includes('{y}')));\n this.setState({isTiled});\n }\n\n // Reloading for single terrain mesh\n const shouldReload =\n elevationDataChanged ||\n props.meshMaxError !== oldProps.meshMaxError ||\n props.elevationDecoder !== oldProps.elevationDecoder ||\n props.bounds !== oldProps.bounds;\n\n if (!this.state.isTiled && shouldReload) {\n // When state.isTiled, elevationData cannot be an array\n const terrain = this.loadTerrain(props as TerrainLoadProps);\n this.setState({terrain});\n }\n\n // TODO - remove in v9\n // @ts-ignore\n if (props.workerUrl) {\n log.removed('workerUrl', 'loadOptions.terrain.workerUrl')();\n }\n }\n\n loadTerrain({\n elevationData,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n }: TerrainLoadProps): Promise<MeshAttributes> | null {\n if (!elevationData) {\n return null;\n }\n let loadOptions = this.getLoadOptions();\n loadOptions = {\n ...loadOptions,\n terrain: {\n skirtHeight: this.state.isTiled ? meshMaxError * 2 : 0,\n ...loadOptions?.terrain,\n bounds,\n meshMaxError,\n elevationDecoder\n }\n };\n const {fetch} = this.props;\n return fetch(elevationData, {propName: 'elevationData', layer: this, loadOptions, signal});\n }\n\n getTiledTerrainData(tile: TileLoadProps): Promise<MeshAndTexture> {\n const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;\n const {viewport} = this.context;\n const dataUrl = getURLFromTemplate(elevationData, tile);\n const textureUrl = texture && getURLFromTemplate(texture, tile);\n\n const {signal} = tile;\n let bottomLeft = [0, 0] as [number, number];\n let topRight = [0, 0] as [number, number];\n if (viewport.isGeospatial) {\n const bbox = tile.bbox as GeoBoundingBox;\n bottomLeft = viewport.projectFlat([bbox.west, bbox.south]);\n topRight = viewport.projectFlat([bbox.east, bbox.north]);\n } else {\n const bbox = tile.bbox as Exclude<TileBoundingBox, GeoBoundingBox>;\n bottomLeft = [bbox.left, bbox.bottom];\n topRight = [bbox.right, bbox.top];\n }\n const bounds: Bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];\n\n const terrain = this.loadTerrain({\n elevationData: dataUrl,\n bounds,\n elevationDecoder,\n meshMaxError,\n signal\n });\n const surface = textureUrl\n ? // If surface image fails to load, the tile should still be displayed\n fetch(textureUrl, {propName: 'texture', layer: this, loaders: [], signal}).catch(_ => null)\n : Promise.resolve(null);\n\n return Promise.all([terrain, surface]);\n }\n\n renderSubLayers(\n props: TileLayerProps<MeshAndTexture> & {\n id: string;\n data: MeshAndTexture;\n tile: Tile2DHeader<MeshAndTexture>;\n }\n ) {\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n\n const {color, wireframe, material} = this.props;\n const {data} = props;\n\n if (!data) {\n return null;\n }\n\n const [mesh, texture] = data;\n\n return new SubLayerClass(props, {\n data: DUMMY_DATA,\n mesh,\n texture,\n _instanced: false,\n coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n getPosition: d => [0, 0, 0],\n getColor: color,\n wireframe,\n material\n });\n }\n\n // Update zRange of viewport\n onViewportLoad(tiles?: Tile2DHeader<MeshAndTexture>[]): void {\n if (!tiles) {\n return;\n }\n\n const {zRange} = this.state;\n const ranges = tiles\n .map(tile => tile.content)\n .filter(Boolean)\n .map(arr => {\n // @ts-ignore\n const bounds = arr[0].header.boundingBox;\n return bounds.map(bound => bound[2]);\n });\n if (ranges.length === 0) {\n return;\n }\n const minZ = Math.min(...ranges.map(x => x[0]));\n const maxZ = Math.max(...ranges.map(x => x[1]));\n\n if (!zRange || minZ < zRange[0] || maxZ > zRange[1]) {\n this.setState({zRange: [minZ, maxZ]});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {\n color,\n material,\n elevationData,\n texture,\n wireframe,\n meshMaxError,\n elevationDecoder,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n } = this.props;\n\n if (this.state.isTiled) {\n return new TileLayer<MeshAndTexture>(\n this.getSubLayerProps({\n id: 'tiles'\n }),\n {\n getTileData: this.getTiledTerrainData.bind(this),\n renderSubLayers: this.renderSubLayers.bind(this),\n updateTriggers: {\n getTileData: {\n elevationData: urlTemplateToUpdateTrigger(elevationData),\n texture: urlTemplateToUpdateTrigger(texture),\n meshMaxError,\n elevationDecoder\n }\n },\n onViewportLoad: this.onViewportLoad.bind(this),\n zRange: this.state.zRange || null,\n tileSize,\n maxZoom,\n minZoom,\n extent,\n maxRequests,\n onTileLoad,\n onTileUnload,\n onTileError,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy\n }\n );\n }\n\n const SubLayerClass = this.getSubLayerClass('mesh', SimpleMeshLayer);\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n data: DUMMY_DATA,\n mesh: this.state.terrain,\n texture,\n _instanced: false,\n getPosition: d => [0, 0, 0],\n getColor: color,\n material,\n wireframe\n }\n );\n }\n}\n"],"file":"terrain-layer.js"}
|
|
@@ -9,20 +9,22 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
13
|
|
|
16
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
15
|
|
|
18
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
17
|
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
20
20
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
21
|
|
|
22
22
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
23
|
|
|
24
24
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
25
|
|
|
26
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
26
28
|
var _core = require("@luma.gl/core");
|
|
27
29
|
|
|
28
30
|
var _core2 = require("@deck.gl/core");
|
|
@@ -91,8 +93,17 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
91
93
|
var _super = _createSuper(Tile3DLayer);
|
|
92
94
|
|
|
93
95
|
function Tile3DLayer() {
|
|
96
|
+
var _this;
|
|
97
|
+
|
|
94
98
|
(0, _classCallCheck2.default)(this, Tile3DLayer);
|
|
95
|
-
|
|
99
|
+
|
|
100
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
101
|
+
args[_key] = arguments[_key];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
105
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", void 0);
|
|
106
|
+
return _this;
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
(0, _createClass2.default)(Tile3DLayer, [{
|
|
@@ -113,7 +124,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
113
124
|
key: "isLoaded",
|
|
114
125
|
get: function get() {
|
|
115
126
|
var tileset3d = this.state.tileset3d;
|
|
116
|
-
return tileset3d && tileset3d.isLoaded();
|
|
127
|
+
return tileset3d !== null && tileset3d.isLoaded();
|
|
117
128
|
}
|
|
118
129
|
}, {
|
|
119
130
|
key: "shouldUpdateState",
|
|
@@ -190,7 +201,8 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
190
201
|
value: function filterSubLayer(_ref4) {
|
|
191
202
|
var layer = _ref4.layer,
|
|
192
203
|
viewport = _ref4.viewport;
|
|
193
|
-
var
|
|
204
|
+
var _ref5 = layer.props,
|
|
205
|
+
tile = _ref5.tile;
|
|
194
206
|
var viewportId = viewport.id;
|
|
195
207
|
return tile.selected && tile.viewportIds.includes(viewportId);
|
|
196
208
|
}
|
|
@@ -250,7 +262,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
250
262
|
tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
|
|
251
263
|
onTileLoad: this._onTileLoad.bind(this),
|
|
252
264
|
onTileUnload: this._onTileUnload.bind(this),
|
|
253
|
-
|
|
265
|
+
onTileError: this.props.onTileError
|
|
254
266
|
}, options));
|
|
255
267
|
this.setState({
|
|
256
268
|
tileset3d: tileset3d,
|
|
@@ -294,7 +306,11 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
294
306
|
}, {
|
|
295
307
|
key: "_updateTileset",
|
|
296
308
|
value: function _updateTileset(viewports) {
|
|
297
|
-
var
|
|
309
|
+
var _this2 = this;
|
|
310
|
+
|
|
311
|
+
if (!viewports) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
298
314
|
|
|
299
315
|
var tileset3d = this.state.tileset3d;
|
|
300
316
|
var timeline = this.context.timeline;
|
|
@@ -305,10 +321,10 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
305
321
|
}
|
|
306
322
|
|
|
307
323
|
tileset3d.selectTiles(Object.values(viewports)).then(function (frameNumber) {
|
|
308
|
-
var tilesetChanged =
|
|
324
|
+
var tilesetChanged = _this2.state.frameNumber !== frameNumber;
|
|
309
325
|
|
|
310
326
|
if (tilesetChanged) {
|
|
311
|
-
|
|
327
|
+
_this2.setState({
|
|
312
328
|
frameNumber: frameNumber
|
|
313
329
|
});
|
|
314
330
|
}
|
|
@@ -326,7 +342,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
326
342
|
return this._makePointCloudLayer(tileHeader, oldLayer);
|
|
327
343
|
|
|
328
344
|
case _tiles.TILE_TYPE.SCENEGRAPH:
|
|
329
|
-
return this._make3DModelLayer(tileHeader
|
|
345
|
+
return this._make3DModelLayer(tileHeader);
|
|
330
346
|
|
|
331
347
|
case _tiles.TILE_TYPE.MESH:
|
|
332
348
|
return this._makeSimpleMeshLayer(tileHeader, oldLayer);
|
|
@@ -447,7 +463,7 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
447
463
|
}, {
|
|
448
464
|
key: "renderLayers",
|
|
449
465
|
value: function renderLayers() {
|
|
450
|
-
var
|
|
466
|
+
var _this3 = this;
|
|
451
467
|
|
|
452
468
|
var _this$state2 = this.state,
|
|
453
469
|
tileset3d = _this$state2.tileset3d,
|
|
@@ -465,9 +481,9 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
465
481
|
|
|
466
482
|
if (tile.selected) {
|
|
467
483
|
if (!layer) {
|
|
468
|
-
layer =
|
|
484
|
+
layer = _this3._getSubLayer(tile);
|
|
469
485
|
} else if (layerCache.needsUpdate) {
|
|
470
|
-
layer =
|
|
486
|
+
layer = _this3._getSubLayer(tile, layer);
|
|
471
487
|
layerCache.needsUpdate = false;
|
|
472
488
|
}
|
|
473
489
|
}
|
|
@@ -481,6 +497,8 @@ var Tile3DLayer = function (_CompositeLayer) {
|
|
|
481
497
|
}(_core2.CompositeLayer);
|
|
482
498
|
|
|
483
499
|
exports.default = Tile3DLayer;
|
|
500
|
+
(0, _defineProperty2.default)(Tile3DLayer, "defaultProps", defaultProps);
|
|
501
|
+
(0, _defineProperty2.default)(Tile3DLayer, "layerName", 'Tile3DLayer');
|
|
484
502
|
|
|
485
503
|
function getMeshGeometry(contentAttributes) {
|
|
486
504
|
var attributes = {};
|
|
@@ -506,7 +524,4 @@ function getMeshGeometry(contentAttributes) {
|
|
|
506
524
|
|
|
507
525
|
return attributes;
|
|
508
526
|
}
|
|
509
|
-
|
|
510
|
-
Tile3DLayer.layerName = 'Tile3DLayer';
|
|
511
|
-
Tile3DLayer.defaultProps = defaultProps;
|
|
512
527
|
//# sourceMappingURL=tile-3d-layer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","layer","viewportId","selected","viewportIds","includes","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","_MeshLayer","pbrMaterial","tiles","map","layerCache","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions","layerName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,CAAC,CAAD,CAApB;AAEA,IAAMC,YAAY,GAAG;AACnBC,EAAAA,aAAa,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,GAAV;AAA1B,GADI;AAEnBC,EAAAA,SAAS,EAAE,GAFQ;AAInBC,EAAAA,IAAI,EAAE,IAJa;AAKnBC,EAAAA,MAAM,EAAEC,qBALW;AAOnBC,EAAAA,aAAa,EAAE;AAACN,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAM,SAAS,EAAI,CAAE,CAAzC;AAA2CC,IAAAA,OAAO,EAAE;AAApD,GAPI;AAQnBC,EAAAA,UAAU,EAAE;AAACT,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAS,UAAU,EAAI,CAAE,CAA1C;AAA4CF,IAAAA,OAAO,EAAE;AAArD,GARO;AASnBG,EAAAA,YAAY,EAAE;AAACX,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAS,UAAU,EAAI,CAAE,CAA1C;AAA4CF,IAAAA,OAAO,EAAE;AAArD,GATK;AAUnBI,EAAAA,WAAW,EAAE;AAACZ,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAACY,IAAD,EAAOC,OAAP,EAAgBC,GAAhB,EAAwB,CAAE,CAApD;AAAsDP,IAAAA,OAAO,EAAE;AAA/D,GAVM;AAWnBQ,EAAAA,aAAa,EAAE;AAAChB,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAS,UAAU;AAAA,aAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAJ;AAAA,KAApC;AAAyDF,IAAAA,OAAO,EAAE;AAAlE;AAXI,CAArB;;IAcqBS,W;;;;;;;;;;;;WACnB,2BAAkB;AAChB,UAAI,oBAAoB,KAAKC,KAA7B,EAAoC;AAClCC,mBAAIC,OAAJ,CAAY,gBAAZ,EAA8B,aAA9B;AACD;;AAED,WAAKC,KAAL,GAAa;AACXC,QAAAA,QAAQ,EAAE,EADC;AAEXf,QAAAA,SAAS,EAAE,IAFA;AAGXgB,QAAAA,eAAe,EAAE,EAHN;AAIXC,QAAAA,oBAAoB,EAAE;AAJX,OAAb;AAMD;;;SAED,eAAe;AACb,UAAOjB,SAAP,GAAoB,KAAKc,KAAzB,CAAOd,SAAP;AACA,aAAOA,SAAS,IAAIA,SAAS,CAACkB,QAAV,EAApB;AACD;;;WAED,iCAAiC;AAAA,UAAdC,WAAc,QAAdA,WAAc;AAC/B,aAAOA,WAAW,CAACC,gBAAnB;AACD;;;WAED,4BAA4C;AAAA,UAA/BT,KAA+B,SAA/BA,KAA+B;AAAA,UAAxBU,QAAwB,SAAxBA,QAAwB;AAAA,UAAdF,WAAc,SAAdA,WAAc;;AAC1C,UAAIR,KAAK,CAACf,IAAN,IAAce,KAAK,CAACf,IAAN,KAAeyB,QAAQ,CAACzB,IAA1C,EAAgD;AAC9C,aAAK0B,YAAL,CAAkBX,KAAK,CAACf,IAAxB;AACD;;AAED,UAAIuB,WAAW,CAACI,eAAhB,EAAiC;AAC/B,YAAOP,eAAP,GAA0B,KAAKF,KAA/B,CAAOE,eAAP;AACA,YAAMQ,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYV,eAAZ,EAA6BW,MAArD;;AACA,YAAIH,eAAJ,EAAqB;AACnB,eAAKI,cAAL,CAAoBZ,eAApB;;AACA,eAAKF,KAAL,CAAWG,oBAAX,GAAkCD,eAAlC;AACA,eAAKF,KAAL,CAAWE,eAAX,GAA6B,EAA7B;AACD;AACF;;AACD,UAAIG,WAAW,CAACU,YAAhB,EAA8B;AAC5B,YAAOd,QAAP,GAAmB,KAAKD,KAAxB,CAAOC,QAAP;;AACA,aAAK,IAAMe,GAAX,IAAkBf,QAAlB,EAA4B;AAC1BA,UAAAA,QAAQ,CAACe,GAAD,CAAR,CAAcC,WAAd,GAA4B,IAA5B;AACD;AACF;AACF;;;WAED,0BAAiBC,QAAjB,EAA2B;AACzB,wBAAgD,KAAKlB,KAArD;AAAA,UAAOE,eAAP,eAAOA,eAAP;AAAA,UAAwBC,oBAAxB,eAAwBA,oBAAxB;AACA,WAAKgB,aAAL,CAAmBD,QAAnB,GAA8BA,QAA9B;AAEAhB,MAAAA,eAAe,CAACgB,QAAQ,CAACE,EAAV,CAAf,GAA+BF,QAA/B;AACA,UAAMG,YAAY,GAAGlB,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAGe,QAAQ,CAACE,EAAZ,CAAzC;;AACA,UAAI,CAACC,YAAD,IAAiB,CAACH,QAAQ,CAACI,MAAT,CAAgBD,YAAhB,CAAtB,EAAqD;AACnD,aAAKE,cAAL,CAAoB;AAACd,UAAAA,eAAe,EAAE;AAAlB,SAApB;AACA,aAAKe,cAAL;AACD;AACF;;;WAED,+BAAoC;AAAA,UAApBC,IAAoB,SAApBA,IAAoB;AAAA,UAAdC,WAAc,SAAdA,WAAc;AAClC,UAAOzB,QAAP,GAAmB,KAAKD,KAAxB,CAAOC,QAAP;AACA,UAAM0B,OAAO,GAAGD,WAAW,IAAIA,WAAW,CAACN,EAA3C;;AACA,UAAIO,OAAJ,EAAa;AAEX,YAAMC,MAAM,GAAGD,OAAO,CAACE,SAAR,CAAkB,KAAKT,EAAL,CAAQP,MAAR,GAAiB,CAAnC,CAAf;AACA,YAAMiB,MAAM,GAAGF,MAAM,CAACC,SAAP,CAAiBD,MAAM,CAACG,OAAP,CAAe,GAAf,IAAsB,CAAvC,CAAf;AACAN,QAAAA,IAAI,CAACO,MAAL,GAAc/B,QAAQ,CAAC6B,MAAD,CAAR,IAAoB7B,QAAQ,CAAC6B,MAAD,CAAR,CAAiBtC,IAAnD;AACD;;AAED,aAAOiC,IAAP;AACD;;;WAED,+BAAkC;AAAA,UAAlBQ,KAAkB,SAAlBA,KAAkB;AAAA,UAAXf,QAAW,SAAXA,QAAW;AAChC,UAAO1B,IAAP,GAAeyC,KAAK,CAACpC,KAArB,CAAOL,IAAP;AACA,UAAW0C,UAAX,GAAyBhB,QAAzB,CAAOE,EAAP;AACA,aAAO5B,IAAI,CAAC2C,QAAL,IAAiB3C,IAAI,CAAC4C,WAAL,CAAiBC,QAAjB,CAA0BH,UAA1B,CAAxB;AACD;;;WAED,8BAAqBT,IAArB,EAA2B;AACzB,UAAIA,IAAI,CAACC,WAAT,EAAsB;AACpBD,QAAAA,IAAI,CAACC,WAAL,CAAiBY,mBAAjB,CAAqCb,IAArC;AACD;AACF;;;;oFAED,iBAAmBc,UAAnB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAK1C,KADlC,CACS2C,WADT,EACSA,WADT,sCACuB,EADvB;AAIMzD,gBAAAA,MAJN,GAIe,KAAKc,KAAL,CAAWd,MAAX,IAAqB,KAAKc,KAAL,CAAW4C,OAJ/C;;AAKE,oBAAIC,KAAK,CAACC,OAAN,CAAc5D,MAAd,CAAJ,EAA2B;AACzBA,kBAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACD;;AAEK6D,gBAAAA,OATR,GASkB;AAACJ,kBAAAA,WAAW,oBAAMA,WAAN;AAAZ,iBATlB;;AAAA,qBAUMzD,MAAM,CAAC8D,OAVb;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAWiC9D,MAAM,CAAC8D,OAAP,CAAeN,UAAf,EAA2BC,WAA3B,CAXjC;;AAAA;AAWUM,gBAAAA,cAXV;;AAaI,oBAAIA,cAAc,CAACC,OAAnB,EAA4B;AAC1BH,kBAAAA,OAAO,CAACJ,WAAR,CAAoBQ,KAApB,mCACKJ,OAAO,CAACJ,WAAR,CAAoBQ,KADzB;AAEED,oBAAAA,OAAO,EAAED,cAAc,CAACC;AAF1B;AAID;;AACDpC,gBAAAA,MAAM,CAACsC,MAAP,CAAcL,OAAd,EAAuBE,cAAvB;;AAnBJ;AAAA;AAAA,uBAqB4B,iBAAKP,UAAL,EAAiBxD,MAAjB,EAAyB6D,OAAO,CAACJ,WAAjC,CArB5B;;AAAA;AAqBQU,gBAAAA,WArBR;AAuBQhE,gBAAAA,SAvBR,GAuBoB,IAAIiE,gBAAJ,CAAcD,WAAd;AAChB9D,kBAAAA,UAAU,EAAE,KAAKgE,WAAL,CAAiBC,IAAjB,CAAsB,IAAtB,CADI;AAEhB/D,kBAAAA,YAAY,EAAE,KAAKgE,aAAL,CAAmBD,IAAnB,CAAwB,IAAxB,CAFE;AAGhBE,kBAAAA,cAAc,EAAE,KAAK1D,KAAL,CAAWN;AAHX,mBAIbqD,OAJa,EAvBpB;AA8BE,qBAAKY,QAAL,CAAc;AACZtE,kBAAAA,SAAS,EAATA,SADY;AAEZe,kBAAAA,QAAQ,EAAE;AAFE,iBAAd;;AAKA,qBAAKa,cAAL,CAAoB,KAAKd,KAAL,CAAWE,eAA/B;;AACA,qBAAKL,KAAL,CAAWZ,aAAX,CAAyBC,SAAzB;;AApCF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAuCA,qBAAYG,UAAZ,EAAwB;AACtB,UAAOc,oBAAP,GAA+B,KAAKH,KAApC,CAAOG,oBAAP;AACA,WAAKN,KAAL,CAAWT,UAAX,CAAsBC,UAAtB;;AACA,WAAKyB,cAAL,CAAoBX,oBAApB;;AACA,WAAKqB,cAAL;AACD;;;WAED,uBAAcnC,UAAd,EAA0B;AAExB,aAAO,KAAKW,KAAL,CAAWC,QAAX,CAAoBZ,UAAU,CAAC+B,EAA/B,CAAP;AACA,WAAKvB,KAAL,CAAWP,YAAX,CAAwBD,UAAxB;AACD;;;WAED,wBAAeoE,SAAf,EAA0B;AAAA;;AACxB,UAAOvE,SAAP,GAAoB,KAAKc,KAAzB,CAAOd,SAAP;AACA,UAAOwE,QAAP,GAAmB,KAAKC,OAAxB,CAAOD,QAAP;AACA,UAAMhD,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAY6C,SAAZ,EAAuB5C,MAA/C;;AACA,UAAI,CAAC6C,QAAD,IAAa,CAAChD,eAAd,IAAiC,CAACxB,SAAtC,EAAiD;AAC/C;AACD;;AACDA,MAAAA,SAAS,CAAC0E,WAAV,CAAsBjD,MAAM,CAACkD,MAAP,CAAcJ,SAAd,CAAtB,EAAgDK,IAAhD,CAAqD,UAAAC,WAAW,EAAI;AAClE,YAAMC,cAAc,GAAG,KAAI,CAAChE,KAAL,CAAW+D,WAAX,KAA2BA,WAAlD;;AACA,YAAIC,cAAJ,EAAoB;AAClB,UAAA,KAAI,CAACR,QAAL,CAAc;AAACO,YAAAA,WAAW,EAAXA;AAAD,WAAd;AACD;AACF,OALD;AAMD;;;WAED,sBAAa1E,UAAb,EAAyB4E,QAAzB,EAAmC;AACjC,UAAI,CAAC5E,UAAU,CAAC6E,OAAhB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,cAAQ7E,UAAU,CAACV,IAAnB;AACE,aAAKwF,iBAAUC,UAAf;AACE,iBAAO,KAAKC,oBAAL,CAA0BhF,UAA1B,EAAsC4E,QAAtC,CAAP;;AACF,aAAKE,iBAAUG,UAAf;AACE,iBAAO,KAAKC,iBAAL,CAAuBlF,UAAvB,EAAmC4E,QAAnC,CAAP;;AACF,aAAKE,iBAAUK,IAAf;AACE,iBAAO,KAAKC,oBAAL,CAA0BpF,UAA1B,EAAsC4E,QAAtC,CAAP;;AACF;AACE,gBAAM,IAAIS,KAAJ,uDAAyDrF,UAAU,CAAC6E,OAAX,CAAmBvF,IAA5E,EAAN;AARJ;AAUD;;;WAED,8BAAqBU,UAArB,EAAiC4E,QAAjC,EAA2C;AACzC,gCACE5E,UAAU,CAAC6E,OADb;AAAA,UAAOS,UAAP,uBAAOA,UAAP;AAAA,UAAmBC,UAAnB,uBAAmBA,UAAnB;AAAA,UAA+BC,YAA/B,uBAA+BA,YAA/B;AAAA,UAA6CC,kBAA7C,uBAA6CA,kBAA7C;AAAA,UAAiEC,WAAjE,uBAAiEA,WAAjE;AAEA,UAAOC,SAAP,GAAqCL,UAArC,CAAOK,SAAP;AAAA,UAAkBC,OAAlB,GAAqCN,UAArC,CAAkBM,OAAlB;AAAA,UAA2BC,MAA3B,GAAqCP,UAArC,CAA2BO,MAA3B;;AAEA,UAAI,CAACF,SAAL,EAAgB;AACd,eAAO,IAAP;AACD;;AACD,UAAMlG,IAAI,GAAImF,QAAQ,IAAIA,QAAQ,CAACpE,KAAT,CAAef,IAA5B,IAAqC;AAChDqG,QAAAA,MAAM,EAAE;AACNC,UAAAA,WAAW,EAAER;AADP,SADwC;AAIhDD,QAAAA,UAAU,EAAE;AACVU,UAAAA,QAAQ,EAAEL,SADA;AAEVM,UAAAA,MAAM,EAAEL,OAFE;AAGVM,UAAAA,OAAO,EAAEL;AAHC;AAJoC,OAAlD;AAWA,wBAAmC,KAAKrF,KAAxC;AAAA,UAAOhB,SAAP,eAAOA,SAAP;AAAA,UAAkBH,aAAlB,eAAkBA,aAAlB;AACA,UAAM8G,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoCC,uBAApC,CAAtB;AACA,aAAO,IAAIF,aAAJ,CACL;AACE3G,QAAAA,SAAS,EAATA;AADF,OADK,EAIL,KAAK8G,gBAAL,CAAsB;AACpBvE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CAJK,EAOL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2B/B,UAAU,CAAC+B,EAAtC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEP,QAAAA,IAAI,EAAJA,IAHF;AAIE8G,QAAAA,gBAAgB,EAAEC,yBAAkBC,aAJtC;AAKEC,QAAAA,gBAAgB,EAAEjB,kBALpB;AAMEC,QAAAA,WAAW,EAAXA,WANF;AAOEiB,QAAAA,QAAQ,EAAEnB,YAAY,IAAInG,aAP5B;AAQEuH,QAAAA,OAAO,EAAE;AARX,OAPK,CAAP;AAkBD;;;WAED,2BAAkB5G,UAAlB,EAA8B;AAC5B,iCAA2DA,UAAU,CAAC6E,OAAtE;AAAA,UAAOgC,IAAP,wBAAOA,IAAP;AAAA,UAAaC,SAAb,wBAAaA,SAAb;AAAA,UAAwBrB,kBAAxB,wBAAwBA,kBAAxB;AAAA,UAA4CC,WAA5C,wBAA4CA,WAA5C;AAEA,UAAMS,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoCW,2BAApC,CAAtB;AAEA,aAAO,IAAIZ,aAAJ,CACL;AACEa,QAAAA,SAAS,EAAE;AADb,OADK,EAIL,KAAKV,gBAAL,CAAsB;AACpBvE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CAJK,EAOL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2B/B,UAAU,CAAC+B,EAAtC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEP,QAAAA,IAAI,EAAEqH,SAAS,IAAI3H,WAHrB;AAIE8H,QAAAA,UAAU,EAAEJ,IAJd;AAMEN,QAAAA,gBAAgB,EAAEC,yBAAkBC,aANtC;AAOEC,QAAAA,gBAAgB,EAAEjB,kBAPpB;AAQEC,QAAAA,WAAW,EAAXA,WARF;AASEwB,QAAAA,kBAAkB,EAAE,4BAAAC,QAAQ;AAAA,iBAAIA,QAAQ,CAACzB,WAAb;AAAA,SAT9B;AAUE0B,QAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAVf;AAWER,QAAAA,OAAO,EAAE;AAXX,OAPK,CAAP;AAqBD;;;WAED,8BAAqB5G,UAArB,EAAiC4E,QAAjC,EAA2C;AACzC,UAAMC,OAAO,GAAG7E,UAAU,CAAC6E,OAA3B;AACA,UACES,UADF,GAQIT,OARJ,CACES,UADF;AAAA,UAEE+B,OAFF,GAQIxC,OARJ,CAEEwC,OAFF;AAAA,UAGE3B,WAHF,GAQIb,OARJ,CAGEa,WAHF;AAAA,UAIED,kBAJF,GAQIZ,OARJ,CAIEY,kBAJF;AAAA,kCAQIZ,OARJ,CAKE0B,gBALF;AAAA,UAKEA,gBALF,sCAKqBC,yBAAkBC,aALvC;AAAA,UAMEa,QANF,GAQIzC,OARJ,CAMEyC,QANF;AAAA,UAOEC,UAPF,GAQI1C,OARJ,CAOE0C,UAPF;AASA,UAAOjH,aAAP,GAAwB,KAAKE,KAA7B,CAAOF,aAAP;AAEA,UAAMkH,QAAQ,GACX5C,QAAQ,IAAIA,QAAQ,CAACpE,KAAT,CAAeiH,IAA5B,IACA,IAAIC,cAAJ,CAAa;AACXC,QAAAA,QAAQ,GADG;AAEXrC,QAAAA,UAAU,EAAEsC,eAAe,CAACtC,UAAD,CAFhB;AAGX+B,QAAAA,OAAO,EAAPA;AAHW,OAAb,CAFF;AAQA,UAAMlB,aAAa,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8ByB,kBAA9B,CAAtB;AAEA,aAAO,IAAI1B,aAAJ,CACL,KAAKG,gBAAL,CAAsB;AACpBvE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CADK,EAIL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,mBAAqB/B,UAAU,CAAC+B,EAAhC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEyH,QAAAA,IAAI,EAAED,QAHR;AAIE/H,QAAAA,IAAI,EAAEN,WAJR;AAKEwH,QAAAA,QAAQ,EAAErG,aAAa,CAACN,UAAD,CALzB;AAME8H,QAAAA,WAAW,EAAER,QANf;AAOE5B,QAAAA,WAAW,EAAXA,WAPF;AAQEgB,QAAAA,gBAAgB,EAAEjB,kBARpB;AASEc,QAAAA,gBAAgB,EAAhBA,gBATF;AAUEgB,QAAAA,UAAU,EAAVA,UAVF;AAWEX,QAAAA,OAAO,EAAE;AAXX,OAJK,CAAP;AAkBD;;;WAED,wBAAe;AAAA;;AACb,yBAA8B,KAAKjG,KAAnC;AAAA,UAAOd,SAAP,gBAAOA,SAAP;AAAA,UAAkBe,QAAlB,gBAAkBA,QAAlB;;AACA,UAAI,CAACf,SAAL,EAAgB;AACd,eAAO,IAAP;AACD;;AAED,aAAOA,SAAS,CAACkI,KAAV,CACJC,GADI,CACA,UAAA7H,IAAI,EAAI;AACX,YAAM8H,UAAU,GAAIrH,QAAQ,CAACT,IAAI,CAAC4B,EAAN,CAAR,GAAoBnB,QAAQ,CAACT,IAAI,CAAC4B,EAAN,CAAR,IAAqB;AAAC5B,UAAAA,IAAI,EAAJA;AAAD,SAA7D;AACA,YAAKyC,KAAL,GAAcqF,UAAd,CAAKrF,KAAL;;AACA,YAAIzC,IAAI,CAAC2C,QAAT,EAAmB;AAEjB,cAAI,CAACF,KAAL,EAAY;AAEVA,YAAAA,KAAK,GAAG,MAAI,CAACsF,YAAL,CAAkB/H,IAAlB,CAAR;AACD,WAHD,MAGO,IAAI8H,UAAU,CAACrG,WAAf,EAA4B;AAEjCgB,YAAAA,KAAK,GAAG,MAAI,CAACsF,YAAL,CAAkB/H,IAAlB,EAAwByC,KAAxB,CAAR;AACAqF,YAAAA,UAAU,CAACrG,WAAX,GAAyB,KAAzB;AACD;AACF;;AACDqG,QAAAA,UAAU,CAACrF,KAAX,GAAmBA,KAAnB;AACA,eAAOA,KAAP;AACD,OAjBI,EAkBJuF,MAlBI,CAkBGC,OAlBH,CAAP;AAmBD;;;EA/SsCC,qB;;;;AAkTzC,SAAST,eAAT,CAAyBU,iBAAzB,EAA4C;AAC1C,MAAMhD,UAAU,GAAG,EAAnB;AACAA,EAAAA,UAAU,CAACK,SAAX,mCACK2C,iBAAiB,CAAC3C,SADvB;AAEEpG,IAAAA,KAAK,EAAE,IAAIgJ,YAAJ,CAAiBD,iBAAiB,CAAC3C,SAAlB,CAA4BpG,KAA7C;AAFT;;AAIA,MAAI+I,iBAAiB,CAAC1C,OAAtB,EAA+B;AAC7BN,IAAAA,UAAU,CAACM,OAAX,GAAqB0C,iBAAiB,CAAC1C,OAAvC;AACD;;AACD,MAAI0C,iBAAiB,CAACE,SAAtB,EAAiC;AAC/BlD,IAAAA,UAAU,CAACkD,SAAX,GAAuBF,iBAAiB,CAACE,SAAzC;AACD;;AACD,MAAIF,iBAAiB,CAACzC,MAAtB,EAA8B;AAC5BP,IAAAA,UAAU,CAACO,MAAX,GAAoByC,iBAAiB,CAACzC,MAAtC;AACD;;AACD,MAAIyC,iBAAiB,CAACG,SAAtB,EAAiC;AAC/BnD,IAAAA,UAAU,CAACmD,SAAX,GAAuBH,iBAAiB,CAACG,SAAzC;AACD;;AACD,SAAOnD,UAAP;AACD;;AAED/E,WAAW,CAACmI,SAAZ,GAAwB,aAAxB;AACAnI,WAAW,CAACnB,YAAZ,GAA2BA,YAA3B","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\nimport {COORDINATE_SYSTEM, CompositeLayer} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as _MeshLayer} from '../mesh-layer/mesh-layer';\nimport {log} from '@deck.gl/core';\n\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\nexport default class Tile3DLayer extends CompositeLayer {\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded() {\n const {tileset3d} = this.state;\n return tileset3d && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport) {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}) {\n const {tile} = layer.props;\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","layer","viewportId","selected","viewportIds","includes","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","MeshLayer","pbrMaterial","tiles","map","layerCache","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as MeshLayer} from '../mesh-layer/mesh-layer';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // @ts-expect-error Disable async data loading (handling it in _loadTileSet)\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps<DataT>;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\nexport default class Tile3DLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps as any;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport: Viewport): void {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState!.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n"],"file":"tile-3d-layer.js"}
|
|
@@ -43,7 +43,10 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
43
43
|
|
|
44
44
|
var defaultProps = {
|
|
45
45
|
TilesetClass: _tileset2d.default,
|
|
46
|
-
data:
|
|
46
|
+
data: {
|
|
47
|
+
type: 'data',
|
|
48
|
+
value: []
|
|
49
|
+
},
|
|
47
50
|
dataComparator: _utils.urlType.equals,
|
|
48
51
|
renderSubLayers: {
|
|
49
52
|
type: 'function',
|
|
@@ -336,8 +339,10 @@ var TileLayer = function (_CompositeLayer) {
|
|
|
336
339
|
}, {
|
|
337
340
|
key: "filterSubLayer",
|
|
338
341
|
value: function filterSubLayer(_ref4) {
|
|
339
|
-
var layer = _ref4.layer
|
|
340
|
-
|
|
342
|
+
var layer = _ref4.layer,
|
|
343
|
+
cullRect = _ref4.cullRect;
|
|
344
|
+
var tile = layer.props.tile;
|
|
345
|
+
return this.state.tileset.isTileVisible(tile, cullRect);
|
|
341
346
|
}
|
|
342
347
|
}]);
|
|
343
348
|
return TileLayer;
|