@openglobus/og 0.19.3 → 0.20.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 (312) hide show
  1. package/README.md +3 -3
  2. package/css/og.css +18 -4
  3. package/lib/@openglobus/js/Clock.d.ts +106 -0
  4. package/lib/@openglobus/js/Deferred.d.ts +6 -0
  5. package/lib/@openglobus/js/Events.d.ts +90 -0
  6. package/lib/@openglobus/js/Extent.d.ts +145 -0
  7. package/lib/@openglobus/js/Globe.d.ts +134 -0
  8. package/lib/@openglobus/js/ImageCanvas.d.ts +128 -0
  9. package/lib/@openglobus/js/Lock.d.ts +15 -0
  10. package/lib/@openglobus/js/LonLat.d.ts +128 -0
  11. package/lib/@openglobus/js/Object3d.d.ts +64 -0
  12. package/lib/@openglobus/js/Popup.d.ts +46 -0
  13. package/lib/@openglobus/js/QueueArray.d.ts +16 -0
  14. package/lib/@openglobus/js/Rectangle.d.ts +76 -0
  15. package/lib/@openglobus/js/Stack.d.ts +20 -0
  16. package/lib/@openglobus/js/astro/astro.d.ts +39 -0
  17. package/lib/@openglobus/js/astro/earth.d.ts +8 -0
  18. package/lib/@openglobus/js/astro/jd.d.ts +234 -0
  19. package/lib/@openglobus/js/astro/orbit.d.ts +5 -0
  20. package/lib/@openglobus/js/astro/rotation.d.ts +2 -0
  21. package/lib/@openglobus/js/bv/Box.d.ts +32 -0
  22. package/lib/@openglobus/js/bv/Sphere.d.ts +37 -0
  23. package/lib/@openglobus/js/bv/index.d.ts +3 -0
  24. package/lib/@openglobus/js/camera/Camera.d.ts +314 -0
  25. package/lib/@openglobus/js/camera/Frustum.d.ts +139 -0
  26. package/lib/@openglobus/js/camera/PlanetCamera.d.ts +234 -0
  27. package/lib/@openglobus/js/camera/index.d.ts +3 -0
  28. package/lib/@openglobus/js/cons.d.ts +40 -0
  29. package/lib/@openglobus/js/control/Atmosphere.d.ts +16 -0
  30. package/lib/@openglobus/js/control/CompassButton.d.ts +16 -0
  31. package/lib/@openglobus/js/control/Control.d.ts +100 -0
  32. package/lib/@openglobus/js/control/DebugInfo.d.ts +25 -0
  33. package/lib/@openglobus/js/control/DrawingSwitcher.d.ts +13 -0
  34. package/lib/@openglobus/js/control/EarthCoordinates.d.ts +41 -0
  35. package/lib/@openglobus/js/control/EarthNavigation.d.ts +50 -0
  36. package/lib/@openglobus/js/control/GeoImageDragControl.d.ts +22 -0
  37. package/lib/@openglobus/js/control/KeyboardNavigation.d.ts +28 -0
  38. package/lib/@openglobus/js/control/LayerAnimation.d.ts +71 -0
  39. package/lib/@openglobus/js/control/LayerSwitcher.d.ts +36 -0
  40. package/lib/@openglobus/js/control/Lighting.d.ts +53 -0
  41. package/lib/@openglobus/js/control/MouseNavigation.d.ts +64 -0
  42. package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +44 -0
  43. package/lib/@openglobus/js/control/RulerSwitcher.d.ts +17 -0
  44. package/lib/@openglobus/js/control/ScaleControl.d.ts +24 -0
  45. package/lib/@openglobus/js/control/SegmentBoundVisualization.d.ts +12 -0
  46. package/lib/@openglobus/js/control/ShowFps.d.ts +9 -0
  47. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +25 -0
  48. package/lib/@openglobus/js/control/SimpleSkyBackground.d.ts +17 -0
  49. package/lib/@openglobus/js/control/Sun.d.ts +33 -0
  50. package/lib/@openglobus/js/control/ToggleWireframe.d.ts +14 -0
  51. package/lib/@openglobus/js/control/TouchNavigation.d.ts +52 -0
  52. package/lib/@openglobus/js/control/ZoomControl.d.ts +27 -0
  53. package/lib/@openglobus/js/control/drawing/DrawingControl.d.ts +12 -0
  54. package/lib/@openglobus/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
  55. package/lib/@openglobus/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
  56. package/lib/@openglobus/js/control/elevationProfile/ElevationProfile.d.ts +77 -0
  57. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileButtonsView.d.ts +14 -0
  58. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileControl.d.ts +33 -0
  59. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileLegend.d.ts +20 -0
  60. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileScene.d.ts +80 -0
  61. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileView.d.ts +63 -0
  62. package/lib/@openglobus/js/control/elevationProfile/PointListDialog.d.ts +12 -0
  63. package/lib/@openglobus/js/control/heightRuler/HeightRuler.d.ts +7 -0
  64. package/lib/@openglobus/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
  65. package/lib/@openglobus/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
  66. package/lib/@openglobus/js/control/index.d.ts +29 -0
  67. package/lib/@openglobus/js/control/ruler/Ruler.d.ts +13 -0
  68. package/lib/@openglobus/js/control/ruler/RulerScene.d.ts +88 -0
  69. package/lib/@openglobus/js/control/selection/Selection.d.ts +55 -0
  70. package/lib/@openglobus/js/control/selection/SelectionScene.d.ts +44 -0
  71. package/lib/@openglobus/js/control/timeline/TimelineControl.d.ts +18 -0
  72. package/lib/@openglobus/js/control/timeline/TimelineModel.d.ts +41 -0
  73. package/lib/@openglobus/js/control/timeline/TimelineView.d.ts +85 -0
  74. package/lib/@openglobus/js/control/timeline/timelineUtils.d.ts +12 -0
  75. package/lib/@openglobus/js/control/visibleExtent/drawnode.d.ts +7 -0
  76. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +193 -0
  77. package/lib/@openglobus/js/ellipsoid/index.d.ts +3 -0
  78. package/lib/@openglobus/js/ellipsoid/wgs84.d.ts +6 -0
  79. package/lib/@openglobus/js/entity/BaseBillboard.d.ts +222 -0
  80. package/lib/@openglobus/js/entity/BaseBillboardHandler.d.ts +81 -0
  81. package/lib/@openglobus/js/entity/Billboard.d.ts +113 -0
  82. package/lib/@openglobus/js/entity/BillboardHandler.d.ts +15 -0
  83. package/lib/@openglobus/js/entity/Entity.d.ts +354 -0
  84. package/lib/@openglobus/js/entity/EntityCollection.d.ts +363 -0
  85. package/lib/@openglobus/js/entity/GeoObject.d.ts +152 -0
  86. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +104 -0
  87. package/lib/@openglobus/js/entity/Geometry.d.ts +124 -0
  88. package/lib/@openglobus/js/entity/GeometryHandler.d.ts +84 -0
  89. package/lib/@openglobus/js/entity/Label.d.ts +214 -0
  90. package/lib/@openglobus/js/entity/LabelHandler.d.ts +65 -0
  91. package/lib/@openglobus/js/entity/LabelWorker.d.ts +15 -0
  92. package/lib/@openglobus/js/entity/PointCloud.d.ts +179 -0
  93. package/lib/@openglobus/js/entity/PointCloudHandler.d.ts +42 -0
  94. package/lib/@openglobus/js/entity/Polyline.d.ts +345 -0
  95. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +22 -0
  96. package/lib/@openglobus/js/entity/Ray.d.ts +133 -0
  97. package/lib/@openglobus/js/entity/RayHandler.d.ts +70 -0
  98. package/lib/@openglobus/js/entity/Strip.d.ts +139 -0
  99. package/lib/@openglobus/js/entity/StripHandler.d.ts +42 -0
  100. package/lib/@openglobus/js/entity/index.d.ts +10 -0
  101. package/lib/@openglobus/js/index.d.ts +33 -0
  102. package/lib/@openglobus/js/input/KeyboardHandler.d.ts +33 -0
  103. package/lib/@openglobus/js/input/MouseHandler.d.ts +16 -0
  104. package/lib/@openglobus/js/input/TouchHandler.d.ts +11 -0
  105. package/lib/@openglobus/js/input/input.d.ts +3 -0
  106. package/lib/@openglobus/js/layer/BaseGeoImage.d.ts +145 -0
  107. package/lib/@openglobus/js/layer/Bing.d.ts +4 -0
  108. package/lib/@openglobus/js/layer/CanvasTiles.d.ts +103 -0
  109. package/lib/@openglobus/js/layer/GeoImage.d.ts +61 -0
  110. package/lib/@openglobus/js/layer/GeoTexture2d.d.ts +17 -0
  111. package/lib/@openglobus/js/layer/GeoVideo.d.ts +68 -0
  112. package/lib/@openglobus/js/layer/KML.d.ts +72 -0
  113. package/lib/@openglobus/js/layer/Layer.d.ts +415 -0
  114. package/lib/@openglobus/js/layer/Material.d.ts +34 -0
  115. package/lib/@openglobus/js/layer/OpenStreetMap.d.ts +4 -0
  116. package/lib/@openglobus/js/layer/Vector.d.ts +246 -0
  117. package/lib/@openglobus/js/layer/WMS.d.ts +75 -0
  118. package/lib/@openglobus/js/layer/XYZ.d.ts +148 -0
  119. package/lib/@openglobus/js/layer/index.d.ts +12 -0
  120. package/lib/@openglobus/js/light/LightSource.d.ts +174 -0
  121. package/lib/@openglobus/js/math/Line2.d.ts +11 -0
  122. package/lib/@openglobus/js/math/Line3.d.ts +28 -0
  123. package/lib/@openglobus/js/math/Mat3.d.ts +77 -0
  124. package/lib/@openglobus/js/math/Mat4.d.ts +195 -0
  125. package/lib/@openglobus/js/math/Plane.d.ts +20 -0
  126. package/lib/@openglobus/js/math/Quat.d.ts +373 -0
  127. package/lib/@openglobus/js/math/Ray.d.ts +76 -0
  128. package/lib/@openglobus/js/math/Vec2.d.ts +310 -0
  129. package/lib/@openglobus/js/math/Vec3.d.ts +472 -0
  130. package/lib/@openglobus/js/math/Vec4.d.ts +163 -0
  131. package/lib/@openglobus/js/math/coder.d.ts +51 -0
  132. package/lib/@openglobus/js/math/index.d.ts +11 -0
  133. package/lib/@openglobus/js/math.d.ts +266 -0
  134. package/lib/@openglobus/js/mercator.d.ts +92 -0
  135. package/lib/@openglobus/js/proj/EPSG3857.d.ts +9 -0
  136. package/lib/@openglobus/js/proj/EPSG4326.d.ts +9 -0
  137. package/lib/@openglobus/js/proj/Proj.d.ts +43 -0
  138. package/lib/@openglobus/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
  139. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +9 -0
  140. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +54 -0
  141. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +11 -0
  142. package/lib/@openglobus/js/quadTree/Node.d.ts +80 -0
  143. package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +28 -0
  144. package/lib/@openglobus/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
  145. package/lib/@openglobus/js/quadTree/index.d.ts +12 -0
  146. package/lib/@openglobus/js/quadTree/quadTree.d.ts +40 -0
  147. package/lib/@openglobus/js/renderer/Renderer.d.ts +319 -0
  148. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +240 -0
  149. package/lib/@openglobus/js/scene/Axes.d.ts +12 -0
  150. package/lib/@openglobus/js/scene/BaseNode.d.ts +61 -0
  151. package/lib/@openglobus/js/scene/Planet.d.ts +652 -0
  152. package/lib/@openglobus/js/scene/RenderNode.d.ts +150 -0
  153. package/lib/@openglobus/js/scene/SkyBox.d.ts +13 -0
  154. package/lib/@openglobus/js/scene/index.d.ts +5 -0
  155. package/lib/@openglobus/js/segment/Segment.d.ts +288 -0
  156. package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +44 -0
  157. package/lib/@openglobus/js/segment/SegmentLonLatWgs84.d.ts +10 -0
  158. package/lib/@openglobus/js/segment/Slice.d.ts +13 -0
  159. package/lib/@openglobus/js/segment/segmentHelper.d.ts +18 -0
  160. package/lib/@openglobus/js/shaders/atmos.d.ts +4 -0
  161. package/lib/@openglobus/js/shaders/billboard.d.ts +3 -0
  162. package/lib/@openglobus/js/shaders/bloom.d.ts +2 -0
  163. package/lib/@openglobus/js/shaders/blur.d.ts +3 -0
  164. package/lib/@openglobus/js/shaders/depth.d.ts +2 -0
  165. package/lib/@openglobus/js/shaders/drawnode.d.ts +8 -0
  166. package/lib/@openglobus/js/shaders/geoObject.d.ts +3 -0
  167. package/lib/@openglobus/js/shaders/label.d.ts +4 -0
  168. package/lib/@openglobus/js/shaders/lumFilter.d.ts +2 -0
  169. package/lib/@openglobus/js/shaders/pointCloud.d.ts +2 -0
  170. package/lib/@openglobus/js/shaders/polyline.d.ts +3 -0
  171. package/lib/@openglobus/js/shaders/ray.d.ts +2 -0
  172. package/lib/@openglobus/js/shaders/screenFrame.d.ts +2 -0
  173. package/lib/@openglobus/js/shaders/skybox.d.ts +2 -0
  174. package/lib/@openglobus/js/shaders/toneMapping.d.ts +2 -0
  175. package/lib/@openglobus/js/shaders/utils.d.ts +1 -0
  176. package/lib/@openglobus/js/terrain/BilTerrain.d.ts +18 -0
  177. package/lib/@openglobus/js/terrain/EmptyTerrain.d.ts +113 -0
  178. package/lib/@openglobus/js/terrain/Geoid.d.ts +33 -0
  179. package/lib/@openglobus/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  180. package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +137 -0
  181. package/lib/{js/terrain/MapboxTerrain.d.ts → @openglobus/js/terrain/RgbTerrain.d.ts} +6 -5
  182. package/lib/@openglobus/js/terrain/index.d.ts +6 -0
  183. package/lib/@openglobus/js/ui/Button.d.ts +32 -0
  184. package/lib/@openglobus/js/ui/ButtonGroup.d.ts +16 -0
  185. package/lib/@openglobus/js/ui/Color.d.ts +22 -0
  186. package/lib/@openglobus/js/ui/Dialog.d.ts +55 -0
  187. package/lib/@openglobus/js/ui/Slider.d.ts +38 -0
  188. package/lib/@openglobus/js/ui/ToggleButton.d.ts +20 -0
  189. package/lib/@openglobus/js/ui/View.d.ts +37 -0
  190. package/lib/@openglobus/js/ui/icons.d.ts +1 -0
  191. package/lib/@openglobus/js/utils/BaseWorker.d.ts +14 -0
  192. package/lib/@openglobus/js/utils/FontAtlas.d.ts +82 -0
  193. package/lib/@openglobus/js/utils/GeoImageCreator.d.ts +34 -0
  194. package/lib/@openglobus/js/utils/ImagesCacheManager.d.ts +22 -0
  195. package/lib/@openglobus/js/utils/Loader.d.ts +63 -0
  196. package/lib/@openglobus/js/utils/NormalMapCreator.d.ts +52 -0
  197. package/lib/@openglobus/js/utils/PlainSegmentWorker.d.ts +24 -0
  198. package/lib/@openglobus/js/utils/TerrainWorker.d.ts +28 -0
  199. package/lib/@openglobus/js/utils/TextureAtlas.d.ts +113 -0
  200. package/lib/@openglobus/js/utils/VectorTileCreator.d.ts +18 -0
  201. package/lib/@openglobus/js/utils/colorTable.d.ts +3 -0
  202. package/lib/@openglobus/js/utils/earcut.d.ts +7 -0
  203. package/lib/@openglobus/js/utils/objParser.d.ts +24 -0
  204. package/lib/@openglobus/js/utils/shared.d.ts +263 -0
  205. package/lib/@openglobus/js/utils/units.d.ts +16 -0
  206. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +53 -0
  207. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +69 -0
  208. package/lib/@openglobus/js/webgl/Handler.d.ts +473 -0
  209. package/lib/@openglobus/js/webgl/Multisample.d.ts +27 -0
  210. package/lib/@openglobus/js/webgl/Program.d.ts +159 -0
  211. package/lib/@openglobus/js/webgl/ProgramController.d.ts +86 -0
  212. package/lib/@openglobus/js/webgl/index.d.ts +6 -0
  213. package/lib/@openglobus/js/webgl/types.d.ts +9 -0
  214. package/lib/@openglobus/js/webgl/variableHandlers.d.ts +22 -0
  215. package/lib/@openglobus/og.css +1 -1
  216. package/lib/@openglobus/og.esm.js +1 -1
  217. package/lib/@openglobus/og.esm.js.map +1 -1
  218. package/lib/@openglobus/og.umd.js +1 -1
  219. package/lib/@openglobus/og.umd.js.map +1 -1
  220. package/lib/js/Extent.js +2 -2
  221. package/lib/js/Globe.d.ts +1 -1
  222. package/lib/js/Object3d.d.ts +16 -1
  223. package/lib/js/Object3d.js +66 -1
  224. package/lib/js/astro/jd.js +26 -26
  225. package/lib/js/camera/Frustum.d.ts +1 -1
  226. package/lib/js/camera/Frustum.js +3 -2
  227. package/lib/js/control/DebugInfo.js +19 -18
  228. package/lib/js/control/Lighting.d.ts +4 -0
  229. package/lib/js/control/Lighting.js +51 -12
  230. package/lib/js/control/SimpleSkyBackground.d.ts +2 -0
  231. package/lib/js/control/SimpleSkyBackground.js +13 -3
  232. package/lib/js/control/drawing/PolygonDrawingScene.js +2 -2
  233. package/lib/js/control/timeline/timelineUtils.js +32 -32
  234. package/lib/js/control/visibleExtent/drawnode.js +1 -1
  235. package/lib/js/entity/GeoObject.d.ts +20 -6
  236. package/lib/js/entity/GeoObject.js +44 -4
  237. package/lib/js/entity/GeoObjectHandler.d.ts +6 -1
  238. package/lib/js/entity/GeoObjectHandler.js +58 -6
  239. package/lib/js/entity/Geometry.d.ts +24 -11
  240. package/lib/js/entity/Geometry.js +17 -9
  241. package/lib/js/entity/GeometryHandler.js +5 -5
  242. package/lib/js/entity/Label.d.ts +7 -0
  243. package/lib/js/entity/Label.js +11 -0
  244. package/lib/js/entity/Polyline.d.ts +15 -7
  245. package/lib/js/entity/Polyline.js +54 -6
  246. package/lib/js/entity/Strip.d.ts +12 -0
  247. package/lib/js/entity/Strip.js +16 -0
  248. package/lib/js/entity/StripHandler.js +1 -1
  249. package/lib/js/entity/index.d.ts +10 -11
  250. package/lib/js/entity/index.js +10 -11
  251. package/lib/js/index.d.ts +5 -5
  252. package/lib/js/index.js +5 -5
  253. package/lib/js/layer/Bing.d.ts +4 -0
  254. package/lib/js/layer/Bing.js +40 -0
  255. package/lib/js/layer/GeoImage.d.ts +1 -1
  256. package/lib/js/layer/GeoVideo.d.ts +1 -1
  257. package/lib/js/layer/Layer.d.ts +1 -1
  258. package/lib/js/layer/Layer.js +2 -2
  259. package/lib/js/layer/OpenStreetMap.d.ts +4 -0
  260. package/lib/js/layer/OpenStreetMap.js +19 -0
  261. package/lib/js/layer/Vector.d.ts +3 -0
  262. package/lib/js/layer/Vector.js +3 -3
  263. package/lib/js/layer/index.d.ts +12 -11
  264. package/lib/js/layer/index.js +12 -11
  265. package/lib/js/math/Mat4.js +18 -17
  266. package/lib/js/mercator.js +2 -1
  267. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +4 -5
  268. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +3 -0
  269. package/lib/js/quadTree/EarthQuadTreeStrategy.js +40 -5
  270. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  271. package/lib/js/quadTree/EntityCollectionNode.js +13 -14
  272. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +5 -0
  273. package/lib/js/quadTree/MarsQuadTreeStrategy.js +31 -5
  274. package/lib/js/quadTree/Node.d.ts +2 -1
  275. package/lib/js/quadTree/Node.js +38 -28
  276. package/lib/js/quadTree/QuadTreeStrategy.d.ts +3 -0
  277. package/lib/js/quadTree/QuadTreeStrategy.js +17 -0
  278. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +3 -3
  279. package/lib/js/renderer/Renderer.js +1 -0
  280. package/lib/js/scene/Axes.js +4 -4
  281. package/lib/js/scene/Planet.js +6 -4
  282. package/lib/js/segment/Segment.d.ts +12 -9
  283. package/lib/js/segment/Segment.js +47 -24
  284. package/lib/js/segment/SegmentLonLat.d.ts +1 -5
  285. package/lib/js/segment/SegmentLonLat.js +8 -100
  286. package/lib/js/segment/SegmentLonLatWgs84.js +5 -3
  287. package/lib/js/shaders/billboard.js +4 -4
  288. package/lib/js/shaders/drawnode.js +16 -19
  289. package/lib/js/shaders/geoObject.js +10 -11
  290. package/lib/js/shaders/ray.js +7 -3
  291. package/lib/js/terrain/BilTerrain.d.ts +1 -1
  292. package/lib/js/terrain/BilTerrain.js +7 -6
  293. package/lib/js/terrain/EmptyTerrain.d.ts +7 -0
  294. package/lib/js/terrain/EmptyTerrain.js +7 -0
  295. package/lib/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  296. package/lib/js/terrain/GlobusRgbTerrain.js +25 -0
  297. package/lib/js/terrain/GlobusTerrain.d.ts +5 -5
  298. package/lib/js/terrain/GlobusTerrain.js +35 -30
  299. package/lib/js/terrain/RgbTerrain.d.ts +22 -0
  300. package/lib/js/terrain/RgbTerrain.js +415 -0
  301. package/lib/js/terrain/index.d.ts +3 -2
  302. package/lib/js/terrain/index.js +3 -2
  303. package/lib/js/ui/Color.d.ts +22 -0
  304. package/lib/js/ui/Color.js +58 -0
  305. package/lib/js/utils/GeoImageCreator.js +1 -1
  306. package/lib/js/utils/NormalMapCreator.js +1 -1
  307. package/lib/js/utils/VectorTileCreator.js +3 -3
  308. package/lib/js/utils/objParser.js +3 -3
  309. package/lib/js/utils/shared.d.ts +3 -9
  310. package/lib/js/utils/shared.js +24 -9
  311. package/package.json +26 -18
  312. package/lib/js/terrain/MapboxTerrain.js +0 -298
@@ -1,14 +1,11 @@
1
1
  import * as mercator from "../mercator";
2
- import * as quadTree from "../quadTree/quadTree";
3
2
  import { EPSG4326 } from "../proj/EPSG4326";
4
3
  import { Extent } from "../Extent";
5
4
  import { Layer } from "../layer/Layer";
6
- import { Segment, TILEGROUP_NORTH, TILEGROUP_SOUTH } from "./Segment";
5
+ import { getTileCellIndex, Segment, TILEGROUP_NORTH, TILEGROUP_SOUTH } from "./Segment";
7
6
  import { LonLat } from "../LonLat";
8
- import { Vec3 } from "../math/Vec3";
9
7
  const MAX_POLE_ZOOM = 7;
10
8
  export const POLE_PIECE_SIZE = (90.0 - mercator.MAX_LAT) / Math.pow(2, MAX_POLE_ZOOM);
11
- let _tempHigh = new Vec3(), _tempLow = new Vec3();
12
9
  /**
13
10
  * Planet segment Web Mercator tile class that stored and rendered with quad tree.
14
11
  * @class
@@ -52,105 +49,29 @@ class SegmentLonLat extends Segment {
52
49
  _assignTileIndexes() {
53
50
  this._assignTileXIndexes(this._extent);
54
51
  this._assignTileYIndexes(this._extent);
55
- this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, this.tileZoom);
52
+ this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, this.tileZoom, this._tileGroup);
56
53
  }
57
54
  _assignTileXIndexes(extent) {
58
- this.tileX = Math.round(Math.abs(-180.0 - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
55
+ this.tileX = getTileCellIndex(extent.getCenter().lon, extent.getWidth(), -180);
59
56
  let p2 = 1 << this.tileZoom;
60
57
  this.tileXE = (this.tileX + 1) % p2;
61
58
  this.tileXW = (p2 + this.tileX - 1) % p2;
62
59
  }
63
60
  _assignTileYIndexes(extent) {
64
- const lat = extent.northEast.lat;
61
+ const lat = extent.getCenter().lat; //extent.northEast.lat;
65
62
  if (lat > 0) {
66
63
  this._tileGroup = TILEGROUP_NORTH;
67
- this.tileY = Math.round((90.0 - lat) / (extent.northEast.lat - extent.southWest.lat));
64
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), 90.0);
68
65
  }
69
66
  else {
70
67
  this._tileGroup = TILEGROUP_SOUTH;
71
- this.tileY = Math.round((mercator.MIN_LAT - lat) / (extent.northEast.lat - extent.southWest.lat));
68
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), mercator.MIN_LAT);
72
69
  }
73
70
  this.tileYN = this.tileY - 1;
74
71
  this.tileYS = this.tileY + 1;
75
72
  }
76
- _createPlainVertices() {
77
- const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
78
- const e = this._extent;
79
- const fgs = this.planet.terrain.plainGridSize;
80
- const lonSize = e.getWidth();
81
- const latSize = e.getHeight();
82
- const llStep = lonSize / Math.max(fgs, gridSize);
83
- const ltStep = latSize / gridSize;
84
- const esw_lon = e.southWest.lon;
85
- const ene_lat = e.northEast.lat;
86
- const dg = Math.max(fgs / gridSize, 1);
87
- const gs = Math.max(fgs, gridSize) + 1;
88
- const r2 = this.planet.ellipsoid._invRadii2;
89
- let ind = 0, nmInd = 0;
90
- const gsgs = gs * gs;
91
- const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
92
- this.plainNormals = new Float32Array(gridSize3);
93
- this.plainVertices = new Float64Array(gridSize3);
94
- this.plainVerticesHigh = new Float32Array(gridSize3);
95
- this.plainVerticesLow = new Float32Array(gridSize3);
96
- this.normalMapNormals = new Float32Array(gsgs * 3);
97
- this.normalMapVertices = new Float64Array(gsgs * 3);
98
- this.normalMapVerticesHigh = new Float32Array(gsgs * 3);
99
- this.normalMapVerticesLow = new Float32Array(gsgs * 3);
100
- let xmin = 549755748352.0, xmax = -549755748352.0, ymin = 549755748352.0, ymax = -549755748352.0, zmin = 549755748352.0, zmax = -549755748352.0;
101
- let verts = this.plainVertices, vertsHigh = this.plainVerticesHigh, vertsLow = this.plainVerticesLow, norms = this.plainNormals, nmVerts = this.normalMapVertices, nmVertsHigh = this.normalMapVerticesHigh, nmVertsLow = this.normalMapVerticesLow, nmNorms = this.normalMapNormals;
102
- for (let k = 0; k < gsgs; k++) {
103
- let j = k % gs, i = ~~(k / gs);
104
- const v = this.planet.ellipsoid.lonLatToCartesian(new LonLat(esw_lon + j * llStep, ene_lat - i * ltStep));
105
- let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
106
- let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
107
- let nxl = nx * l, nyl = ny * l, nzl = nz * l;
108
- Vec3.doubleToTwoFloats(v, _tempHigh, _tempLow);
109
- nmVerts[nmInd] = v.x;
110
- nmVertsHigh[nmInd] = _tempHigh.x;
111
- nmVertsLow[nmInd] = _tempLow.x;
112
- nmNorms[nmInd++] = nxl;
113
- nmVerts[nmInd] = v.y;
114
- nmVertsHigh[nmInd] = _tempHigh.y;
115
- nmVertsLow[nmInd] = _tempLow.y;
116
- nmNorms[nmInd++] = nyl;
117
- nmVerts[nmInd] = v.z;
118
- nmVertsHigh[nmInd] = _tempHigh.z;
119
- nmVertsLow[nmInd] = _tempLow.z;
120
- nmNorms[nmInd++] = nzl;
121
- if (i % dg === 0 && j % dg === 0) {
122
- verts[ind] = v.x;
123
- vertsHigh[ind] = _tempHigh.x;
124
- vertsLow[ind] = _tempLow.x;
125
- norms[ind++] = nxl;
126
- verts[ind] = v.y;
127
- vertsHigh[ind] = _tempHigh.y;
128
- vertsLow[ind] = _tempLow.y;
129
- norms[ind++] = nyl;
130
- verts[ind] = v.z;
131
- vertsHigh[ind] = _tempHigh.z;
132
- vertsLow[ind] = _tempLow.z;
133
- norms[ind++] = nzl;
134
- if (v.x < xmin)
135
- xmin = v.x;
136
- if (v.x > xmax)
137
- xmax = v.x;
138
- if (v.y < ymin)
139
- ymin = v.y;
140
- if (v.y > ymax)
141
- ymax = v.y;
142
- if (v.z < zmin)
143
- zmin = v.z;
144
- if (v.z > zmax)
145
- zmax = v.z;
146
- }
147
- }
148
- this.terrainVertices = verts;
149
- this.terrainVerticesHigh = vertsHigh;
150
- this.terrainVerticesLow = vertsLow;
151
- let x = (xmax - xmin) * 0.5, y = (ymax - ymin) * 0.5, z = (zmax - zmin) * 0.5;
152
- this._plainRadius = Math.sqrt(x * x + y * y + z * z);
153
- this.plainReady = true;
73
+ _projToDeg(lon, lat) {
74
+ return new LonLat(lon, lat);
154
75
  }
155
76
  _assignGlobalTextureCoordinates() {
156
77
  const e = this._extent;
@@ -197,18 +118,5 @@ class SegmentLonLat extends Segment {
197
118
  getExtentLonLat() {
198
119
  return this._extent;
199
120
  }
200
- /**
201
- * @todo: replace to the strategy
202
- */
203
- getNodeState() {
204
- let vn;
205
- if (this._isNorth) {
206
- vn = this.planet._visibleNodesNorth[this.node.nodeId];
207
- }
208
- else {
209
- vn = this.planet._visibleNodesSouth[this.node.nodeId];
210
- }
211
- return (vn && vn.state) || quadTree.NOTRENDERING;
212
- }
213
121
  }
214
122
  export { SegmentLonLat };
@@ -1,5 +1,5 @@
1
1
  import { SegmentLonLat } from "./SegmentLonLat";
2
- import { TILEGROUP_COMMON } from "./Segment";
2
+ import { getTileCellIndex, TILEGROUP_COMMON } from "./Segment";
3
3
  export class SegmentLonLatWgs84 extends SegmentLonLat {
4
4
  constructor(node, planet, tileZoom, extent) {
5
5
  super(node, planet, tileZoom, extent);
@@ -10,12 +10,14 @@ export class SegmentLonLatWgs84 extends SegmentLonLat {
10
10
  return 150;
11
11
  }
12
12
  _assignTileYIndexes(extent) {
13
- this.tileY = Math.round((90.0 - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
13
+ const lat = extent.getCenter().lat;
14
+ this.tileY = getTileCellIndex(lat, extent.getHeight(), 90.0);
14
15
  this.tileYN = this.tileY - 1;
15
16
  this.tileYS = this.tileY + 1;
16
17
  }
17
18
  _assignTileXIndexes(extent) {
18
- this.tileX = Math.round(Math.abs(-180.0 - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
19
+ let lon = extent.getCenter().lon;
20
+ this.tileX = getTileCellIndex(lon, extent.getWidth(), -180);
19
21
  let p2 = (1 << this.tileZoom) * 2;
20
22
  this.tileXE = (this.tileX + 1) % p2;
21
23
  this.tileXW = (p2 + this.tileX - 1) % p2;
@@ -68,8 +68,8 @@ export function billboardPicking() {
68
68
  return;
69
69
  }
70
70
 
71
- vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
72
- vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
71
+ //vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
72
+ //vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
73
73
 
74
74
  float scd = (1.0 - smoothstep(uScaleByDistance[0], uScaleByDistance[1], lookDist)) * (1.0 - step(uScaleByDistance[2], lookDist));
75
75
 
@@ -171,8 +171,8 @@ export function billboard_screen() {
171
171
  return;
172
172
  }
173
173
 
174
- vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
175
- vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
174
+ //vec3 up = vec3( viewMatrix[0][1], viewMatrix[1][1], viewMatrix[2][1] );
175
+ //vec3 right = vec3( viewMatrix[0][0], viewMatrix[1][0], viewMatrix[2][0] );
176
176
 
177
177
  float scd = (1.0 - smoothstep(uScaleByDistance[0], uScaleByDistance[1], lookDist)) * (1.0 - step(uScaleByDistance[2], lookDist));
178
178
 
@@ -64,7 +64,7 @@ export function drawnode_screen_nl() {
64
64
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
65
65
 
66
66
  // This is works for Mac Chrome, prevent some weird optimization I suppose
67
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
67
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
68
68
  }`,
69
69
  fragmentShader: `precision highp float;
70
70
  #define SLICE_SIZE ${SLICE_SIZE + 1}
@@ -149,14 +149,13 @@ export function drawnode_screen_wl_webgl1NoAtmos() {
149
149
 
150
150
  void main(void) {
151
151
 
152
- // I replace it here (from the bottom) because it
153
- // somehow affects on float precision on MacPC Chrome
152
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
153
+ vec3 nh = height * normalize(aVertexPosition);
154
+
154
155
  vTextureCoord.xy = aTextureCoord;
155
156
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
156
157
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
157
158
 
158
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
159
- vec3 nh = height * normalize(aVertexPosition);
160
159
  cameraPosition = eyePositionHigh + eyePositionLow;
161
160
 
162
161
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -168,7 +167,7 @@ export function drawnode_screen_wl_webgl1NoAtmos() {
168
167
  v_height = height;
169
168
  v_vertex = aVertexPosition + nh;
170
169
 
171
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
170
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
172
171
  }`,
173
172
  fragmentShader: `
174
173
  precision highp float;
@@ -330,14 +329,13 @@ export function drawnode_screen_wl_webgl2NoAtmos() {
330
329
 
331
330
  void main(void) {
332
331
 
333
- // I replace it here (from the bottom) because it
334
- // somehow affects on float precision on MacPC Chrome
332
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
333
+ vec3 nh = height * normalize(aVertexPosition);
334
+
335
335
  vTextureCoord.xy = aTextureCoord;
336
336
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
337
337
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
338
338
 
339
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
340
- vec3 nh = height * normalize(aVertexPosition);
341
339
  cameraPosition = eyePositionHigh + eyePositionLow;
342
340
 
343
341
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -349,7 +347,7 @@ export function drawnode_screen_wl_webgl2NoAtmos() {
349
347
  v_height = height;
350
348
  v_vertex = aVertexPosition + nh;
351
349
 
352
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
350
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
353
351
  }`,
354
352
  fragmentShader: `#version 300 es
355
353
 
@@ -527,14 +525,13 @@ export function drawnode_screen_wl_webgl2Atmos() {
527
525
 
528
526
  void main(void) {
529
527
 
530
- // I replace it here (from the bottom) because it
531
- // somehow affects on float precision on MacPC Chrome
528
+ vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
529
+ vec3 nh = height * normalize(aVertexPosition);
530
+
532
531
  vTextureCoord.xy = aTextureCoord;
533
532
  vGlobalTextureCoord = uGlobalTextureCoord.xy + (uGlobalTextureCoord.zw - uGlobalTextureCoord.xy) * aTextureCoord;
534
533
  vTextureCoord.zw = uNormalMapBias.z * ( aTextureCoord + uNormalMapBias.xy );
535
534
 
536
- vec3 aVertexPosition = aVertexPositionHigh + aVertexPositionLow;
537
- vec3 nh = height * normalize(aVertexPosition);
538
535
  cameraPosition = eyePositionHigh + eyePositionLow;
539
536
 
540
537
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
@@ -546,7 +543,7 @@ export function drawnode_screen_wl_webgl2Atmos() {
546
543
  v_height = height;
547
544
  v_vertex = aVertexPosition + nh;
548
545
 
549
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
546
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
550
547
  }`,
551
548
  fragmentShader: `#version 300 es
552
549
 
@@ -850,7 +847,7 @@ export function drawnode_colorPicking() {
850
847
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
851
848
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
852
849
 
853
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
850
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
854
851
  }`,
855
852
  fragmentShader: `precision highp float;
856
853
  #define SLICE_SIZE ${SLICE_SIZE + 1}
@@ -930,7 +927,7 @@ export function drawnode_heightPicking() {
930
927
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
931
928
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
932
929
 
933
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
930
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
934
931
  }`,
935
932
  fragmentShader: `precision highp float;
936
933
 
@@ -997,7 +994,7 @@ export function drawnode_depth() {
997
994
  vec3 highDiff = aVertexPositionHigh - eyePositionHigh;
998
995
  vec3 lowDiff = aVertexPositionLow - eyePositionLow + nh;
999
996
 
1000
- gl_Position = m * vec4(highDiff + lowDiff, 1.0);
997
+ gl_Position = m * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
1001
998
  }`,
1002
999
  fragmentShader: `precision highp float;
1003
1000
  uniform vec3 frustumPickingColor;
@@ -21,7 +21,7 @@ export const geo_object = () => new Program("geo_object", {
21
21
  aDirection: { type: "vec3", divisor: 1 },
22
22
  aPitchRoll: { type: "vec2", divisor: 1 },
23
23
  aColor: { type: "vec4", divisor: 1 },
24
- aScale: { type: "float", divisor: 1 },
24
+ aScale: { type: "vec3", divisor: 1 },
25
25
  aDispose: { type: "float", divisor: 1 }
26
26
  },
27
27
  vertexShader: `precision highp float;
@@ -33,7 +33,7 @@ export const geo_object = () => new Program("geo_object", {
33
33
  attribute vec3 aDirection;
34
34
  attribute vec2 aPitchRoll;
35
35
  attribute vec4 aColor;
36
- attribute float aScale;
36
+ attribute vec3 aScale;
37
37
  attribute float aDispose;
38
38
  attribute float aUseTexture;
39
39
  attribute vec2 aTexCoord;
@@ -118,14 +118,13 @@ export const geo_object = () => new Program("geo_object", {
118
118
  // ... is the same math
119
119
  float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
120
120
 
121
- vec3 vert = modelMatrix * aVertexPosition * aScale * scd;
122
- v_vertex = position + vert;
121
+ vec3 vert = modelMatrix * (aVertexPosition * aScale) * scd;
123
122
 
124
- // @hack
125
- // Mac/Safari affects on lowDiff somehow.
126
123
  vert += lowDiff;
127
124
 
128
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
125
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
126
+
127
+ v_vertex = position + vert;
129
128
  }`,
130
129
  fragmentShader: `precision highp float;
131
130
 
@@ -183,7 +182,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
183
182
  aDirection: { type: "vec3", divisor: 1 },
184
183
  aPitchRoll: { type: "vec2", divisor: 1 },
185
184
  aPickingColor: { type: "vec3", divisor: 1 },
186
- aScale: { type: "float", divisor: 1 },
185
+ aScale: { type: "vec3", divisor: 1 },
187
186
  aDispose: { type: "float", divisor: 1 }
188
187
  },
189
188
  vertexShader: `precision highp float;
@@ -194,7 +193,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
194
193
  attribute vec3 aDirection;
195
194
  attribute vec3 aPickingColor;
196
195
  attribute vec2 aPitchRoll;
197
- attribute float aScale;
196
+ attribute vec3 aScale;
198
197
  attribute float aDispose;
199
198
 
200
199
  uniform vec3 eyePositionHigh;
@@ -262,11 +261,11 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
262
261
  // tays in the vert above it affects on Mac Safari jitter
263
262
  float scd = pickingScale * uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
264
263
 
265
- vec3 vert = modelMatrix * aVertexPosition * aScale * scd;
264
+ vec3 vert = modelMatrix * (aVertexPosition * aScale) * scd;
266
265
 
267
266
  vert += lowDiff;
268
267
 
269
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
268
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
270
269
  }`,
271
270
  fragmentShader: `precision highp float;
272
271
  varying vec3 vColor;
@@ -52,8 +52,6 @@ export function rayScreen() {
52
52
  vec3 vert = right * a_thickness * focalSize * a_vertices.x;
53
53
 
54
54
  vec3 highDiff;
55
- vec3 lowDiff;
56
-
57
55
  if(a_vertices.y == 0.0){
58
56
  highDiff = a_startPosHigh - eyePositionHigh;
59
57
  vert += a_startPosLow - eyePositionLow;
@@ -65,7 +63,13 @@ export function rayScreen() {
65
63
  mat4 viewMatrixRTE = viewMatrix;
66
64
  viewMatrixRTE[3] = vec4(0.0, 0.0, 0.0, 1.0);
67
65
 
68
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + vert, 1.0);
66
+ // Hack for iMac M1, looks like it doesnt
67
+ // work correctly with zeroes in highDiff
68
+ // if(length(highDiff) < 1.0){
69
+ // highDiff = vec3(0.0);
70
+ // }
71
+
72
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + vert, 1.0);
69
73
  }`,
70
74
  fragmentShader: `precision highp float;
71
75
  varying vec4 v_rgba;
@@ -13,6 +13,6 @@ declare class BilTerrain extends GlobusTerrain {
13
13
  constructor(options?: IBilTerrainParams);
14
14
  isBlur(segment: Segment): boolean;
15
15
  protected _createUrl(segment: Segment): string;
16
- protected _createHeights(data: number[], tileIndex: string, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
16
+ protected _createHeights(data: number[], segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
17
17
  }
18
18
  export { BilTerrain };
@@ -26,7 +26,7 @@ class BilTerrain extends GlobusTerrain {
26
26
  _createUrl(segment) {
27
27
  return WMS.createRequestUrl(this.url, this._layers, this._format, "1.1.1", "GetMap", segment._projection.code, WMS.get_bbox_v1_1_1(segment.getExtent()), this._imageSize, this._imageSize);
28
28
  }
29
- _createHeights(data, tileIndex, tileX, tileY, tileZoom, extent, preventChildren) {
29
+ _createHeights(data, segment, tileGroup, tileX, tileY, tileZoom, extent, preventChildren) {
30
30
  let bil16 = new Int16Array(data);
31
31
  //
32
32
  //Non-power of two images
@@ -48,19 +48,20 @@ class BilTerrain extends GlobusTerrain {
48
48
  }
49
49
  let outCurrenElevations = new Float32Array(elevationsSize);
50
50
  extractElevationTiles(bil16, this.noDataValues, outCurrenElevations, outChildrenElevations);
51
- this._elevationCache[tileIndex] = {
51
+ let tileIndex = Layer.getTileIndex(tileX, tileY, tileZoom, tileGroup);
52
+ this.setElevationCache(tileIndex, {
52
53
  heights: outCurrenElevations,
53
54
  extent: extent
54
- };
55
+ });
55
56
  let dd = this._imageSize / this.plainGridSize;
56
57
  for (let i = 0; i < dd; i++) {
57
58
  for (let j = 0; j < dd; j++) {
58
59
  let x = tileX * 2 + j, y = tileY * 2 + i, z = tileZoom + 1;
59
- let tileIndex = Layer.getTileIndex(x, y, z);
60
- this._elevationCache[tileIndex] = {
60
+ let tileIndex = Layer.getTileIndex(x, y, z, tileGroup);
61
+ this.setElevationCache(tileIndex, {
61
62
  heights: outChildrenElevations[i][j],
62
63
  extent: getTileExtent(x, y, z)
63
- };
64
+ });
64
65
  }
65
66
  }
66
67
  return outCurrenElevations;
@@ -13,6 +13,7 @@ export interface IEmptyTerrainParams {
13
13
  geoid?: Geoid;
14
14
  gridSizeByZoom?: number[];
15
15
  }
16
+ export type UrlRewriteFunc = (tileX: number, tileY: number, tileZoom: number, tileGroup: number) => string | null | undefined;
16
17
  /**
17
18
  * Class represents terrain provider without elevation data.
18
19
  * @param {IEmptyTerrainParams} [options] - Provider options:
@@ -82,6 +83,12 @@ declare class EmptyTerrain {
82
83
  _geoid: Geoid;
83
84
  _isReady: boolean;
84
85
  constructor(options?: IEmptyTerrainParams);
86
+ /**
87
+ * Sets url rewrite callback, used for custom url rewriting for every tile loading.
88
+ * @public
89
+ * @param {UrlRewriteFunc} ur - The callback that returns tile custom created url.
90
+ */
91
+ setUrlRewriteCallback(ur: UrlRewriteFunc): void;
85
92
  get isIdle(): boolean;
86
93
  isEqual(obj: this): boolean;
87
94
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
@@ -48,6 +48,13 @@ class EmptyTerrain {
48
48
  // },
49
49
  // ];
50
50
  }
51
+ /**
52
+ * Sets url rewrite callback, used for custom url rewriting for every tile loading.
53
+ * @public
54
+ * @param {UrlRewriteFunc} ur - The callback that returns tile custom created url.
55
+ */
56
+ setUrlRewriteCallback(ur) {
57
+ }
51
58
  get isIdle() {
52
59
  return true;
53
60
  }
@@ -0,0 +1,6 @@
1
+ import { IRgbTerrainParams, RgbTerrain } from "./RgbTerrain";
2
+ import { Segment } from "../segment/Segment";
3
+ export declare class GlobusRgbTerrain extends RgbTerrain {
4
+ constructor(name?: string | null, options?: IRgbTerrainParams);
5
+ isReadyToLoad(segment: Segment): boolean;
6
+ }
@@ -0,0 +1,25 @@
1
+ import { RgbTerrain } from "./RgbTerrain";
2
+ import { TILEGROUP_NORTH, TILEGROUP_SOUTH } from "../segment/Segment";
3
+ const urlPref = {
4
+ [TILEGROUP_NORTH]: "north",
5
+ [TILEGROUP_SOUTH]: "south"
6
+ };
7
+ const urlRewriteFunc = (tileX, tileY, tileZoom, tileGroup) => {
8
+ let g = urlPref[tileGroup];
9
+ if (g)
10
+ return `https://terrain.openglobus.org/public/poles/${g}/${tileZoom}/${tileX}/${tileY}.png`;
11
+ };
12
+ export class GlobusRgbTerrain extends RgbTerrain {
13
+ constructor(name, options) {
14
+ super(name || "GlobusEarthRgb", {
15
+ maxNativeZoom: 6,
16
+ maxZoom: 17,
17
+ url: "https://{s}.terrain.openglobus.org/public/all/{z}/{x}/{y}.png",
18
+ urlRewrite: urlRewriteFunc,
19
+ ...options
20
+ });
21
+ }
22
+ isReadyToLoad(segment) {
23
+ return this._extent.overlaps(segment.getExtentLonLat());
24
+ }
25
+ }
@@ -1,6 +1,6 @@
1
1
  import { EventsHandler } from "../Events";
2
2
  import { TypedArray } from "../utils/shared";
3
- import { EmptyTerrain, IEmptyTerrainParams } from "./EmptyTerrain";
3
+ import { EmptyTerrain, IEmptyTerrainParams, UrlRewriteFunc } from "./EmptyTerrain";
4
4
  import { Extent } from "../Extent";
5
5
  import { Loader } from "../utils/Loader";
6
6
  import { LonLat } from "../LonLat";
@@ -18,7 +18,6 @@ type TileData = {
18
18
  heights: number[] | TypedArray | null;
19
19
  extent: Extent | null;
20
20
  };
21
- type UrlRewriteFunc = (segment: Segment, url: string) => string;
22
21
  /**
23
22
  * Class that loads segment elevation data, converts it to the array and passes it to the planet segment.
24
23
  * @class
@@ -66,8 +65,9 @@ declare class GlobusTerrain extends EmptyTerrain {
66
65
  get loader(): Loader<GlobusTerrain>;
67
66
  clearCache(): void;
68
67
  isBlur(segment: Segment): boolean;
68
+ setElevationCache(tileIndex: string, tileData: TileData): void;
69
+ getElevationCache(tileIndex: string): TileData | undefined;
69
70
  getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number, firstAttempt?: boolean): boolean;
70
- getTileCache(lonLat: LonLat, z: number): TileData | undefined;
71
71
  protected _getGroundHeightMerc(merc: LonLat, tileData: TileData): number;
72
72
  /**
73
73
  * Stop loading.
@@ -97,7 +97,7 @@ declare class GlobusTerrain extends EmptyTerrain {
97
97
  */
98
98
  loadTerrain(segment: Segment, forceLoading?: boolean): void;
99
99
  protected _getSubdomain(): string;
100
- _buildURL(x: number, y: number, z: number): string;
100
+ buildURL(x: number, y: number, z: number, tileGroup: number): string;
101
101
  /**
102
102
  * Creates default query url string.
103
103
  * @protected
@@ -123,7 +123,7 @@ declare class GlobusTerrain extends EmptyTerrain {
123
123
  * @public
124
124
  * @returns {Array.<number>} -
125
125
  */
126
- protected _createHeights(data: any, tileIndex?: string, x?: number, y?: number, z?: number, extent?: Extent, isMaxZoom?: boolean): TypedArray | number[];
126
+ protected _createHeights(data: any, segment?: Segment | null, tileGroup?: number, x?: number, y?: number, z?: number, extent?: Extent, isMaxZoom?: boolean): TypedArray | number[];
127
127
  /**
128
128
  * @protected
129
129
  */