@openglobus/og 0.11.6 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -12
  3. package/src/og/Globe.js +25 -10
  4. package/src/og/Popup.js +3 -2
  5. package/src/og/camera/Camera.js +70 -79
  6. package/src/og/camera/PlanetCamera.js +33 -33
  7. package/src/og/control/DebugInfo.js +2 -2
  8. package/src/og/control/EarthNavigation.js +26 -17
  9. package/src/og/control/Lighting.js +74 -64
  10. package/src/og/control/MouseNavigation.js +30 -29
  11. package/src/og/control/MouseWheelZoomControl.js +257 -0
  12. package/src/og/control/Sun.js +3 -3
  13. package/src/og/control/index.js +2 -0
  14. package/src/og/control/visibleExtent/Segment.js +1862 -0
  15. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  16. package/src/og/control/visibleExtent/drawnode.js +751 -0
  17. package/src/og/ellipsoid/Ellipsoid.js +1 -1
  18. package/src/og/entity/BaseBillboard.js +67 -76
  19. package/src/og/entity/BillboardHandler.js +15 -8
  20. package/src/og/entity/Entity.js +742 -742
  21. package/src/og/entity/GeoObjectHandler.js +102 -117
  22. package/src/og/entity/Label.js +45 -48
  23. package/src/og/entity/LabelHandler.js +24 -23
  24. package/src/og/entity/LabelWorker.js +21 -16
  25. package/src/og/layer/CanvasTiles.js +8 -12
  26. package/src/og/layer/GeoImage.js +2 -10
  27. package/src/og/layer/GeoTexture2d.js +2 -10
  28. package/src/og/layer/GeoVideo.js +2 -10
  29. package/src/og/layer/Layer.js +23 -32
  30. package/src/og/layer/Material.js +1 -1
  31. package/src/og/layer/WMS.js +0 -2
  32. package/src/og/layer/XYZ.js +31 -33
  33. package/src/og/math/Vec3.js +18 -2
  34. package/src/og/quadTree/Node.js +52 -111
  35. package/src/og/quadTree/quadTree.js +1 -1
  36. package/src/og/renderer/Renderer.js +85 -122
  37. package/src/og/renderer/RendererEvents.js +44 -22
  38. package/src/og/scene/Planet.js +179 -198
  39. package/src/og/segment/Segment.js +99 -268
  40. package/src/og/segment/Slice.js +45 -0
  41. package/src/og/shaders/drawnode.js +174 -360
  42. package/src/og/shaders/toneMapping.js +1 -0
  43. package/src/og/shapes/BaseShape.js +1 -1
  44. package/src/og/terrain/EmptyTerrain.js +3 -2
  45. package/src/og/terrain/GlobusTerrain.js +2 -0
  46. package/src/og/utils/FontAtlas.js +6 -2
  47. package/src/og/utils/GeoImageCreator.js +5 -1
  48. package/src/og/utils/Loader.js +1 -1
  49. package/src/og/utils/PlainSegmentWorker.js +0 -13
  50. package/src/og/utils/TextureAtlas.js +2 -2
  51. package/src/og/utils/VectorTileCreator.js +1 -3
  52. package/src/og/utils/shared.js +1 -1
  53. package/src/og/webgl/Handler.js +156 -118
  54. package/types/Clock.d.ts +0 -94
  55. package/types/Deferred.d.ts +0 -6
  56. package/types/Events.d.ts +0 -77
  57. package/types/Extent.d.ts +0 -166
  58. package/types/Globe.d.ts +0 -82
  59. package/types/ImageCanvas.d.ts +0 -123
  60. package/types/Lock.d.ts +0 -12
  61. package/types/LonLat.d.ts +0 -108
  62. package/types/Popup.d.ts +0 -42
  63. package/types/QueueArray.d.ts +0 -19
  64. package/types/Rectangle.d.ts +0 -80
  65. package/types/Stack.d.ts +0 -19
  66. package/types/ajax.d.ts +0 -24
  67. package/types/arial.d.ts +0 -48
  68. package/types/astro/astro.d.ts +0 -38
  69. package/types/astro/earth.d.ts +0 -7
  70. package/types/astro/jd.d.ts +0 -254
  71. package/types/bv/Box.d.ts +0 -30
  72. package/types/bv/Sphere.d.ts +0 -38
  73. package/types/bv/index.d.ts +0 -3
  74. package/types/camera/Camera.d.ts +0 -312
  75. package/types/camera/Frustum.d.ts +0 -133
  76. package/types/camera/PlanetCamera.d.ts +0 -218
  77. package/types/camera/index.d.ts +0 -3
  78. package/types/cons.d.ts +0 -40
  79. package/types/control/CompassButton.d.ts +0 -17
  80. package/types/control/Control.d.ts +0 -104
  81. package/types/control/DebugInfo.d.ts +0 -15
  82. package/types/control/EarthCoordinates.d.ts +0 -47
  83. package/types/control/EarthNavigation.d.ts +0 -42
  84. package/types/control/GeoImageDragControl.d.ts +0 -6
  85. package/types/control/KeyboardNavigation.d.ts +0 -21
  86. package/types/control/LayerSwitcher.d.ts +0 -21
  87. package/types/control/Lighting.d.ts +0 -16
  88. package/types/control/MouseNavigation.d.ts +0 -47
  89. package/types/control/ScaleControl.d.ts +0 -22
  90. package/types/control/ShowFps.d.ts +0 -11
  91. package/types/control/SimpleNavigation.d.ts +0 -25
  92. package/types/control/Sun.d.ts +0 -50
  93. package/types/control/ToggleWireframe.d.ts +0 -12
  94. package/types/control/TouchNavigation.d.ts +0 -48
  95. package/types/control/ZoomControl.d.ts +0 -27
  96. package/types/control/index.d.ts +0 -17
  97. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  98. package/types/ellipsoid/index.d.ts +0 -3
  99. package/types/ellipsoid/wgs84.d.ts +0 -6
  100. package/types/entity/BaseBillboard.d.ts +0 -215
  101. package/types/entity/Billboard.d.ts +0 -94
  102. package/types/entity/BillboardHandler.d.ts +0 -78
  103. package/types/entity/Entity.d.ts +0 -348
  104. package/types/entity/EntityCollection.d.ts +0 -317
  105. package/types/entity/GeoObject.d.ts +0 -111
  106. package/types/entity/GeoObjectHandler.d.ts +0 -77
  107. package/types/entity/Geometry.d.ts +0 -74
  108. package/types/entity/GeometryHandler.d.ts +0 -76
  109. package/types/entity/Label.d.ts +0 -189
  110. package/types/entity/LabelHandler.d.ts +0 -31
  111. package/types/entity/LabelWorker.d.ts +0 -9
  112. package/types/entity/PointCloud.d.ts +0 -174
  113. package/types/entity/PointCloudHandler.d.ts +0 -38
  114. package/types/entity/Polyline.d.ts +0 -306
  115. package/types/entity/PolylineHandler.d.ts +0 -18
  116. package/types/entity/Ray.d.ts +0 -124
  117. package/types/entity/RayHandler.d.ts +0 -67
  118. package/types/entity/ShapeHandler.d.ts +0 -22
  119. package/types/entity/Strip.d.ts +0 -119
  120. package/types/entity/StripHandler.d.ts +0 -38
  121. package/types/entity/index.d.ts +0 -8
  122. package/types/index.core.d.ts +0 -65
  123. package/types/index.d.ts +0 -45
  124. package/types/index.webgl.d.ts +0 -7
  125. package/types/input/KeyboardHandler.d.ts +0 -10
  126. package/types/input/MouseHandler.d.ts +0 -5
  127. package/types/input/TouchHandler.d.ts +0 -5
  128. package/types/input/input.d.ts +0 -34
  129. package/types/layer/BaseGeoImage.d.ts +0 -94
  130. package/types/layer/CanvasTiles.d.ts +0 -68
  131. package/types/layer/GeoImage.d.ts +0 -52
  132. package/types/layer/GeoTexture2d.d.ts +0 -8
  133. package/types/layer/GeoVideo.d.ts +0 -55
  134. package/types/layer/KML.d.ts +0 -63
  135. package/types/layer/Layer.d.ts +0 -326
  136. package/types/layer/Material.d.ts +0 -45
  137. package/types/layer/Vector.d.ts +0 -208
  138. package/types/layer/WMS.d.ts +0 -63
  139. package/types/layer/XYZ.d.ts +0 -120
  140. package/types/layer/index.d.ts +0 -10
  141. package/types/light/LightSource.d.ts +0 -178
  142. package/types/math/Line2.d.ts +0 -11
  143. package/types/math/Line3.d.ts +0 -10
  144. package/types/math/Mat3.d.ts +0 -65
  145. package/types/math/Mat4.d.ts +0 -176
  146. package/types/math/Plane.d.ts +0 -18
  147. package/types/math/Quat.d.ts +0 -379
  148. package/types/math/Ray.d.ts +0 -82
  149. package/types/math/Vec2.d.ts +0 -309
  150. package/types/math/Vec3.d.ts +0 -460
  151. package/types/math/Vec4.d.ts +0 -162
  152. package/types/math/coder.d.ts +0 -43
  153. package/types/math/index.d.ts +0 -11
  154. package/types/math.d.ts +0 -261
  155. package/types/mercator.d.ts +0 -92
  156. package/types/proj/EPSG3857.d.ts +0 -6
  157. package/types/proj/EPSG4326.d.ts +0 -6
  158. package/types/proj/Proj.d.ts +0 -42
  159. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  160. package/types/quadTree/Node.d.ts +0 -61
  161. package/types/quadTree/quadTree.d.ts +0 -40
  162. package/types/renderer/Renderer.d.ts +0 -300
  163. package/types/renderer/RendererEvents.d.ts +0 -233
  164. package/types/res/images.d.ts +0 -3
  165. package/types/scene/Axes.d.ts +0 -11
  166. package/types/scene/BaseNode.d.ts +0 -60
  167. package/types/scene/Planet.d.ts +0 -577
  168. package/types/scene/RenderNode.d.ts +0 -142
  169. package/types/scene/SkyBox.d.ts +0 -10
  170. package/types/scene/index.d.ts +0 -4
  171. package/types/segment/Segment.d.ts +0 -279
  172. package/types/segment/SegmentLonLat.d.ts +0 -16
  173. package/types/segment/segmentHelper.d.ts +0 -13
  174. package/types/shaders/billboard.d.ts +0 -3
  175. package/types/shaders/depth.d.ts +0 -2
  176. package/types/shaders/drawnode.d.ts +0 -7
  177. package/types/shaders/geoObject.d.ts +0 -3
  178. package/types/shaders/label.d.ts +0 -4
  179. package/types/shaders/pointCloud.d.ts +0 -2
  180. package/types/shaders/polyline.d.ts +0 -3
  181. package/types/shaders/ray.d.ts +0 -2
  182. package/types/shaders/screenFrame.d.ts +0 -2
  183. package/types/shaders/shape.d.ts +0 -4
  184. package/types/shaders/skybox.d.ts +0 -2
  185. package/types/shaders/toneMapping.d.ts +0 -2
  186. package/types/shapes/BaseShape.d.ts +0 -250
  187. package/types/shapes/Sphere.d.ts +0 -41
  188. package/types/terrain/BilTerrain.d.ts +0 -7
  189. package/types/terrain/EmptyTerrain.d.ts +0 -72
  190. package/types/terrain/Geoid.d.ts +0 -26
  191. package/types/terrain/GlobusTerrain.d.ts +0 -116
  192. package/types/terrain/MapboxTerrain.d.ts +0 -7
  193. package/types/terrain/index.d.ts +0 -5
  194. package/types/utils/FontAtlas.d.ts +0 -14
  195. package/types/utils/GeoImageCreator.d.ts +0 -30
  196. package/types/utils/ImagesCacheManager.d.ts +0 -10
  197. package/types/utils/Loader.d.ts +0 -25
  198. package/types/utils/NormalMapCreator.d.ts +0 -39
  199. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  200. package/types/utils/TerrainWorker.d.ts +0 -9
  201. package/types/utils/TextureAtlas.d.ts +0 -111
  202. package/types/utils/VectorTileCreator.d.ts +0 -16
  203. package/types/utils/colorTable.d.ts +0 -143
  204. package/types/utils/earcut.d.ts +0 -6
  205. package/types/utils/shared.d.ts +0 -231
  206. package/types/webgl/Framebuffer.d.ts +0 -135
  207. package/types/webgl/Handler.d.ts +0 -397
  208. package/types/webgl/Multisample.d.ts +0 -89
  209. package/types/webgl/Program.d.ts +0 -161
  210. package/types/webgl/ProgramController.d.ts +0 -89
  211. package/types/webgl/callbacks.d.ts +0 -1
  212. package/types/webgl/index.d.ts +0 -6
  213. package/types/webgl/types.d.ts +0 -2
@@ -0,0 +1,257 @@
1
+ /**
2
+ * @module og/control/MouseWheelZoomControl
3
+ */
4
+
5
+ "use strict";
6
+
7
+ import { Control } from "./Control.js";
8
+ import { Key } from "../Lock.js";
9
+ import { Quat } from "../math/Quat.js";
10
+ import { Sphere } from "../bv/Sphere.js";
11
+ import { Vec3 } from "../math/Vec3.js";
12
+ import { MouseNavigation } from "./MouseNavigation.js";
13
+
14
+ /**
15
+ * Planet zoom buttons control.
16
+ * @class
17
+ * @extends {Control}
18
+ * @params {Object} [options] - Control options.
19
+ */
20
+ class MouseWheelZoomControl extends Control {
21
+ constructor(options) {
22
+ super(options);
23
+
24
+ this._name = "MouseWheelZoomControl";
25
+
26
+ options = options || {};
27
+
28
+ this.grabbedPoint = new Vec3();
29
+ this._eye0 = new Vec3();
30
+ this.pointOnEarth = new Vec3();
31
+ this.earthUp = new Vec3();
32
+ this.inertia = 0.007;
33
+ this.grabbedSpheroid = new Sphere();
34
+ this.planet = null;
35
+ this.qRot = new Quat();
36
+ this.scaleRot = 0.0;
37
+
38
+ this.distDiff = 0.3;
39
+ this.stepsCount = 8;
40
+ this.stepsForward = null;
41
+ this.stepIndex = 0;
42
+
43
+ this._lmbDoubleClickActive = true;
44
+
45
+ this.minSlope = options.minSlope || 0.1;
46
+
47
+ this._keyLock = new Key();
48
+ }
49
+
50
+ oninit() {
51
+ var zoomDiv = document.createElement("div"),
52
+ btnZoomIn = document.createElement("button"),
53
+ btnZoomOut = document.createElement("button");
54
+
55
+ zoomDiv.className = "ogZoomControl";
56
+ btnZoomIn.className = "ogZoomButton ogZoomIn";
57
+ btnZoomOut.className = "ogZoomButton ogZoomOut";
58
+
59
+ zoomDiv.appendChild(btnZoomIn);
60
+ zoomDiv.appendChild(btnZoomOut);
61
+
62
+ this.renderer.div.appendChild(zoomDiv);
63
+
64
+ btnZoomIn.addEventListener("mousedown", (e) => this.zoomIn());
65
+ btnZoomIn.addEventListener("mouseup", (e) => this.stopZoom());
66
+
67
+ btnZoomOut.addEventListener("mousedown", (e) => this.zoomOut());
68
+ btnZoomOut.addEventListener("mouseup", (e) => this.stopZoom());
69
+
70
+ btnZoomIn.addEventListener("touchstart", (e) => {
71
+ e.preventDefault();
72
+ this.zoomIn();
73
+ });
74
+ btnZoomIn.addEventListener("touchend", (e) => {
75
+ e.preventDefault();
76
+ this.stopZoom();
77
+ });
78
+ btnZoomIn.addEventListener("touchcancel", (e) => {
79
+ e.preventDefault();
80
+ this.stopZoom();
81
+ });
82
+
83
+ btnZoomOut.addEventListener("touchstart", (e) => {
84
+ e.preventDefault();
85
+ this.zoomOut();
86
+ });
87
+ btnZoomOut.addEventListener("touchend", (e) => {
88
+ e.preventDefault();
89
+ this.stopZoom();
90
+ });
91
+ btnZoomOut.addEventListener("touchcancel", (e) => {
92
+ e.preventDefault();
93
+ this.stopZoom();
94
+ });
95
+
96
+ this.renderer.events.on("draw", this._draw, this);
97
+ }
98
+
99
+ /**
100
+ * Planet zoom in.
101
+ * @public
102
+ */
103
+ zoomIn() {
104
+ if (this.stepIndex) {
105
+ return;
106
+ }
107
+
108
+ this.planet.stopFlying();
109
+
110
+ this.stopRotation();
111
+
112
+ this._deactivate = true;
113
+
114
+ this.planet.layerLock.lock(this._keyLock);
115
+ this.planet.terrainLock.lock(this._keyLock);
116
+ this.planet._normalMapCreator.lock(this._keyLock);
117
+
118
+ this.stepsForward = MouseNavigation.getMovePointsFromPixelTerrain(
119
+ this.renderer.activeCamera,
120
+ this.planet,
121
+ this.stepsCount,
122
+ this.distDiff,
123
+ this.renderer.getCenter(),
124
+ true,
125
+ null
126
+ );
127
+ if (this.stepsForward) {
128
+ this.stepIndex = this.stepsCount;
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Planet zoom out.
134
+ * @public
135
+ */
136
+ zoomOut() {
137
+ if (this.stepIndex) {
138
+ return;
139
+ }
140
+
141
+ this.planet.stopFlying();
142
+
143
+ this.stopRotation();
144
+
145
+ this._deactivate = true;
146
+
147
+ this.planet.layerLock.lock(this._keyLock);
148
+ this.planet.terrainLock.lock(this._keyLock);
149
+ this.planet._normalMapCreator.lock(this._keyLock);
150
+
151
+ this.stepsForward = MouseNavigation.getMovePointsFromPixelTerrain(
152
+ this.renderer.activeCamera,
153
+ this.planet,
154
+ this.stepsCount,
155
+ this.distDiff,
156
+ this.renderer.getCenter(),
157
+ false,
158
+ null
159
+ );
160
+ if (this.stepsForward) {
161
+ this.stepIndex = this.stepsCount;
162
+ }
163
+ }
164
+
165
+ stopRotation() {
166
+ this.qRot.clear();
167
+ this.planet.layerLock.free(this._keyLock);
168
+ this.planet.terrainLock.free(this._keyLock);
169
+ this.planet._normalMapCreator.free(this._keyLock);
170
+ }
171
+
172
+ stopZoom() {
173
+ this._move = 0;
174
+
175
+ this.planet.layerLock.free(this._keyLock);
176
+ this.planet.terrainLock.free(this._keyLock);
177
+ this.planet._normalMapCreator.free(this._keyLock);
178
+ }
179
+
180
+ _draw(e) {
181
+ if (this._active) {
182
+ var r = this.renderer;
183
+ var cam = r.activeCamera;
184
+ var prevEye = cam.eye.clone();
185
+
186
+ if (this.stepIndex) {
187
+ r.controlsBag.scaleRot = 1.0;
188
+ var sf = this.stepsForward[this.stepsCount - this.stepIndex--];
189
+
190
+ let maxAlt = cam.maxAltitude + this.planet.ellipsoid._a;
191
+ let minAlt = cam.minAltitude + this.planet.ellipsoid._a;
192
+ const camAlt = sf.eye.length();
193
+ if (camAlt > maxAlt || camAlt < minAlt) {
194
+ return;
195
+ }
196
+
197
+ cam.eye = sf.eye;
198
+ cam._u = sf.v;
199
+ cam._r = sf.u;
200
+ cam._b = sf.n;
201
+
202
+ cam.checkTerrainCollision();
203
+
204
+ cam.update();
205
+ } else {
206
+ if (this._deactivate) {
207
+ this._deactivate = false;
208
+
209
+ this.planet.layerLock.free(this._keyLock);
210
+ this.planet.terrainLock.free(this._keyLock);
211
+ this.planet._normalMapCreator.free(this._keyLock);
212
+ }
213
+ }
214
+
215
+ if (r.events.mouseState.leftButtonDown || !this.scaleRot) {
216
+ return;
217
+ }
218
+
219
+ this.scaleRot -= this.inertia;
220
+ if (this.scaleRot <= 0.0) {
221
+ this.scaleRot = 0.0;
222
+ } else {
223
+ r.controlsBag.scaleRot = this.scaleRot;
224
+ var rot = this.qRot
225
+ .slerp(Quat.IDENTITY, 1.0 - this.scaleRot * this.scaleRot * this.scaleRot)
226
+ .normalize();
227
+ if (!(rot.x || rot.y || rot.z)) {
228
+ this.scaleRot = 0.0;
229
+ }
230
+ cam.eye = rot.mulVec3(cam.eye);
231
+ cam._u = rot.mulVec3(cam._u);
232
+ cam._r = rot.mulVec3(cam._r);
233
+ cam._b = rot.mulVec3(cam._b);
234
+
235
+ cam.checkTerrainCollision();
236
+
237
+ cam.update();
238
+ }
239
+
240
+ if (cam.eye.distance(prevEye) / cam._terrainAltitude > 0.01) {
241
+ this.planet.layerLock.lock(this._keyLock);
242
+ this.planet.terrainLock.lock(this._keyLock);
243
+ this.planet._normalMapCreator.lock(this._keyLock);
244
+ } else {
245
+ this.planet.layerLock.free(this._keyLock);
246
+ this.planet.terrainLock.free(this._keyLock);
247
+ this.planet._normalMapCreator.free(this._keyLock);
248
+ }
249
+ }
250
+ }
251
+ }
252
+
253
+ export function mouseWheelZoomControl(options) {
254
+ return new MouseWheelZoomControl(options);
255
+ }
256
+
257
+ export { MouseWheelZoomControl };
@@ -112,14 +112,14 @@ class Sun extends Control {
112
112
  var n = cam.eye.normal(),
113
113
  u = cam.getForward();
114
114
 
115
- u.scale(Math.sign(cam._v.dot(n))); // up
115
+ u.scale(Math.sign(cam._u.dot(n))); // up
116
116
 
117
117
  if (cam.slope > 0.99) {
118
- u = cam._v;
118
+ u = cam._u;
119
119
  }
120
120
 
121
121
  var tu = Vec3.proj_b_to_plane(u, n, u).normalize().scale(this.offsetVertical);
122
- var tr = Vec3.proj_b_to_plane(cam._u, n, cam._u)
122
+ var tr = Vec3.proj_b_to_plane(cam._r, n, cam._r)
123
123
  .normalize()
124
124
  .scale(this.offsetHorizontal); // right
125
125
  var d = tu.add(tr);
@@ -13,6 +13,7 @@ import { SimpleNavigation } from "./SimpleNavigation.js";
13
13
  import { ShowFps } from "./ShowFps.js";
14
14
  import { Sun } from "./Sun.js";
15
15
  import { ZoomControl } from "./ZoomControl.js";
16
+ import { MouseWheelZoomControl } from "./MouseWheelZoomControl.js";
16
17
  import { Lighting } from "./Lighting.js";
17
18
 
18
19
  export {
@@ -31,5 +32,6 @@ export {
31
32
  ShowFps,
32
33
  Sun,
33
34
  ZoomControl,
35
+ MouseWheelZoomControl,
34
36
  Lighting
35
37
  };