@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,22 +1,44 @@
1
- "use strict";
2
-
3
- import * as arial from "../arial.js";
4
- import { Camera } from "../camera/Camera.js";
5
- import { cons } from "../cons.js";
6
- import { depth } from "../shaders/depth.js";
7
- import { LabelWorker } from "../entity/LabelWorker.js";
8
- import { input } from "../input/input.js";
9
- import { randomi } from "../math.js";
10
- import { Vec2 } from "../math/Vec2.js";
11
- import { Vec3 } from "../math/Vec3.js";
12
- import { pickingMask } from "../shaders/pickingMask.js";
13
- import { screenFrame } from "../shaders/screenFrame.js";
14
- import { toneMapping } from "../shaders/toneMapping.js";
15
- import { FontAtlas } from "../utils/FontAtlas.js";
16
- import { isEmpty } from "../utils/shared.js";
17
- import { TextureAtlas } from "../utils/TextureAtlas.js";
18
- import { Framebuffer, Multisample } from "../webgl/index.js";
19
- import { RendererEvents } from "./RendererEvents.js";
1
+ import {Camera} from "../camera/Camera";
2
+ import {Control} from "../control/Control";
3
+ import {cons} from "../cons";
4
+ import {createRendererEvents, RendererEvents, RendererEventsHandler} from "./RendererEvents";
5
+ import {depth} from "../shaders/depth";
6
+ import {EntityCollection} from "../entity/EntityCollection";
7
+ import {Framebuffer, Multisample} from "../webgl/index";
8
+ import {FontAtlas, IFontParams} from "../utils/FontAtlas";
9
+ import {Handler, WebGLBufferExt} from "../webgl/Handler";
10
+ import {input} from "../input/input";
11
+ import {isEmpty} from "../utils/shared";
12
+ import {LabelWorker} from "../entity/LabelWorker";
13
+ import {pickingMask} from "../shaders/pickingMask";
14
+ import {randomi} from "../math";
15
+ import {RenderNode} from "../scene/RenderNode";
16
+ import {screenFrame} from "../shaders/screenFrame";
17
+ import {toneMapping} from "../shaders/toneMapping";
18
+ import {TextureAtlas} from "../utils/TextureAtlas";
19
+ import {Vec2} from "../math/Vec2";
20
+ import {NumberArray3, Vec3} from "../math/Vec3";
21
+ import {Vec4} from "../math/Vec4";
22
+
23
+ interface IRendererParams {
24
+ controls?: Control[];
25
+ msaa?: number;
26
+ autoActivate?: boolean;
27
+ fontsSrc?: string;
28
+ }
29
+
30
+ interface IPickingObject {
31
+ _pickingColor?: Vec3;
32
+ _pickingColorU?: Float32Array;
33
+ }
34
+
35
+ interface IFrameCallbackHandler {
36
+ id: number;
37
+ callback: Function;
38
+ sender: any;
39
+ }
40
+
41
+ const MSAA_DEFAULT = 0;
20
42
 
21
43
  let __pickingCallbackCounter__ = 0;
22
44
 
@@ -24,59 +46,210 @@ let __depthCallbackCounter__ = 0;
24
46
 
25
47
  let __distanceCallbackCounter__ = 0;
26
48
 
27
- const MSAA_DEFAULT = 0;
28
-
29
49
  /**
30
50
  * Represents high level WebGL context interface that starts WebGL handler working in real time.
31
51
  * @class
32
52
  * @param {Handler} handler - WebGL handler context.
33
53
  * @param {Object} [params] - Renderer parameters:
34
- * @fires og.RendererEvents#draw
35
- * @fires og.RendererEvents#resize
36
- * @fires og.RendererEvents#mousemove
37
- * @fires og.RendererEvents#mousestop
38
- * @fires og.RendererEvents#lclick
39
- * @fires og.RendererEvents#rclick
40
- * @fires og.RendererEvents#mclick
41
- * @fires og.RendererEvents#ldblclick
42
- * @fires og.RendererEvents#rdblclick
43
- * @fires og.RendererEvents#mdblclick
44
- * @fires og.RendererEvents#lup
45
- * @fires og.RendererEvents#rup
46
- * @fires og.RendererEvents#mup
47
- * @fires og.RendererEvents#ldown
48
- * @fires og.RendererEvents#rdown
49
- * @fires og.RendererEvents#mdown
50
- * @fires og.RendererEvents#lhold
51
- * @fires og.RendererEvents#rhold
52
- * @fires og.RendererEvents#mhold
53
- * @fires og.RendererEvents#mousewheel
54
- * @fires og.RendererEvents#touchstart
55
- * @fires og.RendererEvents#touchend
56
- * @fires og.RendererEvents#touchcancel
57
- * @fires og.RendererEvents#touchmove
58
- * @fires og.RendererEvents#doubletouch
59
- * @fires og.RendererEvents#touchleave
60
- * @fires og.RendererEvents#touchenter
54
+ * @fires EventsHandler<RendererEventsType>#draw
55
+ * @fires EventsHandler<RendererEventsType>#resize
56
+ * @fires EventsHandler<RendererEventsType>#mousemove
57
+ * @fires EventsHandler<RendererEventsType>#mousestop
58
+ * @fires EventsHandler<RendererEventsType>#lclick
59
+ * @fires EventsHandler<RendererEventsType>#rclick
60
+ * @fires EventsHandler<RendererEventsType>#mclick
61
+ * @fires EventsHandler<RendererEventsType>#ldblclick
62
+ * @fires EventsHandler<RendererEventsType>#rdblclick
63
+ * @fires EventsHandler<RendererEventsType>#mdblclick
64
+ * @fires EventsHandler<RendererEventsType>#lup
65
+ * @fires EventsHandler<RendererEventsType>#rup
66
+ * @fires EventsHandler<RendererEventsType>#mup
67
+ * @fires EventsHandler<RendererEventsType>#ldown
68
+ * @fires EventsHandler<RendererEventsType>#rdown
69
+ * @fires EventsHandler<RendererEventsType>#mdown
70
+ * @fires EventsHandler<RendererEventsType>#lhold
71
+ * @fires EventsHandler<RendererEventsType>#rhold
72
+ * @fires EventsHandler<RendererEventsType>#mhold
73
+ * @fires EventsHandler<RendererEventsType>#mousewheel
74
+ * @fires EventsHandler<RendererEventsType>#touchstart
75
+ * @fires EventsHandler<RendererEventsType>#touchend
76
+ * @fires EventsHandler<RendererEventsType>#touchcancel
77
+ * @fires EventsHandler<RendererEventsType>#touchmove
78
+ * @fires EventsHandler<RendererEventsType>#doubletouch
79
+ * @fires EventsHandler<RendererEventsType>#touchleave
80
+ * @fires EventsHandler<RendererEventsType>#touchenter
61
81
  */
62
82
 
63
- let __resizeTimeout;
83
+ let __resizeTimeout: any;
84
+
85
+ export interface HTMLDivElementExt extends HTMLDivElement {
86
+ attributions?: HTMLElement;
87
+ }
64
88
 
65
89
  class Renderer {
66
- constructor(handler, params = {}) {
67
90
 
68
- /**
69
- * Div element with WebGL canvas. Assigned in Globe class.
70
- * @public
71
- * @type {object}
72
- */
91
+ /**
92
+ * Div element with WebGL canvas. Assigned in Globe class.
93
+ * @public
94
+ * @type {HTMLElement | null}
95
+ */
96
+ public div: HTMLDivElementExt | null;
97
+
98
+ /**
99
+ * WebGL handler context.
100
+ * @public
101
+ * @type {Handler}
102
+ */
103
+ public handler: Handler;
104
+ public exposure: number;
105
+ public gamma: number;
106
+ public whitepoint: number;
107
+ public brightThreshold: number;
108
+
109
+ /**
110
+ * Render nodes drawing queue.
111
+ * @public
112
+ * @type {Array.<RenderNode>}
113
+ */
114
+ public _renderNodesArr: RenderNode[];
115
+
116
+ /**
117
+ * Render nodes store for the comfortable access by the node name.
118
+ * @public
119
+ * @type {Object.<RenderNode>}
120
+ */
121
+ public renderNodes: Record<string, RenderNode>;
122
+
123
+ /**
124
+ * Current active camera.
125
+ * @public
126
+ * @type {Camera}
127
+ */
128
+ public activeCamera: Camera | null;
129
+
130
+ /**
131
+ * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
132
+ * @public
133
+ * @type {RendererEvents}
134
+ */
135
+ public events: RendererEventsHandler;
136
+
137
+ /**
138
+ * Controls array.
139
+ * @public
140
+ * @type {Object}
141
+ */
142
+ public controls: Record<string, Control>;
143
+
144
+ /**
145
+ * Provides exchange between controls.
146
+ * @public
147
+ * @type {any}
148
+ */
149
+ public controlsBag: any;
150
+
151
+ /**
152
+ * Hash table for drawing objects.
153
+ * @public
154
+ * @type {Map<string, any>}
155
+ */
156
+ public colorObjects: Map<string, any>;
157
+
158
+ /**
159
+ * Color picking objects rendering queue.
160
+ * @type {Function[]}
161
+ */
162
+ protected _pickingCallbacks: IFrameCallbackHandler[];
163
+
164
+ /**
165
+ * Picking objects(labels and billboards) framebuffer.
166
+ * @public
167
+ * @type {Framebuffer}
168
+ */
169
+ public pickingFramebuffer: Framebuffer | null;
170
+
171
+ protected _tempPickingPix_: Uint8Array;
172
+
173
+ /**
174
+ * @public
175
+ * @type {Framebuffer}
176
+ */
177
+ public distanceFramebuffer: Framebuffer | null;
178
+
179
+ /**
180
+ * @type {Function[]}
181
+ */
182
+ protected _distanceCallbacks: IFrameCallbackHandler[];
183
+
184
+ protected _tempDistancePix_: Uint8Array;
185
+
186
+ /**
187
+ * Depth objects rendering queue.
188
+ * @type {Function[]}
189
+ */
190
+ protected _depthCallbacks: IFrameCallbackHandler[];
191
+
192
+ public depthFramebuffer: Framebuffer | null;
193
+
194
+ protected _msaa: number;
195
+
196
+ protected _internalFormat: string;
197
+ protected _format: string;
198
+ protected _type: string;
199
+
200
+ public sceneFramebuffer: Framebuffer | Multisample | null;
201
+
202
+ protected blitFramebuffer: Framebuffer | null;
203
+
204
+ protected toneMappingFramebuffer: Framebuffer | null;
205
+
206
+ protected _initialized: boolean;
207
+
208
+ /**
209
+ * Texture atlas for the billboards images. One atlas per node.
210
+ * @public
211
+ * @type {TextureAtlas}
212
+ */
213
+ public billboardsTextureAtlas: TextureAtlas;
214
+
215
+ /**
216
+ * Texture atlas for the billboards images. One atlas per node.
217
+ * @public
218
+ * @type {TextureAtlas}
219
+ */
220
+ public geoObjectsTextureAtlas: TextureAtlas;
221
+
222
+ /**
223
+ * Texture font atlas for the font families and styles. One atlas per node.
224
+ * @public
225
+ * @type {FontAtlas}
226
+ */
227
+ public fontAtlas: FontAtlas;
228
+
229
+ protected _entityCollections: EntityCollection[];
230
+
231
+ protected _currentOutput: string;
232
+
233
+ protected _fnScreenFrame: Function | null;
234
+
235
+ public labelWorker: LabelWorker;
236
+
237
+ public __useDistanceFramebuffer__: boolean;
238
+
239
+ public screenDepthFramebuffer: Framebuffer | null;
240
+
241
+ public screenFramePositionBuffer: WebGLBufferExt | null;
242
+
243
+ public screenTexture: Record<string, WebGLTexture>;
244
+
245
+ public outputTexture: WebGLTexture | null;
246
+
247
+ protected _pickingMaskCoordinatesBuffer: WebGLBufferExt | null;
248
+
249
+ constructor(handler: Handler, params: IRendererParams = {}) {
250
+
73
251
  this.div = null;
74
252
 
75
- /**
76
- * WebGL handler context.
77
- * @public
78
- * @type {Handler}
79
- */
80
253
  this.handler = handler;
81
254
 
82
255
  this.exposure = 3.01;
@@ -87,39 +260,14 @@ class Renderer {
87
260
 
88
261
  this.brightThreshold = 0.9;
89
262
 
90
- /**
91
- * Render nodes drawing queue.
92
- * @private
93
- * @type {Array.<scene.RenderNode>}
94
- */
95
263
  this._renderNodesArr = [];
96
264
 
97
- /**
98
- * Render nodes store for the comfortable access by the node name.
99
- * @public
100
- * @type {Object.<og.scene.RenderNode>}
101
- */
102
265
  this.renderNodes = {};
103
266
 
104
- /**
105
- * Current active camera.
106
- * @public
107
- * @type {Camera}
108
- */
109
267
  this.activeCamera = null;
110
268
 
111
- /**
112
- * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
113
- * @public
114
- * @type {RendererEvents}
115
- */
116
- this.events = new RendererEvents(this);
269
+ this.events = createRendererEvents(this);
117
270
 
118
- /**
119
- * OpenGlobus controls array.
120
- * @public
121
- * @type {Object}
122
- */
123
271
  this.controls = {};
124
272
 
125
273
  if (params.controls) {
@@ -128,52 +276,22 @@ class Renderer {
128
276
  }
129
277
  }
130
278
 
131
- /**
132
- * Provides exchange between controls.
133
- * @public
134
- * @type {Object}
135
- */
136
279
  this.controlsBag = {};
137
280
 
138
- /**
139
- * Hash table for drawing objects.
140
- * @public
141
- * @type {Object}
142
- */
143
- this.colorObjects = new Map();
281
+ this.colorObjects = new Map<string, any>();
144
282
 
145
- /**
146
- * Color picking objects rendering queue.
147
- * @type {Array.<Renderer~pickingCallback>}
148
- */
149
283
  this._pickingCallbacks = [];
150
284
 
151
- /**
152
- * Picking objects(labels and billboards) framebuffer.
153
- * @public
154
- * @type {Framebuffer}
155
- */
156
285
  this.pickingFramebuffer = null;
157
286
 
158
- this._tempPickingPix_ = null;
287
+ this._tempPickingPix_ = new Uint8Array([]);
159
288
 
160
- /**
161
- * @public
162
- * @type {Framebuffer}
163
- */
164
289
  this.distanceFramebuffer = null;
165
290
 
166
- /**
167
- * @type {Array.<Renderer~distanceCallback>}
168
- */
169
291
  this._distanceCallbacks = [];
170
292
 
171
- this._tempDistancePix_ = null;
293
+ this._tempDistancePix_ = new Uint8Array([]);
172
294
 
173
- /**
174
- * Depth objects rendering queue.
175
- * @type {Array.<Renderer~depthCallback>}
176
- */
177
295
  this._depthCallbacks = [];
178
296
 
179
297
  this.depthFramebuffer = null;
@@ -200,24 +318,24 @@ class Renderer {
200
318
 
201
319
  /**
202
320
  * Texture atlas for the billboards images. One atlas per node.
203
- * @protected
204
- * @type {utils.TextureAtlas}
321
+ * @public
322
+ * @type {TextureAtlas}
205
323
  */
206
324
  this.billboardsTextureAtlas = new TextureAtlas();
207
- //TODO global texture atlas
325
+
208
326
  /**
209
327
  * Texture atlas for the billboards images. One atlas per node.
210
- * @protected
211
- * @type {utils.TextureAtlas}
328
+ * @public
329
+ * @type {TextureAtlas}
212
330
  */
213
331
  this.geoObjectsTextureAtlas = new TextureAtlas();
214
332
 
215
333
  /**
216
334
  * Texture font atlas for the font families and styles. One atlas per node.
217
335
  * @public
218
- * @type {utils.FontAtlas}
336
+ * @type {FontAtlas}
219
337
  */
220
- this.fontAtlas = new FontAtlas();
338
+ this.fontAtlas = new FontAtlas(params.fontsSrc);
221
339
 
222
340
  this._entityCollections = [];
223
341
 
@@ -229,20 +347,30 @@ class Renderer {
229
347
 
230
348
  this.__useDistanceFramebuffer__ = true;
231
349
 
350
+ this.screenDepthFramebuffer = null;
351
+
352
+ this.screenFramePositionBuffer = null;
353
+
354
+ this.screenTexture = {};
355
+
356
+ this.outputTexture = null;
357
+
358
+ this._pickingMaskCoordinatesBuffer = null;
359
+
232
360
  if (params.autoActivate || isEmpty(params.autoActivate)) {
233
361
  this.start();
234
362
  }
235
363
  }
236
364
 
237
- enableBlendOneSrcAlpha() {
238
- let gl = this.handler.gl;
365
+ public enableBlendOneSrcAlpha() {
366
+ let gl = this.handler.gl!;
239
367
  gl.enable(gl.BLEND);
240
368
  gl.blendEquation(gl.FUNC_ADD);
241
369
  gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
242
370
  }
243
371
 
244
- enableBlendDefault() {
245
- let gl = this.handler.gl;
372
+ public enableBlendDefault() {
373
+ let gl = this.handler.gl!;
246
374
  gl.enable(gl.BLEND);
247
375
  gl.blendEquation(gl.FUNC_ADD);
248
376
  gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE);
@@ -252,19 +380,19 @@ class Renderer {
252
380
  * Sets renderer events activity.
253
381
  * @param {Boolean} activity - Events activity.
254
382
  */
255
- setEventsActivity(activity) {
383
+ public setEventsActivity(activity: boolean) {
256
384
  this.events.active = activity;
257
385
  }
258
386
 
259
- addDepthCallback(sender, callback) {
260
- var id = __depthCallbackCounter__++;
387
+ public addDepthCallback(sender: any, callback: Function) {
388
+ let id = __depthCallbackCounter__++;
261
389
  this._depthCallbacks.push({
262
390
  id: id, callback: callback, sender: sender
263
391
  });
264
392
  return id;
265
393
  }
266
394
 
267
- removeDepthCallback(id) {
395
+ public removeDepthCallback(id: number) {
268
396
  for (let i = 0; i < this._depthCallbacks.length; i++) {
269
397
  if (id === this._depthCallbacks[i].id) {
270
398
  this._depthCallbacks.splice(i, 1);
@@ -273,15 +401,15 @@ class Renderer {
273
401
  }
274
402
  }
275
403
 
276
- addDistanceCallback(sender, callback) {
277
- var id = __distanceCallbackCounter__++;
404
+ public addDistanceCallback(sender: any, callback: Function) {
405
+ let id = __distanceCallbackCounter__++;
278
406
  this._distanceCallbacks.push({
279
407
  id: id, callback: callback, sender: sender
280
408
  });
281
409
  return id;
282
410
  }
283
411
 
284
- removeDistanceCallback(id) {
412
+ public removeDistanceCallback(id: number) {
285
413
  for (let i = 0; i < this._distanceCallbacks.length; i++) {
286
414
  if (id === this._distanceCallbacks[i].id) {
287
415
  this._distanceCallbacks.splice(i, 1);
@@ -294,11 +422,11 @@ class Renderer {
294
422
  /**
295
423
  * Adds picking rendering callback function.
296
424
  * @param {object} sender - Callback context.
297
- * @param {Renderer~pickingCallback} callback - Rendering callback.
425
+ * @param {Function} callback - Rendering callback.
298
426
  * @returns {Number} Handler id
299
427
  */
300
- addPickingCallback(sender, callback) {
301
- var id = __pickingCallbackCounter__++;
428
+ public addPickingCallback(sender: any, callback: Function) {
429
+ let id = __pickingCallbackCounter__++;
302
430
  this._pickingCallbacks.push({
303
431
  id: id, callback: callback, sender: sender
304
432
  });
@@ -309,7 +437,7 @@ class Renderer {
309
437
  * Removes picking rendering callback function.
310
438
  * @param {Number} id - Handler id to remove.
311
439
  */
312
- removePickingCallback(id) {
440
+ public removePickingCallback(id: number) {
313
441
  for (let i = 0; i < this._pickingCallbacks.length; i++) {
314
442
  if (id === this._pickingCallbacks[i].id) {
315
443
  this._pickingCallbacks.splice(i, 1);
@@ -318,24 +446,24 @@ class Renderer {
318
446
  }
319
447
  }
320
448
 
321
- getPickingObject(r, g, b) {
449
+ public getPickingObject<T>(r: number, g: number, b: number): T {
322
450
  return this.colorObjects.get(`${r}_${g}_${b}`);
323
451
  }
324
452
 
325
- getPickingObjectArr(arr) {
453
+ public getPickingObjectArr<T>(arr: NumberArray3 | Uint8Array): T {
326
454
  return this.colorObjects.get(`${arr[0]}_${arr[1]}_${arr[2]}`);
327
455
  }
328
456
 
329
- getPickingObject3v(vec) {
457
+ public getPickingObject3v<T>(vec: Vec3 | Vec4): T {
330
458
  return this.colorObjects.get(`${vec.x}_${vec.y}_${vec.z}`);
331
459
  }
332
460
 
333
461
  /**
334
462
  * Assign picking color to the object.
335
463
  * @public
336
- * @param {Object} obj - Object that pressume to be picked.
464
+ * @param {Object} obj - Object that presume to be picked.
337
465
  */
338
- assignPickingColor(obj) {
466
+ public assignPickingColor<T>(obj: T & IPickingObject) {
339
467
  if (!obj._pickingColor || obj._pickingColor.isZero()) {
340
468
  let r = 0, g = 0, b = 0;
341
469
  let str = "0_0_0";
@@ -363,9 +491,9 @@ class Renderer {
363
491
  * @public
364
492
  * @param {Object} obj - Object to remove picking color.
365
493
  */
366
- clearPickingColor(obj) {
367
- if (!obj._pickingColor.isZero()) {
368
- var c = obj._pickingColor;
494
+ public clearPickingColor<T>(obj: T & IPickingObject) {
495
+ if (obj._pickingColor && !obj._pickingColor.isZero()) {
496
+ let c = obj._pickingColor;
369
497
  if (!c.isZero()) {
370
498
  this.colorObjects.delete(`${c.x}_${c.y}_${c.z}`);
371
499
  c.x = c.y = c.z = 0;
@@ -378,8 +506,8 @@ class Renderer {
378
506
  * @public
379
507
  * @returns {number} -
380
508
  */
381
- getWidth() {
382
- return this.handler.canvas.clientWidth;
509
+ public getWidth(): number {
510
+ return this.handler.canvas!.clientWidth;
383
511
  }
384
512
 
385
513
  /**
@@ -387,33 +515,43 @@ class Renderer {
387
515
  * @public
388
516
  * @returns {number} -
389
517
  */
390
- getHeight() {
391
- return this.handler.canvas.clientHeight;
518
+ public getHeight(): number {
519
+ return this.handler.canvas!.clientHeight;
520
+ }
521
+
522
+ /**
523
+ * Get center of the canvas
524
+ * @public
525
+ * @returns {Vec2} -
526
+ */
527
+ public getCenter(): Vec2 {
528
+ let cnv = this.handler.canvas!;
529
+ return new Vec2(Math.round(cnv.width * 0.5), Math.round(cnv.height * 0.5));
392
530
  }
393
531
 
394
532
  /**
395
- * Get center of the screen
533
+ * Get center of the screen viewport
396
534
  * @public
397
- * @returns {math.Vec2} -
535
+ * @returns {Vec2} -
398
536
  */
399
- getCenter() {
400
- var cnv = this.handler.canvas;
537
+ public getClientCenter(): Vec2 {
538
+ let cnv = this.handler.canvas!;
401
539
  return new Vec2(Math.round(cnv.clientWidth * 0.5), Math.round(cnv.clientHeight * 0.5));
402
540
  }
403
541
 
404
542
  /**
405
543
  * Add the given control to the renderer.
406
- * @param {control.Control} control - Control.
544
+ * @param {Control} control - Control.
407
545
  */
408
- addControl(control) {
546
+ public addControl(control: Control) {
409
547
  control.addTo(this);
410
548
  }
411
549
 
412
550
  /**
413
551
  * Add the given controls array to the planet node.
414
- * @param {Array.<control.Control>} cArr - Control array.
552
+ * @param {Array.<Control>} cArr - Control array.
415
553
  */
416
- addControls(cArr) {
554
+ public addControls(cArr: Control[]) {
417
555
  for (let i = 0; i < cArr.length; i++) {
418
556
  cArr[i].addTo(this);
419
557
  }
@@ -421,13 +559,13 @@ class Renderer {
421
559
 
422
560
  /**
423
561
  * Remove control from the renderer.
424
- * @param {control.Control} control - Control.
562
+ * @param {Control} control - Control.
425
563
  */
426
- removeControl(control) {
564
+ public removeControl(control: Control) {
427
565
  control.remove();
428
566
  }
429
567
 
430
- isInitialized() {
568
+ public isInitialized(): boolean {
431
569
  return this._initialized;
432
570
  }
433
571
 
@@ -435,7 +573,7 @@ class Renderer {
435
573
  * Renderer initialization.
436
574
  * @public
437
575
  */
438
- initialize() {
576
+ public initialize() {
439
577
 
440
578
  if (this._initialized) {
441
579
  return;
@@ -469,13 +607,15 @@ class Renderer {
469
607
 
470
608
  this.pickingFramebuffer = new Framebuffer(this.handler, {
471
609
  width: 640, height: 480, depthComponent: "DEPTH_STENCIL", renderbufferTarget: "DEPTH_STENCIL_ATTACHMENT"
472
- }).init();
610
+ });
611
+ this.pickingFramebuffer.init();
473
612
 
474
613
  this._tempPickingPix_ = new Uint8Array(this.pickingFramebuffer.width * this.pickingFramebuffer.height * 4);
475
614
 
476
615
  this.distanceFramebuffer = new Framebuffer(this.handler, {
477
616
  width: 320, height: 240
478
- }).init();
617
+ });
618
+ this.distanceFramebuffer.init();
479
619
 
480
620
  this._tempDistancePix_ = new Uint8Array(this.distanceFramebuffer.width * this.distanceFramebuffer.height * 4);
481
621
 
@@ -486,23 +626,25 @@ class Renderer {
486
626
  type: ["UNSIGNED_BYTE", "UNSIGNED_INT"],
487
627
  attachment: ["COLOR_ATTACHMENT", "DEPTH_ATTACHMENT"],
488
628
  useDepth: false
489
- }).init();
629
+ });
630
+ this.depthFramebuffer.init();
490
631
 
491
632
  this.screenDepthFramebuffer = new Framebuffer(this.handler, {
492
633
  useDepth: false
493
- }).init();
634
+ });
635
+ this.screenDepthFramebuffer.init();
494
636
 
495
- if (this.handler.gl.type === "webgl") {
637
+ if (this.handler.gl!.type === "webgl") {
496
638
  this.sceneFramebuffer = new Framebuffer(this.handler);
497
639
  this.sceneFramebuffer.init();
498
640
 
499
641
  this._fnScreenFrame = this._screenFrameNoMSAA;
500
642
 
501
643
  this.screenTexture = {
502
- screen: this.sceneFramebuffer.textures[0],
503
- picking: this.pickingFramebuffer.textures[0],
504
- distance: this.distanceFramebuffer.textures[0],
505
- depth: this.screenDepthFramebuffer.textures[0]
644
+ screen: this.sceneFramebuffer!.textures[0],
645
+ picking: this.pickingFramebuffer!.textures[0],
646
+ distance: this.distanceFramebuffer!.textures[0],
647
+ depth: this.screenDepthFramebuffer!.textures[0]
506
648
  };
507
649
  } else {
508
650
  let _maxMSAA = this.getMaxMSAA(this._internalFormat);
@@ -516,8 +658,13 @@ class Renderer {
516
658
  this.handler.addPrograms([depth()]);
517
659
 
518
660
  this.sceneFramebuffer = new Multisample(this.handler, {
519
- size: 1, msaa: this._msaa, internalFormat: this._internalFormat, filter: "LINEAR"
520
- }).init();
661
+ size: 1,
662
+ msaa: this._msaa,
663
+ internalFormat: this._internalFormat,
664
+ filter: "LINEAR"
665
+ });
666
+
667
+ this.sceneFramebuffer.init();
521
668
 
522
669
  this.blitFramebuffer = new Framebuffer(this.handler, {
523
670
  size: 1,
@@ -526,20 +673,24 @@ class Renderer {
526
673
  format: this._format,
527
674
  type: this._type,
528
675
  filter: "NEAREST"
529
- }).init();
676
+ });
677
+
678
+ this.blitFramebuffer.init();
530
679
 
531
680
  this.toneMappingFramebuffer = new Framebuffer(this.handler, {
532
681
  useDepth: false
533
- }).init();
682
+ });
683
+
684
+ this.toneMappingFramebuffer.init();
534
685
 
535
686
  this._fnScreenFrame = this._screenFrameMSAA;
536
687
 
537
688
  this.screenTexture = {
538
- screen: this.toneMappingFramebuffer.textures[0],
539
- picking: this.pickingFramebuffer.textures[0],
540
- distance: this.distanceFramebuffer.textures[0],
541
- depth: this.screenDepthFramebuffer.textures[0],
542
- frustum: this.depthFramebuffer.textures[0]
689
+ screen: this.toneMappingFramebuffer!.textures[0],
690
+ picking: this.pickingFramebuffer!.textures[0],
691
+ distance: this.distanceFramebuffer!.textures[0],
692
+ depth: this.screenDepthFramebuffer!.textures[0],
693
+ frustum: this.depthFramebuffer!.textures[0]
543
694
  };
544
695
  }
545
696
 
@@ -560,8 +711,6 @@ class Renderer {
560
711
 
561
712
  this.outputTexture = this.screenTexture.screen;
562
713
 
563
- this.fontAtlas.initFont("arial", arial.data, arial.image);
564
-
565
714
  this._pickingMaskCoordinatesBuffer = this.handler.createArrayBuffer(new Float32Array([0, 0]), 2, 1);
566
715
 
567
716
  this._initializeRenderNodes();
@@ -569,7 +718,7 @@ class Renderer {
569
718
  this._initializeControls();
570
719
  }
571
720
 
572
- _initializeControls() {
721
+ public _initializeControls() {
573
722
  let temp = this.controls;
574
723
  this.controls = {};
575
724
  for (let i in temp) {
@@ -577,54 +726,55 @@ class Renderer {
577
726
  }
578
727
  }
579
728
 
580
- resize() {
729
+ public resize() {
581
730
  this._resizeEnd();
582
731
  }
583
732
 
584
- setCurrentScreen(screenName) {
733
+ public setCurrentScreen(screenName: string) {
585
734
  this._currentOutput = screenName;
586
735
  if (this.screenTexture[screenName]) {
587
736
  this.outputTexture = this.screenTexture[screenName];
588
737
  }
589
738
  }
590
739
 
591
- _resizeStart() {
592
- let c = this.handler.canvas;
740
+ public _resizeStart() {
741
+ let c = this.handler.canvas!;
593
742
 
594
- this.activeCamera.setAspectRatio(c.width / c.height);
595
- this.sceneFramebuffer.setSize(c.width * 0.5, c.height * 0.5);
743
+ this.activeCamera!.setAspectRatio(c.width / c.height);
744
+ this.sceneFramebuffer!.setSize(c.width * 0.5, c.height * 0.5);
596
745
  this.blitFramebuffer && this.blitFramebuffer.setSize(c.width * 0.5, c.height * 0.5, true);
597
746
  }
598
747
 
599
- _resizeEnd() {
600
- let c = this.handler.canvas;
748
+ public _resizeEnd() {
749
+ let c = this.handler.canvas!;
601
750
 
602
- this.activeCamera.setAspectRatio(c.width / c.height);
603
- this.sceneFramebuffer.setSize(c.width, c.height);
751
+ this.activeCamera!.setAspectRatio(c.width / c.height);
752
+ this.sceneFramebuffer!.setSize(c.width, c.height);
604
753
  this.blitFramebuffer && this.blitFramebuffer.setSize(c.width, c.height, true);
605
754
 
606
755
  this.toneMappingFramebuffer && this.toneMappingFramebuffer.setSize(c.width, c.height, true);
607
756
  this.depthFramebuffer && this.depthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
608
757
  this.screenDepthFramebuffer && this.screenDepthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
609
758
 
610
- if (this.handler.gl.type === "webgl") {
611
- this.screenTexture.screen = this.sceneFramebuffer.textures[0];
612
- this.screenTexture.picking = this.pickingFramebuffer.textures[0];
613
- this.screenTexture.distance = this.distanceFramebuffer.textures[0];
614
- this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
615
- this.screenTexture.frustum = this.depthFramebuffer.textures[0];
759
+ if (this.handler.gl!.type === "webgl") {
760
+ this.screenTexture.screen = (this.sceneFramebuffer as Framebuffer)!.textures[0];
761
+ this.screenTexture.picking = this.pickingFramebuffer!.textures[0];
762
+ this.screenTexture.distance = this.distanceFramebuffer!.textures[0];
763
+ this.screenTexture.depth = this.screenDepthFramebuffer!.textures[0];
764
+ this.screenTexture.frustum = this.depthFramebuffer!.textures[0];
616
765
  } else {
617
- this.screenTexture.screen = this.toneMappingFramebuffer.textures[0];
618
- this.screenTexture.picking = this.pickingFramebuffer.textures[0];
619
- this.screenTexture.distance = this.distanceFramebuffer.textures[0];
620
- this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
621
- this.screenTexture.frustum = this.depthFramebuffer.textures[0];
766
+ this.screenTexture.screen = this.toneMappingFramebuffer!.textures[0];
767
+ this.screenTexture.picking = this.pickingFramebuffer!.textures[0];
768
+ this.screenTexture.distance = this.distanceFramebuffer!.textures[0];
769
+ this.screenTexture.depth = this.screenDepthFramebuffer!.textures[0];
770
+ this.screenTexture.frustum = this.depthFramebuffer!.textures[0];
622
771
  }
623
772
 
624
773
  this.setCurrentScreen(this._currentOutput);
625
774
  }
626
775
 
627
- removeNode(renderNode) {
776
+ public removeNode(renderNode: RenderNode) {
777
+ // TODO: replace from RenderNode to this method
628
778
  renderNode.remove();
629
779
  }
630
780
 
@@ -633,17 +783,17 @@ class Renderer {
633
783
  * @public
634
784
  * @param {RenderNode} renderNode - Render node.
635
785
  */
636
- addNode(renderNode) {
786
+ public addNode(renderNode: RenderNode) {
637
787
  if (!this.renderNodes[renderNode.name]) {
638
788
  renderNode.assign(this);
639
789
  this._renderNodesArr.unshift(renderNode);
640
790
  this.renderNodes[renderNode.name] = renderNode;
641
791
  } else {
642
- cons.logWrn("Node name " + renderNode.name + " allready exists.");
792
+ cons.logWrn(`Node name ${renderNode.name} already exists.`);
643
793
  }
644
794
  }
645
795
 
646
- _initializeRenderNodes() {
796
+ protected _initializeRenderNodes() {
647
797
  for (let i = 0; i < this._renderNodesArr.length; i++) {
648
798
  this._renderNodesArr[i].initialize();
649
799
  }
@@ -653,8 +803,9 @@ class Renderer {
653
803
  * Adds render node to the renderer before specific node.
654
804
  * @public
655
805
  * @param {RenderNode} renderNode - Render node.
806
+ * @param {RenderNode} renderNodeBefore - Insert before the renderNodeBefore node.
656
807
  */
657
- addNodeBefore(renderNode, renderNodeBefore) {
808
+ public addNodeBefore(renderNode: RenderNode, renderNodeBefore: RenderNode) {
658
809
  if (!this.renderNodes[renderNode.name]) {
659
810
  renderNode.assign(this);
660
811
  this.renderNodes[renderNode.name] = renderNode;
@@ -666,44 +817,43 @@ class Renderer {
666
817
  }
667
818
  this._renderNodesArr.unshift(renderNode);
668
819
  } else {
669
- cons.logWrn("Node name " + renderNode.name + " allready exists.");
820
+ cons.logWrn(`Node name ${renderNode.name} already exists.`);
670
821
  }
671
822
  }
672
823
 
673
824
  /**
674
825
  * Adds render nodes array to the renderer.
675
826
  * @public
676
- * @param {Array.<scene.RenderNode>} nodesArr - Render nodes array.
827
+ * @param {Array.<RenderNode>} nodesArr - Render nodes array.
677
828
  */
678
- addNodes(nodesArr) {
829
+ public addNodes(nodesArr: RenderNode[]) {
679
830
  for (let i = 0; i < nodesArr.length; i++) {
680
831
  this.addNode(nodesArr[i]);
681
832
  }
682
833
  }
683
834
 
684
- getMaxMSAA(internalFormat) {
685
- var gl = this.handler.gl;
686
- let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl[internalFormat], gl.SAMPLES);
835
+ public getMaxMSAA(internalFormat: string) {
836
+ let gl = this.handler.gl!;
837
+ let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, (gl as any)[internalFormat], gl.SAMPLES);
687
838
  return samples[0];
688
839
  }
689
840
 
690
- getMSAA() {
841
+ public getMSAA(): number {
691
842
  return this._msaa;
692
843
  }
693
844
 
694
845
  /**
695
- * TODO: replace with cahce frendly linked list by bilboardHandler, label handler etc.
846
+ * TODO: replace with cache friendly linked list by BillboardHandler, LabelHandler etc.
696
847
  */
697
- enqueueEntityCollectionsToDraw(ecArr) {
848
+ public enqueueEntityCollectionsToDraw(ecArr: EntityCollection[]) {
698
849
  this._entityCollections.push.apply(this._entityCollections, ecArr);
699
850
  }
700
851
 
701
852
  /**
702
- * Draws entity collections.
703
- * @public
704
- * @param {Array<og.EntityCollection>} ec - Entity collection array.
853
+ * Draws opaque items entity collections.
854
+ * @protected
705
855
  */
706
- _drawOpaqueEntityCollections() {
856
+ protected _drawOpaqueEntityCollections() {
707
857
  let ec = this._entityCollections;
708
858
 
709
859
  if (ec.length) {
@@ -730,15 +880,14 @@ class Renderer {
730
880
 
731
881
 
732
882
  /**
733
- * Draws entity collections.
734
- * @public
735
- * @param {Array<og.EntityCollection>} ec - Entity collection array.
883
+ * Draws transparent items entity collections.
884
+ * @protected
736
885
  */
737
- _drawTransparentEntityCollections() {
886
+ protected _drawTransparentEntityCollections() {
738
887
  let ec = this._entityCollections;
739
888
 
740
889
  if (ec.length) {
741
- let gl = this.handler.gl;
890
+ let gl = this.handler.gl!;
742
891
 
743
892
  this.enableBlendDefault();
744
893
 
@@ -748,7 +897,7 @@ class Renderer {
748
897
 
749
898
  let i = ec.length;
750
899
  while (i--) {
751
- var eci = ec[i];
900
+ let eci = ec[i];
752
901
  eci._fadingOpacity && eci.billboardHandler.draw();
753
902
  }
754
903
 
@@ -784,7 +933,7 @@ class Renderer {
784
933
  }
785
934
  }
786
935
 
787
- _clearEntityCollectionQueue() {
936
+ protected _clearEntityCollectionQueue() {
788
937
  this._entityCollections.length = 0;
789
938
  this._entityCollections = [];
790
939
  }
@@ -793,32 +942,33 @@ class Renderer {
793
942
  * Draw nodes.
794
943
  * @public
795
944
  */
796
- draw() {
797
- this.activeCamera.checkMoveEnd();
945
+ public draw() {
946
+ this.activeCamera!.checkMoveEnd();
798
947
 
799
948
  let e = this.events;
800
949
  e.handleEvents();
801
950
 
802
- let sceneFramebuffer = this.sceneFramebuffer;
951
+ let sceneFramebuffer = this.sceneFramebuffer!;
803
952
  sceneFramebuffer.activate();
804
953
 
805
- let h = this.handler, gl = h.gl;
954
+ let h = this.handler,
955
+ gl = h.gl!;
806
956
 
807
957
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
808
958
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
809
959
 
810
960
  e.dispatch(e.draw, this);
811
961
 
812
- let frustums = this.activeCamera.frustums;
962
+ let frustums = this.activeCamera!.frustums;
813
963
 
814
- let pointerEvent = e.pointerEvent() || this.activeCamera.isMoving;
964
+ let pointerEvent = e.pointerEvent() || this.activeCamera!.isMoving;
815
965
 
816
966
  // Rendering scene nodes and entityCollections
817
967
  let rn = this._renderNodesArr;
818
968
  let k = frustums.length;
819
969
 
820
970
  while (k--) {
821
- this.activeCamera.setCurrentFrustum(k);
971
+ this.activeCamera!.setCurrentFrustum(k);
822
972
  gl.clear(gl.DEPTH_BUFFER_BIT);
823
973
 
824
974
  let i = rn.length;
@@ -845,7 +995,7 @@ class Renderer {
845
995
 
846
996
  sceneFramebuffer.deactivate();
847
997
 
848
- this.blitFramebuffer && sceneFramebuffer.blitTo(this.blitFramebuffer, 0);
998
+ this.blitFramebuffer && (sceneFramebuffer as Multisample).blitTo(this.blitFramebuffer, 0);
849
999
 
850
1000
  if (pointerEvent) {
851
1001
  // It works ONLY for 0 (closest) frustum
@@ -857,7 +1007,7 @@ class Renderer {
857
1007
  }
858
1008
 
859
1009
  // Tone mapping followed by rendering on the screen
860
- this._fnScreenFrame();
1010
+ this._fnScreenFrame!();
861
1011
 
862
1012
  e.dispatch(e.postdraw, this);
863
1013
 
@@ -867,23 +1017,25 @@ class Renderer {
867
1017
  e.touchState.moving = false;
868
1018
  }
869
1019
 
870
- _screenFrameMSAA() {
871
- var h = this.handler;
1020
+ protected _screenFrameMSAA() {
1021
+ let h = this.handler;
872
1022
 
873
- var sh = h.programs.toneMapping, p = sh._program, gl = h.gl;
1023
+ let sh = h.programs.toneMapping,
1024
+ p = sh._program,
1025
+ gl = h.gl!;
874
1026
 
875
1027
  gl.disable(gl.DEPTH_TEST);
876
1028
 
877
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1029
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
878
1030
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
879
1031
 
880
- this.toneMappingFramebuffer.activate();
1032
+ this.toneMappingFramebuffer!.activate();
881
1033
 
882
1034
  sh.activate();
883
1035
 
884
1036
  // screen texture
885
1037
  gl.activeTexture(gl.TEXTURE0);
886
- gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer.textures[0]);
1038
+ gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer!.textures[0]);
887
1039
  gl.uniform1i(p.uniforms.hdrBuffer, 0);
888
1040
 
889
1041
  gl.uniform1f(p.uniforms.gamma, this.gamma);
@@ -891,12 +1043,11 @@ class Renderer {
891
1043
  gl.uniform1f(p.uniforms.whitepoint, this.whitepoint);
892
1044
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
893
1045
 
894
- this.toneMappingFramebuffer.deactivate();
1046
+ this.toneMappingFramebuffer!.deactivate();
895
1047
 
896
1048
  // SCREEN PASS
897
1049
  sh = h.programs.screenFrame;
898
1050
  p = sh._program;
899
- gl = h.gl;
900
1051
  sh.activate();
901
1052
  gl.activeTexture(gl.TEXTURE0);
902
1053
  gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
@@ -906,17 +1057,19 @@ class Renderer {
906
1057
  gl.enable(gl.DEPTH_TEST);
907
1058
  }
908
1059
 
909
- _screenFrameNoMSAA() {
1060
+ protected _screenFrameNoMSAA() {
910
1061
 
911
1062
  let h = this.handler;
912
- let sh = h.programs.screenFrame, p = sh._program, gl = h.gl;
1063
+ let sh = h.programs.screenFrame,
1064
+ p = sh._program,
1065
+ gl = h.gl!;
913
1066
 
914
1067
  gl.disable(gl.DEPTH_TEST);
915
1068
  sh.activate();
916
1069
  gl.activeTexture(gl.TEXTURE0);
917
1070
  gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
918
1071
  gl.uniform1i(p.uniforms.texture, 0);
919
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1072
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
920
1073
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
921
1074
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
922
1075
  gl.enable(gl.DEPTH_TEST);
@@ -926,13 +1079,13 @@ class Renderer {
926
1079
  * Draw picking objects framebuffer.
927
1080
  * @private
928
1081
  */
929
- _drawPickingBuffer() {
930
- this.pickingFramebuffer.activate();
1082
+ protected _drawPickingBuffer() {
1083
+ this.pickingFramebuffer!.activate();
931
1084
 
932
1085
  let h = this.handler;
933
- let gl = h.gl;
1086
+ let gl = h.gl!;
934
1087
 
935
- if (this.activeCamera.isFirstPass) {
1088
+ if (this.activeCamera!.isFirstPass) {
936
1089
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
937
1090
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
938
1091
  } else {
@@ -958,9 +1111,9 @@ class Renderer {
958
1111
 
959
1112
  gl.uniform2f(shu.offset, (ms.nx - 0.5) * 2, (0.5 - ms.ny) * 2);
960
1113
 
961
- gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingMaskCoordinatesBuffer);
962
- gl.vertexAttribPointer(sha.coordinates, this._pickingMaskCoordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);
963
- gl.drawArrays(gl.POINTS, 0, this._pickingMaskCoordinatesBuffer.numItems);
1114
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingMaskCoordinatesBuffer as WebGLBuffer);
1115
+ gl.vertexAttribPointer(sha.coordinates, this._pickingMaskCoordinatesBuffer!.itemSize, gl.FLOAT, false, 0, 0);
1116
+ gl.drawArrays(gl.POINTS, 0, this._pickingMaskCoordinatesBuffer!.numItems);
964
1117
 
965
1118
  gl.enable(gl.DEPTH_TEST);
966
1119
 
@@ -986,20 +1139,20 @@ class Renderer {
986
1139
 
987
1140
  gl.disable(gl.STENCIL_TEST);
988
1141
 
989
- this.pickingFramebuffer.deactivate();
1142
+ this.pickingFramebuffer!.deactivate();
990
1143
  }
991
1144
 
992
1145
  /**
993
1146
  * Draw picking objects framebuffer.
994
1147
  * @private
995
1148
  */
996
- _drawDistanceBuffer() {
997
- this.distanceFramebuffer.activate();
1149
+ protected _drawDistanceBuffer() {
1150
+ this.distanceFramebuffer!.activate();
998
1151
 
999
1152
  let h = this.handler;
1000
- let gl = h.gl;
1153
+ let gl = h.gl!;
1001
1154
 
1002
- if (this.activeCamera.isFirstPass) {
1155
+ if (this.activeCamera!.isFirstPass) {
1003
1156
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
1004
1157
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1005
1158
  } else {
@@ -1020,22 +1173,22 @@ class Renderer {
1020
1173
 
1021
1174
  gl.enable(gl.BLEND);
1022
1175
 
1023
- this.distanceFramebuffer.deactivate();
1176
+ this.distanceFramebuffer!.deactivate();
1024
1177
  }
1025
1178
 
1026
- _drawDepthBuffer() {
1027
- this.depthFramebuffer.activate();
1179
+ protected _drawDepthBuffer() {
1180
+ this.depthFramebuffer!.activate();
1028
1181
 
1029
- var h = this.handler;
1030
- var gl = h.gl;
1182
+ let h = this.handler;
1183
+ let gl = h.gl!;
1031
1184
 
1032
1185
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
1033
1186
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1034
1187
 
1035
1188
  gl.enable(gl.DEPTH_TEST);
1036
1189
 
1037
- var dp = this._depthCallbacks;
1038
- var i = dp.length;
1190
+ let dp = this._depthCallbacks;
1191
+ let i = dp.length;
1039
1192
  while (i--) {
1040
1193
  /**
1041
1194
  * This callback renders depth frame.
@@ -1044,44 +1197,43 @@ class Renderer {
1044
1197
  dp[i].callback.call(dp[i].sender);
1045
1198
  }
1046
1199
 
1047
- this.depthFramebuffer.deactivate();
1200
+ this.depthFramebuffer!.deactivate();
1048
1201
 
1049
1202
  //
1050
1203
  // PASS to depth visualization
1051
- this.screenDepthFramebuffer.activate();
1052
- var sh = h.programs.depth, p = sh._program;
1204
+ this.screenDepthFramebuffer!.activate();
1205
+ let sh = h.programs.depth, p = sh._program;
1053
1206
 
1054
- gl = h.gl;
1055
1207
 
1056
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1208
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
1057
1209
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
1058
1210
 
1059
1211
  sh.activate();
1060
1212
 
1061
1213
  gl.activeTexture(gl.TEXTURE0);
1062
- gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
1214
+ gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer!.textures[1]);
1063
1215
  gl.uniform1i(p.uniforms.depthTexture, 0);
1064
1216
 
1065
1217
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
1066
1218
 
1067
- this.screenDepthFramebuffer.deactivate();
1219
+ this.screenDepthFramebuffer!.deactivate();
1068
1220
  }
1069
1221
 
1070
- _readPickingBuffer() {
1071
- this.pickingFramebuffer.activate();
1072
- this.pickingFramebuffer.readAllPixels(this._tempPickingPix_);
1073
- this.pickingFramebuffer.deactivate();
1222
+ protected _readPickingBuffer() {
1223
+ this.pickingFramebuffer!.activate();
1224
+ this.pickingFramebuffer!.readAllPixels(this._tempPickingPix_);
1225
+ this.pickingFramebuffer!.deactivate();
1074
1226
  }
1075
1227
 
1076
- _readDistanceBuffer() {
1077
- this.distanceFramebuffer.activate();
1078
- this.distanceFramebuffer.readAllPixels(this._tempDistancePix_);
1079
- this.distanceFramebuffer.deactivate();
1228
+ protected _readDistanceBuffer() {
1229
+ this.distanceFramebuffer!.activate();
1230
+ this.distanceFramebuffer!.readAllPixels(this._tempDistancePix_);
1231
+ this.distanceFramebuffer!.deactivate();
1080
1232
  }
1081
1233
 
1082
- readPickingColor(x, y, outColor) {
1083
- let w = this.pickingFramebuffer.width;
1084
- let h = this.pickingFramebuffer.height;
1234
+ public readPickingColor(x: number, y: number, outColor: NumberArray3 | Uint8Array) {
1235
+ let w = this.pickingFramebuffer!.width;
1236
+ let h = this.pickingFramebuffer!.height;
1085
1237
 
1086
1238
  x = Math.round(x * w);
1087
1239
  y = Math.round(y * h);
@@ -1093,10 +1245,10 @@ class Renderer {
1093
1245
  outColor[2] = this._tempPickingPix_[ind + 2];
1094
1246
  }
1095
1247
 
1096
- readDistanceColor(x, y, outColor) {
1248
+ public readDistanceColor(x: number, y: number, outColor: NumberArray3 | Uint8Array) {
1097
1249
 
1098
- let w = this.distanceFramebuffer.width;
1099
- let h = this.distanceFramebuffer.height;
1250
+ let w = this.distanceFramebuffer!.width;
1251
+ let h = this.distanceFramebuffer!.height;
1100
1252
 
1101
1253
  x = Math.round(x * w);
1102
1254
  y = Math.round(y * h);
@@ -1112,14 +1264,14 @@ class Renderer {
1112
1264
  * Function starts renderer
1113
1265
  * @public
1114
1266
  */
1115
- start() {
1267
+ public start() {
1116
1268
  if (!this._initialized) {
1117
1269
  this.initialize();
1118
1270
  }
1119
1271
  this.handler.start();
1120
1272
  }
1121
1273
 
1122
- destroy() {
1274
+ public destroy() {
1123
1275
  for (let i in this.controls) {
1124
1276
  this.controls[i].remove();
1125
1277
  }
@@ -1140,18 +1292,23 @@ class Renderer {
1140
1292
 
1141
1293
  this.controlsBag = {};
1142
1294
 
1143
- this.colorObjects = new Map();
1295
+ this.colorObjects.clear();
1296
+
1297
+ // @ts-ignore
1298
+ this.colorObjects = null;
1144
1299
 
1145
1300
  this._pickingCallbacks = [];
1146
1301
 
1147
1302
  this.pickingFramebuffer = null;
1148
1303
 
1304
+ //@ts-ignore
1149
1305
  this._tempPickingPix_ = null;
1150
1306
 
1151
1307
  this.distanceFramebuffer = null;
1152
1308
 
1153
1309
  this._distanceCallbacks = [];
1154
1310
 
1311
+ //@ts-ignore
1155
1312
  this._tempDistancePix_ = null;
1156
1313
 
1157
1314
  this._depthCallbacks = [];
@@ -1171,10 +1328,9 @@ class Renderer {
1171
1328
 
1172
1329
  this._entityCollections = [];
1173
1330
 
1174
- this.colorObjects = null;
1175
-
1176
1331
  this.handler.destroy();
1177
1332
 
1333
+ // @ts-ignore
1178
1334
  this.handler = null;
1179
1335
 
1180
1336
  this._initialized = false;
@@ -1182,4 +1338,4 @@ class Renderer {
1182
1338
 
1183
1339
  }
1184
1340
 
1185
- export { Renderer };
1341
+ export {Renderer};