@openglobus/og 0.11.2 → 0.11.7
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/package.json +13 -13
- package/src/og/Clock.js +10 -10
- package/src/og/Events.js +8 -6
- package/src/og/Extent.js +82 -41
- package/src/og/Globe.js +25 -13
- package/src/og/ImageCanvas.js +22 -16
- package/src/og/LonLat.js +16 -13
- package/src/og/Popup.js +21 -14
- package/src/og/QueueArray.js +6 -2
- package/src/og/Rectangle.js +11 -6
- package/src/og/Stack.js +5 -2
- package/src/og/ajax.js +21 -33
- package/src/og/astro/astro.js +5 -5
- package/src/og/astro/earth.js +22 -16
- package/src/og/astro/jd.js +23 -18
- package/src/og/astro/orbit.js +13 -11
- package/src/og/astro/rotation.js +17 -8
- package/src/og/bv/Box.js +7 -3
- package/src/og/bv/Sphere.js +14 -11
- package/src/og/camera/Camera.js +51 -54
- package/src/og/camera/Frustum.js +29 -18
- package/src/og/camera/PlanetCamera.js +32 -23
- package/src/og/control/CompassButton.js +5 -1
- package/src/og/control/Control.js +12 -10
- package/src/og/control/DebugInfo.js +4 -1
- package/src/og/control/EarthCoordinates.js +54 -33
- package/src/og/control/KeyboardNavigation.js +10 -10
- package/src/og/control/LayerSwitcher.js +22 -21
- package/src/og/control/Lighting.js +34 -3
- package/src/og/control/MouseNavigation.js +1 -1
- package/src/og/control/ScaleControl.js +1 -1
- package/src/og/control/SegmentBoundVisualization.js +6 -7
- package/src/og/control/ShowFps.js +13 -8
- package/src/og/control/SimpleNavigation.js +6 -8
- package/src/og/control/Sun.js +25 -15
- package/src/og/control/ToggleWireframe.js +4 -4
- package/src/og/control/TouchNavigation.js +44 -33
- package/src/og/control/ZoomControl.js +41 -25
- package/src/og/ellipsoid/Ellipsoid.js +162 -66
- package/src/og/ellipsoid/wgs84.js +4 -4
- package/src/og/entity/BaseBillboard.js +100 -56
- package/src/og/entity/Billboard.js +14 -10
- package/src/og/entity/BillboardHandler.js +317 -60
- package/src/og/entity/Entity.js +100 -68
- package/src/og/entity/EntityCollection.js +70 -47
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +910 -0
- package/src/og/entity/Geometry.js +27 -24
- package/src/og/entity/GeometryHandler.js +596 -124
- package/src/og/entity/Label.js +80 -49
- package/src/og/entity/LabelHandler.js +45 -244
- package/src/og/entity/LabelWorker.js +218 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +80 -32
- package/src/og/entity/PointCloudHandler.js +8 -8
- package/src/og/entity/Polyline.js +16 -16
- package/src/og/entity/Ray.js +60 -27
- package/src/og/entity/Strip.js +77 -48
- package/src/og/entity/StripHandler.js +26 -26
- package/src/og/entity/index.js +8 -16
- package/src/og/layer/BaseGeoImage.js +54 -23
- package/src/og/layer/CanvasTiles.js +24 -24
- package/src/og/layer/GeoImage.js +9 -9
- package/src/og/layer/GeoVideo.js +3 -3
- package/src/og/layer/KML.js +63 -37
- package/src/og/layer/Layer.js +44 -21
- package/src/og/layer/Material.js +23 -20
- package/src/og/layer/Vector.js +114 -68
- package/src/og/layer/WMS.js +34 -17
- package/src/og/layer/XYZ.js +48 -46
- package/src/og/light/LightSource.js +46 -39
- package/src/og/math/Mat3.js +34 -22
- package/src/og/math/Mat4.js +603 -459
- package/src/og/math/Plane.js +21 -20
- package/src/og/math/Quat.js +182 -139
- package/src/og/math/Ray.js +38 -33
- package/src/og/math/Vec2.js +85 -75
- package/src/og/math/Vec3.js +142 -112
- package/src/og/math/Vec4.js +27 -31
- package/src/og/math/coder.js +10 -10
- package/src/og/math.js +12 -12
- package/src/og/proj/EPSG3857.js +4 -4
- package/src/og/proj/EPSG4326.js +4 -4
- package/src/og/proj/Proj.js +4 -6
- package/src/og/quadTree/Node.js +8 -8
- package/src/og/renderer/Renderer.js +59 -52
- package/src/og/renderer/RendererEvents.js +50 -27
- package/src/og/scene/BaseNode.js +7 -8
- package/src/og/scene/Planet.js +102 -103
- package/src/og/scene/RenderNode.js +28 -21
- package/src/og/segment/Segment.js +26 -21
- package/src/og/segment/SegmentLonLat.js +5 -5
- package/src/og/shaders/drawnode.js +135 -142
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/pointCloud.js +41 -41
- package/src/og/shaders/shape.js +12 -18
- package/src/og/shaders/skybox.js +36 -36
- package/src/og/shaders/toneMapping.js +1 -0
- package/src/og/shapes/BaseShape.js +126 -54
- package/src/og/shapes/Icosphere.js +29 -14
- package/src/og/shapes/Sphere.js +12 -15
- package/src/og/terrain/BilTerrain.js +1 -0
- package/src/og/terrain/EmptyTerrain.js +2 -2
- package/src/og/terrain/GlobusTerrain.js +9 -9
- package/src/og/utils/FontAtlas.js +6 -2
- package/src/og/utils/TextureAtlas.js +22 -24
- package/src/og/utils/VectorTileCreator.js +1 -3
- package/src/og/utils/shared.js +16 -16
- package/src/og/webgl/Framebuffer.js +88 -40
- package/src/og/webgl/Handler.js +243 -169
- package/src/og/webgl/Multisample.js +47 -19
- package/src/og/webgl/Program.js +79 -34
- package/src/og/webgl/ProgramController.js +17 -13
- package/src/og/webgl/callbacks.js +8 -8
- package/src/og/inherits.js +0 -8
- package/src/og/utils/polylabel.js +0 -176
- package/types/Clock.d.ts +0 -90
- package/types/Deferred.d.ts +0 -6
- package/types/Events.d.ts +0 -73
- package/types/Extent.d.ts +0 -166
- package/types/Globe.d.ts +0 -75
- package/types/ImageCanvas.d.ts +0 -121
- package/types/Lock.d.ts +0 -12
- package/types/LonLat.d.ts +0 -108
- package/types/Popup.d.ts +0 -38
- package/types/QueueArray.d.ts +0 -15
- package/types/Rectangle.d.ts +0 -74
- package/types/Stack.d.ts +0 -15
- package/types/ajax.d.ts +0 -24
- package/types/arial.d.ts +0 -48
- package/types/astro/astro.d.ts +0 -38
- package/types/astro/earth.d.ts +0 -6
- package/types/astro/jd.d.ts +0 -254
- package/types/bv/Box.d.ts +0 -25
- package/types/bv/Sphere.d.ts +0 -38
- package/types/bv/index.d.ts +0 -3
- package/types/camera/Camera.d.ts +0 -303
- package/types/camera/Frustum.d.ts +0 -129
- package/types/camera/PlanetCamera.d.ts +0 -223
- package/types/camera/index.d.ts +0 -3
- package/types/cons.d.ts +0 -40
- package/types/control/CompassButton.d.ts +0 -18
- package/types/control/Control.d.ts +0 -101
- package/types/control/DebugInfo.d.ts +0 -16
- package/types/control/EarthCoordinates.d.ts +0 -47
- package/types/control/EarthNavigation.d.ts +0 -42
- package/types/control/GeoImageDragControl.d.ts +0 -6
- package/types/control/KeyboardNavigation.d.ts +0 -22
- package/types/control/LayerSwitcher.d.ts +0 -23
- package/types/control/Lighting.d.ts +0 -16
- package/types/control/MouseNavigation.d.ts +0 -51
- package/types/control/ScaleControl.d.ts +0 -22
- package/types/control/ShowFps.d.ts +0 -12
- package/types/control/SimpleNavigation.d.ts +0 -28
- package/types/control/Sun.d.ts +0 -52
- package/types/control/ToggleWireframe.d.ts +0 -12
- package/types/control/TouchNavigation.d.ts +0 -50
- package/types/control/ZoomControl.d.ts +0 -28
- package/types/control/index.d.ts +0 -17
- package/types/ellipsoid/Ellipsoid.d.ts +0 -142
- package/types/ellipsoid/index.d.ts +0 -3
- package/types/ellipsoid/wgs84.d.ts +0 -5
- package/types/entity/BaseBillboard.d.ts +0 -208
- package/types/entity/Billboard.d.ts +0 -94
- package/types/entity/BillboardHandler.d.ts +0 -74
- package/types/entity/Entity.d.ts +0 -331
- package/types/entity/EntityCollection.d.ts +0 -303
- package/types/entity/Geometry.d.ts +0 -73
- package/types/entity/GeometryHandler.d.ts +0 -76
- package/types/entity/Label.d.ts +0 -194
- package/types/entity/LabelHandler.d.ts +0 -24
- package/types/entity/PointCloud.d.ts +0 -174
- package/types/entity/PointCloudHandler.d.ts +0 -38
- package/types/entity/Polyline.d.ts +0 -304
- package/types/entity/PolylineHandler.d.ts +0 -18
- package/types/entity/Ray.d.ts +0 -123
- package/types/entity/RayHandler.d.ts +0 -67
- package/types/entity/ShapeHandler.d.ts +0 -22
- package/types/entity/Strip.d.ts +0 -118
- package/types/entity/StripHandler.d.ts +0 -38
- package/types/entity/index.d.ts +0 -8
- package/types/index.core.d.ts +0 -65
- package/types/index.d.ts +0 -45
- package/types/index.webgl.d.ts +0 -7
- package/types/inherits.d.ts +0 -4
- package/types/input/KeyboardHandler.d.ts +0 -10
- package/types/input/MouseHandler.d.ts +0 -5
- package/types/input/TouchHandler.d.ts +0 -5
- package/types/input/input.d.ts +0 -34
- package/types/layer/BaseGeoImage.d.ts +0 -107
- package/types/layer/CanvasTiles.d.ts +0 -75
- package/types/layer/GeoImage.d.ts +0 -65
- package/types/layer/GeoTexture2d.d.ts +0 -8
- package/types/layer/GeoVideo.d.ts +0 -80
- package/types/layer/KML.d.ts +0 -58
- package/types/layer/Layer.d.ts +0 -321
- package/types/layer/Material.d.ts +0 -48
- package/types/layer/Vector.d.ts +0 -228
- package/types/layer/WMS.d.ts +0 -66
- package/types/layer/XYZ.d.ts +0 -130
- package/types/layer/index.d.ts +0 -10
- package/types/light/LightSource.d.ts +0 -177
- package/types/math/Line2.d.ts +0 -11
- package/types/math/Line3.d.ts +0 -10
- package/types/math/Mat3.d.ts +0 -63
- package/types/math/Mat4.d.ts +0 -173
- package/types/math/Plane.d.ts +0 -17
- package/types/math/Quat.d.ts +0 -376
- package/types/math/Ray.d.ts +0 -81
- package/types/math/Vec2.d.ts +0 -308
- package/types/math/Vec3.d.ts +0 -459
- package/types/math/Vec4.d.ts +0 -161
- package/types/math/coder.d.ts +0 -42
- package/types/math/index.d.ts +0 -11
- package/types/math.d.ts +0 -261
- package/types/mercator.d.ts +0 -92
- package/types/proj/EPSG3857.d.ts +0 -5
- package/types/proj/EPSG4326.d.ts +0 -5
- package/types/proj/Proj.d.ts +0 -42
- package/types/quadTree/EntityCollectionNode.d.ts +0 -34
- package/types/quadTree/Node.d.ts +0 -61
- package/types/quadTree/quadTree.d.ts +0 -40
- package/types/renderer/Renderer.d.ts +0 -296
- package/types/renderer/RendererEvents.d.ts +0 -230
- package/types/res/images.d.ts +0 -3
- package/types/scene/Axes.d.ts +0 -11
- package/types/scene/BaseNode.d.ts +0 -60
- package/types/scene/Planet.d.ts +0 -574
- package/types/scene/RenderNode.d.ts +0 -143
- package/types/scene/SkyBox.d.ts +0 -10
- package/types/scene/index.d.ts +0 -4
- package/types/segment/Segment.d.ts +0 -271
- package/types/segment/SegmentLonLat.d.ts +0 -62
- package/types/segment/segmentHelper.d.ts +0 -13
- package/types/shaders/billboard.d.ts +0 -3
- package/types/shaders/depth.d.ts +0 -2
- package/types/shaders/drawnode.d.ts +0 -7
- package/types/shaders/label.d.ts +0 -4
- package/types/shaders/pointCloud.d.ts +0 -2
- package/types/shaders/polyline.d.ts +0 -3
- package/types/shaders/ray.d.ts +0 -2
- package/types/shaders/screenFrame.d.ts +0 -2
- package/types/shaders/shape.d.ts +0 -4
- package/types/shaders/skybox.d.ts +0 -2
- package/types/shaders/toneMapping.d.ts +0 -2
- package/types/shapes/BaseShape.d.ts +0 -247
- package/types/shapes/Sphere.d.ts +0 -41
- package/types/terrain/BilTerrain.d.ts +0 -8
- package/types/terrain/EmptyTerrain.d.ts +0 -72
- package/types/terrain/Geoid.d.ts +0 -26
- package/types/terrain/GlobusTerrain.d.ts +0 -153
- package/types/terrain/MapboxTerrain.d.ts +0 -8
- package/types/terrain/index.d.ts +0 -5
- package/types/utils/FontAtlas.d.ts +0 -14
- package/types/utils/GeoImageCreator.d.ts +0 -30
- package/types/utils/ImagesCacheManager.d.ts +0 -10
- package/types/utils/Loader.d.ts +0 -25
- package/types/utils/NormalMapCreator.d.ts +0 -39
- package/types/utils/PlainSegmentWorker.d.ts +0 -10
- package/types/utils/TerrainWorker.d.ts +0 -9
- package/types/utils/TextureAtlas.d.ts +0 -111
- package/types/utils/VectorTileCreator.d.ts +0 -16
- package/types/utils/colorTable.d.ts +0 -143
- package/types/utils/earcut.d.ts +0 -6
- package/types/utils/shared.d.ts +0 -230
- package/types/webgl/Framebuffer.d.ts +0 -135
- package/types/webgl/Handler.d.ts +0 -372
- package/types/webgl/Multisample.d.ts +0 -89
- package/types/webgl/Program.d.ts +0 -155
- package/types/webgl/ProgramController.d.ts +0 -84
- package/types/webgl/callbacks.d.ts +0 -1
- package/types/webgl/index.d.ts +0 -6
- package/types/webgl/types.d.ts +0 -2
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
import { Control } from
|
|
4
|
-
import { input } from
|
|
3
|
+
import { Control } from "./Control.js";
|
|
4
|
+
import { input } from "../input/input.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Simple keyboard camera navigation with W,S,A,D and shift keys to fly around the scene.
|
|
8
8
|
* @class
|
|
9
|
-
* @extends {
|
|
9
|
+
* @extends {Control}
|
|
10
10
|
* @param {Object} [options] - Control options.
|
|
11
11
|
*/
|
|
12
12
|
class SimpleNavigation extends Control {
|
|
@@ -18,11 +18,9 @@ class SimpleNavigation extends Control {
|
|
|
18
18
|
this.speed = options.speed || 1.0;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
onactivate() {
|
|
22
|
-
}
|
|
21
|
+
onactivate() {}
|
|
23
22
|
|
|
24
|
-
ondeactivate() {
|
|
25
|
-
}
|
|
23
|
+
ondeactivate() {}
|
|
26
24
|
|
|
27
25
|
oninit() {
|
|
28
26
|
this.camera = this.renderer.activeCamera;
|
package/src/og/control/Sun.js
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
* @module og/control/Sun
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Control } from
|
|
8
|
-
import { getSunPosition } from
|
|
9
|
-
import { LightSource } from
|
|
10
|
-
import { Quat } from
|
|
11
|
-
import { Vec3 } from
|
|
7
|
+
import { Control } from "./Control.js";
|
|
8
|
+
import { getSunPosition } from "../astro/earth.js";
|
|
9
|
+
import { LightSource } from "../light/LightSource.js";
|
|
10
|
+
import { Quat } from "../math/Quat.js";
|
|
11
|
+
import { Vec3 } from "../math/Vec3.js";
|
|
12
12
|
|
|
13
13
|
const ACTIVATION_HEIGHT = 12079000.0;
|
|
14
14
|
/**
|
|
15
15
|
* Real Sun geocentric position control that place the Sun on the right place by the Earth.
|
|
16
16
|
* @class
|
|
17
|
-
* @extends {
|
|
17
|
+
* @extends {Control}
|
|
18
18
|
* @param {Object} [options] - Control options.
|
|
19
19
|
*/
|
|
20
20
|
class Sun extends Control {
|
|
@@ -28,7 +28,7 @@ class Sun extends Control {
|
|
|
28
28
|
/**
|
|
29
29
|
* Earth planet node.
|
|
30
30
|
* @public
|
|
31
|
-
* @type {
|
|
31
|
+
* @type {Planet}
|
|
32
32
|
*/
|
|
33
33
|
this.planet = null;
|
|
34
34
|
|
|
@@ -46,7 +46,7 @@ class Sun extends Control {
|
|
|
46
46
|
/**
|
|
47
47
|
* Light source.
|
|
48
48
|
* @public
|
|
49
|
-
* @type {
|
|
49
|
+
* @type {LightSource}
|
|
50
50
|
*/
|
|
51
51
|
this.sunlight = null;
|
|
52
52
|
|
|
@@ -72,7 +72,6 @@ class Sun extends Control {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
oninit() {
|
|
75
|
-
|
|
76
75
|
this.planet.lightEnabled = true;
|
|
77
76
|
|
|
78
77
|
// sunlight initialization
|
|
@@ -120,12 +119,17 @@ class Sun extends Control {
|
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
var tu = Vec3.proj_b_to_plane(u, n, u).normalize().scale(this.offsetVertical);
|
|
123
|
-
var tr = Vec3.proj_b_to_plane(cam._u, n, cam._u)
|
|
122
|
+
var tr = Vec3.proj_b_to_plane(cam._u, n, cam._u)
|
|
123
|
+
.normalize()
|
|
124
|
+
.scale(this.offsetHorizontal); // right
|
|
124
125
|
var d = tu.add(tr);
|
|
125
126
|
var pos = cam.eye.add(d);
|
|
126
127
|
if (this._k > 0) {
|
|
127
128
|
this._k -= 0.01;
|
|
128
|
-
let rot = Quat.getRotationBetweenVectors(
|
|
129
|
+
let rot = Quat.getRotationBetweenVectors(
|
|
130
|
+
this.sunlight._position.normal(),
|
|
131
|
+
pos.normal()
|
|
132
|
+
);
|
|
129
133
|
let r = rot.slerp(Quat.IDENTITY, this._k).normalize();
|
|
130
134
|
this.sunlight.setPosition3v(r.mulVec3(this.sunlight._position));
|
|
131
135
|
} else {
|
|
@@ -135,11 +139,17 @@ class Sun extends Control {
|
|
|
135
139
|
this._k = 1;
|
|
136
140
|
if (this._f > 0) {
|
|
137
141
|
this._f -= 0.01;
|
|
138
|
-
let rot = Quat.getRotationBetweenVectors(
|
|
142
|
+
let rot = Quat.getRotationBetweenVectors(
|
|
143
|
+
this.sunlight._position.normal(),
|
|
144
|
+
getSunPosition(this._currDate).normal()
|
|
145
|
+
);
|
|
139
146
|
let r = rot.slerp(Quat.IDENTITY, this._f).normalize();
|
|
140
147
|
this.sunlight.setPosition3v(r.mulVec3(this.sunlight._position));
|
|
141
148
|
} else {
|
|
142
|
-
if (
|
|
149
|
+
if (
|
|
150
|
+
(Math.abs(this._currDate - this._prevDate) > 0.00034 && this._active) ||
|
|
151
|
+
this._lightOn
|
|
152
|
+
) {
|
|
143
153
|
this._lightOn = false;
|
|
144
154
|
this._prevDate = this._currDate;
|
|
145
155
|
this.sunlight.setPosition3v(getSunPosition(this._currDate));
|
|
@@ -157,4 +167,4 @@ export function sun(options) {
|
|
|
157
167
|
return Sun(options);
|
|
158
168
|
}
|
|
159
169
|
|
|
160
|
-
export { Sun };
|
|
170
|
+
export { Sun };
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* @module og/control/ToggleWireframe
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Control } from
|
|
8
|
-
import { input } from
|
|
7
|
+
import { Control } from "./Control.js";
|
|
8
|
+
import { input } from "../input/input.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Planet GL draw mode(TRIANGLE_STRIP/LINE_STRING) changer.
|
|
12
12
|
* @class
|
|
13
|
-
* @extends {
|
|
13
|
+
* @extends {Control}
|
|
14
14
|
* @param {Object} [options] - Control options.
|
|
15
15
|
*/
|
|
16
16
|
class ToggleWireframe extends Control {
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* @module og/control/TouchNavigation
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import * as math from
|
|
8
|
-
import { Control } from
|
|
9
|
-
import { Key } from
|
|
10
|
-
import { LonLat } from
|
|
11
|
-
import { Quat } from
|
|
12
|
-
import { Ray } from
|
|
13
|
-
import { Sphere } from
|
|
14
|
-
import { Vec3 } from
|
|
7
|
+
import * as math from "../math.js";
|
|
8
|
+
import { Control } from "./Control.js";
|
|
9
|
+
import { Key } from "../Lock.js";
|
|
10
|
+
import { LonLat } from "../LonLat.js";
|
|
11
|
+
import { Quat } from "../math/Quat.js";
|
|
12
|
+
import { Ray } from "../math/Ray.js";
|
|
13
|
+
import { Sphere } from "../bv/Sphere.js";
|
|
14
|
+
import { Vec3 } from "../math/Vec3.js";
|
|
15
15
|
|
|
16
16
|
class Touch {
|
|
17
17
|
constructor() {
|
|
@@ -21,15 +21,19 @@ class Touch {
|
|
|
21
21
|
this.prev_y = 0;
|
|
22
22
|
this.grabbedPoint = new Vec3();
|
|
23
23
|
this.grabbedSpheroid = new Sphere();
|
|
24
|
-
this.dX = function () {
|
|
25
|
-
|
|
24
|
+
this.dX = function () {
|
|
25
|
+
return this.x - this.prev_x;
|
|
26
|
+
};
|
|
27
|
+
this.dY = function () {
|
|
28
|
+
return this.y - this.prev_y;
|
|
29
|
+
};
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
34
|
* Touch pad planet camera dragging control.
|
|
31
35
|
* @class
|
|
32
|
-
* @extends {
|
|
36
|
+
* @extends {Control}
|
|
33
37
|
* @param {Object} [options] - Control options.
|
|
34
38
|
*/
|
|
35
39
|
class TouchNavigation extends Control {
|
|
@@ -69,11 +73,9 @@ class TouchNavigation extends Control {
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
onTouchStart(e) {
|
|
72
|
-
|
|
73
76
|
this._touching = true;
|
|
74
77
|
|
|
75
78
|
if (e.sys.touches.length === 2) {
|
|
76
|
-
|
|
77
79
|
var t0 = this.touches[0],
|
|
78
80
|
t1 = this.touches[1];
|
|
79
81
|
|
|
@@ -90,7 +92,10 @@ class TouchNavigation extends Control {
|
|
|
90
92
|
t1.grabbedPoint = this.planet.getCartesianFromPixelTerrain(t1, true);
|
|
91
93
|
|
|
92
94
|
// this.planet._viewChanged = true;
|
|
93
|
-
this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(
|
|
95
|
+
this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(
|
|
96
|
+
this.renderer.handler.getCenter(),
|
|
97
|
+
true
|
|
98
|
+
);
|
|
94
99
|
|
|
95
100
|
if (this.pointOnEarth) {
|
|
96
101
|
this.earthUp = this.pointOnEarth.normal();
|
|
@@ -101,7 +106,6 @@ class TouchNavigation extends Control {
|
|
|
101
106
|
t1.grabbedSpheroid.radius = t1.grabbedPoint.length();
|
|
102
107
|
this.stopRotation();
|
|
103
108
|
}
|
|
104
|
-
|
|
105
109
|
} else if (e.sys.touches.length === 1) {
|
|
106
110
|
this._startTouchOne(e);
|
|
107
111
|
}
|
|
@@ -141,12 +145,13 @@ class TouchNavigation extends Control {
|
|
|
141
145
|
var p = this.planet.getCartesianFromPixelTerrain(this.touches[0], true);
|
|
142
146
|
if (p) {
|
|
143
147
|
var g = this.planet.ellipsoid.cartesianToLonLat(p);
|
|
144
|
-
this.planet.flyLonLat(
|
|
148
|
+
this.planet.flyLonLat(
|
|
149
|
+
new LonLat(g.lon, g.lat, this.renderer.activeCamera.eye.distance(p) * 0.57)
|
|
150
|
+
);
|
|
145
151
|
}
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
onTouchEnd(e) {
|
|
149
|
-
|
|
150
155
|
if (e.sys.touches.length === 0) {
|
|
151
156
|
this._touching = false;
|
|
152
157
|
}
|
|
@@ -155,21 +160,20 @@ class TouchNavigation extends Control {
|
|
|
155
160
|
this._startTouchOne(e);
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
if (
|
|
159
|
-
|
|
163
|
+
if (
|
|
164
|
+
Math.abs(this.touches[0].x - this.touches[0].prev_x) < 3 &&
|
|
165
|
+
Math.abs(this.touches[0].y - this.touches[0].prev_y) < 3
|
|
166
|
+
) {
|
|
160
167
|
this.scaleRot = 0;
|
|
161
168
|
}
|
|
162
169
|
}
|
|
163
170
|
|
|
164
|
-
onTouchCancel(e) {
|
|
165
|
-
}
|
|
171
|
+
onTouchCancel(e) {}
|
|
166
172
|
|
|
167
173
|
onTouchMove(e) {
|
|
168
|
-
|
|
169
174
|
var cam = this.renderer.activeCamera;
|
|
170
175
|
|
|
171
176
|
if (e.sys.touches.length === 2) {
|
|
172
|
-
|
|
173
177
|
this.renderer.controlsBag.scaleRot = 1;
|
|
174
178
|
|
|
175
179
|
var t0 = this.touches[0],
|
|
@@ -191,9 +195,14 @@ class TouchNavigation extends Control {
|
|
|
191
195
|
t1.x = e.sys.touches.item(1).clientX - e.sys.offsetLeft;
|
|
192
196
|
t1.y = e.sys.touches.item(1).clientY - e.sys.offsetTop;
|
|
193
197
|
|
|
194
|
-
if (
|
|
195
|
-
(t0.
|
|
196
|
-
|
|
198
|
+
if (
|
|
199
|
+
(t0.dY() > 0 && t1.dY() > 0) ||
|
|
200
|
+
(t0.dY() < 0 && t1.dY() < 0) ||
|
|
201
|
+
(t0.dX() > 0 && t1.dX() > 0) ||
|
|
202
|
+
(t0.dX() < 0 && t1.dX() < 0)
|
|
203
|
+
) {
|
|
204
|
+
var l =
|
|
205
|
+
(0.5 / cam.eye.distance(this.pointOnEarth)) * cam._lonLat.height * math.RADIANS;
|
|
197
206
|
if (l > 0.007) l = 0.007;
|
|
198
207
|
cam.rotateHorizontal(l * t0.dX(), false, this.pointOnEarth, this.earthUp);
|
|
199
208
|
cam.rotateVertical(l * t0.dY(), this.pointOnEarth, true);
|
|
@@ -202,9 +211,7 @@ class TouchNavigation extends Control {
|
|
|
202
211
|
}
|
|
203
212
|
|
|
204
213
|
this.scaleRot = 0;
|
|
205
|
-
|
|
206
214
|
} else if (e.sys.touches.length === 1) {
|
|
207
|
-
|
|
208
215
|
var t = this.touches[0];
|
|
209
216
|
|
|
210
217
|
t.prev_x = t.x;
|
|
@@ -223,7 +230,10 @@ class TouchNavigation extends Control {
|
|
|
223
230
|
|
|
224
231
|
if (targetPoint) {
|
|
225
232
|
if (cam.slope > 0.2) {
|
|
226
|
-
this.qRot = Quat.getRotationBetweenVectors(
|
|
233
|
+
this.qRot = Quat.getRotationBetweenVectors(
|
|
234
|
+
targetPoint.normal(),
|
|
235
|
+
t.grabbedPoint.normal()
|
|
236
|
+
);
|
|
227
237
|
var rot = this.qRot;
|
|
228
238
|
cam.eye = rot.mulVec3(cam.eye);
|
|
229
239
|
cam._v = rot.mulVec3(cam._v);
|
|
@@ -250,7 +260,6 @@ class TouchNavigation extends Control {
|
|
|
250
260
|
}
|
|
251
261
|
|
|
252
262
|
onDraw(e) {
|
|
253
|
-
|
|
254
263
|
this.renderer.controlsBag.scaleRot = this.scaleRot;
|
|
255
264
|
|
|
256
265
|
if (this._touching) {
|
|
@@ -281,7 +290,9 @@ class TouchNavigation extends Control {
|
|
|
281
290
|
this.scaleRot = 0;
|
|
282
291
|
} else {
|
|
283
292
|
r.controlsBag.scaleRot = this.scaleRot;
|
|
284
|
-
var rot = this.qRot
|
|
293
|
+
var rot = this.qRot
|
|
294
|
+
.slerp(Quat.IDENTITY, 1 - this.scaleRot * this.scaleRot * this.scaleRot)
|
|
295
|
+
.normalize();
|
|
285
296
|
if (!(rot.x || rot.y || rot.z)) {
|
|
286
297
|
this.scaleRot = 0;
|
|
287
298
|
}
|
|
@@ -305,4 +316,4 @@ class TouchNavigation extends Control {
|
|
|
305
316
|
}
|
|
306
317
|
}
|
|
307
318
|
|
|
308
|
-
export { TouchNavigation };
|
|
319
|
+
export { TouchNavigation };
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* @module og/control/ZoomControl
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { Control } from
|
|
8
|
-
import { Key } from
|
|
7
|
+
import { Control } from "./Control.js";
|
|
8
|
+
import { Key } from "../Lock.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Planet zoom buttons control.
|
|
12
12
|
* @class
|
|
13
|
-
* @extends {
|
|
13
|
+
* @extends {Control}
|
|
14
14
|
* @params {Object} [options] - Control options.
|
|
15
15
|
*/
|
|
16
16
|
class ZoomControl extends Control {
|
|
@@ -27,13 +27,13 @@ class ZoomControl extends Control {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
oninit() {
|
|
30
|
-
var zoomDiv = document.createElement(
|
|
31
|
-
btnZoomIn = document.createElement(
|
|
32
|
-
btnZoomOut = document.createElement(
|
|
30
|
+
var zoomDiv = document.createElement("div"),
|
|
31
|
+
btnZoomIn = document.createElement("button"),
|
|
32
|
+
btnZoomOut = document.createElement("button");
|
|
33
33
|
|
|
34
|
-
zoomDiv.className =
|
|
35
|
-
btnZoomIn.className =
|
|
36
|
-
btnZoomOut.className =
|
|
34
|
+
zoomDiv.className = "ogZoomControl";
|
|
35
|
+
btnZoomIn.className = "ogZoomButton ogZoomIn";
|
|
36
|
+
btnZoomOut.className = "ogZoomButton ogZoomOut";
|
|
37
37
|
|
|
38
38
|
zoomDiv.appendChild(btnZoomIn);
|
|
39
39
|
zoomDiv.appendChild(btnZoomOut);
|
|
@@ -46,23 +46,40 @@ class ZoomControl extends Control {
|
|
|
46
46
|
btnZoomOut.addEventListener("mousedown", (e) => this.zoomOut());
|
|
47
47
|
btnZoomOut.addEventListener("mouseup", (e) => this.stopZoom());
|
|
48
48
|
|
|
49
|
-
btnZoomIn.addEventListener(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
btnZoomIn.addEventListener("touchstart", (e) => {
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
this.zoomIn();
|
|
52
|
+
});
|
|
53
|
+
btnZoomIn.addEventListener("touchend", (e) => {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
this.stopZoom();
|
|
56
|
+
});
|
|
57
|
+
btnZoomIn.addEventListener("touchcancel", (e) => {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
this.stopZoom();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
btnZoomOut.addEventListener("touchstart", (e) => {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
this.zoomOut();
|
|
65
|
+
});
|
|
66
|
+
btnZoomOut.addEventListener("touchend", (e) => {
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
this.stopZoom();
|
|
69
|
+
});
|
|
70
|
+
btnZoomOut.addEventListener("touchcancel", (e) => {
|
|
71
|
+
e.preventDefault();
|
|
72
|
+
this.stopZoom();
|
|
73
|
+
});
|
|
56
74
|
|
|
57
75
|
this.renderer.events.on("draw", this._draw, this);
|
|
58
76
|
}
|
|
59
77
|
|
|
60
|
-
/**
|
|
78
|
+
/**
|
|
61
79
|
* Planet zoom in.
|
|
62
80
|
* @public
|
|
63
81
|
*/
|
|
64
82
|
zoomIn() {
|
|
65
|
-
|
|
66
83
|
this.planet.layerLock.lock(this._keyLock);
|
|
67
84
|
this.planet.terrainLock.lock(this._keyLock);
|
|
68
85
|
this.planet._normalMapCreator.lock(this._keyLock);
|
|
@@ -72,12 +89,11 @@ class ZoomControl extends Control {
|
|
|
72
89
|
this._move = 1;
|
|
73
90
|
}
|
|
74
91
|
|
|
75
|
-
/**
|
|
92
|
+
/**
|
|
76
93
|
* Planet zoom out.
|
|
77
94
|
* @public
|
|
78
95
|
*/
|
|
79
96
|
zoomOut() {
|
|
80
|
-
|
|
81
97
|
this.planet.layerLock.lock(this._keyLock);
|
|
82
98
|
this.planet.terrainLock.lock(this._keyLock);
|
|
83
99
|
this.planet._normalMapCreator.lock(this._keyLock);
|
|
@@ -87,7 +103,6 @@ class ZoomControl extends Control {
|
|
|
87
103
|
}
|
|
88
104
|
|
|
89
105
|
stopZoom() {
|
|
90
|
-
|
|
91
106
|
this._move = 0;
|
|
92
107
|
|
|
93
108
|
this.planet.layerLock.free(this._keyLock);
|
|
@@ -96,12 +111,13 @@ class ZoomControl extends Control {
|
|
|
96
111
|
}
|
|
97
112
|
|
|
98
113
|
_draw(e) {
|
|
99
|
-
|
|
100
114
|
var cam = this.renderer.activeCamera;
|
|
101
115
|
|
|
102
116
|
if (this._move !== 0) {
|
|
103
|
-
var d =
|
|
104
|
-
|
|
117
|
+
var d =
|
|
118
|
+
cam.eye.distance(
|
|
119
|
+
this.planet.getCartesianFromPixelTerrain(this._targetPoint, true)
|
|
120
|
+
) * 0.075;
|
|
105
121
|
cam.eye.addA(cam.getForward().scale(this._move * d));
|
|
106
122
|
cam.checkTerrainCollision();
|
|
107
123
|
cam.update();
|