@pirireis/webglobeplugins 1.2.11 → 1.2.13
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/package.json +1 -1
- package/programs/totems/attachments/dem-textures-manager.js +2 -1
- package/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.js +28 -0
- package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +3 -15
- package/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.js +4 -1
package/package.json
CHANGED
|
@@ -143,7 +143,8 @@ export class DemTextureManager {
|
|
|
143
143
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
144
144
|
// turn off premultiply alpha
|
|
145
145
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);
|
|
146
|
-
|
|
146
|
+
const length = Math.min(this.mergedData.length, MAXLAYERS);
|
|
147
|
+
for (let i = 0; i < length; i++) {
|
|
147
148
|
const { mesh, bbox, coverRatio } = this.mergedData[i];
|
|
148
149
|
gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, 0, // mip level
|
|
149
150
|
0, // xoffset
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { DemTextureManagerCache } from "../../../../programs/totems/attachments/dem-textures-manager";
|
|
2
2
|
import { RADIAN } from "../../../../Math/methods";
|
|
3
3
|
export class WorkerContact {
|
|
4
|
+
globe;
|
|
4
5
|
_masterWorker;
|
|
5
6
|
_options;
|
|
6
7
|
onResult;
|
|
7
8
|
demTextureManager = null;
|
|
8
9
|
constructor(globe, options, onResult) {
|
|
10
|
+
this.globe = globe;
|
|
9
11
|
this._options = options;
|
|
10
12
|
this.onResult = onResult;
|
|
11
13
|
// Initialize the Master Worker
|
|
@@ -37,6 +39,8 @@ export class WorkerContact {
|
|
|
37
39
|
maxY: bbox.ur.y * RADIAN,
|
|
38
40
|
};
|
|
39
41
|
}
|
|
42
|
+
const { Tilt } = this.globe.api_GetCurrentLookInfo();
|
|
43
|
+
fineTuneBboxZooms(bboxesData, Tilt);
|
|
40
44
|
// Send BBOX updates to Master Worker
|
|
41
45
|
this._masterWorker.postMessage({
|
|
42
46
|
bboxes: bboxesData
|
|
@@ -74,3 +78,27 @@ export class WorkerContact {
|
|
|
74
78
|
});
|
|
75
79
|
}
|
|
76
80
|
}
|
|
81
|
+
function fineTuneBboxZooms(bboxZooms, tilt) {
|
|
82
|
+
if (bboxZooms.length >= 3 && tilt > 55) {
|
|
83
|
+
const first = bboxZooms.shift();
|
|
84
|
+
bboxZooms[0].minX = Math.min(first.minX, bboxZooms[0].minX);
|
|
85
|
+
bboxZooms[0].minY = Math.min(first.minY, bboxZooms[0].minY);
|
|
86
|
+
bboxZooms[0].maxX = Math.max(first.maxX, bboxZooms[0].maxX);
|
|
87
|
+
bboxZooms[0].maxY = Math.max(first.maxY, bboxZooms[0].maxY);
|
|
88
|
+
bboxZooms[1].zoom = bboxZooms[0].zoom;
|
|
89
|
+
if (tilt > 65) {
|
|
90
|
+
bboxZooms[2].zoom = bboxZooms[0].zoom;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (bboxZooms.length >= 3 && bboxZooms[0].zoom > 12) {
|
|
94
|
+
const first = bboxZooms.shift();
|
|
95
|
+
bboxZooms[0].zoom = first.zoom;
|
|
96
|
+
bboxZooms[0].minX = Math.min(first.minX, bboxZooms[0].minX);
|
|
97
|
+
bboxZooms[0].minY = Math.min(first.minY, bboxZooms[0].minY);
|
|
98
|
+
bboxZooms[0].maxX = Math.max(first.maxX, bboxZooms[0].maxX);
|
|
99
|
+
bboxZooms[0].maxY = Math.max(first.maxY, bboxZooms[0].maxY);
|
|
100
|
+
}
|
|
101
|
+
while (bboxZooms.length > 6) {
|
|
102
|
+
bboxZooms.pop();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -7,17 +7,6 @@ let _pickableState = false;
|
|
|
7
7
|
let _arcState = false;
|
|
8
8
|
let _variativeColorsOnState = false;
|
|
9
9
|
let showThreshold = 0;
|
|
10
|
-
function fineTuneBboxZooms(bboxZooms) {
|
|
11
|
-
if (bboxZooms.length >= 3 && bboxZooms[0].zoom > 12) {
|
|
12
|
-
const first = bboxZooms.shift();
|
|
13
|
-
bboxZooms[0].zoom = first.zoom;
|
|
14
|
-
bboxZooms[0].minX = Math.min(first.minX, bboxZooms[0].minX);
|
|
15
|
-
bboxZooms[0].minY = Math.min(first.minY, bboxZooms[0].minY);
|
|
16
|
-
bboxZooms[0].maxX = Math.max(first.maxX, bboxZooms[0].maxX);
|
|
17
|
-
bboxZooms[0].maxY = Math.max(first.maxY, bboxZooms[0].maxY);
|
|
18
|
-
}
|
|
19
|
-
return bboxZooms;
|
|
20
|
-
}
|
|
21
10
|
const NO_COLOR_ALPHA = 255;
|
|
22
11
|
const MAX_ALPHA_VALUE = 254;
|
|
23
12
|
function clamp01(value) {
|
|
@@ -64,10 +53,9 @@ self.onmessage = (event) => {
|
|
|
64
53
|
}
|
|
65
54
|
// Update bboxes if provided
|
|
66
55
|
if (bboxes) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
showThreshold = zoomLevelShowThreshold(fineTunedBboxes[0].zoom, 0.05);
|
|
56
|
+
cache.setBBOXes(bboxes);
|
|
57
|
+
if (bboxes.length > 0) {
|
|
58
|
+
showThreshold = zoomLevelShowThreshold(bboxes[0].zoom, 0.05);
|
|
71
59
|
}
|
|
72
60
|
}
|
|
73
61
|
const trianglesInView = cache.search();
|
|
@@ -228,7 +228,10 @@ export class TerrainPolygonSemiPlugin {
|
|
|
228
228
|
setUsePickedColorState(state, target = "polygon") {
|
|
229
229
|
throw new Error("use setChangeColorOnHoverState instead");
|
|
230
230
|
}
|
|
231
|
-
setOpacity(
|
|
231
|
+
setOpacity() {
|
|
232
|
+
throw new Error("use setOpacities instead");
|
|
233
|
+
}
|
|
234
|
+
setOpacities(opacities) {
|
|
232
235
|
if (opacities.common !== undefined) {
|
|
233
236
|
opacityCheck(opacities.common);
|
|
234
237
|
this._options.opacity = opacities.common;
|