@openglobus/og 0.11.1 → 0.11.6

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 (255) hide show
  1. package/package.json +18 -20
  2. package/src/og/Clock.js +11 -11
  3. package/src/og/Deferred.js +1 -1
  4. package/src/og/Events.js +9 -7
  5. package/src/og/Extent.js +117 -72
  6. package/src/og/Globe.js +35 -22
  7. package/src/og/ImageCanvas.js +24 -18
  8. package/src/og/Lock.js +2 -2
  9. package/src/og/LonLat.js +40 -37
  10. package/src/og/Popup.js +21 -15
  11. package/src/og/QueueArray.js +7 -3
  12. package/src/og/Rectangle.js +11 -6
  13. package/src/og/Stack.js +8 -5
  14. package/src/og/ajax.js +21 -33
  15. package/src/og/astro/astro.js +5 -5
  16. package/src/og/astro/earth.js +23 -17
  17. package/src/og/astro/jd.js +44 -39
  18. package/src/og/astro/orbit.js +20 -18
  19. package/src/og/astro/rotation.js +17 -8
  20. package/src/og/bv/Box.js +7 -3
  21. package/src/og/bv/Sphere.js +17 -9
  22. package/src/og/camera/Camera.js +137 -86
  23. package/src/og/camera/Frustum.js +30 -19
  24. package/src/og/camera/PlanetCamera.js +30 -26
  25. package/src/og/control/CompassButton.js +8 -2
  26. package/src/og/control/Control.js +13 -11
  27. package/src/og/control/DebugInfo.js +4 -1
  28. package/src/og/control/EarthCoordinates.js +62 -41
  29. package/src/og/control/EarthNavigation.js +20 -22
  30. package/src/og/control/GeoImageDragControl.js +1 -1
  31. package/src/og/control/KeyboardNavigation.js +12 -12
  32. package/src/og/control/LayerSwitcher.js +24 -23
  33. package/src/og/control/Lighting.js +1 -1
  34. package/src/og/control/MouseNavigation.js +1 -1
  35. package/src/og/control/ScaleControl.js +1 -1
  36. package/src/og/control/SegmentBoundVisualization.js +8 -9
  37. package/src/og/control/ShowFps.js +15 -10
  38. package/src/og/control/SimpleNavigation.js +8 -10
  39. package/src/og/control/Sun.js +25 -15
  40. package/src/og/control/ToggleWireframe.js +5 -5
  41. package/src/og/control/TouchNavigation.js +58 -45
  42. package/src/og/control/ZoomControl.js +41 -25
  43. package/src/og/control/index.js +4 -0
  44. package/src/og/ellipsoid/Ellipsoid.js +181 -85
  45. package/src/og/ellipsoid/wgs84.js +4 -4
  46. package/src/og/entity/BaseBillboard.js +97 -44
  47. package/src/og/entity/Billboard.js +15 -11
  48. package/src/og/entity/BillboardHandler.js +314 -64
  49. package/src/og/entity/Entity.js +106 -74
  50. package/src/og/entity/EntityCollection.js +72 -49
  51. package/src/og/entity/GeoObject.js +228 -0
  52. package/src/og/entity/GeoObjectHandler.js +910 -0
  53. package/src/og/entity/Geometry.js +29 -26
  54. package/src/og/entity/GeometryHandler.js +598 -126
  55. package/src/og/entity/Label.js +74 -40
  56. package/src/og/entity/LabelHandler.js +47 -246
  57. package/src/og/entity/LabelWorker.js +213 -0
  58. package/src/og/entity/Object3d.js +504 -0
  59. package/src/og/entity/PointCloud.js +81 -33
  60. package/src/og/entity/PointCloudHandler.js +9 -9
  61. package/src/og/entity/Polyline.js +39 -39
  62. package/src/og/entity/Ray.js +61 -28
  63. package/src/og/entity/ShapeHandler.js +1 -1
  64. package/src/og/entity/Strip.js +77 -48
  65. package/src/og/entity/StripHandler.js +27 -27
  66. package/src/og/entity/index.js +8 -16
  67. package/src/og/input/KeyboardHandler.js +107 -104
  68. package/src/og/input/MouseHandler.js +81 -78
  69. package/src/og/input/TouchHandler.js +55 -51
  70. package/src/og/layer/BaseGeoImage.js +61 -30
  71. package/src/og/layer/CanvasTiles.js +26 -24
  72. package/src/og/layer/GeoImage.js +10 -10
  73. package/src/og/layer/GeoTexture2d.js +1 -1
  74. package/src/og/layer/GeoVideo.js +3 -3
  75. package/src/og/layer/KML.js +66 -40
  76. package/src/og/layer/Layer.js +27 -17
  77. package/src/og/layer/Material.js +93 -61
  78. package/src/og/layer/Vector.js +118 -72
  79. package/src/og/layer/WMS.js +36 -19
  80. package/src/og/layer/XYZ.js +55 -48
  81. package/src/og/light/LightSource.js +47 -40
  82. package/src/og/math/Line2.js +24 -24
  83. package/src/og/math/Line3.js +103 -102
  84. package/src/og/math/Mat3.js +134 -121
  85. package/src/og/math/Mat4.js +603 -459
  86. package/src/og/math/Plane.js +21 -20
  87. package/src/og/math/Quat.js +980 -927
  88. package/src/og/math/Ray.js +195 -187
  89. package/src/og/math/Vec2.js +127 -117
  90. package/src/og/math/Vec3.js +206 -176
  91. package/src/og/math/Vec4.js +49 -53
  92. package/src/og/math/coder.js +18 -18
  93. package/src/og/math.js +12 -12
  94. package/src/og/mercator.js +11 -11
  95. package/src/og/proj/EPSG3857.js +4 -4
  96. package/src/og/proj/EPSG4326.js +4 -4
  97. package/src/og/proj/Proj.js +31 -31
  98. package/src/og/quadTree/EntityCollectionNode.js +310 -300
  99. package/src/og/quadTree/Node.js +1008 -993
  100. package/src/og/renderer/Renderer.js +768 -747
  101. package/src/og/renderer/RendererEvents.js +9 -6
  102. package/src/og/scene/Axes.js +1 -1
  103. package/src/og/scene/BaseNode.js +8 -9
  104. package/src/og/scene/Planet.js +115 -87
  105. package/src/og/scene/RenderNode.js +29 -22
  106. package/src/og/scene/SkyBox.js +1 -1
  107. package/src/og/segment/Segment.js +1886 -1878
  108. package/src/og/segment/SegmentLonLat.js +298 -268
  109. package/src/og/segment/segmentHelper.js +11 -11
  110. package/src/og/shaders/bloom.js +1 -1
  111. package/src/og/shaders/blur.js +2 -2
  112. package/src/og/shaders/depth.js +1 -1
  113. package/src/og/shaders/geoObject.js +211 -0
  114. package/src/og/shaders/label.js +1 -1
  115. package/src/og/shaders/lumFilter.js +1 -1
  116. package/src/og/shaders/pointCloud.js +42 -42
  117. package/src/og/shaders/screenFrame.js +1 -1
  118. package/src/og/shaders/shape.js +15 -21
  119. package/src/og/shaders/skybox.js +37 -37
  120. package/src/og/shaders/toneMapping.js +1 -1
  121. package/src/og/shapes/BaseShape.js +129 -57
  122. package/src/og/shapes/Icosphere.js +30 -15
  123. package/src/og/shapes/Sphere.js +13 -16
  124. package/src/og/terrain/BilTerrain.js +2 -1
  125. package/src/og/terrain/EmptyTerrain.js +2 -2
  126. package/src/og/terrain/Geoid.js +2 -2
  127. package/src/og/terrain/GlobusTerrain.js +10 -10
  128. package/src/og/terrain/MapboxTerrain.js +1 -1
  129. package/src/og/utils/GeoImageCreator.js +9 -9
  130. package/src/og/utils/Loader.js +6 -6
  131. package/src/og/utils/NormalMapCreator.js +13 -13
  132. package/src/og/utils/TerrainWorker.js +1 -1
  133. package/src/og/utils/TextureAtlas.js +20 -22
  134. package/src/og/utils/VectorTileCreator.js +5 -5
  135. package/src/og/utils/earcut.js +1 -1
  136. package/src/og/utils/shared.js +15 -15
  137. package/src/og/webgl/Framebuffer.js +101 -53
  138. package/src/og/webgl/Handler.js +125 -85
  139. package/src/og/webgl/Multisample.js +55 -27
  140. package/src/og/webgl/Program.js +80 -35
  141. package/src/og/webgl/ProgramController.js +27 -23
  142. package/src/og/webgl/callbacks.js +8 -8
  143. package/types/Clock.d.ts +6 -2
  144. package/types/Deferred.d.ts +1 -1
  145. package/types/Events.d.ts +8 -4
  146. package/types/Extent.d.ts +37 -33
  147. package/types/Globe.d.ts +15 -13
  148. package/types/ImageCanvas.d.ts +5 -3
  149. package/types/LonLat.d.ts +24 -24
  150. package/types/Popup.d.ts +4 -0
  151. package/types/QueueArray.d.ts +6 -2
  152. package/types/Rectangle.d.ts +10 -4
  153. package/types/Stack.d.ts +4 -0
  154. package/types/ajax.d.ts +1 -1
  155. package/types/astro/earth.d.ts +3 -2
  156. package/types/bv/Box.d.ts +10 -5
  157. package/types/bv/Sphere.d.ts +13 -7
  158. package/types/camera/Camera.d.ts +90 -81
  159. package/types/camera/Frustum.d.ts +26 -22
  160. package/types/camera/PlanetCamera.d.ts +49 -53
  161. package/types/control/CompassButton.d.ts +4 -4
  162. package/types/control/Control.d.ts +7 -4
  163. package/types/control/DebugInfo.d.ts +3 -4
  164. package/types/control/EarthCoordinates.d.ts +6 -6
  165. package/types/control/EarthNavigation.d.ts +42 -0
  166. package/types/control/KeyboardNavigation.d.ts +3 -4
  167. package/types/control/LayerSwitcher.d.ts +3 -5
  168. package/types/control/Lighting.d.ts +3 -3
  169. package/types/control/MouseNavigation.d.ts +47 -0
  170. package/types/control/ScaleControl.d.ts +3 -3
  171. package/types/control/ShowFps.d.ts +3 -4
  172. package/types/control/SimpleNavigation.d.ts +3 -6
  173. package/types/control/Sun.d.ts +8 -10
  174. package/types/control/ToggleWireframe.d.ts +3 -3
  175. package/types/control/TouchNavigation.d.ts +48 -0
  176. package/types/control/ZoomControl.d.ts +3 -4
  177. package/types/control/index.d.ts +3 -1
  178. package/types/ellipsoid/Ellipsoid.d.ts +47 -43
  179. package/types/ellipsoid/wgs84.d.ts +3 -2
  180. package/types/entity/BaseBillboard.d.ts +41 -34
  181. package/types/entity/Billboard.d.ts +7 -7
  182. package/types/entity/BillboardHandler.d.ts +4 -0
  183. package/types/entity/Entity.d.ts +101 -83
  184. package/types/entity/EntityCollection.d.ts +57 -43
  185. package/types/entity/GeoObject.d.ts +111 -0
  186. package/types/entity/GeoObjectHandler.d.ts +77 -0
  187. package/types/entity/Geometry.d.ts +9 -7
  188. package/types/entity/GeometryHandler.d.ts +2 -2
  189. package/types/entity/Label.d.ts +24 -29
  190. package/types/entity/LabelHandler.d.ts +9 -2
  191. package/types/entity/LabelWorker.d.ts +9 -0
  192. package/types/entity/PointCloud.d.ts +8 -8
  193. package/types/entity/PointCloudHandler.d.ts +3 -3
  194. package/types/entity/Polyline.d.ts +58 -55
  195. package/types/entity/Ray.d.ts +19 -18
  196. package/types/entity/Strip.d.ts +8 -7
  197. package/types/entity/StripHandler.d.ts +3 -3
  198. package/types/entity/index.d.ts +7 -7
  199. package/types/input/KeyboardHandler.d.ts +10 -0
  200. package/types/input/MouseHandler.d.ts +5 -0
  201. package/types/input/TouchHandler.d.ts +5 -0
  202. package/types/layer/BaseGeoImage.d.ts +23 -35
  203. package/types/layer/CanvasTiles.d.ts +15 -22
  204. package/types/layer/GeoImage.d.ts +5 -18
  205. package/types/layer/GeoVideo.d.ts +5 -30
  206. package/types/layer/KML.d.ts +20 -15
  207. package/types/layer/Layer.d.ts +326 -0
  208. package/types/layer/Material.d.ts +45 -0
  209. package/types/layer/Vector.d.ts +208 -0
  210. package/types/layer/WMS.d.ts +4 -7
  211. package/types/layer/XYZ.d.ts +19 -25
  212. package/types/light/LightSource.d.ts +54 -53
  213. package/types/math/Line2.d.ts +11 -0
  214. package/types/math/Line3.d.ts +10 -0
  215. package/types/math/Mat3.d.ts +30 -18
  216. package/types/math/Mat4.d.ts +71 -52
  217. package/types/math/Plane.d.ts +5 -4
  218. package/types/math/Quat.d.ts +379 -0
  219. package/types/math/Ray.d.ts +82 -0
  220. package/types/math/Vec2.d.ts +102 -101
  221. package/types/math/Vec3.d.ts +143 -142
  222. package/types/math/Vec4.d.ts +40 -39
  223. package/types/math/coder.d.ts +12 -11
  224. package/types/math.d.ts +8 -8
  225. package/types/mercator.d.ts +3 -3
  226. package/types/proj/EPSG3857.d.ts +3 -2
  227. package/types/proj/EPSG4326.d.ts +3 -2
  228. package/types/proj/Proj.d.ts +42 -0
  229. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  230. package/types/quadTree/Node.d.ts +61 -0
  231. package/types/renderer/Renderer.d.ts +300 -0
  232. package/types/renderer/RendererEvents.d.ts +10 -7
  233. package/types/scene/BaseNode.d.ts +9 -9
  234. package/types/scene/Planet.d.ts +131 -126
  235. package/types/scene/RenderNode.d.ts +22 -23
  236. package/types/segment/Segment.d.ts +279 -0
  237. package/types/segment/SegmentLonLat.d.ts +16 -0
  238. package/types/shaders/geoObject.d.ts +3 -0
  239. package/types/shapes/BaseShape.d.ts +43 -40
  240. package/types/shapes/Sphere.d.ts +7 -7
  241. package/types/terrain/BilTerrain.d.ts +0 -1
  242. package/types/terrain/EmptyTerrain.d.ts +4 -4
  243. package/types/terrain/GlobusTerrain.d.ts +17 -54
  244. package/types/terrain/MapboxTerrain.d.ts +0 -1
  245. package/types/utils/GeoImageCreator.d.ts +3 -2
  246. package/types/utils/TextureAtlas.d.ts +8 -8
  247. package/types/utils/shared.d.ts +25 -24
  248. package/types/webgl/Framebuffer.d.ts +5 -5
  249. package/types/webgl/Handler.d.ts +68 -43
  250. package/types/webgl/Multisample.d.ts +5 -5
  251. package/types/webgl/Program.d.ts +8 -2
  252. package/types/webgl/ProgramController.d.ts +18 -13
  253. package/src/og/inherits.js +0 -8
  254. package/src/og/utils/polylabel.js +0 -176
  255. package/types/inherits.d.ts +0 -4
@@ -89,10 +89,13 @@ const EVENT_NAMES = [
89
89
  /**
90
90
  * Main class for rendering planet
91
91
  * @class
92
- * @extends {og.scene.RenderNode}
93
- * @param {string} name - Planet name(Earth by default)
94
- * @param {og.Ellipsoid} ellipsoid - Planet ellipsoid(WGS84 by default)
95
- * @param {Number} [maxGridSize=128] - Segment maximal grid size
92
+ * @extends {RenderNode}
93
+ * @param {string} [options.name="Earth"] - Planet name(Earth by default)
94
+ * @param {Ellipsoid} [options.ellipsoid] - Planet ellipsoid(WGS84 by default)
95
+ * @param {Number} [options.maxGridSize=128] - Segment maximal grid size
96
+ * @param {Number} [options.maxEqualZoomAltitude=850000.0] - Maximal altitude since segments on the screen bacame the same zoom level
97
+ * @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen bacame the same zoom level
98
+ * @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen bacame the same zoom level
96
99
  * @fires og.scene.Planet#draw
97
100
  * @fires og.scene.Planet#layeradd
98
101
  * @fires og.scene.Planet#baselayerchange
@@ -106,7 +109,7 @@ export class Planet extends RenderNode {
106
109
 
107
110
  /**
108
111
  * @public
109
- * @type {og.Ellipsoid}
112
+ * @type {Ellipsoid}
110
113
  */
111
114
  this.ellipsoid = options.ellipsoid || wgs84;
112
115
 
@@ -126,21 +129,21 @@ export class Planet extends RenderNode {
126
129
  /**
127
130
  * All layers array.
128
131
  * @public
129
- * @type {Array.<og.Layer>}
132
+ * @type {Array.<Layer>}
130
133
  */
131
134
  this.layers = [];
132
135
 
133
136
  /**
134
137
  * Current visible imagery tile layers array.
135
138
  * @public
136
- * @type {Array.<og.Layer>}
139
+ * @type {Array.<Layer>}
137
140
  */
138
141
  this.visibleTileLayers = [];
139
142
 
140
143
  /**
141
144
  * Current visible vector layers array.
142
145
  * @protected
143
- * @type {Array.<og.layer.Vector>}
146
+ * @type {Array.<layer.Vector>}
144
147
  */
145
148
  this.visibleVectorLayers = [];
146
149
 
@@ -149,38 +152,42 @@ export class Planet extends RenderNode {
149
152
  /**
150
153
  * Vector layers visible nodes with collections.
151
154
  * @protected
152
- * @type {Array.<og.EntityCollection>}
155
+ * @type {Array.<EntityCollection>}
153
156
  */
154
157
  this._frustumEntityCollections = [];
155
158
 
156
159
  /**
157
160
  * There is only one base layer on the globe when layer.isBaseLayer is true.
158
161
  * @public
159
- * @type {og.Layer}
162
+ * @type {Layer}
160
163
  */
161
164
  this.baseLayer = null;
162
165
 
163
166
  /**
164
167
  * Terrain provider.
165
168
  * @public
166
- * @type {og.terrain.Terrain}
169
+ * @type {Terrain}
167
170
  */
168
171
  this.terrain = null;
169
172
 
170
173
  /**
171
174
  * Camera is this.renderer.activeCamera pointer.
172
175
  * @public
173
- * @type {og.PlanetCamera}
176
+ * @type {PlanetCamera}
174
177
  */
175
178
  this.camera = null;
176
179
 
177
180
  this._minAltitude = options.minAltitude;
178
181
  this._maxAltitude = options.maxAltitude;
179
182
 
183
+ this.maxEqualZoomAltitude = options.maxEqualZoomAltitude || 850000.0;
184
+ this.minEqualZoomAltitude = options.minEqualZoomAltitude || 10000.0;
185
+ this.minEqualZoomCameraSlope = options.minEqualZoomCameraSlope || 0.8;
186
+
180
187
  /**
181
188
  * Screen mouse pointer projected to planet cartesian position.
182
189
  * @public
183
- * @type {og.Vec3}
190
+ * @type {Vec3}
184
191
  */
185
192
  this.mousePositionOnEarth = new Vec3();
186
193
 
@@ -212,7 +219,7 @@ export class Planet extends RenderNode {
212
219
  /**
213
220
  * Planet's segments collected for rendering frame.
214
221
  * @protected
215
- * @type {og.quadTree.Node}
222
+ * @type {quadTree.Node}
216
223
  */
217
224
  this._renderedNodes = [];
218
225
  this._renderedNodesInFrustum = [];
@@ -220,42 +227,42 @@ export class Planet extends RenderNode {
220
227
  /**
221
228
  * Created nodes cache
222
229
  * @protected
223
- * @type {og.quadTree.Node}
230
+ * @type {quadTree.Node}
224
231
  */
225
232
  this._quadTreeNodesCacheMerc = {};
226
233
 
227
234
  /**
228
235
  * Current visible mercator segments tree nodes array.
229
236
  * @protected
230
- * @type {og.quadTree.Node}
237
+ * @type {quadTree.Node}
231
238
  */
232
239
  this._visibleNodes = {};
233
240
 
234
241
  /**
235
242
  * Current visible north pole nodes tree nodes array.
236
243
  * @protected
237
- * @type {og.quadTree.Node}
244
+ * @type {quadTree.Node}
238
245
  */
239
246
  this._visibleNodesNorth = {};
240
247
 
241
248
  /**
242
249
  * Current visible south pole nodes tree nodes array.
243
250
  * @protected
244
- * @type {og.quadTree.Node}
251
+ * @type {quadTree.Node}
245
252
  */
246
253
  this._visibleNodesSouth = {};
247
254
 
248
255
  /**
249
256
  * Layers activity lock.
250
257
  * @public
251
- * @type {og.idle.Lock}
258
+ * @type {idle.Lock}
252
259
  */
253
260
  this.layerLock = new Lock();
254
261
 
255
262
  /**
256
263
  * Terrain providers activity lock.
257
264
  * @public
258
- * @type {og.idle.Lock}
265
+ * @type {idle.Lock}
259
266
  */
260
267
  this.terrainLock = new Lock();
261
268
 
@@ -298,21 +305,21 @@ export class Planet extends RenderNode {
298
305
  /**
299
306
  * Mercator grid tree.
300
307
  * @protected
301
- * @type {og.quadTree.Node}
308
+ * @type {quadTree.Node}
302
309
  */
303
310
  this._quadTree = null;
304
311
 
305
312
  /**
306
313
  * North grid tree.
307
314
  * @protected
308
- * @type {og.quadTree.Node}
315
+ * @type {quadTree.Node}
309
316
  */
310
317
  this._quadTreeNorth = null;
311
318
 
312
319
  /**
313
320
  * South grid tree.
314
321
  * @protected
315
- * @type {og.quadTree.Node}
322
+ * @type {quadTree.Node}
316
323
  */
317
324
  this._quadTreeSouth = null;
318
325
 
@@ -378,7 +385,7 @@ export class Planet extends RenderNode {
378
385
  /**
379
386
  * GeoImage creator.
380
387
  * @protected
381
- * @type{og.utils.GeoImageCreator}
388
+ * @type{utils.GeoImageCreator}
382
389
  */
383
390
  this._geoImageCreator = null;
384
391
 
@@ -415,7 +422,7 @@ export class Planet extends RenderNode {
415
422
 
416
423
  /**
417
424
  * Add the given control to the renderer of the planet scene.
418
- * @param {og.control.Control} control - Control.
425
+ * @param {control.Control} control - Control.
419
426
  */
420
427
  addControl(control) {
421
428
  control.planet = this;
@@ -427,11 +434,12 @@ export class Planet extends RenderNode {
427
434
  if (minLod) {
428
435
  this._minLodRatio = minLod;
429
436
  }
437
+ this._renderCompletedActivated = false;
430
438
  }
431
439
 
432
440
  /**
433
441
  * Add the given controls array to the renderer of the planet.
434
- * @param {Array.<og.control.Control>} cArr - Control array.
442
+ * @param {Array.<control.Control>} cArr - Control array.
435
443
  */
436
444
  addControls(cArr) {
437
445
  for (var i = 0; i < cArr.length; i++) {
@@ -443,7 +451,7 @@ export class Planet extends RenderNode {
443
451
  * Return layer by it name
444
452
  * @param {string} name - Name of the layer. og.Layer.prototype.name
445
453
  * @public
446
- * @returns {og.Layer} -
454
+ * @returns {Layer} -
447
455
  */
448
456
  getLayerByName(name) {
449
457
  var i = this.layers.length;
@@ -456,7 +464,7 @@ export class Planet extends RenderNode {
456
464
 
457
465
  /**
458
466
  * Adds the given layer to the planet.
459
- * @param {og.Layer} layer - Layer object.
467
+ * @param {Layer} layer - Layer object.
460
468
  * @public
461
469
  */
462
470
  addLayer(layer) {
@@ -465,7 +473,7 @@ export class Planet extends RenderNode {
465
473
 
466
474
  /**
467
475
  * Dispatch layer visibility changing event.
468
- * @param {og.Layer} layer - Changed layer.
476
+ * @param {Layer} layer - Changed layer.
469
477
  * @protected
470
478
  */
471
479
  _onLayerVisibilityChanged(layer) {
@@ -474,7 +482,7 @@ export class Planet extends RenderNode {
474
482
 
475
483
  /**
476
484
  * Adds the given layers array to the planet.
477
- * @param {Array.<og.Layer>} layers - Layers array.
485
+ * @param {Array.<Layer>} layers - Layers array.
478
486
  * @public
479
487
  */
480
488
  addLayers(layers) {
@@ -485,8 +493,8 @@ export class Planet extends RenderNode {
485
493
 
486
494
  /**
487
495
  * Removes the given layer from the planet.
488
- * @param {og.Layer} layer - Layer to remove.
489
- * @return {og.Layer|undefined} The removed layer or undefined if the layer was not found.
496
+ * @param {Layer} layer - Layer to remove.
497
+ * @return {Layer|undefined} The removed layer or undefined if the layer was not found.
490
498
  * @public
491
499
  */
492
500
  removeLayer(layer) {
@@ -496,7 +504,7 @@ export class Planet extends RenderNode {
496
504
  /**
497
505
  *
498
506
  * @protected
499
- * @param {og.Layer} layer - Material layer.
507
+ * @param {Layer} layer - Material layer.
500
508
  */
501
509
  _clearLayerMaterial(layer) {
502
510
  var lid = layer._id;
@@ -511,7 +519,7 @@ export class Planet extends RenderNode {
511
519
 
512
520
  /**
513
521
  * Get the collection of layers associated with this planet.
514
- * @return {Array.<og.Layer>} Layers array.
522
+ * @return {Array.<Layer>} Layers array.
515
523
  * @public
516
524
  */
517
525
  getLayers() {
@@ -520,7 +528,7 @@ export class Planet extends RenderNode {
520
528
 
521
529
  /**
522
530
  * Sets base layer coverage to the planet.
523
- * @param {og.Layer} layer - Layer object.
531
+ * @param {Layer} layer - Layer object.
524
532
  * @public
525
533
  */
526
534
  setBaseLayer(layer) {
@@ -543,6 +551,8 @@ export class Planet extends RenderNode {
543
551
  * @param {number} factor - Elevation scale.
544
552
  */
545
553
  setHeightFactor(factor) {
554
+ this._renderCompletedActivated = false;
555
+
546
556
  if (this._heightFactor !== factor) {
547
557
  this._heightFactor = factor;
548
558
  this._quadTree.destroyBranches();
@@ -560,9 +570,11 @@ export class Planet extends RenderNode {
560
570
  /**
561
571
  * Sets terrain provider
562
572
  * @public
563
- * @param {og.terrain.Terrain} terrain - Terrain provider.
573
+ * @param {Terrain} terrain - Terrain provider.
564
574
  */
565
575
  setTerrain(terrain) {
576
+ this._renderCompletedActivated = false;
577
+
566
578
  if (this._initialized) {
567
579
  this.memClear();
568
580
  }
@@ -806,10 +818,10 @@ export class Planet extends RenderNode {
806
818
  _preRender() {
807
819
  this._quadTree.createChildrenNodes();
808
820
  this._quadTree.segment.createPlainSegment();
809
- this._quadTree.renderNode();
821
+ this._quadTree.renderNode(true);
810
822
  this._normalMapCreator.drawSingle(this._quadTree.segment);
811
823
 
812
- for (var i = 0; i < this._quadTree.nodes.length; i++) {
824
+ for (let i = 0; i < this._quadTree.nodes.length; i++) {
813
825
  this._quadTree.nodes[i].segment.createPlainSegment();
814
826
  this._quadTree.nodes[i].renderNode(true);
815
827
  this._normalMapCreator.drawSingle(this._quadTree.nodes[i].segment);
@@ -817,13 +829,25 @@ export class Planet extends RenderNode {
817
829
 
818
830
  this._quadTreeNorth.createChildrenNodes();
819
831
  this._quadTreeNorth.segment.createPlainSegment();
820
- this._quadTreeNorth.renderNode();
832
+ this._quadTreeNorth.renderNode(true);
821
833
  this._normalMapCreator.drawSingle(this._quadTreeNorth.segment);
822
834
 
835
+ for (let i = 0; i < this._quadTreeNorth.nodes.length; i++) {
836
+ this._quadTreeNorth.nodes[i].segment.createPlainSegment();
837
+ this._quadTreeNorth.nodes[i].renderNode(true);
838
+ this._normalMapCreator.drawSingle(this._quadTreeNorth.nodes[i].segment);
839
+ }
840
+
823
841
  this._quadTreeSouth.createChildrenNodes();
824
842
  this._quadTreeSouth.segment.createPlainSegment();
825
- this._quadTreeSouth.renderNode();
843
+ this._quadTreeSouth.renderNode(true);
826
844
  this._normalMapCreator.drawSingle(this._quadTreeSouth.segment);
845
+
846
+ for (let i = 0; i < this._quadTreeSouth.nodes.length; i++) {
847
+ this._quadTreeSouth.nodes[i].segment.createPlainSegment();
848
+ this._quadTreeSouth.nodes[i].renderNode(true);
849
+ this._normalMapCreator.drawSingle(this._quadTreeSouth.nodes[i].segment);
850
+ }
827
851
  }
828
852
 
829
853
  /**
@@ -972,13 +996,15 @@ export class Planet extends RenderNode {
972
996
  * @protected
973
997
  */
974
998
  _collectRenderNodes() {
999
+ let cam = this.camera;
1000
+
975
1001
  this._lodRatio = math.lerp(
976
- this.camera.slope < 0.0 ? 0.0 : this.camera.slope,
1002
+ cam.slope < 0.0 ? 0.0 : cam.slope,
977
1003
  this._maxLodRatio,
978
1004
  this._minLodRatio
979
1005
  );
980
1006
 
981
- this.camera._insideSegment = null;
1007
+ cam._insideSegment = null;
982
1008
 
983
1009
  this._nodeCounterError_ = 0;
984
1010
 
@@ -994,12 +1020,12 @@ export class Planet extends RenderNode {
994
1020
  this.minCurrZoom = math.MAX;
995
1021
  this.maxCurrZoom = math.MIN;
996
1022
 
997
- this._quadTree.renderTree(this.camera, 0, null);
1023
+ this._quadTree.renderTree(cam, 0, null);
998
1024
 
999
1025
  if (
1000
- this.renderer.activeCamera.slope > 0.8 &&
1001
- this.renderer.activeCamera._lonLat.height < 850000.0 &&
1002
- this.renderer.activeCamera._lonLat.height > 10000.0
1026
+ cam.slope > this.minEqualZoomCameraSlope &&
1027
+ cam._lonLat.height < this.maxEqualZoomAltitude &&
1028
+ cam._lonLat.height > this.minEqualZoomAltitude
1003
1029
  ) {
1004
1030
  this.minCurrZoom = this.maxCurrZoom;
1005
1031
 
@@ -1034,18 +1060,20 @@ export class Planet extends RenderNode {
1034
1060
  }
1035
1061
 
1036
1062
  for (let i = 0, len = temp2.length; i < len; i++) {
1037
- temp2[i].renderTree(this.camera, this.maxCurrZoom, null);
1063
+ temp2[i].renderTree(cam, this.maxCurrZoom, null);
1038
1064
  }
1039
1065
  }
1040
1066
 
1041
- this._quadTreeNorth.renderTree(this.camera, 0, null);
1042
- this._quadTreeSouth.renderTree(this.camera, 0, null);
1067
+ this._quadTreeNorth.renderTree(cam, 0, null);
1068
+ this._quadTreeSouth.renderTree(cam, 0, null);
1043
1069
  }
1044
1070
 
1045
1071
  _globalPreDraw() {
1046
- this._distBeforeMemClear += this._prevCamEye.distance(this.camera.eye);
1047
- this._prevCamEye.copy(this.camera.eye);
1048
- this.renderer.activeCamera.checkFly();
1072
+ let cam = this.camera;
1073
+
1074
+ this._distBeforeMemClear += this._prevCamEye.distance(cam.eye);
1075
+ this._prevCamEye.copy(cam.eye);
1076
+ cam.checkFly();
1049
1077
 
1050
1078
  // free memory
1051
1079
  if (this._createdNodesCount > MAX_NODES && this._distBeforeMemClear > 1000.0) {
@@ -1096,9 +1124,10 @@ export class Planet extends RenderNode {
1096
1124
  gl.disable(gl.POLYGON_OFFSET_FILL);
1097
1125
 
1098
1126
  if (frustumIndex === cam.FARTHEST_FRUSTUM_INDEX) {
1099
- if (!this._renderCompletedActivated || this.camera._moved) {
1127
+ if (this._skipPreRender/* && (!this._renderCompletedActivated || cam.isMoved)*/) {
1100
1128
  this._collectRenderNodes();
1101
1129
  }
1130
+ this._skipPreRender = true;
1102
1131
 
1103
1132
  // Here is the planet node dispatches a draw event before
1104
1133
  // rendering begins and we have got render nodes.
@@ -1119,7 +1148,9 @@ export class Planet extends RenderNode {
1119
1148
  }
1120
1149
 
1121
1150
  gl.blendEquation(gl.FUNC_ADD);
1151
+
1122
1152
  gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
1153
+
1123
1154
  gl.enable(gl.BLEND);
1124
1155
  gl.enable(gl.CULL_FACE);
1125
1156
 
@@ -1140,7 +1171,7 @@ export class Planet extends RenderNode {
1140
1171
  gl.TEXTURE_2D,
1141
1172
  (this.camera._lonLat.height > 329958.0 &&
1142
1173
  (this._nightTexture || this.transparentTexture)) ||
1143
- this.transparentTexture
1174
+ this.transparentTexture
1144
1175
  );
1145
1176
  gl.uniform1i(shu.nightTexture, this.SLICE_SIZE);
1146
1177
 
@@ -1183,8 +1214,6 @@ export class Planet extends RenderNode {
1183
1214
  shu = sh.uniforms;
1184
1215
  gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
1185
1216
  gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
1186
-
1187
- //gl.uniformMatrix4fv(sh.uniforms.projectionViewMatrix, false, cam.getProjectionViewMatrix());
1188
1217
  }
1189
1218
 
1190
1219
  gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
@@ -1229,7 +1258,6 @@ export class Planet extends RenderNode {
1229
1258
  rn[i].segment.screenRendering(sh, sl[j], j, this.transparentTexture, true);
1230
1259
  }
1231
1260
  }
1232
- //gl.disable(gl.POLYGON_OFFSET_FILL);
1233
1261
 
1234
1262
  gl.disable(gl.BLEND);
1235
1263
  }
@@ -1445,8 +1473,8 @@ export class Planet extends RenderNode {
1445
1473
  * Returns ray vector hit ellipsoid coordinates.
1446
1474
  * If the ray doesn't hit ellipsoit returns null.
1447
1475
  * @public
1448
- * @param {og.Ray} ray - Ray 3d.
1449
- * @returns {og.Vec3} -
1476
+ * @param {Ray} ray - Ray 3d.
1477
+ * @returns {Vec3} -
1450
1478
  */
1451
1479
  getRayIntersectionEllipsoid(ray) {
1452
1480
  return this.ellipsoid.hitRay(ray.origin, ray.direction);
@@ -1455,8 +1483,8 @@ export class Planet extends RenderNode {
1455
1483
  /**
1456
1484
  * Returns 2d screen coordanates projection point to the planet ellipsoid 3d coordinates.
1457
1485
  * @public
1458
- * @param {og.math.Pixel} px - 2D sreen coordinates.
1459
- * @returns {og.Vec3} -
1486
+ * @param {math.Pixel} px - 2D sreen coordinates.
1487
+ * @returns {Vec3} -
1460
1488
  */
1461
1489
  getCartesianFromPixelEllipsoid(px) {
1462
1490
  var cam = this.renderer.activeCamera;
@@ -1466,8 +1494,8 @@ export class Planet extends RenderNode {
1466
1494
  /**
1467
1495
  * Returns 2d screen coordanates projection point to the planet ellipsoid geographical coordinates.
1468
1496
  * @public
1469
- * @param {og.math.Pixel} px - 2D screen coordinates.
1470
- * @returns {og.LonLat} -
1497
+ * @param {math.Pixel} px - 2D screen coordinates.
1498
+ * @returns {LonLat} -
1471
1499
  */
1472
1500
  getLonLatFromPixelEllipsoid(px) {
1473
1501
  var coords = this.getCartesianFromPixelEllipsoid(px);
@@ -1482,7 +1510,7 @@ export class Planet extends RenderNode {
1482
1510
  * position or null if mouse cursor is outside the planet.
1483
1511
  * @public
1484
1512
  * @param {Boolean} [force=false] - Force framebuffer rendering.
1485
- * @returns {og.Vec3} -
1513
+ * @returns {Vec3} -
1486
1514
  */
1487
1515
  getCartesianFromMouseTerrain(force) {
1488
1516
  var ms = this.renderer.events.mouseState;
@@ -1497,9 +1525,9 @@ export class Planet extends RenderNode {
1497
1525
  * Returns 3d cartesian coordinates on the relief planet by 2d screen coordinates.
1498
1526
  * position or null if input coordinates is outside the planet.
1499
1527
  * @public
1500
- * @param {og.Vec2} px - Pixel screen 2d coordinates.
1528
+ * @param {Vec2} px - Pixel screen 2d coordinates.
1501
1529
  * @param {Boolean} [force=false] - Force framebuffer rendering.
1502
- * @returns {og.Vec3} -
1530
+ * @returns {Vec3} -
1503
1531
  */
1504
1532
  getCartesianFromPixelTerrain(px, force) {
1505
1533
  var distance = this.getDistanceFromPixel(px, force);
@@ -1514,9 +1542,9 @@ export class Planet extends RenderNode {
1514
1542
  * Returns geographical coordinates on the relief planet by 2d screen coordinates.
1515
1543
  * position or null if input coordinates is outside the planet.
1516
1544
  * @public
1517
- * @param {og.Vec2} px - Pixel screen 2d coordinates.
1545
+ * @param {Vec2} px - Pixel screen 2d coordinates.
1518
1546
  * @param {Boolean} [force=false] - Force framebuffer rendering.
1519
- * @returns {og.LonLat} -
1547
+ * @returns {LonLat} -
1520
1548
  */
1521
1549
  getLonLatFromPixelTerrain(px, force) {
1522
1550
  var coords = this.getCartesianFromPixelTerrain(px, force);
@@ -1529,8 +1557,8 @@ export class Planet extends RenderNode {
1529
1557
  /**
1530
1558
  * Returns projected 2d screen coordinates by 3d cartesian coordiantes.
1531
1559
  * @public
1532
- * @param {og.Vec3} coords - Cartesian coordinates.
1533
- * @returns {og.Vec2} -
1560
+ * @param {Vec3} coords - Cartesian coordinates.
1561
+ * @returns {Vec2} -
1534
1562
  */
1535
1563
  getPixelFromCartesian(coords) {
1536
1564
  return this.renderer.activeCamera.project(coords);
@@ -1539,8 +1567,8 @@ export class Planet extends RenderNode {
1539
1567
  /**
1540
1568
  * Returns projected 2d screen coordinates by geographical coordinates.
1541
1569
  * @public
1542
- * @param {og.LonLat} lonlat - Geographical coordinates.
1543
- * @returns {og.Vec2} -
1570
+ * @param {LonLat} lonlat - Geographical coordinates.
1571
+ * @returns {Vec2} -
1544
1572
  */
1545
1573
  getPixelFromLonLat(lonlat) {
1546
1574
  var coords = this.ellipsoid.lonLatToCartesian(lonlat);
@@ -1554,7 +1582,7 @@ export class Planet extends RenderNode {
1554
1582
  * Returns distance from active camera to the the planet ellipsoid
1555
1583
  * coordiantes unprojected by 2d screen coordiantes, or null if screen coordinates outside the planet.
1556
1584
  * @public
1557
- * @param {og.Vec2} px - Screen coordinates.
1585
+ * @param {Vec2} px - Screen coordinates.
1558
1586
  * @returns {number} -
1559
1587
  */
1560
1588
  getDistanceFromPixelEllipsoid(px) {
@@ -1568,7 +1596,7 @@ export class Planet extends RenderNode {
1568
1596
  * If screen coordinates inside the planet but relief is not exists in the
1569
1597
  * point than function returns distance to the planet ellipsoid.
1570
1598
  * @public
1571
- * @param {og.Vec2} px - Screen coordinates.
1599
+ * @param {Vec2} px - Screen coordinates.
1572
1600
  * @param {Boolean} [force=false] - Force framebuffer rendering.
1573
1601
  * @returns {number} -
1574
1602
  */
@@ -1612,7 +1640,7 @@ export class Planet extends RenderNode {
1612
1640
  /**
1613
1641
  * Sets camera to the planet geographical extent.
1614
1642
  * @public
1615
- * @param {og.Extent} extent - Geographical extent.
1643
+ * @param {Extent} extent - Geographical extent.
1616
1644
  */
1617
1645
  viewExtent(extent) {
1618
1646
  this.renderer.activeCamera.viewExtent(extent);
@@ -1621,7 +1649,7 @@ export class Planet extends RenderNode {
1621
1649
  /**
1622
1650
  * Sets camera to the planet geographical extent.
1623
1651
  * @public
1624
- * @param {Array.<number,number,number,number>} extentArr - Geographical extent array,
1652
+ * @param {Array.<number>} extentArr - Geographical extent array, (exactly 4 entries)
1625
1653
  * where index 0 - southwest longitude, 1 - latitude southwest, 2 - longitude northeast, 3 - latitude northeast.
1626
1654
  */
1627
1655
  viewExtentArr(extentArr) {
@@ -1636,7 +1664,7 @@ export class Planet extends RenderNode {
1636
1664
  /**
1637
1665
  * Gets current viewing geographical extent.
1638
1666
  * @public
1639
- * @returns {og.Extent} -
1667
+ * @returns {Extent} -
1640
1668
  */
1641
1669
  getViewExtent() {
1642
1670
  return this._viewExtent;
@@ -1667,8 +1695,8 @@ export class Planet extends RenderNode {
1667
1695
  /**
1668
1696
  * Sets camera to the planet geographical position.
1669
1697
  * @public
1670
- * @param {og.LonLat} lonlat - New geographical position.
1671
- * @param {og.Vec3} [up] - Camera UP vector.
1698
+ * @param {LonLat} lonlat - New geographical position.
1699
+ * @param {Vec3} [up] - Camera UP vector.
1672
1700
  */
1673
1701
  viewLonLat(lonlat, up) {
1674
1702
  this.renderer.activeCamera.setLonLat(lonlat, up);
@@ -1677,9 +1705,9 @@ export class Planet extends RenderNode {
1677
1705
  /**
1678
1706
  * Fly camera to the planet geographical extent.
1679
1707
  * @public
1680
- * @param {og.Extent} extent - Geographical extent.
1708
+ * @param {Extent} extent - Geographical extent.
1681
1709
  * @param {Number} [height] - Height on the end of the flight route.
1682
- * @param {og.Vec3} [up] - Camera UP vector on the end of a flying.
1710
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
1683
1711
  * @param {Number} [ampl] - Altitude amplitude factor.
1684
1712
  * @param {cameraCallback} [startCallback] - Callback that calls after flying when flying is finished.
1685
1713
  * @param {cameraCallback} [completeCallback] - Callback that calls befor the flying begins.
@@ -1698,9 +1726,9 @@ export class Planet extends RenderNode {
1698
1726
  /**
1699
1727
  * Fly camera to the new point.
1700
1728
  * @public
1701
- * @param {og.Vec3} cartesian - Fly coordiantes.
1702
- * @param {og.Vec3} [look] - Camera "look at" point.
1703
- * @param {og.Vec3} [up] - Camera UP vector on the end of a flying.
1729
+ * @param {Vec3} cartesian - Fly coordiantes.
1730
+ * @param {Vec3} [look] - Camera "look at" point.
1731
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
1704
1732
  * @param {Number} [ampl] - Altitude amplitude factor.
1705
1733
  * @param [completeCallback]
1706
1734
  * @param [startCallback]
@@ -1721,9 +1749,9 @@ export class Planet extends RenderNode {
1721
1749
  /**
1722
1750
  * Fly camera to the new geographical position.
1723
1751
  * @public
1724
- * @param {og.LonLat} lonlat - Fly geographical coordiantes.
1725
- * @param {og.Vec3} [look] - Camera "look at" point on the end of a flying.
1726
- * @param {og.Vec3} [up] - Camera UP vector on the end of a flying.
1752
+ * @param {LonLat} lonlat - Fly geographical coordiantes.
1753
+ * @param {Vec3} [look] - Camera "look at" point on the end of a flying.
1754
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
1727
1755
  * @param {Number} [ampl] - Altitude amplitude factor.
1728
1756
  * @param [completeCallback]
1729
1757
  * @param [startCallback]