@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
@@ -6,6 +6,7 @@ import { Quat } from "../math/Quat.js";
6
6
  import { Ray } from "../math/Ray.js";
7
7
  import { Vec3 } from "../math/Vec3.js";
8
8
  import { Control } from "./Control.js";
9
+ import { Mat4 } from "../math/Mat4.js";
9
10
 
10
11
  class Touch {
11
12
  constructor() {
@@ -29,6 +30,7 @@ class EarthNavigation extends Control {
29
30
  super(options);
30
31
 
31
32
  this.grabbedPoint = new Vec3();
33
+ this.grabbedDir = new Vec3();
32
34
  this.inertia = 0.007;
33
35
  this.grabbedSpheroid = new Sphere();
34
36
  this.planet = null;
@@ -39,11 +41,11 @@ class EarthNavigation extends Control {
39
41
  this.currState = 0;
40
42
 
41
43
  this.positionState = [
42
- { h: 17119745.303455353, max: 0.99, min: -0.99 },
43
- { h: 6866011, max: 0.99, min: -0.99 },
44
- { h: 3000000, max: 0.99, min: -0.99 },
45
- { h: 1000000, max: 0.99, min: -0.99 },
46
- { h: 500000, max: 0.99, min: -0.99 }
44
+ { h: 17119745.303455353, max: 0.98, min: -0.98 },
45
+ { h: 6866011, max: 0.98, min: -0.98 },
46
+ { h: 3000000, max: 0.98, min: -0.98 },
47
+ { h: 1000000, max: 0.98, min: -0.98 },
48
+ { h: 500000, max: 0.98, min: -0.98 }
47
49
  ];
48
50
 
49
51
  this.touches = [new Touch(), new Touch()];
@@ -163,9 +165,10 @@ class EarthNavigation extends Control {
163
165
  }
164
166
  }
165
167
 
166
- onMouseLeftButtonClick() {
168
+ onMouseLeftButtonClick(e) {
167
169
  this.renderer.handler.gl.canvas.classList.add("ogGrabbingPoiner");
168
170
  this.grabbedPoint = this.planet.getCartesianFromMouseTerrain(true);
171
+ this.grabbedDir.copy(e.direction);
169
172
  if (this.grabbedPoint) {
170
173
  this.grabbedSpheroid.radius = this.grabbedPoint.length();
171
174
  this.stopRotation();
@@ -195,24 +198,30 @@ class EarthNavigation extends Control {
195
198
  var targetPoint = new Ray(cam.eye, e.direction).hitSphere(this.grabbedSpheroid);
196
199
 
197
200
  if (targetPoint) {
198
- this._a =
199
- Math.acos(this.grabbedPoint.y / this.grabbedSpheroid.radius) -
201
+
202
+ this._a = Math.acos(this.grabbedPoint.y / this.grabbedSpheroid.radius) -
200
203
  Math.acos(targetPoint.y / this.grabbedSpheroid.radius);
201
204
 
202
- this._vRot = Quat.axisAngleToQuat(cam._u, this._a);
205
+ let rot = this._vRot = Quat.axisAngleToQuat(cam._u, this._a);
206
+
207
+ cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, rot.mulVec3(cam.getUp()));
208
+ //cam.update();
209
+
203
210
  this._hRot = Quat.getRotationBetweenVectors(
204
211
  new Vec3(targetPoint.x, 0.0, targetPoint.z).normal(),
205
212
  new Vec3(this.grabbedPoint.x, 0.0, this.grabbedPoint.z).normal()
206
213
  );
207
- var rot = this._hRot.mul(this._vRot);
208
214
 
209
- var state = this.positionState[this.currState];
210
- var lim = rot.mulVec3(cam.eye).normal().dot(Vec3.UP);
211
- if (lim > state.max || lim < state.min) {
212
- rot = Quat.yRotation(rot.getYaw());
213
- }
214
- cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, Vec3.UP);
215
- cam.update();
215
+ rot = this._hRot;
216
+
217
+ //var state = this.positionState[this.currState];
218
+ //var lim = cam.eye.normal().dot(Vec3.UP);
219
+
220
+ //if (lim > state.max || lim < state.min) {
221
+ // rot = Quat.yRotation(rot.getYaw());
222
+ cam.set(rot.mulVec3(cam.eye), Vec3.ZERO, rot.mulVec3(cam.getUp()));
223
+ cam.update();
224
+ //}
216
225
  }
217
226
  } else {
218
227
  this.scaleRot = 0;
@@ -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