@openglobus/og 0.11.6 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/og.css +5 -2
- package/package.json +12 -12
- package/src/og/Globe.js +25 -10
- package/src/og/Popup.js +3 -2
- package/src/og/camera/Camera.js +70 -79
- package/src/og/camera/PlanetCamera.js +33 -33
- package/src/og/control/DebugInfo.js +2 -2
- package/src/og/control/EarthNavigation.js +26 -17
- package/src/og/control/Lighting.js +74 -64
- package/src/og/control/MouseNavigation.js +30 -29
- package/src/og/control/MouseWheelZoomControl.js +257 -0
- package/src/og/control/Sun.js +3 -3
- package/src/og/control/index.js +2 -0
- package/src/og/control/visibleExtent/Segment.js +1862 -0
- package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
- package/src/og/control/visibleExtent/drawnode.js +751 -0
- package/src/og/ellipsoid/Ellipsoid.js +1 -1
- package/src/og/entity/BaseBillboard.js +67 -76
- package/src/og/entity/BillboardHandler.js +15 -8
- package/src/og/entity/Entity.js +742 -742
- package/src/og/entity/GeoObjectHandler.js +102 -117
- package/src/og/entity/Label.js +45 -48
- package/src/og/entity/LabelHandler.js +24 -23
- package/src/og/entity/LabelWorker.js +21 -16
- package/src/og/layer/CanvasTiles.js +8 -12
- package/src/og/layer/GeoImage.js +2 -10
- package/src/og/layer/GeoTexture2d.js +2 -10
- package/src/og/layer/GeoVideo.js +2 -10
- package/src/og/layer/Layer.js +23 -32
- package/src/og/layer/Material.js +1 -1
- package/src/og/layer/WMS.js +0 -2
- package/src/og/layer/XYZ.js +31 -33
- package/src/og/math/Vec3.js +18 -2
- package/src/og/quadTree/Node.js +52 -111
- package/src/og/quadTree/quadTree.js +1 -1
- package/src/og/renderer/Renderer.js +85 -122
- package/src/og/renderer/RendererEvents.js +44 -22
- package/src/og/scene/Planet.js +179 -198
- package/src/og/segment/Segment.js +99 -268
- package/src/og/segment/Slice.js +45 -0
- package/src/og/shaders/drawnode.js +174 -360
- package/src/og/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +1 -1
- package/src/og/terrain/EmptyTerrain.js +3 -2
- package/src/og/terrain/GlobusTerrain.js +2 -0
- package/src/og/utils/FontAtlas.js +6 -2
- package/src/og/utils/GeoImageCreator.js +5 -1
- package/src/og/utils/Loader.js +1 -1
- package/src/og/utils/PlainSegmentWorker.js +0 -13
- package/src/og/utils/TextureAtlas.js +2 -2
- package/src/og/utils/VectorTileCreator.js +1 -3
- package/src/og/utils/shared.js +1 -1
- package/src/og/webgl/Handler.js +156 -118
- package/types/Clock.d.ts +0 -94
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -77
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -82
- package/types/ImageCanvas.d.ts +0 -123
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -108
- package/types/Popup.d.ts +0 -42
- package/types/QueueArray.d.ts +0 -19
- package/types/Rectangle.d.ts +0 -80
- package/types/Stack.d.ts +0 -19
- package/types/ajax.d.ts +0 -24
- package/types/arial.d.ts +0 -48
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -7
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -30
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -312
- package/types/camera/Frustum.d.ts +0 -133
- package/types/camera/PlanetCamera.d.ts +0 -218
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/CompassButton.d.ts +0 -17
- package/types/control/Control.d.ts +0 -104
- package/types/control/DebugInfo.d.ts +0 -15
- package/types/control/EarthCoordinates.d.ts +0 -47
- package/types/control/EarthNavigation.d.ts +0 -42
- package/types/control/GeoImageDragControl.d.ts +0 -6
- package/types/control/KeyboardNavigation.d.ts +0 -21
- package/types/control/LayerSwitcher.d.ts +0 -21
- package/types/control/Lighting.d.ts +0 -16
- package/types/control/MouseNavigation.d.ts +0 -47
- package/types/control/ScaleControl.d.ts +0 -22
- package/types/control/ShowFps.d.ts +0 -11
- package/types/control/SimpleNavigation.d.ts +0 -25
- package/types/control/Sun.d.ts +0 -50
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -48
- package/types/control/ZoomControl.d.ts +0 -27
- package/types/control/index.d.ts +0 -17
- package/types/ellipsoid/Ellipsoid.d.ts +0 -146
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -6
- package/types/entity/BaseBillboard.d.ts +0 -215
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -78
- package/types/entity/Entity.d.ts +0 -348
- package/types/entity/EntityCollection.d.ts +0 -317
- package/types/entity/GeoObject.d.ts +0 -111
- package/types/entity/GeoObjectHandler.d.ts +0 -77
- package/types/entity/Geometry.d.ts +0 -74
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -189
- package/types/entity/LabelHandler.d.ts +0 -31
- package/types/entity/LabelWorker.d.ts +0 -9
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -306
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -124
- package/types/entity/RayHandler.d.ts +0 -67
- package/types/entity/ShapeHandler.d.ts +0 -22
- package/types/entity/Strip.d.ts +0 -119
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.core.d.ts +0 -65
- package/types/index.d.ts +0 -45
- package/types/index.webgl.d.ts +0 -7
- package/types/input/KeyboardHandler.d.ts +0 -10
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -34
- package/types/layer/BaseGeoImage.d.ts +0 -94
- package/types/layer/CanvasTiles.d.ts +0 -68
- package/types/layer/GeoImage.d.ts +0 -52
- package/types/layer/GeoTexture2d.d.ts +0 -8
- package/types/layer/GeoVideo.d.ts +0 -55
- package/types/layer/KML.d.ts +0 -63
- package/types/layer/Layer.d.ts +0 -326
- package/types/layer/Material.d.ts +0 -45
- package/types/layer/Vector.d.ts +0 -208
- package/types/layer/WMS.d.ts +0 -63
- package/types/layer/XYZ.d.ts +0 -120
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -178
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -65
- package/types/math/Mat4.d.ts +0 -176
- package/types/math/Plane.d.ts +0 -18
- package/types/math/Quat.d.ts +0 -379
- package/types/math/Ray.d.ts +0 -82
- package/types/math/Vec2.d.ts +0 -309
- package/types/math/Vec3.d.ts +0 -460
- package/types/math/Vec4.d.ts +0 -162
- package/types/math/coder.d.ts +0 -43
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -261
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -6
- package/types/proj/EPSG4326.d.ts +0 -6
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EntityCollectionNode.d.ts +0 -34
- package/types/quadTree/Node.d.ts +0 -61
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -300
- package/types/renderer/RendererEvents.d.ts +0 -233
- package/types/res/images.d.ts +0 -3
- package/types/scene/Axes.d.ts +0 -11
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -577
- package/types/scene/RenderNode.d.ts +0 -142
- package/types/scene/SkyBox.d.ts +0 -10
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -279
- package/types/segment/SegmentLonLat.d.ts +0 -16
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -7
- package/types/shaders/geoObject.d.ts +0 -3
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/shape.d.ts +0 -4
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shapes/BaseShape.d.ts +0 -250
- package/types/shapes/Sphere.d.ts +0 -41
- package/types/terrain/BilTerrain.d.ts +0 -7
- package/types/terrain/EmptyTerrain.d.ts +0 -72
- package/types/terrain/Geoid.d.ts +0 -26
- package/types/terrain/GlobusTerrain.d.ts +0 -116
- package/types/terrain/MapboxTerrain.d.ts +0 -7
- package/types/terrain/index.d.ts +0 -5
- package/types/utils/FontAtlas.d.ts +0 -14
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -25
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -10
- package/types/utils/TerrainWorker.d.ts +0 -9
- package/types/utils/TextureAtlas.d.ts +0 -111
- package/types/utils/VectorTileCreator.d.ts +0 -16
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/shared.d.ts +0 -231
- package/types/webgl/Framebuffer.d.ts +0 -135
- package/types/webgl/Handler.d.ts +0 -397
- package/types/webgl/Multisample.d.ts +0 -89
- package/types/webgl/Program.d.ts +0 -161
- package/types/webgl/ProgramController.d.ts +0 -89
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
// import { QueueArray } from '../QueueArray.js';
|
|
4
4
|
|
|
5
|
+
export const LOCK_UPDATE = -2;
|
|
6
|
+
export const LOCK_FREE = -1;
|
|
7
|
+
|
|
5
8
|
class LabelWorker {
|
|
6
9
|
constructor(numWorkers = 4) {
|
|
7
10
|
this._id = 0;
|
|
@@ -18,7 +21,7 @@ class LabelWorker {
|
|
|
18
21
|
|
|
19
22
|
let s = that._source[e.data.id];
|
|
20
23
|
|
|
21
|
-
if (s.label._lockId ===
|
|
24
|
+
if (s.label._lockId === LOCK_UPDATE) {
|
|
22
25
|
that.make(s.handler, s.label);
|
|
23
26
|
} else {
|
|
24
27
|
s.handler.workerCallback(e.data, s.label);
|
|
@@ -46,14 +49,15 @@ class LabelWorker {
|
|
|
46
49
|
|
|
47
50
|
make(handler, label) {
|
|
48
51
|
|
|
49
|
-
|
|
52
|
+
if (handler._entityCollection) {
|
|
53
|
+
let source = { handler: handler, label: label };
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
if (this._freeWorkerQueue.length) {
|
|
56
|
+
var w = this._freeWorkerQueue.pop();
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
this._source[this._id] = source;
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
let labelData = new Float32Array([
|
|
57
61
|
/*0*/this._id++,
|
|
58
62
|
/*1*/handler._maxLetters,
|
|
59
63
|
/*2*/label.getVisibility() ? 1 : 0,
|
|
@@ -68,17 +72,18 @@ class LabelWorker {
|
|
|
68
72
|
/*22*/label._outline,
|
|
69
73
|
/*23, 24, 25, 26*/label._outlineColor.x, label._outlineColor.y, label._outlineColor.z, label._outlineColor.w,
|
|
70
74
|
/*27, 28, 29*/label._entity._pickingColor.x, label._entity._pickingColor.y, label._entity._pickingColor.z
|
|
71
|
-
|
|
75
|
+
]);
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
label._lockId = this._id;
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
w.postMessage({
|
|
80
|
+
labelData: labelData
|
|
81
|
+
}, [
|
|
82
|
+
labelData.buffer,
|
|
83
|
+
]);
|
|
84
|
+
} else {
|
|
85
|
+
this._pendingQueue.push(source);
|
|
86
|
+
}
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
89
|
}
|
|
@@ -210,4 +215,4 @@ const _programm = `'use strict';
|
|
|
210
215
|
]);
|
|
211
216
|
}`;
|
|
212
217
|
|
|
213
|
-
export { LabelWorker };
|
|
218
|
+
export { LabelWorker };
|
|
@@ -35,7 +35,6 @@ const EVENT_NAMES = [
|
|
|
35
35
|
* @param {String} [name="noname"] - Layer name.
|
|
36
36
|
* @param {Object} options:
|
|
37
37
|
* @param {number} [options.opacity=1.0] - Layer opacity.
|
|
38
|
-
* @param {Array.<number>} [options.transparentColor=[-1,-1,-1]] - RGB color that defines transparent color. (exactly 3 entries)
|
|
39
38
|
* @param {number} [options.minZoom=0] - Minimal visibility zoom level.
|
|
40
39
|
* @param {number} [options.maxZoom=0] - Maximal visibility zoom level.
|
|
41
40
|
* @param {string} [options.attribution] - Layer attribution that displayed in the attribution area on the screen.
|
|
@@ -99,17 +98,14 @@ class CanvasTiles extends Layer {
|
|
|
99
98
|
* @public
|
|
100
99
|
* @param {boolean} visibility - Layer visibility.
|
|
101
100
|
*/
|
|
102
|
-
setVisibility(visibility) {
|
|
101
|
+
setVisibility(visibility) {
|
|
103
102
|
if (visibility !== this._visibility) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
} else if (!visibility) {
|
|
103
|
+
super.setVisibility(visibility);
|
|
104
|
+
|
|
105
|
+
if (!visibility) {
|
|
108
106
|
this.abortLoading();
|
|
109
107
|
}
|
|
110
|
-
|
|
111
|
-
this.events.dispatch(this.events.visibilitychange, this);
|
|
112
|
-
}
|
|
108
|
+
}
|
|
113
109
|
}
|
|
114
110
|
|
|
115
111
|
/**
|
|
@@ -129,7 +125,7 @@ class CanvasTiles extends Layer {
|
|
|
129
125
|
material.texture = seg.planet.transparentTexture;
|
|
130
126
|
}
|
|
131
127
|
|
|
132
|
-
if (this._planet.layerLock.isFree()) {
|
|
128
|
+
if (this._planet.layerLock.isFree() || material.segment.tileZoom < 2) {
|
|
133
129
|
material.isReady = false;
|
|
134
130
|
material.isLoading = true;
|
|
135
131
|
if (CanvasTiles.__requestsCounter >= CanvasTiles.MAX_REQUESTS && this._counter) {
|
|
@@ -241,12 +237,12 @@ class CanvasTiles extends Layer {
|
|
|
241
237
|
var mId = this._id;
|
|
242
238
|
var psegm = material;
|
|
243
239
|
while (pn.parentNode) {
|
|
240
|
+
pn = pn.parentNode;
|
|
241
|
+
psegm = pn.segment.materials[mId];
|
|
244
242
|
if (psegm && psegm.isReady) {
|
|
245
243
|
notEmpty = true;
|
|
246
244
|
break;
|
|
247
245
|
}
|
|
248
|
-
pn = pn.parentNode;
|
|
249
|
-
psegm = pn.segment.materials[mId];
|
|
250
246
|
}
|
|
251
247
|
|
|
252
248
|
if (notEmpty) {
|
package/src/og/layer/GeoImage.js
CHANGED
|
@@ -141,14 +141,10 @@ class GeoImage extends BaseGeoImage {
|
|
|
141
141
|
var sha = sh.attributes,
|
|
142
142
|
shu = sh.uniforms;
|
|
143
143
|
|
|
144
|
-
var tr = this.transparentColor[0],
|
|
145
|
-
tg = this.transparentColor[1],
|
|
146
|
-
tb = this.transparentColor[2];
|
|
147
|
-
|
|
148
144
|
gl.disable(gl.CULL_FACE);
|
|
149
145
|
|
|
150
146
|
f.bindOutputTexture(this._materialTexture);
|
|
151
|
-
gl.clearColor(
|
|
147
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
152
148
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
153
149
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
154
150
|
|
|
@@ -189,14 +185,10 @@ class GeoImage extends BaseGeoImage {
|
|
|
189
185
|
var sha = sh.attributes,
|
|
190
186
|
shu = sh.uniforms;
|
|
191
187
|
|
|
192
|
-
var tr = this.transparentColor[0],
|
|
193
|
-
tg = this.transparentColor[1],
|
|
194
|
-
tb = this.transparentColor[2];
|
|
195
|
-
|
|
196
188
|
gl.disable(gl.CULL_FACE);
|
|
197
189
|
|
|
198
190
|
f.bindOutputTexture(this._materialTexture);
|
|
199
|
-
gl.clearColor(
|
|
191
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
200
192
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
201
193
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
202
194
|
|
|
@@ -67,14 +67,10 @@ class GeoTexture2d extends BaseGeoImage {
|
|
|
67
67
|
var sha = sh.attributes,
|
|
68
68
|
shu = sh.uniforms;
|
|
69
69
|
|
|
70
|
-
var tr = this.transparentColor[0],
|
|
71
|
-
tg = this.transparentColor[1],
|
|
72
|
-
tb = this.transparentColor[2];
|
|
73
|
-
|
|
74
70
|
gl.disable(gl.CULL_FACE);
|
|
75
71
|
|
|
76
72
|
f.bindOutputTexture(this._materialTexture);
|
|
77
|
-
gl.clearColor(
|
|
73
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
78
74
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
79
75
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
80
76
|
|
|
@@ -117,14 +113,10 @@ class GeoTexture2d extends BaseGeoImage {
|
|
|
117
113
|
var sha = sh.attributes,
|
|
118
114
|
shu = sh.uniforms;
|
|
119
115
|
|
|
120
|
-
var tr = this.transparentColor[0],
|
|
121
|
-
tg = this.transparentColor[1],
|
|
122
|
-
tb = this.transparentColor[2];
|
|
123
|
-
|
|
124
116
|
gl.disable(gl.CULL_FACE);
|
|
125
117
|
|
|
126
118
|
f.bindOutputTexture(this._materialTexture);
|
|
127
|
-
gl.clearColor(
|
|
119
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
128
120
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
129
121
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
130
122
|
|
package/src/og/layer/GeoVideo.js
CHANGED
|
@@ -211,14 +211,10 @@ class GeoVideo extends BaseGeoImage {
|
|
|
211
211
|
var sha = sh.attributes,
|
|
212
212
|
shu = sh.uniforms;
|
|
213
213
|
|
|
214
|
-
var tr = this.transparentColor[0],
|
|
215
|
-
tg = this.transparentColor[1],
|
|
216
|
-
tb = this.transparentColor[2];
|
|
217
|
-
|
|
218
214
|
gl.disable(gl.CULL_FACE);
|
|
219
215
|
|
|
220
216
|
f.bindOutputTexture(this._materialTexture);
|
|
221
|
-
gl.clearColor(
|
|
217
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
222
218
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
223
219
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
224
220
|
|
|
@@ -265,14 +261,10 @@ class GeoVideo extends BaseGeoImage {
|
|
|
265
261
|
var sha = sh.attributes,
|
|
266
262
|
shu = sh.uniforms;
|
|
267
263
|
|
|
268
|
-
var tr = this.transparentColor[0],
|
|
269
|
-
tg = this.transparentColor[1],
|
|
270
|
-
tb = this.transparentColor[2];
|
|
271
|
-
|
|
272
264
|
gl.disable(gl.CULL_FACE);
|
|
273
265
|
|
|
274
266
|
f.bindOutputTexture(this._materialTexture);
|
|
275
|
-
gl.clearColor(
|
|
267
|
+
gl.clearColor(0.0, 0.0, 0.0, 0.0);
|
|
276
268
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
277
269
|
gl.bindBuffer(gl.ARRAY_BUFFER, creator._texCoordsBuffer);
|
|
278
270
|
|
package/src/og/layer/Layer.js
CHANGED
|
@@ -11,7 +11,6 @@ import { Extent } from "../Extent.js";
|
|
|
11
11
|
import { LonLat } from "../LonLat.js";
|
|
12
12
|
import { Material } from "./Material.js";
|
|
13
13
|
import { Vec3 } from "../math/Vec3.js";
|
|
14
|
-
import { createTexture } from "../webgl/Handler.js";
|
|
15
14
|
|
|
16
15
|
export const FADING_FACTOR = 0.29;
|
|
17
16
|
|
|
@@ -23,18 +22,14 @@ export const FADING_FACTOR = 0.29;
|
|
|
23
22
|
* @param {String} [name="noname"] - Layer name.
|
|
24
23
|
* @param {Object} [options] - Layer options:
|
|
25
24
|
* @param {number} [options.opacity=1.0] - Layer opacity.
|
|
26
|
-
* @param {Array.<number>} [options.transparentColor=[-1,-1,-1]] - RGB color that defines transparent color. (exactly 3 entries)
|
|
27
25
|
* @param {number} [options.minZoom=0] - Minimal visibility zoom level.
|
|
28
26
|
* @param {number} [options.maxZoom=0] - Maximal visibility zoom level.
|
|
29
27
|
* @param {string} [options.attribution] - Layer attribution that displayed in the attribution area on the screen.
|
|
30
28
|
* @param {boolean} [options.isBaseLayer=false] - This is a base layer.
|
|
31
29
|
* @param {boolean} [options.visibility=true] - Layer visibility.
|
|
30
|
+
* @param {boolean} [options.isSRGB=false] - Layer image webgl nternal format.
|
|
32
31
|
* @param {Extent} [options.extent=[[-180.0, -90.0], [180.0, 90.0]]] - Visible extent.
|
|
33
|
-
* @param {Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color.
|
|
34
|
-
* @param {Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color.
|
|
35
|
-
* @param {Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color.
|
|
36
32
|
* @param {string} [options.textureFilter="anisotropic"] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotropic".
|
|
37
|
-
* @param {Number} [options.shininess=100] - Shininess.
|
|
38
33
|
*
|
|
39
34
|
* @fires og.Layer#visibilitychange
|
|
40
35
|
* @fires og.Layer#add
|
|
@@ -86,13 +81,6 @@ class Layer {
|
|
|
86
81
|
*/
|
|
87
82
|
this._opacity = options.opacity || 1.0;
|
|
88
83
|
|
|
89
|
-
/**
|
|
90
|
-
* Transparent RGB color mask.
|
|
91
|
-
* @public
|
|
92
|
-
* @type {Array.<number>} - (exactly 3 entries)
|
|
93
|
-
*/
|
|
94
|
-
this.transparentColor = options.transparentColor || [-1, -1, -1];
|
|
95
|
-
|
|
96
84
|
/**
|
|
97
85
|
* Minimal zoom level when layer is visibile.
|
|
98
86
|
* @public
|
|
@@ -107,16 +95,6 @@ class Layer {
|
|
|
107
95
|
*/
|
|
108
96
|
this.maxZoom = options.maxZoom || 50;
|
|
109
97
|
|
|
110
|
-
/**
|
|
111
|
-
* Layer light material parameters.
|
|
112
|
-
* @public
|
|
113
|
-
* @type {Object}
|
|
114
|
-
*/
|
|
115
|
-
this.ambient = utils.createColorRGB(options.ambient, new Vec3(0.1, 0.1, 0.21));
|
|
116
|
-
this.diffuse = utils.createColorRGB(options.diffuse, new Vec3(0.5, 0.5, 0.35));
|
|
117
|
-
this.specular = utils.createColorRGB(options.specular, new Vec3(0.0003, 0.00012, 0.00001));
|
|
118
|
-
this.shininess = options.shininess || 20.0;
|
|
119
|
-
|
|
120
98
|
/**
|
|
121
99
|
* Planet node.
|
|
122
100
|
* @protected
|
|
@@ -185,13 +163,13 @@ class Layer {
|
|
|
185
163
|
*/
|
|
186
164
|
this._extent = null;
|
|
187
165
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
166
|
+
this.createTexture = null;
|
|
167
|
+
|
|
168
|
+
this._textureFilter = options.textureFilter ? options.textureFilter.trim().toUpperCase() : "MIPMAP";
|
|
169
|
+
|
|
170
|
+
this._isSRGB = options.isSRGB != undefined ? options.isSRGB : false;
|
|
171
|
+
|
|
172
|
+
this._internalFormat = null;
|
|
195
173
|
|
|
196
174
|
/**
|
|
197
175
|
* Visible mercator extent.
|
|
@@ -333,7 +311,16 @@ class Layer {
|
|
|
333
311
|
* @virtual
|
|
334
312
|
* @param {Planet} planet - Planet render node.
|
|
335
313
|
*/
|
|
336
|
-
_assignPlanet(planet) {
|
|
314
|
+
_assignPlanet(planet) {
|
|
315
|
+
// TODO: webgl1
|
|
316
|
+
if (this._isSRGB) {
|
|
317
|
+
this._internalFormat = planet.renderer.handler.gl.SRGB8_ALPHA8;
|
|
318
|
+
} else {
|
|
319
|
+
this._internalFormat = planet.renderer.handler.gl.RGBA8;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
this.createTexture = planet.renderer.handler.createTexture[this._textureFilter];
|
|
323
|
+
|
|
337
324
|
planet.layers.push(this);
|
|
338
325
|
this._planet = planet;
|
|
339
326
|
this.events.on("visibilitychange", planet._onLayerVisibilityChanged, planet);
|
|
@@ -396,7 +383,11 @@ class Layer {
|
|
|
396
383
|
* @virtual
|
|
397
384
|
*/
|
|
398
385
|
clear() {
|
|
399
|
-
|
|
386
|
+
if (this._planet) {
|
|
387
|
+
this._planet._clearLayerMaterial(this);
|
|
388
|
+
this._internalFormat = null;
|
|
389
|
+
this.createTexture = null;
|
|
390
|
+
}
|
|
400
391
|
}
|
|
401
392
|
|
|
402
393
|
/**
|
package/src/og/layer/Material.js
CHANGED
package/src/og/layer/WMS.js
CHANGED
|
@@ -17,7 +17,6 @@ import { XYZ } from "./XYZ.js";
|
|
|
17
17
|
* @param {string} name - Layer name.
|
|
18
18
|
* @param {Object} options - Options:
|
|
19
19
|
* @param {number} [options.opacity=1.0] - Layer opacity.
|
|
20
|
-
* @param {Array.<number>} [options.transparentColor=[-1,-1,-1]] - RGB color that defines transparent color.
|
|
21
20
|
* @param {number} [options.minZoom=0] - Minimal visibility zoom level.
|
|
22
21
|
* @param {number} [options.maxZoom=0] - Maximal visibility zoom level.
|
|
23
22
|
* @param {string} [options.attribution] - Layer attribution that displayed in the attribution area on the screen.
|
|
@@ -36,7 +35,6 @@ import { XYZ } from "./XYZ.js";
|
|
|
36
35
|
* opacity: 0.5,
|
|
37
36
|
* zIndex: 50,
|
|
38
37
|
* attribution: 'USA states - geoserver WMS example',
|
|
39
|
-
* transparentColor: [1.0, 1.0, 1.0],
|
|
40
38
|
* version: "1.1.1",
|
|
41
39
|
* visibility: false }
|
|
42
40
|
* );
|
package/src/og/layer/XYZ.js
CHANGED
|
@@ -17,7 +17,6 @@ import { RENDERING } from "../quadTree/quadTree.js";
|
|
|
17
17
|
* @param {string} name - Layer name.
|
|
18
18
|
* @param {Object} options:
|
|
19
19
|
* @param {number} [options.opacity=1.0] - Layer opacity.
|
|
20
|
-
* @param {Array.<number>} [options.transparentColor=[-1,-1,-1]] - RGB color that defines transparent color. (exactly 3 entries)
|
|
21
20
|
* @param {Array.<string>} [options.subdomains=['a','b','c']] - Subdomains of the tile service.
|
|
22
21
|
* @param {number} [options.minZoom=0] - Minimal visibility zoom level.
|
|
23
22
|
* @param {number} [options.maxZoom=0] - Maximal visibility zoom level.
|
|
@@ -51,8 +50,6 @@ class XYZ extends Layer {
|
|
|
51
50
|
|
|
52
51
|
this.events.registerNames(EVENT_NAMES);
|
|
53
52
|
|
|
54
|
-
this.transparentColor = options.transparentColor || [-1, -1, -1];
|
|
55
|
-
|
|
56
53
|
/**
|
|
57
54
|
* Tile url source template.
|
|
58
55
|
* @public
|
|
@@ -103,8 +100,10 @@ class XYZ extends Layer {
|
|
|
103
100
|
* Abort loading tiles.
|
|
104
101
|
* @public
|
|
105
102
|
*/
|
|
106
|
-
abortLoading() {
|
|
107
|
-
this._planet
|
|
103
|
+
abortLoading() {
|
|
104
|
+
if (this._planet) {
|
|
105
|
+
this._planet._tileLoader.abort();
|
|
106
|
+
}
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
/**
|
|
@@ -152,8 +151,9 @@ class XYZ extends Layer {
|
|
|
152
151
|
} else {
|
|
153
152
|
material.texture = seg.planet.transparentTexture;
|
|
154
153
|
}
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
|
|
155
|
+
// Q: Maybe we should change "<2" to material.segment.tileZoom < (material.layer.minZoom + 1)
|
|
156
|
+
if (this._planet.layerLock.isFree() || material.segment.tileZoom < 2) {
|
|
157
157
|
material.isReady = false;
|
|
158
158
|
material.isLoading = true;
|
|
159
159
|
|
|
@@ -238,9 +238,6 @@ class XYZ extends Layer {
|
|
|
238
238
|
if (material.isReady) {
|
|
239
239
|
return material.texOffset;
|
|
240
240
|
} else {
|
|
241
|
-
// if (material.loadingAttempts > 20) {
|
|
242
|
-
// debugger;
|
|
243
|
-
// }
|
|
244
241
|
|
|
245
242
|
let segment = material.segment,
|
|
246
243
|
pn = segment.node,
|
|
@@ -249,34 +246,35 @@ class XYZ extends Layer {
|
|
|
249
246
|
let mId = this._id;
|
|
250
247
|
let psegm = material;
|
|
251
248
|
while (pn.parentNode) {
|
|
249
|
+
pn = pn.parentNode;
|
|
250
|
+
psegm = pn.segment.materials[mId];
|
|
252
251
|
if (psegm && psegm.textureExists) {
|
|
253
252
|
notEmpty = true;
|
|
254
253
|
break;
|
|
255
254
|
}
|
|
256
|
-
pn = pn.parentNode;
|
|
257
|
-
psegm = pn.segment.materials[mId];
|
|
258
255
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
} else {
|
|
267
|
-
let pn = segment.node;
|
|
268
|
-
while (pn.segment.tileZoom > material.layer.maxNativeZoom) {
|
|
269
|
-
pn = pn.parentNode;
|
|
270
|
-
}
|
|
271
|
-
let pnm = pn.segment.materials[material.layer._id];
|
|
272
|
-
if (pnm) {
|
|
273
|
-
!pnm.isLoading && !pnm.isReady && this.loadMaterial(pnm, true);
|
|
256
|
+
|
|
257
|
+
if (segment.passReady) {
|
|
258
|
+
let maxNativeZoom = material.layer.maxNativeZoom;
|
|
259
|
+
if (pn.segment.tileZoom === maxNativeZoom) {
|
|
260
|
+
material.textureNotExists();
|
|
261
|
+
} else if (material.segment.tileZoom <= maxNativeZoom) {
|
|
262
|
+
!material.isLoading && !material.isReady && this.loadMaterial(material);
|
|
274
263
|
} else {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
264
|
+
let pn = segment.node;
|
|
265
|
+
while (pn.segment.tileZoom > material.layer.maxNativeZoom) {
|
|
266
|
+
pn = pn.parentNode;
|
|
267
|
+
}
|
|
268
|
+
let pnm = pn.segment.materials[material.layer._id];
|
|
269
|
+
if (pnm) {
|
|
270
|
+
!pnm.isLoading && !pnm.isReady && this.loadMaterial(pnm, true);
|
|
271
|
+
} else {
|
|
272
|
+
pnm = pn.segment.materials[material.layer._id] = material.layer.createMaterial(
|
|
273
|
+
pn.segment
|
|
274
|
+
);
|
|
275
|
+
this.loadMaterial(pnm, true);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
280
278
|
}
|
|
281
279
|
|
|
282
280
|
if (notEmpty) {
|
|
@@ -314,7 +312,7 @@ class XYZ extends Layer {
|
|
|
314
312
|
|
|
315
313
|
material.isReady = false;
|
|
316
314
|
material.textureExists = false;
|
|
317
|
-
material.isLoading = false;
|
|
315
|
+
material.isLoading = false;
|
|
318
316
|
}
|
|
319
317
|
|
|
320
318
|
/**
|
package/src/og/math/Vec3.js
CHANGED
|
@@ -699,8 +699,24 @@ export class Vec3 {
|
|
|
699
699
|
* @param {Vec3} point3 - Distant point.
|
|
700
700
|
* @returns {number} -
|
|
701
701
|
*/
|
|
702
|
-
distance(point3) {
|
|
703
|
-
|
|
702
|
+
distance(point3) {
|
|
703
|
+
let dx = this.x - point3.x,
|
|
704
|
+
dy = this.y - point3.y,
|
|
705
|
+
dz = this.z - point3.z;
|
|
706
|
+
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* Gets square distance to point.
|
|
711
|
+
* @public
|
|
712
|
+
* @param {Vec3} point3 - Distant point.
|
|
713
|
+
* @returns {number} -
|
|
714
|
+
*/
|
|
715
|
+
distance2(point3) {
|
|
716
|
+
let dx = this.x - point3.x,
|
|
717
|
+
dy = this.y - point3.y,
|
|
718
|
+
dz = this.z - point3.z;
|
|
719
|
+
return dx * dx + dy * dy + dz * dz;
|
|
704
720
|
}
|
|
705
721
|
|
|
706
722
|
/**
|