@openglobus/og 0.17.2 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (845) hide show
  1. package/README.md +76 -47
  2. package/lib/@openglobus/og.esm.js +2 -0
  3. package/lib/@openglobus/og.esm.js.map +1 -0
  4. package/lib/@openglobus/og.umd.js +2 -0
  5. package/lib/@openglobus/og.umd.js.map +1 -0
  6. package/lib/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/lib/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/lib/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/lib/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/lib/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/lib/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/lib/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/lib/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/lib/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/lib/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/lib/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/lib/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/lib/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/lib/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/lib/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/lib/@openglobus/res/fonts/arial.json +4321 -0
  22. package/lib/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/lib/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/lib/@openglobus/res/night-4326.png +0 -0
  25. package/lib/@openglobus/res/night.png +0 -0
  26. package/lib/@openglobus/res/spec.png +0 -0
  27. package/lib/js/Clock.d.ts +106 -0
  28. package/lib/js/Clock.js +141 -0
  29. package/lib/js/Deferred.d.ts +6 -0
  30. package/lib/js/Deferred.js +13 -0
  31. package/lib/js/Events.d.ts +90 -0
  32. package/lib/js/Events.js +145 -0
  33. package/lib/js/Extent.d.ts +145 -0
  34. package/lib/js/Extent.js +278 -0
  35. package/lib/js/Globe.d.ts +132 -0
  36. package/lib/js/Globe.js +265 -0
  37. package/lib/js/ImageCanvas.d.ts +128 -0
  38. package/lib/js/ImageCanvas.js +203 -0
  39. package/lib/js/Lock.d.ts +15 -0
  40. package/lib/js/Lock.js +27 -0
  41. package/lib/js/LonLat.d.ts +128 -0
  42. package/lib/js/LonLat.js +192 -0
  43. package/lib/js/Object3d.d.ts +49 -0
  44. package/lib/js/Object3d.js +309 -0
  45. package/lib/js/Popup.d.ts +46 -0
  46. package/lib/js/Popup.js +160 -0
  47. package/lib/js/QueueArray.d.ts +16 -0
  48. package/lib/js/QueueArray.js +63 -0
  49. package/lib/js/Rectangle.d.ts +76 -0
  50. package/lib/js/Rectangle.js +77 -0
  51. package/lib/js/Stack.d.ts +20 -0
  52. package/lib/js/Stack.js +42 -0
  53. package/lib/js/astro/astro.d.ts +39 -0
  54. package/lib/js/astro/astro.js +43 -0
  55. package/lib/js/astro/earth.d.ts +8 -0
  56. package/lib/js/astro/earth.js +75 -0
  57. package/lib/js/astro/jd.d.ts +234 -0
  58. package/lib/js/astro/jd.js +416 -0
  59. package/lib/js/astro/orbit.d.ts +5 -0
  60. package/lib/js/astro/orbit.js +104 -0
  61. package/lib/js/astro/rotation.d.ts +2 -0
  62. package/lib/js/astro/rotation.js +25 -0
  63. package/lib/js/bv/Box.d.ts +32 -0
  64. package/lib/js/bv/Box.js +53 -0
  65. package/lib/js/bv/Sphere.d.ts +37 -0
  66. package/lib/js/bv/Sphere.js +31 -0
  67. package/lib/js/bv/index.d.ts +3 -0
  68. package/lib/js/bv/index.js +3 -0
  69. package/lib/js/camera/Camera.d.ts +314 -0
  70. package/lib/js/camera/Camera.js +453 -0
  71. package/lib/js/camera/Frustum.d.ts +139 -0
  72. package/lib/js/camera/Frustum.js +238 -0
  73. package/lib/js/camera/PlanetCamera.d.ts +234 -0
  74. package/lib/js/camera/PlanetCamera.js +465 -0
  75. package/lib/js/camera/index.d.ts +3 -0
  76. package/lib/js/camera/index.js +3 -0
  77. package/lib/js/cons.d.ts +40 -0
  78. package/lib/js/cons.js +92 -0
  79. package/lib/js/control/Atmosphere.d.ts +16 -0
  80. package/lib/js/control/Atmosphere.js +334 -0
  81. package/lib/js/control/CompassButton.d.ts +16 -0
  82. package/lib/js/control/CompassButton.js +118 -0
  83. package/lib/js/control/Control.d.ts +100 -0
  84. package/lib/js/control/Control.js +137 -0
  85. package/lib/js/control/DebugInfo.d.ts +25 -0
  86. package/lib/js/control/DebugInfo.js +281 -0
  87. package/lib/js/control/DrawingSwitcher.d.ts +13 -0
  88. package/lib/js/control/DrawingSwitcher.js +94 -0
  89. package/lib/js/control/EarthCoordinates.d.ts +41 -0
  90. package/lib/js/control/EarthCoordinates.js +161 -0
  91. package/lib/js/control/EarthNavigation.d.ts +50 -0
  92. package/lib/js/control/EarthNavigation.js +202 -0
  93. package/lib/js/control/GeoImageDragControl.d.ts +22 -0
  94. package/lib/js/control/GeoImageDragControl.js +102 -0
  95. package/lib/js/control/KeyboardNavigation.d.ts +28 -0
  96. package/lib/js/control/KeyboardNavigation.js +143 -0
  97. package/lib/js/control/LayerAnimation.d.ts +71 -0
  98. package/lib/js/control/LayerAnimation.js +283 -0
  99. package/lib/js/control/LayerSwitcher.d.ts +21 -0
  100. package/lib/js/control/LayerSwitcher.js +51 -0
  101. package/lib/js/control/Lighting.d.ts +49 -0
  102. package/lib/js/control/Lighting.js +412 -0
  103. package/lib/js/control/MouseNavigation.d.ts +62 -0
  104. package/lib/js/control/MouseNavigation.js +362 -0
  105. package/lib/js/control/MouseWheelZoomControl.d.ts +44 -0
  106. package/lib/js/control/MouseWheelZoomControl.js +181 -0
  107. package/lib/js/control/RulerSwitcher.d.ts +17 -0
  108. package/lib/js/control/RulerSwitcher.js +57 -0
  109. package/lib/js/control/ScaleControl.d.ts +24 -0
  110. package/lib/js/control/ScaleControl.js +91 -0
  111. package/lib/js/control/SegmentBoundVisualization.d.ts +12 -0
  112. package/lib/js/control/SegmentBoundVisualization.js +37 -0
  113. package/lib/js/control/ShowFps.d.ts +9 -0
  114. package/lib/js/control/ShowFps.js +20 -0
  115. package/lib/js/control/SimpleNavigation.d.ts +25 -0
  116. package/lib/js/control/SimpleNavigation.js +96 -0
  117. package/lib/js/control/SimpleSkyBackground.d.ts +15 -0
  118. package/lib/js/control/SimpleSkyBackground.js +177 -0
  119. package/lib/js/control/Sun.d.ts +33 -0
  120. package/lib/js/control/Sun.js +117 -0
  121. package/lib/js/control/ToggleWireframe.d.ts +14 -0
  122. package/lib/js/control/ToggleWireframe.js +28 -0
  123. package/lib/js/control/TouchNavigation.d.ts +52 -0
  124. package/lib/js/control/TouchNavigation.js +263 -0
  125. package/lib/js/control/ZoomControl.d.ts +27 -0
  126. package/lib/js/control/ZoomControl.js +86 -0
  127. package/lib/js/control/drawing/DrawingControl.d.ts +12 -0
  128. package/lib/js/control/drawing/DrawingControl.js +35 -0
  129. package/lib/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
  130. package/lib/js/control/drawing/LineStringDrawingScene.js +139 -0
  131. package/lib/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
  132. package/lib/js/control/drawing/PolygonDrawingScene.js +534 -0
  133. package/lib/js/control/elevationProfile/ElevationProfile.d.ts +61 -0
  134. package/lib/js/control/elevationProfile/ElevationProfile.js +217 -0
  135. package/lib/js/control/heightRuler/HeightRuler.d.ts +7 -0
  136. package/lib/js/control/heightRuler/HeightRuler.js +11 -0
  137. package/lib/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
  138. package/lib/js/control/heightRuler/HeightRulerScene.js +181 -0
  139. package/lib/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
  140. package/lib/js/control/heightRuler/HeightRulerSwitcher.js +13 -0
  141. package/lib/js/control/index.d.ts +28 -0
  142. package/lib/js/control/index.js +28 -0
  143. package/lib/js/control/ruler/Ruler.d.ts +13 -0
  144. package/lib/js/control/ruler/Ruler.js +23 -0
  145. package/lib/js/control/ruler/RulerScene.d.ts +88 -0
  146. package/lib/js/control/ruler/RulerScene.js +324 -0
  147. package/lib/js/control/selection/Selection.d.ts +55 -0
  148. package/lib/js/control/selection/Selection.js +78 -0
  149. package/lib/js/control/selection/SelectionScene.d.ts +44 -0
  150. package/lib/js/control/selection/SelectionScene.js +272 -0
  151. package/lib/js/control/timeline/TimelineControl.d.ts +18 -0
  152. package/lib/js/control/timeline/TimelineControl.js +79 -0
  153. package/lib/js/control/timeline/TimelineModel.d.ts +41 -0
  154. package/lib/js/control/timeline/TimelineModel.js +104 -0
  155. package/lib/js/control/timeline/TimelineView.d.ts +85 -0
  156. package/lib/js/control/timeline/TimelineView.js +363 -0
  157. package/lib/js/control/timeline/timelineUtils.d.ts +12 -0
  158. package/lib/js/control/timeline/timelineUtils.js +112 -0
  159. package/lib/js/control/visibleExtent/Segment.d.ts +277 -0
  160. package/lib/js/control/visibleExtent/Segment.js +1301 -0
  161. package/lib/js/control/visibleExtent/VisibleExtent.d.ts +5 -0
  162. package/lib/js/control/visibleExtent/VisibleExtent.js +56 -0
  163. package/lib/js/control/visibleExtent/drawnode.d.ts +7 -0
  164. package/lib/js/control/visibleExtent/drawnode.js +718 -0
  165. package/lib/js/ellipsoid/Ellipsoid.d.ts +187 -0
  166. package/lib/js/ellipsoid/Ellipsoid.js +434 -0
  167. package/lib/js/ellipsoid/index.d.ts +3 -0
  168. package/lib/js/ellipsoid/index.js +3 -0
  169. package/lib/js/ellipsoid/wgs84.d.ts +6 -0
  170. package/lib/js/ellipsoid/wgs84.js +6 -0
  171. package/lib/js/entity/BaseBillboard.d.ts +222 -0
  172. package/lib/js/entity/BaseBillboard.js +284 -0
  173. package/lib/js/entity/BaseBillboardHandler.d.ts +81 -0
  174. package/lib/js/entity/BaseBillboardHandler.js +546 -0
  175. package/lib/js/entity/Billboard.d.ts +113 -0
  176. package/lib/js/entity/Billboard.js +127 -0
  177. package/lib/js/entity/BillboardHandler.d.ts +15 -0
  178. package/lib/js/entity/BillboardHandler.js +103 -0
  179. package/lib/js/entity/Entity.d.ts +354 -0
  180. package/lib/js/entity/Entity.js +515 -0
  181. package/lib/js/entity/EntityCollection.d.ts +364 -0
  182. package/lib/js/entity/EntityCollection.js +621 -0
  183. package/lib/js/entity/GeoObject.d.ts +138 -0
  184. package/lib/js/entity/GeoObject.js +194 -0
  185. package/lib/js/entity/GeoObjectHandler.d.ts +99 -0
  186. package/lib/js/entity/GeoObjectHandler.js +558 -0
  187. package/lib/js/entity/Geometry.d.ts +111 -0
  188. package/lib/js/entity/Geometry.js +283 -0
  189. package/lib/js/entity/GeometryHandler.d.ts +84 -0
  190. package/lib/js/entity/GeometryHandler.js +687 -0
  191. package/lib/js/entity/Label.d.ts +207 -0
  192. package/lib/js/entity/Label.js +291 -0
  193. package/lib/js/entity/LabelHandler.d.ts +65 -0
  194. package/lib/js/entity/LabelHandler.js +696 -0
  195. package/lib/js/entity/LabelWorker.d.ts +15 -0
  196. package/lib/js/entity/LabelWorker.js +163 -0
  197. package/lib/js/entity/PointCloud.d.ts +179 -0
  198. package/lib/js/entity/PointCloud.js +327 -0
  199. package/lib/js/entity/PointCloudHandler.d.ts +42 -0
  200. package/lib/js/entity/PointCloudHandler.js +82 -0
  201. package/lib/js/entity/Polyline.d.ts +337 -0
  202. package/lib/js/entity/Polyline.js +1546 -0
  203. package/lib/js/entity/PolylineHandler.d.ts +22 -0
  204. package/lib/js/entity/PolylineHandler.js +78 -0
  205. package/lib/js/entity/Ray.d.ts +133 -0
  206. package/lib/js/entity/Ray.js +171 -0
  207. package/lib/js/entity/RayHandler.d.ts +70 -0
  208. package/lib/js/entity/RayHandler.js +496 -0
  209. package/lib/js/entity/Strip.d.ts +127 -0
  210. package/lib/js/entity/Strip.js +401 -0
  211. package/lib/js/entity/StripHandler.d.ts +42 -0
  212. package/lib/js/entity/StripHandler.js +110 -0
  213. package/lib/js/entity/index.d.ts +11 -0
  214. package/lib/js/entity/index.js +11 -0
  215. package/lib/js/index.d.ts +33 -0
  216. package/lib/js/index.js +33 -0
  217. package/lib/js/input/KeyboardHandler.d.ts +33 -0
  218. package/lib/js/input/KeyboardHandler.js +157 -0
  219. package/lib/js/input/MouseHandler.d.ts +16 -0
  220. package/lib/js/input/MouseHandler.js +81 -0
  221. package/lib/js/input/TouchHandler.d.ts +11 -0
  222. package/lib/js/input/TouchHandler.js +42 -0
  223. package/lib/js/input/input.d.ts +3 -0
  224. package/lib/js/input/input.js +42 -0
  225. package/lib/js/layer/BaseGeoImage.d.ts +145 -0
  226. package/lib/js/layer/BaseGeoImage.js +382 -0
  227. package/lib/js/layer/CanvasTiles.d.ts +103 -0
  228. package/lib/js/layer/CanvasTiles.js +302 -0
  229. package/lib/js/layer/GeoImage.d.ts +61 -0
  230. package/lib/js/layer/GeoImage.js +130 -0
  231. package/lib/js/layer/GeoTexture2d.d.ts +17 -0
  232. package/lib/js/layer/GeoTexture2d.js +37 -0
  233. package/lib/js/layer/GeoVideo.d.ts +68 -0
  234. package/lib/js/layer/GeoVideo.js +157 -0
  235. package/lib/js/layer/KML.d.ts +72 -0
  236. package/lib/js/layer/KML.js +303 -0
  237. package/lib/js/layer/Layer.d.ts +401 -0
  238. package/lib/js/layer/Layer.js +732 -0
  239. package/lib/js/layer/Material.d.ts +34 -0
  240. package/lib/js/layer/Material.js +69 -0
  241. package/lib/js/layer/Vector.d.ts +244 -0
  242. package/lib/js/layer/Vector.js +849 -0
  243. package/lib/js/layer/WMS.d.ts +75 -0
  244. package/lib/js/layer/WMS.js +112 -0
  245. package/lib/js/layer/XYZ.d.ts +149 -0
  246. package/lib/js/layer/XYZ.js +299 -0
  247. package/lib/js/layer/index.d.ts +11 -0
  248. package/lib/js/layer/index.js +11 -0
  249. package/lib/js/light/LightSource.d.ts +174 -0
  250. package/lib/js/light/LightSource.js +292 -0
  251. package/lib/js/math/Line2.d.ts +11 -0
  252. package/lib/js/math/Line2.js +21 -0
  253. package/lib/js/math/Line3.d.ts +28 -0
  254. package/lib/js/math/Line3.js +85 -0
  255. package/lib/js/math/Mat3.d.ts +77 -0
  256. package/lib/js/math/Mat3.js +139 -0
  257. package/lib/js/math/Mat4.d.ts +195 -0
  258. package/lib/js/math/Mat4.js +470 -0
  259. package/lib/js/math/Plane.d.ts +20 -0
  260. package/lib/js/math/Plane.js +108 -0
  261. package/lib/js/math/Quat.d.ts +373 -0
  262. package/lib/js/math/Quat.js +783 -0
  263. package/lib/js/math/Ray.d.ts +76 -0
  264. package/lib/js/math/Ray.js +188 -0
  265. package/lib/js/math/Vec2.d.ts +310 -0
  266. package/lib/js/math/Vec2.js +463 -0
  267. package/lib/js/math/Vec3.d.ts +472 -0
  268. package/lib/js/math/Vec3.js +799 -0
  269. package/lib/js/math/Vec4.d.ts +163 -0
  270. package/lib/js/math/Vec4.js +211 -0
  271. package/lib/js/math/coder.d.ts +51 -0
  272. package/lib/js/math/coder.js +101 -0
  273. package/lib/js/math/index.d.ts +11 -0
  274. package/lib/js/math/index.js +11 -0
  275. package/lib/js/math.d.ts +266 -0
  276. package/lib/js/math.js +379 -0
  277. package/lib/js/mercator.d.ts +92 -0
  278. package/lib/js/mercator.js +119 -0
  279. package/lib/js/proj/EPSG3857.d.ts +9 -0
  280. package/lib/js/proj/EPSG3857.js +9 -0
  281. package/lib/js/proj/EPSG4326.d.ts +9 -0
  282. package/lib/js/proj/EPSG4326.js +9 -0
  283. package/lib/js/proj/Proj.d.ts +43 -0
  284. package/lib/js/proj/Proj.js +38 -0
  285. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
  286. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +17 -0
  287. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +6 -0
  288. package/lib/js/quadTree/EarthQuadTreeStrategy.js +19 -0
  289. package/lib/js/quadTree/EntityCollectionNode.d.ts +54 -0
  290. package/lib/js/quadTree/EntityCollectionNode.js +328 -0
  291. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +6 -0
  292. package/lib/js/quadTree/MarsQuadTreeStrategy.js +17 -0
  293. package/lib/js/quadTree/Node.d.ts +61 -0
  294. package/lib/js/quadTree/Node.js +660 -0
  295. package/lib/js/quadTree/QuadTreeStrategy.d.ts +25 -0
  296. package/lib/js/quadTree/QuadTreeStrategy.js +69 -0
  297. package/lib/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
  298. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +15 -0
  299. package/lib/js/quadTree/index.d.ts +12 -0
  300. package/lib/js/quadTree/index.js +12 -0
  301. package/lib/js/quadTree/quadTree.d.ts +40 -0
  302. package/lib/js/quadTree/quadTree.js +66 -0
  303. package/lib/js/renderer/Renderer.d.ts +311 -0
  304. package/lib/js/renderer/Renderer.js +899 -0
  305. package/lib/js/renderer/RendererEvents.d.ts +237 -0
  306. package/lib/js/renderer/RendererEvents.js +848 -0
  307. package/lib/js/scene/Axes.d.ts +12 -0
  308. package/lib/js/scene/Axes.js +59 -0
  309. package/lib/js/scene/BaseNode.d.ts +61 -0
  310. package/lib/js/scene/BaseNode.js +69 -0
  311. package/lib/js/scene/Planet.d.ts +623 -0
  312. package/lib/js/scene/Planet.js +1431 -0
  313. package/lib/js/scene/RenderNode.d.ts +150 -0
  314. package/lib/js/scene/RenderNode.js +301 -0
  315. package/lib/js/scene/SkyBox.d.ts +13 -0
  316. package/lib/js/scene/SkyBox.js +87 -0
  317. package/lib/js/scene/index.d.ts +5 -0
  318. package/lib/js/scene/index.js +5 -0
  319. package/lib/js/segment/Segment.d.ts +278 -0
  320. package/lib/js/segment/Segment.js +1142 -0
  321. package/lib/js/segment/SegmentLonLat.d.ts +48 -0
  322. package/lib/js/segment/SegmentLonLat.js +214 -0
  323. package/lib/js/segment/SegmentLonLatWgs84.d.ts +10 -0
  324. package/lib/js/segment/SegmentLonLatWgs84.js +23 -0
  325. package/lib/js/segment/Slice.d.ts +13 -0
  326. package/lib/js/segment/Slice.js +33 -0
  327. package/lib/js/segment/segmentHelper.d.ts +18 -0
  328. package/lib/js/segment/segmentHelper.js +180 -0
  329. package/lib/js/shaders/atmos.d.ts +4 -0
  330. package/lib/js/shaders/atmos.js +312 -0
  331. package/lib/js/shaders/billboard.d.ts +3 -0
  332. package/lib/js/shaders/billboard.js +214 -0
  333. package/lib/js/shaders/bloom.d.ts +2 -0
  334. package/lib/js/shaders/bloom.js +32 -0
  335. package/lib/js/shaders/blur.d.ts +3 -0
  336. package/lib/js/shaders/blur.js +68 -0
  337. package/lib/js/shaders/depth.d.ts +2 -0
  338. package/lib/js/shaders/depth.js +43 -0
  339. package/lib/js/shaders/drawnode.d.ts +8 -0
  340. package/lib/js/shaders/drawnode.js +986 -0
  341. package/lib/js/shaders/geoObject.d.ts +3 -0
  342. package/lib/js/shaders/geoObject.js +256 -0
  343. package/lib/js/shaders/label.d.ts +4 -0
  344. package/lib/js/shaders/label.js +589 -0
  345. package/lib/js/shaders/lumFilter.d.ts +2 -0
  346. package/lib/js/shaders/lumFilter.js +36 -0
  347. package/lib/js/shaders/pickingMask.d.ts +2 -0
  348. package/lib/js/shaders/pickingMask.js +22 -0
  349. package/lib/js/shaders/pointCloud.d.ts +2 -0
  350. package/lib/js/shaders/pointCloud.js +32 -0
  351. package/lib/js/shaders/polyline.d.ts +3 -0
  352. package/lib/js/shaders/polyline.js +345 -0
  353. package/lib/js/shaders/ray.d.ts +2 -0
  354. package/lib/js/shaders/ray.js +76 -0
  355. package/lib/js/shaders/screenFrame.d.ts +2 -0
  356. package/lib/js/shaders/screenFrame.js +26 -0
  357. package/lib/js/shaders/skybox.d.ts +2 -0
  358. package/lib/js/shaders/skybox.js +28 -0
  359. package/lib/js/shaders/toneMapping.d.ts +2 -0
  360. package/lib/js/shaders/toneMapping.js +85 -0
  361. package/lib/js/shaders/utils.d.ts +1 -0
  362. package/lib/js/shaders/utils.js +86 -0
  363. package/lib/js/terrain/BilTerrain.d.ts +18 -0
  364. package/lib/js/terrain/BilTerrain.js +152 -0
  365. package/lib/js/terrain/EmptyTerrain.d.ts +106 -0
  366. package/lib/js/terrain/EmptyTerrain.js +106 -0
  367. package/lib/js/terrain/Geoid.d.ts +33 -0
  368. package/lib/js/terrain/Geoid.js +191 -0
  369. package/lib/js/terrain/GlobusTerrain.d.ts +134 -0
  370. package/lib/js/terrain/GlobusTerrain.js +332 -0
  371. package/lib/js/terrain/MapboxTerrain.d.ts +21 -0
  372. package/lib/js/terrain/MapboxTerrain.js +298 -0
  373. package/lib/js/terrain/index.d.ts +5 -0
  374. package/lib/js/terrain/index.js +5 -0
  375. package/lib/js/ui/Button.d.ts +32 -0
  376. package/lib/js/ui/Button.js +78 -0
  377. package/lib/js/ui/ButtonGroup.d.ts +16 -0
  378. package/lib/js/ui/ButtonGroup.js +41 -0
  379. package/lib/js/ui/Dialog.d.ts +55 -0
  380. package/lib/js/ui/Dialog.js +173 -0
  381. package/lib/js/ui/Slider.d.ts +38 -0
  382. package/lib/js/ui/Slider.js +129 -0
  383. package/lib/js/ui/ToggleButton.d.ts +20 -0
  384. package/lib/js/ui/ToggleButton.js +42 -0
  385. package/lib/js/ui/View.d.ts +37 -0
  386. package/lib/js/ui/View.js +151 -0
  387. package/lib/js/ui/icons.d.ts +1 -0
  388. package/lib/js/ui/icons.js +3 -0
  389. package/lib/js/utils/BaseWorker.d.ts +14 -0
  390. package/lib/js/utils/BaseWorker.js +47 -0
  391. package/lib/js/utils/FontAtlas.d.ts +82 -0
  392. package/lib/js/utils/FontAtlas.js +220 -0
  393. package/lib/js/utils/GeoImageCreator.d.ts +34 -0
  394. package/lib/js/utils/GeoImageCreator.js +163 -0
  395. package/lib/js/utils/ImagesCacheManager.d.ts +22 -0
  396. package/lib/js/utils/ImagesCacheManager.js +63 -0
  397. package/lib/js/utils/Loader.d.ts +63 -0
  398. package/lib/js/utils/Loader.js +156 -0
  399. package/lib/js/utils/NormalMapCreator.d.ts +52 -0
  400. package/lib/js/utils/NormalMapCreator.js +310 -0
  401. package/lib/js/utils/PlainSegmentWorker.d.ts +24 -0
  402. package/lib/js/utils/PlainSegmentWorker.js +383 -0
  403. package/lib/js/utils/TerrainWorker.d.ts +28 -0
  404. package/lib/js/utils/TerrainWorker.js +551 -0
  405. package/lib/js/utils/TextureAtlas.d.ts +113 -0
  406. package/lib/js/utils/TextureAtlas.js +231 -0
  407. package/lib/js/utils/VectorTileCreator.d.ts +18 -0
  408. package/lib/js/utils/VectorTileCreator.js +320 -0
  409. package/lib/js/utils/colorTable.d.ts +3 -0
  410. package/lib/js/utils/colorTable.js +143 -0
  411. package/lib/js/utils/earcut.d.ts +7 -0
  412. package/lib/js/utils/earcut.js +536 -0
  413. package/lib/js/utils/objParser.d.ts +24 -0
  414. package/lib/js/utils/objParser.js +201 -0
  415. package/lib/js/utils/shared.d.ts +267 -0
  416. package/lib/js/utils/shared.js +893 -0
  417. package/lib/js/utils/units.d.ts +16 -0
  418. package/lib/js/utils/units.js +61 -0
  419. package/lib/js/webgl/BaseFramebuffer.d.ts +53 -0
  420. package/lib/js/webgl/BaseFramebuffer.js +88 -0
  421. package/lib/js/webgl/Framebuffer.d.ts +69 -0
  422. package/lib/js/webgl/Framebuffer.js +149 -0
  423. package/lib/js/webgl/Handler.d.ts +473 -0
  424. package/lib/js/webgl/Handler.js +1003 -0
  425. package/lib/js/webgl/Multisample.d.ts +27 -0
  426. package/lib/js/webgl/Multisample.js +77 -0
  427. package/lib/js/webgl/Program.d.ts +159 -0
  428. package/lib/js/webgl/Program.js +314 -0
  429. package/lib/js/webgl/ProgramController.d.ts +86 -0
  430. package/lib/js/webgl/ProgramController.js +110 -0
  431. package/lib/js/webgl/index.d.ts +6 -0
  432. package/lib/js/webgl/index.js +6 -0
  433. package/lib/js/webgl/types.d.ts +9 -0
  434. package/lib/js/webgl/types.js +26 -0
  435. package/lib/js/webgl/variableHandlers.d.ts +22 -0
  436. package/lib/js/webgl/variableHandlers.js +78 -0
  437. package/package.json +29 -38
  438. package/dist/@openglobus/og.esm.js +0 -21
  439. package/dist/@openglobus/og.esm.js.map +0 -1
  440. package/dist/@openglobus/og.umd.js +0 -21
  441. package/dist/@openglobus/og.umd.js.map +0 -1
  442. package/src/og/Clock.js +0 -214
  443. package/src/og/Deferred.js +0 -11
  444. package/src/og/Events.js +0 -185
  445. package/src/og/Extent.js +0 -352
  446. package/src/og/Globe.js +0 -342
  447. package/src/og/ImageCanvas.js +0 -236
  448. package/src/og/Lock.js +0 -44
  449. package/src/og/LonLat.js +0 -220
  450. package/src/og/Object3d.js +0 -395
  451. package/src/og/Popup.js +0 -187
  452. package/src/og/QueueArray.js +0 -75
  453. package/src/og/Rectangle.js +0 -111
  454. package/src/og/Stack.js +0 -49
  455. package/src/og/astro/astro.js +0 -51
  456. package/src/og/astro/earth.js +0 -112
  457. package/src/og/astro/jd.js +0 -514
  458. package/src/og/astro/orbit.js +0 -119
  459. package/src/og/astro/rotation.js +0 -36
  460. package/src/og/bv/Box.js +0 -77
  461. package/src/og/bv/Sphere.js +0 -57
  462. package/src/og/bv/index.js +0 -4
  463. package/src/og/camera/Camera.js +0 -645
  464. package/src/og/camera/Frustum.js +0 -331
  465. package/src/og/camera/PlanetCamera.js +0 -674
  466. package/src/og/camera/index.js +0 -4
  467. package/src/og/cons.js +0 -108
  468. package/src/og/control/Atmosphere.js +0 -387
  469. package/src/og/control/CompassButton.js +0 -146
  470. package/src/og/control/Control.js +0 -198
  471. package/src/og/control/DebugInfo.js +0 -259
  472. package/src/og/control/DrawingSwitcher.js +0 -117
  473. package/src/og/control/EarthCoordinates.js +0 -214
  474. package/src/og/control/EarthNavigation.js +0 -258
  475. package/src/og/control/GeoImageDragControl.js +0 -117
  476. package/src/og/control/KeyboardNavigation.js +0 -172
  477. package/src/og/control/LayerAnimation.js +0 -379
  478. package/src/og/control/LayerSwitcher.js +0 -424
  479. package/src/og/control/Lighting.js +0 -487
  480. package/src/og/control/MouseNavigation.js +0 -436
  481. package/src/og/control/MouseWheelZoomControl.js +0 -253
  482. package/src/og/control/RulerSwitcher.js +0 -74
  483. package/src/og/control/ScaleControl.js +0 -119
  484. package/src/og/control/SegmentBoundVisualization.js +0 -54
  485. package/src/og/control/ShowFps.js +0 -40
  486. package/src/og/control/SimpleNavigation.js +0 -123
  487. package/src/og/control/SimpleSkyBackground.js +0 -206
  488. package/src/og/control/Sun.js +0 -176
  489. package/src/og/control/ToggleWireframe.js +0 -35
  490. package/src/og/control/TouchNavigation.js +0 -350
  491. package/src/og/control/ZoomControl.js +0 -115
  492. package/src/og/control/drawing/DrawingControl.js +0 -51
  493. package/src/og/control/drawing/LineStringDrawingScene.js +0 -203
  494. package/src/og/control/drawing/PolygonDrawingScene.js +0 -785
  495. package/src/og/control/elevationProfile/ElevationProfile.js +0 -275
  496. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  497. package/src/og/control/heightRuler/HeightRulerScene.js +0 -228
  498. package/src/og/control/heightRuler/HeightRulerSwitcher.js +0 -15
  499. package/src/og/control/index.js +0 -56
  500. package/src/og/control/ruler/Ruler.js +0 -39
  501. package/src/og/control/ruler/RulerScene.js +0 -395
  502. package/src/og/control/selection/Selection.js +0 -95
  503. package/src/og/control/selection/SelectionScene.js +0 -345
  504. package/src/og/control/timeline/TimelineControl.js +0 -100
  505. package/src/og/control/timeline/TimelineModel.js +0 -137
  506. package/src/og/control/timeline/TimelineView.js +0 -462
  507. package/src/og/control/timeline/timelineUtils.js +0 -132
  508. package/src/og/control/visibleExtent/Segment.js +0 -1854
  509. package/src/og/control/visibleExtent/VisibleExtent.js +0 -80
  510. package/src/og/control/visibleExtent/drawnode.js +0 -747
  511. package/src/og/ellipsoid/Ellipsoid.js +0 -565
  512. package/src/og/ellipsoid/index.js +0 -4
  513. package/src/og/ellipsoid/wgs84.js +0 -9
  514. package/src/og/entity/BaseBillboard.js +0 -375
  515. package/src/og/entity/Billboard.js +0 -161
  516. package/src/og/entity/BillboardHandler.js +0 -883
  517. package/src/og/entity/Entity.js +0 -728
  518. package/src/og/entity/EntityCollection.js +0 -830
  519. package/src/og/entity/GeoObject.js +0 -244
  520. package/src/og/entity/GeoObjectHandler.js +0 -744
  521. package/src/og/entity/Geometry.js +0 -320
  522. package/src/og/entity/GeometryHandler.js +0 -1340
  523. package/src/og/entity/Label.js +0 -345
  524. package/src/og/entity/LabelHandler.js +0 -895
  525. package/src/og/entity/LabelWorker.js +0 -194
  526. package/src/og/entity/PointCloud.js +0 -491
  527. package/src/og/entity/PointCloudHandler.js +0 -122
  528. package/src/og/entity/Polyline.js +0 -2203
  529. package/src/og/entity/PolylineHandler.js +0 -105
  530. package/src/og/entity/Ray.js +0 -262
  531. package/src/og/entity/RayHandler.js +0 -841
  532. package/src/og/entity/Strip.js +0 -628
  533. package/src/og/entity/StripHandler.js +0 -158
  534. package/src/og/entity/index.js +0 -9
  535. package/src/og/index.js +0 -112
  536. package/src/og/input/KeyboardHandler.js +0 -195
  537. package/src/og/input/MouseHandler.js +0 -94
  538. package/src/og/input/TouchHandler.js +0 -59
  539. package/src/og/input/input.js +0 -44
  540. package/src/og/layer/BaseGeoImage.js +0 -480
  541. package/src/og/layer/CanvasTiles.js +0 -360
  542. package/src/og/layer/GeoImage.js +0 -150
  543. package/src/og/layer/GeoTexture2d.js +0 -50
  544. package/src/og/layer/GeoVideo.js +0 -187
  545. package/src/og/layer/KML.js +0 -358
  546. package/src/og/layer/Layer.js +0 -907
  547. package/src/og/layer/Material.js +0 -98
  548. package/src/og/layer/Vector.js +0 -1068
  549. package/src/og/layer/WMS.js +0 -182
  550. package/src/og/layer/XYZ.js +0 -374
  551. package/src/og/layer/index.js +0 -11
  552. package/src/og/light/LightSource.js +0 -362
  553. package/src/og/math/Line2.js +0 -28
  554. package/src/og/math/Line3.js +0 -140
  555. package/src/og/math/Mat3.js +0 -152
  556. package/src/og/math/Mat4.js +0 -603
  557. package/src/og/math/Plane.js +0 -117
  558. package/src/og/math/Quat.js +0 -980
  559. package/src/og/math/Ray.js +0 -237
  560. package/src/og/math/Vec2.js +0 -520
  561. package/src/og/math/Vec3.js +0 -931
  562. package/src/og/math/Vec4.js +0 -256
  563. package/src/og/math/coder.js +0 -104
  564. package/src/og/math/index.js +0 -23
  565. package/src/og/math.js +0 -430
  566. package/src/og/mercator.js +0 -149
  567. package/src/og/proj/EPSG3857.js +0 -13
  568. package/src/og/proj/EPSG4326.js +0 -13
  569. package/src/og/proj/Proj.js +0 -59
  570. package/src/og/quadTree/EPSG4326QuadTreeStrategy.js +0 -27
  571. package/src/og/quadTree/EarthQuadTreeStrategy.js +0 -30
  572. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  573. package/src/og/quadTree/MarsQuadTreeStrategy.js +0 -28
  574. package/src/og/quadTree/Node.js +0 -785
  575. package/src/og/quadTree/QuadTreeStrategy.js +0 -94
  576. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  577. package/src/og/quadTree/index.js +0 -14
  578. package/src/og/quadTree/quadTree.js +0 -77
  579. package/src/og/renderer/Renderer.js +0 -1185
  580. package/src/og/renderer/RendererEvents.js +0 -1094
  581. package/src/og/res/images.js +0 -8
  582. package/src/og/scene/Axes.js +0 -74
  583. package/src/og/scene/BaseNode.js +0 -109
  584. package/src/og/scene/Planet.js +0 -1931
  585. package/src/og/scene/RenderNode.js +0 -392
  586. package/src/og/scene/SkyBox.js +0 -104
  587. package/src/og/scene/index.js +0 -5
  588. package/src/og/segment/Segment.js +0 -1687
  589. package/src/og/segment/SegmentLonLat.js +0 -294
  590. package/src/og/segment/SegmentLonLatWgs84.js +0 -40
  591. package/src/og/segment/Slice.js +0 -45
  592. package/src/og/segment/segmentHelper.js +0 -230
  593. package/src/og/shaders/atmos.js +0 -332
  594. package/src/og/shaders/billboard.js +0 -225
  595. package/src/og/shaders/bloom.js +0 -37
  596. package/src/og/shaders/blur.js +0 -79
  597. package/src/og/shaders/depth.js +0 -48
  598. package/src/og/shaders/drawnode.js +0 -1040
  599. package/src/og/shaders/geoObject.js +0 -270
  600. package/src/og/shaders/label.js +0 -604
  601. package/src/og/shaders/lumFilter.js +0 -41
  602. package/src/og/shaders/pickingMask.js +0 -27
  603. package/src/og/shaders/pointCloud.js +0 -38
  604. package/src/og/shaders/polyline.js +0 -557
  605. package/src/og/shaders/ray.js +0 -81
  606. package/src/og/shaders/screenFrame.js +0 -31
  607. package/src/og/shaders/skybox.js +0 -33
  608. package/src/og/shaders/toneMapping.js +0 -90
  609. package/src/og/shaders/utils.js +0 -88
  610. package/src/og/terrain/BilTerrain.js +0 -243
  611. package/src/og/terrain/EmptyTerrain.js +0 -174
  612. package/src/og/terrain/Geoid.js +0 -247
  613. package/src/og/terrain/GlobusTerrain.js +0 -483
  614. package/src/og/terrain/MapboxTerrain.js +0 -470
  615. package/src/og/terrain/index.js +0 -6
  616. package/src/og/ui/Button.js +0 -107
  617. package/src/og/ui/ButtonGroup.js +0 -57
  618. package/src/og/ui/Dialog.js +0 -239
  619. package/src/og/ui/Slider.js +0 -170
  620. package/src/og/ui/ToggleButton.js +0 -51
  621. package/src/og/ui/UIhelpers.js +0 -155
  622. package/src/og/ui/View.js +0 -190
  623. package/src/og/ui/icons.js +0 -3
  624. package/src/og/utils/BaseWorker.js +0 -46
  625. package/src/og/utils/FontAtlas.js +0 -218
  626. package/src/og/utils/GeoImageCreator.js +0 -204
  627. package/src/og/utils/ImagesCacheManager.js +0 -70
  628. package/src/og/utils/Loader.js +0 -188
  629. package/src/og/utils/NormalMapCreator.js +0 -404
  630. package/src/og/utils/PlainSegmentWorker.js +0 -398
  631. package/src/og/utils/TerrainWorker.js +0 -573
  632. package/src/og/utils/TextureAtlas.js +0 -291
  633. package/src/og/utils/VectorTileCreator.js +0 -391
  634. package/src/og/utils/colorTable.js +0 -145
  635. package/src/og/utils/earcut.js +0 -661
  636. package/src/og/utils/functionComposition.js +0 -13
  637. package/src/og/utils/objParser.js +0 -227
  638. package/src/og/utils/shared.js +0 -989
  639. package/src/og/utils/units.js +0 -78
  640. package/src/og/webgl/Framebuffer.js +0 -311
  641. package/src/og/webgl/Handler.js +0 -1170
  642. package/src/og/webgl/Multisample.js +0 -275
  643. package/src/og/webgl/Program.js +0 -407
  644. package/src/og/webgl/ProgramController.js +0 -143
  645. package/src/og/webgl/callbacks.js +0 -98
  646. package/src/og/webgl/index.js +0 -13
  647. package/src/og/webgl/types.js +0 -31
  648. package/src/og.jsdoc +0 -3
  649. package/types/Clock.d.ts +0 -99
  650. package/types/Deferred.d.ts +0 -6
  651. package/types/Events.d.ts +0 -78
  652. package/types/Extent.d.ts +0 -166
  653. package/types/Globe.d.ts +0 -108
  654. package/types/ImageCanvas.d.ts +0 -128
  655. package/types/Lock.d.ts +0 -12
  656. package/types/LonLat.d.ts +0 -127
  657. package/types/Object3d.d.ts +0 -35
  658. package/types/Popup.d.ts +0 -29
  659. package/types/QueueArray.d.ts +0 -19
  660. package/types/Rectangle.d.ts +0 -80
  661. package/types/Stack.d.ts +0 -19
  662. package/types/arial.d.ts +0 -49
  663. package/types/astro/astro.d.ts +0 -38
  664. package/types/astro/earth.d.ts +0 -7
  665. package/types/astro/jd.d.ts +0 -254
  666. package/types/bv/Box.d.ts +0 -30
  667. package/types/bv/Sphere.d.ts +0 -38
  668. package/types/bv/index.d.ts +0 -3
  669. package/types/camera/Camera.d.ts +0 -314
  670. package/types/camera/Frustum.d.ts +0 -133
  671. package/types/camera/PlanetCamera.d.ts +0 -219
  672. package/types/camera/index.d.ts +0 -3
  673. package/types/cons.d.ts +0 -40
  674. package/types/control/Atmosphere.d.ts +0 -15
  675. package/types/control/CompassButton.d.ts +0 -16
  676. package/types/control/Control.d.ts +0 -104
  677. package/types/control/DebugInfo.d.ts +0 -19
  678. package/types/control/DrawingSwitcher.d.ts +0 -13
  679. package/types/control/EarthCoordinates.d.ts +0 -44
  680. package/types/control/EarthNavigation.d.ts +0 -43
  681. package/types/control/GeoImageDragControl.d.ts +0 -14
  682. package/types/control/KeyboardNavigation.d.ts +0 -24
  683. package/types/control/LayerAnimation.d.ts +0 -73
  684. package/types/control/LayerSwitcher.d.ts +0 -64
  685. package/types/control/Lighting.d.ts +0 -41
  686. package/types/control/MouseNavigation.d.ts +0 -49
  687. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  688. package/types/control/ScaleControl.d.ts +0 -23
  689. package/types/control/ShowFps.d.ts +0 -11
  690. package/types/control/SimpleNavigation.d.ts +0 -26
  691. package/types/control/SimpleSkyBackground.d.ts +0 -15
  692. package/types/control/Sun.d.ts +0 -53
  693. package/types/control/ToggleWireframe.d.ts +0 -12
  694. package/types/control/TouchNavigation.d.ts +0 -54
  695. package/types/control/ZoomControl.d.ts +0 -26
  696. package/types/control/drawing/DrawingControl.d.ts +0 -14
  697. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  698. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  699. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  700. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  701. package/types/control/index.d.ts +0 -27
  702. package/types/control/ruler/Ruler.d.ts +0 -13
  703. package/types/control/ruler/RulerScene.d.ts +0 -51
  704. package/types/control/selection/Selection.d.ts +0 -49
  705. package/types/control/selection/SelectionScene.d.ts +0 -32
  706. package/types/control/timeline/TimelineControl.d.ts +0 -10
  707. package/types/control/timeline/TimelineModel.d.ts +0 -33
  708. package/types/control/timeline/TimelineView.d.ts +0 -57
  709. package/types/control/timeline/timelineUtils.d.ts +0 -9
  710. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  711. package/types/ellipsoid/index.d.ts +0 -3
  712. package/types/ellipsoid/wgs84.d.ts +0 -6
  713. package/types/entity/BaseBillboard.d.ts +0 -215
  714. package/types/entity/Billboard.d.ts +0 -94
  715. package/types/entity/BillboardHandler.d.ts +0 -75
  716. package/types/entity/Entity.d.ts +0 -340
  717. package/types/entity/EntityCollection.d.ts +0 -303
  718. package/types/entity/GeoObject.d.ts +0 -117
  719. package/types/entity/GeoObjectHandler.d.ts +0 -41
  720. package/types/entity/Geometry.d.ts +0 -79
  721. package/types/entity/GeometryHandler.d.ts +0 -76
  722. package/types/entity/Label.d.ts +0 -190
  723. package/types/entity/LabelHandler.d.ts +0 -31
  724. package/types/entity/LabelWorker.d.ts +0 -9
  725. package/types/entity/PointCloud.d.ts +0 -174
  726. package/types/entity/PointCloudHandler.d.ts +0 -38
  727. package/types/entity/Polyline.d.ts +0 -307
  728. package/types/entity/PolylineHandler.d.ts +0 -18
  729. package/types/entity/Ray.d.ts +0 -122
  730. package/types/entity/RayHandler.d.ts +0 -63
  731. package/types/entity/Strip.d.ts +0 -119
  732. package/types/entity/StripHandler.d.ts +0 -38
  733. package/types/entity/index.d.ts +0 -8
  734. package/types/index.d.ts +0 -53
  735. package/types/input/KeyboardHandler.d.ts +0 -17
  736. package/types/input/MouseHandler.d.ts +0 -5
  737. package/types/input/TouchHandler.d.ts +0 -5
  738. package/types/input/input.d.ts +0 -42
  739. package/types/layer/BaseGeoImage.d.ts +0 -116
  740. package/types/layer/CanvasTiles.d.ts +0 -73
  741. package/types/layer/GeoImage.d.ts +0 -51
  742. package/types/layer/GeoTexture2d.d.ts +0 -7
  743. package/types/layer/GeoVideo.d.ts +0 -47
  744. package/types/layer/KML.d.ts +0 -93
  745. package/types/layer/Layer.d.ts +0 -320
  746. package/types/layer/Material.d.ts +0 -45
  747. package/types/layer/Vector.d.ts +0 -211
  748. package/types/layer/WMS.d.ts +0 -66
  749. package/types/layer/XYZ.d.ts +0 -122
  750. package/types/layer/index.d.ts +0 -10
  751. package/types/light/LightSource.d.ts +0 -178
  752. package/types/math/Line2.d.ts +0 -11
  753. package/types/math/Line3.d.ts +0 -10
  754. package/types/math/Mat3.d.ts +0 -65
  755. package/types/math/Mat4.d.ts +0 -176
  756. package/types/math/Plane.d.ts +0 -18
  757. package/types/math/Quat.d.ts +0 -379
  758. package/types/math/Ray.d.ts +0 -82
  759. package/types/math/Vec2.d.ts +0 -309
  760. package/types/math/Vec3.d.ts +0 -472
  761. package/types/math/Vec4.d.ts +0 -161
  762. package/types/math/coder.d.ts +0 -43
  763. package/types/math/index.d.ts +0 -11
  764. package/types/math.d.ts +0 -268
  765. package/types/mercator.d.ts +0 -92
  766. package/types/proj/EPSG3857.d.ts +0 -6
  767. package/types/proj/EPSG4326.d.ts +0 -6
  768. package/types/proj/Proj.d.ts +0 -42
  769. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  770. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  771. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  772. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  773. package/types/quadTree/Node.d.ts +0 -58
  774. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  775. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  776. package/types/quadTree/index.d.ts +0 -12
  777. package/types/quadTree/quadTree.d.ts +0 -40
  778. package/types/renderer/Renderer.d.ts +0 -291
  779. package/types/renderer/RendererEvents.d.ts +0 -241
  780. package/types/res/images.d.ts +0 -2
  781. package/types/scene/Axes.d.ts +0 -10
  782. package/types/scene/BaseNode.d.ts +0 -60
  783. package/types/scene/Planet.d.ts +0 -594
  784. package/types/scene/RenderNode.d.ts +0 -152
  785. package/types/scene/SkyBox.d.ts +0 -9
  786. package/types/scene/index.d.ts +0 -4
  787. package/types/segment/Segment.d.ts +0 -273
  788. package/types/segment/SegmentLonLat.d.ts +0 -22
  789. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  790. package/types/segment/Slice.d.ts +0 -10
  791. package/types/segment/segmentHelper.d.ts +0 -13
  792. package/types/shaders/atmos.d.ts +0 -4
  793. package/types/shaders/billboard.d.ts +0 -3
  794. package/types/shaders/depth.d.ts +0 -2
  795. package/types/shaders/drawnode.d.ts +0 -8
  796. package/types/shaders/geoObject.d.ts +0 -3
  797. package/types/shaders/label.d.ts +0 -4
  798. package/types/shaders/pickingMask.d.ts +0 -2
  799. package/types/shaders/pointCloud.d.ts +0 -2
  800. package/types/shaders/polyline.d.ts +0 -3
  801. package/types/shaders/ray.d.ts +0 -2
  802. package/types/shaders/screenFrame.d.ts +0 -2
  803. package/types/shaders/skybox.d.ts +0 -2
  804. package/types/shaders/toneMapping.d.ts +0 -2
  805. package/types/shaders/utils.d.ts +0 -1
  806. package/types/terrain/BilTerrain.d.ts +0 -14
  807. package/types/terrain/EmptyTerrain.d.ts +0 -87
  808. package/types/terrain/Geoid.d.ts +0 -17
  809. package/types/terrain/GlobusTerrain.d.ts +0 -122
  810. package/types/terrain/MapboxTerrain.d.ts +0 -14
  811. package/types/terrain/index.d.ts +0 -5
  812. package/types/ui/Button.d.ts +0 -21
  813. package/types/ui/ButtonGroup.d.ts +0 -12
  814. package/types/ui/Dialog.d.ts +0 -41
  815. package/types/ui/Slider.d.ts +0 -33
  816. package/types/ui/ToggleButton.d.ts +0 -10
  817. package/types/ui/UIhelpers.d.ts +0 -13
  818. package/types/ui/View.d.ts +0 -33
  819. package/types/ui/icons.d.ts +0 -1
  820. package/types/utils/BaseWorker.d.ts +0 -14
  821. package/types/utils/FontAtlas.d.ts +0 -16
  822. package/types/utils/GeoImageCreator.d.ts +0 -30
  823. package/types/utils/ImagesCacheManager.d.ts +0 -10
  824. package/types/utils/Loader.d.ts +0 -31
  825. package/types/utils/NormalMapCreator.d.ts +0 -39
  826. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  827. package/types/utils/TerrainWorker.d.ts +0 -7
  828. package/types/utils/TextureAtlas.d.ts +0 -113
  829. package/types/utils/VectorTileCreator.d.ts +0 -14
  830. package/types/utils/colorTable.d.ts +0 -143
  831. package/types/utils/earcut.d.ts +0 -6
  832. package/types/utils/functionComposition.d.ts +0 -5
  833. package/types/utils/objParser.d.ts +0 -8
  834. package/types/utils/shared.d.ts +0 -241
  835. package/types/utils/units.d.ts +0 -20
  836. package/types/webgl/Framebuffer.d.ts +0 -134
  837. package/types/webgl/Handler.d.ts +0 -403
  838. package/types/webgl/Multisample.d.ts +0 -91
  839. package/types/webgl/Program.d.ts +0 -163
  840. package/types/webgl/ProgramController.d.ts +0 -89
  841. package/types/webgl/callbacks.d.ts +0 -1
  842. package/types/webgl/index.d.ts +0 -6
  843. package/types/webgl/types.d.ts +0 -2
  844. /package/{dist → lib}/@openglobus/og.css +0 -0
  845. /package/{src/og → lib/@openglobus/res/fonts}/arial.js +0 -0
@@ -0,0 +1,1142 @@
1
+ import * as mercator from "../mercator";
2
+ import * as segmentHelper from "../segment/segmentHelper";
3
+ import { Box } from "../bv/Box";
4
+ import { Extent } from "../Extent";
5
+ import { EPSG3857 } from "../proj/EPSG3857";
6
+ import { E, N, NOTRENDERING, OPSIDE, S, W } from "../quadTree/quadTree";
7
+ import { getMatrixSubArray64 } from "../utils/shared";
8
+ import { Layer } from "../layer/Layer";
9
+ import { LonLat } from "../LonLat";
10
+ import { Sphere } from "../bv/Sphere";
11
+ import { Slice } from "./Slice";
12
+ import { Ray } from "../math/Ray";
13
+ import { Vec3 } from "../math/Vec3";
14
+ export const TILEGROUP_COMMON = 0;
15
+ export const TILEGROUP_NORTH = 1;
16
+ export const TILEGROUP_SOUTH = 2;
17
+ let _tempHigh = new Vec3();
18
+ let _tempLow = new Vec3();
19
+ let _v0 = new Vec3(), _v1 = new Vec3(), _v2 = new Vec3(), _v3 = new Vec3();
20
+ let _ray = new Ray(), _rayEx = new Ray();
21
+ const _S = new Array(4);
22
+ _S[N] = 0;
23
+ _S[E] = 1;
24
+ _S[S] = 1;
25
+ _S[W] = 0;
26
+ const _V = new Array(4);
27
+ _V[N] = false;
28
+ _V[E] = true;
29
+ _V[S] = false;
30
+ _V[W] = true;
31
+ /**
32
+ * Planet segment Web Mercator tile class that stored and rendered with a quad-tree.
33
+ * @class
34
+ * @param {Node} node - Segment node.
35
+ * @param {Planet} planet - Planet scene.
36
+ * @param {number} tileZoom - Zoom index.
37
+ * @param {Extent} extent - Segment extent.
38
+ */
39
+ class Segment {
40
+ constructor(node, planet, tileZoom, extent) {
41
+ this.isPole = false;
42
+ this._tileGroup = TILEGROUP_COMMON;
43
+ this._projection = EPSG3857;
44
+ this.node = node;
45
+ this.planet = planet;
46
+ this.handler = planet.renderer.handler;
47
+ this.bsphere = new Sphere();
48
+ this._plainRadius = 0;
49
+ this.bbox = new Box();
50
+ this._sw = new Vec3();
51
+ this._nw = new Vec3();
52
+ this._se = new Vec3();
53
+ this._ne = new Vec3();
54
+ this.centerNormal = new Vec3();
55
+ this._extent = this._extentMerc = extent;
56
+ this._extentLonLat = new Extent();
57
+ this.gridSize = planet.terrain.gridSizeByZoom[tileZoom];
58
+ this.fileGridSize = 0;
59
+ this.tileZoom = tileZoom;
60
+ this.tileX = 0;
61
+ this.tileXE = 0;
62
+ this.tileXW = 0;
63
+ this.tileYN = 0;
64
+ this.tileYS = 0;
65
+ this.tileY = 0;
66
+ this.tileIndex = "";
67
+ this._assignTileIndexes();
68
+ /**
69
+ * @toso: Check it should be Map<number, Material> instead of array
70
+ */
71
+ this.materials = [];
72
+ this.plainReady = false;
73
+ this.initialized = false;
74
+ this.normalMapReady = false;
75
+ this.terrainReady = false;
76
+ this.terrainIsLoading = false;
77
+ this.terrainExists = false;
78
+ this.passReady = false;
79
+ this.plainVertices = null;
80
+ this.plainVerticesHigh = null;
81
+ this.plainVerticesLow = null;
82
+ this.plainNormals = null;
83
+ this.terrainVertices = null;
84
+ this.terrainVerticesHigh = null;
85
+ this.terrainVerticesLow = null;
86
+ this.noDataVertices = null;
87
+ this.tempVertices = null;
88
+ this.tempVerticesHigh = null;
89
+ this.tempVerticesLow = null;
90
+ this.normalMapTexture = null;
91
+ this.normalMapTextureBias = new Float32Array(3);
92
+ this.normalMapVertices = null;
93
+ this.normalMapVerticesHigh = null;
94
+ this.normalMapVerticesLow = null;
95
+ this.normalMapNormals = null;
96
+ this.vertexNormalBuffer = null;
97
+ this.vertexPositionBuffer = null;
98
+ this.vertexPositionBufferHigh = null;
99
+ this.vertexPositionBufferLow = null;
100
+ this.vertexTextureCoordBuffer = null;
101
+ this._globalTextureCoordinates = new Float32Array(4);
102
+ this._inTheQueue = false;
103
+ this._appliedNeighborsZoom = [0, 0, 0, 0];
104
+ this._slices = [];
105
+ this._indexBuffer = null;
106
+ this.readyToEngage = false;
107
+ this.plainProcessing = false;
108
+ this.normalMapTexturePtr = null;
109
+ }
110
+ checkZoom() {
111
+ return this.tileZoom < this.planet.terrain._maxNodeZoom;
112
+ }
113
+ /**
114
+ * Returns entity terrain point.
115
+ * @public
116
+ * @param {Entity} entity - Entity.
117
+ * @param {Vec3} res - Point coordinates.
118
+ * @returns {Vec3} -
119
+ */
120
+ getEntityTerrainPoint(entity, res) {
121
+ return this.getTerrainPoint(entity._cartesian, this.getInsideLonLat(entity), res);
122
+ }
123
+ getInsideLonLat(obj) {
124
+ return obj._lonLatMerc;
125
+ }
126
+ isEntityInside(entity) {
127
+ return this._extentLonLat.isInside(entity._lonLat);
128
+ }
129
+ /**
130
+ * Returns distance from object to terrain coordinates and terrain point that calculates out in the res parameter.
131
+ * @public
132
+ * @param {Vec3} xyz - Cartesian object position.
133
+ * @param {LonLat} insideSegmentPosition - Geodetic object position.
134
+ * @param {Vec3} [res] - Result cartesian coordinates on the terrain.
135
+ * @returns {number} -
136
+ */
137
+ getTerrainPoint(xyz, insideSegmentPosition, res) {
138
+ let verts = this.tempVertices;
139
+ if (verts && verts.length) {
140
+ let norm = this.planet.ellipsoid.getSurfaceNormal3v(xyz);
141
+ _ray.set(xyz, norm.negateTo());
142
+ let ne = this._extent.northEast, sw = this._extent.southWest, size = Math.sqrt(verts.length / 3) - 1;
143
+ let xmax = ne.lon, ymax = ne.lat, xmin = sw.lon, ymin = sw.lat, x = insideSegmentPosition.lon, y = insideSegmentPosition.lat;
144
+ let sxn = xmax - xmin, syn = ymax - ymin;
145
+ let qx = sxn / size, qy = syn / size;
146
+ let xn = x - xmin, yn = y - ymin;
147
+ let indX = Math.floor(xn / qx), indY = Math.floor(size - yn / qy);
148
+ let ind_v0 = ((size + 1) * indY + indX) * 3;
149
+ let ind_v2 = ((size + 1) * (indY + 1) + indX) * 3;
150
+ _v0.set(verts[ind_v0], verts[ind_v0 + 1], verts[ind_v0 + 2]);
151
+ _v1.set(verts[ind_v0 + 3], verts[ind_v0 + 4], verts[ind_v0 + 5]);
152
+ _v2.set(verts[ind_v2], verts[ind_v2 + 1], verts[ind_v2 + 2]);
153
+ let d = _ray.hitTriangle(_v0, _v1, _v2, res);
154
+ if (d === Ray.INSIDE) {
155
+ return xyz.distance(res);
156
+ }
157
+ else if (d === Ray.AWAY) {
158
+ _rayEx.set(xyz, norm);
159
+ let d = _rayEx.hitTriangle(_v0, _v1, _v2, res);
160
+ if (d === Ray.INSIDE) {
161
+ return -xyz.distance(res);
162
+ }
163
+ }
164
+ _v3.set(verts[ind_v2 + 3], verts[ind_v2 + 4], verts[ind_v2 + 5]);
165
+ d = _ray.hitTriangle(_v1, _v3, _v2, res);
166
+ if (d === Ray.INSIDE) {
167
+ return xyz.distance(res);
168
+ }
169
+ else if (d === Ray.AWAY) {
170
+ _rayEx.set(xyz, norm);
171
+ let d = _rayEx.hitTriangle(_v1, _v3, _v2, res);
172
+ if (d === Ray.INSIDE) {
173
+ return -xyz.distance(res);
174
+ }
175
+ }
176
+ if (d === Ray.AWAY) {
177
+ return -xyz.distance(res);
178
+ }
179
+ return xyz.distance(res);
180
+ }
181
+ else {
182
+ return xyz.distance(this.planet.ellipsoid.hitRay(_ray.origin, _ray.direction));
183
+ }
184
+ }
185
+ /**
186
+ * Project wgs86 to segment native projection.
187
+ * @public
188
+ * @param {LonLat} lonlat - Coordinates to project.
189
+ * @returns {LonLat} -
190
+ */
191
+ projectNative(lonlat) {
192
+ return lonlat.forwardMercator();
193
+ }
194
+ loadTerrain(forceLoading = false) {
195
+ if (this.tileZoom < this.planet.terrain.minZoom || this.planet.terrain.isEmpty) {
196
+ this.terrainIsLoading = true;
197
+ this.elevationsNotExists();
198
+ if (!this._inTheQueue) {
199
+ this.planet._normalMapCreator.queue(this);
200
+ }
201
+ }
202
+ else {
203
+ if (this.tileZoom > this.planet.terrain.maxZoom) {
204
+ this.elevationsNotExists();
205
+ }
206
+ else if (!this.terrainIsLoading && !this.terrainReady) {
207
+ this.planet.terrain.loadTerrain(this, forceLoading);
208
+ }
209
+ // if (!this.terrainIsLoading && !this.terrainReady) {
210
+ // this.planet.terrain.loadTerrain(this, forceLoading);
211
+ // }
212
+ }
213
+ }
214
+ /**
215
+ * Terrain obtained from server.
216
+ * @param {Float32Array} elevations - Elevation data.
217
+ */
218
+ elevationsExists(elevations) {
219
+ if (this.plainReady && this.terrainIsLoading) {
220
+ let _elevations = new Float32Array(elevations.length);
221
+ _elevations.set(elevations);
222
+ this.planet._terrainWorker.make({ segment: this, elevations: _elevations });
223
+ this.plainVerticesHigh = null;
224
+ this.plainVerticesLow = null;
225
+ this.normalMapVerticesHigh = null;
226
+ this.normalMapVerticesLow = null;
227
+ if (!this.planet.terrain.equalizeVertices) {
228
+ this.tempVerticesHigh = null;
229
+ this.tempVerticesLow = null;
230
+ }
231
+ }
232
+ }
233
+ /**
234
+ * Keep plain elevation segment for rendering
235
+ *
236
+ * 'this.tileZoom <= this.planet.terrain.maxZoom' it means, that the segment is plain
237
+ *
238
+ */
239
+ elevationsNotExists() {
240
+ if (this.planet && this.tileZoom <= this.planet.terrain.maxNativeZoom) {
241
+ if (this.plainReady && this.terrainIsLoading) {
242
+ this.terrainIsLoading = false;
243
+ let n = this.node;
244
+ n.appliedTerrainNodeId = this.node.nodeId;
245
+ n.equalizedSideWithNodeId[N] = n.equalizedSideWithNodeId[E] = n.equalizedSideWithNodeId[S] =
246
+ n.equalizedSideWithNodeId[W] = n.appliedTerrainNodeId;
247
+ if (this.planet.lightEnabled && !this._inTheQueue) {
248
+ this.planet._normalMapCreator.queue(this);
249
+ }
250
+ this.readyToEngage = true;
251
+ }
252
+ // plain terrain only
253
+ this.terrainVertices = this.plainVertices;
254
+ this.terrainVerticesHigh = this.plainVerticesHigh;
255
+ this.terrainVerticesLow = this.plainVerticesLow;
256
+ this.tempVertices = this.terrainVertices;
257
+ this.tempVerticesHigh = this.terrainVerticesHigh;
258
+ this.tempVerticesLow = this.terrainVerticesLow;
259
+ this.noDataVertices = null;
260
+ this.fileGridSize = Math.sqrt(this.terrainVertices.length / 3) - 1;
261
+ this.gridSize = this.fileGridSize;
262
+ this.terrainReady = true;
263
+ this.terrainExists = false;
264
+ }
265
+ else {
266
+ if (this.plainReady && this.terrainIsLoading) {
267
+ this.terrainIsLoading = false;
268
+ let n = this.node;
269
+ n.appliedTerrainNodeId = this.node.nodeId;
270
+ n.equalizedSideWithNodeId[N] = n.equalizedSideWithNodeId[E] = n.equalizedSideWithNodeId[S] =
271
+ n.equalizedSideWithNodeId[W] = n.appliedTerrainNodeId;
272
+ this.readyToEngage = true;
273
+ this.terrainReady = true;
274
+ this.passReady = true;
275
+ this.terrainExists = false;
276
+ }
277
+ }
278
+ }
279
+ _checkEqualization(neighborSide, neigborNode) {
280
+ return neigborNode && this.tileZoom >= neigborNode.segment.tileZoom &&
281
+ this.node.equalizedSideWithNodeId[neighborSide] !== neigborNode.equalizedSideWithNodeId[OPSIDE[neighborSide]];
282
+ }
283
+ equalize() {
284
+ if (this.tileZoom < 8 || this.gridSize < 2) {
285
+ return;
286
+ }
287
+ this.readyToEngage = true;
288
+ let nn = this.node.neighbors;
289
+ let v = this.tempVertices, vHigh = this.tempVerticesHigh, vLow = this.tempVerticesLow;
290
+ let gs = this.gridSize, gsOne = gs + 1;
291
+ let n = nn[N][0];
292
+ if (this._checkEqualization(N, n)) {
293
+ this.node.equalizedSideWithNodeId[N] = n.equalizedSideWithNodeId[S];
294
+ this.readyToEngage = true;
295
+ let offset = this.node.getOffsetOppositeNeighbourSide(n, N);
296
+ let nv = n.segment.tempVertices, nvHigh = n.segment.tempVerticesHigh, nvLow = n.segment.tempVerticesLow;
297
+ let n_gs = n.segment.gridSize, n_gsOne = n_gs + 1;
298
+ let dz = 1 / (1 << (this.tileZoom - n.segment.tileZoom));
299
+ let inc = Math.max(gs / (n_gs * dz), 1), n_inc = Math.max((n_gs * dz) / gs, 1), n_offset = offset * n_gs;
300
+ for (let k = 0, nk = n_offset; k < gsOne; k += inc, nk += n_inc) {
301
+ const index = k * 3;
302
+ const n_index = (n_gsOne * n_gs + nk) * 3;
303
+ v[index] = nv[n_index];
304
+ v[index + 1] = nv[n_index + 1];
305
+ v[index + 2] = nv[n_index + 2];
306
+ vHigh[index] = nvHigh[n_index];
307
+ vHigh[index + 1] = nvHigh[n_index + 1];
308
+ vHigh[index + 2] = nvHigh[n_index + 2];
309
+ vLow[index] = nvLow[n_index];
310
+ vLow[index + 1] = nvLow[n_index + 1];
311
+ vLow[index + 2] = nvLow[n_index + 2];
312
+ }
313
+ }
314
+ n = nn[E][0];
315
+ if (this._checkEqualization(E, n)) {
316
+ this.node.equalizedSideWithNodeId[E] = n.equalizedSideWithNodeId[W];
317
+ this.readyToEngage = true;
318
+ let offset = this.node.getOffsetOppositeNeighbourSide(n, E);
319
+ let nv = n.segment.tempVertices, nvHigh = n.segment.tempVerticesHigh, nvLow = n.segment.tempVerticesLow;
320
+ let n_gs = n.segment.gridSize, n_gsOne = n_gs + 1;
321
+ let dz = 1 / (1 << (this.tileZoom - n.segment.tileZoom));
322
+ let inc = Math.max(gs / (n_gs * dz), 1), n_inc = Math.max((n_gs * dz) / gs, 1), n_offset = offset * n_gs;
323
+ for (let k = 0, nk = n_offset; k < gsOne; k += inc, nk += n_inc) {
324
+ const index = (gsOne * k + gs) * 3;
325
+ const n_index = n_gsOne * nk * 3;
326
+ v[index] = nv[n_index];
327
+ v[index + 1] = nv[n_index + 1];
328
+ v[index + 2] = nv[n_index + 2];
329
+ vHigh[index] = nvHigh[n_index];
330
+ vHigh[index + 1] = nvHigh[n_index + 1];
331
+ vHigh[index + 2] = nvHigh[n_index + 2];
332
+ vLow[index] = nvLow[n_index];
333
+ vLow[index + 1] = nvLow[n_index + 1];
334
+ vLow[index + 2] = nvLow[n_index + 2];
335
+ }
336
+ }
337
+ n = nn[S][0];
338
+ if (this._checkEqualization(S, n)) {
339
+ this.node.equalizedSideWithNodeId[S] = n.equalizedSideWithNodeId[N];
340
+ this.readyToEngage = true;
341
+ let offset = this.node.getOffsetOppositeNeighbourSide(n, S);
342
+ let nv = n.segment.tempVertices, nvHigh = n.segment.tempVerticesHigh, nvLow = n.segment.tempVerticesLow;
343
+ let n_gs = n.segment.gridSize; // n_gsOne = n_gs + 1;
344
+ let dz = 1 / (1 << (this.tileZoom - n.segment.tileZoom));
345
+ let inc = Math.max(gs / (n_gs * dz), 1), n_inc = Math.max((n_gs * dz) / gs, 1), n_offset = offset * n_gs;
346
+ for (let k = 0, nk = n_offset; k < gsOne; k += inc, nk += n_inc) {
347
+ const index = (gsOne * gs + k) * 3;
348
+ const n_index = nk * 3;
349
+ v[index] = nv[n_index];
350
+ v[index + 1] = nv[n_index + 1];
351
+ v[index + 2] = nv[n_index + 2];
352
+ vHigh[index] = nvHigh[n_index];
353
+ vHigh[index + 1] = nvHigh[n_index + 1];
354
+ vHigh[index + 2] = nvHigh[n_index + 2];
355
+ vLow[index] = nvLow[n_index];
356
+ vLow[index + 1] = nvLow[n_index + 1];
357
+ vLow[index + 2] = nvLow[n_index + 2];
358
+ }
359
+ }
360
+ n = nn[W][0];
361
+ if (this._checkEqualization(W, n)) {
362
+ this.node.equalizedSideWithNodeId[W] = n.equalizedSideWithNodeId[E];
363
+ this.readyToEngage = true;
364
+ let offset = this.node.getOffsetOppositeNeighbourSide(n, W);
365
+ let nv = n.segment.tempVertices, nvHigh = n.segment.tempVerticesHigh, nvLow = n.segment.tempVerticesLow;
366
+ let n_gs = n.segment.gridSize, n_gsOne = n_gs + 1;
367
+ let dz = 1 / (1 << (this.tileZoom - n.segment.tileZoom));
368
+ let inc = Math.max(gs / (n_gs * dz), 1), n_inc = Math.max((n_gs * dz) / gs, 1), n_offset = offset * n_gs;
369
+ for (let k = 0, nk = n_offset; k < gsOne; k += inc, nk += n_inc) {
370
+ const index = gsOne * k * 3;
371
+ const n_index = (n_gsOne * nk + n_gs) * 3;
372
+ v[index] = nv[n_index];
373
+ v[index + 1] = nv[n_index + 1];
374
+ v[index + 2] = nv[n_index + 2];
375
+ vHigh[index] = nvHigh[n_index];
376
+ vHigh[index + 1] = nvHigh[n_index + 1];
377
+ vHigh[index + 2] = nvHigh[n_index + 2];
378
+ vLow[index] = nvLow[n_index];
379
+ vLow[index + 1] = nvLow[n_index + 1];
380
+ vLow[index + 2] = nvLow[n_index + 2];
381
+ }
382
+ }
383
+ }
384
+ engage() {
385
+ this.readyToEngage = false;
386
+ this.createCoordsBuffers(this.tempVerticesHigh, this.tempVerticesLow, this.gridSize);
387
+ }
388
+ _terrainWorkerCallback(data) {
389
+ if (this.plainReady) {
390
+ this.readyToEngage = true;
391
+ this.normalMapNormals = null;
392
+ this.normalMapVertices = null;
393
+ this.normalMapVerticesHigh = null;
394
+ this.normalMapVerticesLow = null;
395
+ this.terrainVertices = null;
396
+ this.terrainVerticesHigh = null;
397
+ this.terrainVerticesLow = null;
398
+ this.noDataVertices = null;
399
+ this.tempVertices = null;
400
+ this.tempVerticesHigh = null;
401
+ this.tempVerticesLow = null;
402
+ this.normalMapNormals = data.normalMapNormals;
403
+ this.normalMapVertices = data.normalMapVertices;
404
+ this.normalMapVerticesHigh = data.normalMapVerticesHigh;
405
+ this.normalMapVerticesLow = data.normalMapVerticesLow;
406
+ this.terrainVertices = data.terrainVertices;
407
+ this.terrainVerticesHigh = data.terrainVerticesHigh;
408
+ this.terrainVerticesLow = data.terrainVerticesLow;
409
+ this.noDataVertices = data.noDataVertices;
410
+ this.tempVertices = this.terrainVertices;
411
+ this.tempVerticesHigh = this.terrainVerticesHigh;
412
+ this.tempVerticesLow = this.terrainVerticesLow;
413
+ this.setBoundingVolumeArr(data.bounds);
414
+ this.gridSize = Math.sqrt(this.terrainVertices.length / 3) - 1;
415
+ let n = this.node;
416
+ n.appliedTerrainNodeId = n.nodeId;
417
+ n.equalizedSideWithNodeId[N] = n.equalizedSideWithNodeId[E] = n.equalizedSideWithNodeId[S] =
418
+ n.equalizedSideWithNodeId[W] = n.appliedTerrainNodeId;
419
+ this.terrainReady = true;
420
+ this.terrainIsLoading = false;
421
+ this.terrainExists = true;
422
+ if (!this.normalMapTexturePtr) {
423
+ const nmc = this.planet._normalMapCreator;
424
+ this.normalMapTexturePtr = this.planet.renderer.handler.createEmptyTexture_l(nmc.width, nmc.height);
425
+ }
426
+ if (this.planet.lightEnabled) {
427
+ this.planet._normalMapCreator.queue(this);
428
+ }
429
+ }
430
+ }
431
+ _normalMapEdgeEqualize(side) {
432
+ let nn = this.node.neighbors;
433
+ let n = nn[side][0];
434
+ let maxZ = this.planet.terrain.maxZoom;
435
+ if (this.tileZoom === maxZ) {
436
+ if (!(nn[0].length || nn[1].length || nn[2].length || nn[3].length)) {
437
+ n = this.node.getEqualNeighbor(side);
438
+ }
439
+ }
440
+ let b = n && n.segment, s = this;
441
+ if (n &&
442
+ b &&
443
+ b.terrainReady &&
444
+ b.terrainExists &&
445
+ b.tileZoom <= maxZ &&
446
+ s._appliedNeighborsZoom[side] !== b.tileZoom) {
447
+ s._appliedNeighborsZoom[side] = b.tileZoom;
448
+ let seg_a = s.normalMapNormals, seg_b = b.normalMapNormals;
449
+ if (!(seg_a && seg_b))
450
+ return;
451
+ let seg_a_raw = s.normalMapNormals, seg_b_raw = b.normalMapNormals;
452
+ // let seg_a_verts = s.terrainVertices,
453
+ // seg_b_verts = s.terrainVertices;
454
+ let s_gs = Math.sqrt(seg_a.length / 3),
455
+ // b_gs = Math.sqrt(seg_b.length / 3),
456
+ s_gs1 = s_gs - 1;
457
+ // b_gs1 = b_gs - 1;
458
+ const i_a = s_gs1 * _S[side];
459
+ let nx, ny, nz, q;
460
+ if (s.tileZoom === b.tileZoom) {
461
+ const i_b = s_gs1 - i_a;
462
+ if (_V[side]) {
463
+ for (let k = 0; k < s_gs; k++) {
464
+ let vInd_a = (k * s_gs + i_a) * 3, vInd_b = (k * s_gs + i_b) * 3;
465
+ nx = seg_a_raw[vInd_a] + seg_b_raw[vInd_b];
466
+ ny = seg_a_raw[vInd_a + 1] + seg_b_raw[vInd_b + 1];
467
+ nz = seg_a_raw[vInd_a + 2] + seg_b_raw[vInd_b + 2];
468
+ q = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
469
+ seg_b[vInd_b] = seg_a[vInd_a] = nx * q;
470
+ seg_b[vInd_b + 1] = seg_a[vInd_a + 1] = ny * q;
471
+ seg_b[vInd_b + 2] = seg_a[vInd_a + 2] = nz * q;
472
+ }
473
+ }
474
+ else {
475
+ for (let k = 0; k < s_gs; k++) {
476
+ let vInd_a = (i_a * s_gs + k) * 3, vInd_b = (i_b * s_gs + k) * 3;
477
+ nx = seg_a_raw[vInd_a] + seg_b_raw[vInd_b];
478
+ ny = seg_a_raw[vInd_a + 1] + seg_b_raw[vInd_b + 1];
479
+ nz = seg_a_raw[vInd_a + 2] + seg_b_raw[vInd_b + 2];
480
+ q = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
481
+ seg_b[vInd_b] = seg_a[vInd_a] = nx * q;
482
+ seg_b[vInd_b + 1] = seg_a[vInd_a + 1] = ny * q;
483
+ seg_b[vInd_b + 2] = seg_a[vInd_a + 2] = nz * q;
484
+ }
485
+ }
486
+ if (!b._inTheQueue && b._appliedNeighborsZoom[OPSIDE[side]] !== s.tileZoom) {
487
+ b._appliedNeighborsZoom[OPSIDE[side]] = s.tileZoom;
488
+ s.planet._normalMapCreator.queue(b);
489
+ }
490
+ }
491
+ }
492
+ }
493
+ applyTerrain(elevations) {
494
+ if (elevations) {
495
+ this.elevationsExists(elevations);
496
+ }
497
+ else {
498
+ this.elevationsNotExists();
499
+ }
500
+ }
501
+ deleteBuffers() {
502
+ const gl = this.handler.gl;
503
+ gl.deleteBuffer(this.vertexNormalBuffer);
504
+ gl.deleteBuffer(this.vertexPositionBuffer);
505
+ gl.deleteBuffer(this.vertexPositionBufferHigh);
506
+ gl.deleteBuffer(this.vertexPositionBufferLow);
507
+ this.vertexNormalBuffer = null;
508
+ this.vertexPositionBuffer = null;
509
+ this.vertexPositionBufferHigh = null;
510
+ this.vertexPositionBufferLow = null;
511
+ this.vertexTextureCoordBuffer = null;
512
+ }
513
+ deleteMaterials() {
514
+ let m = this.materials;
515
+ for (let i = 0; i < m.length; i++) {
516
+ let mi = m[i];
517
+ if (mi) {
518
+ mi.clear();
519
+ }
520
+ }
521
+ this.materials.length = 0;
522
+ }
523
+ deleteElevations() {
524
+ this.terrainExists = false;
525
+ this.terrainReady = false;
526
+ this.terrainIsLoading = false;
527
+ this.normalMapVertices = null;
528
+ this.normalMapVerticesHigh = null;
529
+ this.normalMapVerticesLow = null;
530
+ this.normalMapNormals = null;
531
+ this.tempVertices = null;
532
+ this.tempVerticesHigh = null;
533
+ this.tempVerticesLow = null;
534
+ this.terrainVertices = null;
535
+ this.terrainVerticesHigh = null;
536
+ this.terrainVerticesLow = null;
537
+ this.noDataVertices = null;
538
+ this.plainVertices = null;
539
+ this.plainVerticesHigh = null;
540
+ this.plainVerticesLow = null;
541
+ this.plainNormals = null;
542
+ if (this.normalMapReady) {
543
+ this.handler.gl.deleteTexture(this.normalMapTexture);
544
+ this.normalMapReady = false;
545
+ }
546
+ this._appliedNeighborsZoom = [0, 0, 0, 0];
547
+ this.normalMapTextureBias[0] = 0;
548
+ this.normalMapTextureBias[1] = 0;
549
+ this.normalMapTextureBias[2] = 1;
550
+ this._inTheQueue = false;
551
+ }
552
+ clearSegment() {
553
+ this.plainReady = false;
554
+ this.initialized = false;
555
+ this.deleteBuffers();
556
+ this.deleteMaterials();
557
+ this.deleteElevations();
558
+ }
559
+ destroySegment() {
560
+ this.clearSegment();
561
+ let i = this._slices.length;
562
+ while (i--) {
563
+ this._slices[i].clear();
564
+ }
565
+ //@ts-ignore
566
+ this._slices = null;
567
+ //@ts-ignore
568
+ this.node = null;
569
+ //@ts-ignore
570
+ this.planet = null;
571
+ //@ts-ignore
572
+ this.handler = null;
573
+ //@ts-ignore
574
+ this.bbox = null;
575
+ //@ts-ignore
576
+ this.bsphere = null;
577
+ //@ts-ignore
578
+ this._extent = null;
579
+ //@ts-ignore
580
+ this.materials = null;
581
+ this.plainVertices = null;
582
+ this.plainVerticesHigh = null;
583
+ this.plainVerticesLow = null;
584
+ this.plainNormals = null;
585
+ this.terrainVertices = null;
586
+ this.terrainVerticesHigh = null;
587
+ this.terrainVerticesLow = null;
588
+ this.noDataVertices = null;
589
+ this.tempVertices = null;
590
+ this.tempVerticesHigh = null;
591
+ this.tempVerticesLow = null;
592
+ //@ts-ignore
593
+ this.normalMapTextureBias = null;
594
+ this.normalMapTexture = null;
595
+ this.normalMapVertices = null;
596
+ this.normalMapVerticesHigh = null;
597
+ this.normalMapVerticesLow = null;
598
+ this.normalMapNormals = null;
599
+ this.vertexNormalBuffer = null;
600
+ this.vertexPositionBuffer = null;
601
+ this.vertexPositionBufferHigh = null;
602
+ this.vertexPositionBufferLow = null;
603
+ this.vertexTextureCoordBuffer = null;
604
+ // @ts-ignore
605
+ this._projection = null;
606
+ // @ts-ignore
607
+ this._appliedNeighborsZoom = null;
608
+ // @ts-ignore
609
+ this._globalTextureCoordinates = null;
610
+ }
611
+ /**
612
+ * @todo: looks like it could be simplified in Segment contructor
613
+ */
614
+ _setExtentLonLat() {
615
+ this._extentLonLat = this._extent.inverseMercator();
616
+ }
617
+ createBoundsByExtent() {
618
+ const ellipsoid = this.planet.ellipsoid;
619
+ const extent = this._extentLonLat;
620
+ const coord_sw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.southWest.lat);
621
+ const coord_ne = ellipsoid.geodeticToCartesian(extent.northEast.lon, extent.northEast.lat);
622
+ const coord_nw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.northEast.lat);
623
+ const coord_se = ellipsoid.geodeticToCartesian(extent.northEast.lon, extent.southWest.lat);
624
+ this._sw.copy(coord_sw);
625
+ this._nw.copy(coord_nw);
626
+ this._ne.copy(coord_ne);
627
+ this._se.copy(coord_se);
628
+ this.setBoundingVolume3v(coord_sw, coord_ne);
629
+ }
630
+ createBoundsByParent() {
631
+ let pn = this.node;
632
+ while (pn.parentNode && !pn.segment.terrainReady) {
633
+ pn = pn.parentNode;
634
+ }
635
+ let dZ2 = 1 << (this.tileZoom - pn.segment.tileZoom);
636
+ let offsetX = this.tileX - pn.segment.tileX * dZ2, offsetY = this.tileY - pn.segment.tileY * dZ2;
637
+ if (pn.segment.terrainReady && pn.segment.tileZoom >= this.planet.terrain.minZoom) {
638
+ let gridSize = pn.segment.gridSize / dZ2;
639
+ if (gridSize >= 1.0) {
640
+ //
641
+ // (*) Actually, we get parent whole bounding volume
642
+ //
643
+ this.bsphere.center.x = pn.segment.bsphere.center.x;
644
+ this.bsphere.center.y = pn.segment.bsphere.center.y;
645
+ this.bsphere.center.z = pn.segment.bsphere.center.z;
646
+ this.bsphere.radius = pn.segment.bsphere.radius;
647
+ let i0 = gridSize * offsetY;
648
+ let j0 = gridSize * offsetX;
649
+ let pnGsOne = pn.segment.gridSize + 1;
650
+ let ind_sw = 3 * ((i0 + gridSize) * pnGsOne + j0), ind_nw = 3 * (i0 * pnGsOne + j0), ind_ne = 3 * (i0 * pnGsOne + j0 + gridSize), ind_se = 3 * ((i0 + gridSize) * pnGsOne + j0 + gridSize);
651
+ let pVerts = pn.segment.tempVertices;
652
+ let v_sw = new Vec3(pVerts[ind_sw], pVerts[ind_sw + 1], pVerts[ind_sw + 2]), v_ne = new Vec3(pVerts[ind_ne], pVerts[ind_ne + 1], pVerts[ind_ne + 2]);
653
+ // check for segment zoom
654
+ let v_nw = new Vec3(pVerts[ind_nw], pVerts[ind_nw + 1], pVerts[ind_nw + 2]), v_se = new Vec3(pVerts[ind_se], pVerts[ind_se + 1], pVerts[ind_se + 2]);
655
+ this._sw.copy(v_sw);
656
+ this._nw.copy(v_nw);
657
+ this._ne.copy(v_ne);
658
+ this._se.copy(v_se);
659
+ }
660
+ else {
661
+ let pseg = pn.segment;
662
+ let i0 = Math.floor(gridSize * offsetY), j0 = Math.floor(gridSize * offsetX);
663
+ let insideSize = 1.0 / gridSize;
664
+ let t_i0 = offsetY - insideSize * i0, t_j0 = offsetX - insideSize * j0;
665
+ let bigOne;
666
+ if (pseg.gridSize === 1) {
667
+ bigOne = pseg.tempVertices;
668
+ }
669
+ else {
670
+ bigOne = getMatrixSubArray64(pseg.tempVertices, pseg.gridSize, i0, j0, 1);
671
+ }
672
+ let v_lt = new Vec3(bigOne[0], bigOne[1], bigOne[2]), v_rb = new Vec3(bigOne[9], bigOne[10], bigOne[11]);
673
+ let vn = new Vec3(bigOne[3] - bigOne[0], bigOne[4] - bigOne[1], bigOne[5] - bigOne[2]), vw = new Vec3(bigOne[6] - bigOne[0], bigOne[7] - bigOne[1], bigOne[8] - bigOne[2]), ve = new Vec3(bigOne[3] - bigOne[9], bigOne[4] - bigOne[10], bigOne[5] - bigOne[11]), vs = new Vec3(bigOne[6] - bigOne[9], bigOne[7] - bigOne[10], bigOne[8] - bigOne[11]);
674
+ let vi_y = t_i0, vi_x = t_j0;
675
+ let coords_lt, coords_rb;
676
+ if (vi_y + vi_x < insideSize) {
677
+ coords_lt = Vec3.add(vn.scaleTo(vi_x / insideSize), vw.scaleTo(vi_y / insideSize)).addA(v_lt);
678
+ }
679
+ else {
680
+ coords_lt = Vec3.add(vs.scaleTo(1 - vi_x / insideSize), ve.scaleTo(1 - vi_y / insideSize)).addA(v_rb);
681
+ }
682
+ vi_y = t_i0 + 1;
683
+ vi_x = t_j0 + 1;
684
+ if (vi_y + vi_x < insideSize) {
685
+ coords_rb = Vec3.add(vn.scaleTo(vi_x / insideSize), vw.scaleTo(vi_y / insideSize)).addA(v_lt);
686
+ }
687
+ else {
688
+ coords_rb = Vec3.add(vs.scaleTo(1 - vi_x / insideSize), ve.scaleTo(1 - vi_y / insideSize)).addA(v_rb);
689
+ }
690
+ this.setBoundingVolume3v(coords_lt, coords_rb);
691
+ }
692
+ }
693
+ else {
694
+ this.createBoundsByExtent();
695
+ }
696
+ }
697
+ setBoundingSphere(x, y, z, v) {
698
+ this.bsphere.center.x = x;
699
+ this.bsphere.center.y = y;
700
+ this.bsphere.center.z = z;
701
+ this.bsphere.radius = this.bsphere.center.distance(v);
702
+ }
703
+ setBoundingVolume(xmin, ymin, zmin, xmax, ymax, zmax) {
704
+ this.bbox.setFromBoundsArr([xmin, ymin, zmin, xmax, ymax, zmax]);
705
+ let x = xmin + (xmax - xmin) * 0.5, y = ymin + (ymax - ymin) * 0.5, z = zmin + (zmax - zmin) * 0.5;
706
+ this.bsphere.center.set(x, y, z);
707
+ this.bsphere.radius = this.bsphere.center.distance(new Vec3(xmin, ymin, zmin));
708
+ }
709
+ setBoundingVolume3v(vmin, vmax) {
710
+ this.bbox.setFromBoundsArr([vmin.x, vmin.y, vmin.z, vmax.x, vmax.y, vmax.z]);
711
+ let x = vmin.x + (vmax.x - vmin.x) * 0.5, y = vmin.y + (vmax.y - vmin.y) * 0.5, z = vmin.z + (vmax.z - vmin.z) * 0.5;
712
+ this.bsphere.center.set(x, y, z);
713
+ this.bsphere.radius = this.bsphere.center.distance(new Vec3(vmin.x, vmin.y, vmin.z));
714
+ }
715
+ setBoundingVolumeArr(bounds) {
716
+ this.bbox.setFromBoundsArr(bounds);
717
+ let x = bounds[0] + (bounds[3] - bounds[0]) * 0.5, y = bounds[1] + (bounds[4] - bounds[1]) * 0.5, z = bounds[2] + (bounds[5] - bounds[2]) * 0.5;
718
+ this.bsphere.center.set(x, y, z);
719
+ this.bsphere.radius = this.bsphere.center.distance(new Vec3(bounds[0], bounds[1], bounds[2]));
720
+ }
721
+ createCoordsBuffers(verticesHigh, verticesLow, gridSize) {
722
+ const gsgs = (gridSize + 1) * (gridSize + 1);
723
+ const h = this.handler;
724
+ if (this.vertexPositionBufferHigh && this.vertexPositionBufferHigh.numItems === gsgs) {
725
+ h.setStreamArrayBuffer(this.vertexPositionBufferHigh, verticesHigh);
726
+ h.setStreamArrayBuffer(this.vertexPositionBufferLow, verticesLow);
727
+ }
728
+ else {
729
+ h.gl.deleteBuffer(this.vertexPositionBufferHigh);
730
+ h.gl.deleteBuffer(this.vertexPositionBufferLow);
731
+ this.vertexTextureCoordBuffer = this.planet._textureCoordsBufferCache[Math.log2(gridSize)];
732
+ // @todo use it!
733
+ //this.vertexPositionBufferHigh = h.createStreamArrayBuffer(3, gsgs);
734
+ //h.setStreamArrayBuffer(this.vertexPositionBufferHigh, verticesHigh);
735
+ //this.vertexPositionBufferLow = h.createStreamArrayBuffer(3, gsgs);
736
+ //h.setStreamArrayBuffer(this.vertexPositionBufferLow, verticesLow);
737
+ // It works, but I'm not sure that it is correct and better use the comment above
738
+ this.vertexPositionBufferHigh = h.createArrayBuffer(verticesHigh, 3, gsgs);
739
+ this.vertexPositionBufferLow = h.createArrayBuffer(verticesLow, 3, gsgs);
740
+ }
741
+ }
742
+ _addViewExtent() {
743
+ const ext = this._extentLonLat;
744
+ let viewExt = this.planet._viewExtent;
745
+ if (ext.southWest.lon < viewExt.southWest.lon) {
746
+ viewExt.southWest.lon = ext.southWest.lon;
747
+ }
748
+ if (ext.northEast.lon > viewExt.northEast.lon) {
749
+ viewExt.northEast.lon = ext.northEast.lon;
750
+ }
751
+ if (ext.southWest.lat < viewExt.southWest.lat) {
752
+ viewExt.southWest.lat = ext.southWest.lat;
753
+ }
754
+ if (ext.northEast.lat > viewExt.northEast.lat) {
755
+ viewExt.northEast.lat = ext.northEast.lat;
756
+ }
757
+ }
758
+ _assignTileIndexes() {
759
+ this._tileGroup = TILEGROUP_COMMON;
760
+ const tileZoom = this.tileZoom;
761
+ const extent = this._extent;
762
+ const pole = mercator.POLE;
763
+ this.tileX = Math.round(Math.abs(-pole - extent.southWest.lon) / (extent.northEast.lon - extent.southWest.lon));
764
+ this.tileY = Math.round(Math.abs(pole - extent.northEast.lat) / (extent.northEast.lat - extent.southWest.lat));
765
+ const p2 = Math.pow(2, tileZoom);
766
+ this.tileXE = (this.tileX + 1) % p2;
767
+ this.tileXW = (p2 + this.tileX - 1) % p2;
768
+ this.tileYN = this.tileY - 1;
769
+ this.tileYS = this.tileY + 1;
770
+ this.tileIndex = Layer.getTileIndex(this.tileX, this.tileY, tileZoom);
771
+ }
772
+ initialize() {
773
+ const p = this.planet;
774
+ const n = this.node;
775
+ this.gridSize = p.terrain.gridSizeByZoom[this.tileZoom] || p.terrain.plainGridSize;
776
+ n.sideSizeLog2[0] = n.sideSizeLog2[1] = n.sideSizeLog2[2] = n.sideSizeLog2[3] = Math.log2(this.gridSize);
777
+ if (this.tileZoom <= p.terrain.maxZoom) {
778
+ const nmc = this.planet._normalMapCreator;
779
+ this.normalMapTexturePtr = p.renderer.handler.createEmptyTexture_l(nmc.width, nmc.height);
780
+ }
781
+ this.normalMapTexture = this.planet.transparentTexture;
782
+ this._assignGlobalTextureCoordinates();
783
+ this.initialized = true;
784
+ }
785
+ _assignGlobalTextureCoordinates() {
786
+ const e = this._extent;
787
+ this._globalTextureCoordinates[0] =
788
+ (e.southWest.lon + mercator.POLE) * mercator.ONE_BY_POLE_DOUBLE;
789
+ this._globalTextureCoordinates[1] =
790
+ (mercator.POLE - e.northEast.lat) * mercator.ONE_BY_POLE_DOUBLE;
791
+ this._globalTextureCoordinates[2] =
792
+ (e.northEast.lon + mercator.POLE) * mercator.ONE_BY_POLE_DOUBLE;
793
+ this._globalTextureCoordinates[3] =
794
+ (mercator.POLE - e.southWest.lat) * mercator.ONE_BY_POLE_DOUBLE;
795
+ }
796
+ createPlainSegmentAsync() {
797
+ let p = this.planet, t = p.terrain;
798
+ if (t.isReady() && !this.plainReady && this.tileZoom <= t.maxZoom) {
799
+ this.plainProcessing = true;
800
+ p._plainSegmentWorker.make(this);
801
+ }
802
+ }
803
+ _plainSegmentWorkerCallback(data) {
804
+ this.plainProcessing = false;
805
+ if (this.initialized && !this.terrainReady) {
806
+ this.plainReady = true;
807
+ this.plainVertices = data.plainVertices;
808
+ this.plainVerticesHigh = data.plainVerticesHigh;
809
+ this.plainVerticesLow = data.plainVerticesLow;
810
+ this.plainNormals = data.plainNormals;
811
+ this._plainRadius = data.plainRadius;
812
+ this.normalMapNormals = data.normalMapNormals;
813
+ this.normalMapVertices = data.normalMapVertices;
814
+ this.normalMapVerticesHigh = data.normalMapVerticesHigh;
815
+ this.normalMapVerticesLow = data.normalMapVerticesLow;
816
+ //this.terrainVertices = this.plainVertices;
817
+ //this.terrainVerticesHigh = this.plainVerticesHigh;
818
+ //this.terrainVerticesLow = this.plainVerticesLow;
819
+ this.fileGridSize = Math.sqrt(data.normalMapVertices.length / 3) - 1;
820
+ }
821
+ }
822
+ createPlainSegment() {
823
+ this.initialize();
824
+ this._createPlainVertices();
825
+ this.readyToEngage = true;
826
+ }
827
+ _createPlainVertices() {
828
+ const gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom];
829
+ const e = this._extent;
830
+ const fgs = this.planet.terrain.plainGridSize;
831
+ const lonSize = e.getWidth();
832
+ const llStep = lonSize / Math.max(fgs, gridSize);
833
+ const esw_lon = e.southWest.lon;
834
+ const ene_lat = e.northEast.lat;
835
+ const dg = Math.max(fgs / gridSize, 1);
836
+ const gs = Math.max(fgs, gridSize) + 1;
837
+ const r2 = this.planet.ellipsoid._invRadii2;
838
+ const gsgs = gs * gs;
839
+ const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;
840
+ let ind = 0, nmInd = 0;
841
+ this.plainNormals = new Float32Array(gridSize3);
842
+ this.plainVertices = new Float64Array(gridSize3);
843
+ this.plainVerticesHigh = new Float32Array(gridSize3);
844
+ this.plainVerticesLow = new Float32Array(gridSize3);
845
+ this.normalMapNormals = new Float32Array(gsgs * 3);
846
+ this.normalMapVertices = new Float64Array(gsgs * 3);
847
+ this.normalMapVerticesHigh = new Float32Array(gsgs * 3);
848
+ this.normalMapVerticesLow = new Float32Array(gsgs * 3);
849
+ 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;
850
+ for (let k = 0; k < gsgs; k++) {
851
+ let j = k % gs, i = ~~(k / gs);
852
+ let v = this.planet.ellipsoid.lonLatToCartesian(LonLat.inverseMercator(esw_lon + j * llStep, ene_lat - i * llStep));
853
+ let nx = v.x * r2.x, ny = v.y * r2.y, nz = v.z * r2.z;
854
+ let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
855
+ let nxl = nx * l, nyl = ny * l, nzl = nz * l;
856
+ Vec3.doubleToTwoFloats(v, _tempHigh, _tempLow);
857
+ nmVerts[nmInd] = v.x;
858
+ nmVertsHigh[nmInd] = _tempHigh.x;
859
+ nmVertsLow[nmInd] = _tempLow.x;
860
+ nmNorms[nmInd++] = nxl;
861
+ nmVerts[nmInd] = v.y;
862
+ nmVertsHigh[nmInd] = _tempHigh.y;
863
+ nmVertsLow[nmInd] = _tempLow.y;
864
+ nmNorms[nmInd++] = nyl;
865
+ nmVerts[nmInd] = v.z;
866
+ nmVertsHigh[nmInd] = _tempHigh.z;
867
+ nmVertsLow[nmInd] = _tempLow.z;
868
+ nmNorms[nmInd++] = nzl;
869
+ if (i % dg === 0 && j % dg === 0) {
870
+ verts[ind] = v.x;
871
+ vertsHigh[ind] = _tempHigh.x;
872
+ vertsLow[ind] = _tempLow.x;
873
+ norms[ind++] = nxl;
874
+ verts[ind] = v.y;
875
+ vertsHigh[ind] = _tempHigh.y;
876
+ vertsLow[ind] = _tempLow.y;
877
+ norms[ind++] = nyl;
878
+ verts[ind] = v.z;
879
+ vertsHigh[ind] = _tempHigh.z;
880
+ vertsLow[ind] = _tempLow.z;
881
+ norms[ind++] = nzl;
882
+ }
883
+ }
884
+ this.terrainVertices = verts;
885
+ this.terrainVerticesHigh = vertsHigh;
886
+ this.terrainVerticesLow = vertsLow;
887
+ this.plainReady = true;
888
+ }
889
+ /**
890
+ * Gets specific layer material.
891
+ * @public
892
+ * @param {Layer} layer - Layer object.
893
+ * @returns {Material | undefined} - Segment material.
894
+ */
895
+ getMaterialByLayer(layer) {
896
+ return this.materials[layer.__id];
897
+ }
898
+ /**
899
+ * @param layer
900
+ * @protected
901
+ *
902
+ * @todo siplify layer._extentMerc in this.getLayerExtent(layer)
903
+ *
904
+ */
905
+ _getLayerExtentOffset(layer) {
906
+ const v0s = layer._extentMerc;
907
+ const v0t = this._extent;
908
+ const sSize_x = v0s.northEast.lon - v0s.southWest.lon;
909
+ const sSize_y = v0s.northEast.lat - v0s.southWest.lat;
910
+ const dV0s_x = (v0t.southWest.lon - v0s.southWest.lon) / sSize_x;
911
+ const dV0s_y = (v0s.northEast.lat - v0t.northEast.lat) / sSize_y;
912
+ const dSize_x = (v0t.northEast.lon - v0t.southWest.lon) / sSize_x;
913
+ const dSize_y = (v0t.northEast.lat - v0t.southWest.lat) / sSize_y;
914
+ return [dV0s_x, dV0s_y, dSize_x, dSize_y];
915
+ }
916
+ screenRendering(sh, layerSlice, sliceIndex, defaultTexture, isOverlay = false) {
917
+ const gl = this.handler.gl;
918
+ const sha = sh.attributes;
919
+ const shu = sh.uniforms;
920
+ const pm = this.materials;
921
+ const p = this.planet;
922
+ let currHeight, li;
923
+ if (layerSlice && layerSlice.length) {
924
+ li = layerSlice[0];
925
+ currHeight = li._height;
926
+ }
927
+ else {
928
+ currHeight = 0;
929
+ }
930
+ // First always draw whole planet base layer segment with solid texture.
931
+ gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE + 2);
932
+ gl.bindTexture(gl.TEXTURE_2D, (defaultTexture || this.getDefaultTexture()));
933
+ gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE + 2);
934
+ let n = 0, i = 0;
935
+ let notEmpty = false;
936
+ let slice = this._slices[sliceIndex];
937
+ if (!slice) {
938
+ slice = this._slices[sliceIndex] = new Slice(this);
939
+ }
940
+ else {
941
+ //TODO: optimization!!!
942
+ slice.layers = [];
943
+ }
944
+ this._indexBuffer = this._getIndexBuffer();
945
+ while (li) {
946
+ if (this.layerOverlap(li) &&
947
+ ((li._fading && li._fadingOpacity > 0.0) ||
948
+ ((li.minZoom >= p.minCurrZoom || li.maxZoom >= p.minCurrZoom) &&
949
+ (li.minZoom <= p.maxCurrZoom || li.maxZoom <= p.maxCurrZoom)))) {
950
+ notEmpty = true;
951
+ let m = pm[li.__id];
952
+ if (!m) {
953
+ m = pm[li.__id] = li.createMaterial(this);
954
+ }
955
+ if (!m.isReady) {
956
+ this.planet._renderCompleted = false;
957
+ }
958
+ slice.append(li, m);
959
+ p._samplerArr[n] = n;
960
+ gl.activeTexture(gl.TEXTURE0 + n);
961
+ gl.bindTexture(gl.TEXTURE_2D, (m.texture || p.transparentTexture));
962
+ n++;
963
+ }
964
+ i++;
965
+ li = layerSlice[i];
966
+ }
967
+ if (notEmpty || !isOverlay) {
968
+ gl.uniform1i(shu.samplerCount, n);
969
+ gl.uniform1f(shu.height, currHeight);
970
+ gl.uniform1iv(shu.samplerArr, p._samplerArr);
971
+ //slice.uniform(gl, shu);
972
+ gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
973
+ gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
974
+ //gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
975
+ // bind normalmap texture
976
+ if (p.lightEnabled) {
977
+ gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE + 3);
978
+ gl.bindTexture(gl.TEXTURE_2D, (this.normalMapTexture || p.transparentTexture));
979
+ gl.uniform1i(shu.uNormalMap, p.SLICE_SIZE + 3);
980
+ gl.uniform3fv(shu.uNormalMapBias, this.normalMapTextureBias);
981
+ // bind segment specular and night material texture coordinates
982
+ gl.uniform4fv(shu.uGlobalTextureCoord, this._globalTextureCoordinates);
983
+ }
984
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
985
+ gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
986
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
987
+ gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
988
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
989
+ gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
990
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
991
+ gl.drawElements(p.drawMode, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
992
+ }
993
+ }
994
+ heightPickingRendering(sh, layerSlice) {
995
+ const gl = this.handler.gl;
996
+ const sha = sh.attributes;
997
+ const shu = sh.uniforms;
998
+ // var pm = this.materials,
999
+ // p = this.planet;
1000
+ let currHeight;
1001
+ if (layerSlice && layerSlice.length) {
1002
+ currHeight = layerSlice[0]._height;
1003
+ }
1004
+ else {
1005
+ currHeight = 0;
1006
+ }
1007
+ gl.uniform1f(shu.height, currHeight);
1008
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
1009
+ gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
1010
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
1011
+ gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
1012
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
1013
+ gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
1014
+ }
1015
+ colorPickingRendering(sh, layerSlice, sliceIndex, defaultTexture, isOverlay = false) {
1016
+ const gl = this.handler.gl;
1017
+ const sha = sh.attributes;
1018
+ const shu = sh.uniforms;
1019
+ let pm = this.materials, p = this.planet;
1020
+ let currHeight;
1021
+ if (layerSlice && layerSlice.length) {
1022
+ currHeight = layerSlice[0]._height;
1023
+ }
1024
+ else {
1025
+ currHeight = 0;
1026
+ }
1027
+ let notEmpty = false;
1028
+ let slice = this._slices[sliceIndex];
1029
+ let len = slice.layers.length;
1030
+ for (let n = 0; n < len; n++) {
1031
+ notEmpty = true;
1032
+ let li = slice.layers[n];
1033
+ let n4 = n * 4;
1034
+ p._pickingColorArr[n4] = li._pickingColor.x / 255.0;
1035
+ p._pickingColorArr[n4 + 1] = li._pickingColor.y / 255.0;
1036
+ p._pickingColorArr[n4 + 2] = li._pickingColor.z / 255.0;
1037
+ p._pickingColorArr[n4 + 3] = Number(li._pickingEnabled);
1038
+ p._samplerArr[n] = n;
1039
+ gl.activeTexture(gl.TEXTURE0 + n);
1040
+ gl.bindTexture(gl.TEXTURE_2D, (pm[li.__id].texture || this.planet.transparentTexture));
1041
+ p._pickingMaskArr[n] = n + p.SLICE_SIZE;
1042
+ gl.activeTexture(gl.TEXTURE0 + n + p.SLICE_SIZE);
1043
+ gl.bindTexture(gl.TEXTURE_2D, (pm[li.__id].pickingMask || this.planet.transparentTexture));
1044
+ }
1045
+ if (notEmpty || !isOverlay) {
1046
+ gl.uniform1i(shu.samplerCount, len);
1047
+ gl.uniform1f(shu.height, currHeight);
1048
+ gl.uniform1iv(shu.samplerArr, p._samplerArr);
1049
+ gl.uniform1iv(shu.pickingMaskArr, p._pickingMaskArr);
1050
+ gl.uniform4fv(shu.pickingColorArr, p._pickingColorArr);
1051
+ //slice.uniform(gl, shu);
1052
+ gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
1053
+ gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
1054
+ //gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
1055
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
1056
+ gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
1057
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
1058
+ gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
1059
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
1060
+ gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
1061
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
1062
+ gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
1063
+ }
1064
+ }
1065
+ depthRendering(sh, layerSlice) {
1066
+ const gl = this.handler.gl;
1067
+ const sha = sh.attributes;
1068
+ const shu = sh.uniforms;
1069
+ var currHeight;
1070
+ if (layerSlice && layerSlice.length) {
1071
+ currHeight = layerSlice[0]._height;
1072
+ }
1073
+ else {
1074
+ currHeight = 0;
1075
+ }
1076
+ gl.uniform1f(shu.height, currHeight);
1077
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
1078
+ gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
1079
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
1080
+ gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
1081
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
1082
+ gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
1083
+ }
1084
+ _getIndexBuffer() {
1085
+ const s = this.node.sideSizeLog2;
1086
+ let cache = this.planet._indexesCache[Math.log2(this.gridSize)][s[0]][s[1]][s[2]][s[3]];
1087
+ if (!cache.buffer) {
1088
+ let indexes = segmentHelper.getInstance().createSegmentIndexes(Math.log2(this.gridSize), [s[0], s[1], s[2], s[3]]);
1089
+ cache.buffer = this.planet.renderer.handler.createElementArrayBuffer(indexes, 1);
1090
+ this.planet._indexesCacheToRemoveCounter++;
1091
+ }
1092
+ return cache.buffer;
1093
+ }
1094
+ /**
1095
+ * @todo: replace to the strategy
1096
+ */
1097
+ _collectVisibleNodes() {
1098
+ this.planet._visibleNodes[this.node.nodeId] = this.node;
1099
+ }
1100
+ layerOverlap(layer) {
1101
+ return this._extent.overlaps(layer._extentMerc);
1102
+ }
1103
+ getDefaultTexture() {
1104
+ return this.planet.solidTextureOne;
1105
+ }
1106
+ getExtentLonLat() {
1107
+ return this._extentLonLat;
1108
+ }
1109
+ getExtentMerc() {
1110
+ return this._extentMerc;
1111
+ }
1112
+ getExtent() {
1113
+ return this._extent;
1114
+ }
1115
+ /**
1116
+ * @todo replace to the strategy
1117
+ */
1118
+ getNodeState() {
1119
+ let vn = this.planet._visibleNodes[this.node.nodeId];
1120
+ return (vn && vn.state) || NOTRENDERING;
1121
+ }
1122
+ getNeighborSide(b) {
1123
+ if (this.tileY === b.tileY) {
1124
+ if (this.tileX === b.tileXE) {
1125
+ return W;
1126
+ }
1127
+ else if (this.tileX === b.tileXW) {
1128
+ return E;
1129
+ }
1130
+ }
1131
+ else if (this.tileX === b.tileX) {
1132
+ if (this.tileY === b.tileYS) {
1133
+ return N;
1134
+ }
1135
+ else if (this.tileY === b.tileYN) {
1136
+ return S;
1137
+ }
1138
+ }
1139
+ return -1;
1140
+ }
1141
+ }
1142
+ export { Segment };