@openglobus/og 0.11.4 → 0.11.8

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 (260) hide show
  1. package/css/og.css +3 -2
  2. package/package.json +12 -14
  3. package/src/og/Clock.js +6 -10
  4. package/src/og/Events.js +5 -7
  5. package/src/og/Extent.js +73 -32
  6. package/src/og/Globe.js +8 -5
  7. package/src/og/ImageCanvas.js +18 -15
  8. package/src/og/LonLat.js +13 -10
  9. package/src/og/Popup.js +19 -17
  10. package/src/og/QueueArray.js +3 -4
  11. package/src/og/Rectangle.js +4 -6
  12. package/src/og/Stack.js +2 -4
  13. package/src/og/ajax.js +20 -14
  14. package/src/og/astro/earth.js +21 -15
  15. package/src/og/bv/Box.js +2 -3
  16. package/src/og/bv/Sphere.js +10 -7
  17. package/src/og/camera/Frustum.js +19 -12
  18. package/src/og/camera/PlanetCamera.js +9 -5
  19. package/src/og/control/CompassButton.js +1 -2
  20. package/src/og/control/Control.js +7 -9
  21. package/src/og/control/DebugInfo.js +0 -1
  22. package/src/og/control/KeyboardNavigation.js +9 -9
  23. package/src/og/control/LayerSwitcher.js +21 -20
  24. package/src/og/control/Lighting.js +74 -64
  25. package/src/og/control/MouseNavigation.js +21 -18
  26. package/src/og/control/MouseWheelZoomControl.js +257 -0
  27. package/src/og/control/SegmentBoundVisualization.js +5 -6
  28. package/src/og/control/ShowFps.js +12 -7
  29. package/src/og/control/SimpleNavigation.js +5 -7
  30. package/src/og/control/Sun.js +22 -12
  31. package/src/og/control/ToggleWireframe.js +3 -3
  32. package/src/og/control/TouchNavigation.js +43 -32
  33. package/src/og/control/ZoomControl.js +40 -24
  34. package/src/og/control/index.js +2 -0
  35. package/src/og/control/visibleExtent/Segment.js +1862 -0
  36. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  37. package/src/og/control/visibleExtent/drawnode.js +751 -0
  38. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  39. package/src/og/ellipsoid/wgs84.js +3 -3
  40. package/src/og/entity/BaseBillboard.js +72 -30
  41. package/src/og/entity/Billboard.js +9 -5
  42. package/src/og/entity/BillboardHandler.js +315 -62
  43. package/src/og/entity/Entity.js +39 -1
  44. package/src/og/entity/EntityCollection.js +47 -24
  45. package/src/og/entity/GeoObject.js +228 -0
  46. package/src/og/entity/GeoObjectHandler.js +910 -0
  47. package/src/og/entity/GeometryHandler.js +595 -123
  48. package/src/og/entity/Label.js +62 -30
  49. package/src/og/entity/LabelHandler.js +40 -242
  50. package/src/og/entity/LabelWorker.js +218 -0
  51. package/src/og/entity/Object3d.js +504 -0
  52. package/src/og/entity/PointCloud.js +76 -28
  53. package/src/og/entity/PointCloudHandler.js +5 -5
  54. package/src/og/entity/Ray.js +49 -16
  55. package/src/og/entity/Strip.js +72 -43
  56. package/src/og/entity/StripHandler.js +23 -23
  57. package/src/og/layer/BaseGeoImage.js +50 -19
  58. package/src/og/layer/CanvasTiles.js +16 -17
  59. package/src/og/layer/GeoImage.js +8 -16
  60. package/src/og/layer/GeoTexture2d.js +2 -10
  61. package/src/og/layer/GeoVideo.js +2 -10
  62. package/src/og/layer/KML.js +55 -33
  63. package/src/og/layer/Layer.js +24 -32
  64. package/src/og/layer/Material.js +1 -1
  65. package/src/og/layer/Vector.js +94 -48
  66. package/src/og/layer/WMS.js +33 -18
  67. package/src/og/layer/XYZ.js +4 -5
  68. package/src/og/light/LightSource.js +19 -12
  69. package/src/og/math/Mat3.js +24 -12
  70. package/src/og/math/Mat4.js +603 -603
  71. package/src/og/math/Plane.js +19 -18
  72. package/src/og/math/Ray.js +17 -12
  73. package/src/og/math/Vec2.js +24 -14
  74. package/src/og/math/Vec3.js +60 -30
  75. package/src/og/math/coder.js +7 -7
  76. package/src/og/proj/EPSG3857.js +3 -3
  77. package/src/og/proj/EPSG4326.js +3 -3
  78. package/src/og/proj/Proj.js +2 -4
  79. package/src/og/quadTree/Node.js +3 -3
  80. package/src/og/renderer/Renderer.js +106 -124
  81. package/src/og/renderer/RendererEvents.js +45 -23
  82. package/src/og/scene/BaseNode.js +2 -3
  83. package/src/og/scene/Planet.js +51 -90
  84. package/src/og/scene/RenderNode.js +15 -8
  85. package/src/og/segment/Segment.js +60 -156
  86. package/src/og/segment/Slice.js +45 -0
  87. package/src/og/shaders/drawnode.js +245 -342
  88. package/src/og/shaders/geoObject.js +211 -0
  89. package/src/og/shaders/pointCloud.js +41 -41
  90. package/src/og/shaders/shape.js +12 -18
  91. package/src/og/shaders/skybox.js +36 -36
  92. package/src/og/shaders/toneMapping.js +1 -0
  93. package/src/og/shapes/BaseShape.js +108 -36
  94. package/src/og/shapes/Icosphere.js +25 -10
  95. package/src/og/shapes/Sphere.js +8 -11
  96. package/src/og/utils/FontAtlas.js +6 -2
  97. package/src/og/utils/GeoImageCreator.js +5 -1
  98. package/src/og/utils/TextureAtlas.js +18 -20
  99. package/src/og/utils/VectorTileCreator.js +1 -3
  100. package/src/og/utils/shared.js +2 -2
  101. package/src/og/webgl/Handler.js +215 -162
  102. package/src/og/webgl/Multisample.js +44 -16
  103. package/src/og/webgl/Program.js +78 -33
  104. package/src/og/webgl/callbacks.js +3 -3
  105. package/types/Clock.d.ts +0 -94
  106. package/types/Deferred.d.ts +0 -6
  107. package/types/Events.d.ts +0 -77
  108. package/types/Extent.d.ts +0 -166
  109. package/types/Globe.d.ts +0 -82
  110. package/types/ImageCanvas.d.ts +0 -123
  111. package/types/Lock.d.ts +0 -12
  112. package/types/LonLat.d.ts +0 -108
  113. package/types/Popup.d.ts +0 -42
  114. package/types/QueueArray.d.ts +0 -19
  115. package/types/Rectangle.d.ts +0 -80
  116. package/types/Stack.d.ts +0 -19
  117. package/types/ajax.d.ts +0 -24
  118. package/types/arial.d.ts +0 -48
  119. package/types/astro/astro.d.ts +0 -38
  120. package/types/astro/earth.d.ts +0 -7
  121. package/types/astro/jd.d.ts +0 -254
  122. package/types/bv/Box.d.ts +0 -30
  123. package/types/bv/Sphere.d.ts +0 -38
  124. package/types/bv/index.d.ts +0 -3
  125. package/types/camera/Camera.d.ts +0 -312
  126. package/types/camera/Frustum.d.ts +0 -133
  127. package/types/camera/PlanetCamera.d.ts +0 -218
  128. package/types/camera/index.d.ts +0 -3
  129. package/types/cons.d.ts +0 -40
  130. package/types/control/CompassButton.d.ts +0 -17
  131. package/types/control/Control.d.ts +0 -104
  132. package/types/control/DebugInfo.d.ts +0 -15
  133. package/types/control/EarthCoordinates.d.ts +0 -47
  134. package/types/control/EarthNavigation.d.ts +0 -42
  135. package/types/control/GeoImageDragControl.d.ts +0 -6
  136. package/types/control/KeyboardNavigation.d.ts +0 -21
  137. package/types/control/LayerSwitcher.d.ts +0 -21
  138. package/types/control/Lighting.d.ts +0 -16
  139. package/types/control/MouseNavigation.d.ts +0 -47
  140. package/types/control/ScaleControl.d.ts +0 -22
  141. package/types/control/ShowFps.d.ts +0 -11
  142. package/types/control/SimpleNavigation.d.ts +0 -25
  143. package/types/control/Sun.d.ts +0 -50
  144. package/types/control/ToggleWireframe.d.ts +0 -12
  145. package/types/control/TouchNavigation.d.ts +0 -48
  146. package/types/control/ZoomControl.d.ts +0 -27
  147. package/types/control/index.d.ts +0 -17
  148. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  149. package/types/ellipsoid/index.d.ts +0 -3
  150. package/types/ellipsoid/wgs84.d.ts +0 -6
  151. package/types/entity/BaseBillboard.d.ts +0 -208
  152. package/types/entity/Billboard.d.ts +0 -94
  153. package/types/entity/BillboardHandler.d.ts +0 -78
  154. package/types/entity/Entity.d.ts +0 -333
  155. package/types/entity/EntityCollection.d.ts +0 -311
  156. package/types/entity/Geometry.d.ts +0 -74
  157. package/types/entity/GeometryHandler.d.ts +0 -76
  158. package/types/entity/Label.d.ts +0 -189
  159. package/types/entity/LabelHandler.d.ts +0 -29
  160. package/types/entity/PointCloud.d.ts +0 -174
  161. package/types/entity/PointCloudHandler.d.ts +0 -38
  162. package/types/entity/Polyline.d.ts +0 -306
  163. package/types/entity/PolylineHandler.d.ts +0 -18
  164. package/types/entity/Ray.d.ts +0 -124
  165. package/types/entity/RayHandler.d.ts +0 -67
  166. package/types/entity/ShapeHandler.d.ts +0 -22
  167. package/types/entity/Strip.d.ts +0 -119
  168. package/types/entity/StripHandler.d.ts +0 -38
  169. package/types/entity/index.d.ts +0 -8
  170. package/types/index.core.d.ts +0 -65
  171. package/types/index.d.ts +0 -45
  172. package/types/index.webgl.d.ts +0 -7
  173. package/types/input/KeyboardHandler.d.ts +0 -10
  174. package/types/input/MouseHandler.d.ts +0 -5
  175. package/types/input/TouchHandler.d.ts +0 -5
  176. package/types/input/input.d.ts +0 -34
  177. package/types/layer/BaseGeoImage.d.ts +0 -94
  178. package/types/layer/CanvasTiles.d.ts +0 -68
  179. package/types/layer/GeoImage.d.ts +0 -52
  180. package/types/layer/GeoTexture2d.d.ts +0 -8
  181. package/types/layer/GeoVideo.d.ts +0 -55
  182. package/types/layer/KML.d.ts +0 -63
  183. package/types/layer/Layer.d.ts +0 -325
  184. package/types/layer/Material.d.ts +0 -45
  185. package/types/layer/Vector.d.ts +0 -208
  186. package/types/layer/WMS.d.ts +0 -63
  187. package/types/layer/XYZ.d.ts +0 -120
  188. package/types/layer/index.d.ts +0 -10
  189. package/types/light/LightSource.d.ts +0 -178
  190. package/types/math/Line2.d.ts +0 -11
  191. package/types/math/Line3.d.ts +0 -10
  192. package/types/math/Mat3.d.ts +0 -65
  193. package/types/math/Mat4.d.ts +0 -176
  194. package/types/math/Plane.d.ts +0 -18
  195. package/types/math/Quat.d.ts +0 -379
  196. package/types/math/Ray.d.ts +0 -82
  197. package/types/math/Vec2.d.ts +0 -309
  198. package/types/math/Vec3.d.ts +0 -460
  199. package/types/math/Vec4.d.ts +0 -162
  200. package/types/math/coder.d.ts +0 -43
  201. package/types/math/index.d.ts +0 -11
  202. package/types/math.d.ts +0 -261
  203. package/types/mercator.d.ts +0 -92
  204. package/types/proj/EPSG3857.d.ts +0 -6
  205. package/types/proj/EPSG4326.d.ts +0 -6
  206. package/types/proj/Proj.d.ts +0 -42
  207. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  208. package/types/quadTree/Node.d.ts +0 -61
  209. package/types/quadTree/quadTree.d.ts +0 -40
  210. package/types/renderer/Renderer.d.ts +0 -298
  211. package/types/renderer/RendererEvents.d.ts +0 -233
  212. package/types/res/images.d.ts +0 -3
  213. package/types/scene/Axes.d.ts +0 -11
  214. package/types/scene/BaseNode.d.ts +0 -60
  215. package/types/scene/Planet.d.ts +0 -577
  216. package/types/scene/RenderNode.d.ts +0 -142
  217. package/types/scene/SkyBox.d.ts +0 -10
  218. package/types/scene/index.d.ts +0 -4
  219. package/types/segment/Segment.d.ts +0 -279
  220. package/types/segment/SegmentLonLat.d.ts +0 -16
  221. package/types/segment/segmentHelper.d.ts +0 -13
  222. package/types/shaders/billboard.d.ts +0 -3
  223. package/types/shaders/depth.d.ts +0 -2
  224. package/types/shaders/drawnode.d.ts +0 -7
  225. package/types/shaders/label.d.ts +0 -4
  226. package/types/shaders/pointCloud.d.ts +0 -2
  227. package/types/shaders/polyline.d.ts +0 -3
  228. package/types/shaders/ray.d.ts +0 -2
  229. package/types/shaders/screenFrame.d.ts +0 -2
  230. package/types/shaders/shape.d.ts +0 -4
  231. package/types/shaders/skybox.d.ts +0 -2
  232. package/types/shaders/toneMapping.d.ts +0 -2
  233. package/types/shapes/BaseShape.d.ts +0 -250
  234. package/types/shapes/Sphere.d.ts +0 -41
  235. package/types/terrain/BilTerrain.d.ts +0 -7
  236. package/types/terrain/EmptyTerrain.d.ts +0 -72
  237. package/types/terrain/Geoid.d.ts +0 -26
  238. package/types/terrain/GlobusTerrain.d.ts +0 -116
  239. package/types/terrain/MapboxTerrain.d.ts +0 -7
  240. package/types/terrain/index.d.ts +0 -5
  241. package/types/utils/FontAtlas.d.ts +0 -14
  242. package/types/utils/GeoImageCreator.d.ts +0 -30
  243. package/types/utils/ImagesCacheManager.d.ts +0 -10
  244. package/types/utils/Loader.d.ts +0 -25
  245. package/types/utils/NormalMapCreator.d.ts +0 -39
  246. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  247. package/types/utils/TerrainWorker.d.ts +0 -9
  248. package/types/utils/TextureAtlas.d.ts +0 -111
  249. package/types/utils/VectorTileCreator.d.ts +0 -16
  250. package/types/utils/colorTable.d.ts +0 -143
  251. package/types/utils/earcut.d.ts +0 -6
  252. package/types/utils/shared.d.ts +0 -231
  253. package/types/webgl/Framebuffer.d.ts +0 -135
  254. package/types/webgl/Handler.d.ts +0 -388
  255. package/types/webgl/Multisample.d.ts +0 -89
  256. package/types/webgl/Program.d.ts +0 -155
  257. package/types/webgl/ProgramController.d.ts +0 -89
  258. package/types/webgl/callbacks.d.ts +0 -1
  259. package/types/webgl/index.d.ts +0 -6
  260. package/types/webgl/types.d.ts +0 -2
@@ -10,6 +10,11 @@ import { parseHTML } from "../utils/shared.js";
10
10
  const TEMPLATE = `<div class="og-lighing">
11
11
 
12
12
  <div class="og-screen-options">
13
+
14
+ <div class="og-option">
15
+ <div class="og-caption">Lighting enabled<input type="checkbox" id="lighting" name="light"/></div>
16
+ </div>
17
+
13
18
  <div class="og-option">
14
19
  <div class="og-caption">Gamma</div>
15
20
  <div class="og-slider">
@@ -24,12 +29,7 @@ const TEMPLATE = `<div class="og-lighing">
24
29
  </div>
25
30
  <div class="og-value exposure"></div>
26
31
  </div>
27
- </div>
28
-
29
- <div class="og-layers">
30
- <div class="og-caption">Select layer:</div>
31
- <select id="layers"></select>
32
- </div>
32
+ </div>
33
33
 
34
34
  <div class="og-color-options">
35
35
  <div class="og-caption">Ambient</div>
@@ -110,6 +110,21 @@ const TEMPLATE = `<div class="og-lighing">
110
110
  <div class="og-value shininess"></div>
111
111
  </div>
112
112
  </div>
113
+
114
+ <div class="og-layers">
115
+ <div class="og-caption">Select layer:</div>
116
+ <select id="layers"></select>
117
+ </div>
118
+
119
+ <div class="og-caption">Opacity</div>
120
+ <div class="og-option">
121
+ <div class="og-label">A</div>
122
+ <div class="og-slider">
123
+ <input type="range" id="opacity" name="opacity" value="0.0" min="0.0" max="2.0" step="0.01" />
124
+ </div>
125
+ <div class="og-value opacity"></div>
126
+ </div>
127
+
113
128
  </div>`;
114
129
 
115
130
  /**
@@ -128,33 +143,8 @@ class Lighting extends Control {
128
143
  bindLayer(layer) {
129
144
  this._selectedLayer = layer;
130
145
 
131
- document.getElementById("ambient-r").value = layer.ambient.x;
132
- document.getElementById("ambient-g").value = layer.ambient.y;
133
- document.getElementById("ambient-b").value = layer.ambient.z;
134
-
135
- document.getElementById("diffuse-r").value = layer.diffuse.x;
136
- document.getElementById("diffuse-g").value = layer.diffuse.y;
137
- document.getElementById("diffuse-b").value = layer.diffuse.z;
138
-
139
- document.getElementById("specular-r").value = layer.specular.x;
140
- document.getElementById("specular-g").value = layer.specular.y;
141
- document.getElementById("specular-b").value = layer.specular.z;
142
-
143
- document.getElementById("shininess").value = layer.shininess;
144
-
145
- document.querySelector(".og-value.ambient-r").innerHTML = layer.ambient.x.toString();
146
- document.querySelector(".og-value.ambient-g").innerHTML = layer.ambient.y.toString();
147
- document.querySelector(".og-value.ambient-b").innerHTML = layer.ambient.z.toString();
148
-
149
- document.querySelector(".og-value.diffuse-r").innerHTML = layer.diffuse.x.toString();
150
- document.querySelector(".og-value.diffuse-g").innerHTML = layer.diffuse.y.toString();
151
- document.querySelector(".og-value.diffuse-b").innerHTML = layer.diffuse.z.toString();
152
-
153
- document.querySelector(".og-value.specular-r").innerHTML = layer.specular.x.toString();
154
- document.querySelector(".og-value.specular-g").innerHTML = layer.specular.y.toString();
155
- document.querySelector(".og-value.specular-b").innerHTML = layer.specular.z.toString();
156
-
157
- document.querySelector(".og-value.shininess").innerHTML = layer.shininess.toString();
146
+ document.getElementById("opacity").value = layer.opacity;
147
+ document.querySelector(".og-value.opacity").innerHTML = layer.opacity.toString();
158
148
  }
159
149
 
160
150
  oninit() {
@@ -163,8 +153,15 @@ class Lighting extends Control {
163
153
 
164
154
  var _this = this;
165
155
 
156
+ document.getElementById("lighting").checked = this.planet.lightEnabled;
157
+
158
+ document.getElementById("lighting").addEventListener("change", (e) => {
159
+ _this.planet.lightEnabled = e.target.checked;
160
+ });
161
+
166
162
  document.getElementById("layers").addEventListener("change", (e) => {
167
- this._selectedLayer = _this.planet.getLayerByName(e.target.value);
163
+ //this._selectedLayer = _this.planet.getLayerByName(e.target.value);
164
+ this.bindLayer(_this.planet.getLayerByName(e.target.value));
168
165
  });
169
166
 
170
167
  document.getElementById("gamma").addEventListener("input", function (e) {
@@ -183,73 +180,86 @@ class Lighting extends Control {
183
180
  document.getElementById("gamma").value = this.planet.renderer.gamma;
184
181
  document.getElementById("exposure").value = this.planet.renderer.exposure;
185
182
 
186
- document.getElementById("ambient-r").addEventListener("input", function (e) {
183
+ document.getElementById("opacity").addEventListener("input", function (e) {
187
184
  if (_this._selectedLayer) {
188
- _this._selectedLayer.ambient.x = Number(this.value);
185
+ _this._selectedLayer.opacity = Number(this.value);
189
186
  }
187
+ document.querySelector(".og-value.opacity").innerHTML = this.value;
188
+ });
189
+
190
+ document.getElementById("ambient-r").addEventListener("input", function (e) {
191
+ _this.planet._ambient[0] = Number(this.value);
190
192
  document.querySelector(".og-value.ambient-r").innerHTML = this.value;
191
193
  });
192
194
  document.getElementById("ambient-g").addEventListener("input", function (e) {
193
- if (_this._selectedLayer) {
194
- _this._selectedLayer.ambient.y = Number(this.value);
195
- }
195
+ _this.planet._ambient[1] = Number(this.value);
196
196
  document.querySelector(".og-value.ambient-g").innerHTML = this.value;
197
197
  });
198
198
  document.getElementById("ambient-b").addEventListener("input", function (e) {
199
- if (_this._selectedLayer) {
200
- _this._selectedLayer.ambient.z = Number(this.value);
201
- }
199
+ _this.planet._ambient[2] = Number(this.value);
202
200
  document.querySelector(".og-value.ambient-b").innerHTML = this.value;
203
201
  });
204
202
 
205
203
  document.getElementById("diffuse-r").addEventListener("input", function (e) {
206
- if (_this._selectedLayer) {
207
- _this._selectedLayer.diffuse.x = Number(this.value);
208
- }
204
+ _this.planet._diffuse[0] = Number(this.value);
209
205
  document.querySelector(".og-value.diffuse-r").innerHTML = this.value;
210
206
  });
211
207
  document.getElementById("diffuse-g").addEventListener("input", function (e) {
212
- if (_this._selectedLayer) {
213
- _this._selectedLayer.diffuse.y = Number(this.value);
214
- }
208
+ _this.planet._diffuse[1] = Number(this.value);
215
209
  document.querySelector(".og-value.diffuse-g").innerHTML = this.value;
216
210
  });
217
211
  document.getElementById("diffuse-b").addEventListener("input", function (e) {
218
- if (_this._selectedLayer) {
219
- _this._selectedLayer.diffuse.z = Number(this.value);
220
- }
212
+ _this.planet._diffuse[2] = Number(this.value);
221
213
  document.querySelector(".og-value.diffuse-b").innerHTML = this.value;
222
214
  });
223
215
 
224
216
  document.getElementById("specular-r").addEventListener("input", function (e) {
225
- if (_this._selectedLayer) {
226
- _this._selectedLayer.specular.x = Number(this.value);
227
- }
217
+ _this.planet._specular[0] = Number(this.value);
228
218
  document.querySelector(".og-value.specular-r").innerHTML = this.value;
229
219
  });
230
220
  document.getElementById("specular-g").addEventListener("input", function (e) {
231
- if (_this._selectedLayer) {
232
- _this._selectedLayer.specular.y = Number(this.value);
233
- }
221
+ _this.planet._specular[1] = Number(this.value);
234
222
  document.querySelector(".og-value.specular-g").innerHTML = this.value;
235
223
  });
236
224
  document.getElementById("specular-b").addEventListener("input", function (e) {
237
- if (_this._selectedLayer) {
238
- _this._selectedLayer.specular.z = Number(this.value);
239
- }
225
+ _this.planet._specular[2] = Number(this.value);
240
226
  document.querySelector(".og-value.specular-b").innerHTML = this.value;
241
227
  });
242
228
 
243
229
  document.getElementById("shininess").addEventListener("input", function (e) {
244
- if (_this._selectedLayer) {
245
- _this._selectedLayer.shininess = Number(this.value);
246
- }
230
+ _this.planet._specular[3] = Number(this.value);
247
231
  document.querySelector(".og-value.shininess").innerHTML = this.value;
248
232
  });
249
233
 
250
234
  if (this.planet) {
251
235
  this.planet.events.on("layeradd", this._onLayerAdd, this);
252
236
  this.planet.events.on("layerremove", this._onLayerRemove, this);
237
+
238
+ document.getElementById("ambient-r").value = this.planet._ambient[0];
239
+ document.getElementById("ambient-g").value = this.planet._ambient[1];
240
+ document.getElementById("ambient-b").value = this.planet._ambient[2];
241
+
242
+ document.getElementById("diffuse-r").value = this.planet._diffuse[0];
243
+ document.getElementById("diffuse-g").value = this.planet._diffuse[1];
244
+ document.getElementById("diffuse-b").value = this.planet._diffuse[2];
245
+
246
+ document.getElementById("specular-r").value = this.planet._specular[0];
247
+ document.getElementById("specular-g").value = this.planet._specular[1];
248
+ document.getElementById("specular-b").value = this.planet._specular[2];
249
+ document.getElementById("shininess").value = this.planet._specular[3];
250
+
251
+ document.querySelector(".og-value.ambient-r").innerHTML = this.planet._ambient[0].toString();
252
+ document.querySelector(".og-value.ambient-g").innerHTML = this.planet._ambient[1].toString();
253
+ document.querySelector(".og-value.ambient-b").innerHTML = this.planet._ambient[2].toString();
254
+
255
+ document.querySelector(".og-value.diffuse-r").innerHTML = this.planet._diffuse[0].toString();
256
+ document.querySelector(".og-value.diffuse-g").innerHTML = this.planet._diffuse[1].toString();
257
+ document.querySelector(".og-value.diffuse-b").innerHTML = this.planet._diffuse[2].toString();
258
+
259
+ document.querySelector(".og-value.specular-r").innerHTML = this.planet._specular[0].toString();
260
+ document.querySelector(".og-value.specular-g").innerHTML = this.planet._specular[1].toString();
261
+ document.querySelector(".og-value.specular-b").innerHTML = this.planet._specular[2].toString();
262
+ document.querySelector(".og-value.shininess").innerHTML = this.planet._specular[3].toString();
253
263
  }
254
264
 
255
265
  this._fetchLayers();
@@ -272,7 +282,7 @@ class Lighting extends Control {
272
282
  document.getElementById("layers").value = e.name;
273
283
  }
274
284
 
275
- _onLayerRemove(e) {}
285
+ _onLayerRemove(e) { }
276
286
  }
277
287
 
278
288
  export function lighting(options) {
@@ -46,7 +46,9 @@ class MouseNavigation extends Control {
46
46
 
47
47
  this._lmbDoubleClickActive = true;
48
48
 
49
- this.minSlope = options.minSlope || 0.1;
49
+ this.minSlope = options.minSlope || 0.1;
50
+
51
+ this._wheelDirection = +1;
50
52
 
51
53
  this._keyLock = new Key();
52
54
  }
@@ -73,7 +75,7 @@ class MouseNavigation extends Control {
73
75
  var d = a ? (delta * cam.eye.distance(a)) / stepsCount : 1000;
74
76
 
75
77
  if (forward) {
76
- d = -d;
78
+ d = -1.25*d;
77
79
  } else {
78
80
  d *= 2;
79
81
  }
@@ -224,7 +226,10 @@ class MouseNavigation extends Control {
224
226
  ms,
225
227
  event.wheelDelta > 0,
226
228
  ms.direction
227
- );
229
+ );
230
+
231
+ this._wheelDirection = event.wheelDelta;
232
+
228
233
  if (this.stepsForward) {
229
234
  this.stepIndex = this.stepsCount;
230
235
  }
@@ -240,7 +245,7 @@ class MouseNavigation extends Control {
240
245
  onMouseLeftButtonDoubleClick() {
241
246
  this.planet.stopFlying();
242
247
  this.stopRotation();
243
- var p = this.planet.getCartesianFromPixelTerrain(this.renderer.events.mouseState, true);
248
+ var p = this.planet.getCartesianFromPixelTerrain(this.renderer.events.mouseState);
244
249
  if (p) {
245
250
  var g = this.planet.ellipsoid.cartesianToLonLat(p);
246
251
  if (this.renderer.events.isKeyPressed(input.KEY_ALT)) {
@@ -258,8 +263,9 @@ class MouseNavigation extends Control {
258
263
  onMouseLeftButtonClick() {
259
264
  if (this._active) {
260
265
  this.renderer.handler.canvas.classList.add("ogGrabbingPoiner");
261
- this.grabbedPoint = this.planet.getCartesianFromMouseTerrain(true);
262
- if (this.grabbedPoint) {
266
+ this.grabbedPoint = this.planet.getCartesianFromMouseTerrain();
267
+ if (this.grabbedPoint) {
268
+ this.renderer.isActiveBackBuffers = false;
263
269
  this._eye0.copy(this.renderer.activeCamera.eye);
264
270
  this.grabbedSpheroid.radius = this.grabbedPoint.length();
265
271
  this.stopRotation();
@@ -274,7 +280,8 @@ class MouseNavigation extends Control {
274
280
  this.planet._normalMapCreator.free(this._keyLock);
275
281
  }
276
282
 
277
- onMouseLeftButtonUp(e) {
283
+ onMouseLeftButtonUp(e) {
284
+ this.renderer.isActiveBackBuffers = true;
278
285
  this.renderer.handler.canvas.classList.remove("ogGrabbingPoiner");
279
286
  if (e.x === e.prev_x && e.y === e.prev_y) {
280
287
  this.scaleRot = 0.0;
@@ -331,20 +338,14 @@ class MouseNavigation extends Control {
331
338
  onMouseRightButtonClick(e) {
332
339
  this.stopRotation();
333
340
  this.planet.stopFlying();
334
- this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(
335
- {
336
- x: e.x,
337
- y: e.y
338
- },
339
- true
340
- );
341
+ this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(e);
341
342
  if (this.pointOnEarth) {
342
343
  this.earthUp = this.pointOnEarth.normal();
343
344
  }
344
345
  }
345
346
 
346
347
  onMouseRightButtonDown(e) {
347
- var cam = this.renderer.activeCamera;
348
+ var cam = this.renderer.activeCamera;
348
349
 
349
350
  if (this.pointOnEarth && this.renderer.events.mouseState.moving) {
350
351
  this.renderer.controlsBag.scaleRot = 1.0;
@@ -385,9 +386,11 @@ class MouseNavigation extends Control {
385
386
  r.controlsBag.scaleRot = 1.0;
386
387
  var sf = this.stepsForward[this.stepsCount - this.stepIndex--];
387
388
 
388
- let maxAlt = cam.maxAltitude + this.planet.ellipsoid._a;
389
-
390
- if (sf.eye.length() > maxAlt) {
389
+ let maxAlt = cam.maxAltitude + this.planet.ellipsoid._b;
390
+ let minAlt = cam.minAltitude + this.planet.ellipsoid._b;
391
+ const camAlt = sf.eye.length();
392
+ if (camAlt > maxAlt || camAlt < minAlt && this._wheelDirection > 0) {
393
+ this._wheelDirection = +1;
391
394
  return;
392
395
  }
393
396
 
@@ -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._v = sf.v;
199
+ cam._u = sf.u;
200
+ cam._n = 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._v = rot.mulVec3(cam._v);
232
+ cam._u = rot.mulVec3(cam._u);
233
+ cam._n = rot.mulVec3(cam._n);
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 };
@@ -1,8 +1,8 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- import { Control } from './Control.js';
4
- import { EntityCollection } from '../entity/EntityCollection.js';
5
- import { Entity } from '../entity/Entity.js';
3
+ import { Control } from "./Control.js";
4
+ import { EntityCollection } from "../entity/EntityCollection.js";
5
+ import { Entity } from "../entity/Entity.js";
6
6
 
7
7
  /**
8
8
  * Frame per second(FPS) display control.
@@ -18,7 +18,6 @@ class SegmentBoundVisualization extends Control {
18
18
  }
19
19
 
20
20
  oninit() {
21
-
22
21
  this.planet.addEntityCollection(this._boundingSphereCollection);
23
22
 
24
23
  this.renderer.events.on("draw", this._predraw, this);
@@ -28,7 +27,7 @@ class SegmentBoundVisualization extends Control {
28
27
  _predraw() {
29
28
  this._boundingSphereCollection.clear();
30
29
  }
31
-
30
+
32
31
  _draw() {
33
32
  for (let i = 0; i < this.planet._renderedNodes.length; i++) {
34
33
  let si = this.planet._renderedNodes[i].segment;
@@ -2,10 +2,10 @@
2
2
  * @module og/control/ShowFps
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import { Control } from './Control.js';
8
- import { print2d } from '../utils/shared.js';
7
+ import { Control } from "./Control.js";
8
+ import { print2d } from "../utils/shared.js";
9
9
 
10
10
  /**
11
11
  * Frame per second(FPS) display control.
@@ -19,15 +19,20 @@ class ShowFps extends Control {
19
19
  }
20
20
 
21
21
  oninit() {
22
- var d = document.createElement('div');
23
- d.className = 'defaultText ';
22
+ var d = document.createElement("div");
23
+ d.className = "defaultText ";
24
24
  d.id = "ogShowFpsControl";
25
25
  document.body.appendChild(d);
26
26
  this.renderer.events.on("draw", this._draw, this);
27
27
  }
28
-
28
+
29
29
  _draw() {
30
- print2d("ogShowFpsControl", (1000.0 / this.renderer.handler.deltaTime).toFixed(1), this.renderer.handler.canvas.clientWidth - 60, 0);
30
+ print2d(
31
+ "ogShowFpsControl",
32
+ (1000.0 / this.renderer.handler.deltaTime).toFixed(1),
33
+ this.renderer.handler.canvas.clientWidth - 60,
34
+ 0
35
+ );
31
36
  }
32
37
  }
33
38
 
@@ -1,7 +1,7 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- import { Control } from './Control.js';
4
- import { input } from '../input/input.js';
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.
@@ -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;