@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.
Files changed (213) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -12
  3. package/src/og/Globe.js +25 -10
  4. package/src/og/Popup.js +3 -2
  5. package/src/og/camera/Camera.js +70 -79
  6. package/src/og/camera/PlanetCamera.js +33 -33
  7. package/src/og/control/DebugInfo.js +2 -2
  8. package/src/og/control/EarthNavigation.js +26 -17
  9. package/src/og/control/Lighting.js +74 -64
  10. package/src/og/control/MouseNavigation.js +30 -29
  11. package/src/og/control/MouseWheelZoomControl.js +257 -0
  12. package/src/og/control/Sun.js +3 -3
  13. package/src/og/control/index.js +2 -0
  14. package/src/og/control/visibleExtent/Segment.js +1862 -0
  15. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  16. package/src/og/control/visibleExtent/drawnode.js +751 -0
  17. package/src/og/ellipsoid/Ellipsoid.js +1 -1
  18. package/src/og/entity/BaseBillboard.js +67 -76
  19. package/src/og/entity/BillboardHandler.js +15 -8
  20. package/src/og/entity/Entity.js +742 -742
  21. package/src/og/entity/GeoObjectHandler.js +102 -117
  22. package/src/og/entity/Label.js +45 -48
  23. package/src/og/entity/LabelHandler.js +24 -23
  24. package/src/og/entity/LabelWorker.js +21 -16
  25. package/src/og/layer/CanvasTiles.js +8 -12
  26. package/src/og/layer/GeoImage.js +2 -10
  27. package/src/og/layer/GeoTexture2d.js +2 -10
  28. package/src/og/layer/GeoVideo.js +2 -10
  29. package/src/og/layer/Layer.js +23 -32
  30. package/src/og/layer/Material.js +1 -1
  31. package/src/og/layer/WMS.js +0 -2
  32. package/src/og/layer/XYZ.js +31 -33
  33. package/src/og/math/Vec3.js +18 -2
  34. package/src/og/quadTree/Node.js +52 -111
  35. package/src/og/quadTree/quadTree.js +1 -1
  36. package/src/og/renderer/Renderer.js +85 -122
  37. package/src/og/renderer/RendererEvents.js +44 -22
  38. package/src/og/scene/Planet.js +179 -198
  39. package/src/og/segment/Segment.js +99 -268
  40. package/src/og/segment/Slice.js +45 -0
  41. package/src/og/shaders/drawnode.js +174 -360
  42. package/src/og/shaders/toneMapping.js +1 -0
  43. package/src/og/shapes/BaseShape.js +1 -1
  44. package/src/og/terrain/EmptyTerrain.js +3 -2
  45. package/src/og/terrain/GlobusTerrain.js +2 -0
  46. package/src/og/utils/FontAtlas.js +6 -2
  47. package/src/og/utils/GeoImageCreator.js +5 -1
  48. package/src/og/utils/Loader.js +1 -1
  49. package/src/og/utils/PlainSegmentWorker.js +0 -13
  50. package/src/og/utils/TextureAtlas.js +2 -2
  51. package/src/og/utils/VectorTileCreator.js +1 -3
  52. package/src/og/utils/shared.js +1 -1
  53. package/src/og/webgl/Handler.js +156 -118
  54. package/types/Clock.d.ts +0 -94
  55. package/types/Deferred.d.ts +0 -6
  56. package/types/Events.d.ts +0 -77
  57. package/types/Extent.d.ts +0 -166
  58. package/types/Globe.d.ts +0 -82
  59. package/types/ImageCanvas.d.ts +0 -123
  60. package/types/Lock.d.ts +0 -12
  61. package/types/LonLat.d.ts +0 -108
  62. package/types/Popup.d.ts +0 -42
  63. package/types/QueueArray.d.ts +0 -19
  64. package/types/Rectangle.d.ts +0 -80
  65. package/types/Stack.d.ts +0 -19
  66. package/types/ajax.d.ts +0 -24
  67. package/types/arial.d.ts +0 -48
  68. package/types/astro/astro.d.ts +0 -38
  69. package/types/astro/earth.d.ts +0 -7
  70. package/types/astro/jd.d.ts +0 -254
  71. package/types/bv/Box.d.ts +0 -30
  72. package/types/bv/Sphere.d.ts +0 -38
  73. package/types/bv/index.d.ts +0 -3
  74. package/types/camera/Camera.d.ts +0 -312
  75. package/types/camera/Frustum.d.ts +0 -133
  76. package/types/camera/PlanetCamera.d.ts +0 -218
  77. package/types/camera/index.d.ts +0 -3
  78. package/types/cons.d.ts +0 -40
  79. package/types/control/CompassButton.d.ts +0 -17
  80. package/types/control/Control.d.ts +0 -104
  81. package/types/control/DebugInfo.d.ts +0 -15
  82. package/types/control/EarthCoordinates.d.ts +0 -47
  83. package/types/control/EarthNavigation.d.ts +0 -42
  84. package/types/control/GeoImageDragControl.d.ts +0 -6
  85. package/types/control/KeyboardNavigation.d.ts +0 -21
  86. package/types/control/LayerSwitcher.d.ts +0 -21
  87. package/types/control/Lighting.d.ts +0 -16
  88. package/types/control/MouseNavigation.d.ts +0 -47
  89. package/types/control/ScaleControl.d.ts +0 -22
  90. package/types/control/ShowFps.d.ts +0 -11
  91. package/types/control/SimpleNavigation.d.ts +0 -25
  92. package/types/control/Sun.d.ts +0 -50
  93. package/types/control/ToggleWireframe.d.ts +0 -12
  94. package/types/control/TouchNavigation.d.ts +0 -48
  95. package/types/control/ZoomControl.d.ts +0 -27
  96. package/types/control/index.d.ts +0 -17
  97. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  98. package/types/ellipsoid/index.d.ts +0 -3
  99. package/types/ellipsoid/wgs84.d.ts +0 -6
  100. package/types/entity/BaseBillboard.d.ts +0 -215
  101. package/types/entity/Billboard.d.ts +0 -94
  102. package/types/entity/BillboardHandler.d.ts +0 -78
  103. package/types/entity/Entity.d.ts +0 -348
  104. package/types/entity/EntityCollection.d.ts +0 -317
  105. package/types/entity/GeoObject.d.ts +0 -111
  106. package/types/entity/GeoObjectHandler.d.ts +0 -77
  107. package/types/entity/Geometry.d.ts +0 -74
  108. package/types/entity/GeometryHandler.d.ts +0 -76
  109. package/types/entity/Label.d.ts +0 -189
  110. package/types/entity/LabelHandler.d.ts +0 -31
  111. package/types/entity/LabelWorker.d.ts +0 -9
  112. package/types/entity/PointCloud.d.ts +0 -174
  113. package/types/entity/PointCloudHandler.d.ts +0 -38
  114. package/types/entity/Polyline.d.ts +0 -306
  115. package/types/entity/PolylineHandler.d.ts +0 -18
  116. package/types/entity/Ray.d.ts +0 -124
  117. package/types/entity/RayHandler.d.ts +0 -67
  118. package/types/entity/ShapeHandler.d.ts +0 -22
  119. package/types/entity/Strip.d.ts +0 -119
  120. package/types/entity/StripHandler.d.ts +0 -38
  121. package/types/entity/index.d.ts +0 -8
  122. package/types/index.core.d.ts +0 -65
  123. package/types/index.d.ts +0 -45
  124. package/types/index.webgl.d.ts +0 -7
  125. package/types/input/KeyboardHandler.d.ts +0 -10
  126. package/types/input/MouseHandler.d.ts +0 -5
  127. package/types/input/TouchHandler.d.ts +0 -5
  128. package/types/input/input.d.ts +0 -34
  129. package/types/layer/BaseGeoImage.d.ts +0 -94
  130. package/types/layer/CanvasTiles.d.ts +0 -68
  131. package/types/layer/GeoImage.d.ts +0 -52
  132. package/types/layer/GeoTexture2d.d.ts +0 -8
  133. package/types/layer/GeoVideo.d.ts +0 -55
  134. package/types/layer/KML.d.ts +0 -63
  135. package/types/layer/Layer.d.ts +0 -326
  136. package/types/layer/Material.d.ts +0 -45
  137. package/types/layer/Vector.d.ts +0 -208
  138. package/types/layer/WMS.d.ts +0 -63
  139. package/types/layer/XYZ.d.ts +0 -120
  140. package/types/layer/index.d.ts +0 -10
  141. package/types/light/LightSource.d.ts +0 -178
  142. package/types/math/Line2.d.ts +0 -11
  143. package/types/math/Line3.d.ts +0 -10
  144. package/types/math/Mat3.d.ts +0 -65
  145. package/types/math/Mat4.d.ts +0 -176
  146. package/types/math/Plane.d.ts +0 -18
  147. package/types/math/Quat.d.ts +0 -379
  148. package/types/math/Ray.d.ts +0 -82
  149. package/types/math/Vec2.d.ts +0 -309
  150. package/types/math/Vec3.d.ts +0 -460
  151. package/types/math/Vec4.d.ts +0 -162
  152. package/types/math/coder.d.ts +0 -43
  153. package/types/math/index.d.ts +0 -11
  154. package/types/math.d.ts +0 -261
  155. package/types/mercator.d.ts +0 -92
  156. package/types/proj/EPSG3857.d.ts +0 -6
  157. package/types/proj/EPSG4326.d.ts +0 -6
  158. package/types/proj/Proj.d.ts +0 -42
  159. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  160. package/types/quadTree/Node.d.ts +0 -61
  161. package/types/quadTree/quadTree.d.ts +0 -40
  162. package/types/renderer/Renderer.d.ts +0 -300
  163. package/types/renderer/RendererEvents.d.ts +0 -233
  164. package/types/res/images.d.ts +0 -3
  165. package/types/scene/Axes.d.ts +0 -11
  166. package/types/scene/BaseNode.d.ts +0 -60
  167. package/types/scene/Planet.d.ts +0 -577
  168. package/types/scene/RenderNode.d.ts +0 -142
  169. package/types/scene/SkyBox.d.ts +0 -10
  170. package/types/scene/index.d.ts +0 -4
  171. package/types/segment/Segment.d.ts +0 -279
  172. package/types/segment/SegmentLonLat.d.ts +0 -16
  173. package/types/segment/segmentHelper.d.ts +0 -13
  174. package/types/shaders/billboard.d.ts +0 -3
  175. package/types/shaders/depth.d.ts +0 -2
  176. package/types/shaders/drawnode.d.ts +0 -7
  177. package/types/shaders/geoObject.d.ts +0 -3
  178. package/types/shaders/label.d.ts +0 -4
  179. package/types/shaders/pointCloud.d.ts +0 -2
  180. package/types/shaders/polyline.d.ts +0 -3
  181. package/types/shaders/ray.d.ts +0 -2
  182. package/types/shaders/screenFrame.d.ts +0 -2
  183. package/types/shaders/shape.d.ts +0 -4
  184. package/types/shaders/skybox.d.ts +0 -2
  185. package/types/shaders/toneMapping.d.ts +0 -2
  186. package/types/shapes/BaseShape.d.ts +0 -250
  187. package/types/shapes/Sphere.d.ts +0 -41
  188. package/types/terrain/BilTerrain.d.ts +0 -7
  189. package/types/terrain/EmptyTerrain.d.ts +0 -72
  190. package/types/terrain/Geoid.d.ts +0 -26
  191. package/types/terrain/GlobusTerrain.d.ts +0 -116
  192. package/types/terrain/MapboxTerrain.d.ts +0 -7
  193. package/types/terrain/index.d.ts +0 -5
  194. package/types/utils/FontAtlas.d.ts +0 -14
  195. package/types/utils/GeoImageCreator.d.ts +0 -30
  196. package/types/utils/ImagesCacheManager.d.ts +0 -10
  197. package/types/utils/Loader.d.ts +0 -25
  198. package/types/utils/NormalMapCreator.d.ts +0 -39
  199. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  200. package/types/utils/TerrainWorker.d.ts +0 -9
  201. package/types/utils/TextureAtlas.d.ts +0 -111
  202. package/types/utils/VectorTileCreator.d.ts +0 -16
  203. package/types/utils/colorTable.d.ts +0 -143
  204. package/types/utils/earcut.d.ts +0 -6
  205. package/types/utils/shared.d.ts +0 -231
  206. package/types/webgl/Framebuffer.d.ts +0 -135
  207. package/types/webgl/Handler.d.ts +0 -397
  208. package/types/webgl/Multisample.d.ts +0 -89
  209. package/types/webgl/Program.d.ts +0 -161
  210. package/types/webgl/ProgramController.d.ts +0 -89
  211. package/types/webgl/callbacks.d.ts +0 -1
  212. package/types/webgl/index.d.ts +0 -6
  213. 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 === -2) {
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
- let source = { handler: handler, label: label };
52
+ if (handler._entityCollection) {
53
+ let source = { handler: handler, label: label };
50
54
 
51
- if (this._freeWorkerQueue.length) {
52
- var w = this._freeWorkerQueue.pop();
55
+ if (this._freeWorkerQueue.length) {
56
+ var w = this._freeWorkerQueue.pop();
53
57
 
54
- this._source[this._id] = source;
58
+ this._source[this._id] = source;
55
59
 
56
- let labelData = new Float32Array([
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
- label._lockId = this._id;
77
+ label._lockId = this._id;
74
78
 
75
- w.postMessage({
76
- labelData: labelData
77
- }, [
78
- labelData.buffer,
79
- ]);
80
- } else {
81
- this._pendingQueue.push(source);
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
- this._visibility = visibility;
105
- if (this._isBaseLayer && visibility) {
106
- this._planet.setBaseLayer(this);
107
- } else if (!visibility) {
103
+ super.setVisibility(visibility);
104
+
105
+ if (!visibility) {
108
106
  this.abortLoading();
109
107
  }
110
- this._planet.updateVisibleLayers();
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) {
@@ -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(tr, tg, tb, 0.0);
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(tr, tg, tb, 0.0);
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(tr, tg, tb, 0.0);
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(tr, tg, tb, 0.0);
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
 
@@ -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(tr, tg, tb, 0.0);
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(tr, tg, tb, 0.0);
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
 
@@ -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
- if (options.textureFilter) {
189
- this.createTexture =
190
- createTexture[options.textureFilter.trim().toUpperCase()] ||
191
- createTexture.ANISOTROPIC;
192
- } else {
193
- this.createTexture = createTexture.ANISOTROPIC;
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
- this._planet && this._planet._clearLayerMaterial(this);
386
+ if (this._planet) {
387
+ this._planet._clearLayerMaterial(this);
388
+ this._internalFormat = null;
389
+ this.createTexture = null;
390
+ }
400
391
  }
401
392
 
402
393
  /**
@@ -44,7 +44,7 @@ class Material {
44
44
  }
45
45
 
46
46
  _createTexture(img) {
47
- return this.layer.createTexture(this.segment.handler, img);
47
+ return this.layer.createTexture(img, this.layer._internalFormat);
48
48
  }
49
49
 
50
50
  /**
@@ -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
  * );
@@ -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._tileLoader.abort();
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
- if (this._planet.layerLock.isFree()) {
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
- let maxNativeZoom = material.layer.maxNativeZoom;
261
-
262
- if (pn.segment.tileZoom === maxNativeZoom) {
263
- material.textureNotExists();
264
- } else if (material.segment.tileZoom <= maxNativeZoom) {
265
- !material.isLoading && !material.isReady && this.loadMaterial(material);
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
- pnm = pn.segment.materials[material.layer._id] = material.layer.createMaterial(
276
- pn.segment
277
- );
278
- this.loadMaterial(pnm, true);
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
  /**
@@ -699,8 +699,24 @@ export class Vec3 {
699
699
  * @param {Vec3} point3 - Distant point.
700
700
  * @returns {number} -
701
701
  */
702
- distance(point3) {
703
- return Vec3.sub(this, point3).length();
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
  /**