@openglobus/og 0.11.5 → 0.12.0

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 (267) hide show
  1. package/css/og.css +5 -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 +25 -10
  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/Camera.js +70 -79
  18. package/src/og/camera/Frustum.js +19 -12
  19. package/src/og/camera/PlanetCamera.js +33 -34
  20. package/src/og/control/CompassButton.js +1 -2
  21. package/src/og/control/Control.js +7 -9
  22. package/src/og/control/DebugInfo.js +2 -3
  23. package/src/og/control/EarthNavigation.js +26 -17
  24. package/src/og/control/KeyboardNavigation.js +9 -9
  25. package/src/og/control/LayerSwitcher.js +21 -20
  26. package/src/og/control/Lighting.js +74 -64
  27. package/src/og/control/MouseNavigation.js +30 -29
  28. package/src/og/control/MouseWheelZoomControl.js +257 -0
  29. package/src/og/control/SegmentBoundVisualization.js +5 -6
  30. package/src/og/control/ShowFps.js +12 -7
  31. package/src/og/control/SimpleNavigation.js +5 -7
  32. package/src/og/control/Sun.js +24 -14
  33. package/src/og/control/ToggleWireframe.js +3 -3
  34. package/src/og/control/TouchNavigation.js +43 -32
  35. package/src/og/control/ZoomControl.js +40 -24
  36. package/src/og/control/index.js +2 -0
  37. package/src/og/control/visibleExtent/Segment.js +1862 -0
  38. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  39. package/src/og/control/visibleExtent/drawnode.js +751 -0
  40. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  41. package/src/og/ellipsoid/wgs84.js +3 -3
  42. package/src/og/entity/BaseBillboard.js +72 -30
  43. package/src/og/entity/Billboard.js +9 -5
  44. package/src/og/entity/BillboardHandler.js +315 -62
  45. package/src/og/entity/Entity.js +742 -704
  46. package/src/og/entity/EntityCollection.js +47 -24
  47. package/src/og/entity/GeoObject.js +228 -0
  48. package/src/og/entity/GeoObjectHandler.js +895 -0
  49. package/src/og/entity/GeometryHandler.js +595 -123
  50. package/src/og/entity/Label.js +62 -30
  51. package/src/og/entity/LabelHandler.js +42 -243
  52. package/src/og/entity/LabelWorker.js +218 -0
  53. package/src/og/entity/Object3d.js +504 -0
  54. package/src/og/entity/PointCloud.js +76 -28
  55. package/src/og/entity/PointCloudHandler.js +5 -5
  56. package/src/og/entity/Ray.js +49 -16
  57. package/src/og/entity/Strip.js +72 -43
  58. package/src/og/entity/StripHandler.js +23 -23
  59. package/src/og/layer/BaseGeoImage.js +50 -19
  60. package/src/og/layer/CanvasTiles.js +16 -17
  61. package/src/og/layer/GeoImage.js +8 -16
  62. package/src/og/layer/GeoTexture2d.js +2 -10
  63. package/src/og/layer/GeoVideo.js +2 -10
  64. package/src/og/layer/KML.js +55 -33
  65. package/src/og/layer/Layer.js +24 -33
  66. package/src/og/layer/Material.js +1 -1
  67. package/src/og/layer/Vector.js +94 -48
  68. package/src/og/layer/WMS.js +33 -18
  69. package/src/og/layer/XYZ.js +24 -26
  70. package/src/og/light/LightSource.js +19 -12
  71. package/src/og/math/Mat3.js +24 -12
  72. package/src/og/math/Mat4.js +603 -603
  73. package/src/og/math/Plane.js +19 -18
  74. package/src/og/math/Ray.js +17 -12
  75. package/src/og/math/Vec2.js +24 -14
  76. package/src/og/math/Vec3.js +78 -32
  77. package/src/og/math/coder.js +7 -7
  78. package/src/og/proj/EPSG3857.js +3 -3
  79. package/src/og/proj/EPSG4326.js +3 -3
  80. package/src/og/proj/Proj.js +2 -4
  81. package/src/og/quadTree/Node.js +50 -95
  82. package/src/og/quadTree/quadTree.js +1 -1
  83. package/src/og/renderer/Renderer.js +106 -126
  84. package/src/og/renderer/RendererEvents.js +45 -23
  85. package/src/og/scene/BaseNode.js +2 -3
  86. package/src/og/scene/Planet.js +139 -191
  87. package/src/og/scene/RenderNode.js +15 -8
  88. package/src/og/segment/Segment.js +93 -268
  89. package/src/og/segment/Slice.js +45 -0
  90. package/src/og/shaders/drawnode.js +174 -360
  91. package/src/og/shaders/geoObject.js +211 -0
  92. package/src/og/shaders/pointCloud.js +41 -41
  93. package/src/og/shaders/shape.js +12 -18
  94. package/src/og/shaders/skybox.js +36 -36
  95. package/src/og/shaders/toneMapping.js +1 -0
  96. package/src/og/shapes/BaseShape.js +108 -36
  97. package/src/og/shapes/Icosphere.js +25 -10
  98. package/src/og/shapes/Sphere.js +8 -11
  99. package/src/og/terrain/EmptyTerrain.js +3 -2
  100. package/src/og/terrain/GlobusTerrain.js +2 -0
  101. package/src/og/utils/FontAtlas.js +6 -2
  102. package/src/og/utils/GeoImageCreator.js +5 -1
  103. package/src/og/utils/Loader.js +1 -1
  104. package/src/og/utils/PlainSegmentWorker.js +0 -13
  105. package/src/og/utils/TextureAtlas.js +18 -20
  106. package/src/og/utils/VectorTileCreator.js +1 -3
  107. package/src/og/utils/shared.js +2 -2
  108. package/src/og/webgl/Handler.js +219 -162
  109. package/src/og/webgl/Multisample.js +44 -16
  110. package/src/og/webgl/Program.js +78 -33
  111. package/src/og/webgl/callbacks.js +3 -3
  112. package/types/Clock.d.ts +0 -94
  113. package/types/Deferred.d.ts +0 -6
  114. package/types/Events.d.ts +0 -77
  115. package/types/Extent.d.ts +0 -166
  116. package/types/Globe.d.ts +0 -82
  117. package/types/ImageCanvas.d.ts +0 -123
  118. package/types/Lock.d.ts +0 -12
  119. package/types/LonLat.d.ts +0 -108
  120. package/types/Popup.d.ts +0 -42
  121. package/types/QueueArray.d.ts +0 -19
  122. package/types/Rectangle.d.ts +0 -80
  123. package/types/Stack.d.ts +0 -19
  124. package/types/ajax.d.ts +0 -24
  125. package/types/arial.d.ts +0 -48
  126. package/types/astro/astro.d.ts +0 -38
  127. package/types/astro/earth.d.ts +0 -7
  128. package/types/astro/jd.d.ts +0 -254
  129. package/types/bv/Box.d.ts +0 -30
  130. package/types/bv/Sphere.d.ts +0 -38
  131. package/types/bv/index.d.ts +0 -3
  132. package/types/camera/Camera.d.ts +0 -312
  133. package/types/camera/Frustum.d.ts +0 -133
  134. package/types/camera/PlanetCamera.d.ts +0 -218
  135. package/types/camera/index.d.ts +0 -3
  136. package/types/cons.d.ts +0 -40
  137. package/types/control/CompassButton.d.ts +0 -17
  138. package/types/control/Control.d.ts +0 -104
  139. package/types/control/DebugInfo.d.ts +0 -15
  140. package/types/control/EarthCoordinates.d.ts +0 -47
  141. package/types/control/EarthNavigation.d.ts +0 -42
  142. package/types/control/GeoImageDragControl.d.ts +0 -6
  143. package/types/control/KeyboardNavigation.d.ts +0 -21
  144. package/types/control/LayerSwitcher.d.ts +0 -21
  145. package/types/control/Lighting.d.ts +0 -16
  146. package/types/control/MouseNavigation.d.ts +0 -47
  147. package/types/control/ScaleControl.d.ts +0 -22
  148. package/types/control/ShowFps.d.ts +0 -11
  149. package/types/control/SimpleNavigation.d.ts +0 -25
  150. package/types/control/Sun.d.ts +0 -50
  151. package/types/control/ToggleWireframe.d.ts +0 -12
  152. package/types/control/TouchNavigation.d.ts +0 -48
  153. package/types/control/ZoomControl.d.ts +0 -27
  154. package/types/control/index.d.ts +0 -17
  155. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  156. package/types/ellipsoid/index.d.ts +0 -3
  157. package/types/ellipsoid/wgs84.d.ts +0 -6
  158. package/types/entity/BaseBillboard.d.ts +0 -208
  159. package/types/entity/Billboard.d.ts +0 -94
  160. package/types/entity/BillboardHandler.d.ts +0 -78
  161. package/types/entity/Entity.d.ts +0 -333
  162. package/types/entity/EntityCollection.d.ts +0 -311
  163. package/types/entity/Geometry.d.ts +0 -74
  164. package/types/entity/GeometryHandler.d.ts +0 -76
  165. package/types/entity/Label.d.ts +0 -189
  166. package/types/entity/LabelHandler.d.ts +0 -29
  167. package/types/entity/PointCloud.d.ts +0 -174
  168. package/types/entity/PointCloudHandler.d.ts +0 -38
  169. package/types/entity/Polyline.d.ts +0 -306
  170. package/types/entity/PolylineHandler.d.ts +0 -18
  171. package/types/entity/Ray.d.ts +0 -124
  172. package/types/entity/RayHandler.d.ts +0 -67
  173. package/types/entity/ShapeHandler.d.ts +0 -22
  174. package/types/entity/Strip.d.ts +0 -119
  175. package/types/entity/StripHandler.d.ts +0 -38
  176. package/types/entity/index.d.ts +0 -8
  177. package/types/index.core.d.ts +0 -65
  178. package/types/index.d.ts +0 -45
  179. package/types/index.webgl.d.ts +0 -7
  180. package/types/input/KeyboardHandler.d.ts +0 -10
  181. package/types/input/MouseHandler.d.ts +0 -5
  182. package/types/input/TouchHandler.d.ts +0 -5
  183. package/types/input/input.d.ts +0 -34
  184. package/types/layer/BaseGeoImage.d.ts +0 -94
  185. package/types/layer/CanvasTiles.d.ts +0 -68
  186. package/types/layer/GeoImage.d.ts +0 -52
  187. package/types/layer/GeoTexture2d.d.ts +0 -8
  188. package/types/layer/GeoVideo.d.ts +0 -55
  189. package/types/layer/KML.d.ts +0 -63
  190. package/types/layer/Layer.d.ts +0 -326
  191. package/types/layer/Material.d.ts +0 -45
  192. package/types/layer/Vector.d.ts +0 -208
  193. package/types/layer/WMS.d.ts +0 -63
  194. package/types/layer/XYZ.d.ts +0 -120
  195. package/types/layer/index.d.ts +0 -10
  196. package/types/light/LightSource.d.ts +0 -178
  197. package/types/math/Line2.d.ts +0 -11
  198. package/types/math/Line3.d.ts +0 -10
  199. package/types/math/Mat3.d.ts +0 -65
  200. package/types/math/Mat4.d.ts +0 -176
  201. package/types/math/Plane.d.ts +0 -18
  202. package/types/math/Quat.d.ts +0 -379
  203. package/types/math/Ray.d.ts +0 -82
  204. package/types/math/Vec2.d.ts +0 -309
  205. package/types/math/Vec3.d.ts +0 -460
  206. package/types/math/Vec4.d.ts +0 -162
  207. package/types/math/coder.d.ts +0 -43
  208. package/types/math/index.d.ts +0 -11
  209. package/types/math.d.ts +0 -261
  210. package/types/mercator.d.ts +0 -92
  211. package/types/proj/EPSG3857.d.ts +0 -6
  212. package/types/proj/EPSG4326.d.ts +0 -6
  213. package/types/proj/Proj.d.ts +0 -42
  214. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  215. package/types/quadTree/Node.d.ts +0 -61
  216. package/types/quadTree/quadTree.d.ts +0 -40
  217. package/types/renderer/Renderer.d.ts +0 -298
  218. package/types/renderer/RendererEvents.d.ts +0 -233
  219. package/types/res/images.d.ts +0 -3
  220. package/types/scene/Axes.d.ts +0 -11
  221. package/types/scene/BaseNode.d.ts +0 -60
  222. package/types/scene/Planet.d.ts +0 -577
  223. package/types/scene/RenderNode.d.ts +0 -142
  224. package/types/scene/SkyBox.d.ts +0 -10
  225. package/types/scene/index.d.ts +0 -4
  226. package/types/segment/Segment.d.ts +0 -279
  227. package/types/segment/SegmentLonLat.d.ts +0 -16
  228. package/types/segment/segmentHelper.d.ts +0 -13
  229. package/types/shaders/billboard.d.ts +0 -3
  230. package/types/shaders/depth.d.ts +0 -2
  231. package/types/shaders/drawnode.d.ts +0 -7
  232. package/types/shaders/label.d.ts +0 -4
  233. package/types/shaders/pointCloud.d.ts +0 -2
  234. package/types/shaders/polyline.d.ts +0 -3
  235. package/types/shaders/ray.d.ts +0 -2
  236. package/types/shaders/screenFrame.d.ts +0 -2
  237. package/types/shaders/shape.d.ts +0 -4
  238. package/types/shaders/skybox.d.ts +0 -2
  239. package/types/shaders/toneMapping.d.ts +0 -2
  240. package/types/shapes/BaseShape.d.ts +0 -250
  241. package/types/shapes/Sphere.d.ts +0 -41
  242. package/types/terrain/BilTerrain.d.ts +0 -7
  243. package/types/terrain/EmptyTerrain.d.ts +0 -72
  244. package/types/terrain/Geoid.d.ts +0 -26
  245. package/types/terrain/GlobusTerrain.d.ts +0 -116
  246. package/types/terrain/MapboxTerrain.d.ts +0 -7
  247. package/types/terrain/index.d.ts +0 -5
  248. package/types/utils/FontAtlas.d.ts +0 -14
  249. package/types/utils/GeoImageCreator.d.ts +0 -30
  250. package/types/utils/ImagesCacheManager.d.ts +0 -10
  251. package/types/utils/Loader.d.ts +0 -25
  252. package/types/utils/NormalMapCreator.d.ts +0 -39
  253. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  254. package/types/utils/TerrainWorker.d.ts +0 -9
  255. package/types/utils/TextureAtlas.d.ts +0 -111
  256. package/types/utils/VectorTileCreator.d.ts +0 -16
  257. package/types/utils/colorTable.d.ts +0 -143
  258. package/types/utils/earcut.d.ts +0 -6
  259. package/types/utils/shared.d.ts +0 -231
  260. package/types/webgl/Framebuffer.d.ts +0 -135
  261. package/types/webgl/Handler.d.ts +0 -388
  262. package/types/webgl/Multisample.d.ts +0 -89
  263. package/types/webgl/Program.d.ts +0 -155
  264. package/types/webgl/ProgramController.d.ts +0 -89
  265. package/types/webgl/callbacks.d.ts +0 -1
  266. package/types/webgl/index.d.ts +0 -6
  267. 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
  }
@@ -55,9 +57,9 @@ class MouseNavigation extends Control {
55
57
  var steps = [];
56
58
 
57
59
  var eye = cam.eye.clone(),
58
- n = cam._n.clone(),
59
- u = cam._u.clone(),
60
- v = cam._v.clone();
60
+ n = cam._b.clone(),
61
+ u = cam._r.clone(),
62
+ v = cam._u.clone();
61
63
 
62
64
  var a = planet.getCartesianFromPixelTerrain(point, true);
63
65
 
@@ -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,8 @@ 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) {
263
268
  this._eye0.copy(this.renderer.activeCamera.eye);
264
269
  this.grabbedSpheroid.radius = this.grabbedPoint.length();
265
270
  this.stopRotation();
@@ -274,7 +279,7 @@ class MouseNavigation extends Control {
274
279
  this.planet._normalMapCreator.free(this._keyLock);
275
280
  }
276
281
 
277
- onMouseLeftButtonUp(e) {
282
+ onMouseLeftButtonUp(e) {
278
283
  this.renderer.handler.canvas.classList.remove("ogGrabbingPoiner");
279
284
  if (e.x === e.prev_x && e.y === e.prev_y) {
280
285
  this.scaleRot = 0.0;
@@ -302,9 +307,9 @@ class MouseNavigation extends Control {
302
307
  );
303
308
  var rot = this.qRot;
304
309
  cam.eye = rot.mulVec3(cam.eye);
305
- cam._v = rot.mulVec3(cam._v);
306
310
  cam._u = rot.mulVec3(cam._u);
307
- cam._n = rot.mulVec3(cam._n);
311
+ cam._r = rot.mulVec3(cam._r);
312
+ cam._b = rot.mulVec3(cam._b);
308
313
 
309
314
  cam.checkTerrainCollision();
310
315
 
@@ -312,7 +317,7 @@ class MouseNavigation extends Control {
312
317
  }
313
318
  } else {
314
319
  var p0 = this.grabbedPoint,
315
- p1 = Vec3.add(p0, cam._u),
320
+ p1 = Vec3.add(p0, cam._r),
316
321
  p2 = Vec3.add(p0, p0.normal());
317
322
 
318
323
  var px = new Vec3();
@@ -331,20 +336,14 @@ class MouseNavigation extends Control {
331
336
  onMouseRightButtonClick(e) {
332
337
  this.stopRotation();
333
338
  this.planet.stopFlying();
334
- this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(
335
- {
336
- x: e.x,
337
- y: e.y
338
- },
339
- true
340
- );
339
+ this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(e);
341
340
  if (this.pointOnEarth) {
342
341
  this.earthUp = this.pointOnEarth.normal();
343
342
  }
344
343
  }
345
344
 
346
345
  onMouseRightButtonDown(e) {
347
- var cam = this.renderer.activeCamera;
346
+ var cam = this.renderer.activeCamera;
348
347
 
349
348
  if (this.pointOnEarth && this.renderer.events.mouseState.moving) {
350
349
  this.renderer.controlsBag.scaleRot = 1.0;
@@ -385,16 +384,18 @@ class MouseNavigation extends Control {
385
384
  r.controlsBag.scaleRot = 1.0;
386
385
  var sf = this.stepsForward[this.stepsCount - this.stepIndex--];
387
386
 
388
- let maxAlt = cam.maxAltitude + this.planet.ellipsoid._a;
389
-
390
- if (sf.eye.length() > maxAlt) {
387
+ let maxAlt = cam.maxAltitude + this.planet.ellipsoid._b;
388
+ let minAlt = cam.minAltitude + this.planet.ellipsoid._b;
389
+ const camAlt = sf.eye.length();
390
+ if (camAlt > maxAlt || camAlt < minAlt && this._wheelDirection > 0) {
391
+ this._wheelDirection = +1;
391
392
  return;
392
393
  }
393
394
 
394
395
  cam.eye = sf.eye;
395
- cam._v = sf.v;
396
- cam._u = sf.u;
397
- cam._n = sf.n;
396
+ cam._u = sf.v;
397
+ cam._r = sf.u;
398
+ cam._b = sf.n;
398
399
 
399
400
  cam.checkTerrainCollision();
400
401
 
@@ -425,9 +426,9 @@ class MouseNavigation extends Control {
425
426
  this.scaleRot = 0.0;
426
427
  }
427
428
  cam.eye = rot.mulVec3(cam.eye);
428
- cam._v = rot.mulVec3(cam._v);
429
429
  cam._u = rot.mulVec3(cam._u);
430
- cam._n = rot.mulVec3(cam._n);
430
+ cam._r = rot.mulVec3(cam._r);
431
+ cam._b = rot.mulVec3(cam._b);
431
432
 
432
433
  cam.checkTerrainCollision();
433
434
 
@@ -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 };
@@ -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;