@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.
- package/README.md +1 -1
- package/dist/@openglobus/og.esm.js +2 -2
- package/dist/@openglobus/og.esm.js.map +1 -1
- package/dist/@openglobus/og.umd.js +2 -2
- package/dist/@openglobus/og.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/og/Events.js +2 -2
- package/src/og/Globe.js +1 -1
- package/src/og/ImageCanvas.js +2 -2
- package/src/og/LonLat.js +1 -1
- package/src/og/Object3d.js +1 -1
- package/src/og/QueueArray.js +1 -1
- package/src/og/Stack.js +1 -1
- package/src/og/astro/earth.js +3 -3
- package/src/og/camera/Frustum.js +4 -4
- package/src/og/camera/PlanetCamera.js +10 -11
- package/src/og/cons.js +1 -1
- package/src/og/control/DebugInfo.js +3 -3
- package/src/og/control/EarthNavigation.js +6 -13
- package/src/og/control/KeyboardNavigation.js +41 -18
- package/src/og/control/Lighting.js +1 -1
- package/src/og/control/MouseNavigation.js +1 -1
- package/src/og/control/visibleExtent/Segment.js +2 -2
- package/src/og/ellipsoid/Ellipsoid.js +31 -50
- package/src/og/entity/BillboardHandler.js +3 -3
- package/src/og/entity/EntityCollection.js +7 -7
- package/src/og/entity/GeoObject.js +6 -4
- package/src/og/entity/GeoObjectHandler.js +30 -20
- package/src/og/entity/Geometry.js +2 -2
- package/src/og/entity/GeometryHandler.js +15 -15
- package/src/og/entity/LabelHandler.js +10 -10
- package/src/og/entity/LabelWorker.js +1 -1
- package/src/og/entity/PointCloud.js +2 -2
- package/src/og/entity/PointCloudHandler.js +2 -2
- package/src/og/entity/Polyline.js +11 -11
- package/src/og/entity/PolylineHandler.js +2 -2
- package/src/og/entity/RayHandler.js +2 -2
- package/src/og/entity/StripHandler.js +2 -2
- package/src/og/input/KeyboardHandler.js +90 -23
- package/src/og/layer/BaseGeoImage.js +1 -1
- package/src/og/layer/CanvasTiles.js +1 -1
- package/src/og/layer/Vector.js +2 -2
- package/src/og/math/Vec3.js +5 -0
- package/src/og/math.js +3 -3
- package/src/og/mercator.js +1 -1
- package/src/og/quadTree/Node.js +15 -14
- package/src/og/renderer/Renderer.js +5 -5
- package/src/og/renderer/RendererEvents.js +4 -18
- package/src/og/scene/BaseNode.js +1 -1
- package/src/og/scene/Planet.js +17 -24
- package/src/og/scene/RenderNode.js +9 -9
- package/src/og/segment/Segment.js +2 -2
- package/src/og/segment/SegmentLonLat.js +1 -1
- package/src/og/segment/segmentHelper.js +12 -12
- package/src/og/shaders/atmos.js +1 -1
- package/src/og/utils/GeoImageCreator.js +1 -1
- package/src/og/utils/NormalMapCreator.js +3 -3
- package/src/og/utils/PlainSegmentWorker.js +9 -9
- package/src/og/utils/TerrainWorker.js +2 -2
- package/src/og/utils/TextureAtlas.js +2 -2
- package/src/og/utils/earcut.js +8 -8
- package/src/og/utils/shared.js +10 -10
- package/src/og/webgl/Framebuffer.js +2 -2
- package/src/og/webgl/Handler.js +3 -1
- package/src/og/webgl/Multisample.js +2 -2
- package/src/og/webgl/Program.js +4 -4
- package/types/ImageCanvas.d.ts +1 -1
- package/types/ellipsoid/Ellipsoid.d.ts +3 -1
- package/types/entity/GeoObject.d.ts +1 -2
- package/types/input/KeyboardHandler.d.ts +9 -2
- package/types/math/Vec3.d.ts +2 -0
- package/types/renderer/RendererEvents.d.ts +2 -16
- 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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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) {
|
|
24
|
-
|
|
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.
|
|
32
|
-
|
|
33
|
-
|
|
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 (
|
|
154
|
+
for (let ch in _charkeysCallbacks) {
|
|
88
155
|
if (String.fromCharCode(_event.keyCode) == String.fromCharCode(ch)) {
|
|
89
156
|
var ccl = _charkeysCallbacks[ch];
|
|
90
|
-
for (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
183
|
+
for (let pk in _pressedKeysCallbacks) {
|
|
117
184
|
if (_currentlyPressedKeys[pk]) {
|
|
118
|
-
|
|
119
|
-
for (
|
|
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 (
|
|
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 (
|
|
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
|
}
|
package/src/og/layer/Vector.js
CHANGED
|
@@ -22,7 +22,7 @@ import { Layer } from "./Layer.js";
|
|
|
22
22
|
*/
|
|
23
23
|
function _entitiesConstructor(entities) {
|
|
24
24
|
var res = [];
|
|
25
|
-
for (
|
|
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 (
|
|
450
|
+
for (let i = startIndex; i < e.length; i++) {
|
|
451
451
|
e[i]._layerIndex = i;
|
|
452
452
|
}
|
|
453
453
|
}
|
package/src/og/math/Vec3.js
CHANGED
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 (
|
|
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 (
|
|
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 (
|
|
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) {
|
package/src/og/mercator.js
CHANGED
|
@@ -122,7 +122,7 @@ export function getTileY(lat, zoom) {
|
|
|
122
122
|
*/
|
|
123
123
|
export function forwardArray(lonlatArr) {
|
|
124
124
|
var res = [];
|
|
125
|
-
for (
|
|
125
|
+
for (let i = 0; i < lonlatArr.length; i++) {
|
|
126
126
|
res.push(lonlatArr[i].forwardMercator());
|
|
127
127
|
}
|
|
128
128
|
return res;
|
package/src/og/quadTree/Node.js
CHANGED
|
@@ -76,16 +76,17 @@ class Node {
|
|
|
76
76
|
createChildrenNodes() {
|
|
77
77
|
this.ready = true;
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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,
|
|
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,
|
|
269
|
+
this._keyboardHandler.removeEvent(name, p1, p2);
|
|
284
270
|
} else {
|
|
285
|
-
super.off(name,
|
|
271
|
+
super.off(name, p1);
|
|
286
272
|
}
|
|
287
273
|
}
|
|
288
274
|
|
package/src/og/scene/BaseNode.js
CHANGED
package/src/og/scene/Planet.js
CHANGED
|
@@ -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:
|
|
209
|
-
eye: new Vec3(
|
|
210
|
-
look:
|
|
211
|
-
up:
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
769
|
+
for (let i = 0; i <= TABLESIZE; i++) {
|
|
777
770
|
!this._indexesCache[i] && (this._indexesCache[i] = new Array(TABLESIZE));
|
|
778
|
-
for (
|
|
771
|
+
for (let j = 0; j <= TABLESIZE; j++) {
|
|
779
772
|
!this._indexesCache[i][j] && (this._indexesCache[i][j] = new Array(TABLESIZE));
|
|
780
|
-
for (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
1324
|
+
for (let k = 0; k < gsgs; k++) {
|
|
1325
1325
|
var j = k % gs,
|
|
1326
1326
|
i = ~~(k / gs);
|
|
1327
1327
|
|