@openglobus/og 0.17.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +248 -185
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -270
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +777 -595
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -149
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -128
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1168
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -10
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -255
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -595
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
@@ -1,7 +1,11 @@
1
- "use strict";
2
-
3
- import * as shaders from "../shaders/geoObject.js";
4
- import { concatArrays, loadImage, makeArrayTyped, spliceArray } from "../utils/shared.js";
1
+ import * as shaders from "../shaders/geoObject";
2
+ import {concatArrays, loadImage, makeArrayTyped, spliceArray, TypedArray} from "../utils/shared";
3
+ import {EntityCollection} from "./EntityCollection";
4
+ import {GeoObject} from "./GeoObject";
5
+ import {Planet} from "../scene/Planet";
6
+ import {Vec3} from "../math/Vec3";
7
+ import {Vec4} from "../math/Vec4";
8
+ import {WebGLBufferExt, WebGLTextureExt} from "../webgl/Handler";
5
9
 
6
10
  const VERTEX_BUFFER = 0;
7
11
  const POSITION_BUFFER = 1;
@@ -15,24 +19,66 @@ const PICKINGCOLOR_BUFFER = 8;
15
19
  const VISIBLE_BUFFER = 9;
16
20
  const TEXCOORD_BUFFER = 10;
17
21
 
18
- const setParametersToArray = (arr = [], index = 0, length, itemSize, ...params) => {
22
+ function setParametersToArray(arr: number[] | TypedArray, index: number = 0, length: number = 0, itemSize: number = 1, ...params: number[]): number[] | TypedArray {
19
23
  const currIndex = index * length;
20
24
  for (let i = currIndex, len = currIndex + length; i < len; i++) {
21
25
  arr[i] = params[i % itemSize];
22
26
  }
23
27
  return arr;
24
- };
28
+ }
25
29
 
26
- const setParametersToArrayArr = (arr = [], index = 0, length, itemSize, paramsArr) => {
27
- const currIndex = index * length;
28
- for (let i = currIndex, len = currIndex + length; i < len; i++) {
29
- arr[i] = paramsArr[i % itemSize];
30
- }
31
- return arr;
32
- };
30
+ // function setParametersToArrayArr(arr: number[] | TypedArray, index: number = 0, length: number = 0, itemSize: number = 1, paramsArr: number[]): number[] | TypedArray {
31
+ // const currIndex = index * length;
32
+ // for (let i = currIndex, len = currIndex + length; i < len; i++) {
33
+ // arr[i] = paramsArr[i % itemSize];
34
+ // }
35
+ // return arr;
36
+ // }
33
37
 
34
38
  class InstanceData {
35
- constructor(geoObjectHandler) {
39
+
40
+ public isFree: boolean;
41
+
42
+ public _geoObjectHandler: GeoObjectHandler;
43
+
44
+ public geoObjects: GeoObject[];
45
+
46
+ public numInstances: number;
47
+
48
+ public _texture: WebGLTextureExt | null;
49
+ public _textureSrc: string | null;
50
+
51
+ public _pitchRollArr: number[] | TypedArray;
52
+ public _sizeArr: number[] | TypedArray;
53
+ public _vertexArr: number[] | TypedArray;
54
+ public _positionHighArr: number[] | TypedArray;
55
+ public _positionLowArr: number[] | TypedArray;
56
+ public _directionArr: number[] | TypedArray;
57
+ public _rgbaArr: number[] | TypedArray;
58
+ public _normalsArr: number[] | TypedArray;
59
+ public _indicesArr: number[] | TypedArray;
60
+ public _pickingColorArr: number[] | TypedArray;
61
+ public _visibleArr: number[] | TypedArray;
62
+ public _texCoordArr: number[] | TypedArray;
63
+
64
+ public _pitchRollBuffer: WebGLBufferExt | null;
65
+ public _sizeBuffer: WebGLBufferExt | null;
66
+ public _vertexBuffer: WebGLBufferExt | null;
67
+ public _positionHighBuffer: WebGLBufferExt | null;
68
+ public _positionLowBuffer: WebGLBufferExt | null;
69
+ public _directionBuffer: WebGLBufferExt | null;
70
+ public _rgbaBuffer: WebGLBufferExt | null;
71
+ public _normalsBuffer: WebGLBufferExt | null;
72
+ public _indicesBuffer: WebGLBufferExt | null;
73
+ public _pickingColorBuffer: WebGLBufferExt | null;
74
+ public _visibleBuffer: WebGLBufferExt | null;
75
+ public _texCoordBuffer: WebGLBufferExt | null;
76
+
77
+ public _buffersUpdateCallbacks: Function[];
78
+
79
+ public _changedBuffers: boolean[];
80
+
81
+ constructor(geoObjectHandler: GeoObjectHandler) {
36
82
 
37
83
  this.isFree = true;
38
84
 
@@ -87,13 +133,13 @@ class InstanceData {
87
133
  this._changedBuffers = new Array(this._buffersUpdateCallbacks.length);
88
134
  }
89
135
 
90
- createTexture(image) {
136
+ public createTexture(image: HTMLCanvasElement | ImageBitmap | ImageData | HTMLImageElement) {
91
137
  if (this._geoObjectHandler && this._geoObjectHandler._planet) {
92
- this._texture = this._geoObjectHandler._planet.renderer.handler.createTextureDefault(image);
138
+ this._texture = this._geoObjectHandler._planet.renderer!.handler.createTextureDefault(image);
93
139
  }
94
140
  }
95
141
 
96
- clear() {
142
+ public clear() {
97
143
 
98
144
  this.numInstances = 0;
99
145
 
@@ -115,29 +161,32 @@ class InstanceData {
115
161
  this._deleteBuffers();
116
162
 
117
163
  this.isFree = false;
118
- this._geoObjectHandler = null;
164
+
165
+ //this._geoObjectHandler = null;
119
166
  }
120
167
 
121
- _deleteBuffers() {
168
+ public _deleteBuffers() {
169
+
122
170
  if (this._geoObjectHandler && this._geoObjectHandler._planet && this._geoObjectHandler._planet.renderer) {
171
+
123
172
  let h = this._geoObjectHandler._planet.renderer.handler,
124
- gl = h.gl;
173
+ gl = h.gl!;
125
174
 
126
175
  h.deleteTexture(this._texture);
127
176
  this._texture = null;
128
177
 
129
- gl.deleteBuffer(this._pitchRollBuffer);
130
- gl.deleteBuffer(this._sizeBuffer);
131
- gl.deleteBuffer(this._vertexBuffer);
132
- gl.deleteBuffer(this._positionHighBuffer);
133
- gl.deleteBuffer(this._positionLowBuffer);
134
- gl.deleteBuffer(this._directionBuffer);
135
- gl.deleteBuffer(this._rgbaBuffer);
136
- gl.deleteBuffer(this._normalsBuffer);
137
- gl.deleteBuffer(this._indicesBuffer);
138
- gl.deleteBuffer(this._pickingColorBuffer);
139
- gl.deleteBuffer(this._visibleBuffer);
140
- gl.deleteBuffer(this._texCoordBuffer);
178
+ gl.deleteBuffer(this._pitchRollBuffer as WebGLBuffer);
179
+ gl.deleteBuffer(this._sizeBuffer as WebGLBuffer);
180
+ gl.deleteBuffer(this._vertexBuffer as WebGLBuffer);
181
+ gl.deleteBuffer(this._positionHighBuffer as WebGLBuffer);
182
+ gl.deleteBuffer(this._positionLowBuffer as WebGLBuffer);
183
+ gl.deleteBuffer(this._directionBuffer as WebGLBuffer);
184
+ gl.deleteBuffer(this._rgbaBuffer as WebGLBuffer);
185
+ gl.deleteBuffer(this._normalsBuffer as WebGLBuffer);
186
+ gl.deleteBuffer(this._indicesBuffer as WebGLBuffer);
187
+ gl.deleteBuffer(this._pickingColorBuffer as WebGLBuffer);
188
+ gl.deleteBuffer(this._visibleBuffer as WebGLBuffer);
189
+ gl.deleteBuffer(this._texCoordBuffer as WebGLBuffer);
141
190
  }
142
191
 
143
192
  this._pitchRollBuffer = null;
@@ -154,65 +203,71 @@ class InstanceData {
154
203
  this._texCoordBuffer = null;
155
204
  }
156
205
 
157
- createVertexBuffer() {
158
- const h = this._geoObjectHandler._planet.renderer.handler;
159
- h.gl.deleteBuffer(this._vertexBuffer);
206
+ public createVertexBuffer() {
207
+ const h = this._geoObjectHandler._planet!.renderer!.handler;
208
+ h.gl!.deleteBuffer(this._vertexBuffer!);
160
209
  this._vertexArr = makeArrayTyped(this._vertexArr);
161
- this._vertexBuffer = h.createArrayBuffer(this._vertexArr, 3, this._vertexArr.length / 3);
210
+ this._vertexBuffer = h.createArrayBuffer(this._vertexArr as Float32Array, 3, this._vertexArr.length / 3);
162
211
  }
163
212
 
164
- createPitchRollBuffer() {
165
- let h = this._geoObjectHandler._planet.renderer.handler, numItems = this._pitchRollArr.length / 2;
213
+ public createPitchRollBuffer() {
214
+
215
+ let h = this._geoObjectHandler._planet!.renderer!.handler,
216
+ numItems = this._pitchRollArr.length / 2;
166
217
 
167
218
  if (!this._pitchRollBuffer || this._pitchRollBuffer.numItems !== numItems) {
168
- h.gl.deleteBuffer(this._pitchRollBuffer);
219
+ h.gl!.deleteBuffer(this._pitchRollBuffer!);
169
220
  this._pitchRollBuffer = h.createStreamArrayBuffer(2, numItems);
170
221
  }
171
222
 
172
223
  this._pitchRollArr = makeArrayTyped(this._pitchRollArr);
173
224
 
174
- h.setStreamArrayBuffer(this._pitchRollBuffer, this._pitchRollArr);
225
+ h.setStreamArrayBuffer(this._pitchRollBuffer, this._pitchRollArr as Float32Array);
175
226
  }
176
227
 
177
- createVisibleBuffer() {
178
- const h = this._geoObjectHandler._planet.renderer.handler, numItems = this._visibleArr.length;
228
+ public createVisibleBuffer() {
229
+
230
+ const h = this._geoObjectHandler._planet!.renderer!.handler,
231
+ numItems = this._visibleArr.length;
179
232
 
180
233
  if (!this._visibleBuffer || this._visibleBuffer.numItems !== numItems) {
181
- h.gl.deleteBuffer(this._visibleBuffer);
234
+ h.gl!.deleteBuffer(this._visibleBuffer!);
182
235
  this._visibleBuffer = h.createStreamArrayBuffer(1, numItems);
183
236
  }
184
237
 
185
238
  this._visibleArr = makeArrayTyped(this._visibleArr);
186
239
 
187
- h.setStreamArrayBuffer(this._visibleBuffer, this._visibleArr);
240
+ h.setStreamArrayBuffer(this._visibleBuffer, this._visibleArr as Uint8Array);
188
241
  }
189
242
 
190
- createSizeBuffer() {
191
- let h = this._geoObjectHandler._planet.renderer.handler, numItems = this._sizeArr.length;
243
+ public createSizeBuffer() {
244
+ let h = this._geoObjectHandler._planet!.renderer!.handler,
245
+ numItems = this._sizeArr.length;
192
246
 
193
247
  if (!this._sizeBuffer || this._sizeBuffer.numItems !== numItems) {
194
- h.gl.deleteBuffer(this._sizeBuffer);
248
+ h.gl!.deleteBuffer(this._sizeBuffer as WebGLBuffer);
195
249
  this._sizeBuffer = h.createStreamArrayBuffer(1, numItems);
196
250
  }
197
251
 
198
252
  this._sizeArr = makeArrayTyped(this._sizeArr);
199
253
 
200
- h.setStreamArrayBuffer(this._sizeBuffer, this._sizeArr);
254
+ h.setStreamArrayBuffer(this._sizeBuffer, this._sizeArr as Float32Array);
201
255
  }
202
256
 
203
- createTexCoordBuffer() {
204
- const h = this._geoObjectHandler._planet.renderer.handler;
205
- h.gl.deleteBuffer(this._texCoordBuffer);
257
+ public createTexCoordBuffer() {
258
+ const h = this._geoObjectHandler._planet!.renderer!.handler;
259
+ h.gl!.deleteBuffer(this._texCoordBuffer as WebGLBuffer);
206
260
  this._texCoordArr = makeArrayTyped(this._texCoordArr);
207
- this._texCoordBuffer = h.createArrayBuffer(this._texCoordArr, 2, this._texCoordArr.length / 2);
261
+ this._texCoordBuffer = h.createArrayBuffer(this._texCoordArr as Uint8Array, 2, this._texCoordArr.length / 2);
208
262
  }
209
263
 
210
- createPositionBuffer() {
211
- let h = this._geoObjectHandler._planet.renderer.handler, numItems = this._positionHighArr.length / 3;
264
+ public createPositionBuffer() {
265
+ let h = this._geoObjectHandler._planet!.renderer!.handler,
266
+ numItems = this._positionHighArr.length / 3;
212
267
 
213
268
  if (!this._positionHighBuffer || this._positionHighBuffer.numItems !== numItems) {
214
- h.gl.deleteBuffer(this._positionHighBuffer);
215
- h.gl.deleteBuffer(this._positionLowBuffer);
269
+ h.gl!.deleteBuffer(this._positionHighBuffer as WebGLBuffer);
270
+ h.gl!.deleteBuffer(this._positionLowBuffer as WebGLBuffer);
216
271
  this._positionHighBuffer = h.createStreamArrayBuffer(3, numItems);
217
272
  this._positionLowBuffer = h.createStreamArrayBuffer(3, numItems);
218
273
  }
@@ -220,65 +275,67 @@ class InstanceData {
220
275
  this._positionHighArr = makeArrayTyped(this._positionHighArr);
221
276
  this._positionLowArr = makeArrayTyped(this._positionLowArr);
222
277
 
223
- h.setStreamArrayBuffer(this._positionHighBuffer, this._positionHighArr);
224
- h.setStreamArrayBuffer(this._positionLowBuffer, this._positionLowArr);
278
+ h.setStreamArrayBuffer(this._positionHighBuffer!, this._positionHighArr as Float32Array);
279
+ h.setStreamArrayBuffer(this._positionLowBuffer!, this._positionLowArr as Float32Array);
225
280
  }
226
281
 
227
- createRgbaBuffer() {
228
- let h = this._geoObjectHandler._planet.renderer.handler, numItems = this._rgbaArr.length / 4;
282
+ public createRgbaBuffer() {
283
+ let h = this._geoObjectHandler._planet!.renderer!.handler,
284
+ numItems = this._rgbaArr.length / 4;
229
285
 
230
286
  if (!this._rgbaBuffer || this._rgbaBuffer.numItems !== numItems) {
231
- h.gl.deleteBuffer(this._rgbaBuffer);
287
+ h.gl!.deleteBuffer(this._rgbaBuffer as WebGLBuffer);
232
288
  this._rgbaBuffer = h.createStreamArrayBuffer(4, numItems);
233
289
  }
234
290
 
235
291
  this._rgbaArr = makeArrayTyped(this._rgbaArr);
236
292
 
237
- h.setStreamArrayBuffer(this._rgbaBuffer, this._rgbaArr);
293
+ h.setStreamArrayBuffer(this._rgbaBuffer, this._rgbaArr as Uint8Array);
238
294
  }
239
295
 
240
- createDirectionBuffer() {
241
- let h = this._geoObjectHandler._planet.renderer.handler, numItems = this._directionArr.length / 3;
296
+ public createDirectionBuffer() {
297
+ let h = this._geoObjectHandler._planet!.renderer!.handler,
298
+ numItems = this._directionArr.length / 3;
242
299
 
243
300
  if (!this._directionBuffer || this._directionBuffer.numItems !== numItems) {
244
- h.gl.deleteBuffer(this._directionBuffer);
301
+ h.gl!.deleteBuffer(this._directionBuffer as WebGLBuffer);
245
302
  this._directionBuffer = h.createStreamArrayBuffer(3, numItems);
246
303
  }
247
304
 
248
305
  this._directionArr = makeArrayTyped(this._directionArr);
249
306
 
250
- h.setStreamArrayBuffer(this._directionBuffer, this._directionArr);
307
+ h.setStreamArrayBuffer(this._directionBuffer, this._directionArr as Float32Array);
251
308
  }
252
309
 
253
- createNormalsBuffer() {
254
- const h = this._geoObjectHandler._planet.renderer.handler;
255
- h.gl.deleteBuffer(this._normalsBuffer);
310
+ public createNormalsBuffer() {
311
+ const h = this._geoObjectHandler._planet!.renderer!.handler;
312
+ h.gl!.deleteBuffer(this._normalsBuffer as WebGLBuffer);
256
313
  this._normalsArr = makeArrayTyped(this._normalsArr);
257
- this._normalsBuffer = h.createArrayBuffer(this._normalsArr, 3, this._normalsArr.length / 3);
314
+ this._normalsBuffer = h.createArrayBuffer(this._normalsArr as Uint8Array, 3, this._normalsArr.length / 3);
258
315
  }
259
316
 
260
- createIndicesBuffer() {
261
- const h = this._geoObjectHandler._planet.renderer.handler;
262
- h.gl.deleteBuffer(this._indicesBuffer);
317
+ public createIndicesBuffer() {
318
+ const h = this._geoObjectHandler._planet!.renderer!.handler;
319
+ h.gl!.deleteBuffer(this._indicesBuffer as WebGLBuffer);
263
320
  this._indicesArr = makeArrayTyped(this._indicesArr, Uint32Array);
264
- this._indicesBuffer = h.createElementArrayBuffer(this._indicesArr, 1, this._indicesArr.length);
321
+ this._indicesBuffer = h.createElementArrayBuffer(this._indicesArr as Uint32Array, 1, this._indicesArr.length);
265
322
  }
266
323
 
267
- createPickingColorBuffer() {
268
- const h = this._geoObjectHandler._planet.renderer.handler;
269
- h.gl.deleteBuffer(this._pickingColorBuffer);
324
+ public createPickingColorBuffer() {
325
+ const h = this._geoObjectHandler._planet!.renderer!.handler;
326
+ h.gl!.deleteBuffer(this._pickingColorBuffer as WebGLBuffer);
270
327
  this._pickingColorArr = makeArrayTyped(this._pickingColorArr);
271
- this._pickingColorBuffer = h.createArrayBuffer(this._pickingColorArr, 3, this._pickingColorArr.length / 3);
328
+ this._pickingColorBuffer = h.createArrayBuffer(this._pickingColorArr as Uint8Array, 3, this._pickingColorArr.length / 3);
272
329
  }
273
330
 
274
- refresh() {
331
+ public refresh() {
275
332
  let i = this._changedBuffers.length;
276
333
  while (i--) {
277
334
  this._changedBuffers[i] = true;
278
335
  }
279
336
  }
280
337
 
281
- update() {
338
+ public update() {
282
339
  if (this._geoObjectHandler._planet) {
283
340
  let i = this._changedBuffers.length;
284
341
  while (i--) {
@@ -293,15 +350,31 @@ class InstanceData {
293
350
  }
294
351
 
295
352
  class GeoObjectHandler {
296
- constructor(entityCollection) {
353
+ static __counter__ = 0;
354
+
355
+ protected __id: number;
356
+
357
+ /**
358
+ * Picking rendering option.
359
+ * @public
360
+ * @type {boolean}
361
+ */
362
+ public pickingEnabled: boolean;
297
363
 
298
- this.__staticId = GeoObjectHandler._staticCounter++;
364
+ protected _entityCollection: EntityCollection;
365
+
366
+ public _planet: Planet | null;
367
+
368
+ protected _geoObjects: GeoObject[];
369
+
370
+ protected _instanceDataMap: Map<string, InstanceData>;
371
+ protected _instanceDataMapValues: InstanceData[];
372
+ protected _dataTagUpdateQueue: InstanceData[];
373
+
374
+ constructor(entityCollection: EntityCollection) {
375
+
376
+ this.__id = GeoObjectHandler.__counter__++;
299
377
 
300
- /**
301
- * Picking rendering option.
302
- * @public
303
- * @type {boolean}
304
- */
305
378
  this.pickingEnabled = true;
306
379
 
307
380
  this._entityCollection = entityCollection;
@@ -310,27 +383,13 @@ class GeoObjectHandler {
310
383
 
311
384
  this._geoObjects = [];
312
385
 
313
- this._instanceDataMap = new Map();
386
+ this._instanceDataMap = new Map<string, InstanceData>();
314
387
  this._instanceDataMapValues = [];
315
388
 
316
-
317
389
  this._dataTagUpdateQueue = [];
318
390
  }
319
391
 
320
- //Create buffers
321
-
322
- static get _staticCounter() {
323
- if (!this._counter && this._counter !== 0) {
324
- this._counter = 0;
325
- }
326
- return this._counter;
327
- }
328
-
329
- static set _staticCounter(n) {
330
- this._counter = n;
331
- }
332
-
333
- initProgram() {
392
+ public initProgram() {
334
393
  if (this._planet && this._planet.renderer) {
335
394
  if (!this._planet.renderer.handler.programs.geo_object) {
336
395
  this._planet.renderer.handler.addProgram(shaders.geo_object());
@@ -341,8 +400,10 @@ class GeoObjectHandler {
341
400
  }
342
401
  }
343
402
 
344
- setRenderNode(renderNode) {
403
+ public setRenderNode(renderNode: Planet) {
404
+
345
405
  this._planet = renderNode;
406
+
346
407
  this.initProgram();
347
408
 
348
409
  //
@@ -358,7 +419,7 @@ class GeoObjectHandler {
358
419
  this.update();
359
420
  }
360
421
 
361
- _addGeoObjectToArray(geoObject) {
422
+ protected _addGeoObjectToArray(geoObject: GeoObject) {
362
423
  const tag = geoObject.tag;
363
424
 
364
425
  let tagData = this._instanceDataMap.get(tag);
@@ -385,9 +446,13 @@ class GeoObjectHandler {
385
446
 
386
447
  let itemSize = 3;
387
448
 
388
- tagData._visibleArr = concatArrays(tagData._visibleArr, setParametersToArray([], 0, 1, 1, geoObject._visibility ? 1 : 0));
449
+ tagData._visibleArr = concatArrays(tagData._visibleArr, setParametersToArray([], 0, 1, 1, geoObject.getVisibility() ? 1 : 0));
450
+
451
+ let x = geoObject._positionHigh.x,
452
+ y = geoObject._positionHigh.y,
453
+ z = geoObject._positionHigh.z,
454
+ w;
389
455
 
390
- let x = geoObject._positionHigh.x, y = geoObject._positionHigh.y, z = geoObject._positionHigh.z, w;
391
456
  tagData._positionHighArr = concatArrays(tagData._positionHighArr, setParametersToArray([], 0, itemSize, itemSize, x, y, z));
392
457
 
393
458
  x = geoObject._positionLow.x;
@@ -395,9 +460,9 @@ class GeoObjectHandler {
395
460
  z = geoObject._positionLow.z;
396
461
  tagData._positionLowArr = concatArrays(tagData._positionLowArr, setParametersToArray([], 0, itemSize, itemSize, x, y, z));
397
462
 
398
- x = geoObject._entity._pickingColor.x / 255;
399
- y = geoObject._entity._pickingColor.y / 255;
400
- z = geoObject._entity._pickingColor.z / 255;
463
+ x = geoObject._entity!._pickingColor.x / 255;
464
+ y = geoObject._entity!._pickingColor.y / 255;
465
+ z = geoObject._entity!._pickingColor.z / 255;
401
466
  tagData._pickingColorArr = concatArrays(tagData._pickingColorArr, setParametersToArray([], 0, itemSize, itemSize, x, y, z));
402
467
 
403
468
  x = geoObject._direction.x;
@@ -415,18 +480,23 @@ class GeoObjectHandler {
415
480
 
416
481
  itemSize = 2;
417
482
 
418
- x = geoObject._pitch;
419
- y = geoObject._roll;
483
+ x = geoObject.getPitch();
484
+ y = geoObject.getRoll();
420
485
  tagData._pitchRollArr = concatArrays(tagData._pitchRollArr, setParametersToArray([], 0, itemSize, itemSize, x, y));
421
486
 
422
487
  itemSize = 1;
423
488
 
424
- tagData._sizeArr = concatArrays(tagData._sizeArr, setParametersToArray([], 0, itemSize, itemSize, geoObject._scale));
489
+ tagData._sizeArr = concatArrays(tagData._sizeArr, setParametersToArray([], 0, itemSize, itemSize, geoObject.getScale()));
425
490
  }
426
491
 
427
- _displayPASS() {
428
- let r = this._planet.renderer, sh = r.handler.programs.geo_object, p = sh._program, u = p.uniforms,
429
- a = p.attributes, gl = r.handler.gl, ec = this._entityCollection;
492
+ public _displayPASS() {
493
+ let r = this._planet!.renderer!,
494
+ sh = r.handler.programs.geo_object,
495
+ p = sh._program,
496
+ u = p.uniforms,
497
+ a = p.attributes,
498
+ gl = r.handler.gl!,
499
+ ec = this._entityCollection;
430
500
 
431
501
  sh.activate();
432
502
 
@@ -435,15 +505,15 @@ class GeoObjectHandler {
435
505
  //
436
506
  gl.uniform3fv(u.uScaleByDistance, ec.scaleByDistance);
437
507
 
438
- gl.uniform3fv(u.eyePositionHigh, r.activeCamera.eyeHigh);
439
- gl.uniform3fv(u.eyePositionLow, r.activeCamera.eyeLow);
508
+ gl.uniform3fv(u.eyePositionHigh, r.activeCamera!.eyeHigh);
509
+ gl.uniform3fv(u.eyePositionLow, r.activeCamera!.eyeLow);
440
510
 
441
- gl.uniformMatrix4fv(u.projectionMatrix, false, r.activeCamera.getProjectionMatrix());
442
- gl.uniformMatrix4fv(u.viewMatrix, false, r.activeCamera.getViewMatrix());
511
+ gl.uniformMatrix4fv(u.projectionMatrix, false, r.activeCamera!.getProjectionMatrix());
512
+ gl.uniformMatrix4fv(u.viewMatrix, false, r.activeCamera!.getViewMatrix());
443
513
 
444
- gl.uniform3fv(u.lightsPositions, this._planet._lightsPositions);
445
- gl.uniform3fv(u.lightsParamsv, this._planet._lightsParamsv);
446
- gl.uniform1fv(u.lightsParamsf, this._planet._lightsParamsf);
514
+ gl.uniform3fv(u.lightsPositions, this._planet!._lightsPositions);
515
+ gl.uniform3fv(u.lightsParamsv, this._planet!._lightsParamsv);
516
+ gl.uniform1fv(u.lightsParamsf, this._planet!._lightsParamsf);
447
517
 
448
518
  for (let i = 0; i < this._instanceDataMapValues.length; i++) {
449
519
  let tagData = this._instanceDataMapValues[i];
@@ -451,64 +521,64 @@ class GeoObjectHandler {
451
521
  //
452
522
  // Instance individual data
453
523
  //
454
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._directionBuffer);
455
- gl.vertexAttribPointer(a.aDirection, tagData._directionBuffer.itemSize, gl.FLOAT, false, 0, 0);
524
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._directionBuffer!);
525
+ gl.vertexAttribPointer(a.aDirection, tagData._directionBuffer!.itemSize, gl.FLOAT, false, 0, 0);
456
526
 
457
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._sizeBuffer);
458
- gl.vertexAttribPointer(a.aScale, tagData._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
527
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._sizeBuffer!);
528
+ gl.vertexAttribPointer(a.aScale, tagData._sizeBuffer!.itemSize, gl.FLOAT, false, 0, 0);
459
529
 
460
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pitchRollBuffer);
461
- gl.vertexAttribPointer(a.aPitchRoll, tagData._pitchRollBuffer.itemSize, gl.FLOAT, false, 0, 0);
530
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pitchRollBuffer!);
531
+ gl.vertexAttribPointer(a.aPitchRoll, tagData._pitchRollBuffer!.itemSize, gl.FLOAT, false, 0, 0);
462
532
 
463
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._rgbaBuffer);
464
- gl.vertexAttribPointer(a.aColor, tagData._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0);
533
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._rgbaBuffer!);
534
+ gl.vertexAttribPointer(a.aColor, tagData._rgbaBuffer!.itemSize, gl.FLOAT, false, 0, 0);
465
535
 
466
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._visibleBuffer);
467
- gl.vertexAttribPointer(a.aDispose, tagData._visibleBuffer.itemSize, gl.FLOAT, false, 0, 0);
536
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._visibleBuffer!);
537
+ gl.vertexAttribPointer(a.aDispose, tagData._visibleBuffer!.itemSize, gl.FLOAT, false, 0, 0);
468
538
 
469
539
  gl.uniform1f(u.uUseTexture, tagData._texture ? 1 : 0);
470
540
 
471
541
  //
472
542
  // Instance common data(could be in VAO)
473
543
  //
474
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionHighBuffer);
475
- gl.vertexAttribPointer(a.aPositionHigh, tagData._positionHighBuffer.itemSize, gl.FLOAT, false, 0, 0);
544
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionHighBuffer!);
545
+ gl.vertexAttribPointer(a.aPositionHigh, tagData._positionHighBuffer!.itemSize, gl.FLOAT, false, 0, 0);
476
546
 
477
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionLowBuffer);
478
- gl.vertexAttribPointer(a.aPositionLow, tagData._positionLowBuffer.itemSize, gl.FLOAT, false, 0, 0);
547
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionLowBuffer!);
548
+ gl.vertexAttribPointer(a.aPositionLow, tagData._positionLowBuffer!.itemSize, gl.FLOAT, false, 0, 0);
479
549
 
480
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._normalsBuffer);
481
- gl.vertexAttribPointer(a.aVertexNormal, tagData._normalsBuffer.itemSize, gl.FLOAT, false, 0, 0);
550
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._normalsBuffer!);
551
+ gl.vertexAttribPointer(a.aVertexNormal, tagData._normalsBuffer!.itemSize, gl.FLOAT, false, 0, 0);
482
552
 
483
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._vertexBuffer);
484
- gl.vertexAttribPointer(a.aVertexPosition, tagData._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
553
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._vertexBuffer!);
554
+ gl.vertexAttribPointer(a.aVertexPosition, tagData._vertexBuffer!.itemSize, gl.FLOAT, false, 0, 0);
485
555
 
486
556
  gl.activeTexture(gl.TEXTURE0);
487
- gl.bindTexture(gl.TEXTURE_2D, tagData._texture || r.handler.defaultTexture);
557
+ gl.bindTexture(gl.TEXTURE_2D, (tagData._texture || r.handler.defaultTexture)!);
488
558
  gl.uniform1i(u.uTexture, 0);
489
559
 
490
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._texCoordBuffer);
491
- gl.vertexAttribPointer(a.aTexCoord, tagData._texCoordBuffer.itemSize, gl.FLOAT, false, 0, 0);
560
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._texCoordBuffer!);
561
+ gl.vertexAttribPointer(a.aTexCoord, tagData._texCoordBuffer!.itemSize, gl.FLOAT, false, 0, 0);
492
562
 
493
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, tagData._indicesBuffer);
494
- p.drawElementsInstanced(gl.TRIANGLES, tagData._indicesBuffer.numItems, gl.UNSIGNED_INT, 0, tagData.numInstances);
563
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, tagData._indicesBuffer!);
564
+ p.drawElementsInstanced!(gl.TRIANGLES, tagData._indicesBuffer!.numItems, gl.UNSIGNED_INT, 0, tagData.numInstances);
495
565
  }
496
566
  }
497
567
 
498
- drawPicking() {
568
+ public drawPicking() {
499
569
  if (this._geoObjects.length && this.pickingEnabled) {
500
570
  this.update();
501
571
  this._pickingPASS();
502
572
  }
503
573
  }
504
574
 
505
- _pickingPASS() {
506
- let r = this._planet.renderer,
575
+ protected _pickingPASS() {
576
+ let r = this._planet!.renderer!,
507
577
  sh = r.handler.programs.geo_object_picking,
508
578
  p = sh._program,
509
579
  u = p.uniforms,
510
580
  a = p.attributes,
511
- gl = r.handler.gl,
581
+ gl = r.handler.gl!,
512
582
  ec = this._entityCollection;
513
583
 
514
584
  sh.activate();
@@ -517,11 +587,11 @@ class GeoObjectHandler {
517
587
 
518
588
  gl.uniform1f(u.pickingScale, ec.pickingScale);
519
589
 
520
- gl.uniform3fv(u.eyePositionHigh, r.activeCamera.eyeHigh);
521
- gl.uniform3fv(u.eyePositionLow, r.activeCamera.eyeLow);
590
+ gl.uniform3fv(u.eyePositionHigh, r.activeCamera!.eyeHigh);
591
+ gl.uniform3fv(u.eyePositionLow, r.activeCamera!.eyeLow);
522
592
 
523
- gl.uniformMatrix4fv(u.projectionMatrix, false, r.activeCamera.getProjectionMatrix());
524
- gl.uniformMatrix4fv(u.viewMatrix, false, r.activeCamera.getViewMatrix());
593
+ gl.uniformMatrix4fv(u.projectionMatrix, false, r.activeCamera!.getProjectionMatrix());
594
+ gl.uniformMatrix4fv(u.viewMatrix, false, r.activeCamera!.getViewMatrix());
525
595
 
526
596
  for (let i = 0; i < this._instanceDataMapValues.length; i++) {
527
597
  let tagData = this._instanceDataMapValues[i];
@@ -529,71 +599,71 @@ class GeoObjectHandler {
529
599
  //
530
600
  // Instance individual data
531
601
  //
532
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._directionBuffer);
533
- gl.vertexAttribPointer(a.aDirection, tagData._directionBuffer.itemSize, gl.FLOAT, false, 0, 0);
602
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._directionBuffer!);
603
+ gl.vertexAttribPointer(a.aDirection, tagData._directionBuffer!.itemSize, gl.FLOAT, false, 0, 0);
534
604
 
535
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._sizeBuffer);
536
- gl.vertexAttribPointer(a.aScale, tagData._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
605
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._sizeBuffer!);
606
+ gl.vertexAttribPointer(a.aScale, tagData._sizeBuffer!.itemSize, gl.FLOAT, false, 0, 0);
537
607
 
538
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pitchRollBuffer);
539
- gl.vertexAttribPointer(a.aPitchRoll, tagData._pitchRollBuffer.itemSize, gl.FLOAT, false, 0, 0);
608
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pitchRollBuffer!);
609
+ gl.vertexAttribPointer(a.aPitchRoll, tagData._pitchRollBuffer!.itemSize, gl.FLOAT, false, 0, 0);
540
610
 
541
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pickingColorBuffer);
542
- gl.vertexAttribPointer(a.aPickingColor, tagData._pickingColorBuffer.itemSize, gl.FLOAT, false, 0, 0);
611
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._pickingColorBuffer!);
612
+ gl.vertexAttribPointer(a.aPickingColor, tagData._pickingColorBuffer!.itemSize, gl.FLOAT, false, 0, 0);
543
613
 
544
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionHighBuffer);
545
- gl.vertexAttribPointer(a.aPositionHigh, tagData._positionHighBuffer.itemSize, gl.FLOAT, false, 0, 0);
614
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionHighBuffer!);
615
+ gl.vertexAttribPointer(a.aPositionHigh, tagData._positionHighBuffer!.itemSize, gl.FLOAT, false, 0, 0);
546
616
 
547
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionLowBuffer);
548
- gl.vertexAttribPointer(a.aPositionLow, tagData._positionLowBuffer.itemSize, gl.FLOAT, false, 0, 0);
617
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._positionLowBuffer!);
618
+ gl.vertexAttribPointer(a.aPositionLow, tagData._positionLowBuffer!.itemSize, gl.FLOAT, false, 0, 0);
549
619
 
550
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._visibleBuffer);
551
- gl.vertexAttribPointer(a.aDispose, tagData._visibleBuffer.itemSize, gl.FLOAT, false, 0, 0);
620
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._visibleBuffer!);
621
+ gl.vertexAttribPointer(a.aDispose, tagData._visibleBuffer!.itemSize, gl.FLOAT, false, 0, 0);
552
622
 
553
623
  //
554
624
  // Instance common data(could be in VAO)
555
625
  //
556
- gl.bindBuffer(gl.ARRAY_BUFFER, tagData._vertexBuffer);
557
- gl.vertexAttribPointer(a.aVertexPosition, tagData._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
626
+ gl.bindBuffer(gl.ARRAY_BUFFER, tagData._vertexBuffer!);
627
+ gl.vertexAttribPointer(a.aVertexPosition, tagData._vertexBuffer!.itemSize, gl.FLOAT, false, 0, 0);
558
628
 
559
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, tagData._indicesBuffer);
560
- p.drawElementsInstanced(gl.TRIANGLES, tagData._indicesBuffer.numItems, gl.UNSIGNED_INT, 0, tagData.numInstances);
629
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, tagData._indicesBuffer!);
630
+ p.drawElementsInstanced!(gl.TRIANGLES, tagData._indicesBuffer!.numItems, gl.UNSIGNED_INT, 0, tagData.numInstances);
561
631
  }
562
632
  }
563
633
 
564
- async _loadDataTagTexture(tagData) {
634
+ async _loadDataTagTexture(tagData: InstanceData) {
565
635
  if (this._planet && tagData._textureSrc) {
566
636
  const image = await loadImage(tagData._textureSrc);
567
637
  tagData.createTexture(image);
568
638
  }
569
639
  }
570
640
 
571
- setDirectionArr(tagData, tagDataIndex, direction) {
641
+ public setDirectionArr(tagData: InstanceData, tagDataIndex: number, direction: Vec3) {
572
642
  setParametersToArray(tagData._directionArr, tagDataIndex, 3, 3, direction.x, direction.y, direction.z);
573
643
  tagData._changedBuffers[DIRECTION_BUFFER] = true;
574
644
  this._updateTag(tagData);
575
645
  }
576
646
 
577
- setVisibility(tagData, tagDataIndex, visibility) {
647
+ public setVisibility(tagData: InstanceData, tagDataIndex: number, visibility: boolean) {
578
648
  setParametersToArray(tagData._visibleArr, tagDataIndex, 1, 1, visibility ? 1 : 0);
579
649
  tagData._changedBuffers[VISIBLE_BUFFER] = true;
580
650
  this._updateTag(tagData);
581
651
  }
582
652
 
583
- setPositionArr(tagData, tagDataIndex, positionHigh, positionLow) {
653
+ public setPositionArr(tagData: InstanceData, tagDataIndex: number, positionHigh: Vec3, positionLow: Vec3) {
584
654
  setParametersToArray(tagData._positionHighArr, tagDataIndex, 3, 3, positionHigh.x, positionHigh.y, positionHigh.z);
585
655
  setParametersToArray(tagData._positionLowArr, tagDataIndex, 3, 3, positionLow.x, positionLow.y, positionLow.z);
586
656
  tagData._changedBuffers[POSITION_BUFFER] = true;
587
657
  this._updateTag(tagData);
588
658
  }
589
659
 
590
- setRgbaArr(tagData, tagDataIndex, rgba) {
660
+ public setRgbaArr(tagData: InstanceData, tagDataIndex: number, rgba: Vec4) {
591
661
  setParametersToArray(tagData._rgbaArr, tagDataIndex, 4, 4, rgba.x, rgba.y, rgba.z, rgba.w);
592
662
  tagData._changedBuffers[RGBA_BUFFER] = true;
593
663
  this._updateTag(tagData);
594
664
  }
595
665
 
596
- setPickingColorArr(tagData, tagDataIndex, color) {
666
+ public setPickingColorArr(tagData: InstanceData, tagDataIndex: number, color: Vec3) {
597
667
  setParametersToArray(tagData._pickingColorArr, tagDataIndex, 3, 3, color.x / 255, color.y / 255, color.z / 255);
598
668
  tagData._changedBuffers[PICKINGCOLOR_BUFFER] = true;
599
669
  this._updateTag(tagData);
@@ -605,42 +675,42 @@ class GeoObjectHandler {
605
675
  // this._updateTag(tagData);
606
676
  // }
607
677
 
608
- setPitchRollArr(tagData, tagDataIndex, pitch, roll) {
678
+ public setPitchRollArr(tagData: InstanceData, tagDataIndex: number, pitch: number, roll: number) {
609
679
  setParametersToArray(tagData._pitchRollArr, tagDataIndex, 2, 2, pitch, roll);
610
680
  tagData._changedBuffers[PITCH_ROLL_BUFFER] = true;
611
681
  this._updateTag(tagData);
612
682
  }
613
683
 
614
- setScaleArr(tagData, tagDataIndex, scale) {
684
+ public setScaleArr(tagData: InstanceData, tagDataIndex: number, scale: number) {
615
685
  setParametersToArray(tagData._sizeArr, tagDataIndex, 1, 1, scale);
616
686
  tagData._changedBuffers[SIZE_BUFFER] = true;
617
687
  this._updateTag(tagData);
618
688
  }
619
689
 
620
- _updateTag(dataTag) {
690
+ protected _updateTag(dataTag: InstanceData) {
621
691
  if (dataTag.isFree) {
622
692
  dataTag.isFree = false;
623
693
  this._dataTagUpdateQueue.push(dataTag);
624
694
  }
625
695
  }
626
696
 
627
- update() {
697
+ public update() {
628
698
  for (let i = 0, len = this._dataTagUpdateQueue.length; i < len; i++) {
629
699
  this._dataTagUpdateQueue[i].update();
630
700
  }
631
701
  this._dataTagUpdateQueue = [];
632
702
  }
633
703
 
634
- _removeAll() {
704
+ public _removeAll() {
635
705
  let i = this._geoObjects.length;
636
706
  while (i--) {
637
707
  const gi = this._geoObjects[i];
638
708
 
639
709
  gi._tagDataIndex = -1;
640
- gi._tagData = undefined;
710
+ gi._tagData = null;
641
711
 
642
712
  gi._handlerIndex = -1;
643
- gi._handler = undefined;
713
+ gi._handler = null;
644
714
  }
645
715
  this._geoObjects.length = 0;
646
716
  this._geoObjects = [];
@@ -653,18 +723,19 @@ class GeoObjectHandler {
653
723
  this._instanceDataMapValues = [];
654
724
  }
655
725
 
656
- clear() {
726
+ public clear() {
657
727
  this._removeAll();
658
728
  }
659
729
 
660
- draw() {
730
+ public draw() {
661
731
  if (this._geoObjects.length) {
662
732
  this.update();
663
733
  this._displayPASS();
664
734
  }
665
735
  }
666
736
 
667
- add(geoObject) {
737
+ public add(geoObject: GeoObject) {
738
+
668
739
  if (geoObject._handlerIndex === -1) {
669
740
 
670
741
  geoObject._handler = this;
@@ -673,25 +744,28 @@ class GeoObjectHandler {
673
744
  this._geoObjects.push(geoObject);
674
745
  this._addGeoObjectToArray(geoObject);
675
746
 
676
- geoObject._tagData.refresh();
677
- this._updateTag(geoObject._tagData);
747
+ geoObject.updateDirection();
748
+
749
+ geoObject._tagData!.refresh();
750
+
751
+ this._updateTag(geoObject._tagData!);
678
752
  }
679
753
  }
680
754
 
681
- remove(geoObject) {
682
- if (geoObject._handler && this.__staticId == geoObject._handler.__staticId) {
755
+ public remove(geoObject: GeoObject) {
756
+ if (geoObject._handler && this.__id == geoObject._handler.__id) {
683
757
  this._removeGeoObject(geoObject);
684
758
  }
685
759
  }
686
760
 
687
- _clearDataTagQueue() {
761
+ public _clearDataTagQueue() {
688
762
  this._dataTagUpdateQueue = [];
689
763
  }
690
764
 
691
765
 
692
- _removeGeoObject(geoObject) {
766
+ public _removeGeoObject(geoObject: GeoObject) {
693
767
 
694
- let tagData = geoObject._tagData;
768
+ let tagData = geoObject._tagData!;
695
769
  let tag = geoObject.tag;
696
770
 
697
771
  tagData.numInstances--;
@@ -714,6 +788,7 @@ class GeoObjectHandler {
714
788
 
715
789
  let tdi = geoObject._tagDataIndex;
716
790
  tagData.geoObjects.splice(tdi, 1);
791
+
717
792
  for (let i = geoObject._tagDataIndex, len = tagData.geoObjects.length; i < len; i++) {
718
793
  let gi = tagData.geoObjects[i];
719
794
  gi._tagDataIndex = gi._tagDataIndex - 1;
@@ -729,10 +804,10 @@ class GeoObjectHandler {
729
804
  tagData._visibleArr = spliceArray(tagData._visibleArr, tdi, 1);
730
805
 
731
806
  geoObject._handlerIndex = -1;
732
- geoObject._handler = undefined;
807
+ geoObject._handler = null;
733
808
 
734
809
  geoObject._tagDataIndex = -1;
735
- geoObject._tagData = undefined;
810
+ geoObject._tagData = null;
736
811
 
737
812
  if (!isEmpty) {
738
813
  tagData.refresh();
@@ -741,4 +816,4 @@ class GeoObjectHandler {
741
816
  }
742
817
  }
743
818
 
744
- export { GeoObjectHandler };
819
+ export {GeoObjectHandler, InstanceData};