@openglobus/og 0.17.1 → 0.18.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 (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +248 -185
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -270
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +777 -595
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -149
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -128
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1168
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -10
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -255
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -595
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
@@ -1,60 +1,90 @@
1
- /**
2
- * Datasource http://www.viewfinderpanoramas.org/ srtm 3 arc second
3
- */
4
- "use strict";
5
-
6
- import { Events } from "../Events.js";
7
- import * as mercator from "../mercator.js";
8
- import { EPSG3857 } from "../proj/EPSG3857.js";
9
- import { NOTRENDERING } from "../quadTree/quadTree.js";
10
- import { Loader } from "../utils/Loader.js";
11
- import { EmptyTerrain } from "./EmptyTerrain.js";
12
- // import { QueueArray } from '../QueueArray.js';
13
- import { Extent } from "../Extent.js";
14
- import { Layer } from "../layer/Layer.js";
15
- import { LonLat } from "../LonLat.js";
16
- import { Ray } from "../math/Ray.js";
17
- import { Vec3 } from "../math/Vec3.js";
18
- import { createExtent, stringTemplate } from "../utils/shared.js";
19
-
20
- const EVENT_NAMES = [
21
- /**
22
- * Triggered when current elevation tile has loaded but before rendereing.
23
- * @event og.terrain.GlobusTerrain#load
24
- */
25
- "load",
1
+ import * as mercator from "../mercator";
2
+ import {createEvents, EventsHandler} from "../Events";
3
+ import {createExtent, stringTemplate, TypedArray} from "../utils/shared";
4
+ import {EPSG3857} from "../proj/EPSG3857";
5
+ import {EmptyTerrain, IEmptyTerrainParams} from "./EmptyTerrain";
6
+ import {Extent} from "../Extent";
7
+ import {Layer} from "../layer/Layer";
8
+ import {IResponse, Loader} from "../utils/Loader";
9
+ import {LonLat} from "../LonLat";
10
+ import {NOTRENDERING} from "../quadTree/quadTree";
11
+ import {Segment} from "../segment/Segment";
12
+ // import { QueueArray } from '../QueueArray';
13
+ import {Ray} from "../math/Ray";
14
+ import {Vec3} from "../math/Vec3";
15
+
16
+ export interface IGlobusTerrainParams extends IEmptyTerrainParams {
17
+ subdomains?: string[];
18
+ url?: string;
19
+ extent?: Extent | [[number, number], [number, number]];
20
+ urlRewrite?: UrlRewriteFunc;
21
+ noDataValues?: number[];
22
+ plainGridSize?: number;
23
+ }
26
24
 
27
- /**
28
- * Triggered when all elevation tiles have loaded or loading has stopped.
29
- * @event og.terrain.GlobusTerrain#loadend
30
- */
31
- "loadend"
32
- ];
25
+ type TileData = {
26
+ heights: number[] | TypedArray | null,
27
+ extent: Extent | null
28
+ }
29
+
30
+ type UrlRewriteFunc = (segment: Segment, url: string) => string;
33
31
 
34
32
  /**
35
33
  * Class that loads segment elevation data, converts it to the array and passes it to the planet segment.
36
34
  * @class
37
- * @extends {EmptyTerrain}
35
+ * @extends {GlobusTerrain}
38
36
  * @param {string} [name=""] - Terrain provider name.
39
- * @param {Object} [options] - Provider options:
37
+ * @param {IGlobusTerrainParams} [options] - Provider options:
40
38
  * @param {number} [options.minZoom=3] - Minimal visible zoom index when terrain handler works.
41
39
  * @param {number} [options.minZoom=14] - Maximal visible zoom index when terrain handler works.
42
40
  * @param {number} [options.minNativeZoom=14] - Maximal available terrain zoom level.
43
41
  * @param {string} [options.url="//openglobus.org/heights/srtm3/{z}/{y}/{x}.ddm"] - Terrain source path url template. Default is openglobus ddm elevation file.
44
42
  * @param {Array.<number>} [options.gridSizeByZoom] - Array of segment triangulation grid sizes where array index agreed to the segment zoom index.
45
43
  * @param {number} [options.plainGridSize=32] - Elevation grid size. Default is 32x32. Must be power of two.
46
- * @param {string} [options.responseType="arraybuffer"] - Responce type.
44
+ * @param {string} [options.responseType="arraybuffer"] - Response type.
47
45
  * @param {number} [options.MAX_LOADING_TILES] - Maximum at one time loading tiles.
48
46
  * @param {Array.<number>} [gridSizeByZoom] - Array of values, where each value corresponds to the size of a tile(or segment) on the globe. Each value must be power of two.
49
- * @fires og.terrain.GlobusTerrain#load
50
- * @fires og.terrain.GlobusTerrain#loadend
47
+ *
48
+ * @fires GlobusTerrainEvents#load
49
+ * @fires GlobusTerrainEvents#loadend
51
50
  */
52
51
  class GlobusTerrain extends EmptyTerrain {
52
+
53
+ public events: GlobusTerrainEvents;
54
+
55
+ protected _s: string[];
56
+
57
+ protected _requestCount: number;
58
+
59
+ protected _requestsPeerSubdomain: number;
60
+
53
61
  /**
54
- * @param {string} [name]
55
- * @param {*} [options]
62
+ * Terrain source path url template.
63
+ * @protected
64
+ * @type {string}
56
65
  */
57
- constructor(name, options = {}) {
66
+ protected url: string;
67
+
68
+ protected _extent: Extent;
69
+
70
+ protected _dataType: string;
71
+
72
+ protected _elevationCache: Record<string, TileData>;
73
+
74
+ protected _fetchCache: Record<string, Promise<any>>;
75
+
76
+ protected _loader: Loader<GlobusTerrain>;
77
+
78
+ /**
79
+ * Rewrites elevation storage url query.
80
+ * @protected
81
+ * @type {Function} -
82
+ */
83
+ protected _urlRewriteCallback: UrlRewriteFunc | null;
84
+
85
+
86
+ constructor(name: string | null, options: IGlobusTerrainParams = {}) {
87
+
58
88
  super({
59
89
  geoidSrc: "//openglobus.org/geoid/egm84-30.pgm",
60
90
  maxNativeZoom: options.maxNativeZoom || 14,
@@ -63,57 +93,29 @@ class GlobusTerrain extends EmptyTerrain {
63
93
 
64
94
  this._s = options.subdomains || ["a", "b", "c"];
65
95
 
66
- /**
67
- * Events handler.
68
- * @public
69
- * @type {Events}
70
- */
71
- this.events = new Events(EVENT_NAMES, this);
96
+ this.events = createEvents(GLOBUSTERRAIN_EVENTS, this);
72
97
 
73
98
  this._requestCount = 0;
74
99
 
75
- this._requestsPeerSubdomian = 4;
100
+ this._requestsPeerSubdomain = 4;
76
101
 
77
102
  this.isEmpty = false;
78
103
 
79
104
  this.equalizeNormals = true;
80
105
 
81
- /**
82
- * Provider name.
83
- * @public
84
- * @type {string}
85
- */
86
106
  this.name = name || "openglobus";
87
107
 
88
- /**
89
- * Terrain source path url template.
90
- * @public
91
- * @type {string}
92
- */
93
108
  this.url = options.url || "//{s}.srtm3.openglobus.org/{z}/{y}/{x}.ddm";
94
109
 
95
- /**
96
- * Array of segment triangulation grid sizes where array index agreed to the segment zoom index.
97
- * @public
98
- * @type {Array.<number>}
99
- */
100
110
  this.gridSizeByZoom = options.gridSizeByZoom || [
101
111
  64, 32, 32, 16, 16, 8, 8, 8, 8, 16, 16, 16, 16, 32, 32, 16, 8, 4, 2, 2, 2, 2, 2, 2
102
112
  ];
103
113
 
104
114
  this.noDataValues = options.noDataValues || [];
105
115
 
106
- /**
107
- * Elevation tile grid size.
108
- * @public
109
- * @type {number}
110
- */
111
116
  this.plainGridSize = options.plainGridSize || 32;
112
117
 
113
- this._extent = createExtent(
114
- options.extent,
115
- new Extent(new LonLat(-180.0, -90.0), new LonLat(180.0, 90.0))
116
- );
118
+ this._extent = createExtent(options.extent, new Extent(new LonLat(-180.0, -90.0), new LonLat(180.0, 90.0)));
117
119
 
118
120
  this._dataType = "arrayBuffer";
119
121
 
@@ -123,46 +125,40 @@ class GlobusTerrain extends EmptyTerrain {
123
125
 
124
126
  this._fetchCache = {};
125
127
 
126
- this._loader = new Loader();
128
+ this._loader = new Loader<GlobusTerrain>();
127
129
 
128
- /**
129
- * Rewrites elevation storage url query.
130
- * @private
131
- * @callback og.terrain.GlobusTerrain~_urlRewriteCallback
132
- * @param {Segment} segment - Segment to load.
133
- * @param {string} url - Created url.
134
- * @returns {string} - Url query string.
135
- */
136
130
  this._urlRewriteCallback = options.urlRewrite || null;
137
131
  }
138
132
 
139
- clearCache() {
140
- //?
133
+ public get loader(): Loader<GlobusTerrain> {
134
+ return this._loader;
135
+ }
136
+
137
+ public override clearCache() {
141
138
  for (let c in this._elevationCache) {
142
139
  this._elevationCache[c].heights = null;
143
140
  this._elevationCache[c].extent = null;
144
141
  delete this._elevationCache[c];
145
142
  }
143
+ //@ts-ignore
146
144
  this._elevationCache = null;
147
145
  this._elevationCache = {};
148
146
 
149
- //?
150
147
  for (let c in this._fetchCache) {
148
+ //@ts-ignore
151
149
  this._fetchCache[c] = null;
152
150
  delete this._fetchCache[c];
153
151
  }
152
+ //@ts-ignore
154
153
  this._fetchCache = null;
155
154
  this._fetchCache = {};
156
155
  }
157
156
 
158
- isBlur(segment) {
159
- if (segment.tileZoom >= 6) {
160
- return true;
161
- }
162
- return false;
157
+ public override isBlur(segment: Segment): boolean {
158
+ return segment.tileZoom >= 6;
163
159
  }
164
160
 
165
- getHeightAsync(lonLat, callback, zoom, firstAttempt) {
161
+ public override getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number, firstAttempt?: boolean): boolean {
166
162
  if (!lonLat || lonLat.lat > mercator.MAX_LAT || lonLat.lat < mercator.MIN_LAT) {
167
163
  callback(0);
168
164
  return true;
@@ -170,7 +166,7 @@ class GlobusTerrain extends EmptyTerrain {
170
166
 
171
167
  firstAttempt = firstAttempt != undefined ? firstAttempt : true;
172
168
 
173
- let z = zoom || this.maxNativeZoom,
169
+ let z = zoom || this.maxZoom,
174
170
  z2 = Math.pow(2, z),
175
171
  size = mercator.POLE2 / z2,
176
172
  merc = mercator.forward(lonLat),
@@ -197,35 +193,34 @@ class GlobusTerrain extends EmptyTerrain {
197
193
  });
198
194
  }
199
195
 
200
- this._fetchCache[tileIndex].then((response) => {
196
+ this._fetchCache[tileIndex].then((response: IResponse) => {
201
197
 
202
198
  let extent = mercator.getTileExtent(x, y, z);
203
199
 
204
200
  if (response.status === "ready") {
205
- let cache = {
201
+ let cache: TileData = {
206
202
  heights: this._createHeights(response.data, tileIndex, x, y, z, extent),
207
203
  extent: extent
208
204
  };
209
205
  this._elevationCache[tileIndex] = cache;
210
206
  callback(this._getGroundHeightMerc(merc, cache));
211
- } else if (response.status === "error") {
212
207
 
213
- if (firstAttempt && z > this.maxZoom) {
208
+ } else if (response.status === "error") {
209
+ if (firstAttempt && z > this.maxNativeZoom) {
214
210
  firstAttempt = false;
215
- this.getHeightAsync(lonLat, callback, this.maxZoom, false);
211
+ this.getHeightAsync(lonLat, callback, this.maxNativeZoom, false);
216
212
  return;
217
213
  }
218
214
 
219
- let cache = {
215
+ this._elevationCache[tileIndex] = {
220
216
  heights: null,
221
217
  extent: extent
222
218
  };
223
219
 
224
- this._elevationCache[tileIndex] = cache;
225
-
226
220
  callback(0);
227
221
 
228
222
  } else {
223
+ // @ts-ignore
229
224
  this._fetchCache[tileIndex] = null;
230
225
  delete this._fetchCache[tileIndex];
231
226
  }
@@ -235,7 +230,7 @@ class GlobusTerrain extends EmptyTerrain {
235
230
  return false;
236
231
  }
237
232
 
238
- getTileCache(lonLat, z) {
233
+ public getTileCache(lonLat: LonLat, z: number): TileData | undefined {
239
234
  if (!lonLat || lonLat.lat > mercator.MAX_LAT || lonLat.lat < mercator.MIN_LAT) {
240
235
  return;
241
236
  }
@@ -251,7 +246,7 @@ class GlobusTerrain extends EmptyTerrain {
251
246
  return this._elevationCache[tileIndex];
252
247
  }
253
248
 
254
- _getGroundHeightMerc(merc, tileData) {
249
+ protected _getGroundHeightMerc(merc: LonLat, tileData: TileData): number {
255
250
  if (!(tileData.extent && tileData.heights)) {
256
251
  return 0;
257
252
  }
@@ -282,11 +277,7 @@ class GlobusTerrain extends EmptyTerrain {
282
277
  h2 = tileData.heights[v2Ind],
283
278
  h3 = tileData.heights[v3Ind];
284
279
 
285
- let v0 = new Vec3(
286
- tileData.extent.southWest.lon + size * j,
287
- h0,
288
- tileData.extent.northEast.lat - size * i - size
289
- ),
280
+ let v0 = new Vec3(tileData.extent.southWest.lon + size * j, h0, tileData.extent.northEast.lat - size * i - size),
290
281
  v1 = new Vec3(v0.x + size, h1, v0.z),
291
282
  v2 = new Vec3(v0.x, h2, v0.z + size),
292
283
  v3 = new Vec3(v0.x + size, h3, v0.z + size);
@@ -305,13 +296,15 @@ class GlobusTerrain extends EmptyTerrain {
305
296
  if (d === Ray.INSIDE) {
306
297
  return res.y;
307
298
  }
299
+
300
+ return 0;
308
301
  }
309
302
 
310
303
  /**
311
304
  * Stop loading.
312
305
  * @public
313
306
  */
314
- abortLoading() {
307
+ public override abortLoading() {
315
308
  this._loader.abortAll();
316
309
  }
317
310
 
@@ -322,7 +315,7 @@ class GlobusTerrain extends EmptyTerrain {
322
315
  * @example <caption>Default openglobus url template:</caption>:
323
316
  * "http://earth3.openglobus.org/{z}/{y}/{x}.ddm"
324
317
  */
325
- setUrl(url) {
318
+ public setUrl(url: string) {
326
319
  this.url = url;
327
320
  }
328
321
 
@@ -331,47 +324,46 @@ class GlobusTerrain extends EmptyTerrain {
331
324
  * @public
332
325
  * @param {string} name - Name.
333
326
  */
334
- setName(name) {
327
+ public setName(name: string) {
335
328
  this.name = name;
336
329
  }
337
330
 
338
- isReadyToLoad(segment) {
339
- return (
340
- segment._projection.id === EPSG3857.id &&
341
- this._extent.overlaps(segment.getExtentLonLat())
342
- );
331
+ public isReadyToLoad(segment: Segment): boolean {
332
+ return segment._projection.equal(EPSG3857) && this._extent.overlaps(segment.getExtentLonLat());
343
333
  }
344
334
 
345
335
  /**
346
- * Starts to load segment data.
336
+ * Starts to load segment elevation data.
347
337
  * @public
348
- * @virtual
349
338
  * @param {Segment} segment - Segment that wants a terrain data.
350
- * @param {boolean} forceLoading
339
+ * @param {boolean} [forceLoading] -
351
340
  */
352
- loadTerrain(segment, forceLoading) {
353
- if (this._planet.terrainLock.isFree()) {
341
+ public override loadTerrain(segment: Segment, forceLoading: boolean = false) {
342
+
343
+ if (this._planet!.terrainLock.isFree()) {
344
+
354
345
  segment.terrainReady = false;
355
346
  segment.terrainIsLoading = true;
347
+
356
348
  if (this.isReadyToLoad(segment)) {
349
+
357
350
  let cache = this._elevationCache[segment.tileIndex];
351
+
358
352
  if (cache) {
359
353
  this._applyElevationsData(segment, cache.heights);
360
354
  } else {
361
- this._loader.load(
362
- {
355
+ this._loader.load({
363
356
  sender: this,
364
357
  src: this._getHTTPRequestString(segment),
365
358
  segment: segment,
366
359
  type: this._dataType,
367
- filter: () =>
368
- (segment.plainReady && segment.node.getState() !== NOTRENDERING) ||
369
- forceLoading
370
- },
371
- (response) => {
360
+ filter: () => (segment.plainReady && segment.node.getState() !== NOTRENDERING) || forceLoading
361
+ }, (response: IResponse) => {
362
+
372
363
  if (response.status === "ready") {
373
364
 
374
- let heights = this._createHeights(response.data,
365
+ let heights = this._createHeights(
366
+ response.data,
375
367
  segment.tileIndex,
376
368
  segment.tileX, segment.tileY, segment.tileZoom,
377
369
  segment.getExtent(),
@@ -403,30 +395,28 @@ class GlobusTerrain extends EmptyTerrain {
403
395
  }
404
396
  }
405
397
 
406
- _getSubdomain() {
398
+ protected _getSubdomain(): string {
407
399
  this._requestCount++;
408
- return this._s[Math.floor(this._requestCount % (this._requestsPeerSubdomian * this._s.length) / this._requestsPeerSubdomian)];
400
+ return this._s[Math.floor(this._requestCount % (this._requestsPeerSubdomain * this._s.length) / this._requestsPeerSubdomain)];
409
401
  }
410
402
 
411
- _buildURL(x, y, z) {
403
+ public _buildURL(x: number, y: number, z: number): string {
412
404
  return stringTemplate(this.url, {
413
- s: this._getSubdomain(), x, y, z
405
+ s: this._getSubdomain(),
406
+ x: x.toString(),
407
+ y: y.toString(),
408
+ z: z.toString()
414
409
  });
415
410
  }
416
411
 
417
412
  /**
418
- * Creates query url.
413
+ * Creates default query url string.
419
414
  * @protected
420
- * @virtual
421
415
  * @param {Segment} segment -
422
416
  * @returns {string} -
423
417
  */
424
- _createUrl(segment) {
425
- return this._buildURL(
426
- segment.tileX.toString(),
427
- segment.tileY.toString(),
428
- segment.tileZoom.toString()
429
- )
418
+ protected _createUrl(segment: Segment): string {
419
+ return this._buildURL(segment.tileX, segment.tileY, segment.tileZoom);
430
420
  }
431
421
 
432
422
  /**
@@ -435,40 +425,34 @@ class GlobusTerrain extends EmptyTerrain {
435
425
  * @param {Segment} segment - Segment that loads image data.
436
426
  * @returns {string} - Url string.
437
427
  */
438
- _getHTTPRequestString(segment) {
439
- return this._urlRewriteCallback
440
- ? this._urlRewriteCallback(segment, this.url)
441
- : this._createUrl(segment);
428
+ protected _getHTTPRequestString(segment: Segment): string {
429
+ return this._urlRewriteCallback ? this._urlRewriteCallback(segment, this.url) : this._createUrl(segment);
442
430
  }
443
431
 
444
432
  /**
445
- * Sets url rewrite callback, used for custom url rewriting for every tile laoding.
433
+ * Sets url rewrite callback, used for custom url rewriting for every tile loading.
446
434
  * @public
447
- * @param {GlobusTerrain~_urlRewriteCallback} ur - The callback that returns tile custom created url.
435
+ * @param {UrlRewriteFunc} ur - The callback that returns tile custom created url.
448
436
  */
449
- setUrlRewriteCallback(ur) {
437
+ public setUrlRewriteCallback(ur: UrlRewriteFunc) {
450
438
  this._urlRewriteCallback = ur;
451
439
  }
452
440
 
453
441
  /**
454
- * Converts loaded data to segment elevation data type(columr major elevation data array in meters)
442
+ * Converts loaded data to segment elevation data type(column major elevation data array in meters)
455
443
  * @public
456
- * @virtual
457
- * @param {*} data - Loaded elevation data.
458
444
  * @returns {Array.<number>} -
459
445
  */
460
- _createHeights(data) {
446
+ protected _createHeights(data: any, tileIndex?: string, x?: number, y?: number, z?: number, extent?: Extent, isMaxZoom?: boolean): TypedArray | number[] {
461
447
  return new Float32Array(data);
462
448
  }
463
449
 
464
450
  /**
465
451
  * @protected
466
- * @param {Segment} segment -
467
- * @param {*} data -
468
452
  */
469
- _applyElevationsData(segment, elevations) {
453
+ protected _applyElevationsData(segment: Segment, elevations: number[] | TypedArray | null) {
470
454
  if (segment) {
471
- var e = this.events.load;
455
+ let e = this.events.load!;
472
456
  if (e.handlers.length) {
473
457
  this.events.dispatch(e, {
474
458
  elevations: elevations,
@@ -480,4 +464,26 @@ class GlobusTerrain extends EmptyTerrain {
480
464
  }
481
465
  }
482
466
 
483
- export { GlobusTerrain };
467
+ type GlobusTerrainEventsList = [
468
+ "load",
469
+ "loadend"
470
+ ];
471
+
472
+ type GlobusTerrainEvents = EventsHandler<GlobusTerrainEventsList>;
473
+
474
+ const GLOBUSTERRAIN_EVENTS: GlobusTerrainEventsList = [
475
+ /**
476
+ * Triggered when current elevation tile has loaded but before rendering.
477
+ * @event og.terrain.GlobusTerrain#load
478
+ */
479
+ "load",
480
+
481
+ /**
482
+ * Triggered when all elevation tiles have loaded or loading has stopped.
483
+ * @event og.terrain.GlobusTerrain#loadend
484
+ */
485
+ "loadend"
486
+ ];
487
+
488
+
489
+ export {GlobusTerrain};