@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,1546 @@
1
+ import { Extent } from "../Extent";
2
+ import { LonLat } from "../LonLat";
3
+ import { Vec3 } from "../math/Vec3";
4
+ import { cloneArray, htmlColorToFloat32Array, htmlColorToRgba, makeArray, makeArrayTyped } from "../utils/shared";
5
+ const VERTICES_BUFFER = 0;
6
+ const INDEX_BUFFER = 1;
7
+ const COLORS_BUFFER = 2;
8
+ const DEFAULT_COLOR = "#0000FF";
9
+ const R = 0;
10
+ const G = 1;
11
+ const B = 2;
12
+ const A = 3;
13
+ /**
14
+ * Polyline object.
15
+ * @class
16
+ * @param {Object} [options] - Polyline options:
17
+ * @param {number} [options.thickness] - Thickness in screen pixels 1.5 is default.
18
+ * @param {Number} [options.altitude] - Relative to ground layers altitude value.
19
+ * @param {Vec4} [options.color] - RGBA color.
20
+ * @param {Boolean} [options.opacity] - Line opacity.
21
+ * @param {Boolean} [options.visibility] - Polyline visibility. True default.
22
+ * @param {Boolean} [options.isClosed] - Closed geometry type identification.
23
+ * @param {SegmentPathLonLatExt[]} [options.pathLonLat] - Polyline geodetic coordinates array. [[[0,0,0], [1,1,1],...]]
24
+ * @param {SegmentPath3vExt[]} [options.path3v] - LinesString cartesian coordinates array. [[[0,0,0], [1,1,1],...]]
25
+ * @param {SegmentPathColor[]} [options.pathColors] - Coordinates color. [[[1,0,0,1], [0,1,0,1],...]] for right and green colors.
26
+ */
27
+ class Polyline {
28
+ constructor(options = {}) {
29
+ this.__id = Polyline.__counter__++;
30
+ this.altitude = options.altitude || 0.0;
31
+ this.thickness = options.thickness || 1.5;
32
+ this._opacity = options.opacity != undefined ? options.opacity : 1.0;
33
+ this._defaultColor = htmlColorToFloat32Array(options.color || DEFAULT_COLOR, options.opacity);
34
+ this.visibility = options.visibility != undefined ? options.visibility : true;
35
+ this._closedLine = options.isClosed || false;
36
+ this._path3v = [];
37
+ this._pathLengths = [];
38
+ this._pathLonLat = [];
39
+ this._pathLonLatMerc = [];
40
+ this._pathColors = options.pathColors ? cloneArray(options.pathColors) : [];
41
+ this._extent = new Extent();
42
+ this._verticesHigh = [];
43
+ this._verticesLow = [];
44
+ this._orders = [];
45
+ this._indexes = [];
46
+ this._colors = [];
47
+ this._verticesHighBuffer = null;
48
+ this._verticesLowBuffer = null;
49
+ this._ordersBuffer = null;
50
+ this._indexesBuffer = null;
51
+ this._colorsBuffer = null;
52
+ this._pickingColor = [0, 0, 0];
53
+ this._renderNode = null;
54
+ this._entity = null;
55
+ this._handler = null;
56
+ this._handlerIndex = -1;
57
+ this._buffersUpdateCallbacks = [];
58
+ this._buffersUpdateCallbacks[VERTICES_BUFFER] = this._createVerticesBuffer;
59
+ this._buffersUpdateCallbacks[INDEX_BUFFER] = this._createIndexBuffer;
60
+ this._buffersUpdateCallbacks[COLORS_BUFFER] = this._createColorsBuffer;
61
+ this._changedBuffers = new Array(this._buffersUpdateCallbacks.length);
62
+ // create path
63
+ if (options.pathLonLat) {
64
+ this.setPathLonLat(options.pathLonLat);
65
+ }
66
+ else if (options.path3v) {
67
+ this.setPath3v(options.path3v);
68
+ }
69
+ this._refresh();
70
+ }
71
+ /**
72
+ * Appends to the line array new cartesian coordinates line data.
73
+ * @static
74
+ */
75
+ static appendLineData3v(path3v, pathColors, defaultColor, isClosed, outVerticesHigh, outVerticesLow, outOrders, outIndexes, ellipsoid, outTransformedPathLonLat, outPath3v, outTransformedPathMerc, outExtent, outColors) {
76
+ var index = 0;
77
+ var v_high = new Vec3(), v_low = new Vec3();
78
+ if (outExtent) {
79
+ outExtent.southWest.set(180.0, 90.0);
80
+ outExtent.northEast.set(-180.0, -90.0);
81
+ }
82
+ if (outIndexes.length > 0) {
83
+ index = outIndexes[outIndexes.length - 5] + 9;
84
+ outIndexes.push(index, index);
85
+ }
86
+ else {
87
+ outIndexes.push(0, 0);
88
+ }
89
+ for (let j = 0, len = path3v.length; j < len; j++) {
90
+ var path = path3v[j], pathColors_j = pathColors[j];
91
+ outTransformedPathLonLat[j] = [];
92
+ outTransformedPathMerc[j] = [];
93
+ outPath3v[j] = [];
94
+ if (path.length === 0) {
95
+ continue;
96
+ }
97
+ var startIndex = index;
98
+ var last;
99
+ if (isClosed) {
100
+ last = path[path.length - 1];
101
+ if (last instanceof Array) {
102
+ last = new Vec3(last[0], last[1], last[2]);
103
+ }
104
+ }
105
+ else {
106
+ var p0 = path[0], p1 = path[1] || p0;
107
+ if (p0 instanceof Array) {
108
+ p0 = new Vec3(p0[0], p0[1], p0[2]);
109
+ }
110
+ if (p1 instanceof Array) {
111
+ p1 = new Vec3(p1[0], p1[1], p1[2]);
112
+ }
113
+ p0 = p0;
114
+ p1 = p1;
115
+ last = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
116
+ }
117
+ let color = defaultColor;
118
+ if (pathColors_j && pathColors_j[0]) {
119
+ color = pathColors_j[0];
120
+ }
121
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
122
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
123
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
124
+ let r = color[R], g = color[G], b = color[B], a = color[A] != undefined ? color[A] : 1.0;
125
+ if (j > 0) {
126
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
127
+ }
128
+ outOrders.push(1, -1, 2, -2);
129
+ for (let i = 0, len = path.length; i < len; i++) {
130
+ var cur = path[i];
131
+ if (cur instanceof Array) {
132
+ cur = new Vec3(cur[0], cur[1], cur[2]);
133
+ }
134
+ outPath3v[j].push(cur);
135
+ if (ellipsoid) {
136
+ var lonLat = ellipsoid.cartesianToLonLat(cur);
137
+ outTransformedPathLonLat[j].push(lonLat);
138
+ outTransformedPathMerc[j].push(lonLat.forwardMercator());
139
+ if (lonLat.lon < outExtent.southWest.lon) {
140
+ outExtent.southWest.lon = lonLat.lon;
141
+ }
142
+ if (lonLat.lat < outExtent.southWest.lat) {
143
+ outExtent.southWest.lat = lonLat.lat;
144
+ }
145
+ if (lonLat.lon > outExtent.northEast.lon) {
146
+ outExtent.northEast.lon = lonLat.lon;
147
+ }
148
+ if (lonLat.lat > outExtent.northEast.lat) {
149
+ outExtent.northEast.lat = lonLat.lat;
150
+ }
151
+ }
152
+ if (pathColors_j && pathColors_j[i]) {
153
+ color = pathColors_j[i];
154
+ }
155
+ r = color[R];
156
+ g = color[G];
157
+ b = color[B];
158
+ a = color[A] != undefined ? color[A] : 1.0;
159
+ Vec3.doubleToTwoFloats(cur, v_high, v_low);
160
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
161
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
162
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
163
+ outOrders.push(1, -1, 2, -2);
164
+ outIndexes.push(index++, index++, index++, index++);
165
+ }
166
+ var first;
167
+ if (isClosed) {
168
+ first = path[0];
169
+ if (first instanceof Array) {
170
+ first = new Vec3(first[0], first[1], first[2]);
171
+ }
172
+ outIndexes.push(startIndex, startIndex + 1, startIndex + 1, startIndex + 1);
173
+ }
174
+ else {
175
+ let p0 = path[path.length - 1], p1 = path[path.length - 2] || p0;
176
+ if (p0 instanceof Array) {
177
+ p0 = new Vec3(p0[0], p0[1], p0[2]);
178
+ }
179
+ else {
180
+ p0 = p0;
181
+ }
182
+ if (p1 instanceof Array) {
183
+ p1 = new Vec3(p1[0], p1[1], p1[2]);
184
+ }
185
+ else {
186
+ p1 = p1;
187
+ }
188
+ first = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
189
+ outIndexes.push(index - 1, index - 1, index - 1, index - 1);
190
+ }
191
+ if (pathColors_j && pathColors_j[path.length - 1]) {
192
+ color = pathColors_j[path.length - 1];
193
+ }
194
+ r = color[R];
195
+ g = color[G];
196
+ b = color[B];
197
+ a = color[A] != undefined ? color[A] : 1.0;
198
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
199
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
200
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
201
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
202
+ outOrders.push(1, -1, 2, -2);
203
+ if (j < path3v.length - 1 && path3v[j + 1].length !== 0) {
204
+ index += 8;
205
+ outIndexes.push(index, index);
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * Appends to the line new cartesian coordinates point data.
211
+ * @static
212
+ */
213
+ static appendPoint3v(path3v, point3v, pathColors, color, isClosed, outVerticesHigh, outVerticesLow, outColors, outOrders, outIndexes, ellipsoid, outTransformedPathLonLat, outTransformedPathMerc, outExtent) {
214
+ var v_high = new Vec3(), v_low = new Vec3();
215
+ var ii = outIndexes.length - 4, index = outIndexes[ii - 1] + 1;
216
+ if (path3v.length === 0) {
217
+ path3v.push([]);
218
+ if (!pathColors[0]) {
219
+ pathColors[0] = [];
220
+ }
221
+ }
222
+ else if (!pathColors[path3v.length - 1]) {
223
+ pathColors[path3v.length - 1] = [];
224
+ }
225
+ var path = path3v[path3v.length - 1], len = path.length;
226
+ path.push(point3v);
227
+ let r = color[R], g = color[G], b = color[B], a = color[A] != undefined ? color[A] : 1.0, pathColors_last = pathColors[path3v.length - 1];
228
+ if (pathColors_last[len]) {
229
+ pathColors_last[len][R] = r;
230
+ pathColors_last[len][G] = g;
231
+ pathColors_last[len][B] = b;
232
+ pathColors_last[len][A] = a;
233
+ }
234
+ else {
235
+ pathColors_last.push(color);
236
+ }
237
+ if (len === 1) {
238
+ var last;
239
+ if (isClosed) {
240
+ last = path[len - 1];
241
+ if (last instanceof Array) {
242
+ last = new Vec3(last[0], last[1], last[2]);
243
+ }
244
+ }
245
+ else {
246
+ let p0 = path[0], p1 = path[1] || p0;
247
+ if (p0 instanceof Array) {
248
+ p0 = new Vec3(p0[0], p0[1], p0[2]);
249
+ }
250
+ else {
251
+ p0 = p0;
252
+ }
253
+ if (p1 instanceof Array) {
254
+ p1 = new Vec3(p1[0], p1[1], p1[2]);
255
+ }
256
+ else {
257
+ p1 = p1;
258
+ }
259
+ last = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
260
+ }
261
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
262
+ let vi = outVerticesHigh.length - 3 * 12;
263
+ outVerticesHigh[vi] = v_high.x;
264
+ outVerticesHigh[vi + 1] = v_high.y;
265
+ outVerticesHigh[vi + 2] = v_high.z;
266
+ outVerticesHigh[vi + 3] = v_high.x;
267
+ outVerticesHigh[vi + 4] = v_high.y;
268
+ outVerticesHigh[vi + 5] = v_high.z;
269
+ outVerticesHigh[vi + 6] = v_high.x;
270
+ outVerticesHigh[vi + 7] = v_high.y;
271
+ outVerticesHigh[vi + 8] = v_high.z;
272
+ outVerticesHigh[vi + 9] = v_high.x;
273
+ outVerticesHigh[vi + 10] = v_high.y;
274
+ outVerticesHigh[vi + 11] = v_high.z;
275
+ outVerticesLow[vi] = v_low.x;
276
+ outVerticesLow[vi + 1] = v_low.y;
277
+ outVerticesLow[vi + 2] = v_low.z;
278
+ outVerticesLow[vi + 3] = v_low.x;
279
+ outVerticesLow[vi + 4] = v_low.y;
280
+ outVerticesLow[vi + 5] = v_low.z;
281
+ outVerticesLow[vi + 6] = v_low.x;
282
+ outVerticesLow[vi + 7] = v_low.y;
283
+ outVerticesLow[vi + 8] = v_low.z;
284
+ outVerticesLow[vi + 9] = v_low.x;
285
+ outVerticesLow[vi + 10] = v_low.y;
286
+ outVerticesLow[vi + 11] = v_low.z;
287
+ }
288
+ var startIndex = index;
289
+ if (ellipsoid) {
290
+ if (outTransformedPathLonLat.length === 0) {
291
+ outTransformedPathLonLat.push([]);
292
+ }
293
+ if (outTransformedPathMerc.length === 0) {
294
+ outTransformedPathMerc.push([]);
295
+ }
296
+ var transformedPathLonLat = outTransformedPathLonLat[outTransformedPathLonLat.length - 1], transformedPathMerc = outTransformedPathMerc[outTransformedPathMerc.length - 1];
297
+ let lonLat = ellipsoid.cartesianToLonLat(point3v);
298
+ transformedPathLonLat.push(lonLat);
299
+ transformedPathMerc.push(lonLat.forwardMercator());
300
+ if (lonLat.lon < outExtent.southWest.lon) {
301
+ outExtent.southWest.lon = lonLat.lon;
302
+ }
303
+ if (lonLat.lat < outExtent.southWest.lat) {
304
+ outExtent.southWest.lat = lonLat.lat;
305
+ }
306
+ if (lonLat.lon > outExtent.northEast.lon) {
307
+ outExtent.northEast.lon = lonLat.lon;
308
+ }
309
+ if (lonLat.lat > outExtent.northEast.lat) {
310
+ outExtent.northEast.lat = lonLat.lat;
311
+ }
312
+ }
313
+ Vec3.doubleToTwoFloats(point3v, v_high, v_low);
314
+ let vi = outVerticesHigh.length - 12;
315
+ outVerticesHigh[vi] = v_high.x;
316
+ outVerticesHigh[vi + 1] = v_high.y;
317
+ outVerticesHigh[vi + 2] = v_high.z;
318
+ outVerticesHigh[vi + 3] = v_high.x;
319
+ outVerticesHigh[vi + 4] = v_high.y;
320
+ outVerticesHigh[vi + 5] = v_high.z;
321
+ outVerticesHigh[vi + 6] = v_high.x;
322
+ outVerticesHigh[vi + 7] = v_high.y;
323
+ outVerticesHigh[vi + 8] = v_high.z;
324
+ outVerticesHigh[vi + 9] = v_high.x;
325
+ outVerticesHigh[vi + 10] = v_high.y;
326
+ outVerticesHigh[vi + 11] = v_high.z;
327
+ outVerticesLow[vi] = v_low.x;
328
+ outVerticesLow[vi + 1] = v_low.y;
329
+ outVerticesLow[vi + 2] = v_low.z;
330
+ outVerticesLow[vi + 3] = v_low.x;
331
+ outVerticesLow[vi + 4] = v_low.y;
332
+ outVerticesLow[vi + 5] = v_low.z;
333
+ outVerticesLow[vi + 6] = v_low.x;
334
+ outVerticesLow[vi + 7] = v_low.y;
335
+ outVerticesLow[vi + 8] = v_low.z;
336
+ outVerticesLow[vi + 9] = v_low.x;
337
+ outVerticesLow[vi + 10] = v_low.y;
338
+ outVerticesLow[vi + 11] = v_low.z;
339
+ let ci = outColors.length - 16;
340
+ outColors[ci] = r;
341
+ outColors[ci + 1] = g;
342
+ outColors[ci + 2] = b;
343
+ outColors[ci + 3] = a;
344
+ outColors[ci + 4] = r;
345
+ outColors[ci + 5] = g;
346
+ outColors[ci + 6] = b;
347
+ outColors[ci + 7] = a;
348
+ outColors[ci + 8] = r;
349
+ outColors[ci + 9] = g;
350
+ outColors[ci + 10] = b;
351
+ outColors[ci + 11] = a;
352
+ outColors[ci + 12] = r;
353
+ outColors[ci + 13] = g;
354
+ outColors[ci + 14] = b;
355
+ outColors[ci + 15] = a;
356
+ outIndexes[ii] = index++;
357
+ outIndexes[ii + 1] = index++;
358
+ outIndexes[ii + 2] = index++;
359
+ outIndexes[ii + 3] = index++;
360
+ //
361
+ // Close path
362
+ //
363
+ var first;
364
+ if (isClosed) {
365
+ first = path[0];
366
+ outIndexes.push(startIndex, startIndex + 1, startIndex + 1, startIndex + 1);
367
+ }
368
+ else {
369
+ let p0 = path[path.length - 1], p1 = path[path.length - 2] || p0;
370
+ first = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
371
+ outIndexes.push(index - 1, index - 1, index - 1, index - 1);
372
+ }
373
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
374
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
375
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
376
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
377
+ outOrders.push(1, -1, 2, -2);
378
+ }
379
+ /**
380
+ * Appends to the line array new geodetic coordinates line data.
381
+ * @static
382
+ */
383
+ static appendLineDataLonLat(pathLonLat, pathColors, defaultColor, isClosed, outVerticesHigh, outVerticesLow, outOrders, outIndexes, ellipsoid, outTransformedPathCartesian, outPathLonLat, outTransformedPathMerc, outExtent, outColors) {
384
+ var index = 0;
385
+ var v_high = new Vec3(), v_low = new Vec3();
386
+ if (outExtent) {
387
+ outExtent.southWest.set(180.0, 90.0);
388
+ outExtent.northEast.set(-180.0, -90.0);
389
+ }
390
+ if (outIndexes.length > 0) {
391
+ index = outIndexes[outIndexes.length - 5] + 9;
392
+ outIndexes.push(index, index);
393
+ }
394
+ else {
395
+ outIndexes.push(0, 0);
396
+ }
397
+ for (let j = 0, len = pathLonLat.length; j < len; j++) {
398
+ var path = pathLonLat[j], pathColors_j = pathColors[j];
399
+ outTransformedPathCartesian[j] = [];
400
+ outTransformedPathMerc[j] = [];
401
+ outPathLonLat[j] = [];
402
+ if (path.length === 0) {
403
+ continue;
404
+ }
405
+ var startIndex = index;
406
+ var last;
407
+ if (isClosed) {
408
+ let pp = path[path.length - 1];
409
+ if (pp instanceof Array) {
410
+ last = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
411
+ }
412
+ else {
413
+ last = ellipsoid.lonLatToCartesian(pp);
414
+ }
415
+ }
416
+ else {
417
+ let p0, p1;
418
+ let pp = path[0];
419
+ if (pp instanceof Array) {
420
+ p0 = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
421
+ }
422
+ else {
423
+ p0 = ellipsoid.lonLatToCartesian(pp);
424
+ }
425
+ pp = path[1];
426
+ if (!pp) {
427
+ pp = path[0];
428
+ }
429
+ if (pp instanceof Array) {
430
+ p1 = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
431
+ }
432
+ else {
433
+ p1 = ellipsoid.lonLatToCartesian(pp);
434
+ }
435
+ last = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
436
+ }
437
+ let color = defaultColor;
438
+ if (pathColors_j && pathColors_j[0]) {
439
+ color = pathColors_j[0];
440
+ }
441
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
442
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
443
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
444
+ let r = color[R], g = color[G], b = color[B], a = color[A] != undefined ? color[A] : 1.0;
445
+ if (j > 0) {
446
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
447
+ }
448
+ outOrders.push(1, -1, 2, -2);
449
+ for (let i = 0, len = path.length; i < len; i++) {
450
+ var cur = path[i];
451
+ if (cur instanceof Array) {
452
+ cur = new LonLat(cur[0], cur[1], cur[2]);
453
+ }
454
+ if (pathColors_j && pathColors_j[i]) {
455
+ color = pathColors_j[i];
456
+ }
457
+ r = color[R];
458
+ g = color[G];
459
+ b = color[B];
460
+ a = color[A] != undefined ? color[A] : 1.0;
461
+ var cartesian = ellipsoid.lonLatToCartesian(cur);
462
+ outTransformedPathCartesian[j].push(cartesian);
463
+ outPathLonLat[j].push(cur);
464
+ outTransformedPathMerc[j].push(cur.forwardMercator());
465
+ Vec3.doubleToTwoFloats(cartesian, v_high, v_low);
466
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
467
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
468
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
469
+ outOrders.push(1, -1, 2, -2);
470
+ outIndexes.push(index++, index++, index++, index++);
471
+ if (cur.lon < outExtent.southWest.lon) {
472
+ outExtent.southWest.lon = cur.lon;
473
+ }
474
+ if (cur.lat < outExtent.southWest.lat) {
475
+ outExtent.southWest.lat = cur.lat;
476
+ }
477
+ if (cur.lon > outExtent.northEast.lon) {
478
+ outExtent.northEast.lon = cur.lon;
479
+ }
480
+ if (cur.lat > outExtent.northEast.lat) {
481
+ outExtent.northEast.lat = cur.lat;
482
+ }
483
+ }
484
+ var first;
485
+ if (isClosed) {
486
+ let pp = path[0];
487
+ if (pp instanceof Array) {
488
+ first = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
489
+ }
490
+ else {
491
+ first = ellipsoid.lonLatToCartesian(pp);
492
+ }
493
+ outIndexes.push(startIndex, startIndex + 1, startIndex + 1, startIndex + 1);
494
+ }
495
+ else {
496
+ let p0, p1;
497
+ let pp = path[path.length - 1];
498
+ if (pp instanceof Array) {
499
+ p0 = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
500
+ }
501
+ else {
502
+ p0 = ellipsoid.lonLatToCartesian(pp);
503
+ }
504
+ pp = path[path.length - 2];
505
+ if (!pp) {
506
+ pp = path[0];
507
+ }
508
+ if (pp instanceof Array) {
509
+ p1 = ellipsoid.lonLatToCartesian(new LonLat(pp[0], pp[1], pp[2]));
510
+ }
511
+ else {
512
+ p1 = ellipsoid.lonLatToCartesian(pp);
513
+ }
514
+ first = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
515
+ outIndexes.push(index - 1, index - 1, index - 1, index - 1);
516
+ }
517
+ if (pathColors_j && pathColors_j[path.length - 1]) {
518
+ color = pathColors_j[path.length - 1];
519
+ }
520
+ r = color[R];
521
+ g = color[G];
522
+ b = color[B];
523
+ a = color[A] != undefined ? color[A] : 1.0;
524
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
525
+ outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z);
526
+ outVerticesLow.push(v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z, v_low.x, v_low.y, v_low.z);
527
+ outColors.push(r, g, b, a, r, g, b, a, r, g, b, a, r, g, b, a);
528
+ outOrders.push(1, -1, 2, -2);
529
+ if (j < pathLonLat.length - 1 && pathLonLat[j + 1].length !== 0) {
530
+ index += 8;
531
+ outIndexes.push(index, index);
532
+ }
533
+ }
534
+ }
535
+ /**
536
+ * Sets polyline path with cartesian coordinates.
537
+ * @protected
538
+ * @param {SegmentPath3vExt[]} path3v - Cartesian coordinates.
539
+ */
540
+ _setEqualPath3v(path3v) {
541
+ var extent = this._extent;
542
+ extent.southWest.set(180, 90);
543
+ extent.northEast.set(-180, -90);
544
+ var v_high = new Vec3(), v_low = new Vec3();
545
+ var vh = this._verticesHigh, vl = this._verticesLow, l = this._pathLonLat, m = this._pathLonLatMerc, k = 0;
546
+ var ellipsoid = this._renderNode.ellipsoid;
547
+ for (let j = 0; j < path3v.length; j++) {
548
+ var path = path3v[j];
549
+ var last;
550
+ if (this._closedLine) {
551
+ last = path[path.length - 1];
552
+ }
553
+ else {
554
+ last = new Vec3(path[0].x + path[0].x - path[1].x, path[0].y + path[0].y - path[1].y, path[0].z + path[0].z - path[1].z);
555
+ }
556
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
557
+ vh[k] = v_high.x;
558
+ vl[k++] = v_low.x;
559
+ vh[k] = v_high.y;
560
+ vl[k++] = v_low.y;
561
+ vh[k] = v_high.z;
562
+ vl[k++] = v_low.z;
563
+ vh[k] = v_high.x;
564
+ vl[k++] = v_low.x;
565
+ vh[k] = v_high.y;
566
+ vl[k++] = v_low.y;
567
+ vh[k] = v_high.z;
568
+ vl[k++] = v_low.z;
569
+ vh[k] = v_high.x;
570
+ vl[k++] = v_low.x;
571
+ vh[k] = v_high.y;
572
+ vl[k++] = v_low.y;
573
+ vh[k] = v_high.z;
574
+ vl[k++] = v_low.z;
575
+ vh[k] = v_high.x;
576
+ vl[k++] = v_low.x;
577
+ vh[k] = v_high.y;
578
+ vl[k++] = v_low.y;
579
+ vh[k] = v_high.z;
580
+ vl[k++] = v_low.z;
581
+ for (let i = 0; i < path.length; i++) {
582
+ var cur = path[i], pji = this._path3v[j][i];
583
+ pji.x = cur.x;
584
+ pji.y = cur.y;
585
+ pji.z = cur.z;
586
+ if (ellipsoid) {
587
+ var lonLat = ellipsoid.cartesianToLonLat(cur);
588
+ this._pathLonLat[j][i] = lonLat;
589
+ l[j][i] = lonLat;
590
+ m[j][i] = lonLat.forwardMercator();
591
+ if (lonLat.lon < extent.southWest.lon) {
592
+ extent.southWest.lon = lonLat.lon;
593
+ }
594
+ if (lonLat.lat < extent.southWest.lat) {
595
+ extent.southWest.lat = lonLat.lat;
596
+ }
597
+ if (lonLat.lon > extent.northEast.lon) {
598
+ extent.northEast.lon = lonLat.lon;
599
+ }
600
+ if (lonLat.lat > extent.northEast.lat) {
601
+ extent.northEast.lat = lonLat.lat;
602
+ }
603
+ }
604
+ Vec3.doubleToTwoFloats(cur, v_high, v_low);
605
+ vh[k] = v_high.x;
606
+ vl[k++] = v_low.x;
607
+ vh[k] = v_high.y;
608
+ vl[k++] = v_low.y;
609
+ vh[k] = v_high.z;
610
+ vl[k++] = v_low.z;
611
+ vh[k] = v_high.x;
612
+ vl[k++] = v_low.x;
613
+ vh[k] = v_high.y;
614
+ vl[k++] = v_low.y;
615
+ vh[k] = v_high.z;
616
+ vl[k++] = v_low.z;
617
+ vh[k] = v_high.x;
618
+ vl[k++] = v_low.x;
619
+ vh[k] = v_high.y;
620
+ vl[k++] = v_low.y;
621
+ vh[k] = v_high.z;
622
+ vl[k++] = v_low.z;
623
+ vh[k] = v_high.x;
624
+ vl[k++] = v_low.x;
625
+ vh[k] = v_high.y;
626
+ vl[k++] = v_low.y;
627
+ vh[k] = v_high.z;
628
+ vl[k++] = v_low.z;
629
+ }
630
+ var first;
631
+ if (this._closedLine) {
632
+ first = path[0];
633
+ }
634
+ else {
635
+ var l1 = path.length - 1;
636
+ first = new Vec3(path[l1].x + path[l1].x - path[l1 - 1].x, path[l1].y + path[l1].y - path[l1 - 1].y, path[l1].z + path[l1].z - path[l1 - 1].z);
637
+ }
638
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
639
+ vh[k] = v_high.x;
640
+ vl[k++] = v_low.x;
641
+ vh[k] = v_high.y;
642
+ vl[k++] = v_low.y;
643
+ vh[k] = v_high.z;
644
+ vl[k++] = v_low.z;
645
+ vh[k] = v_high.x;
646
+ vl[k++] = v_low.x;
647
+ vh[k] = v_high.y;
648
+ vl[k++] = v_low.y;
649
+ vh[k] = v_high.z;
650
+ vl[k++] = v_low.z;
651
+ vh[k] = v_high.x;
652
+ vl[k++] = v_low.x;
653
+ vh[k] = v_high.y;
654
+ vl[k++] = v_low.y;
655
+ vh[k] = v_high.z;
656
+ vl[k++] = v_low.z;
657
+ vh[k] = v_high.x;
658
+ vl[k++] = v_low.x;
659
+ vh[k] = v_high.y;
660
+ vl[k++] = v_low.y;
661
+ vh[k] = v_high.z;
662
+ vl[k++] = v_low.z;
663
+ }
664
+ }
665
+ /**
666
+ * Sets polyline with geodetic coordinates.
667
+ * @protected
668
+ * @param {SegmentPathLonLat[]} pathLonLat - Geodetic polyline path coordinates.
669
+ */
670
+ _setEqualPathLonLat(pathLonLat) {
671
+ var extent = this._extent;
672
+ extent.southWest.set(180.0, 90.0);
673
+ extent.northEast.set(-180.0, -90.0);
674
+ var v_high = new Vec3(), v_low = new Vec3();
675
+ var vh = this._verticesHigh, vl = this._verticesLow, l = this._pathLonLat, m = this._pathLonLatMerc, c = this._path3v, k = 0;
676
+ var ellipsoid = this._renderNode.ellipsoid;
677
+ for (let j = 0; j < pathLonLat.length; j++) {
678
+ var path = pathLonLat[j];
679
+ var last;
680
+ if (this._closedLine) {
681
+ last = ellipsoid.lonLatToCartesian(path[path.length - 1]);
682
+ }
683
+ else {
684
+ let p0 = ellipsoid.lonLatToCartesian(path[0]), p1 = ellipsoid.lonLatToCartesian(path[1]);
685
+ last = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
686
+ }
687
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
688
+ vh[k] = v_high.x;
689
+ vl[k++] = v_low.x;
690
+ vh[k] = v_high.y;
691
+ vl[k++] = v_low.y;
692
+ vh[k] = v_high.z;
693
+ vl[k++] = v_low.z;
694
+ vh[k] = v_high.x;
695
+ vl[k++] = v_low.x;
696
+ vh[k] = v_high.y;
697
+ vl[k++] = v_low.y;
698
+ vh[k] = v_high.z;
699
+ vl[k++] = v_low.z;
700
+ vh[k] = v_high.x;
701
+ vl[k++] = v_low.x;
702
+ vh[k] = v_high.y;
703
+ vl[k++] = v_low.y;
704
+ vh[k] = v_high.z;
705
+ vl[k++] = v_low.z;
706
+ vh[k] = v_high.x;
707
+ vl[k++] = v_low.x;
708
+ vh[k] = v_high.y;
709
+ vl[k++] = v_low.y;
710
+ vh[k] = v_high.z;
711
+ vl[k++] = v_low.z;
712
+ for (let i = 0; i < path.length; i++) {
713
+ var cur = path[i];
714
+ var cartesian = ellipsoid.lonLatToCartesian(cur);
715
+ c[j][i] = cartesian;
716
+ m[j][i] = cur.forwardMercator();
717
+ l[j][i] = cur;
718
+ Vec3.doubleToTwoFloats(cartesian, v_high, v_low);
719
+ vh[k] = v_high.x;
720
+ vl[k++] = v_low.x;
721
+ vh[k] = v_high.y;
722
+ vl[k++] = v_low.y;
723
+ vh[k] = v_high.z;
724
+ vl[k++] = v_low.z;
725
+ vh[k] = v_high.x;
726
+ vl[k++] = v_low.x;
727
+ vh[k] = v_high.y;
728
+ vl[k++] = v_low.y;
729
+ vh[k] = v_high.z;
730
+ vl[k++] = v_low.z;
731
+ vh[k] = v_high.x;
732
+ vl[k++] = v_low.x;
733
+ vh[k] = v_high.y;
734
+ vl[k++] = v_low.y;
735
+ vh[k] = v_high.z;
736
+ vl[k++] = v_low.z;
737
+ vh[k] = v_high.x;
738
+ vl[k++] = v_low.x;
739
+ vh[k] = v_high.y;
740
+ vl[k++] = v_low.y;
741
+ vh[k] = v_high.z;
742
+ vl[k++] = v_low.z;
743
+ if (cur.lon < extent.southWest.lon) {
744
+ extent.southWest.lon = cur.lon;
745
+ }
746
+ if (cur.lat < extent.southWest.lat) {
747
+ extent.southWest.lat = cur.lat;
748
+ }
749
+ if (cur.lon > extent.northEast.lon) {
750
+ extent.northEast.lon = cur.lon;
751
+ }
752
+ if (cur.lat > extent.northEast.lat) {
753
+ extent.northEast.lat = cur.lat;
754
+ }
755
+ }
756
+ var first;
757
+ if (this._closedLine) {
758
+ first = ellipsoid.lonLatToCartesian(path[0]);
759
+ }
760
+ else {
761
+ let p0 = ellipsoid.lonLatToCartesian(path[path.length - 1]), p1 = ellipsoid.lonLatToCartesian(path[path.length - 2]);
762
+ first = new Vec3(p0.x + p0.x - p1.x, p0.y + p0.y - p1.y, p0.z + p0.z - p1.z);
763
+ }
764
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
765
+ vh[k] = v_high.x;
766
+ vl[k++] = v_low.x;
767
+ vh[k] = v_high.y;
768
+ vl[k++] = v_low.y;
769
+ vh[k] = v_high.z;
770
+ vl[k++] = v_low.z;
771
+ vh[k] = v_high.x;
772
+ vl[k++] = v_low.x;
773
+ vh[k] = v_high.y;
774
+ vl[k++] = v_low.y;
775
+ vh[k] = v_high.z;
776
+ vl[k++] = v_low.z;
777
+ vh[k] = v_high.x;
778
+ vl[k++] = v_low.x;
779
+ vh[k] = v_high.y;
780
+ vl[k++] = v_low.y;
781
+ vh[k] = v_high.z;
782
+ vl[k++] = v_low.z;
783
+ vh[k] = v_high.x;
784
+ vl[k++] = v_low.x;
785
+ vh[k] = v_high.y;
786
+ vl[k++] = v_low.y;
787
+ vh[k] = v_high.z;
788
+ vl[k++] = v_low.z;
789
+ }
790
+ }
791
+ setPointLonLat(lonlat, index, segmentIndex) {
792
+ if (this._renderNode && this._renderNode.ellipsoid) {
793
+ let l = this._pathLonLat, m = this._pathLonLatMerc;
794
+ l[segmentIndex][index] = lonlat;
795
+ m[segmentIndex][index] = lonlat.forwardMercator();
796
+ //
797
+ // Apply new extent(TODO: think about optimization)
798
+ //
799
+ var extent = this._extent;
800
+ extent.southWest.set(180.0, 90.0);
801
+ extent.northEast.set(-180.0, -90.0);
802
+ for (let i = 0; i < l.length; i++) {
803
+ var pi = l[i];
804
+ for (let j = 0; j < pi.length; j++) {
805
+ var lon = pi[j].lon, lat = pi[j].lat;
806
+ if (lon > extent.northEast.lon) {
807
+ extent.northEast.lon = lon;
808
+ }
809
+ if (lat > extent.northEast.lat) {
810
+ extent.northEast.lat = lat;
811
+ }
812
+ if (lon < extent.southWest.lon) {
813
+ extent.southWest.lon = lon;
814
+ }
815
+ if (lat < extent.southWest.lat) {
816
+ extent.southWest.lat = lat;
817
+ }
818
+ }
819
+ }
820
+ this.setPoint3v(this._renderNode.ellipsoid.lonLatToCartesian(lonlat), index, segmentIndex, true);
821
+ }
822
+ else {
823
+ let path = this._pathLonLat[segmentIndex];
824
+ path[index].lon = lonlat.lon;
825
+ path[index].lat = lonlat.lat;
826
+ path[index].height = lonlat.height;
827
+ }
828
+ }
829
+ /**
830
+ * Changes cartesian point coordinates of the path
831
+ * @param {Vec3} coordinates - New coordinates
832
+ * @param {number} [index=0] - Path segment index
833
+ * @param {number} [segmentIndex=0] - Index of the point in the path segment
834
+ * @param {boolean} [skipLonLat=false] - Do not update geodetic coordinates
835
+ */
836
+ setPoint3v(coordinates, index = 0, segmentIndex = 0, skipLonLat = false) {
837
+ if (this._renderNode) {
838
+ var v_high = new Vec3(), v_low = new Vec3();
839
+ var vh = this._verticesHigh, vl = this._verticesLow, l = this._pathLonLat, m = this._pathLonLatMerc, k = 0, kk = 0;
840
+ //for (let i = 0; i < segmentIndex; i++) {
841
+ // kk += this._path3v[i].length * 12 + 24;
842
+ //}
843
+ kk = this._pathLengths[segmentIndex] * 12 + 24 * segmentIndex;
844
+ let path = this._path3v[segmentIndex];
845
+ path[index].x = coordinates.x;
846
+ path[index].y = coordinates.y;
847
+ path[index].z = coordinates.z;
848
+ let _closedLine = this._closedLine || path.length === 1;
849
+ if (index === 0 || index === 1) {
850
+ var last;
851
+ if (_closedLine) {
852
+ last = path[path.length - 1];
853
+ }
854
+ else {
855
+ last = new Vec3(path[0].x + path[0].x - path[1].x, path[0].y + path[0].y - path[1].y, path[0].z + path[0].z - path[1].z);
856
+ }
857
+ k = kk;
858
+ Vec3.doubleToTwoFloats(last, v_high, v_low);
859
+ vh[k] = v_high.x;
860
+ vh[k + 1] = v_high.y;
861
+ vh[k + 2] = v_high.z;
862
+ vh[k + 3] = v_high.x;
863
+ vh[k + 4] = v_high.y;
864
+ vh[k + 5] = v_high.z;
865
+ vh[k + 6] = v_high.x;
866
+ vh[k + 7] = v_high.y;
867
+ vh[k + 8] = v_high.z;
868
+ vh[k + 9] = v_high.x;
869
+ vh[k + 10] = v_high.y;
870
+ vh[k + 11] = v_high.z;
871
+ vl[k] = v_low.x;
872
+ vl[k + 1] = v_low.y;
873
+ vl[k + 2] = v_low.z;
874
+ vl[k + 3] = v_low.x;
875
+ vl[k + 4] = v_low.y;
876
+ vl[k + 5] = v_low.z;
877
+ vl[k + 6] = v_low.x;
878
+ vl[k + 7] = v_low.y;
879
+ vl[k + 8] = v_low.z;
880
+ vl[k + 9] = v_low.x;
881
+ vl[k + 10] = v_low.y;
882
+ vl[k + 11] = v_low.z;
883
+ }
884
+ if (!skipLonLat && this._renderNode.ellipsoid) {
885
+ var lonLat = this._renderNode.ellipsoid.cartesianToLonLat(coordinates);
886
+ l[segmentIndex][index] = lonLat;
887
+ m[segmentIndex][index] = lonLat.forwardMercator();
888
+ //
889
+ // Apply new extent(TODO: think about optimization)
890
+ //
891
+ var extent = this._extent;
892
+ extent.southWest.set(180.0, 90.0);
893
+ extent.northEast.set(-180.0, -90.0);
894
+ for (let i = 0; i < l.length; i++) {
895
+ var pi = l[i];
896
+ for (let j = 0; j < pi.length; j++) {
897
+ var lon = pi[j].lon, lat = pi[j].lat;
898
+ if (lon > extent.northEast.lon) {
899
+ extent.northEast.lon = lon;
900
+ }
901
+ if (lat > extent.northEast.lat) {
902
+ extent.northEast.lat = lat;
903
+ }
904
+ if (lon < extent.southWest.lon) {
905
+ extent.southWest.lon = lon;
906
+ }
907
+ if (lat < extent.southWest.lat) {
908
+ extent.southWest.lat = lat;
909
+ }
910
+ }
911
+ }
912
+ }
913
+ k = kk + index * 12 + 12;
914
+ Vec3.doubleToTwoFloats(coordinates, v_high, v_low);
915
+ vh[k] = v_high.x;
916
+ vh[k + 1] = v_high.y;
917
+ vh[k + 2] = v_high.z;
918
+ vh[k + 3] = v_high.x;
919
+ vh[k + 4] = v_high.y;
920
+ vh[k + 5] = v_high.z;
921
+ vh[k + 6] = v_high.x;
922
+ vh[k + 7] = v_high.y;
923
+ vh[k + 8] = v_high.z;
924
+ vh[k + 9] = v_high.x;
925
+ vh[k + 10] = v_high.y;
926
+ vh[k + 11] = v_high.z;
927
+ vl[k] = v_low.x;
928
+ vl[k + 1] = v_low.y;
929
+ vl[k + 2] = v_low.z;
930
+ vl[k + 3] = v_low.x;
931
+ vl[k + 4] = v_low.y;
932
+ vl[k + 5] = v_low.z;
933
+ vl[k + 6] = v_low.x;
934
+ vl[k + 7] = v_low.y;
935
+ vl[k + 8] = v_low.z;
936
+ vl[k + 9] = v_low.x;
937
+ vl[k + 10] = v_low.y;
938
+ vl[k + 11] = v_low.z;
939
+ if (index === path.length - 1 || index === path.length - 2) {
940
+ var first;
941
+ if (_closedLine) {
942
+ first = path[0];
943
+ }
944
+ else {
945
+ var l1 = path.length - 1;
946
+ first = new Vec3(path[l1].x + path[l1].x - path[l1 - 1].x, path[l1].y + path[l1].y - path[l1 - 1].y, path[l1].z + path[l1].z - path[l1 - 1].z);
947
+ }
948
+ k = kk + path.length * 12 + 12;
949
+ Vec3.doubleToTwoFloats(first, v_high, v_low);
950
+ vh[k] = v_high.x;
951
+ vh[k + 1] = v_high.y;
952
+ vh[k + 2] = v_high.z;
953
+ vh[k + 3] = v_high.x;
954
+ vh[k + 4] = v_high.y;
955
+ vh[k + 5] = v_high.z;
956
+ vh[k + 6] = v_high.x;
957
+ vh[k + 7] = v_high.y;
958
+ vh[k + 8] = v_high.z;
959
+ vh[k + 9] = v_high.x;
960
+ vh[k + 10] = v_high.y;
961
+ vh[k + 11] = v_high.z;
962
+ vl[k] = v_low.x;
963
+ vl[k + 1] = v_low.y;
964
+ vl[k + 2] = v_low.z;
965
+ vl[k + 3] = v_low.x;
966
+ vl[k + 4] = v_low.y;
967
+ vl[k + 5] = v_low.z;
968
+ vl[k + 6] = v_low.x;
969
+ vl[k + 7] = v_low.y;
970
+ vl[k + 8] = v_low.z;
971
+ vl[k + 9] = v_low.x;
972
+ vl[k + 10] = v_low.y;
973
+ vl[k + 11] = v_low.z;
974
+ }
975
+ this._changedBuffers[VERTICES_BUFFER] = true;
976
+ }
977
+ else {
978
+ let path = this._path3v[segmentIndex];
979
+ path[index].x = coordinates.x;
980
+ path[index].y = coordinates.y;
981
+ path[index].z = coordinates.z;
982
+ }
983
+ }
984
+ _resizePathLengths(index = 0) {
985
+ this._pathLengths[0] = 0;
986
+ for (let i = index + 1, len = this._path3v.length; i <= len; i++) {
987
+ this._pathLengths[i] = this._pathLengths[i - 1] + this._path3v[i - 1].length;
988
+ }
989
+ }
990
+ /**
991
+ * Remove path segment
992
+ * @param {number} index - Path segment index
993
+ */
994
+ removeSegment(index) {
995
+ this._path3v.splice(index, 1);
996
+ this.setPath3v([].concat(this._path3v));
997
+ }
998
+ /**
999
+ * Remove point from the path
1000
+ * @param {number} index - Point index in a path segment
1001
+ * @param {number} [multiLineIndex=0] - Segment path index
1002
+ */
1003
+ removePoint(index, multiLineIndex = 0) {
1004
+ this._path3v[multiLineIndex].splice(index, 1);
1005
+ if (this._path3v[multiLineIndex].length === 0) {
1006
+ this._path3v.splice(multiLineIndex, 1);
1007
+ }
1008
+ this.setPath3v([].concat(this._path3v));
1009
+ }
1010
+ /**
1011
+ * Insert point coordinates in a path segment
1012
+ * @param {Vec3} point3v - Point coordinates
1013
+ * @param {number} [index=0] - Index in the path
1014
+ * @param {NumberArray4} [color] - Point color
1015
+ * @param {number} [multilineIndex=0] - Path segment index
1016
+ */
1017
+ insertPoint3v(point3v, index = 0, color, multilineIndex = 0) {
1018
+ let p = [].concat(this._path3v), pp = p[multilineIndex];
1019
+ if (pp) {
1020
+ let c = [].concat(this._pathColors);
1021
+ pp.splice(index, 0, point3v);
1022
+ if (color) {
1023
+ let cc = c[multilineIndex];
1024
+ if (!cc) {
1025
+ cc = new Array(pp.length);
1026
+ }
1027
+ cc.splice(index, 0, color);
1028
+ }
1029
+ this.setPath3v(p, c);
1030
+ }
1031
+ else {
1032
+ this.addPoint3v(point3v, multilineIndex);
1033
+ }
1034
+ }
1035
+ /**
1036
+ * Adds a new cartesian point in the end of the path in a last line segment.
1037
+ * @public
1038
+ * @param {Vec3} point3v - New coordinates.
1039
+ * @param {NumberArray4} [color] -
1040
+ * @param {boolean} [skipEllipsoid] -
1041
+ */
1042
+ appendPoint3v(point3v, color, skipEllipsoid) {
1043
+ if (this._path3v.length === 0) {
1044
+ this._pathColors.push([color || this._defaultColor]);
1045
+ this.addPoint3v(point3v);
1046
+ }
1047
+ else {
1048
+ //
1049
+ // Making typedArrays suitable for appendPoint function
1050
+ //
1051
+ this._verticesHigh = makeArray(this._verticesHigh);
1052
+ this._verticesLow = makeArray(this._verticesLow);
1053
+ this._colors = makeArray(this._colors);
1054
+ this._orders = makeArray(this._orders);
1055
+ this._indexes = makeArray(this._indexes);
1056
+ Polyline.appendPoint3v(this._path3v, point3v, this._pathColors, color || this._defaultColor, this._closedLine, this._verticesHigh, this._verticesLow, this._colors, this._orders, this._indexes, !skipEllipsoid ? this._renderNode.ellipsoid : null, this._pathLonLat, this._pathLonLatMerc, this._extent);
1057
+ this._pathLengths[this._path3v.length] += 1;
1058
+ this._changedBuffers[VERTICES_BUFFER] = true;
1059
+ this._changedBuffers[COLORS_BUFFER] = true;
1060
+ this._changedBuffers[INDEX_BUFFER] = true;
1061
+ }
1062
+ }
1063
+ /**
1064
+ * Append new point in the end of the path.
1065
+ * @public
1066
+ * @param {Vec3} point3v - New point coordinates.
1067
+ * @param {number} [multiLineIndex=0] - Path segment index, first by default.
1068
+ */
1069
+ addPoint3v(point3v, multiLineIndex = 0) {
1070
+ //
1071
+ // TODO: could be optimized
1072
+ //
1073
+ if (multiLineIndex >= this._path3v.length) {
1074
+ this._path3v.push([]);
1075
+ }
1076
+ this._path3v[multiLineIndex].push(point3v);
1077
+ this.setPath3v([].concat(this._path3v));
1078
+ }
1079
+ /**
1080
+ * Append new geodetic point in the end of the path.
1081
+ * @public
1082
+ * @param {LonLat} lonLat - New coordinate.
1083
+ * @param {number} [multiLineIndex=0] - Path segment index, first by default.
1084
+ */
1085
+ addPointLonLat(lonLat, multiLineIndex = 0) {
1086
+ //
1087
+ // TODO: could be optimized
1088
+ //
1089
+ if (multiLineIndex >= this._pathLonLat.length) {
1090
+ this._pathLonLat.push([]);
1091
+ }
1092
+ this._pathLonLat[multiLineIndex].push(lonLat);
1093
+ this.setPathLonLat([].concat(this._pathLonLat));
1094
+ }
1095
+ /**
1096
+ * Clear polyline data.
1097
+ * @public
1098
+ */
1099
+ clear() {
1100
+ this._clearData();
1101
+ }
1102
+ /**
1103
+ * Change path point color
1104
+ * @param {NumberArray4} color - New color
1105
+ * @param {number} [index=0] - Point index
1106
+ * @param {number} [segmentIndex=0] - Path segment index
1107
+ */
1108
+ setPointColor(color, index = 0, segmentIndex = 0) {
1109
+ if (this._renderNode && index < this._path3v[segmentIndex].length) {
1110
+ let colors = this._pathColors[segmentIndex];
1111
+ if (!colors) {
1112
+ if (this._path3v[segmentIndex] && index < this._path3v[segmentIndex].length) {
1113
+ this._pathColors[segmentIndex] = new Array(this._path3v[segmentIndex].length);
1114
+ }
1115
+ else {
1116
+ return;
1117
+ }
1118
+ }
1119
+ if (!colors[index]) {
1120
+ colors[index] = [color[R], color[G], color[B], color[A] || 1.0];
1121
+ }
1122
+ else {
1123
+ colors[index][R] = color[R];
1124
+ colors[index][G] = color[G];
1125
+ colors[index][B] = color[B];
1126
+ colors[index][A] = color[A] || 1.0;
1127
+ }
1128
+ let c = this._colors;
1129
+ //optimized with this._pathLengths
1130
+ //for (let i = 0; i < segmentIndex; i++) {
1131
+ // kk += this._path3v[i].length * 16 + 32;
1132
+ //}
1133
+ let k = index * 16 + this._pathLengths[segmentIndex] * 16 + 32 * segmentIndex;
1134
+ c[k] = c[k + 4] = c[k + 8] = c[k + 12] = color[R];
1135
+ c[k + 1] = c[k + 5] = c[k + 9] = c[k + 13] = color[G];
1136
+ c[k + 2] = c[k + 6] = c[k + 10] = c[k + 14] = color[B];
1137
+ c[k + 3] = c[k + 7] = c[k + 11] = c[k + 15] = color[A] || 1.0;
1138
+ this._changedBuffers[COLORS_BUFFER] = true;
1139
+ }
1140
+ else {
1141
+ let pathColors = this._pathColors[segmentIndex];
1142
+ pathColors[index] = color;
1143
+ }
1144
+ }
1145
+ /**
1146
+ * Sets polyline opacity.
1147
+ * @public
1148
+ * @param {number} opacity - Opacity.
1149
+ */
1150
+ setOpacity(opacity) {
1151
+ this._opacity = opacity;
1152
+ }
1153
+ /**
1154
+ * Sets Polyline thickness in screen pixels.
1155
+ * @public
1156
+ * @param {number} thickness - Thickness.
1157
+ */
1158
+ setThickness(thickness) {
1159
+ this.thickness = thickness;
1160
+ }
1161
+ /**
1162
+ * Returns thickness.
1163
+ * @public
1164
+ * @return {number} Thickness in screen pixels.
1165
+ */
1166
+ getThickness() {
1167
+ return this.thickness;
1168
+ }
1169
+ /**
1170
+ * Sets visibility.
1171
+ * @public
1172
+ * @param {boolean} visibility - Polyline visibility.
1173
+ */
1174
+ setVisibility(visibility) {
1175
+ this.visibility = visibility;
1176
+ }
1177
+ /**
1178
+ * Gets Polyline visibility.
1179
+ * @public
1180
+ * @return {boolean} Polyline visibility.
1181
+ */
1182
+ getVisibility() {
1183
+ return this.visibility;
1184
+ }
1185
+ /**
1186
+ * Assign with render node.
1187
+ * @public
1188
+ * @param {RenderNode} renderNode -
1189
+ */
1190
+ setRenderNode(renderNode) {
1191
+ if (renderNode) {
1192
+ this._renderNode = renderNode;
1193
+ if (this._pathLonLat.length) {
1194
+ this._createDataLonLat([].concat(this._pathLonLat));
1195
+ }
1196
+ else {
1197
+ this._createData3v([].concat(this._path3v));
1198
+ }
1199
+ this._refresh();
1200
+ if (renderNode.renderer && renderNode.renderer.isInitialized()) {
1201
+ this._update();
1202
+ }
1203
+ }
1204
+ }
1205
+ _clearData() {
1206
+ //@ts-ignore
1207
+ this._verticesHigh = null;
1208
+ //@ts-ignore
1209
+ this._verticesLow = null;
1210
+ //@ts-ignore
1211
+ this._orders = null;
1212
+ //@ts-ignore
1213
+ this._indexes = null;
1214
+ //@ts-ignore
1215
+ this._colors = null;
1216
+ this._verticesHigh = [];
1217
+ this._verticesLow = [];
1218
+ this._orders = [];
1219
+ this._indexes = [];
1220
+ this._colors = [];
1221
+ this._path3v.length = 0;
1222
+ this._pathLonLat.length = 0;
1223
+ this._pathLonLatMerc.length = 0;
1224
+ this._path3v = [];
1225
+ this._pathLonLat = [];
1226
+ this._pathLonLatMerc = [];
1227
+ }
1228
+ _createData3v(path3v) {
1229
+ this._clearData();
1230
+ Polyline.appendLineData3v(path3v, this._pathColors, this._defaultColor, this._closedLine, this._verticesHigh, this._verticesLow, this._orders, this._indexes, this._renderNode.ellipsoid, this._pathLonLat, this._path3v, this._pathLonLatMerc, this._extent, this._colors);
1231
+ this._resizePathLengths(0);
1232
+ }
1233
+ _createDataLonLat(pathLonlat) {
1234
+ this._clearData();
1235
+ Polyline.appendLineDataLonLat(pathLonlat, this._pathColors, this._defaultColor, this._closedLine, this._verticesHigh, this._verticesLow, this._orders, this._indexes, this._renderNode.ellipsoid, this._path3v, this._pathLonLat, this._pathLonLatMerc, this._extent, this._colors);
1236
+ this._resizePathLengths(0);
1237
+ }
1238
+ /**
1239
+ * Removes from an entity.
1240
+ * @public
1241
+ */
1242
+ remove() {
1243
+ this._entity = null;
1244
+ this._pathColors.length = 0;
1245
+ this._pathColors = [];
1246
+ //@ts-ignore
1247
+ this._verticesHigh = null;
1248
+ //@ts-ignore
1249
+ this._verticesLow = null;
1250
+ //@ts-ignore
1251
+ this._orders = null;
1252
+ //@ts-ignore
1253
+ this._indexes = null;
1254
+ //@ts-ignore
1255
+ this._colors = null;
1256
+ this._verticesHigh = [];
1257
+ this._verticesLow = [];
1258
+ this._orders = [];
1259
+ this._indexes = [];
1260
+ this._colors = [];
1261
+ this._deleteBuffers();
1262
+ this._handler && this._handler.remove(this);
1263
+ }
1264
+ setPickingColor3v(color) {
1265
+ this._pickingColor[0] = color.x / 255.0;
1266
+ this._pickingColor[1] = color.y / 255.0;
1267
+ this._pickingColor[2] = color.z / 255.0;
1268
+ }
1269
+ /**
1270
+ * Returns polyline geodetic extent.
1271
+ * @public
1272
+ * @returns {Extent} - Geodetic extent
1273
+ */
1274
+ getExtent() {
1275
+ return this._extent.clone();
1276
+ }
1277
+ /**
1278
+ * Returns path cartesian coordinates.
1279
+ * @return {SegmentPath3vExt[]} Polyline path.
1280
+ */
1281
+ getPath3v() {
1282
+ return this._path3v;
1283
+ }
1284
+ /**
1285
+ * Returns geodetic path coordinates.
1286
+ * @return {SegmentPathLonLatExt[]} Polyline path.
1287
+ */
1288
+ getPathLonLat() {
1289
+ return this._pathLonLat;
1290
+ }
1291
+ getPathColors() {
1292
+ return this._pathColors;
1293
+ }
1294
+ /**
1295
+ * @todo
1296
+ * @param {NumberArray4[][]} pathColors
1297
+ */
1298
+ setPathColors(pathColors) {
1299
+ if (this._renderNode) {
1300
+ //
1301
+ // ...
1302
+ //
1303
+ }
1304
+ }
1305
+ /**
1306
+ * Sets polyline color
1307
+ * @param {string} htmlColor- HTML color
1308
+ */
1309
+ setColorHTML(htmlColor) {
1310
+ this._defaultColor = htmlColorToFloat32Array(htmlColor);
1311
+ let color = htmlColorToRgba(htmlColor), p = this._pathColors;
1312
+ for (let i = 0, len = p.length; i < len; i++) {
1313
+ let s = p[i];
1314
+ for (let j = 0, slen = s.length; j < slen; j++) {
1315
+ s[j][0] = color.x;
1316
+ s[j][1] = color.y;
1317
+ s[j][2] = color.z;
1318
+ s[j][3] = color.w;
1319
+ }
1320
+ }
1321
+ let c = this._colors;
1322
+ for (let i = 0, len = c.length; i < len; i += 4) {
1323
+ c[i] = color.x;
1324
+ c[i + 1] = color.y;
1325
+ c[i + 2] = color.z;
1326
+ c[i + 3] = color.w;
1327
+ }
1328
+ this._changedBuffers[COLORS_BUFFER] = true;
1329
+ }
1330
+ /**
1331
+ * Sets polyline geodetic coordinates.
1332
+ * @public
1333
+ * @param {SegmentPathLonLat[]} pathLonLat - Polyline path cartesian coordinates.
1334
+ * @param {Boolean} [forceEqual=false] - OPTIMIZATION FLAG: Makes assigning faster for size equal coordinates array.
1335
+ */
1336
+ setPathLonLat(pathLonLat, forceEqual = false) {
1337
+ if (this._renderNode && this._renderNode.ellipsoid) {
1338
+ if (forceEqual) {
1339
+ this._setEqualPathLonLat(pathLonLat);
1340
+ this._changedBuffers[VERTICES_BUFFER] = true;
1341
+ this._changedBuffers[COLORS_BUFFER] = true;
1342
+ }
1343
+ else {
1344
+ this._createDataLonLat(pathLonLat);
1345
+ this._changedBuffers[VERTICES_BUFFER] = true;
1346
+ this._changedBuffers[INDEX_BUFFER] = true;
1347
+ this._changedBuffers[COLORS_BUFFER] = true;
1348
+ }
1349
+ }
1350
+ else {
1351
+ this._pathLonLat = [].concat(pathLonLat);
1352
+ }
1353
+ }
1354
+ /**
1355
+ * Sets Polyline cartesian coordinates.
1356
+ * @public
1357
+ * @param {SegmentPath3vExt[]} path3v - Polyline path cartesian coordinates. (exactly 3 entries)
1358
+ * @param {SegmentPathColor[]} [pathColors] - Polyline path cartesian coordinates. (exactly 3 entries)
1359
+ * @param {Boolean} [forceEqual=false] - Makes assigning faster for size equal coordinates array.
1360
+ */
1361
+ setPath3v(path3v, pathColors, forceEqual = false) {
1362
+ if (pathColors) {
1363
+ this._pathColors = [].concat(pathColors);
1364
+ }
1365
+ if (this._renderNode) {
1366
+ if (forceEqual) {
1367
+ this._setEqualPath3v(path3v);
1368
+ this._changedBuffers[VERTICES_BUFFER] = true;
1369
+ this._changedBuffers[COLORS_BUFFER] = true;
1370
+ }
1371
+ else {
1372
+ this._createData3v(path3v);
1373
+ this._changedBuffers[VERTICES_BUFFER] = true;
1374
+ this._changedBuffers[INDEX_BUFFER] = true;
1375
+ this._changedBuffers[COLORS_BUFFER] = true;
1376
+ }
1377
+ }
1378
+ else {
1379
+ this._path3v = [].concat(path3v);
1380
+ }
1381
+ }
1382
+ draw() {
1383
+ if (this.visibility && this._path3v.length) {
1384
+ this._update();
1385
+ let rn = this._renderNode;
1386
+ let r = rn.renderer;
1387
+ let sh = r.handler.programs.polyline_screen;
1388
+ let p = sh._program;
1389
+ let gl = r.handler.gl, sha = p.attributes, shu = p.uniforms;
1390
+ let ec = this._handler._entityCollection;
1391
+ sh.activate();
1392
+ gl.disable(gl.CULL_FACE);
1393
+ gl.uniform1f(shu.depthOffset, ec.polygonOffsetUnits);
1394
+ gl.uniformMatrix4fv(shu.proj, false, r.activeCamera.getProjectionMatrix());
1395
+ gl.uniformMatrix4fv(shu.view, false, r.activeCamera.getViewMatrix());
1396
+ // gl.uniform4fv(shu.color, [this.color.x, this.color.y, this.color.z, this.color.w * this._handler._entityCollection._fadingOpacity]);
1397
+ gl.uniform3fv(shu.eyePositionHigh, r.activeCamera.eyeHigh);
1398
+ gl.uniform3fv(shu.eyePositionLow, r.activeCamera.eyeLow);
1399
+ gl.uniform2fv(shu.uFloatParams, [rn._planetRadius2 || 0.0, r.activeCamera._tanViewAngle_hradOneByHeight]);
1400
+ gl.uniform2fv(shu.viewport, [r.handler.canvas.width, r.handler.canvas.height]);
1401
+ gl.uniform1f(shu.thickness, this.thickness * 0.5);
1402
+ gl.uniform1f(shu.opacity, this._opacity * ec._fadingOpacity);
1403
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._colorsBuffer);
1404
+ gl.vertexAttribPointer(sha.color, this._colorsBuffer.itemSize, gl.FLOAT, false, 0, 0);
1405
+ let v = this._verticesHighBuffer;
1406
+ gl.bindBuffer(gl.ARRAY_BUFFER, v);
1407
+ gl.vertexAttribPointer(sha.prevHigh, v.itemSize, gl.FLOAT, false, 12, 0);
1408
+ gl.vertexAttribPointer(sha.currentHigh, v.itemSize, gl.FLOAT, false, 12, 48);
1409
+ gl.vertexAttribPointer(sha.nextHigh, v.itemSize, gl.FLOAT, false, 12, 96);
1410
+ v = this._verticesLowBuffer;
1411
+ gl.bindBuffer(gl.ARRAY_BUFFER, v);
1412
+ gl.vertexAttribPointer(sha.prevLow, v.itemSize, gl.FLOAT, false, 12, 0);
1413
+ gl.vertexAttribPointer(sha.currentLow, v.itemSize, gl.FLOAT, false, 12, 48);
1414
+ gl.vertexAttribPointer(sha.nextLow, v.itemSize, gl.FLOAT, false, 12, 96);
1415
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._ordersBuffer);
1416
+ gl.vertexAttribPointer(sha.order, this._ordersBuffer.itemSize, gl.FLOAT, false, 4, 0);
1417
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexesBuffer);
1418
+ gl.drawElements(gl.TRIANGLE_STRIP, this._indexesBuffer.numItems, gl.UNSIGNED_INT, 0);
1419
+ gl.enable(gl.CULL_FACE);
1420
+ }
1421
+ }
1422
+ drawPicking() {
1423
+ if (this.visibility && this._path3v.length) {
1424
+ let rn = this._renderNode;
1425
+ let r = rn.renderer;
1426
+ let sh = r.handler.programs.polyline_picking;
1427
+ let p = sh._program;
1428
+ let gl = r.handler.gl, sha = p.attributes, shu = p.uniforms;
1429
+ sh.activate();
1430
+ gl.disable(gl.CULL_FACE);
1431
+ gl.uniform1f(shu.depthOffset, this._handler._entityCollection.polygonOffsetUnits);
1432
+ gl.uniformMatrix4fv(shu.proj, false, r.activeCamera.getProjectionMatrix());
1433
+ gl.uniformMatrix4fv(shu.view, false, r.activeCamera.getViewMatrix());
1434
+ gl.uniform4fv(shu.color, [
1435
+ this._pickingColor[0],
1436
+ this._pickingColor[1],
1437
+ this._pickingColor[2],
1438
+ 1.0
1439
+ ]);
1440
+ gl.uniform3fv(shu.eyePositionHigh, r.activeCamera.eyeHigh);
1441
+ gl.uniform3fv(shu.eyePositionLow, r.activeCamera.eyeLow);
1442
+ gl.uniform2fv(shu.uFloatParams, [rn._planetRadius2 || 0.0, r.activeCamera._tanViewAngle_hradOneByHeight]);
1443
+ //@todo: replace to the handler property
1444
+ gl.uniform2fv(shu.viewport, [r.handler.canvas.width, r.handler.canvas.height]);
1445
+ gl.uniform1f(shu.thickness, this.thickness * 0.5);
1446
+ let v = this._verticesHighBuffer;
1447
+ gl.bindBuffer(gl.ARRAY_BUFFER, v);
1448
+ gl.vertexAttribPointer(sha.prevHigh, v.itemSize, gl.FLOAT, false, 12, 0);
1449
+ gl.vertexAttribPointer(sha.currentHigh, v.itemSize, gl.FLOAT, false, 12, 48);
1450
+ gl.vertexAttribPointer(sha.nextHigh, v.itemSize, gl.FLOAT, false, 12, 96);
1451
+ v = this._verticesLowBuffer;
1452
+ gl.bindBuffer(gl.ARRAY_BUFFER, v);
1453
+ gl.vertexAttribPointer(sha.prevLow, v.itemSize, gl.FLOAT, false, 12, 0);
1454
+ gl.vertexAttribPointer(sha.currentLow, v.itemSize, gl.FLOAT, false, 12, 48);
1455
+ gl.vertexAttribPointer(sha.nextLow, v.itemSize, gl.FLOAT, false, 12, 96);
1456
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._ordersBuffer);
1457
+ gl.vertexAttribPointer(sha.order, this._ordersBuffer.itemSize, gl.FLOAT, false, 4, 0);
1458
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexesBuffer);
1459
+ gl.drawElements(gl.TRIANGLE_STRIP, this._indexesBuffer.numItems, gl.UNSIGNED_INT, 0);
1460
+ gl.enable(gl.CULL_FACE);
1461
+ }
1462
+ }
1463
+ /**
1464
+ * Refresh buffers.
1465
+ * @protected
1466
+ */
1467
+ _refresh() {
1468
+ let i = this._changedBuffers.length;
1469
+ while (i--) {
1470
+ this._changedBuffers[i] = true;
1471
+ }
1472
+ }
1473
+ /**
1474
+ * Updates render buffers.
1475
+ * @protected
1476
+ */
1477
+ _update() {
1478
+ if (this._renderNode) {
1479
+ let i = this._changedBuffers.length;
1480
+ while (i--) {
1481
+ if (this._changedBuffers[i]) {
1482
+ this._buffersUpdateCallbacks[i].call(this);
1483
+ this._changedBuffers[i] = false;
1484
+ }
1485
+ }
1486
+ }
1487
+ }
1488
+ /**
1489
+ * Clear GL buffers.
1490
+ * @public
1491
+ */
1492
+ _deleteBuffers() {
1493
+ if (this._renderNode) {
1494
+ let r = this._renderNode.renderer, gl = r.handler.gl;
1495
+ gl.deleteBuffer(this._verticesHighBuffer);
1496
+ gl.deleteBuffer(this._verticesLowBuffer);
1497
+ gl.deleteBuffer(this._ordersBuffer);
1498
+ gl.deleteBuffer(this._indexesBuffer);
1499
+ gl.deleteBuffer(this._colorsBuffer);
1500
+ this._verticesHighBuffer = null;
1501
+ this._verticesLowBuffer = null;
1502
+ this._ordersBuffer = null;
1503
+ this._indexesBuffer = null;
1504
+ this._colorsBuffer = null;
1505
+ }
1506
+ }
1507
+ /**
1508
+ * Creates vertices buffers.
1509
+ * @protected
1510
+ */
1511
+ _createVerticesBuffer() {
1512
+ let h = this._renderNode.renderer.handler;
1513
+ let numItems = this._verticesHigh.length / 3;
1514
+ if (!this._verticesHighBuffer || this._verticesHighBuffer.numItems !== numItems) {
1515
+ h.gl.deleteBuffer(this._verticesHighBuffer);
1516
+ h.gl.deleteBuffer(this._verticesLowBuffer);
1517
+ this._verticesHighBuffer = h.createStreamArrayBuffer(3, numItems);
1518
+ this._verticesLowBuffer = h.createStreamArrayBuffer(3, numItems);
1519
+ }
1520
+ this._verticesHigh = makeArrayTyped(this._verticesHigh);
1521
+ this._verticesLow = makeArrayTyped(this._verticesLow);
1522
+ h.setStreamArrayBuffer(this._verticesHighBuffer, this._verticesHigh);
1523
+ h.setStreamArrayBuffer(this._verticesLowBuffer, this._verticesLow);
1524
+ }
1525
+ /**
1526
+ * Creates gl index and order buffer.
1527
+ * @protected
1528
+ */
1529
+ _createIndexBuffer() {
1530
+ let h = this._renderNode.renderer.handler;
1531
+ h.gl.deleteBuffer(this._ordersBuffer);
1532
+ h.gl.deleteBuffer(this._indexesBuffer);
1533
+ this._orders = makeArrayTyped(this._orders);
1534
+ this._ordersBuffer = h.createArrayBuffer(this._orders, 1, this._orders.length / 2);
1535
+ this._indexes = makeArrayTyped(this._indexes, Uint32Array);
1536
+ this._indexesBuffer = h.createElementArrayBuffer(this._indexes, 1, this._indexes.length);
1537
+ }
1538
+ _createColorsBuffer() {
1539
+ let h = this._renderNode.renderer.handler;
1540
+ h.gl.deleteBuffer(this._colorsBuffer);
1541
+ this._colors = makeArrayTyped(this._colors);
1542
+ this._colorsBuffer = h.createArrayBuffer(new Float32Array(this._colors), 4, this._colors.length / 4);
1543
+ }
1544
+ }
1545
+ Polyline.__counter__ = 0;
1546
+ export { Polyline };