@deck.gl/extensions 8.10.0-alpha.2 → 8.10.0-alpha.5
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/LICENSE +1 -1
- package/dist/dist.dev.js +38 -660
- package/dist/es5/brushing/brushing-extension.js +48 -54
- package/dist/es5/brushing/brushing-extension.js.map +1 -1
- package/dist/es5/clip/clip-extension.js +32 -37
- package/dist/es5/clip/clip-extension.js.map +1 -1
- package/dist/es5/collision-filter/collision-filter-effect.js +217 -225
- package/dist/es5/collision-filter/collision-filter-effect.js.map +1 -1
- package/dist/es5/collision-filter/collision-filter-extension.js +49 -56
- package/dist/es5/collision-filter/collision-filter-extension.js.map +1 -1
- package/dist/es5/collision-filter/collision-filter-pass.js +31 -34
- package/dist/es5/collision-filter/collision-filter-pass.js.map +1 -1
- package/dist/es5/data-filter/data-filter-extension.js +126 -132
- package/dist/es5/data-filter/data-filter-extension.js.map +1 -1
- package/dist/es5/fill-style/fill-style-extension.js +101 -109
- package/dist/es5/fill-style/fill-style-extension.js.map +1 -1
- package/dist/es5/fp64/fp64-extension.js +12 -16
- package/dist/es5/fp64/fp64-extension.js.map +1 -1
- package/dist/es5/mask/mask-effect.js +208 -216
- package/dist/es5/mask/mask-effect.js.map +1 -1
- package/dist/es5/mask/mask-extension.js +57 -63
- package/dist/es5/mask/mask-extension.js.map +1 -1
- package/dist/es5/mask/mask-pass.js +36 -42
- package/dist/es5/mask/mask-pass.js.map +1 -1
- package/dist/es5/path-style/path-style-extension.js +81 -89
- package/dist/es5/path-style/path-style-extension.js.map +1 -1
- package/dist/es5/terrain/height-map-builder.js +73 -80
- package/dist/es5/terrain/height-map-builder.js.map +1 -1
- package/dist/es5/terrain/terrain-cover.js +155 -162
- package/dist/es5/terrain/terrain-cover.js.map +1 -1
- package/dist/es5/terrain/terrain-effect.js +233 -242
- package/dist/es5/terrain/terrain-effect.js.map +1 -1
- package/dist/es5/terrain/terrain-extension.js +44 -51
- package/dist/es5/terrain/terrain-extension.js.map +1 -1
- package/dist/es5/terrain/terrain-pass.js +61 -65
- package/dist/es5/terrain/terrain-pass.js.map +1 -1
- package/dist/es5/terrain/terrain-picking-pass.js +56 -62
- package/dist/es5/terrain/terrain-picking-pass.js.map +1 -1
- package/dist/esm/brushing/brushing-extension.js +2 -5
- package/dist/esm/brushing/brushing-extension.js.map +1 -1
- package/dist/esm/brushing/shader-module.js +67 -4
- package/dist/esm/brushing/shader-module.js.map +1 -1
- package/dist/esm/clip/clip-extension.js +33 -14
- package/dist/esm/clip/clip-extension.js.map +1 -1
- package/dist/esm/collision-filter/collision-filter-effect.js +10 -19
- package/dist/esm/collision-filter/collision-filter-effect.js.map +1 -1
- package/dist/esm/collision-filter/collision-filter-extension.js +2 -5
- package/dist/esm/collision-filter/collision-filter-extension.js.map +1 -1
- package/dist/esm/collision-filter/shader-module.js +76 -4
- package/dist/esm/collision-filter/shader-module.js.map +1 -1
- package/dist/esm/data-filter/aggregator.js +45 -2
- package/dist/esm/data-filter/aggregator.js.map +1 -1
- package/dist/esm/data-filter/data-filter-extension.js +2 -5
- package/dist/esm/data-filter/data-filter-extension.js.map +1 -1
- package/dist/esm/data-filter/shader-module.js +86 -6
- package/dist/esm/data-filter/shader-module.js.map +1 -1
- package/dist/esm/fill-style/fill-style-extension.js +2 -5
- package/dist/esm/fill-style/fill-style-extension.js.map +1 -1
- package/dist/esm/fill-style/shaders.glsl.js +60 -5
- package/dist/esm/fill-style/shaders.glsl.js.map +1 -1
- package/dist/esm/fp64/fp64-extension.js +1 -3
- package/dist/esm/fp64/fp64-extension.js.map +1 -1
- package/dist/esm/fp64/project64.glsl.js +81 -1
- package/dist/esm/fp64/project64.glsl.js.map +1 -1
- package/dist/esm/mask/mask-effect.js +10 -20
- package/dist/esm/mask/mask-effect.js.map +1 -1
- package/dist/esm/mask/mask-extension.js +3 -6
- package/dist/esm/mask/mask-extension.js.map +1 -1
- package/dist/esm/mask/mask-pass.js +2 -6
- package/dist/esm/mask/mask-pass.js.map +1 -1
- package/dist/esm/mask/shader-module.js +61 -6
- package/dist/esm/mask/shader-module.js.map +1 -1
- package/dist/esm/path-style/path-style-extension.js +2 -5
- package/dist/esm/path-style/path-style-extension.js.map +1 -1
- package/dist/esm/path-style/shaders.glsl.js +79 -8
- package/dist/esm/path-style/shaders.glsl.js.map +1 -1
- package/dist/esm/terrain/height-map-builder.js +8 -17
- package/dist/esm/terrain/height-map-builder.js.map +1 -1
- package/dist/esm/terrain/shader-module.js +59 -7
- package/dist/esm/terrain/shader-module.js.map +1 -1
- package/dist/esm/terrain/terrain-cover.js +11 -22
- package/dist/esm/terrain/terrain-cover.js.map +1 -1
- package/dist/esm/terrain/terrain-effect.js +11 -21
- package/dist/esm/terrain/terrain-effect.js.map +1 -1
- package/dist/esm/terrain/terrain-extension.js +2 -5
- package/dist/esm/terrain/terrain-extension.js.map +1 -1
- package/dist/esm/terrain/terrain-pass.js +1 -1
- package/dist/esm/terrain/terrain-pass.js.map +1 -1
- package/dist/esm/terrain/terrain-picking-pass.js +2 -4
- package/dist/esm/terrain/terrain-picking-pass.js.map +1 -1
- package/dist.min.js +36 -35
- package/package.json +2 -2
- package/typed/brushing/brushing.d.ts +0 -39
- package/typed/brushing/brushing.d.ts.map +0 -1
- package/typed/brushing/brushing.js +0 -83
- package/typed/brushing/shader-module.js +0 -116
- package/typed/clip/clip.d.ts +0 -32
- package/typed/clip/clip.d.ts.map +0 -1
- package/typed/clip/clip.js +0 -114
- package/typed/collide/collide-effect.d.ts +0 -28
- package/typed/collide/collide-effect.d.ts.map +0 -1
- package/typed/collide/collide-pass.d.ts +0 -14
- package/typed/collide/collide-pass.d.ts.map +0 -1
- package/typed/collide/collide.d.ts +0 -41
- package/typed/collide/collide.d.ts.map +0 -1
- package/typed/collide/shader-module.d.ts +0 -4
- package/typed/collide/shader-module.d.ts.map +0 -1
- package/typed/collision-filter/collision-filter.d.ts +0 -41
- package/typed/collision-filter/collision-filter.d.ts.map +0 -1
- package/typed/common/projection-utils.d.ts +0 -27
- package/typed/common/projection-utils.d.ts.map +0 -1
- package/typed/data-filter/aggregator.js +0 -98
- package/typed/data-filter/data-filter.d.ts +0 -90
- package/typed/data-filter/data-filter.d.ts.map +0 -1
- package/typed/data-filter/data-filter.js +0 -159
- package/typed/data-filter/shader-module.js +0 -152
- package/typed/fill-style/fill-style.d.ts +0 -86
- package/typed/fill-style/fill-style.d.ts.map +0 -1
- package/typed/fill-style/fill-style.js +0 -152
- package/typed/fill-style/shaders.glsl.js +0 -95
- package/typed/fp64/fp64.d.ts +0 -8
- package/typed/fp64/fp64.d.ts.map +0 -1
- package/typed/fp64/fp64.js +0 -34
- package/typed/fp64/project64.glsl.js +0 -100
- package/typed/fp64/project64.js +0 -50
- package/typed/index.js +0 -9
- package/typed/mask/mask.d.ts +0 -30
- package/typed/mask/mask.d.ts.map +0 -1
- package/typed/mask/mask.js +0 -48
- package/typed/mask/shader-module.js +0 -73
- package/typed/mask/utils.d.ts +0 -13
- package/typed/mask/utils.d.ts.map +0 -1
- package/typed/path-style/path-style.d.ts +0 -66
- package/typed/path-style/path-style.d.ts.map +0 -1
- package/typed/path-style/path-style.js +0 -107
- package/typed/path-style/shaders.glsl.js +0 -93
- package/typed/terrain/height-map.d.ts +0 -27
- package/typed/terrain/height-map.d.ts.map +0 -1
- package/typed/terrain/shader-module-offset.d.ts +0 -4
- package/typed/terrain/shader-module-offset.d.ts.map +0 -1
- package/typed/terrain/shader-module-source.d.ts +0 -4
- package/typed/terrain/shader-module-source.d.ts.map +0 -1
- package/typed/terrain/terrain.d.ts +0 -21
- package/typed/terrain/terrain.d.ts.map +0 -1
|
@@ -9,10 +9,6 @@ exports.HeightMapBuilder = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
12
|
var _core = require("@luma.gl/core");
|
|
17
13
|
|
|
18
14
|
var _projectionUtils = require("../utils/projection-utils");
|
|
@@ -22,99 +18,96 @@ var _utils = require("./utils");
|
|
|
22
18
|
var MAP_MAX_SIZE = 2048;
|
|
23
19
|
|
|
24
20
|
var HeightMapBuilder = function () {
|
|
21
|
+
HeightMapBuilder.isSupported = function isSupported(gl) {
|
|
22
|
+
return _core.Framebuffer.isSupported(gl, {
|
|
23
|
+
colorBufferFloat: true
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
25
27
|
function HeightMapBuilder(gl) {
|
|
26
28
|
(0, _classCallCheck2.default)(this, HeightMapBuilder);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
this.renderViewport = null;
|
|
30
|
+
this.bounds = null;
|
|
31
|
+
this.fbo = void 0;
|
|
32
|
+
this.gl = void 0;
|
|
33
|
+
this.layers = [];
|
|
34
|
+
this.layersBounds = [];
|
|
35
|
+
this.layersBoundsCommon = null;
|
|
36
|
+
this.lastViewport = null;
|
|
35
37
|
this.gl = gl;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
key: "getRenderFramebuffer",
|
|
40
|
-
value: function getRenderFramebuffer() {
|
|
41
|
-
if (!this.renderViewport) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
40
|
+
var _proto = HeightMapBuilder.prototype;
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
});
|
|
50
|
-
}
|
|
42
|
+
_proto.getRenderFramebuffer = function getRenderFramebuffer() {
|
|
43
|
+
if (!this.renderViewport) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
if (!this.fbo) {
|
|
48
|
+
this.fbo = (0, _utils.createRenderTarget)(this.gl, {
|
|
49
|
+
id: 'height-map',
|
|
50
|
+
float: true
|
|
51
|
+
});
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
|
|
54
|
+
return this.fbo;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
_proto.shouldUpdate = function shouldUpdate(_ref) {
|
|
58
|
+
var _this = this;
|
|
59
|
+
|
|
60
|
+
var layers = _ref.layers,
|
|
61
|
+
viewport = _ref.viewport;
|
|
62
|
+
var layersChanged = layers.length !== this.layers.length || layers.some(function (layer, i) {
|
|
63
|
+
return layer !== _this.layers[i] || layer.props.transitions || layer.getBounds() !== _this.layersBounds[i];
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
if (layersChanged) {
|
|
67
|
+
this.layers = layers;
|
|
68
|
+
this.layersBounds = layers.map(function (layer) {
|
|
69
|
+
return layer.getBounds();
|
|
63
70
|
});
|
|
71
|
+
this.layersBoundsCommon = (0, _projectionUtils.joinLayerBounds)(layers, viewport);
|
|
72
|
+
}
|
|
64
73
|
|
|
65
|
-
|
|
66
|
-
this.layers = layers;
|
|
67
|
-
this.layersBounds = layers.map(function (layer) {
|
|
68
|
-
return layer.getBounds();
|
|
69
|
-
});
|
|
70
|
-
this.layersBoundsCommon = (0, _projectionUtils.joinLayerBounds)(layers, viewport);
|
|
71
|
-
}
|
|
74
|
+
var viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
if (!this.layersBoundsCommon) {
|
|
77
|
+
this.renderViewport = null;
|
|
78
|
+
} else if (layersChanged || viewportChanged) {
|
|
79
|
+
var bounds = (0, _projectionUtils.getRenderBounds)(this.layersBoundsCommon, viewport);
|
|
74
80
|
|
|
75
|
-
if (
|
|
81
|
+
if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
|
|
76
82
|
this.renderViewport = null;
|
|
77
|
-
|
|
78
|
-
var bounds = (0, _projectionUtils.getRenderBounds)(this.layersBoundsCommon, viewport);
|
|
79
|
-
|
|
80
|
-
if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
|
|
81
|
-
this.renderViewport = null;
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
this.bounds = bounds;
|
|
86
|
-
this.lastViewport = viewport;
|
|
87
|
-
var scale = viewport.scale;
|
|
88
|
-
var pixelWidth = (bounds[2] - bounds[0]) * scale;
|
|
89
|
-
var pixelHeight = (bounds[3] - bounds[1]) * scale;
|
|
90
|
-
this.renderViewport = pixelWidth > 0 || pixelHeight > 0 ? (0, _projectionUtils.makeViewport)({
|
|
91
|
-
bounds: [viewport.center[0] - 1, viewport.center[1] - 1, viewport.center[0] + 1, viewport.center[1] + 1],
|
|
92
|
-
zoom: viewport.zoom,
|
|
93
|
-
width: Math.min(pixelWidth, MAP_MAX_SIZE),
|
|
94
|
-
height: Math.min(pixelHeight, MAP_MAX_SIZE),
|
|
95
|
-
viewport: viewport
|
|
96
|
-
}) : null;
|
|
97
|
-
return true;
|
|
83
|
+
return false;
|
|
98
84
|
}
|
|
99
85
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
86
|
+
this.bounds = bounds;
|
|
87
|
+
this.lastViewport = viewport;
|
|
88
|
+
var scale = viewport.scale;
|
|
89
|
+
var pixelWidth = (bounds[2] - bounds[0]) * scale;
|
|
90
|
+
var pixelHeight = (bounds[3] - bounds[1]) * scale;
|
|
91
|
+
this.renderViewport = pixelWidth > 0 || pixelHeight > 0 ? (0, _projectionUtils.makeViewport)({
|
|
92
|
+
bounds: [viewport.center[0] - 1, viewport.center[1] - 1, viewport.center[0] + 1, viewport.center[1] + 1],
|
|
93
|
+
zoom: viewport.zoom,
|
|
94
|
+
width: Math.min(pixelWidth, MAP_MAX_SIZE),
|
|
95
|
+
height: Math.min(pixelHeight, MAP_MAX_SIZE),
|
|
96
|
+
viewport: viewport
|
|
97
|
+
}) : null;
|
|
98
|
+
return true;
|
|
109
99
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
100
|
+
|
|
101
|
+
return false;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
_proto.delete = function _delete() {
|
|
105
|
+
if (this.fbo) {
|
|
106
|
+
this.fbo.color.delete();
|
|
107
|
+
this.fbo.delete();
|
|
116
108
|
}
|
|
117
|
-
}
|
|
109
|
+
};
|
|
110
|
+
|
|
118
111
|
return HeightMapBuilder;
|
|
119
112
|
}();
|
|
120
113
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain/height-map-builder.ts"],"names":["MAP_MAX_SIZE","HeightMapBuilder","gl","renderViewport","fbo","id","float","
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/height-map-builder.ts"],"names":["MAP_MAX_SIZE","HeightMapBuilder","isSupported","gl","Framebuffer","colorBufferFloat","renderViewport","bounds","fbo","layers","layersBounds","layersBoundsCommon","lastViewport","getRenderFramebuffer","id","float","shouldUpdate","viewport","layersChanged","length","some","layer","i","props","transitions","getBounds","map","viewportChanged","equals","scale","pixelWidth","pixelHeight","center","zoom","width","Math","min","height","delete","color"],"mappings":"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","sourcesContent":["import {Framebuffer} from '@luma.gl/core';\nimport {joinLayerBounds, getRenderBounds, makeViewport, Bounds} from '../utils/projection-utils';\nimport {createRenderTarget} from './utils';\n\nimport type {Viewport, Layer} from '@deck.gl/core';\n\nconst MAP_MAX_SIZE = 2048;\n\n/**\n * Manages the lifecycle of the height map (a framebuffer that encodes elevation).\n * One instance of height map is is shared across all layers. It is updated when the viewport changes\n * or when some terrain source layer's data changes.\n * During the draw call of any terrainDrawMode:offset layers,\n * the vertex shader reads from this framebuffer to retrieve its z offset.\n */\nexport class HeightMapBuilder {\n /** Viewport used to draw into the texture */\n renderViewport: Viewport | null = null;\n /** Bounds of the height map texture, in cartesian space */\n bounds: Bounds | null = null;\n\n protected fbo?: Framebuffer;\n protected gl: WebGLRenderingContext;\n /** Last rendered layers */\n private layers: Layer[] = [];\n /** Last layer.getBounds() */\n private layersBounds: ([number[], number[]] | null)[] = [];\n /** The union of layersBounds in cartesian space */\n private layersBoundsCommon: Bounds | null = null;\n private lastViewport: Viewport | null = null;\n\n static isSupported(gl: WebGLRenderingContext): boolean {\n return Framebuffer.isSupported(gl, {colorBufferFloat: true});\n }\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n }\n\n /** Returns the height map framebuffer for read/write access.\n * Returns null when the texture is invalid.\n */\n getRenderFramebuffer(): Framebuffer | null {\n if (!this.renderViewport) {\n return null;\n }\n if (!this.fbo) {\n this.fbo = createRenderTarget(this.gl, {id: 'height-map', float: true});\n }\n return this.fbo;\n }\n\n /** Called every render cycle to check if the framebuffer needs update */\n shouldUpdate({layers, viewport}: {layers: Layer[]; viewport: Viewport}): boolean {\n const layersChanged =\n layers.length !== this.layers.length ||\n layers.some(\n (layer, i) =>\n // Layer instance is updated\n // Layer props might have changed\n // Undetermined props could have an effect on the output geometry of a terrain source,\n // for example getElevation+updateTriggers, elevationScale, modelMatrix\n layer !== this.layers[i] ||\n // Some prop is in transition\n layer.props.transitions ||\n // Layer's geometry bounds have changed\n layer.getBounds() !== this.layersBounds[i]\n );\n\n if (layersChanged) {\n // Recalculate cached bounds\n this.layers = layers;\n this.layersBounds = layers.map(layer => layer.getBounds());\n this.layersBoundsCommon = joinLayerBounds(layers, viewport);\n }\n\n const viewportChanged = !this.lastViewport || !viewport.equals(this.lastViewport);\n\n if (!this.layersBoundsCommon) {\n this.renderViewport = null;\n } else if (layersChanged || viewportChanged) {\n const bounds = getRenderBounds(this.layersBoundsCommon, viewport);\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n this.renderViewport = null;\n return false;\n }\n\n this.bounds = bounds;\n this.lastViewport = viewport;\n\n const scale = viewport.scale;\n const pixelWidth = (bounds[2] - bounds[0]) * scale;\n const pixelHeight = (bounds[3] - bounds[1]) * scale;\n\n this.renderViewport =\n pixelWidth > 0 || pixelHeight > 0\n ? makeViewport({\n // It's not important whether the geometry is visible in this viewport, because\n // vertices will not use the standard project_to_clipspace in the DRAW_TO_HEIGHT_MAP shader\n // However the viewport must have the same center and zoom as the screen viewport\n // So that projection uniforms used for calculating z are the same\n bounds: [\n viewport.center[0] - 1,\n viewport.center[1] - 1,\n viewport.center[0] + 1,\n viewport.center[1] + 1\n ],\n zoom: viewport.zoom,\n width: Math.min(pixelWidth, MAP_MAX_SIZE),\n height: Math.min(pixelHeight, MAP_MAX_SIZE),\n viewport\n })\n : null;\n return true;\n }\n return false;\n }\n\n delete() {\n if (this.fbo) {\n this.fbo.color.delete();\n this.fbo.delete();\n }\n }\n}\n"],"file":"height-map-builder.js"}
|
|
@@ -11,8 +11,6 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
13
|
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
14
|
var _utils = require("./utils");
|
|
17
15
|
|
|
18
16
|
var _projectionUtils = require("../utils/projection-utils");
|
|
@@ -26,200 +24,195 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
26
24
|
var TerrainCover = function () {
|
|
27
25
|
function TerrainCover(targetLayer) {
|
|
28
26
|
(0, _classCallCheck2.default)(this, TerrainCover);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
this.isDirty = true;
|
|
28
|
+
this.targetLayer = void 0;
|
|
29
|
+
this.renderViewport = null;
|
|
30
|
+
this.bounds = null;
|
|
31
|
+
this.fbo = void 0;
|
|
32
|
+
this.pickingFbo = void 0;
|
|
33
|
+
this.layers = [];
|
|
34
|
+
this.tile = void 0;
|
|
35
|
+
this.targetBounds = null;
|
|
36
|
+
this.targetBoundsCommon = null;
|
|
39
37
|
this.targetLayer = targetLayer;
|
|
40
38
|
this.tile = getTile(targetLayer);
|
|
41
39
|
}
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
key: "id",
|
|
45
|
-
get: function get() {
|
|
46
|
-
return this.targetLayer.id;
|
|
47
|
-
}
|
|
48
|
-
}, {
|
|
49
|
-
key: "isActive",
|
|
50
|
-
get: function get() {
|
|
51
|
-
return Boolean(this.targetLayer.getCurrentLayer());
|
|
52
|
-
}
|
|
53
|
-
}, {
|
|
54
|
-
key: "shouldUpdate",
|
|
55
|
-
value: function shouldUpdate(_ref) {
|
|
56
|
-
var targetLayer = _ref.targetLayer,
|
|
57
|
-
viewport = _ref.viewport,
|
|
58
|
-
layers = _ref.layers,
|
|
59
|
-
layerNeedsRedraw = _ref.layerNeedsRedraw;
|
|
60
|
-
|
|
61
|
-
if (targetLayer) {
|
|
62
|
-
this.targetLayer = targetLayer;
|
|
63
|
-
}
|
|
41
|
+
var _proto = TerrainCover.prototype;
|
|
64
42
|
|
|
65
|
-
|
|
66
|
-
|
|
43
|
+
_proto.shouldUpdate = function shouldUpdate(_ref) {
|
|
44
|
+
var targetLayer = _ref.targetLayer,
|
|
45
|
+
viewport = _ref.viewport,
|
|
46
|
+
layers = _ref.layers,
|
|
47
|
+
layerNeedsRedraw = _ref.layerNeedsRedraw;
|
|
67
48
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
49
|
+
if (targetLayer) {
|
|
50
|
+
this.targetLayer = targetLayer;
|
|
51
|
+
}
|
|
71
52
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var id = _step.value;
|
|
53
|
+
var sizeChanged = viewport ? this._updateViewport(viewport) : false;
|
|
54
|
+
var layersChanged = layers ? this._updateLayers(layers) : false;
|
|
75
55
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
} catch (err) {
|
|
82
|
-
_iterator.e(err);
|
|
83
|
-
} finally {
|
|
84
|
-
_iterator.f();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
56
|
+
if (layerNeedsRedraw) {
|
|
57
|
+
var _iterator = _createForOfIteratorHelper(this.layers),
|
|
58
|
+
_step;
|
|
87
59
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;
|
|
95
|
-
|
|
96
|
-
if (layers.length !== this.layers.length) {
|
|
97
|
-
needsRedraw = true;
|
|
98
|
-
} else {
|
|
99
|
-
for (var i = 0; i < layers.length; i++) {
|
|
100
|
-
var id = layers[i].id;
|
|
101
|
-
|
|
102
|
-
if (id !== this.layers[i]) {
|
|
103
|
-
needsRedraw = true;
|
|
60
|
+
try {
|
|
61
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
62
|
+
var id = _step.value;
|
|
63
|
+
|
|
64
|
+
if (layerNeedsRedraw[id]) {
|
|
65
|
+
layersChanged = true;
|
|
104
66
|
break;
|
|
105
67
|
}
|
|
106
68
|
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
_iterator.e(err);
|
|
71
|
+
} finally {
|
|
72
|
+
_iterator.f();
|
|
107
73
|
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return layersChanged || sizeChanged;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
_proto._updateLayers = function _updateLayers(layers) {
|
|
80
|
+
var needsRedraw = false;
|
|
81
|
+
layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;
|
|
108
82
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
83
|
+
if (layers.length !== this.layers.length) {
|
|
84
|
+
needsRedraw = true;
|
|
85
|
+
} else {
|
|
86
|
+
for (var i = 0; i < layers.length; i++) {
|
|
87
|
+
var id = layers[i].id;
|
|
88
|
+
|
|
89
|
+
if (id !== this.layers[i]) {
|
|
90
|
+
needsRedraw = true;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
113
93
|
}
|
|
94
|
+
}
|
|
114
95
|
|
|
115
|
-
|
|
96
|
+
if (needsRedraw) {
|
|
97
|
+
this.layers = layers.map(function (layer) {
|
|
98
|
+
return layer.id;
|
|
99
|
+
});
|
|
116
100
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
var bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);
|
|
128
|
-
var topRightCommon = viewport.projectPosition(this.targetBounds[1]);
|
|
129
|
-
this.targetBoundsCommon = [bottomLeftCommon[0], bottomLeftCommon[1], topRightCommon[0], topRightCommon[1]];
|
|
130
|
-
}
|
|
131
|
-
} else if (this.targetBounds !== targetLayer.getBounds()) {
|
|
101
|
+
|
|
102
|
+
return needsRedraw;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
_proto._updateViewport = function _updateViewport(viewport) {
|
|
106
|
+
var targetLayer = this.targetLayer;
|
|
107
|
+
var shouldRedraw = false;
|
|
108
|
+
|
|
109
|
+
if (this.tile && 'boundingBox' in this.tile) {
|
|
110
|
+
if (!this.targetBounds) {
|
|
132
111
|
shouldRedraw = true;
|
|
133
|
-
this.targetBounds =
|
|
134
|
-
|
|
112
|
+
this.targetBounds = this.tile.boundingBox;
|
|
113
|
+
var bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);
|
|
114
|
+
var topRightCommon = viewport.projectPosition(this.targetBounds[1]);
|
|
115
|
+
this.targetBoundsCommon = [bottomLeftCommon[0], bottomLeftCommon[1], topRightCommon[0], topRightCommon[1]];
|
|
135
116
|
}
|
|
117
|
+
} else if (this.targetBounds !== targetLayer.getBounds()) {
|
|
118
|
+
shouldRedraw = true;
|
|
119
|
+
this.targetBounds = targetLayer.getBounds();
|
|
120
|
+
this.targetBoundsCommon = (0, _projectionUtils.joinLayerBounds)([targetLayer], viewport);
|
|
121
|
+
}
|
|
136
122
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
123
|
+
if (!this.targetBoundsCommon) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
140
126
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if (this.tile) {
|
|
144
|
-
this.bounds = this.targetBoundsCommon;
|
|
145
|
-
} else {
|
|
146
|
-
var _this$renderViewport;
|
|
147
|
-
|
|
148
|
-
var oldZoom = (_this$renderViewport = this.renderViewport) === null || _this$renderViewport === void 0 ? void 0 : _this$renderViewport.zoom;
|
|
149
|
-
shouldRedraw = shouldRedraw || newZoom !== oldZoom;
|
|
150
|
-
var newBounds = (0, _projectionUtils.getRenderBounds)(this.targetBoundsCommon, viewport);
|
|
151
|
-
var oldBounds = this.bounds;
|
|
152
|
-
shouldRedraw = shouldRedraw || !oldBounds || newBounds.some(function (x, i) {
|
|
153
|
-
return x !== oldBounds[i];
|
|
154
|
-
});
|
|
155
|
-
this.bounds = newBounds;
|
|
156
|
-
}
|
|
127
|
+
var newZoom = Math.ceil(viewport.zoom + 0.5);
|
|
157
128
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
viewport: viewport
|
|
163
|
-
});
|
|
164
|
-
}
|
|
129
|
+
if (this.tile) {
|
|
130
|
+
this.bounds = this.targetBoundsCommon;
|
|
131
|
+
} else {
|
|
132
|
+
var _this$renderViewport;
|
|
165
133
|
|
|
166
|
-
|
|
134
|
+
var oldZoom = (_this$renderViewport = this.renderViewport) === null || _this$renderViewport === void 0 ? void 0 : _this$renderViewport.zoom;
|
|
135
|
+
shouldRedraw = shouldRedraw || newZoom !== oldZoom;
|
|
136
|
+
var newBounds = (0, _projectionUtils.getRenderBounds)(this.targetBoundsCommon, viewport);
|
|
137
|
+
var oldBounds = this.bounds;
|
|
138
|
+
shouldRedraw = shouldRedraw || !oldBounds || newBounds.some(function (x, i) {
|
|
139
|
+
return x !== oldBounds[i];
|
|
140
|
+
});
|
|
141
|
+
this.bounds = newBounds;
|
|
167
142
|
}
|
|
168
|
-
}, {
|
|
169
|
-
key: "getRenderFramebuffer",
|
|
170
|
-
value: function getRenderFramebuffer() {
|
|
171
|
-
if (!this.renderViewport || this.layers.length === 0) {
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
143
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
144
|
+
if (shouldRedraw) {
|
|
145
|
+
this.renderViewport = (0, _projectionUtils.makeViewport)({
|
|
146
|
+
bounds: this.bounds,
|
|
147
|
+
zoom: newZoom,
|
|
148
|
+
viewport: viewport
|
|
149
|
+
});
|
|
150
|
+
}
|
|
180
151
|
|
|
181
|
-
|
|
152
|
+
return shouldRedraw;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
_proto.getRenderFramebuffer = function getRenderFramebuffer() {
|
|
156
|
+
if (!this.renderViewport || this.layers.length === 0) {
|
|
157
|
+
return null;
|
|
182
158
|
}
|
|
183
|
-
}, {
|
|
184
|
-
key: "getPickingFramebuffer",
|
|
185
|
-
value: function getPickingFramebuffer() {
|
|
186
|
-
if (!this.renderViewport || this.layers.length === 0 && !this.targetLayer.props.pickable) {
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
159
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
160
|
+
if (!this.fbo) {
|
|
161
|
+
this.fbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
|
|
162
|
+
id: this.id
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return this.fbo;
|
|
167
|
+
};
|
|
195
168
|
|
|
196
|
-
|
|
169
|
+
_proto.getPickingFramebuffer = function getPickingFramebuffer() {
|
|
170
|
+
if (!this.renderViewport || this.layers.length === 0 && !this.targetLayer.props.pickable) {
|
|
171
|
+
return null;
|
|
197
172
|
}
|
|
198
|
-
}, {
|
|
199
|
-
key: "filterLayers",
|
|
200
|
-
value: function filterLayers(layers) {
|
|
201
|
-
var _this = this;
|
|
202
173
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
174
|
+
if (!this.pickingFbo) {
|
|
175
|
+
this.pickingFbo = (0, _utils.createRenderTarget)(this.targetLayer.context.gl, {
|
|
176
|
+
id: "".concat(this.id, "-picking")
|
|
206
177
|
});
|
|
207
178
|
}
|
|
208
|
-
}, {
|
|
209
|
-
key: "delete",
|
|
210
|
-
value: function _delete() {
|
|
211
|
-
var fbo = this.fbo,
|
|
212
|
-
pickingFbo = this.pickingFbo;
|
|
213
|
-
|
|
214
|
-
if (fbo) {
|
|
215
|
-
fbo.texture.delete();
|
|
216
|
-
fbo.delete();
|
|
217
|
-
}
|
|
218
179
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
180
|
+
return this.pickingFbo;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
_proto.filterLayers = function filterLayers(layers) {
|
|
184
|
+
var _this = this;
|
|
185
|
+
|
|
186
|
+
return layers.filter(function (_ref2) {
|
|
187
|
+
var id = _ref2.id;
|
|
188
|
+
return _this.layers.includes(id);
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
_proto.delete = function _delete() {
|
|
193
|
+
var fbo = this.fbo,
|
|
194
|
+
pickingFbo = this.pickingFbo;
|
|
195
|
+
|
|
196
|
+
if (fbo) {
|
|
197
|
+
fbo.texture.delete();
|
|
198
|
+
fbo.delete();
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (pickingFbo) {
|
|
202
|
+
pickingFbo.texture.delete();
|
|
203
|
+
pickingFbo.delete();
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
(0, _createClass2.default)(TerrainCover, [{
|
|
208
|
+
key: "id",
|
|
209
|
+
get: function get() {
|
|
210
|
+
return this.targetLayer.id;
|
|
211
|
+
}
|
|
212
|
+
}, {
|
|
213
|
+
key: "isActive",
|
|
214
|
+
get: function get() {
|
|
215
|
+
return Boolean(this.targetLayer.getCurrentLayer());
|
|
223
216
|
}
|
|
224
217
|
}]);
|
|
225
218
|
return TerrainCover;
|