@openglobus/og 0.17.0 → 0.17.2

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 (73) hide show
  1. package/README.md +1 -1
  2. package/dist/@openglobus/og.esm.js +2 -2
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +2 -2
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/og/Events.js +2 -2
  8. package/src/og/Globe.js +1 -1
  9. package/src/og/ImageCanvas.js +2 -2
  10. package/src/og/LonLat.js +1 -1
  11. package/src/og/Object3d.js +1 -1
  12. package/src/og/QueueArray.js +1 -1
  13. package/src/og/Stack.js +1 -1
  14. package/src/og/astro/earth.js +3 -3
  15. package/src/og/camera/Frustum.js +4 -4
  16. package/src/og/camera/PlanetCamera.js +10 -11
  17. package/src/og/cons.js +1 -1
  18. package/src/og/control/DebugInfo.js +3 -3
  19. package/src/og/control/EarthNavigation.js +6 -13
  20. package/src/og/control/KeyboardNavigation.js +41 -18
  21. package/src/og/control/Lighting.js +1 -1
  22. package/src/og/control/MouseNavigation.js +1 -1
  23. package/src/og/control/visibleExtent/Segment.js +2 -2
  24. package/src/og/ellipsoid/Ellipsoid.js +31 -50
  25. package/src/og/entity/BillboardHandler.js +3 -3
  26. package/src/og/entity/EntityCollection.js +7 -7
  27. package/src/og/entity/GeoObject.js +6 -4
  28. package/src/og/entity/GeoObjectHandler.js +30 -20
  29. package/src/og/entity/Geometry.js +2 -2
  30. package/src/og/entity/GeometryHandler.js +15 -15
  31. package/src/og/entity/LabelHandler.js +10 -10
  32. package/src/og/entity/LabelWorker.js +1 -1
  33. package/src/og/entity/PointCloud.js +2 -2
  34. package/src/og/entity/PointCloudHandler.js +2 -2
  35. package/src/og/entity/Polyline.js +11 -11
  36. package/src/og/entity/PolylineHandler.js +2 -2
  37. package/src/og/entity/RayHandler.js +2 -2
  38. package/src/og/entity/StripHandler.js +2 -2
  39. package/src/og/input/KeyboardHandler.js +90 -23
  40. package/src/og/layer/BaseGeoImage.js +1 -1
  41. package/src/og/layer/CanvasTiles.js +1 -1
  42. package/src/og/layer/Vector.js +2 -2
  43. package/src/og/math/Vec3.js +5 -0
  44. package/src/og/math.js +3 -3
  45. package/src/og/mercator.js +1 -1
  46. package/src/og/quadTree/Node.js +15 -14
  47. package/src/og/renderer/Renderer.js +5 -5
  48. package/src/og/renderer/RendererEvents.js +4 -18
  49. package/src/og/scene/BaseNode.js +1 -1
  50. package/src/og/scene/Planet.js +17 -24
  51. package/src/og/scene/RenderNode.js +9 -9
  52. package/src/og/segment/Segment.js +2 -2
  53. package/src/og/segment/SegmentLonLat.js +1 -1
  54. package/src/og/segment/segmentHelper.js +12 -12
  55. package/src/og/shaders/atmos.js +1 -1
  56. package/src/og/utils/GeoImageCreator.js +1 -1
  57. package/src/og/utils/NormalMapCreator.js +3 -3
  58. package/src/og/utils/PlainSegmentWorker.js +9 -9
  59. package/src/og/utils/TerrainWorker.js +2 -2
  60. package/src/og/utils/TextureAtlas.js +2 -2
  61. package/src/og/utils/earcut.js +8 -8
  62. package/src/og/utils/shared.js +10 -10
  63. package/src/og/webgl/Framebuffer.js +2 -2
  64. package/src/og/webgl/Handler.js +3 -1
  65. package/src/og/webgl/Multisample.js +2 -2
  66. package/src/og/webgl/Program.js +4 -4
  67. package/types/ImageCanvas.d.ts +1 -1
  68. package/types/ellipsoid/Ellipsoid.d.ts +3 -1
  69. package/types/entity/GeoObject.d.ts +1 -2
  70. package/types/input/KeyboardHandler.d.ts +9 -2
  71. package/types/math/Vec3.d.ts +2 -0
  72. package/types/renderer/RendererEvents.d.ts +2 -16
  73. package/types/scene/Planet.d.ts +1 -3
@@ -1,37 +1,100 @@
1
1
  'use strict';
2
2
 
3
3
  import { input } from './input.js';
4
+ import { stamp } from "../utils/shared.js";
5
+
6
+ const STAMP_SPACER = "_";
4
7
 
5
8
  class KeyboardHandler {
6
9
 
7
10
  constructor() {
8
- var _currentlyPressedKeys = {};
9
- var _pressedKeysCallbacks = {};
10
- var _unpressedKeysCallbacks = {};
11
- var _charkeysCallbacks = {};
12
- var _that = this;
13
- var _anykeyCallback = null;
14
- var _event = null;
11
+ let _currentlyPressedKeys = {};
12
+ let _pressedKeysCallbacks = {};
13
+ let _unpressedKeysCallbacks = {};
14
+ let _charkeysCallbacks = {};
15
+
16
+ let _that = this;
17
+ let _anykeyCallback = null;
18
+ let _event = null;
15
19
 
16
- var _active = true;
20
+ let _active = true;
21
+
22
+ let _stampCache = {};
17
23
 
18
24
  if (KeyboardHandler.prototype._instance) {
19
25
  return KeyboardHandler.prototype._instance;
20
26
  } else {
21
27
  KeyboardHandler.prototype._instance = this;
22
28
 
23
- document.onkeydown = function (event) { _event = event; _active && _that.handleKeyDown(); };
24
- document.onkeyup = function (event) { _event = event; _active && _that.handleKeyUp(); };
29
+ document.onkeydown = function (event) {
30
+ _event = event;
31
+ _active && _that.handleKeyDown();
32
+ };
33
+ document.onkeyup = function (event) {
34
+ _event = event;
35
+ _active && _that.handleKeyUp();
36
+ };
25
37
  }
26
38
 
27
39
  var _sortByPriority = function (a, b) {
28
40
  return a.priority < b.priority;
29
41
  };
30
42
 
31
- this.removeEvent = function (events, callback) {
32
- //
33
- // TODO:...
34
- //
43
+ this.getcurrentlyPressedKeys = function () {
44
+ return _currentlyPressedKeys;
45
+ }
46
+
47
+ this.getPressedKeysCallbacks = function () {
48
+ return _pressedKeysCallbacks;
49
+ }
50
+
51
+ this.getUnpressedKeysCallbacks = function () {
52
+ return _unpressedKeysCallbacks;
53
+ }
54
+
55
+ this.getCharkeysCallbacks = function () {
56
+ return _charkeysCallbacks;
57
+ }
58
+
59
+ this.removeEvent = function (event, keyCode, callback) {
60
+ let st = this._getStamp(event, keyCode, callback._openglobus_id);
61
+ if (callback._openglobus_id && _stampCache[st]) {
62
+ _stampCache[st] = null;
63
+ delete _stampCache[st];
64
+
65
+ if (event === "keypress") {
66
+ this._removeCallback(_pressedKeysCallbacks[keyCode], callback);
67
+ } else if (event === "keyfree") {
68
+ this._removeCallback(_unpressedKeysCallbacks[keyCode], callback);
69
+ } else if (event === "charkeypress") {
70
+ this._removeCallback(_charkeysCallbacks[keyCode], callback);
71
+ }
72
+ }
73
+ };
74
+
75
+ this._removeCallback = function (handlers, callback) {
76
+ for (let i = 0; i < handlers.length; i++) {
77
+ if (handlers[i].callback._openglobus_id === callback._openglobus_id) {
78
+ handlers.splice(i, 1);
79
+ }
80
+ }
81
+ };
82
+
83
+ this._getStamp = function (name, keyCode, ogid) {
84
+ return `${name}${STAMP_SPACER}${keyCode}${STAMP_SPACER}${ogid}`;
85
+ };
86
+
87
+ this._stamp = function (name, keyCode, obj) {
88
+ let ogid = stamp(obj);
89
+
90
+ let st = this._getStamp(name, keyCode, ogid);
91
+
92
+ if (!_stampCache[st]) {
93
+ _stampCache[st] = ogid;
94
+ return true;
95
+ }
96
+
97
+ return false;
35
98
  };
36
99
 
37
100
  this.setActivity = function (activity) {
@@ -40,9 +103,13 @@ class KeyboardHandler {
40
103
 
41
104
  this.releaseKeys = function () {
42
105
  _currentlyPressedKeys = {};
43
- }
106
+ };
107
+
108
+ this.addEvent = function (event, keyCode, callback, sender, priority) {
109
+
110
+ // Event is already bound with the callback
111
+ if (!this._stamp(event, keyCode, callback)) return;
44
112
 
45
- this.addEvent = function (event, sender, callback, keyCode, priority) {
46
113
  if (priority === undefined) {
47
114
  priority = 1600;
48
115
  }
@@ -84,10 +151,10 @@ class KeyboardHandler {
84
151
  this.handleKeyDown = function () {
85
152
  _anykeyCallback && _anykeyCallback.callback.call(_anykeyCallback.sender, _event);
86
153
  _currentlyPressedKeys[_event.keyCode] = true;
87
- for (var ch in _charkeysCallbacks) {
154
+ for (let ch in _charkeysCallbacks) {
88
155
  if (String.fromCharCode(_event.keyCode) == String.fromCharCode(ch)) {
89
156
  var ccl = _charkeysCallbacks[ch];
90
- for (var i = 0; i < ccl.length; i++) {
157
+ for (let i = 0; i < ccl.length; i++) {
91
158
  ccl[i].callback.call(ccl[i].sender, _event);
92
159
  }
93
160
  }
@@ -100,10 +167,10 @@ class KeyboardHandler {
100
167
 
101
168
  this.handleKeyUp = function () {
102
169
  if (_currentlyPressedKeys[_event.keyCode] || _event.keyCode === input.KEY_PRINTSCREEN) {
103
- for (var pk in _unpressedKeysCallbacks) {
170
+ for (let pk in _unpressedKeysCallbacks) {
104
171
  if (_currentlyPressedKeys[pk] || _event.keyCode === input.KEY_PRINTSCREEN && pk == input.KEY_PRINTSCREEN) {
105
172
  var cpk = _unpressedKeysCallbacks[pk];
106
- for (var i = 0; i < cpk.length; i++) {
173
+ for (let i = 0; i < cpk.length; i++) {
107
174
  cpk[i].callback.call(cpk[i].sender, _event);
108
175
  }
109
176
  }
@@ -113,10 +180,10 @@ class KeyboardHandler {
113
180
  };
114
181
 
115
182
  this.handleEvents = function () {
116
- for (var pk in _pressedKeysCallbacks) {
183
+ for (let pk in _pressedKeysCallbacks) {
117
184
  if (_currentlyPressedKeys[pk]) {
118
- var cpk = _pressedKeysCallbacks[pk];
119
- for (var i = 0; i < cpk.length; i++) {
185
+ let cpk = _pressedKeysCallbacks[pk];
186
+ for (let i = 0; i < cpk.length; i++) {
120
187
  cpk[i].callback.call(cpk[i].sender, _event);
121
188
  }
122
189
  }
@@ -146,7 +146,7 @@ class BaseGeoImage extends Layer {
146
146
  corners[3].clone()
147
147
  ] || [0, 0, 0, 0];
148
148
 
149
- for (var i = 0; i < this._cornersWgs84.length; i++) {
149
+ for (let i = 0; i < this._cornersWgs84.length; i++) {
150
150
  if (this._cornersWgs84[i].lat >= 89.9) {
151
151
  this._cornersWgs84[i].lat = 89.9;
152
152
  }
@@ -102,7 +102,7 @@ class CanvasTiles extends Layer {
102
102
  */
103
103
  abortLoading() {
104
104
  var q = this._pendingsQueue;
105
- for (var i = q._shiftIndex + 1; i < q._popIndex + 1; i++) {
105
+ for (let i = q._shiftIndex + 1; i < q._popIndex + 1; i++) {
106
106
  if (q._array[i]) {
107
107
  this.abortMaterialLoading(q._array[i]);
108
108
  }
@@ -22,7 +22,7 @@ import { Layer } from "./Layer.js";
22
22
  */
23
23
  function _entitiesConstructor(entities) {
24
24
  var res = [];
25
- for (var i = 0; i < entities.length; i++) {
25
+ for (let i = 0; i < entities.length; i++) {
26
26
  var ei = entities[i];
27
27
  if (ei.instanceName === "Entity") {
28
28
  res.push(ei);
@@ -447,7 +447,7 @@ class Vector extends Layer {
447
447
  */
448
448
  _reindexEntitiesArray(startIndex) {
449
449
  var e = this._entities;
450
- for (var i = startIndex; i < e.length; i++) {
450
+ for (let i = startIndex; i < e.length; i++) {
451
451
  e[i]._layerIndex = i;
452
452
  }
453
453
  }
@@ -81,6 +81,11 @@ export class Vec3 {
81
81
  return new Vec3(0, 0, 1);
82
82
  }
83
83
 
84
+ /** @const */
85
+ static get NORTH() {
86
+ return Vec3.UNIT_Z;
87
+ }
88
+
84
89
  /**
85
90
  * Separate 63 bit Vec3 to two Vec3 32 bit float values.
86
91
  * @function
package/src/og/math.js CHANGED
@@ -138,7 +138,7 @@ export function isPowerOfTwo(x) {
138
138
  */
139
139
  export function nextHighestPowerOfTwo(x, maxValue = 4096) {
140
140
  --x;
141
- for (var i = 1; i < 32; i <<= 1) {
141
+ for (let i = 1; i < 32; i <<= 1) {
142
142
  x = x | (x >> i);
143
143
  }
144
144
  return (x + 1) > maxValue ? maxValue : x + 1
@@ -362,7 +362,7 @@ export function negativePItoPI(a) {
362
362
  export function solve_iteration_fixed(f, x0, maxIter) {
363
363
  var x = 0;
364
364
  var x2 = x0;
365
- for (var i = 0; i < maxIter; i++) {
365
+ for (let i = 0; i < maxIter; i++) {
366
366
  x = x2;
367
367
  x2 = f(x);
368
368
  }
@@ -382,7 +382,7 @@ export function solve_iteration_fixed(f, x0, maxIter) {
382
382
  export function solve_iteration(f, x0, err, maxIter = 50) {
383
383
  var x = 0;
384
384
  var x2 = x0;
385
- for (var i = 0; i < maxIter; i++) {
385
+ for (let i = 0; i < maxIter; i++) {
386
386
  x = x2;
387
387
  x2 = f(x);
388
388
  if (Math.abs(x2 - x) < err) {
@@ -122,7 +122,7 @@ export function getTileY(lat, zoom) {
122
122
  */
123
123
  export function forwardArray(lonlatArr) {
124
124
  var res = [];
125
- for (var i = 0; i < lonlatArr.length; i++) {
125
+ for (let i = 0; i < lonlatArr.length; i++) {
126
126
  res.push(lonlatArr[i].forwardMercator());
127
127
  }
128
128
  return res;
@@ -76,16 +76,17 @@ class Node {
76
76
  createChildrenNodes() {
77
77
  this.ready = true;
78
78
 
79
- var p = this.planet;
80
- var ps = this.segment;
81
- var ext = ps._extent;
82
- var size_x = ext.getWidth() * 0.5;
83
- var size_y = ext.getHeight() * 0.5;
84
- var ne = ext.northEast, sw = ext.southWest;
85
- var z = ps.tileZoom + 1;
86
- var id = this.nodeId * 4 + 1;
87
- var c = new LonLat(sw.lon + size_x, sw.lat + size_y);
88
- var nd = this.nodes;
79
+ const p = this.planet;
80
+ const ps = this.segment;
81
+ const ext = ps._extent;
82
+ const z = ps.tileZoom + 1;
83
+ const size_x = ext.getWidth() * 0.5;
84
+ const size_y = ext.getHeight() * 0.5;
85
+ const ne = ext.northEast;
86
+ const sw = ext.southWest;
87
+ const id = this.nodeId * 4 + 1;
88
+ const c = new LonLat(sw.lon + size_x, sw.lat + size_y);
89
+ const nd = this.nodes;
89
90
 
90
91
  nd[NW] = new Node(this.SegmentPrototype, p, NW, this, id, z, new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)));
91
92
  nd[NE] = new Node(this.SegmentPrototype, p, NE, this, id, z, new Extent(c, new LonLat(ne.lon, ne.lat)));
@@ -333,7 +334,7 @@ class Node {
333
334
 
334
335
  var nodes = this.planet._renderedNodes;
335
336
 
336
- for (var i = nodes.length - 1; i >= 0; --i) {
337
+ for (let i = nodes.length - 1; i >= 0; --i) {
337
338
  var ni = nodes[i];
338
339
 
339
340
  var cs = this.getCommonSide(ni);
@@ -597,7 +598,7 @@ class Node {
597
598
  tempVerticesHigh = new Float32Array(3 * _vertOrder.length);
598
599
  tempVerticesLow = new Float32Array(3 * _vertOrder.length);
599
600
 
600
- for (var i = 0; i < _vertOrder.length; i++) {
601
+ for (let i = 0; i < _vertOrder.length; i++) {
601
602
  let vi_y = _vertOrder[i].y + t_i0, vi_x = _vertOrder[i].x + t_j0;
602
603
 
603
604
  let vi_x_is = vi_x * gridSize, vi_y_is = vi_y * gridSize;
@@ -725,7 +726,7 @@ class Node {
725
726
  if (state === NOTRENDERING || state === RENDERING) {
726
727
  this.destroyBranches();
727
728
  } else {
728
- for (var i = 0; i < this.nodes.length; i++) {
729
+ for (let i = 0; i < this.nodes.length; i++) {
729
730
  this.nodes[i] && this.nodes[i].clearTree();
730
731
  }
731
732
  }
@@ -763,7 +764,7 @@ class Node {
763
764
  traverseTree(callback) {
764
765
  callback(this);
765
766
  if (this.ready) {
766
- for (var i = 0; i < this.nodes.length; i++) {
767
+ for (let i = 0; i < this.nodes.length; i++) {
767
768
  this.nodes[i].traverseTree(callback);
768
769
  }
769
770
  }
@@ -265,7 +265,7 @@ class Renderer {
265
265
  }
266
266
 
267
267
  removeDepthCallback(id) {
268
- for (var i = 0; i < this._depthCallbacks.length; i++) {
268
+ for (let i = 0; i < this._depthCallbacks.length; i++) {
269
269
  if (id === this._depthCallbacks[i].id) {
270
270
  this._depthCallbacks.splice(i, 1);
271
271
  break;
@@ -282,7 +282,7 @@ class Renderer {
282
282
  }
283
283
 
284
284
  removeDistanceCallback(id) {
285
- for (var i = 0; i < this._distanceCallbacks.length; i++) {
285
+ for (let i = 0; i < this._distanceCallbacks.length; i++) {
286
286
  if (id === this._distanceCallbacks[i].id) {
287
287
  this._distanceCallbacks.splice(i, 1);
288
288
  break;
@@ -310,7 +310,7 @@ class Renderer {
310
310
  * @param {Number} id - Handler id to remove.
311
311
  */
312
312
  removePickingCallback(id) {
313
- for (var i = 0; i < this._pickingCallbacks.length; i++) {
313
+ for (let i = 0; i < this._pickingCallbacks.length; i++) {
314
314
  if (id === this._pickingCallbacks[i].id) {
315
315
  this._pickingCallbacks.splice(i, 1);
316
316
  break;
@@ -414,7 +414,7 @@ class Renderer {
414
414
  * @param {Array.<control.Control>} cArr - Control array.
415
415
  */
416
416
  addControls(cArr) {
417
- for (var i = 0; i < cArr.length; i++) {
417
+ for (let i = 0; i < cArr.length; i++) {
418
418
  cArr[i].addTo(this);
419
419
  }
420
420
  }
@@ -676,7 +676,7 @@ class Renderer {
676
676
  * @param {Array.<scene.RenderNode>} nodesArr - Render nodes array.
677
677
  */
678
678
  addNodes(nodesArr) {
679
- for (var i = 0; i < nodesArr.length; i++) {
679
+ for (let i = 0; i < nodesArr.length; i++) {
680
680
  this.addNode(nodesArr[i]);
681
681
  }
682
682
  }
@@ -256,33 +256,19 @@ class RendererEvents extends Events {
256
256
  }
257
257
  }
258
258
 
259
- /**
260
- * Set render event callback.
261
- * @public
262
- * @param {string} name - Event name
263
- * @param {eventCallback} callback - Callback function
264
- * @param {number} [key] - Key code from og.input
265
- * @param {*} sender - Callback context
266
- * @param {number} [priority] - Event callback priority
267
- */
268
259
  on(name, p0, p1, p2, p3) {
269
260
  if (name === "keypress" || name === "charkeypress" || name === "keyfree") {
270
- this._keyboardHandler.addEvent(name, p2, p1, p0, p3);
261
+ this._keyboardHandler.addEvent(name, p0, p1, p2, p3);
271
262
  } else {
272
263
  super.on(name, p0, p1, p2);
273
264
  }
274
265
  }
275
266
 
276
- /**
277
- * TODO: DOESNT WORK!!!
278
- * @param {any} name
279
- * @param {any} callback
280
- */
281
- off(name, callback) {
267
+ off(name, p1, p2) {
282
268
  if (name === "keypress" || name === "charkeypress" || name === "keyfree") {
283
- this._keyboardHandler.removeEvent(name, callback);
269
+ this._keyboardHandler.removeEvent(name, p1, p2);
284
270
  } else {
285
- super.off(name, callback);
271
+ super.off(name, p1);
286
272
  }
287
273
  }
288
274
 
@@ -74,7 +74,7 @@ class BaseNode {
74
74
  * @public
75
75
  */
76
76
  destroy() {
77
- for (var i = 0; i < this.childNodes.length; i++) {
77
+ for (let i = 0; i < this.childNodes.length; i++) {
78
78
  this.childNodes[i].destroy();
79
79
  }
80
80
  this._clear();
@@ -117,8 +117,6 @@ export class Planet extends RenderNode {
117
117
  constructor(options = {}) {
118
118
  super(options.name);
119
119
 
120
- this._cameraFrustums = options.frustums || [[1, 100], [100, 1000 + 7.0], [1000 - 7.0, 1e6 + 17], [1e6 - 17, 1e9]];
121
-
122
120
  /**
123
121
  * @public
124
122
  * @type {Ellipsoid}
@@ -205,10 +203,10 @@ export class Planet extends RenderNode {
205
203
  * @type {PlanetCamera}
206
204
  */
207
205
  this.camera = new PlanetCamera(this, {
208
- frustums: this._cameraFrustums,
209
- eye: new Vec3(0, 0, 28000000),
210
- look: new Vec3(0, 0, 0),
211
- up: new Vec3(0, 1, 0),
206
+ frustums: options.frustums,
207
+ eye: new Vec3(25000000, 0, 0),
208
+ look: Vec3.ZERO,
209
+ up: Vec3.NORTH,
212
210
  minAltitude: this._minAltitude,
213
211
  maxAltitude: this._maxAltitude
214
212
  });
@@ -438,13 +436,8 @@ export class Planet extends RenderNode {
438
436
  this._atmosphereMaxMinOpacity = new Float32Array([1.0, 0.41]);
439
437
  }
440
438
 
441
- static getBearingNorthRotationQuat(cartesian) {
442
- //
443
- // TODO: fix normal for ellipsoid
444
- //
445
- let n = cartesian.normal();
446
- let t = Vec3.proj_b_to_plane(Vec3.UNIT_Y, n);
447
- return Quat.getLookRotation(t, n);
439
+ getNorthFrameRotation(cartesian) {
440
+ return this.ellipsoid.getNorthFrameRotation(cartesian);
448
441
  }
449
442
 
450
443
  set atmosphereMaxOpacity(opacity) {
@@ -532,7 +525,7 @@ export class Planet extends RenderNode {
532
525
  * @param {Array.<control.Control>} cArr - Control array.
533
526
  */
534
527
  addControls(cArr) {
535
- for (var i = 0; i < cArr.length; i++) {
528
+ for (let i = 0; i < cArr.length; i++) {
536
529
  this.addControl(cArr[i]);
537
530
  }
538
531
  }
@@ -773,15 +766,15 @@ export class Planet extends RenderNode {
773
766
 
774
767
  let kk = 0;
775
768
  // Initialization indexes buffers cache. It takes about 120mb RAM!
776
- for (var i = 0; i <= TABLESIZE; i++) {
769
+ for (let i = 0; i <= TABLESIZE; i++) {
777
770
  !this._indexesCache[i] && (this._indexesCache[i] = new Array(TABLESIZE));
778
- for (var j = 0; j <= TABLESIZE; j++) {
771
+ for (let j = 0; j <= TABLESIZE; j++) {
779
772
  !this._indexesCache[i][j] && (this._indexesCache[i][j] = new Array(TABLESIZE));
780
- for (var k = 0; k <= TABLESIZE; k++) {
773
+ for (let k = 0; k <= TABLESIZE; k++) {
781
774
  !this._indexesCache[i][j][k] && (this._indexesCache[i][j][k] = new Array(TABLESIZE));
782
- for (var m = 0; m <= TABLESIZE; m++) {
775
+ for (let m = 0; m <= TABLESIZE; m++) {
783
776
  !this._indexesCache[i][j][k][m] && (this._indexesCache[i][j][k][m] = new Array(TABLESIZE));
784
- for (var q = 0; q <= TABLESIZE; q++) {
777
+ for (let q = 0; q <= TABLESIZE; q++) {
785
778
  let ptr = {
786
779
  buffer: null
787
780
  };
@@ -1103,7 +1096,7 @@ export class Planet extends RenderNode {
1103
1096
  this._clearRenderNodesInFrustum();
1104
1097
  this._renderedNodes = [];
1105
1098
 
1106
- for (var i = 0, len = temp.length; i < len; i++) {
1099
+ for (let i = 0, len = temp.length; i < len; i++) {
1107
1100
  var ri = temp[i];
1108
1101
  let ht = ri.segment.centerNormal.dot(cam._b);
1109
1102
  if (ri.segment.tileZoom === this.maxCurrZoom || ht < HORIZON_TANGENT) {
@@ -1301,7 +1294,7 @@ export class Planet extends RenderNode {
1301
1294
 
1302
1295
  if (sl.length) {
1303
1296
  let sli = sl[0];
1304
- for (var i = sli.length - 1; i >= 0; --i) {
1297
+ for (let i = sli.length - 1; i >= 0; --i) {
1305
1298
  let li = sli[i];
1306
1299
  if (li._fading && firstPass && li._refreshFadingOpacity()) {
1307
1300
  sli.splice(i, 1);
@@ -1310,7 +1303,7 @@ export class Planet extends RenderNode {
1310
1303
  }
1311
1304
 
1312
1305
  let isEq = this.terrain.equalizeVertices;
1313
- i = rn.length;
1306
+ var i = rn.length;
1314
1307
  while (i--) {
1315
1308
  let s = rn[i].segment;
1316
1309
  isEq && s.equalize();
@@ -1423,7 +1416,7 @@ export class Planet extends RenderNode {
1423
1416
 
1424
1417
  if (sl.length) {
1425
1418
  let sli = sl[0];
1426
- for (var i = sli.length - 1; i >= 0; --i) {
1419
+ for (let i = sli.length - 1; i >= 0; --i) {
1427
1420
  let li = sli[i];
1428
1421
  if (li._fading && firstPass && li._refreshFadingOpacity()) {
1429
1422
  sli.splice(i, 1);
@@ -1432,7 +1425,7 @@ export class Planet extends RenderNode {
1432
1425
  }
1433
1426
 
1434
1427
  let isEq = this.terrain.equalizeVertices;
1435
- i = rn.length;
1428
+ var i = rn.length;
1436
1429
  while (i--) {
1437
1430
  let s = rn[i].segment;
1438
1431
  isEq && s.equalize();
@@ -112,7 +112,7 @@ class RenderNode extends BaseNode {
112
112
  delete r.renderNodes[n];
113
113
  }
114
114
 
115
- for (var i = 0; i < r._renderNodesArr.length; i++) {
115
+ for (let i = 0; i < r._renderNodesArr.length; i++) {
116
116
  if (r._renderNodesArr[i].isEqual(this)) {
117
117
  r._renderNodesArr.splice(i, 1);
118
118
  break;
@@ -224,7 +224,7 @@ class RenderNode extends BaseNode {
224
224
  }
225
225
  }
226
226
 
227
- for (var i = 0; i < this.childNodes.length; i++) {
227
+ for (let i = 0; i < this.childNodes.length; i++) {
228
228
  this.childNodes[i].setActive(isActive);
229
229
  }
230
230
  }
@@ -236,7 +236,7 @@ class RenderNode extends BaseNode {
236
236
  */
237
237
  setDrawMode(mode) {
238
238
  this.drawMode = mode;
239
- for (var i = 0; i < this.childNodes.length; i++) {
239
+ for (let i = 0; i < this.childNodes.length; i++) {
240
240
  this.childNodes[i].setDrawMode(mode);
241
241
  }
242
242
  }
@@ -247,7 +247,7 @@ class RenderNode extends BaseNode {
247
247
  */
248
248
  transformLights() {
249
249
  var r = this.renderer;
250
- for (var i = 0; i < this._lights.length; i++) {
250
+ for (let i = 0; i < this._lights.length; i++) {
251
251
  var ii = i * 3;
252
252
  var tp;
253
253
  tp = this._lights[i]._position;
@@ -256,7 +256,7 @@ class RenderNode extends BaseNode {
256
256
  this._lightsPositions[ii + 2] = tp.z;
257
257
  }
258
258
 
259
- // for (var i = 0; i < this._lights.length; i++) {
259
+ // for (let i = 0; i < this._lights.length; i++) {
260
260
  // var ii = i * 4;
261
261
  // var tp;
262
262
  // if (this._lights[i].directional) {
@@ -273,13 +273,13 @@ class RenderNode extends BaseNode {
273
273
  }
274
274
 
275
275
  updateBillboardsTexCoords() {
276
- for (var i = 0; i < this.entityCollections.length; i++) {
276
+ for (let i = 0; i < this.entityCollections.length; i++) {
277
277
  this.entityCollections[i].billboardHandler.refreshTexCoordsArr();
278
278
  }
279
279
  }
280
280
 
281
281
  updateGeoObjectsTexCoords() {
282
- for (var i = 0; i < this.entityCollections.length; i++) {
282
+ for (let i = 0; i < this.entityCollections.length; i++) {
283
283
  this.entityCollections[i].geoObjectHandler.refreshTexCoordsArr();
284
284
  }
285
285
  }
@@ -296,7 +296,7 @@ class RenderNode extends BaseNode {
296
296
  * @private
297
297
  */
298
298
  _preDrawNodes() {
299
- for (var i = 0; i < this.childNodes.length; i++) {
299
+ for (let i = 0; i < this.childNodes.length; i++) {
300
300
  if (this.childNodes[i]._isActive) {
301
301
  this.childNodes[i]._preDrawNodes();
302
302
  }
@@ -313,7 +313,7 @@ class RenderNode extends BaseNode {
313
313
  * @private
314
314
  */
315
315
  _drawNodes() {
316
- for (var i = 0; i < this.childNodes.length; i++) {
316
+ for (let i = 0; i < this.childNodes.length; i++) {
317
317
  if (this.childNodes[i]._isActive) {
318
318
  this.childNodes[i]._drawNodes();
319
319
  }
@@ -817,7 +817,7 @@ class Segment {
817
817
  */
818
818
  deleteMaterials() {
819
819
  var m = this.materials;
820
- for (var i = 0; i < m.length; i++) {
820
+ for (let i = 0; i < m.length; i++) {
821
821
  var mi = m[i];
822
822
  if (mi) {
823
823
  mi.clear();
@@ -1321,7 +1321,7 @@ class Segment {
1321
1321
  nmVertsLow = this.normalMapVerticesLow,
1322
1322
  nmNorms = this.normalMapNormals;
1323
1323
 
1324
- for (var k = 0; k < gsgs; k++) {
1324
+ for (let k = 0; k < gsgs; k++) {
1325
1325
  var j = k % gs,
1326
1326
  i = ~~(k / gs);
1327
1327
 
@@ -158,7 +158,7 @@ class SegmentLonLat extends Segment {
158
158
  nmVertsLow = this.normalMapVerticesLow,
159
159
  nmNorms = this.normalMapNormals;
160
160
 
161
- for (var k = 0; k < gsgs; k++) {
161
+ for (let k = 0; k < gsgs; k++) {
162
162
  var j = k % gs,
163
163
  i = ~~(k / gs);
164
164