@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
@@ -19,6 +19,7 @@ let BOUNDS = {
19
19
  xmin: 0.0, ymin: 0.0, zmin: 0.0,
20
20
  xmax: 0.0, ymax: 0.0, zmax: 0.0
21
21
  };
22
+ let __staticCounter = 0;
22
23
  /**
23
24
  * Quad tree planet segment node.
24
25
  * @constructor
@@ -31,13 +32,14 @@ let BOUNDS = {
31
32
  * @param {Extent} extent - Planet segment extent.
32
33
  */
33
34
  class Node {
34
- constructor(SegmentPrototype, planet, partId, parent, id, tileZoom, extent) {
35
+ constructor(SegmentPrototype, planet, partId, parent, tileZoom, extent) {
35
36
  planet._createdNodesCount++;
37
+ this.__id = __staticCounter++;
36
38
  this.SegmentPrototype = SegmentPrototype;
37
39
  this.planet = planet;
38
40
  this.parentNode = parent;
39
41
  this.partId = partId;
40
- this.nodeId = partId + id;
42
+ this.nodeId = partId + (parent ? parent.nodeId * 4 + 1 : 0);
41
43
  this.state = null;
42
44
  this.prevState = null;
43
45
  this.appliedTerrainNodeId = -1;
@@ -63,13 +65,12 @@ class Node {
63
65
  const size_y = ext.getHeight() * 0.5;
64
66
  const ne = ext.northEast;
65
67
  const sw = ext.southWest;
66
- const id = this.nodeId * 4 + 1;
67
68
  const c = new LonLat(sw.lon + size_x, sw.lat + size_y);
68
69
  const nd = this.nodes;
69
- nd[NW] = new Node(this.SegmentPrototype, p, NW, this, id, z, new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)));
70
- nd[NE] = new Node(this.SegmentPrototype, p, NE, this, id, z, new Extent(c, new LonLat(ne.lon, ne.lat)));
71
- nd[SW] = new Node(this.SegmentPrototype, p, SW, this, id, z, new Extent(new LonLat(sw.lon, sw.lat), c));
72
- nd[SE] = new Node(this.SegmentPrototype, p, SE, this, id, z, new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)));
70
+ nd[NW] = new Node(this.SegmentPrototype, p, NW, this, z, new Extent(new LonLat(sw.lon, sw.lat + size_y), new LonLat(sw.lon + size_x, ne.lat)));
71
+ nd[NE] = new Node(this.SegmentPrototype, p, NE, this, z, new Extent(c, new LonLat(ne.lon, ne.lat)));
72
+ nd[SW] = new Node(this.SegmentPrototype, p, SW, this, z, new Extent(new LonLat(sw.lon, sw.lat), c));
73
+ nd[SE] = new Node(this.SegmentPrototype, p, SE, this, z, new Extent(new LonLat(sw.lon + size_x, sw.lat), new LonLat(ne.lon, sw.lat + size_y)));
73
74
  }
74
75
  createBounds() {
75
76
  let seg = this.segment;
@@ -155,9 +156,6 @@ class Node {
155
156
  }
156
157
  this.state = WALKTHROUGH;
157
158
  this.clearNeighbors();
158
- // for (let i = 0; i < this._fadingNodes.length; i++) {
159
- // this._fadingNodes[i].neighbors && this._fadingNodes[i].clearNeighbors();
160
- // }
161
159
  let seg = this.segment, planet = this.planet;
162
160
  this._cameraInside = false;
163
161
  // Search a node which the camera is flying over.
@@ -207,7 +205,7 @@ class Node {
207
205
  let altVis = seg.tileZoom < 2 || seg.tileZoom > 19 ||
208
206
  /* Could be replaced with camera frustum always looking down check,
209
207
  and not to go througn nodes from the oppositeside of the globe*/
210
- (seg.tileZoom < 5 && !seg.terrainReady);
208
+ (seg.tileZoom < 6 && !seg.terrainReady);
211
209
  altVis = altVis ||
212
210
  cam.eye.distance2(seg._sw) < horizonDist ||
213
211
  cam.eye.distance2(seg._nw) < horizonDist ||
@@ -316,7 +314,7 @@ class Node {
316
314
  pn = pn.parentNode;
317
315
  }
318
316
  // not sure it's necessary here
319
- //this.parentNode.whileTerrainLoading();
317
+ this.parentNode.whileTerrainLoading();
320
318
  this._fadingNodes.push(this.parentNode);
321
319
  this.parentNode.segment._transitionOpacity = 2.0;
322
320
  this.parentNode.segment._transitionTimestamp = timestamp;
@@ -327,7 +325,7 @@ class Node {
327
325
  for (let i = 0; i < this.nodes.length; i++) {
328
326
  let ni = this.nodes[i];
329
327
  // not sure it's necessary here
330
- //ni.whileTerrainLoading();
328
+ ni.whileTerrainLoading();
331
329
  this._fadingNodes.push(ni);
332
330
  ni.segment._transitionOpacity = 2.0;
333
331
  ni.segment._transitionTimestamp = timestamp;
@@ -341,12 +339,14 @@ class Node {
341
339
  }
342
340
  clearNeighbors() {
343
341
  //this.sideSizeLog2[0] = this.sideSizeLog2[1] = this.sideSizeLog2[2] = this.sideSizeLog2[3] = Math.log2(this.segment.gridSize);
344
- // @ts-ignore
345
- this.neighbors[0] = this.neighbors[1] = this.neighbors[2] = this.neighbors[3] = null;
346
- this.neighbors[0] = [];
347
- this.neighbors[1] = [];
348
- this.neighbors[2] = [];
349
- this.neighbors[3] = [];
342
+ if (this.neighbors) {
343
+ // @ts-ignore
344
+ this.neighbors[0] = this.neighbors[1] = this.neighbors[2] = this.neighbors[3] = null;
345
+ this.neighbors[0] = [];
346
+ this.neighbors[1] = [];
347
+ this.neighbors[2] = [];
348
+ this.neighbors[3] = [];
349
+ }
350
350
  }
351
351
  _refreshTransitionOpacity() {
352
352
  if (this._fadingNodes.length === 0) {
@@ -358,6 +358,13 @@ class Node {
358
358
  this._fadingNodes = [];
359
359
  }
360
360
  else {
361
+ // Looks like a bug fix for suddenly empty spaces
362
+ for (let i = 0; i < this._fadingNodes.length; i++) {
363
+ if (this.segment._transitionOpacity < 1.0 && this._fadingNodes[i].segment._transitionOpacity === 0) {
364
+ this._fadingNodes[i].segment._transitionOpacity = 0;
365
+ this.segment._transitionOpacity = 1.0;
366
+ }
367
+ }
361
368
  this.segment.increaseTransitionOpacity();
362
369
  }
363
370
  }
@@ -457,23 +464,25 @@ class Node {
457
464
  else if (a_sw_lat === b_ne_lat && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
458
465
  return S;
459
466
  }
460
- else if (bs.tileX === 0 && as.tileX === Math.pow(2, as.tileZoom) - 1 && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
467
+ // World edge 180 to -180
468
+ else if (bs.tileX === 0 && b_sw_lon === -a_ne_lon && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
461
469
  return E;
462
470
  }
463
- else if (as.tileX === 0 && bs.tileX === Math.pow(2, bs.tileZoom) - 1 && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
471
+ else if (as.tileX === 0 && a_sw_lon === -b_ne_lon && ((a_ne_lat <= b_ne_lat && a_sw_lat >= b_sw_lat) || (a_ne_lat >= b_ne_lat && a_sw_lat <= b_sw_lat))) {
464
472
  return W;
465
473
  }
466
474
  }
467
- if (as._tileGroup === TILEGROUP_COMMON && bs._tileGroup === TILEGROUP_NORTH && as.tileY === 0 && bs.tileY === Math.pow(2, bs.tileZoom) - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
475
+ // @todo: replace to the default strategy
476
+ if (as._tileGroup === TILEGROUP_COMMON && bs._tileGroup === TILEGROUP_NORTH && as.tileY === 0 && bs.tileY === bs.powTileZoom /*Math.pow(2, bs.tileZoom)*/ - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
468
477
  return N;
469
478
  }
470
- else if (as._tileGroup === TILEGROUP_SOUTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === 0 && bs.tileY === Math.pow(2, bs.tileZoom) - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
471
- return N;
472
- }
473
- else if (bs._tileGroup === TILEGROUP_NORTH && as._tileGroup === TILEGROUP_COMMON && as.tileY === Math.pow(2, as.tileZoom) - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
479
+ else if (as._tileGroup === TILEGROUP_COMMON && bs._tileGroup === TILEGROUP_SOUTH && as.tileY === as.powTileZoom /*Math.pow(2, as.tileZoom)*/ - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
474
480
  return S;
475
481
  }
476
- else if (as._tileGroup === TILEGROUP_NORTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === Math.pow(2, as.tileZoom) - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
482
+ else if (as._tileGroup === TILEGROUP_SOUTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === 0 && bs.tileY === bs.powTileZoom /*Math.pow(2, bs.tileZoom)*/ - 1 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
483
+ return N;
484
+ }
485
+ else if (as._tileGroup === TILEGROUP_NORTH && bs._tileGroup === TILEGROUP_COMMON && as.tileY === as.powTileZoom /*Math.pow(2, as.tileZoom)*/ - 1 && bs.tileY === 0 && ((a_sw_lon >= b_sw_lon && a_ne_lon <= b_ne_lon) || (a_sw_lon <= b_sw_lon && a_ne_lon >= b_ne_lon))) {
477
486
  return S;
478
487
  }
479
488
  }
@@ -506,7 +515,8 @@ class Node {
506
515
  }
507
516
  }
508
517
  if (pn.segment.terrainReady && this.appliedTerrainNodeId !== pn.nodeId) {
509
- let dZ2 = 2 << (seg.tileZoom - pn.segment.tileZoom - 1), offsetX = seg.tileX - pn.segment.tileX * dZ2, offsetY = seg.tileY - pn.segment.tileY * dZ2;
518
+ let dZ2 = 2 << (seg.tileZoom - pn.segment.tileZoom - 1), // 2 * Math.pow(2, dZ-1)
519
+ offsetX = seg.tileX - pn.segment.tileX * dZ2, offsetY = seg.tileY - pn.segment.tileY * dZ2;
510
520
  const pseg = pn.segment;
511
521
  let tempVertices, tempVerticesHigh, tempVerticesLow, noDataVertices;
512
522
  this.appliedTerrainNodeId = pn.nodeId;
@@ -2,6 +2,7 @@ import { Layer } from "../layer/Layer";
2
2
  import { Node } from "../quadTree/Node";
3
3
  import { Planet } from "../scene/Planet";
4
4
  import { Proj } from "../proj/Proj";
5
+ import { LonLat } from "../LonLat";
5
6
  export declare class QuadTreeStrategy {
6
7
  name: string;
7
8
  projection: Proj;
@@ -22,4 +23,6 @@ export declare class QuadTreeStrategy {
22
23
  collectRenderNodes(): void;
23
24
  clear(): void;
24
25
  get quadTreeList(): Node[];
26
+ getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number];
27
+ getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number];
25
28
  }
@@ -1,4 +1,6 @@
1
1
  import { EPSG3857 } from "../proj/EPSG3857";
2
+ import { getTileCellExtent, getTileCellIndex, TILEGROUP_COMMON } from "../segment/Segment";
3
+ import { Extent } from "../Extent";
2
4
  export class QuadTreeStrategy {
3
5
  constructor(planet, name = "", proj = EPSG3857) {
4
6
  this.name = name;
@@ -66,4 +68,19 @@ export class QuadTreeStrategy {
66
68
  get quadTreeList() {
67
69
  return this._quadTreeList;
68
70
  }
71
+ getTileXY(lonLat, zoom) {
72
+ let z = zoom, x = -1, y = -1, pz = (1 << z);
73
+ x = getTileCellIndex(lonLat.lon, 360 / pz, -180);
74
+ y = getTileCellIndex(lonLat.lat, 180 / pz, 90);
75
+ return [x, y, z, TILEGROUP_COMMON];
76
+ }
77
+ getLonLatTileOffset(lonLat, x, y, z, gridSize) {
78
+ let coords = lonLat;
79
+ let extent = new Extent();
80
+ let worldExtent = Extent.createFromArray([-180, -90, 180, 90]);
81
+ extent = getTileCellExtent(x, y, z, worldExtent);
82
+ let sizeImgW = extent.getWidth() / (gridSize - 1), sizeImgH = extent.getHeight() / (gridSize - 1);
83
+ let i = gridSize - Math.ceil((coords.lat - extent.southWest.lat) / sizeImgH) - 1, j = Math.floor((coords.lon - extent.southWest.lon) / sizeImgW);
84
+ return [i, j];
85
+ }
69
86
  }
@@ -1,4 +1,3 @@
1
- import * as quadTree from "../quadTree/quadTree";
2
1
  import { Extent } from "../Extent";
3
2
  import { EPSG4326 } from "../proj/EPSG4326";
4
3
  import { Node } from "../quadTree/Node";
@@ -9,7 +8,8 @@ export class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
9
8
  super(planet, "wgs84", EPSG4326);
10
9
  }
11
10
  init() {
12
- let wgs84QuadTree = new Node(SegmentLonLatWgs84, this.planet, quadTree.NW, null, 0, 0, Extent.createFromArray([-180, -90, 180, 90]));
13
- this._quadTreeList.push(wgs84QuadTree);
11
+ this._quadTreeList = [
12
+ new Node(SegmentLonLatWgs84, this.planet, 0, null, 0, Extent.createFromArray([-180, -90, 180, 90]))
13
+ ];
14
14
  }
15
15
  }
@@ -954,6 +954,7 @@ class Renderer {
954
954
  //this.geoObjectsTextureAtlas.clear()
955
955
  //this.fontAtlas.clear();
956
956
  this._entityCollections = [];
957
+ this.handler.ONCANVASRESIZE = null;
957
958
  this.handler.destroy();
958
959
  // @ts-ignore
959
960
  this.handler = null;
@@ -43,13 +43,13 @@ class Axes extends RenderNode {
43
43
  }
44
44
  createAxesBuffer(gridSize) {
45
45
  const vertices = [
46
- 0.0, 0.0, 0.0, gridSize - 1, 0.0, 0.0,
47
- 0.0, 0.0, 0.0, 0.0, gridSize - 1, 0.0,
46
+ 0.0, 0.0, 0.0, gridSize - 1, 0.0, 0.0, // x - R
47
+ 0.0, 0.0, 0.0, 0.0, gridSize - 1, 0.0, // y - B
48
48
  0.0, 0.0, 0.0, 0.0, 0.0, gridSize - 1 // z - G
49
49
  ];
50
50
  const colors = [
51
- 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0,
52
- 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0,
51
+ 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // x - R
52
+ 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, // y - B
53
53
  0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 // z - G
54
54
  ];
55
55
  this.axesBuffer = this.renderer.handler.createArrayBuffer(new Float32Array(vertices), 3, 6);
@@ -63,8 +63,8 @@ export class Planet extends RenderNode {
63
63
  let isEq = this.terrain.equalizeVertices;
64
64
  for (let j = 0, len = currentNode._fadingNodes.length; j < len; j++) {
65
65
  let f = currentNode._fadingNodes[j].segment;
66
- if (this._fadingNodes.has(currentNode._fadingNodes[0].nodeId) && !nodes.has(f.node.nodeId)) {
67
- nodes.set(f.node.nodeId, true);
66
+ if (this._fadingNodes.has(currentNode._fadingNodes[0].__id) && !nodes.has(f.node.__id)) {
67
+ nodes.set(f.node.__id, true);
68
68
  if (f._transitionOpacity < 1.0) {
69
69
  outTransparentSegments.push(f);
70
70
  }
@@ -88,8 +88,8 @@ export class Planet extends RenderNode {
88
88
  gl.disable(gl.DEPTH_TEST);
89
89
  for (let j = 0, len = currentNode._fadingNodes.length; j < len; j++) {
90
90
  let f = currentNode._fadingNodes[j].segment;
91
- if (this._fadingNodes.has(currentNode._fadingNodes[0].nodeId) && !nodes.has(f.node.nodeId)) {
92
- nodes.set(f.node.nodeId, true);
91
+ if (this._fadingNodes.has(currentNode._fadingNodes[0].__id) && !nodes.has(f.node.__id)) {
92
+ nodes.set(f.node.__id, true);
93
93
  if (isFirstPass) {
94
94
  isEq && f.equalize();
95
95
  f.readyToEngage && f.engage();
@@ -803,6 +803,7 @@ export class Planet extends RenderNode {
803
803
  ri._collectFadingNodes();
804
804
  ri._refreshTransitionOpacity();
805
805
  if (ri.segment._transitionOpacity >= 1.0) {
806
+ ri.clearNeighbors();
806
807
  ri.getRenderedNodesNeighbors(opaqueNodes);
807
808
  opaqueNodes.push(ri);
808
809
  }
@@ -810,6 +811,7 @@ export class Planet extends RenderNode {
810
811
  for (let j = 0; j < ri._fadingNodes.length; j++) {
811
812
  let rij = ri._fadingNodes[j];
812
813
  if (rij.segment && rij.segment._transitionOpacity >= 1.0) {
814
+ rij.clearNeighbors();
813
815
  rij.getRenderedNodesNeighbors(opaqueNodes);
814
816
  opaqueNodes.push(rij);
815
817
  }
@@ -16,9 +16,12 @@ import { NumberArray6, Sphere } from "../bv/Sphere";
16
16
  import { Slice } from "./Slice";
17
17
  import { Vec3 } from "../math/Vec3";
18
18
  import { IPlainSegmentWorkerData } from "../utils/PlainSegmentWorker";
19
+ export declare function getTileCellIndex(coordinate: number, tileSize: number, worldEdge: number): number;
20
+ export declare function getTileCellExtent(x: number, y: number, z: number, worldExtent: Extent): Extent;
19
21
  export declare const TILEGROUP_COMMON = 0;
20
- export declare const TILEGROUP_NORTH = 1;
21
- export declare const TILEGROUP_SOUTH = 2;
22
+ export declare const TILEGROUP_NORTH = 20;
23
+ export declare const TILEGROUP_SOUTH = 300;
24
+ export declare function getTileGroupByLat(lat: number, maxLat?: number): number;
22
25
  /**
23
26
  * Planet segment Web Mercator tile class that stored and rendered with a quad-tree.
24
27
  * @class
@@ -32,6 +35,7 @@ declare class Segment {
32
35
  isPole: boolean;
33
36
  _tileGroup: number;
34
37
  _projection: Proj;
38
+ elevationData: TypedArray | null;
35
39
  /**
36
40
  * Quad tree node of the segment.
37
41
  * @type {Node}
@@ -81,6 +85,11 @@ declare class Segment {
81
85
  * @type {number}
82
86
  */
83
87
  tileZoom: number;
88
+ /**
89
+ * Equals to pow(2, tileZoom).
90
+ * @type {number}
91
+ */
92
+ powTileZoom: number;
84
93
  /**
85
94
  * Horizontal tile index.
86
95
  * @type {number}
@@ -243,6 +252,7 @@ declare class Segment {
243
252
  createPlainSegmentAsync(): void;
244
253
  _plainSegmentWorkerCallback(data: IPlainSegmentWorkerData): void;
245
254
  createPlainSegment(): void;
255
+ protected _projToDeg(lon: number, lat: number): LonLat;
246
256
  protected _createPlainVertices(): void;
247
257
  /**
248
258
  * Gets specific layer material.
@@ -267,19 +277,12 @@ declare class Segment {
267
277
  colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
268
278
  depthRendering(sh: Program, layerSlice: Layer[]): void;
269
279
  protected _getIndexBuffer(): WebGLBufferExt;
270
- /**
271
- * @todo: replace to the strategy
272
- */
273
280
  _collectVisibleNodes(): void;
274
281
  layerOverlap(layer: Layer): boolean;
275
282
  getDefaultTexture(): WebGLTextureExt | null;
276
283
  getExtentLonLat(): Extent;
277
284
  getExtentMerc(): Extent;
278
285
  getExtent(): Extent;
279
- /**
280
- * @todo replace to the strategy
281
- */
282
- getNodeState(): number;
283
286
  getNeighborSide(b: Segment): 0 | 1 | 2 | 3 | -1;
284
287
  }
285
288
  export { Segment };
@@ -3,7 +3,7 @@ import * as segmentHelper from "../segment/segmentHelper";
3
3
  import { Box } from "../bv/Box";
4
4
  import { Extent } from "../Extent";
5
5
  import { EPSG3857 } from "../proj/EPSG3857";
6
- import { E, N, NOTRENDERING, OPSIDE, S, W } from "../quadTree/quadTree";
6
+ import { E, N, OPSIDE, S, W } from "../quadTree/quadTree";
7
7
  import { getMatrixSubArray64 } from "../utils/shared";
8
8
  import { Layer } from "../layer/Layer";
9
9
  import { LonLat } from "../LonLat";
@@ -11,9 +11,30 @@ import { Sphere } from "../bv/Sphere";
11
11
  import { Slice } from "./Slice";
12
12
  import { Ray } from "../math/Ray";
13
13
  import { Vec3 } from "../math/Vec3";
14
+ import { MAX_LAT } from "../mercator";
15
+ //Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
16
+ export function getTileCellIndex(coordinate, tileSize, worldEdge) {
17
+ return Math.floor(Math.abs(worldEdge - coordinate) / tileSize);
18
+ }
19
+ export function getTileCellExtent(x, y, z, worldExtent) {
20
+ let pz = 1.0 / (1 << z);
21
+ let worldWidth = worldExtent.getWidth(), worldHeight = worldExtent.getHeight();
22
+ let w = worldWidth * pz, h = worldHeight * pz;
23
+ let sw_lon = worldExtent.southWest.lon + x * w, ne_lat = worldExtent.northEast.lat - y * h;
24
+ return new Extent(new LonLat(sw_lon, ne_lat - h), new LonLat(sw_lon + w, ne_lat));
25
+ }
14
26
  export const TILEGROUP_COMMON = 0;
15
- export const TILEGROUP_NORTH = 1;
16
- export const TILEGROUP_SOUTH = 2;
27
+ export const TILEGROUP_NORTH = 20;
28
+ export const TILEGROUP_SOUTH = 300;
29
+ export function getTileGroupByLat(lat, maxLat = MAX_LAT) {
30
+ if (lat > maxLat) {
31
+ return TILEGROUP_NORTH;
32
+ }
33
+ else if (lat < -maxLat) {
34
+ return TILEGROUP_SOUTH;
35
+ }
36
+ return TILEGROUP_COMMON;
37
+ }
17
38
  let _tempHigh = new Vec3();
18
39
  let _tempLow = new Vec3();
19
40
  let _v0 = new Vec3(), _v1 = new Vec3(), _v2 = new Vec3(), _v3 = new Vec3();
@@ -57,6 +78,7 @@ class Segment {
57
78
  this.gridSize = planet.terrain.gridSizeByZoom[tileZoom];
58
79
  this.fileGridSize = 0;
59
80
  this.tileZoom = tileZoom;
81
+ this.powTileZoom = 1 << tileZoom; //Math.pow(2, tileZoom);
60
82
  this.tileX = 0;
61
83
  this.tileXE = 0;
62
84
  this.tileXW = 0;
@@ -64,6 +86,7 @@ class Segment {
64
86
  this.tileYS = 0;
65
87
  this.tileY = 0;
66
88
  this.tileIndex = "";
89
+ this.elevationData = null;
67
90
  this._assignTileIndexes();
68
91
  /**
69
92
  * @toso: Check it should be Map<number, Material> instead of array
@@ -221,6 +244,8 @@ class Segment {
221
244
  if (this.plainReady && this.terrainIsLoading) {
222
245
  let _elevations = new Float32Array(elevations.length);
223
246
  _elevations.set(elevations);
247
+ this.elevationData = new Float32Array(elevations.length);
248
+ this.elevationData.set(elevations);
224
249
  this.planet._terrainWorker.make({ segment: this, elevations: _elevations });
225
250
  this.plainVerticesHigh = null;
226
251
  this.plainVerticesLow = null;
@@ -284,7 +309,7 @@ class Segment {
284
309
  }
285
310
  equalize() {
286
311
  // Equalization doesnt work correctly for gridSize equals 2
287
- if (this.gridSize < 2) {
312
+ if (this.tileZoom < 2 || this.gridSize < 2) {
288
313
  return;
289
314
  }
290
315
  this.readyToEngage = true;
@@ -772,14 +797,16 @@ class Segment {
772
797
  const tileZoom = this.tileZoom;
773
798
  const extent = this._extent;
774
799
  const pole = mercator.POLE;
775
- this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
776
- this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
777
- const p2 = Math.pow(2, tileZoom);
800
+ // this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
801
+ // this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
802
+ this.tileX = getTileCellIndex(extent.getCenter().lon, extent.getWidth(), -pole);
803
+ this.tileY = getTileCellIndex(extent.getCenter().lat, extent.getHeight(), pole);
804
+ const p2 = this.powTileZoom; //Math.pow(2, tileZoom);
778
805
  this.tileXE = (this.tileX + 1) % p2;
779
806
  this.tileXW = (p2 + this.tileX - 1) % p2;
780
807
  this.tileYN = this.tileY - 1;
781
808
  this.tileYS = this.tileY + 1;
782
- this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom);
809
+ this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom, this._tileGroup);
783
810
  }
784
811
  initialize() {
785
812
  const p = this.planet;
@@ -836,16 +863,22 @@ class Segment {
836
863
  this._createPlainVertices();
837
864
  this.readyToEngage = true;
838
865
  }
866
+ _projToDeg(lon, lat) {
867
+ return LonLat.inverseMercator(lon, lat);
868
+ }
839
869
  _createPlainVertices() {
840
870
  const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
841
- const e = this._extent;
842
871
  const fgs = this.planet.terrain.plainGridSize;
872
+ const currGridSize = Math.max(fgs, gridSize);
873
+ const e = this._extent;
843
874
  const lonSize = e.getWidth();
844
- const llStep = lonSize / Math.max(fgs, gridSize);
875
+ const latSize = e.getHeight();
876
+ const llStep = lonSize / currGridSize;
877
+ const ltStep = latSize / currGridSize;
845
878
  const esw_lon = e.southWest.lon;
846
879
  const ene_lat = e.northEast.lat;
847
880
  const dg = Math.max(fgs / gridSize, 1);
848
- const gs = Math.max(fgs, gridSize) + 1;
881
+ const gs = currGridSize + 1;
849
882
  const r2 = this.planet.ellipsoid._invRadii2;
850
883
  const gsgs = gs * gs;
851
884
  const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
@@ -861,7 +894,7 @@ class Segment {
861
894
  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;
862
895
  for (let k = 0; k < gsgs; k++) {
863
896
  let j = k % gs, i = ~~(k / gs);
864
- let v = this.planet.ellipsoid.lonLatToCartesian(LonLat.inverseMercator(esw_lon + j * llStep, ene_lat - i * llStep));
897
+ let v = this.planet.ellipsoid.lonLatToCartesian(this._projToDeg(esw_lon + j * llStep, ene_lat - i * ltStep));
865
898
  let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
866
899
  let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
867
900
  let nxl = nx * l, nyl = ny * l, nzl = nz * l;
@@ -1040,8 +1073,8 @@ class Segment {
1040
1073
  while (i--) {
1041
1074
  let n = this.node._fadingNodes[i];
1042
1075
  if (n.segment) {
1043
- if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.nodeId)) {
1044
- this.planet._fadingNodes.set(n.nodeId, n);
1076
+ if (n.segment._transitionOpacity > 0 && !this.planet._fadingNodes.has(n.__id)) {
1077
+ this.planet._fadingNodes.set(n.__id, n);
1045
1078
  n.segment._transitionOpacity = 2.0 - this._transitionOpacity;
1046
1079
  if (n.segment._transitionOpacity === 0) {
1047
1080
  this.node._fadingNodes.splice(i, 1);
@@ -1141,9 +1174,6 @@ class Segment {
1141
1174
  }
1142
1175
  return cache.buffer;
1143
1176
  }
1144
- /**
1145
- * @todo: replace to the strategy
1146
- */
1147
1177
  _collectVisibleNodes() {
1148
1178
  this.planet._visibleNodes[this.node.nodeId] = this.node;
1149
1179
  }
@@ -1162,13 +1192,6 @@ class Segment {
1162
1192
  getExtent() {
1163
1193
  return this._extent;
1164
1194
  }
1165
- /**
1166
- * @todo replace to the strategy
1167
- */
1168
- getNodeState() {
1169
- let vn = this.planet._visibleNodes[this.node.nodeId];
1170
- return (vn && vn.state) || NOTRENDERING;
1171
- }
1172
1195
  getNeighborSide(b) {
1173
1196
  if (this.tileY === b.tileY) {
1174
1197
  if (this.tileX === b.tileXE) {
@@ -23,7 +23,7 @@ declare class SegmentLonLat extends Segment {
23
23
  protected _assignTileIndexes(): void;
24
24
  protected _assignTileXIndexes(extent: Extent): void;
25
25
  protected _assignTileYIndexes(extent: Extent): void;
26
- protected _createPlainVertices(): void;
26
+ protected _projToDeg(lon: number, lat: number): LonLat;
27
27
  protected _assignGlobalTextureCoordinates(): void;
28
28
  /**
29
29
  * @todo: replace to the strategy
@@ -40,9 +40,5 @@ declare class SegmentLonLat extends Segment {
40
40
  layerOverlap(layer: Layer): boolean;
41
41
  getDefaultTexture(): WebGLTextureExt | null;
42
42
  getExtentLonLat(): Extent;
43
- /**
44
- * @todo: replace to the strategy
45
- */
46
- getNodeState(): number;
47
43
  }
48
44
  export { SegmentLonLat };