@openglobus/og 0.14.10 → 0.15.0
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 +378 -275
- package/dist/@openglobus/og.css +1 -1
- package/dist/@openglobus/og.esm.js +2 -2
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +2 -2
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/package.json +18 -17
- package/src/og/Clock.js +218 -194
- package/src/og/Globe.js +5 -5
- package/src/og/Object3d.js +104 -145
- package/src/og/camera/Camera.js +31 -27
- package/src/og/camera/PlanetCamera.js +22 -14
- package/src/og/cons.js +107 -107
- package/src/og/control/Atmosphere.js +396 -0
- package/src/og/control/CompassButton.js +11 -18
- package/src/og/control/Control.js +187 -188
- package/src/og/control/GeoImageDragControl.js +84 -66
- package/src/og/control/LayerSwitcher.js +56 -138
- package/src/og/control/Lighting.js +314 -186
- package/src/og/control/MouseNavigation.js +2 -2
- package/src/og/control/RulerSwitcher.js +24 -19
- package/src/og/control/ScaleControl.js +30 -10
- package/src/og/control/SimpleSkyBackground.js +210 -0
- package/src/og/control/Sun.js +2 -0
- package/src/og/control/ZoomControl.js +30 -42
- package/src/og/control/index.js +6 -0
- package/src/og/control/ruler/RulerScene.js +5 -23
- package/src/og/control/selection/Selection.js +99 -0
- package/src/og/control/selection/SelectionScene.js +350 -0
- package/src/og/control/timeline/TimelineControl.js +99 -0
- package/src/og/control/timeline/TimelineModel.js +133 -0
- package/src/og/control/timeline/TimelineView.js +449 -0
- package/src/og/control/timeline/timelineUtils.js +132 -0
- package/src/og/ellipsoid/Ellipsoid.js +120 -93
- package/src/og/ellipsoid/wgs84.js +13 -13
- package/src/og/entity/Entity.js +36 -9
- package/src/og/entity/EntityCollection.js +0 -2
- package/src/og/entity/GeoObject.js +72 -56
- package/src/og/entity/GeoObjectHandler.js +487 -656
- package/src/og/entity/GeometryHandler.js +1341 -1337
- package/src/og/entity/Polyline.js +0 -16
- package/src/og/entity/Ray.js +0 -10
- package/src/og/entity/RayHandler.js +3 -44
- package/src/og/entity/Strip.js +1 -6
- package/src/og/index.js +10 -6
- package/src/og/input/input.js +3 -1
- package/src/og/layer/CanvasTiles.js +39 -34
- package/src/og/layer/Layer.js +69 -9
- package/src/og/layer/Material.js +1 -8
- package/src/og/layer/WMS.js +16 -5
- package/src/og/light/LightSource.js +2 -0
- package/src/og/math/Line3.js +140 -139
- package/src/og/math/Plane.js +118 -117
- package/src/og/math/Ray.js +242 -239
- package/src/og/math/Vec3.js +56 -37
- package/src/og/math/Vec4.js +3 -4
- package/src/og/math.js +21 -21
- package/src/og/quadTree/Node.js +5 -4
- package/src/og/quadTree/index.js +12 -0
- package/src/og/renderer/Renderer.js +64 -37
- package/src/og/renderer/RendererEvents.js +1071 -1065
- package/src/og/scene/Planet.js +352 -172
- package/src/og/scene/RenderNode.js +27 -12
- package/src/og/segment/Segment.js +0 -5
- package/src/og/shaders/atmos.js +332 -0
- package/src/og/shaders/drawnode.js +475 -109
- package/src/og/shaders/geoObject.js +96 -51
- package/src/og/shaders/polyline.js +212 -17
- package/src/og/shaders/ray.js +13 -6
- package/src/og/shaders/toneMapping.js +5 -5
- package/src/og/shaders/utils.js +88 -0
- package/src/og/terrain/GlobusTerrain.js +5 -4
- package/src/og/terrain/MapboxTerrain.js +231 -52
- package/src/og/ui/Button.js +106 -0
- package/src/og/ui/ButtonGroup.js +57 -0
- package/src/og/ui/Dialog.js +242 -0
- package/src/og/ui/Slider.js +144 -0
- package/src/og/ui/ToggleButton.js +51 -0
- package/src/og/{control → ui}/UIhelpers.js +11 -2
- package/src/og/ui/View.js +190 -0
- package/src/og/utils/shared.js +960 -942
- package/src/og/webgl/Framebuffer.js +308 -387
- package/src/og/webgl/Handler.js +90 -30
- package/src/og/webgl/Multisample.js +8 -0
- package/types/Clock.d.ts +7 -2
- package/types/Object3d.d.ts +14 -3
- package/types/camera/Camera.d.ts +18 -17
- package/types/camera/PlanetCamera.d.ts +3 -1
- package/types/control/Atmosphere.d.ts +15 -0
- package/types/control/CompassButton.d.ts +1 -2
- package/types/control/GeoImageDragControl.d.ts +7 -1
- package/types/control/LayerSwitcher.d.ts +5 -6
- package/types/control/Lighting.d.ts +32 -7
- package/types/control/ScaleControl.d.ts +2 -1
- package/types/control/SimpleSkyBackground.d.ts +15 -0
- package/types/control/ZoomControl.d.ts +0 -1
- package/types/control/index.d.ts +4 -1
- package/types/control/ruler/RulerScene.d.ts +0 -1
- package/types/control/selection/Selection.d.ts +49 -0
- package/types/control/selection/SelectionScene.d.ts +34 -0
- package/types/ellipsoid/Ellipsoid.d.ts +3 -2
- package/types/entity/Entity.d.ts +8 -0
- package/types/entity/GeoObject.d.ts +28 -22
- package/types/entity/GeoObjectHandler.d.ts +16 -56
- package/types/entity/Ray.d.ts +0 -3
- package/types/entity/RayHandler.d.ts +0 -4
- package/types/index.d.ts +7 -5
- package/types/input/input.d.ts +2 -0
- package/types/layer/CanvasTiles.d.ts +1 -0
- package/types/layer/Layer.d.ts +9 -0
- package/types/layer/WMS.d.ts +7 -3
- package/types/math/Plane.d.ts +1 -1
- package/types/math/Vec3.d.ts +19 -16
- package/types/math/Vec4.d.ts +2 -3
- package/types/math.d.ts +20 -20
- package/types/quadTree/index.d.ts +10 -0
- package/types/renderer/Renderer.d.ts +11 -37
- package/types/scene/Planet.d.ts +27 -1
- package/types/scene/RenderNode.d.ts +2 -1
- package/types/segment/Segment.d.ts +1 -1
- package/types/shaders/atmos.d.ts +4 -0
- package/types/shaders/drawnode.d.ts +3 -2
- package/types/shaders/utils.d.ts +1 -0
- package/types/terrain/GlobusTerrain.d.ts +1 -1
- package/types/terrain/MapboxTerrain.d.ts +2 -1
- package/types/ui/Button.d.ts +21 -0
- package/types/ui/Dialog.d.ts +41 -0
- package/types/ui/Slider.d.ts +30 -0
- package/types/ui/ToggleButton.d.ts +10 -0
- package/types/{control → ui}/UIhelpers.d.ts +1 -1
- package/types/ui/View.d.ts +32 -0
- package/types/utils/shared.d.ts +16 -14
- package/types/webgl/Framebuffer.d.ts +2 -5
- package/types/webgl/Handler.d.ts +15 -10
- package/types/webgl/Multisample.d.ts +2 -0
- package/src/og/ajax.js +0 -204
- package/src/og/entity/Object3d.js +0 -504
- package/src/og/utils/quadTreeType.js +0 -11
- package/types/ajax.d.ts +0 -24
- package/types/utils/quadTreeType.d.ts +0 -8
|
@@ -1995,14 +1995,6 @@ class Polyline {
|
|
|
1995
1995
|
|
|
1996
1996
|
sh.activate();
|
|
1997
1997
|
|
|
1998
|
-
gl.enable(gl.BLEND);
|
|
1999
|
-
gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);
|
|
2000
|
-
gl.blendFuncSeparate(
|
|
2001
|
-
gl.SRC_ALPHA,
|
|
2002
|
-
gl.ONE_MINUS_SRC_ALPHA,
|
|
2003
|
-
gl.ONE,
|
|
2004
|
-
gl.ONE_MINUS_SRC_ALPHA
|
|
2005
|
-
);
|
|
2006
1998
|
gl.disable(gl.CULL_FACE);
|
|
2007
1999
|
|
|
2008
2000
|
gl.uniform1f(shu.depthOffset, ec.polygonOffsetUnits + window.POLYLINE_DEPTH_OFFSET);
|
|
@@ -2058,14 +2050,6 @@ class Polyline {
|
|
|
2058
2050
|
|
|
2059
2051
|
sh.activate();
|
|
2060
2052
|
|
|
2061
|
-
gl.enable(gl.BLEND);
|
|
2062
|
-
gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);
|
|
2063
|
-
gl.blendFuncSeparate(
|
|
2064
|
-
gl.SRC_ALPHA,
|
|
2065
|
-
gl.ONE_MINUS_SRC_ALPHA,
|
|
2066
|
-
gl.ONE,
|
|
2067
|
-
gl.ONE_MINUS_SRC_ALPHA
|
|
2068
|
-
);
|
|
2069
2053
|
gl.disable(gl.CULL_FACE);
|
|
2070
2054
|
|
|
2071
2055
|
gl.uniform1f(shu.depthOffset, this._handler._entityCollection.polygonOffsetUnits + window.POLYLINE_DEPTH_OFFSET);
|
package/src/og/entity/Ray.js
CHANGED
|
@@ -34,11 +34,6 @@ class Ray {
|
|
|
34
34
|
// Thickenss
|
|
35
35
|
this._thickness = options.thickness || 2.0;
|
|
36
36
|
|
|
37
|
-
// RTE length
|
|
38
|
-
this._length = options.length || 0.0;
|
|
39
|
-
this._lengthHighLow = new Float32Array(2);
|
|
40
|
-
doubleToTwoFloats2(this._length, this._lengthHighLow);
|
|
41
|
-
|
|
42
37
|
// RTE start position
|
|
43
38
|
this._startPosition = utils.createVector3(options.startPosition);
|
|
44
39
|
this._startPositionHigh = new Vec3();
|
|
@@ -172,11 +167,6 @@ class Ray {
|
|
|
172
167
|
);
|
|
173
168
|
}
|
|
174
169
|
|
|
175
|
-
setLength(length) {
|
|
176
|
-
this._length = length;
|
|
177
|
-
this._handler && this._handler.setLengthArr(this._handlerIndex, length);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
170
|
setThickness(thickness) {
|
|
181
171
|
this._thickness = thickness;
|
|
182
172
|
this._handler && this._handler.setThicknessArr(this._handlerIndex, thickness);
|
|
@@ -6,10 +6,9 @@ import { concatArrays, makeArrayTyped, spliceArray } from "../utils/shared.js";
|
|
|
6
6
|
const PICKINGCOLOR_BUFFER = 0;
|
|
7
7
|
const START_POSITION_BUFFER = 1;
|
|
8
8
|
const END_POSITION_BUFFER = 2;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const VERTEX_BUFFER = 6;
|
|
9
|
+
const RGBA_BUFFER = 3;
|
|
10
|
+
const THICKNESS_BUFFER = 4;
|
|
11
|
+
const VERTEX_BUFFER = 5;
|
|
13
12
|
|
|
14
13
|
/*
|
|
15
14
|
* og.RayHandler
|
|
@@ -36,7 +35,6 @@ class RayHandler {
|
|
|
36
35
|
this._startPositionLowBuffer = null;
|
|
37
36
|
this._endPositionHighBuffer = null;
|
|
38
37
|
this._endPositionLowBuffer = null;
|
|
39
|
-
this._lengthBuffer = null;
|
|
40
38
|
this._thicknessBuffer = null;
|
|
41
39
|
this._rgbaBuffer = null;
|
|
42
40
|
|
|
@@ -45,7 +43,6 @@ class RayHandler {
|
|
|
45
43
|
this._startPositionLowArr = [];
|
|
46
44
|
this._endPositionHighArr = [];
|
|
47
45
|
this._endPositionLowArr = [];
|
|
48
|
-
this._lengthArr = [];
|
|
49
46
|
this._thicknessArr = [];
|
|
50
47
|
this._rgbaArr = [];
|
|
51
48
|
|
|
@@ -56,7 +53,6 @@ class RayHandler {
|
|
|
56
53
|
this._buffersUpdateCallbacks[VERTEX_BUFFER] = this.createVertexBuffer;
|
|
57
54
|
this._buffersUpdateCallbacks[START_POSITION_BUFFER] = this.createStartPositionBuffer;
|
|
58
55
|
this._buffersUpdateCallbacks[END_POSITION_BUFFER] = this.createEndPositionBuffer;
|
|
59
|
-
this._buffersUpdateCallbacks[LENGTH_BUFFER] = this.createLengthBuffer;
|
|
60
56
|
this._buffersUpdateCallbacks[THICKNESS_BUFFER] = this.createThicknessBuffer;
|
|
61
57
|
this._buffersUpdateCallbacks[RGBA_BUFFER] = this.createRgbaBuffer;
|
|
62
58
|
this._buffersUpdateCallbacks[PICKINGCOLOR_BUFFER] = this.createPickingColorBuffer;
|
|
@@ -124,7 +120,6 @@ class RayHandler {
|
|
|
124
120
|
this._startPositionLowArr = null;
|
|
125
121
|
this._endPositionHighArr = null;
|
|
126
122
|
this._endPositionLowArr = null;
|
|
127
|
-
this._lengthArr = null;
|
|
128
123
|
this._thicknessArr = null;
|
|
129
124
|
this._rgbaArr = null;
|
|
130
125
|
|
|
@@ -133,7 +128,6 @@ class RayHandler {
|
|
|
133
128
|
this._startPositionLowArr = new Float32Array();
|
|
134
129
|
this._endPositionHighArr = new Float32Array();
|
|
135
130
|
this._endPositionLowArr = new Float32Array();
|
|
136
|
-
this._lengthArr = new Float32Array();
|
|
137
131
|
this._thicknessArr = new Float32Array();
|
|
138
132
|
this._rgbaArr = new Float32Array();
|
|
139
133
|
|
|
@@ -150,7 +144,6 @@ class RayHandler {
|
|
|
150
144
|
gl.deleteBuffer(this._startPositionLowBuffer);
|
|
151
145
|
gl.deleteBuffer(this._endPositionHighBuffer);
|
|
152
146
|
gl.deleteBuffer(this._endPositionLowBuffer);
|
|
153
|
-
gl.deleteBuffer(this._lengthBuffer);
|
|
154
147
|
gl.deleteBuffer(this._thicknessBuffer);
|
|
155
148
|
gl.deleteBuffer(this._rgbaBuffer);
|
|
156
149
|
gl.deleteBuffer(this._vertexBuffer);
|
|
@@ -159,7 +152,6 @@ class RayHandler {
|
|
|
159
152
|
this._startPositionLowBuffer = null;
|
|
160
153
|
this._endPositionHighBuffer = null;
|
|
161
154
|
this._endPositionLowBuffer = null;
|
|
162
|
-
this._lengthBuffer = null;
|
|
163
155
|
this._thicknessBuffer = null;
|
|
164
156
|
this._rgbaBuffer = null;
|
|
165
157
|
this._vertexBuffer = null;
|
|
@@ -300,9 +292,6 @@ class RayHandler {
|
|
|
300
292
|
x = ray._thickness;
|
|
301
293
|
this._thicknessArr = concatArrays(this._thicknessArr, [x, x, x, x, x, x]);
|
|
302
294
|
|
|
303
|
-
x = ray._length;
|
|
304
|
-
this._lengthArr = concatArrays(this._lengthArr, [x, x, x, x, x, x]);
|
|
305
|
-
|
|
306
295
|
let r0 = ray._startColor.x,
|
|
307
296
|
g0 = ray._startColor.y,
|
|
308
297
|
b0 = ray._startColor.z,
|
|
@@ -439,9 +428,6 @@ class RayHandler {
|
|
|
439
428
|
0
|
|
440
429
|
);
|
|
441
430
|
|
|
442
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this._lengthBuffer);
|
|
443
|
-
gl.vertexAttribPointer(sha.a_length, this._lengthBuffer.itemSize, gl.FLOAT, false, 0, 0);
|
|
444
|
-
|
|
445
431
|
gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
|
|
446
432
|
gl.vertexAttribPointer(sha.a_vertices, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
|
|
447
433
|
|
|
@@ -492,7 +478,6 @@ class RayHandler {
|
|
|
492
478
|
|
|
493
479
|
i = ri * 6;
|
|
494
480
|
this._thicknessArr = spliceArray(this._thicknessArr, i, 6);
|
|
495
|
-
this._lengthArr = spliceArray(this._lengthArr, i, 6);
|
|
496
481
|
|
|
497
482
|
this.reindexRaysArray(ri);
|
|
498
483
|
this.refresh();
|
|
@@ -732,20 +717,6 @@ class RayHandler {
|
|
|
732
717
|
this._changedBuffers[THICKNESS_BUFFER] = true;
|
|
733
718
|
}
|
|
734
719
|
|
|
735
|
-
setLengthArr(index, length) {
|
|
736
|
-
var i = index * 6;
|
|
737
|
-
var a = this._lengthArr;
|
|
738
|
-
|
|
739
|
-
a[i] = length;
|
|
740
|
-
a[i + 1] = length;
|
|
741
|
-
a[i + 2] = length;
|
|
742
|
-
a[i + 3] = length;
|
|
743
|
-
a[i + 4] = length;
|
|
744
|
-
a[i + 5] = length;
|
|
745
|
-
|
|
746
|
-
this._changedBuffers[LENGTH_BUFFER] = true;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
720
|
setVisibility(index, visibility) {
|
|
750
721
|
var vArr;
|
|
751
722
|
if (visibility) {
|
|
@@ -839,18 +810,6 @@ class RayHandler {
|
|
|
839
810
|
);
|
|
840
811
|
}
|
|
841
812
|
|
|
842
|
-
createLengthBuffer() {
|
|
843
|
-
var h = this._renderer.handler;
|
|
844
|
-
h.gl.deleteBuffer(this._lengthBuffer);
|
|
845
|
-
this._lengthArr = makeArrayTyped(this._lengthArr);
|
|
846
|
-
this._lengthBuffer = h.createArrayBuffer(
|
|
847
|
-
this._lengthArr,
|
|
848
|
-
1,
|
|
849
|
-
this._lengthArr.length,
|
|
850
|
-
h.gl.DYNAMIC_DRAW
|
|
851
|
-
);
|
|
852
|
-
}
|
|
853
|
-
|
|
854
813
|
createVertexBuffer() {
|
|
855
814
|
var h = this._renderer.handler;
|
|
856
815
|
h.gl.deleteBuffer(this._vertexBuffer);
|
package/src/og/entity/Strip.js
CHANGED
|
@@ -203,9 +203,6 @@ class Strip {
|
|
|
203
203
|
shu = p.uniforms;
|
|
204
204
|
|
|
205
205
|
gl.disable(gl.CULL_FACE);
|
|
206
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
207
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
208
|
-
gl.enable(gl.BLEND);
|
|
209
206
|
sh.activate();
|
|
210
207
|
|
|
211
208
|
gl.uniformMatrix4fv(shu.viewMatrix, false, r.activeCamera.getViewMatrix());
|
|
@@ -257,9 +254,7 @@ class Strip {
|
|
|
257
254
|
shu = p.uniforms;
|
|
258
255
|
|
|
259
256
|
gl.disable(gl.CULL_FACE);
|
|
260
|
-
|
|
261
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
262
|
-
gl.enable(gl.BLEND);
|
|
257
|
+
|
|
263
258
|
sh.activate();
|
|
264
259
|
|
|
265
260
|
gl.uniformMatrix4fv(shu.viewMatrix, false, r.activeCamera.getViewMatrix());
|
package/src/og/index.js
CHANGED
|
@@ -37,16 +37,18 @@ import { RenderNode } from './scene/RenderNode.js';
|
|
|
37
37
|
|
|
38
38
|
import { Popup } from './Popup.js';
|
|
39
39
|
|
|
40
|
-
import {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
import {
|
|
41
|
+
EarthQuadTreeStrategy,
|
|
42
|
+
MarsQuadTreeStrategy,
|
|
43
|
+
QuadTreeStrategy,
|
|
44
|
+
quadTreeStrategyType,
|
|
45
|
+
Wgs84QuadTreeStrategy
|
|
46
|
+
} from './quadTree/index.js';
|
|
45
47
|
|
|
46
48
|
import pkg from "../../package.json";
|
|
47
49
|
|
|
48
50
|
const { Handler } = webgl, { Control } = control;
|
|
49
|
-
const { Layer } = layer;
|
|
51
|
+
const { Layer, Vector, XYZ} = layer;
|
|
50
52
|
const {
|
|
51
53
|
EntityCollection,
|
|
52
54
|
Entity
|
|
@@ -65,6 +67,8 @@ export {
|
|
|
65
67
|
utils,
|
|
66
68
|
input,
|
|
67
69
|
Layer,
|
|
70
|
+
XYZ,
|
|
71
|
+
Vector,
|
|
68
72
|
layer,
|
|
69
73
|
terrain,
|
|
70
74
|
Control,
|
package/src/og/input/input.js
CHANGED
|
@@ -13,19 +13,17 @@ import { Layer } from "./Layer.js";
|
|
|
13
13
|
* @type {number}
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
const EVENT_NAMES = [
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
16
|
+
const EVENT_NAMES = [/**
|
|
17
|
+
* Triggered when current tile image has loaded before rendereing.
|
|
18
|
+
* @event og.layer.CanvasTiles#load
|
|
19
|
+
*/
|
|
21
20
|
"load",
|
|
22
21
|
|
|
23
22
|
/**
|
|
24
23
|
* Triggered when all tiles have loaded or loading has stopped.
|
|
25
24
|
* @event og.layer.CanvasTiles#loadend
|
|
26
25
|
*/
|
|
27
|
-
"loadend"
|
|
28
|
-
];
|
|
26
|
+
"loadend"];
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
29
|
* Layer used to rendering each tile as a separate canvas object.
|
|
@@ -50,6 +48,8 @@ class CanvasTiles extends Layer {
|
|
|
50
48
|
|
|
51
49
|
this.events.registerNames(EVENT_NAMES);
|
|
52
50
|
|
|
51
|
+
this.animated = options.animated || false;
|
|
52
|
+
|
|
53
53
|
this.minNativeZoom = options.minNativeZoom || 0;
|
|
54
54
|
/**
|
|
55
55
|
* Current creating tiles couter.
|
|
@@ -176,22 +176,19 @@ class CanvasTiles extends Layer {
|
|
|
176
176
|
that.events.dispatch(e, material);
|
|
177
177
|
}
|
|
178
178
|
requestAnimationFrame(() => {
|
|
179
|
-
that.drawTile(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (material.isLoading) {
|
|
190
|
-
material.applyImage(canvas);
|
|
191
|
-
}
|
|
192
|
-
that._dequeueRequest();
|
|
179
|
+
that.drawTile(material, /**
|
|
180
|
+
* Apply canvas.
|
|
181
|
+
* @callback applyCanvasCallback
|
|
182
|
+
* @param {Object} canvas -
|
|
183
|
+
*/
|
|
184
|
+
function (canvas) {
|
|
185
|
+
that._counter--;
|
|
186
|
+
CanvasTiles.__requestsCounter--;
|
|
187
|
+
if (material.isLoading) {
|
|
188
|
+
material.applyImage(canvas);
|
|
193
189
|
}
|
|
194
|
-
|
|
190
|
+
that._dequeueRequest();
|
|
191
|
+
});
|
|
195
192
|
});
|
|
196
193
|
} else {
|
|
197
194
|
material.textureNotExists();
|
|
@@ -231,10 +228,7 @@ class CanvasTiles extends Layer {
|
|
|
231
228
|
while (this._pendingsQueue.length) {
|
|
232
229
|
var pmat = this._pendingsQueue.pop();
|
|
233
230
|
if (pmat.segment.node) {
|
|
234
|
-
if (
|
|
235
|
-
pmat.segment.initialized &&
|
|
236
|
-
pmat.segment.node.getState() === quadTree.RENDERING
|
|
237
|
-
) {
|
|
231
|
+
if (pmat.segment.initialized && pmat.segment.node.getState() === quadTree.RENDERING) {
|
|
238
232
|
return pmat;
|
|
239
233
|
}
|
|
240
234
|
pmat.isLoading = false;
|
|
@@ -245,14 +239,20 @@ class CanvasTiles extends Layer {
|
|
|
245
239
|
|
|
246
240
|
applyMaterial(material) {
|
|
247
241
|
if (material.isReady) {
|
|
242
|
+
if (material.layer.animated) {
|
|
243
|
+
requestAnimationFrame(() => {
|
|
244
|
+
this.drawTile(material, function (canvas) {
|
|
245
|
+
material.applyImage(canvas);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
248
249
|
return [0, 0, 1, 1];
|
|
249
250
|
} else if (material.segment.tileZoom < this.minNativeZoom) {
|
|
250
251
|
material.textureNotExists();
|
|
251
252
|
} else {
|
|
252
253
|
|
|
253
254
|
let segment = material.segment;
|
|
254
|
-
let pn = segment.node,
|
|
255
|
-
notEmpty = false;
|
|
255
|
+
let pn = segment.node, notEmpty = false;
|
|
256
256
|
|
|
257
257
|
if (segment.passReady && !material.isLoading) {
|
|
258
258
|
this.loadMaterial(material);
|
|
@@ -270,15 +270,20 @@ class CanvasTiles extends Layer {
|
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
if (notEmpty) {
|
|
273
|
+
|
|
274
|
+
if (material.layer.animated) {
|
|
275
|
+
requestAnimationFrame(() => {
|
|
276
|
+
this.drawTile(material, function (canvas) {
|
|
277
|
+
material.applyImage(canvas);
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
|
|
273
282
|
material.appliedNodeId = pn.nodeId;
|
|
274
283
|
material.texture = psegm.texture;
|
|
284
|
+
|
|
275
285
|
let dZ2 = 1.0 / (2 << (segment.tileZoom - pn.segment.tileZoom - 1));
|
|
276
|
-
return [
|
|
277
|
-
segment.tileX * dZ2 - pn.segment.tileX,
|
|
278
|
-
segment.tileY * dZ2 - pn.segment.tileY,
|
|
279
|
-
dZ2,
|
|
280
|
-
dZ2
|
|
281
|
-
];
|
|
286
|
+
return [segment.tileX * dZ2 - pn.segment.tileX, segment.tileY * dZ2 - pn.segment.tileY, dZ2, dZ2];
|
|
282
287
|
} else {
|
|
283
288
|
material.texture = segment.planet.transparentTexture;
|
|
284
289
|
return [0, 0, 1, 1];
|
package/src/og/layer/Layer.js
CHANGED
|
@@ -11,6 +11,7 @@ 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 { createColorRGB } from "../utils/shared.js";
|
|
14
15
|
|
|
15
16
|
const FADING_RATIO = 15.8;
|
|
16
17
|
|
|
@@ -208,6 +209,65 @@ class Layer {
|
|
|
208
209
|
* @type {Events}
|
|
209
210
|
*/
|
|
210
211
|
this.events = new Events(options.events ? [...EVENT_NAMES, ...options.events] : EVENT_NAMES, this);
|
|
212
|
+
|
|
213
|
+
this._ambient = null;
|
|
214
|
+
this._diffuse = null;
|
|
215
|
+
this._specular = null;
|
|
216
|
+
|
|
217
|
+
if (options.ambient) {
|
|
218
|
+
let a = utils.createColorRGB(options.ambient, new Vec3(0.2, 0.2, 0.2));
|
|
219
|
+
this._ambient = new Float32Array([a.x, a.y, a.z]);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if (options.diffuse) {
|
|
223
|
+
let d = utils.createColorRGB(options.diffuse, new Vec3(0.8, 0.8, 0.8));
|
|
224
|
+
this._diffuse = new Float32Array([d.x, d.y, d.z]);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (options.specular) {
|
|
228
|
+
let s = utils.createColorRGB(options.specular, new Vec3(0.0003, 0.0003, 0.0003));
|
|
229
|
+
let shininess = options.shininess || 20.0;
|
|
230
|
+
this._specular = new Float32Array([s.x, s.y, s.z, shininess]);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
this.nightTextureCoefficient = options.nightTextureCoefficient || null;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
set diffuse(rgb) {
|
|
237
|
+
if (rgb) {
|
|
238
|
+
let vec = createColorRGB(rgb);
|
|
239
|
+
this._diffuse = new Float32Array(vec.toArray());
|
|
240
|
+
} else {
|
|
241
|
+
this._diffuse = null;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
set ambient(rgb) {
|
|
246
|
+
if (rgb) {
|
|
247
|
+
let vec = createColorRGB(rgb);
|
|
248
|
+
this._ambient = new Float32Array(vec.toArray());
|
|
249
|
+
} else {
|
|
250
|
+
this._ambient = null;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
set specular(rgb) {
|
|
255
|
+
if (rgb) {
|
|
256
|
+
let vec = createColorRGB(rgb);
|
|
257
|
+
this._specular = new Float32Array([vec.x, vec.y, vec.y, this._specular[3]]);
|
|
258
|
+
} else {
|
|
259
|
+
this._specular = null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
set shininess(v) {
|
|
264
|
+
if (this._specular) {
|
|
265
|
+
this._specular[3] = v;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
get normalMapCreator() {
|
|
270
|
+
return this._normalMapCreator;
|
|
211
271
|
}
|
|
212
272
|
|
|
213
273
|
static getTMS(x, y, z) {
|
|
@@ -655,24 +715,24 @@ class Layer {
|
|
|
655
715
|
redraw() {
|
|
656
716
|
if (this._planet) {
|
|
657
717
|
this._planet._quadTree.traverseTree((n) => {
|
|
658
|
-
|
|
659
|
-
|
|
718
|
+
if (n.segment.materials[this._id]) {
|
|
719
|
+
n.segment.materials[this._id].clear();
|
|
720
|
+
}
|
|
660
721
|
}
|
|
661
|
-
}
|
|
662
722
|
);
|
|
663
723
|
|
|
664
724
|
this._planet._quadTreeNorth.traverseTree((n) => {
|
|
665
|
-
|
|
666
|
-
|
|
725
|
+
if (n.segment.materials[this._id]) {
|
|
726
|
+
n.segment.materials[this._id].clear();
|
|
727
|
+
}
|
|
667
728
|
}
|
|
668
|
-
}
|
|
669
729
|
);
|
|
670
730
|
|
|
671
731
|
this._planet._quadTreeSouth.traverseTree((n) => {
|
|
672
|
-
|
|
673
|
-
|
|
732
|
+
if (n.segment.materials[this._id]) {
|
|
733
|
+
n.segment.materials[this._id].clear();
|
|
734
|
+
}
|
|
674
735
|
}
|
|
675
|
-
}
|
|
676
736
|
);
|
|
677
737
|
}
|
|
678
738
|
}
|
package/src/og/layer/Material.js
CHANGED
|
@@ -29,13 +29,6 @@ class Material {
|
|
|
29
29
|
this.pickingReady = false;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
///**
|
|
33
|
-
// * @param {*} layer
|
|
34
|
-
// */
|
|
35
|
-
//assignLayer(layer) {
|
|
36
|
-
// this.layer = layer;
|
|
37
|
-
//}
|
|
38
|
-
|
|
39
32
|
/**
|
|
40
33
|
*
|
|
41
34
|
*/
|
|
@@ -44,7 +37,7 @@ class Material {
|
|
|
44
37
|
}
|
|
45
38
|
|
|
46
39
|
_createTexture(img) {
|
|
47
|
-
return this.layer._planet && this.layer.createTexture(img, this.layer._internalFormat);
|
|
40
|
+
return this.layer._planet && this.layer.createTexture(img, this.layer._internalFormat, this.isReady ? this.texture : null);
|
|
48
41
|
}
|
|
49
42
|
|
|
50
43
|
/**
|
package/src/og/layer/WMS.js
CHANGED
|
@@ -27,6 +27,7 @@ import { XYZ } from "./XYZ.js";
|
|
|
27
27
|
* @param {number} [options.height=256] - Tile height.
|
|
28
28
|
* @param {string} options.layers - WMS layers string.
|
|
29
29
|
* @param {string} [options.version="1.1.1"] - WMS version.
|
|
30
|
+
* @param {Object} extra - Extra parameters (by WMS rreference or by WMS service vendors) to pass to WMS service.
|
|
30
31
|
* @example:
|
|
31
32
|
* new og.layer.WMS("USA States", {
|
|
32
33
|
* isBaseLayer: false,
|
|
@@ -36,16 +37,23 @@ import { XYZ } from "./XYZ.js";
|
|
|
36
37
|
* zIndex: 50,
|
|
37
38
|
* attribution: 'USA states - geoserver WMS example',
|
|
38
39
|
* version: "1.1.1",
|
|
39
|
-
* visibility: false }
|
|
40
|
+
* visibility: false }, {
|
|
41
|
+
* transparent: true,
|
|
42
|
+
* sld: "style.sld"}
|
|
40
43
|
* );
|
|
41
44
|
*
|
|
42
45
|
* @fires og.layer.XYZ#load
|
|
43
46
|
* @fires og.layer.XYZ#loadend
|
|
44
47
|
*/
|
|
45
48
|
class WMS extends XYZ {
|
|
46
|
-
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
constructor(name, options, extra) {
|
|
47
52
|
super(name, options);
|
|
48
53
|
|
|
54
|
+
this._extra = new URLSearchParams(extra).toString();
|
|
55
|
+
|
|
56
|
+
|
|
49
57
|
if (!options.extent) {
|
|
50
58
|
this.setExtent(new Extent(new LonLat(-180.0, -90), new LonLat(180.0, 90)));
|
|
51
59
|
}
|
|
@@ -85,10 +93,12 @@ class WMS extends XYZ {
|
|
|
85
93
|
srs,
|
|
86
94
|
bbox,
|
|
87
95
|
width = 256,
|
|
88
|
-
height = 256
|
|
96
|
+
height = 256,
|
|
97
|
+
extra
|
|
98
|
+
|
|
89
99
|
) {
|
|
90
100
|
return `${url}/wms?LAYERS=${layers}&FORMAT=${format}&SERVICE=WMS&VERSION=${version}&REQUEST=${request}
|
|
91
|
-
&SRS=${srs}&BBOX=${bbox}&WIDTH=${width}&HEIGHT=${height}
|
|
101
|
+
&SRS=${srs}&BBOX=${bbox}&WIDTH=${width}&HEIGHT=${height}&` + extra;
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
static get_bbox_v1_1_1(extent) {
|
|
@@ -133,7 +143,8 @@ class WMS extends XYZ {
|
|
|
133
143
|
segment._projection.code,
|
|
134
144
|
this._getBbox(segment.getExtent()),
|
|
135
145
|
this.imageWidth,
|
|
136
|
-
this.imageHeight
|
|
146
|
+
this.imageHeight,
|
|
147
|
+
this._extra
|
|
137
148
|
);
|
|
138
149
|
}
|
|
139
150
|
|
|
@@ -127,9 +127,11 @@ class LightSource {
|
|
|
127
127
|
this._ambient.x = rn._lightsParamsv[index] = this._tempAmbient.x;
|
|
128
128
|
this._ambient.y = rn._lightsParamsv[index + 1] = this._tempAmbient.y;
|
|
129
129
|
this._ambient.z = rn._lightsParamsv[index + 2] = this._tempAmbient.z;
|
|
130
|
+
|
|
130
131
|
this._diffuse.x = rn._lightsParamsv[index + 3] = this._tempDiffuse.x;
|
|
131
132
|
this._diffuse.y = rn._lightsParamsv[index + 4] = this._tempDiffuse.y;
|
|
132
133
|
this._diffuse.z = rn._lightsParamsv[index + 5] = this._tempDiffuse.z;
|
|
134
|
+
|
|
133
135
|
this._specular.x = rn._lightsParamsv[index + 6] = this._tempSpecular.x;
|
|
134
136
|
this._specular.y = rn._lightsParamsv[index + 7] = this._tempSpecular.y;
|
|
135
137
|
this._specular.z = rn._lightsParamsv[index + 8] = this._tempSpecular.z;
|