@openglobus/og 0.18.0 → 0.18.2

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 (476) hide show
  1. package/README.md +8 -8
  2. package/lib/@openglobus/og.esm.js +2 -0
  3. package/lib/@openglobus/og.esm.js.map +1 -0
  4. package/lib/@openglobus/og.umd.js +2 -0
  5. package/lib/@openglobus/og.umd.js.map +1 -0
  6. package/lib/js/Clock.d.ts +106 -0
  7. package/{src/Clock.ts → lib/js/Clock.js} +31 -126
  8. package/lib/js/Deferred.d.ts +6 -0
  9. package/lib/js/Deferred.js +13 -0
  10. package/lib/js/Events.d.ts +90 -0
  11. package/{src/Events.ts → lib/js/Events.js} +29 -84
  12. package/lib/js/Extent.d.ts +145 -0
  13. package/{src/Extent.ts → lib/js/Extent.js} +74 -120
  14. package/lib/js/Globe.d.ts +132 -0
  15. package/{src/Globe.ts → lib/js/Globe.js} +61 -159
  16. package/lib/js/ImageCanvas.d.ts +128 -0
  17. package/{src/ImageCanvas.ts → lib/js/ImageCanvas.js} +24 -65
  18. package/lib/js/Lock.d.ts +15 -0
  19. package/{src/Lock.ts → lib/js/Lock.js} +7 -21
  20. package/lib/js/LonLat.d.ts +128 -0
  21. package/{src/LonLat.ts → lib/js/LonLat.js} +44 -75
  22. package/lib/js/Object3d.d.ts +49 -0
  23. package/{src/Object3d.ts → lib/js/Object3d.js} +64 -184
  24. package/lib/js/Popup.d.ts +46 -0
  25. package/{src/Popup.ts → lib/js/Popup.js} +42 -110
  26. package/lib/js/QueueArray.d.ts +16 -0
  27. package/{src/QueueArray.ts → lib/js/QueueArray.js} +12 -25
  28. package/lib/js/Rectangle.d.ts +76 -0
  29. package/{src/Rectangle.ts → lib/js/Rectangle.js} +12 -50
  30. package/lib/js/Stack.d.ts +20 -0
  31. package/{src/Stack.ts → lib/js/Stack.js} +13 -29
  32. package/lib/js/astro/astro.d.ts +39 -0
  33. package/{src/astro/astro.ts → lib/js/astro/astro.js} +2 -8
  34. package/lib/js/astro/earth.d.ts +8 -0
  35. package/{src/astro/earth.ts → lib/js/astro/earth.js} +3 -39
  36. package/lib/js/astro/jd.d.ts +234 -0
  37. package/{src/astro/jd.ts → lib/js/astro/jd.js} +55 -134
  38. package/lib/js/astro/orbit.d.ts +5 -0
  39. package/{src/astro/orbit.ts → lib/js/astro/orbit.js} +26 -39
  40. package/lib/js/astro/rotation.d.ts +2 -0
  41. package/{src/astro/rotation.ts → lib/js/astro/rotation.js} +2 -11
  42. package/lib/js/bv/Box.d.ts +32 -0
  43. package/{src/bv/Box.ts → lib/js/bv/Box.js} +7 -35
  44. package/lib/js/bv/Sphere.d.ts +37 -0
  45. package/{src/bv/Sphere.ts → lib/js/bv/Sphere.js} +6 -34
  46. package/{src/bv/index.ts → lib/js/bv/index.d.ts} +0 -1
  47. package/lib/js/bv/index.js +3 -0
  48. package/lib/js/camera/Camera.d.ts +314 -0
  49. package/{src/camera/Camera.ts → lib/js/camera/Camera.js} +77 -326
  50. package/lib/js/camera/Frustum.d.ts +139 -0
  51. package/{src/camera/Frustum.ts → lib/js/camera/Frustum.js} +66 -185
  52. package/lib/js/camera/PlanetCamera.d.ts +234 -0
  53. package/{src/camera/PlanetCamera.ts → lib/js/camera/PlanetCamera.js} +65 -338
  54. package/{src/camera/index.ts → lib/js/camera/index.d.ts} +0 -1
  55. package/lib/js/camera/index.js +3 -0
  56. package/lib/js/cons.d.ts +40 -0
  57. package/{src/cons.ts → lib/js/cons.js} +10 -22
  58. package/lib/js/control/Atmosphere.d.ts +16 -0
  59. package/{src/control/Atmosphere.ts → lib/js/control/Atmosphere.js} +33 -86
  60. package/lib/js/control/CompassButton.d.ts +16 -0
  61. package/{src/control/CompassButton.ts → lib/js/control/CompassButton.js} +18 -43
  62. package/lib/js/control/Control.d.ts +100 -0
  63. package/{src/control/Control.ts → lib/js/control/Control.js} +22 -89
  64. package/lib/js/control/DebugInfo.d.ts +25 -0
  65. package/{src/control/DebugInfo.ts → lib/js/control/DebugInfo.js} +38 -84
  66. package/lib/js/control/DrawingSwitcher.d.ts +13 -0
  67. package/{src/control/DrawingSwitcher.ts → lib/js/control/DrawingSwitcher.js} +13 -30
  68. package/lib/js/control/EarthCoordinates.d.ts +41 -0
  69. package/{src/control/EarthCoordinates.ts → lib/js/control/EarthCoordinates.js} +58 -119
  70. package/lib/js/control/EarthNavigation.d.ts +50 -0
  71. package/{src/control/EarthNavigation.ts → lib/js/control/EarthNavigation.js} +70 -161
  72. package/lib/js/control/GeoImageDragControl.d.ts +22 -0
  73. package/{src/control/GeoImageDragControl.ts → lib/js/control/GeoImageDragControl.js} +26 -49
  74. package/lib/js/control/KeyboardNavigation.d.ts +28 -0
  75. package/{src/control/KeyboardNavigation.ts → lib/js/control/KeyboardNavigation.js} +67 -92
  76. package/lib/js/control/LayerAnimation.d.ts +71 -0
  77. package/{src/control/LayerAnimation.ts → lib/js/control/LayerAnimation.js} +82 -162
  78. package/lib/js/control/LayerSwitcher.d.ts +21 -0
  79. package/{src/control/LayerSwitcher.ts → lib/js/control/LayerSwitcher.js} +16 -41
  80. package/lib/js/control/Lighting.d.ts +49 -0
  81. package/{src/control/Lighting.ts → lib/js/control/Lighting.js} +106 -219
  82. package/lib/js/control/MouseNavigation.d.ts +62 -0
  83. package/{src/control/MouseNavigation.ts → lib/js/control/MouseNavigation.js} +105 -211
  84. package/lib/js/control/MouseWheelZoomControl.d.ts +44 -0
  85. package/lib/js/control/MouseWheelZoomControl.js +181 -0
  86. package/lib/js/control/RulerSwitcher.d.ts +17 -0
  87. package/{src/control/RulerSwitcher.ts → lib/js/control/RulerSwitcher.js} +13 -28
  88. package/lib/js/control/ScaleControl.d.ts +24 -0
  89. package/lib/js/control/ScaleControl.js +91 -0
  90. package/lib/js/control/SegmentBoundVisualization.d.ts +12 -0
  91. package/lib/js/control/SegmentBoundVisualization.js +37 -0
  92. package/lib/js/control/ShowFps.d.ts +9 -0
  93. package/lib/js/control/ShowFps.js +20 -0
  94. package/lib/js/control/SimpleNavigation.d.ts +25 -0
  95. package/{src/control/SimpleNavigation.ts → lib/js/control/SimpleNavigation.js} +29 -51
  96. package/lib/js/control/SimpleSkyBackground.d.ts +15 -0
  97. package/{src/control/SimpleSkyBackground.ts → lib/js/control/SimpleSkyBackground.js} +21 -48
  98. package/lib/js/control/Sun.d.ts +33 -0
  99. package/{src/control/Sun.ts → lib/js/control/Sun.js} +34 -85
  100. package/lib/js/control/ToggleWireframe.d.ts +14 -0
  101. package/lib/js/control/ToggleWireframe.js +28 -0
  102. package/lib/js/control/TouchNavigation.d.ts +52 -0
  103. package/{src/control/TouchNavigation.ts → lib/js/control/TouchNavigation.js} +88 -193
  104. package/lib/js/control/ZoomControl.d.ts +27 -0
  105. package/{src/control/ZoomControl.ts → lib/js/control/ZoomControl.js} +25 -50
  106. package/lib/js/control/drawing/DrawingControl.d.ts +12 -0
  107. package/{src/control/drawing/DrawingControl.ts → lib/js/control/drawing/DrawingControl.js} +10 -20
  108. package/lib/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
  109. package/{src/control/drawing/LineStringDrawingScene.ts → lib/js/control/drawing/LineStringDrawingScene.js} +28 -85
  110. package/lib/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
  111. package/{src/control/drawing/PolygonDrawingScene.ts → lib/js/control/drawing/PolygonDrawingScene.js} +190 -388
  112. package/lib/js/control/elevationProfile/ElevationProfile.d.ts +61 -0
  113. package/{src/control/elevationProfile/ElevationProfile.ts → lib/js/control/elevationProfile/ElevationProfile.js} +56 -148
  114. package/lib/js/control/heightRuler/HeightRuler.d.ts +7 -0
  115. package/{src/control/heightRuler/HeightRuler.ts → lib/js/control/heightRuler/HeightRuler.js} +4 -9
  116. package/lib/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
  117. package/{src/control/heightRuler/HeightRulerScene.ts → lib/js/control/heightRuler/HeightRulerScene.js} +47 -99
  118. package/lib/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
  119. package/{src/control/heightRuler/HeightRulerSwitcher.ts → lib/js/control/heightRuler/HeightRulerSwitcher.js} +2 -4
  120. package/{src/control/index.ts → lib/js/control/index.d.ts} +1 -18
  121. package/lib/js/control/index.js +28 -0
  122. package/lib/js/control/ruler/Ruler.d.ts +13 -0
  123. package/lib/js/control/ruler/Ruler.js +23 -0
  124. package/lib/js/control/ruler/RulerScene.d.ts +88 -0
  125. package/lib/js/control/ruler/RulerScene.js +324 -0
  126. package/lib/js/control/selection/Selection.d.ts +55 -0
  127. package/{src/control/selection/Selection.ts → lib/js/control/selection/Selection.js} +15 -34
  128. package/lib/js/control/selection/SelectionScene.d.ts +44 -0
  129. package/{src/control/selection/SelectionScene.ts → lib/js/control/selection/SelectionScene.js} +26 -113
  130. package/lib/js/control/timeline/TimelineControl.d.ts +18 -0
  131. package/{src/control/timeline/TimelineControl.ts → lib/js/control/timeline/TimelineControl.js} +13 -43
  132. package/lib/js/control/timeline/TimelineModel.d.ts +41 -0
  133. package/{src/control/timeline/TimelineModel.ts → lib/js/control/timeline/TimelineModel.js} +26 -74
  134. package/lib/js/control/timeline/TimelineView.d.ts +85 -0
  135. package/{src/control/timeline/TimelineView.ts → lib/js/control/timeline/TimelineView.js} +133 -281
  136. package/lib/js/control/timeline/timelineUtils.d.ts +12 -0
  137. package/lib/js/control/timeline/timelineUtils.js +112 -0
  138. package/lib/js/control/visibleExtent/Segment.d.ts +277 -0
  139. package/{src → lib/js}/control/visibleExtent/Segment.js +145 -698
  140. package/lib/js/control/visibleExtent/VisibleExtent.d.ts +5 -0
  141. package/{src → lib/js}/control/visibleExtent/VisibleExtent.js +1 -18
  142. package/lib/js/control/visibleExtent/drawnode.d.ts +7 -0
  143. package/{src/control/visibleExtent/drawnode.ts → lib/js/control/visibleExtent/drawnode.js} +1 -28
  144. package/lib/js/ellipsoid/Ellipsoid.d.ts +187 -0
  145. package/{src/ellipsoid/Ellipsoid.ts → lib/js/ellipsoid/Ellipsoid.js} +85 -267
  146. package/lib/js/ellipsoid/index.d.ts +3 -0
  147. package/lib/js/ellipsoid/index.js +3 -0
  148. package/lib/js/ellipsoid/wgs84.d.ts +6 -0
  149. package/{src/ellipsoid/wgs84.ts → lib/js/ellipsoid/wgs84.js} +1 -2
  150. package/lib/js/entity/BaseBillboard.d.ts +222 -0
  151. package/{src/entity/BaseBillboard.ts → lib/js/entity/BaseBillboard.js} +48 -165
  152. package/lib/js/entity/BaseBillboardHandler.d.ts +81 -0
  153. package/{src/entity/BaseBillboardHandler.ts → lib/js/entity/BaseBillboardHandler.js} +139 -365
  154. package/lib/js/entity/Billboard.d.ts +113 -0
  155. package/{src/entity/Billboard.ts → lib/js/entity/Billboard.js} +19 -83
  156. package/lib/js/entity/BillboardHandler.d.ts +15 -0
  157. package/{src/entity/BillboardHandler.ts → lib/js/entity/BillboardHandler.js} +27 -59
  158. package/lib/js/entity/Entity.d.ts +354 -0
  159. package/{src/entity/Entity.ts → lib/js/entity/Entity.js} +102 -374
  160. package/lib/js/entity/EntityCollection.d.ts +363 -0
  161. package/{src/entity/EntityCollection.ts → lib/js/entity/EntityCollection.js} +57 -359
  162. package/lib/js/entity/GeoObject.d.ts +138 -0
  163. package/{src/entity/GeoObject.ts → lib/js/entity/GeoObject.js} +41 -146
  164. package/lib/js/entity/GeoObjectHandler.d.ts +99 -0
  165. package/{src/entity/GeoObjectHandler.ts → lib/js/entity/GeoObjectHandler.js} +162 -423
  166. package/lib/js/entity/Geometry.d.ts +111 -0
  167. package/lib/js/entity/Geometry.js +283 -0
  168. package/lib/js/entity/GeometryHandler.d.ts +84 -0
  169. package/{src/entity/GeometryHandler.ts → lib/js/entity/GeometryHandler.js} +162 -657
  170. package/lib/js/entity/Label.d.ts +207 -0
  171. package/{src/entity/Label.ts → lib/js/entity/Label.js} +63 -165
  172. package/lib/js/entity/LabelHandler.d.ts +65 -0
  173. package/{src/entity/LabelHandler.ts → lib/js/entity/LabelHandler.js} +175 -408
  174. package/lib/js/entity/LabelWorker.d.ts +15 -0
  175. package/{src/entity/LabelWorker.ts → lib/js/entity/LabelWorker.js} +24 -45
  176. package/lib/js/entity/PointCloud.d.ts +179 -0
  177. package/{src/entity/PointCloud.ts → lib/js/entity/PointCloud.js} +65 -265
  178. package/lib/js/entity/PointCloudHandler.d.ts +42 -0
  179. package/{src/entity/PointCloudHandler.ts → lib/js/entity/PointCloudHandler.js} +19 -62
  180. package/lib/js/entity/Polyline.d.ts +337 -0
  181. package/{src/entity/Polyline.ts → lib/js/entity/Polyline.js} +289 -924
  182. package/lib/js/entity/PolylineHandler.d.ts +22 -0
  183. package/{src/entity/PolylineHandler.ts → lib/js/entity/PolylineHandler.js} +12 -37
  184. package/lib/js/entity/Ray.d.ts +133 -0
  185. package/{src/entity/Ray.ts → lib/js/entity/Ray.js} +26 -146
  186. package/lib/js/entity/RayHandler.d.ts +70 -0
  187. package/{src/entity/RayHandler.ts → lib/js/entity/RayHandler.js} +102 -342
  188. package/lib/js/entity/Strip.d.ts +127 -0
  189. package/{src/entity/Strip.ts → lib/js/entity/Strip.js} +102 -372
  190. package/lib/js/entity/StripHandler.d.ts +42 -0
  191. package/{src/entity/StripHandler.ts → lib/js/entity/StripHandler.js} +22 -74
  192. package/{src/entity/index.ts → lib/js/entity/index.d.ts} +1 -2
  193. package/lib/js/entity/index.js +11 -0
  194. package/lib/js/index.d.ts +33 -0
  195. package/lib/js/index.js +33 -0
  196. package/lib/js/input/KeyboardHandler.d.ts +33 -0
  197. package/{src/input/KeyboardHandler.ts → lib/js/input/KeyboardHandler.js} +45 -84
  198. package/lib/js/input/MouseHandler.d.ts +16 -0
  199. package/{src/input/MouseHandler.ts → lib/js/input/MouseHandler.js} +12 -36
  200. package/lib/js/input/TouchHandler.d.ts +11 -0
  201. package/{src/input/TouchHandler.ts → lib/js/input/TouchHandler.js} +11 -23
  202. package/lib/js/input/input.d.ts +3 -0
  203. package/{src/input/input.ts → lib/js/input/input.js} +1 -1
  204. package/lib/js/layer/BaseGeoImage.d.ts +145 -0
  205. package/{src/layer/BaseGeoImage.ts → lib/js/layer/BaseGeoImage.js} +70 -235
  206. package/lib/js/layer/CanvasTiles.d.ts +103 -0
  207. package/{src/layer/CanvasTiles.ts → lib/js/layer/CanvasTiles.js} +54 -146
  208. package/lib/js/layer/GeoImage.d.ts +61 -0
  209. package/{src/layer/GeoImage.ts → lib/js/layer/GeoImage.js} +24 -54
  210. package/lib/js/layer/GeoTexture2d.d.ts +17 -0
  211. package/lib/js/layer/GeoTexture2d.js +37 -0
  212. package/lib/js/layer/GeoVideo.d.ts +68 -0
  213. package/{src/layer/GeoVideo.ts → lib/js/layer/GeoVideo.js} +31 -61
  214. package/lib/js/layer/KML.d.ts +72 -0
  215. package/{src/layer/KML.ts → lib/js/layer/KML.js} +94 -138
  216. package/lib/js/layer/Layer.d.ts +401 -0
  217. package/{src/layer/Layer.ts → lib/js/layer/Layer.js} +92 -443
  218. package/lib/js/layer/Material.d.ts +34 -0
  219. package/{src/layer/Material.ts → lib/js/layer/Material.js} +9 -43
  220. package/lib/js/layer/Vector.d.ts +243 -0
  221. package/{src/layer/Vector.ts → lib/js/layer/Vector.js} +155 -426
  222. package/lib/js/layer/WMS.d.ts +75 -0
  223. package/{src/layer/WMS.ts → lib/js/layer/WMS.js} +18 -100
  224. package/lib/js/layer/XYZ.d.ts +149 -0
  225. package/{src/layer/XYZ.ts → lib/js/layer/XYZ.js} +71 -171
  226. package/lib/js/layer/index.d.ts +11 -0
  227. package/lib/js/layer/index.js +11 -0
  228. package/lib/js/light/LightSource.d.ts +174 -0
  229. package/{src/light/LightSource.ts → lib/js/light/LightSource.js} +22 -131
  230. package/lib/js/math/Line2.d.ts +11 -0
  231. package/{src/math/Line2.ts → lib/js/math/Line2.js} +5 -15
  232. package/lib/js/math/Line3.d.ts +28 -0
  233. package/lib/js/math/Line3.js +85 -0
  234. package/lib/js/math/Mat3.d.ts +77 -0
  235. package/{src/math/Mat3.ts → lib/js/math/Mat3.js} +22 -51
  236. package/lib/js/math/Mat4.d.ts +195 -0
  237. package/{src/math/Mat4.ts → lib/js/math/Mat4.js} +53 -219
  238. package/lib/js/math/Plane.d.ts +20 -0
  239. package/{src/math/Plane.ts → lib/js/math/Plane.js} +26 -40
  240. package/lib/js/math/Quat.d.ts +373 -0
  241. package/{src/math/Quat.ts → lib/js/math/Quat.js} +106 -319
  242. package/lib/js/math/Ray.d.ts +76 -0
  243. package/{src/math/Ray.ts → lib/js/math/Ray.js} +21 -66
  244. package/lib/js/math/Vec2.d.ts +310 -0
  245. package/{src/math/Vec2.ts → lib/js/math/Vec2.js} +55 -121
  246. package/lib/js/math/Vec3.d.ts +472 -0
  247. package/{src/math/Vec3.ts → lib/js/math/Vec3.js} +103 -236
  248. package/lib/js/math/Vec4.d.ts +163 -0
  249. package/{src/math/Vec4.ts → lib/js/math/Vec4.js} +23 -79
  250. package/lib/js/math/coder.d.ts +51 -0
  251. package/{src/math/coder.ts → lib/js/math/coder.js} +14 -20
  252. package/lib/js/math/index.d.ts +11 -0
  253. package/lib/js/math/index.js +11 -0
  254. package/lib/js/math.d.ts +266 -0
  255. package/{src/math.ts → lib/js/math.js} +37 -85
  256. package/lib/js/mercator.d.ts +92 -0
  257. package/{src/mercator.ts → lib/js/mercator.js} +13 -37
  258. package/lib/js/proj/EPSG3857.d.ts +9 -0
  259. package/{src/proj/EPSG3857.ts → lib/js/proj/EPSG3857.js} +0 -2
  260. package/lib/js/proj/EPSG4326.d.ts +9 -0
  261. package/{src/proj/EPSG4326.ts → lib/js/proj/EPSG4326.js} +0 -2
  262. package/lib/js/proj/Proj.d.ts +43 -0
  263. package/{src/proj/Proj.ts → lib/js/proj/Proj.js} +4 -29
  264. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
  265. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +17 -0
  266. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +6 -0
  267. package/lib/js/quadTree/EarthQuadTreeStrategy.js +19 -0
  268. package/lib/js/quadTree/EntityCollectionNode.d.ts +54 -0
  269. package/{src/quadTree/EntityCollectionNode.ts → lib/js/quadTree/EntityCollectionNode.js} +83 -150
  270. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +6 -0
  271. package/lib/js/quadTree/MarsQuadTreeStrategy.js +17 -0
  272. package/lib/js/quadTree/Node.d.ts +61 -0
  273. package/{src/quadTree/Node.ts → lib/js/quadTree/Node.js} +140 -357
  274. package/lib/js/quadTree/QuadTreeStrategy.d.ts +25 -0
  275. package/{src/quadTree/QuadTreeStrategy.ts → lib/js/quadTree/QuadTreeStrategy.js} +13 -44
  276. package/lib/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
  277. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +15 -0
  278. package/lib/js/quadTree/index.d.ts +12 -0
  279. package/lib/js/quadTree/index.js +12 -0
  280. package/lib/js/quadTree/quadTree.d.ts +40 -0
  281. package/{src/quadTree/quadTree.ts → lib/js/quadTree/quadTree.js} +0 -9
  282. package/lib/js/renderer/Renderer.d.ts +320 -0
  283. package/{src/renderer/Renderer.ts → lib/js/renderer/Renderer.js} +265 -622
  284. package/lib/js/renderer/RendererEvents.d.ts +239 -0
  285. package/{src/renderer/RendererEvents.ts → lib/js/renderer/RendererEvents.js} +158 -472
  286. package/lib/js/scene/Axes.d.ts +12 -0
  287. package/lib/js/scene/Axes.js +59 -0
  288. package/lib/js/scene/BaseNode.d.ts +61 -0
  289. package/{src/scene/BaseNode.ts → lib/js/scene/BaseNode.js} +11 -57
  290. package/lib/js/scene/Planet.d.ts +623 -0
  291. package/{src/scene/Planet.ts → lib/js/scene/Planet.js} +257 -937
  292. package/lib/js/scene/RenderNode.d.ts +150 -0
  293. package/{src/scene/RenderNode.ts → lib/js/scene/RenderNode.js} +33 -138
  294. package/lib/js/scene/SkyBox.d.ts +13 -0
  295. package/{src/scene/SkyBox.ts → lib/js/scene/SkyBox.js} +16 -37
  296. package/{src/scene/index.ts → lib/js/scene/index.d.ts} +0 -1
  297. package/lib/js/scene/index.js +5 -0
  298. package/lib/js/segment/Segment.d.ts +278 -0
  299. package/{src/segment/Segment.ts → lib/js/segment/Segment.js} +242 -913
  300. package/lib/js/segment/SegmentLonLat.d.ts +48 -0
  301. package/{src/segment/SegmentLonLat.ts → lib/js/segment/SegmentLonLat.js} +58 -132
  302. package/lib/js/segment/SegmentLonLatWgs84.d.ts +10 -0
  303. package/lib/js/segment/SegmentLonLatWgs84.js +23 -0
  304. package/lib/js/segment/Slice.d.ts +13 -0
  305. package/{src/segment/Slice.ts → lib/js/segment/Slice.js} +4 -22
  306. package/lib/js/segment/segmentHelper.d.ts +18 -0
  307. package/{src/segment/segmentHelper.ts → lib/js/segment/segmentHelper.js} +30 -88
  308. package/lib/js/shaders/atmos.d.ts +4 -0
  309. package/{src/shaders/atmos.ts → lib/js/shaders/atmos.js} +8 -26
  310. package/lib/js/shaders/billboard.d.ts +3 -0
  311. package/{src/shaders/billboard.ts → lib/js/shaders/billboard.js} +9 -18
  312. package/lib/js/shaders/bloom.d.ts +2 -0
  313. package/{src/shaders/bloom.ts → lib/js/shaders/bloom.js} +5 -8
  314. package/lib/js/shaders/blur.d.ts +3 -0
  315. package/{src/shaders/blur.ts → lib/js/shaders/blur.js} +11 -19
  316. package/lib/js/shaders/depth.d.ts +2 -0
  317. package/{src/shaders/depth.ts → lib/js/shaders/depth.js} +3 -6
  318. package/lib/js/shaders/drawnode.d.ts +8 -0
  319. package/{src/shaders/drawnode.ts → lib/js/shaders/drawnode.js} +23 -75
  320. package/lib/js/shaders/geoObject.d.ts +3 -0
  321. package/{src/shaders/geoObject.ts → lib/js/shaders/geoObject.js} +51 -63
  322. package/lib/js/shaders/label.d.ts +4 -0
  323. package/{src/shaders/label.ts → lib/js/shaders/label.js} +12 -25
  324. package/lib/js/shaders/lumFilter.d.ts +2 -0
  325. package/{src/shaders/lumFilter.ts → lib/js/shaders/lumFilter.js} +4 -7
  326. package/lib/js/shaders/pickingMask.d.ts +2 -0
  327. package/{src/shaders/pickingMask.ts → lib/js/shaders/pickingMask.js} +5 -8
  328. package/lib/js/shaders/pointCloud.d.ts +2 -0
  329. package/{src/shaders/pointCloud.ts → lib/js/shaders/pointCloud.js} +4 -7
  330. package/lib/js/shaders/polyline.d.ts +3 -0
  331. package/{src/shaders/polyline.ts → lib/js/shaders/polyline.js} +7 -22
  332. package/lib/js/shaders/ray.d.ts +2 -0
  333. package/{src/shaders/ray.ts → lib/js/shaders/ray.js} +4 -7
  334. package/lib/js/shaders/screenFrame.d.ts +2 -0
  335. package/{src/shaders/screenFrame.ts → lib/js/shaders/screenFrame.js} +5 -8
  336. package/lib/js/shaders/skybox.d.ts +2 -0
  337. package/{src/shaders/skybox.ts → lib/js/shaders/skybox.js} +10 -13
  338. package/lib/js/shaders/toneMapping.d.ts +2 -0
  339. package/{src/shaders/toneMapping.ts → lib/js/shaders/toneMapping.js} +5 -8
  340. package/lib/js/shaders/utils.d.ts +1 -0
  341. package/{src/shaders/utils.ts → lib/js/shaders/utils.js} +1 -1
  342. package/lib/js/terrain/BilTerrain.d.ts +18 -0
  343. package/{src/terrain/BilTerrain.ts → lib/js/terrain/BilTerrain.js} +21 -118
  344. package/lib/js/terrain/EmptyTerrain.d.ts +106 -0
  345. package/{src/terrain/EmptyTerrain.ts → lib/js/terrain/EmptyTerrain.js} +20 -144
  346. package/lib/js/terrain/Geoid.d.ts +33 -0
  347. package/lib/js/terrain/Geoid.js +191 -0
  348. package/lib/js/terrain/GlobusTerrain.d.ts +134 -0
  349. package/{src/terrain/GlobusTerrain.ts → lib/js/terrain/GlobusTerrain.js} +84 -241
  350. package/lib/js/terrain/MapboxTerrain.d.ts +21 -0
  351. package/{src/terrain/MapboxTerrain.ts → lib/js/terrain/MapboxTerrain.js} +46 -215
  352. package/{src/terrain/index.ts → lib/js/terrain/index.d.ts} +0 -1
  353. package/lib/js/terrain/index.js +5 -0
  354. package/lib/js/ui/Button.d.ts +32 -0
  355. package/lib/js/ui/Button.js +78 -0
  356. package/lib/js/ui/ButtonGroup.d.ts +16 -0
  357. package/lib/js/ui/ButtonGroup.js +41 -0
  358. package/lib/js/ui/Dialog.d.ts +55 -0
  359. package/lib/js/ui/Dialog.js +173 -0
  360. package/lib/js/ui/Slider.d.ts +38 -0
  361. package/lib/js/ui/Slider.js +129 -0
  362. package/lib/js/ui/ToggleButton.d.ts +20 -0
  363. package/lib/js/ui/ToggleButton.js +42 -0
  364. package/lib/js/ui/View.d.ts +37 -0
  365. package/{src/ui/View.ts → lib/js/ui/View.js} +31 -77
  366. package/lib/js/ui/icons.d.ts +1 -0
  367. package/{src/ui/icons.ts → lib/js/ui/icons.js} +1 -1
  368. package/lib/js/utils/BaseWorker.d.ts +14 -0
  369. package/{src/utils/BaseWorker.ts → lib/js/utils/BaseWorker.js} +15 -28
  370. package/lib/js/utils/FontAtlas.d.ts +82 -0
  371. package/{src/utils/FontAtlas.ts → lib/js/utils/FontAtlas.js} +46 -182
  372. package/lib/js/utils/GeoImageCreator.d.ts +34 -0
  373. package/{src/utils/GeoImageCreator.ts → lib/js/utils/GeoImageCreator.js} +34 -91
  374. package/lib/js/utils/ImagesCacheManager.d.ts +22 -0
  375. package/{src/utils/ImagesCacheManager.ts → lib/js/utils/ImagesCacheManager.js} +16 -38
  376. package/lib/js/utils/Loader.d.ts +63 -0
  377. package/lib/js/utils/Loader.js +156 -0
  378. package/lib/js/utils/NormalMapCreator.d.ts +52 -0
  379. package/{src/utils/NormalMapCreator.ts → lib/js/utils/NormalMapCreator.js} +64 -195
  380. package/lib/js/utils/PlainSegmentWorker.d.ts +24 -0
  381. package/{src/utils/PlainSegmentWorker.ts → lib/js/utils/PlainSegmentWorker.js} +24 -56
  382. package/lib/js/utils/TerrainWorker.d.ts +28 -0
  383. package/{src/utils/TerrainWorker.ts → lib/js/utils/TerrainWorker.js} +19 -56
  384. package/lib/js/utils/TextureAtlas.d.ts +113 -0
  385. package/{src/utils/TextureAtlas.ts → lib/js/utils/TextureAtlas.js} +40 -131
  386. package/lib/js/utils/VectorTileCreator.d.ts +18 -0
  387. package/{src/utils/VectorTileCreator.ts → lib/js/utils/VectorTileCreator.js} +61 -147
  388. package/lib/js/utils/colorTable.d.ts +3 -0
  389. package/{src/utils/colorTable.ts → lib/js/utils/colorTable.js} +2 -2
  390. package/lib/js/utils/earcut.d.ts +7 -0
  391. package/{src/utils/earcut.ts → lib/js/utils/earcut.js} +95 -223
  392. package/lib/js/utils/objParser.d.ts +24 -0
  393. package/{src/utils/objParser.ts → lib/js/utils/objParser.js} +38 -93
  394. package/lib/js/utils/shared.d.ts +267 -0
  395. package/{src/utils/shared.ts → lib/js/utils/shared.js} +185 -342
  396. package/lib/js/utils/units.d.ts +16 -0
  397. package/lib/js/utils/units.js +61 -0
  398. package/lib/js/webgl/BaseFramebuffer.d.ts +53 -0
  399. package/{src/webgl/BaseFramebuffer.ts → lib/js/webgl/BaseFramebuffer.js} +22 -59
  400. package/lib/js/webgl/Framebuffer.d.ts +69 -0
  401. package/{src/webgl/Framebuffer.ts → lib/js/webgl/Framebuffer.js} +30 -87
  402. package/lib/js/webgl/Handler.d.ts +473 -0
  403. package/{src/webgl/Handler.ts → lib/js/webgl/Handler.js} +175 -586
  404. package/lib/js/webgl/Multisample.d.ts +27 -0
  405. package/lib/js/webgl/Multisample.js +77 -0
  406. package/lib/js/webgl/Program.d.ts +159 -0
  407. package/{src/webgl/Program.ts → lib/js/webgl/Program.js} +73 -210
  408. package/lib/js/webgl/ProgramController.d.ts +86 -0
  409. package/{src/webgl/ProgramController.ts → lib/js/webgl/ProgramController.js} +11 -45
  410. package/{src/webgl/index.ts → lib/js/webgl/index.d.ts} +1 -8
  411. package/lib/js/webgl/index.js +6 -0
  412. package/lib/js/webgl/types.d.ts +9 -0
  413. package/{src/webgl/types.ts → lib/js/webgl/types.js} +5 -8
  414. package/lib/js/webgl/variableHandlers.d.ts +22 -0
  415. package/lib/js/webgl/variableHandlers.js +78 -0
  416. package/package.json +23 -34
  417. package/dist/@openglobus/og.esm.js +0 -2
  418. package/dist/@openglobus/og.esm.js.map +0 -1
  419. package/dist/@openglobus/og.umd.js +0 -2
  420. package/dist/@openglobus/og.umd.js.map +0 -1
  421. package/src/Deferred.ts +0 -17
  422. package/src/control/MouseWheelZoomControl.ts +0 -269
  423. package/src/control/ScaleControl.ts +0 -131
  424. package/src/control/SegmentBoundVisualization.ts +0 -50
  425. package/src/control/ShowFps.ts +0 -28
  426. package/src/control/ToggleWireframe.ts +0 -35
  427. package/src/control/ruler/Ruler.ts +0 -35
  428. package/src/control/ruler/RulerScene.ts +0 -437
  429. package/src/control/timeline/timelineUtils.ts +0 -133
  430. package/src/ellipsoid/index.ts +0 -4
  431. package/src/entity/Geometry.ts +0 -486
  432. package/src/index.ts +0 -173
  433. package/src/layer/GeoTexture2d.ts +0 -56
  434. package/src/layer/index.ts +0 -12
  435. package/src/math/Line3.ts +0 -162
  436. package/src/math/index.ts +0 -26
  437. package/src/quadTree/EPSG4326QuadTreeStrategy.ts +0 -24
  438. package/src/quadTree/EarthQuadTreeStrategy.ts +0 -28
  439. package/src/quadTree/MarsQuadTreeStrategy.ts +0 -25
  440. package/src/quadTree/Wgs84QuadTreeStrategy.ts +0 -22
  441. package/src/quadTree/index.ts +0 -14
  442. package/src/scene/Axes.ts +0 -78
  443. package/src/segment/SegmentLonLatWgs84.ts +0 -33
  444. package/src/terrain/Geoid.ts +0 -273
  445. package/src/ui/Button.ts +0 -121
  446. package/src/ui/ButtonGroup.ts +0 -63
  447. package/src/ui/Dialog.ts +0 -244
  448. package/src/ui/Slider.ts +0 -188
  449. package/src/ui/ToggleButton.ts +0 -68
  450. package/src/utils/Loader.ts +0 -247
  451. package/src/utils/units.ts +0 -78
  452. package/src/webgl/Multisample.ts +0 -153
  453. package/src/webgl/variableHandlers.ts +0 -114
  454. /package/{dist → lib}/@openglobus/og.css +0 -0
  455. /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.json +0 -0
  456. /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.cfg +0 -0
  457. /package/{dist → lib}/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  458. /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.json +0 -0
  459. /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.cfg +0 -0
  460. /package/{dist → lib}/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  461. /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.json +0 -0
  462. /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.cfg +0 -0
  463. /package/{dist → lib}/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  464. /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.json +0 -0
  465. /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +0 -0
  466. /package/{dist → lib}/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  467. /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.json +0 -0
  468. /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +0 -0
  469. /package/{dist → lib}/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  470. /package/{dist → lib}/@openglobus/res/fonts/arial.js +0 -0
  471. /package/{dist → lib}/@openglobus/res/fonts/arial.json +0 -0
  472. /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.cfg +0 -0
  473. /package/{dist → lib}/@openglobus/res/fonts/arial.ttf.png +0 -0
  474. /package/{dist → lib}/@openglobus/res/night-4326.png +0 -0
  475. /package/{dist → lib}/@openglobus/res/night.png +0 -0
  476. /package/{dist → lib}/@openglobus/res/spec.png +0 -0
@@ -1,51 +1,40 @@
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
-
1
+ import { Camera } from "../camera/Camera";
2
+ import { cons } from "../cons";
3
+ import { createRendererEvents } from "./RendererEvents";
4
+ import { depth } from "../shaders/depth";
5
+ import { Framebuffer, Multisample } from "../webgl/index";
6
+ import { FontAtlas } from "../utils/FontAtlas";
7
+ import { input } from "../input/input";
8
+ import { isEmpty } from "../utils/shared";
9
+ import { LabelWorker } from "../entity/LabelWorker";
10
+ import { pickingMask } from "../shaders/pickingMask";
11
+ import { randomi } from "../math";
12
+ import { screenFrame } from "../shaders/screenFrame";
13
+ import { toneMapping } from "../shaders/toneMapping";
14
+ import { TextureAtlas } from "../utils/TextureAtlas";
15
+ import { Vec2 } from "../math/Vec2";
16
+ import { Vec3 } from "../math/Vec3";
41
17
  const MSAA_DEFAULT = 0;
42
-
43
18
  let __pickingCallbackCounter__ = 0;
44
-
45
19
  let __depthCallbackCounter__ = 0;
46
-
47
20
  let __distanceCallbackCounter__ = 0;
48
-
21
+ function clientWaitAsync(gl, sync, flags) {
22
+ return new Promise((resolve, reject) => {
23
+ function check() {
24
+ const res = gl.clientWaitSync(sync, flags, 0);
25
+ if (res == gl.WAIT_FAILED) {
26
+ reject();
27
+ }
28
+ else if (res == gl.TIMEOUT_EXPIRED) {
29
+ requestAnimationFrame(check);
30
+ }
31
+ else {
32
+ resolve();
33
+ }
34
+ }
35
+ check();
36
+ });
37
+ }
49
38
  /**
50
39
  * Represents high level WebGL context interface that starts WebGL handler working in real time.
51
40
  * @class
@@ -79,320 +68,173 @@ let __distanceCallbackCounter__ = 0;
79
68
  * @fires EventsHandler<RendererEventsType>#touchleave
80
69
  * @fires EventsHandler<RendererEventsType>#touchenter
81
70
  */
82
-
83
- let __resizeTimeout: any;
84
-
85
- export interface HTMLDivElementExt extends HTMLDivElement {
86
- attributions?: HTMLElement;
87
- }
88
-
71
+ let __resizeTimeout;
89
72
  class Renderer {
90
-
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
+ constructor(handler, params = {}) {
74
+ this._readPickingBuffer_webgl1 = () => {
75
+ this.pickingFramebuffer.activate();
76
+ this.pickingFramebuffer.readAllPixels(this._tempPickingPix_);
77
+ this.pickingFramebuffer.deactivate();
78
+ };
79
+ this._readPickingBuffer_webgl2 = () => {
80
+ const gl = this.handler.gl;
81
+ const buf = this._pickingPixelBuffer;
82
+ if (!this._skipPickingFrame) {
83
+ this._skipPickingFrame = true;
84
+ let dest = this._tempPickingPix_;
85
+ let w = this.pickingFramebuffer.width, h = this.pickingFramebuffer.height;
86
+ this.pickingFramebuffer.activate();
87
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);
88
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, dest.byteLength, gl.STREAM_READ);
89
+ gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, 0);
90
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
91
+ this.pickingFramebuffer.deactivate();
92
+ const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
93
+ gl.flush();
94
+ clientWaitAsync(gl, sync, 0).then(() => {
95
+ this._skipPickingFrame = false;
96
+ gl.deleteSync(sync);
97
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);
98
+ gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, dest);
99
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
100
+ });
101
+ }
102
+ };
103
+ this._readDistanceBuffer_webgl1 = () => {
104
+ this.distanceFramebuffer.activate();
105
+ this.distanceFramebuffer.readAllPixels(this._tempDistancePix_);
106
+ this.distanceFramebuffer.deactivate();
107
+ };
108
+ this._readDistanceBuffer_webgl2 = () => {
109
+ const gl = this.handler.gl;
110
+ const buf = this._distancePixelBuffer;
111
+ if (!this._skipDistanceFrame) {
112
+ this._skipDistanceFrame = true;
113
+ let dest = this._tempDistancePix_;
114
+ let w = this.distanceFramebuffer.width, h = this.distanceFramebuffer.height;
115
+ this.distanceFramebuffer.activate();
116
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);
117
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, dest.byteLength, gl.STREAM_READ);
118
+ gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, 0);
119
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
120
+ this.distanceFramebuffer.deactivate();
121
+ const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
122
+ gl.flush();
123
+ clientWaitAsync(gl, sync, 0).then(() => {
124
+ this._skipDistanceFrame = false;
125
+ gl.deleteSync(sync);
126
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);
127
+ gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, dest);
128
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
129
+ });
130
+ }
131
+ };
251
132
  this.div = null;
252
-
253
133
  this.handler = handler;
254
-
255
134
  this.exposure = 3.01;
256
-
257
135
  this.gamma = 0.47;
258
-
259
136
  this.whitepoint = 1.0;
260
-
261
137
  this.brightThreshold = 0.9;
262
-
263
138
  this._renderNodesArr = [];
264
-
265
139
  this.renderNodes = {};
266
-
267
140
  this.activeCamera = null;
268
-
269
141
  this.events = createRendererEvents(this);
270
-
271
142
  this.controls = {};
272
-
273
143
  if (params.controls) {
274
144
  for (let i in params.controls) {
275
145
  this.controls[params.controls[i].name] = params.controls[i];
276
146
  }
277
147
  }
278
-
279
148
  this.controlsBag = {};
280
-
281
- this.colorObjects = new Map<string, any>();
282
-
149
+ this.colorObjects = new Map();
283
150
  this._pickingCallbacks = [];
284
-
285
151
  this.pickingFramebuffer = null;
286
-
287
152
  this._tempPickingPix_ = new Uint8Array([]);
288
-
289
153
  this.distanceFramebuffer = null;
290
-
291
154
  this._distanceCallbacks = [];
292
-
293
155
  this._tempDistancePix_ = new Uint8Array([]);
294
-
295
156
  this._depthCallbacks = [];
296
-
297
157
  this.depthFramebuffer = null;
298
-
299
158
  let urlParams = new URLSearchParams(location.search);
300
159
  let msaaParam = urlParams.get('og_msaa');
301
160
  if (msaaParam) {
302
161
  this._msaa = Number(urlParams.get('og_msaa'));
303
- } else {
162
+ }
163
+ else {
304
164
  this._msaa = params.msaa != undefined ? params.msaa : MSAA_DEFAULT;
305
165
  }
306
-
307
166
  this._internalFormat = "RGBA16F";
308
167
  this._format = "RGBA";
309
168
  this._type = "FLOAT";
310
-
311
169
  this.sceneFramebuffer = null;
312
-
313
170
  this.blitFramebuffer = null;
314
-
315
171
  this.toneMappingFramebuffer = null;
316
-
317
172
  this._initialized = false;
318
-
319
173
  /**
320
174
  * Texture atlas for the billboards images. One atlas per node.
321
175
  * @public
322
176
  * @type {TextureAtlas}
323
177
  */
324
178
  this.billboardsTextureAtlas = new TextureAtlas();
325
-
326
179
  /**
327
180
  * Texture atlas for the billboards images. One atlas per node.
328
181
  * @public
329
182
  * @type {TextureAtlas}
330
183
  */
331
184
  this.geoObjectsTextureAtlas = new TextureAtlas();
332
-
333
185
  /**
334
186
  * Texture font atlas for the font families and styles. One atlas per node.
335
187
  * @public
336
188
  * @type {FontAtlas}
337
189
  */
338
190
  this.fontAtlas = new FontAtlas(params.fontsSrc);
339
-
340
191
  this._entityCollections = [];
341
-
342
192
  this._currentOutput = "screen";
343
-
344
193
  this._fnScreenFrame = null;
345
-
346
194
  this.labelWorker = new LabelWorker(4);
347
-
348
195
  this.__useDistanceFramebuffer__ = true;
349
-
350
196
  this.screenDepthFramebuffer = null;
351
-
352
197
  this.screenFramePositionBuffer = null;
353
-
354
198
  this.screenTexture = {};
355
-
356
199
  this.outputTexture = null;
357
-
358
200
  this._pickingMaskCoordinatesBuffer = null;
359
-
201
+ this._skipDistanceFrame = false;
202
+ this._distancePixelBuffer = null;
203
+ this._skipPickingFrame = false;
204
+ this._pickingPixelBuffer = null;
205
+ this._readDistanceBuffer = this._readDistanceBuffer_webgl2;
206
+ this._readPickingBuffer = this._readPickingBuffer_webgl2;
360
207
  if (params.autoActivate || isEmpty(params.autoActivate)) {
361
208
  this.start();
362
209
  }
363
210
  }
364
-
365
- public enableBlendOneSrcAlpha() {
366
- let gl = this.handler.gl!;
211
+ enableBlendOneSrcAlpha() {
212
+ let gl = this.handler.gl;
367
213
  gl.enable(gl.BLEND);
368
214
  gl.blendEquation(gl.FUNC_ADD);
369
215
  gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
370
216
  }
371
-
372
- public enableBlendDefault() {
373
- let gl = this.handler.gl!;
217
+ enableBlendDefault() {
218
+ let gl = this.handler.gl;
374
219
  gl.enable(gl.BLEND);
375
220
  gl.blendEquation(gl.FUNC_ADD);
376
221
  gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE);
377
222
  }
378
-
379
223
  /**
380
224
  * Sets renderer events activity.
381
225
  * @param {Boolean} activity - Events activity.
382
226
  */
383
- public setEventsActivity(activity: boolean) {
227
+ setEventsActivity(activity) {
384
228
  this.events.active = activity;
385
229
  }
386
-
387
- public addDepthCallback(sender: any, callback: Function) {
230
+ addDepthCallback(sender, callback) {
388
231
  let id = __depthCallbackCounter__++;
389
232
  this._depthCallbacks.push({
390
233
  id: id, callback: callback, sender: sender
391
234
  });
392
235
  return id;
393
236
  }
394
-
395
- public removeDepthCallback(id: number) {
237
+ removeDepthCallback(id) {
396
238
  for (let i = 0; i < this._depthCallbacks.length; i++) {
397
239
  if (id === this._depthCallbacks[i].id) {
398
240
  this._depthCallbacks.splice(i, 1);
@@ -400,16 +242,14 @@ class Renderer {
400
242
  }
401
243
  }
402
244
  }
403
-
404
- public addDistanceCallback(sender: any, callback: Function) {
245
+ addDistanceCallback(sender, callback) {
405
246
  let id = __distanceCallbackCounter__++;
406
247
  this._distanceCallbacks.push({
407
248
  id: id, callback: callback, sender: sender
408
249
  });
409
250
  return id;
410
251
  }
411
-
412
- public removeDistanceCallback(id: number) {
252
+ removeDistanceCallback(id) {
413
253
  for (let i = 0; i < this._distanceCallbacks.length; i++) {
414
254
  if (id === this._distanceCallbacks[i].id) {
415
255
  this._distanceCallbacks.splice(i, 1);
@@ -417,27 +257,24 @@ class Renderer {
417
257
  }
418
258
  }
419
259
  }
420
-
421
-
422
260
  /**
423
261
  * Adds picking rendering callback function.
424
262
  * @param {object} sender - Callback context.
425
263
  * @param {Function} callback - Rendering callback.
426
264
  * @returns {Number} Handler id
427
265
  */
428
- public addPickingCallback(sender: any, callback: Function) {
266
+ addPickingCallback(sender, callback) {
429
267
  let id = __pickingCallbackCounter__++;
430
268
  this._pickingCallbacks.push({
431
269
  id: id, callback: callback, sender: sender
432
270
  });
433
271
  return id;
434
272
  }
435
-
436
273
  /**
437
274
  * Removes picking rendering callback function.
438
275
  * @param {Number} id - Handler id to remove.
439
276
  */
440
- public removePickingCallback(id: number) {
277
+ removePickingCallback(id) {
441
278
  for (let i = 0; i < this._pickingCallbacks.length; i++) {
442
279
  if (id === this._pickingCallbacks[i].id) {
443
280
  this._pickingCallbacks.splice(i, 1);
@@ -445,25 +282,21 @@ class Renderer {
445
282
  }
446
283
  }
447
284
  }
448
-
449
- public getPickingObject<T>(r: number, g: number, b: number): T {
285
+ getPickingObject(r, g, b) {
450
286
  return this.colorObjects.get(`${r}_${g}_${b}`);
451
287
  }
452
-
453
- public getPickingObjectArr<T>(arr: NumberArray3 | Uint8Array): T {
288
+ getPickingObjectArr(arr) {
454
289
  return this.colorObjects.get(`${arr[0]}_${arr[1]}_${arr[2]}`);
455
290
  }
456
-
457
- public getPickingObject3v<T>(vec: Vec3 | Vec4): T {
291
+ getPickingObject3v(vec) {
458
292
  return this.colorObjects.get(`${vec.x}_${vec.y}_${vec.z}`);
459
293
  }
460
-
461
294
  /**
462
295
  * Assign picking color to the object.
463
296
  * @public
464
297
  * @param {Object} obj - Object that presume to be picked.
465
298
  */
466
- public assignPickingColor<T>(obj: T & IPickingObject) {
299
+ assignPickingColor(obj) {
467
300
  if (!obj._pickingColor || obj._pickingColor.isZero()) {
468
301
  let r = 0, g = 0, b = 0;
469
302
  let str = "0_0_0";
@@ -473,25 +306,22 @@ class Renderer {
473
306
  b = randomi(1, 255);
474
307
  str = `${r}_${g}_${b}`;
475
308
  }
476
-
477
309
  if (!obj._pickingColor) {
478
310
  obj._pickingColor = new Vec3(r, g, b);
479
- } else {
311
+ }
312
+ else {
480
313
  obj._pickingColor.set(r, g, b);
481
314
  }
482
-
483
315
  obj._pickingColorU = new Float32Array([r / 255, g / 255, b / 255]);
484
-
485
316
  this.colorObjects.set(str, obj);
486
317
  }
487
318
  }
488
-
489
319
  /**
490
320
  * Removes picking color from object.
491
321
  * @public
492
322
  * @param {Object} obj - Object to remove picking color.
493
323
  */
494
- public clearPickingColor<T>(obj: T & IPickingObject) {
324
+ clearPickingColor(obj) {
495
325
  if (obj._pickingColor && !obj._pickingColor.isZero()) {
496
326
  let c = obj._pickingColor;
497
327
  if (!c.isZero()) {
@@ -500,125 +330,104 @@ class Renderer {
500
330
  }
501
331
  }
502
332
  }
503
-
504
333
  /**
505
334
  * Get the client width.
506
335
  * @public
507
336
  * @returns {number} -
508
337
  */
509
- public getWidth(): number {
510
- return this.handler.canvas!.clientWidth;
338
+ getWidth() {
339
+ return this.handler.canvas.clientWidth;
511
340
  }
512
-
513
341
  /**
514
342
  * Get the client height.
515
343
  * @public
516
344
  * @returns {number} -
517
345
  */
518
- public getHeight(): number {
519
- return this.handler.canvas!.clientHeight;
346
+ getHeight() {
347
+ return this.handler.canvas.clientHeight;
520
348
  }
521
-
522
349
  /**
523
350
  * Get center of the canvas
524
351
  * @public
525
352
  * @returns {Vec2} -
526
353
  */
527
- public getCenter(): Vec2 {
528
- let cnv = this.handler.canvas!;
354
+ getCenter() {
355
+ let cnv = this.handler.canvas;
529
356
  return new Vec2(Math.round(cnv.width * 0.5), Math.round(cnv.height * 0.5));
530
357
  }
531
-
532
358
  /**
533
359
  * Get center of the screen viewport
534
360
  * @public
535
361
  * @returns {Vec2} -
536
362
  */
537
- public getClientCenter(): Vec2 {
538
- let cnv = this.handler.canvas!;
363
+ getClientCenter() {
364
+ let cnv = this.handler.canvas;
539
365
  return new Vec2(Math.round(cnv.clientWidth * 0.5), Math.round(cnv.clientHeight * 0.5));
540
366
  }
541
-
542
367
  /**
543
368
  * Add the given control to the renderer.
544
369
  * @param {Control} control - Control.
545
370
  */
546
- public addControl(control: Control) {
371
+ addControl(control) {
547
372
  control.addTo(this);
548
373
  }
549
-
550
374
  /**
551
375
  * Add the given controls array to the planet node.
552
376
  * @param {Array.<Control>} cArr - Control array.
553
377
  */
554
- public addControls(cArr: Control[]) {
378
+ addControls(cArr) {
555
379
  for (let i = 0; i < cArr.length; i++) {
556
380
  cArr[i].addTo(this);
557
381
  }
558
382
  }
559
-
560
383
  /**
561
384
  * Remove control from the renderer.
562
385
  * @param {Control} control - Control.
563
386
  */
564
- public removeControl(control: Control) {
387
+ removeControl(control) {
565
388
  control.remove();
566
389
  }
567
-
568
- public isInitialized(): boolean {
390
+ isInitialized() {
569
391
  return this._initialized;
570
392
  }
571
-
572
393
  /**
573
394
  * Renderer initialization.
574
395
  * @public
575
396
  */
576
- public initialize() {
577
-
397
+ initialize() {
578
398
  if (this._initialized) {
579
399
  return;
580
- } else {
400
+ }
401
+ else {
581
402
  this._initialized = true;
582
403
  }
583
-
584
404
  this.handler.initialize();
585
-
586
405
  this.billboardsTextureAtlas.assignHandler(this.handler);
587
406
  this.geoObjectsTextureAtlas.assignHandler(this.handler);
588
-
589
407
  this.fontAtlas.assignHandler(this.handler);
590
-
591
408
  this.handler.setFrameCallback(() => {
592
409
  this.draw();
593
410
  });
594
-
595
411
  this.activeCamera = new Camera(this, {
596
412
  eye: new Vec3(0, 0, 0), look: new Vec3(0, 0, -1), up: new Vec3(0, 1, 0)
597
413
  });
598
-
599
414
  this.events.initialize();
600
-
601
415
  // Bind console key
602
416
  this.events.on("charkeypress", input.KEY_APOSTROPHE, function () {
603
417
  cons.setVisibility(!cons.getVisibility());
604
418
  });
605
-
606
419
  this.handler.addProgram(screenFrame());
607
-
608
420
  this.pickingFramebuffer = new Framebuffer(this.handler, {
609
421
  width: 640, height: 480, depthComponent: "DEPTH_STENCIL", renderbufferTarget: "DEPTH_STENCIL_ATTACHMENT"
610
422
  });
611
423
  this.pickingFramebuffer.init();
612
-
613
424
  this._tempPickingPix_ = new Uint8Array(this.pickingFramebuffer.width * this.pickingFramebuffer.height * 4);
614
-
615
425
  this.distanceFramebuffer = new Framebuffer(this.handler, {
616
426
  width: 320, height: 240
617
427
  });
618
428
  this.distanceFramebuffer.init();
619
-
620
429
  this._tempDistancePix_ = new Uint8Array(this.distanceFramebuffer.width * this.distanceFramebuffer.height * 4);
621
-
430
+ //this._tempDistancePix_ = new Uint8Array(4);
622
431
  this.depthFramebuffer = new Framebuffer(this.handler, {
623
432
  size: 2,
624
433
  internalFormat: ["RGBA", "DEPTH_COMPONENT24"],
@@ -628,44 +437,37 @@ class Renderer {
628
437
  useDepth: false
629
438
  });
630
439
  this.depthFramebuffer.init();
631
-
632
440
  this.screenDepthFramebuffer = new Framebuffer(this.handler, {
633
441
  useDepth: false
634
442
  });
635
443
  this.screenDepthFramebuffer.init();
636
-
637
- if (this.handler.gl!.type === "webgl") {
444
+ if (this.handler.gl.type === "webgl") {
445
+ this._readDistanceBuffer = this._readDistanceBuffer_webgl1;
446
+ this._readPickingBuffer = this._readPickingBuffer_webgl1;
638
447
  this.sceneFramebuffer = new Framebuffer(this.handler);
639
448
  this.sceneFramebuffer.init();
640
-
641
449
  this._fnScreenFrame = this._screenFrameNoMSAA;
642
-
643
450
  this.screenTexture = {
644
- screen: this.sceneFramebuffer!.textures[0],
645
- picking: this.pickingFramebuffer!.textures[0],
646
- distance: this.distanceFramebuffer!.textures[0],
647
- depth: this.screenDepthFramebuffer!.textures[0]
451
+ screen: this.sceneFramebuffer.textures[0],
452
+ picking: this.pickingFramebuffer.textures[0],
453
+ distance: this.distanceFramebuffer.textures[0],
454
+ depth: this.screenDepthFramebuffer.textures[0]
648
455
  };
649
- } else {
456
+ }
457
+ else {
650
458
  let _maxMSAA = this.getMaxMSAA(this._internalFormat);
651
-
652
459
  if (this._msaa > _maxMSAA) {
653
460
  this._msaa = _maxMSAA;
654
461
  }
655
-
656
462
  this.handler.addPrograms([toneMapping()]);
657
-
658
463
  this.handler.addPrograms([depth()]);
659
-
660
464
  this.sceneFramebuffer = new Multisample(this.handler, {
661
465
  size: 1,
662
466
  msaa: this._msaa,
663
467
  internalFormat: this._internalFormat,
664
468
  filter: "LINEAR"
665
469
  });
666
-
667
470
  this.sceneFramebuffer.init();
668
-
669
471
  this.blitFramebuffer = new Framebuffer(this.handler, {
670
472
  size: 1,
671
473
  useDepth: false,
@@ -674,138 +476,127 @@ class Renderer {
674
476
  type: this._type,
675
477
  filter: "NEAREST"
676
478
  });
677
-
678
479
  this.blitFramebuffer.init();
679
-
680
480
  this.toneMappingFramebuffer = new Framebuffer(this.handler, {
681
481
  useDepth: false
682
482
  });
683
-
684
483
  this.toneMappingFramebuffer.init();
685
-
686
484
  this._fnScreenFrame = this._screenFrameMSAA;
687
-
688
485
  this.screenTexture = {
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]
486
+ screen: this.toneMappingFramebuffer.textures[0],
487
+ picking: this.pickingFramebuffer.textures[0],
488
+ distance: this.distanceFramebuffer.textures[0],
489
+ depth: this.screenDepthFramebuffer.textures[0],
490
+ frustum: this.depthFramebuffer.textures[0]
694
491
  };
492
+ this._initReadPixelsBuffers();
695
493
  }
696
-
697
494
  this.handler.addProgram(pickingMask());
698
-
699
495
  this.handler.ONCANVASRESIZE = () => {
700
496
  this._resizeStart();
701
497
  this.events.dispatch(this.events.resize, this.handler.canvas);
702
- clearTimeout(__resizeTimeout);
703
- __resizeTimeout = setTimeout(() => {
704
- this._resizeEnd();
705
- this.events.dispatch(this.events.resizeend, this.handler.canvas);
706
- }, 320);
498
+ this._resizeEnd();
499
+ //clearTimeout(__resizeTimeout);
500
+ // __resizeTimeout = setTimeout(() => {
501
+ // this._resizeEnd();
502
+ // this.events.dispatch(this.events.resizeend, this.handler.canvas);
503
+ // }, 320);
504
+ this.events.dispatch(this.events.resizeend, this.handler.canvas);
707
505
  };
708
-
709
506
  this.screenFramePositionBuffer = this.handler.createArrayBuffer(new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), 2, 4);
710
-
711
-
712
507
  this.outputTexture = this.screenTexture.screen;
713
-
714
508
  this._pickingMaskCoordinatesBuffer = this.handler.createArrayBuffer(new Float32Array([0, 0]), 2, 1);
715
-
716
509
  this._initializeRenderNodes();
717
-
718
510
  this._initializeControls();
719
511
  }
720
-
721
- public _initializeControls() {
512
+ _initReadPixelsBuffers() {
513
+ let gl = this.handler.gl;
514
+ this._distancePixelBuffer = gl.createBuffer();
515
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, this._distancePixelBuffer);
516
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, this.distanceFramebuffer.width * this.distanceFramebuffer.height * 4, gl.STREAM_READ);
517
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
518
+ this._pickingPixelBuffer = gl.createBuffer();
519
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, this._pickingPixelBuffer);
520
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, this.pickingFramebuffer.width * this.pickingFramebuffer.height * 4, gl.STREAM_READ);
521
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
522
+ }
523
+ _initializeControls() {
722
524
  let temp = this.controls;
723
525
  this.controls = {};
724
526
  for (let i in temp) {
725
527
  this.addControl(temp[i]);
726
528
  }
727
529
  }
728
-
729
- public resize() {
530
+ resize() {
730
531
  this._resizeEnd();
731
532
  }
732
-
733
- public setCurrentScreen(screenName: string) {
533
+ setCurrentScreen(screenName) {
734
534
  this._currentOutput = screenName;
735
535
  if (this.screenTexture[screenName]) {
736
536
  this.outputTexture = this.screenTexture[screenName];
737
537
  }
738
538
  }
739
-
740
- public _resizeStart() {
741
- let c = this.handler.canvas!;
742
-
743
- this.activeCamera!.setAspectRatio(c.width / c.height);
744
- this.sceneFramebuffer!.setSize(c.width * 0.5, c.height * 0.5);
539
+ _resizeStart() {
540
+ let c = this.handler.canvas;
541
+ this.activeCamera.setAspectRatio(c.width / c.height);
542
+ this.sceneFramebuffer.setSize(c.width * 0.5, c.height * 0.5);
745
543
  this.blitFramebuffer && this.blitFramebuffer.setSize(c.width * 0.5, c.height * 0.5, true);
746
544
  }
747
-
748
- public _resizeEnd() {
749
- let c = this.handler.canvas!;
750
-
751
- this.activeCamera!.setAspectRatio(c.width / c.height);
752
- this.sceneFramebuffer!.setSize(c.width, c.height);
545
+ _resizeEnd() {
546
+ let c = this.handler.canvas;
547
+ this.activeCamera.setAspectRatio(c.width / c.height);
548
+ this.sceneFramebuffer.setSize(c.width, c.height);
753
549
  this.blitFramebuffer && this.blitFramebuffer.setSize(c.width, c.height, true);
754
-
755
550
  this.toneMappingFramebuffer && this.toneMappingFramebuffer.setSize(c.width, c.height, true);
756
551
  this.depthFramebuffer && this.depthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
757
552
  this.screenDepthFramebuffer && this.screenDepthFramebuffer.setSize(c.clientWidth, c.clientHeight, true);
758
-
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];
765
- } else {
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];
553
+ if (this.handler.gl.type === "webgl") {
554
+ this.screenTexture.screen = this.sceneFramebuffer.textures[0];
555
+ this.screenTexture.picking = this.pickingFramebuffer.textures[0];
556
+ this.screenTexture.distance = this.distanceFramebuffer.textures[0];
557
+ this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
558
+ this.screenTexture.frustum = this.depthFramebuffer.textures[0];
559
+ }
560
+ else {
561
+ this.screenTexture.screen = this.toneMappingFramebuffer.textures[0];
562
+ this.screenTexture.picking = this.pickingFramebuffer.textures[0];
563
+ this.screenTexture.distance = this.distanceFramebuffer.textures[0];
564
+ this.screenTexture.depth = this.screenDepthFramebuffer.textures[0];
565
+ this.screenTexture.frustum = this.depthFramebuffer.textures[0];
771
566
  }
772
-
773
567
  this.setCurrentScreen(this._currentOutput);
774
568
  }
775
-
776
- public removeNode(renderNode: RenderNode) {
569
+ removeNode(renderNode) {
777
570
  // TODO: replace from RenderNode to this method
778
571
  renderNode.remove();
779
572
  }
780
-
781
573
  /**
782
574
  * Adds render node to the renderer.
783
575
  * @public
784
576
  * @param {RenderNode} renderNode - Render node.
785
577
  */
786
- public addNode(renderNode: RenderNode) {
578
+ addNode(renderNode) {
787
579
  if (!this.renderNodes[renderNode.name]) {
788
580
  renderNode.assign(this);
789
581
  this._renderNodesArr.unshift(renderNode);
790
582
  this.renderNodes[renderNode.name] = renderNode;
791
- } else {
583
+ }
584
+ else {
792
585
  cons.logWrn(`Node name ${renderNode.name} already exists.`);
793
586
  }
794
587
  }
795
-
796
- protected _initializeRenderNodes() {
588
+ _initializeRenderNodes() {
797
589
  for (let i = 0; i < this._renderNodesArr.length; i++) {
798
590
  this._renderNodesArr[i].initialize();
799
591
  }
800
592
  }
801
-
802
593
  /**
803
594
  * Adds render node to the renderer before specific node.
804
595
  * @public
805
596
  * @param {RenderNode} renderNode - Render node.
806
597
  * @param {RenderNode} renderNodeBefore - Insert before the renderNodeBefore node.
807
598
  */
808
- public addNodeBefore(renderNode: RenderNode, renderNodeBefore: RenderNode) {
599
+ addNodeBefore(renderNode, renderNodeBefore) {
809
600
  if (!this.renderNodes[renderNode.name]) {
810
601
  renderNode.assign(this);
811
602
  this.renderNodes[renderNode.name] = renderNode;
@@ -816,50 +607,43 @@ class Renderer {
816
607
  }
817
608
  }
818
609
  this._renderNodesArr.unshift(renderNode);
819
- } else {
610
+ }
611
+ else {
820
612
  cons.logWrn(`Node name ${renderNode.name} already exists.`);
821
613
  }
822
614
  }
823
-
824
615
  /**
825
616
  * Adds render nodes array to the renderer.
826
617
  * @public
827
618
  * @param {Array.<RenderNode>} nodesArr - Render nodes array.
828
619
  */
829
- public addNodes(nodesArr: RenderNode[]) {
620
+ addNodes(nodesArr) {
830
621
  for (let i = 0; i < nodesArr.length; i++) {
831
622
  this.addNode(nodesArr[i]);
832
623
  }
833
624
  }
834
-
835
- public getMaxMSAA(internalFormat: string) {
836
- let gl = this.handler.gl!;
837
- let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, (gl as any)[internalFormat], gl.SAMPLES);
625
+ getMaxMSAA(internalFormat) {
626
+ let gl = this.handler.gl;
627
+ let samples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl[internalFormat], gl.SAMPLES);
838
628
  return samples[0];
839
629
  }
840
-
841
- public getMSAA(): number {
630
+ getMSAA() {
842
631
  return this._msaa;
843
632
  }
844
-
845
633
  /**
846
634
  * TODO: replace with cache friendly linked list by BillboardHandler, LabelHandler etc.
847
635
  */
848
- public enqueueEntityCollectionsToDraw(ecArr: EntityCollection[]) {
636
+ enqueueEntityCollectionsToDraw(ecArr) {
849
637
  this._entityCollections.push.apply(this._entityCollections, ecArr);
850
638
  }
851
-
852
639
  /**
853
640
  * Draws opaque items entity collections.
854
641
  * @protected
855
642
  */
856
- protected _drawOpaqueEntityCollections() {
643
+ _drawOpaqueEntityCollections() {
857
644
  let ec = this._entityCollections;
858
-
859
645
  if (ec.length) {
860
-
861
646
  this.enableBlendDefault();
862
-
863
647
  //geoObject
864
648
  let i = ec.length;
865
649
  while (i--) {
@@ -869,7 +653,6 @@ class Renderer {
869
653
  ec[i].geoObjectHandler.draw();
870
654
  }
871
655
  }
872
-
873
656
  // pointClouds pass
874
657
  i = ec.length;
875
658
  while (i--) {
@@ -877,54 +660,43 @@ class Renderer {
877
660
  }
878
661
  }
879
662
  }
880
-
881
-
882
663
  /**
883
664
  * Draws transparent items entity collections.
884
665
  * @protected
885
666
  */
886
- protected _drawTransparentEntityCollections() {
667
+ _drawTransparentEntityCollections() {
887
668
  let ec = this._entityCollections;
888
-
889
669
  if (ec.length) {
890
- let gl = this.handler.gl!;
891
-
670
+ let gl = this.handler.gl;
892
671
  this.enableBlendDefault();
893
-
894
672
  // billboards pass
895
673
  gl.activeTexture(gl.TEXTURE0);
896
674
  gl.bindTexture(gl.TEXTURE_2D, this.billboardsTextureAtlas.texture);
897
-
898
675
  let i = ec.length;
899
676
  while (i--) {
900
677
  let eci = ec[i];
901
678
  eci._fadingOpacity && eci.billboardHandler.draw();
902
679
  }
903
-
904
680
  // labels pass
905
681
  let fa = this.fontAtlas.atlasesArr;
906
682
  for (i = 0; i < fa.length; i++) {
907
683
  gl.activeTexture(gl.TEXTURE0 + i);
908
684
  gl.bindTexture(gl.TEXTURE_2D, fa[i].texture);
909
685
  }
910
-
911
686
  i = ec.length;
912
687
  while (i--) {
913
688
  ec[i]._fadingOpacity && ec[i].labelHandler.draw();
914
689
  }
915
-
916
690
  // rays
917
691
  i = ec.length;
918
692
  while (i--) {
919
693
  ec[i]._fadingOpacity && ec[i].rayHandler.draw();
920
694
  }
921
-
922
695
  // polyline pass
923
696
  i = ec.length;
924
697
  while (i--) {
925
698
  ec[i]._fadingOpacity && ec[i].polylineHandler.draw();
926
699
  }
927
-
928
700
  // Strip pass
929
701
  i = ec.length;
930
702
  while (i--) {
@@ -932,71 +704,51 @@ class Renderer {
932
704
  }
933
705
  }
934
706
  }
935
-
936
- protected _clearEntityCollectionQueue() {
707
+ _clearEntityCollectionQueue() {
937
708
  this._entityCollections.length = 0;
938
709
  this._entityCollections = [];
939
710
  }
940
-
941
711
  /**
942
712
  * Draw nodes.
943
713
  * @public
944
714
  */
945
- public draw() {
946
- this.activeCamera!.checkMoveEnd();
947
-
715
+ draw() {
716
+ this.activeCamera.checkMoveEnd();
948
717
  let e = this.events;
949
718
  e.handleEvents();
950
-
951
- let sceneFramebuffer = this.sceneFramebuffer!;
719
+ let sceneFramebuffer = this.sceneFramebuffer;
952
720
  sceneFramebuffer.activate();
953
-
954
- let h = this.handler,
955
- gl = h.gl!;
956
-
721
+ let h = this.handler, gl = h.gl;
957
722
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
958
723
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
959
-
960
724
  e.dispatch(e.draw, this);
961
-
962
- let frustums = this.activeCamera!.frustums;
963
-
964
- let pointerEvent = e.pointerEvent() || this.activeCamera!.isMoving;
965
-
725
+ let frustums = this.activeCamera.frustums;
726
+ let pointerEvent = e.pointerEvent() || this.activeCamera.isMoving;
966
727
  // Rendering scene nodes and entityCollections
967
728
  let rn = this._renderNodesArr;
968
729
  let k = frustums.length;
969
-
970
730
  while (k--) {
971
- this.activeCamera!.setCurrentFrustum(k);
731
+ this.activeCamera.setCurrentFrustum(k);
972
732
  gl.clear(gl.DEPTH_BUFFER_BIT);
973
-
974
733
  let i = rn.length;
975
734
  while (i--) {
976
735
  rn[i].preDrawNode();
977
736
  }
978
-
979
737
  this._drawOpaqueEntityCollections();
980
-
981
738
  i = rn.length;
982
739
  while (i--) {
983
740
  this.enableBlendDefault();
984
741
  rn[i].drawNode();
985
742
  }
986
-
987
743
  this._drawTransparentEntityCollections();
988
744
  this._clearEntityCollectionQueue();
989
-
990
745
  if (pointerEvent) {
991
746
  this._drawPickingBuffer();
992
747
  this.__useDistanceFramebuffer__ && this._drawDistanceBuffer();
993
748
  }
994
749
  }
995
-
996
750
  sceneFramebuffer.deactivate();
997
-
998
- this.blitFramebuffer && (sceneFramebuffer as Multisample).blitTo(this.blitFramebuffer, 0);
999
-
751
+ this.blitFramebuffer && sceneFramebuffer.blitTo(this.blitFramebuffer, 0);
1000
752
  if (pointerEvent) {
1001
753
  // It works ONLY for 0 (closest) frustum
1002
754
  if (h.isWebGl2()) {
@@ -1005,46 +757,31 @@ class Renderer {
1005
757
  this._readPickingBuffer();
1006
758
  this.__useDistanceFramebuffer__ && this._readDistanceBuffer();
1007
759
  }
1008
-
1009
760
  // Tone mapping followed by rendering on the screen
1010
- this._fnScreenFrame!();
1011
-
761
+ this._fnScreenFrame();
1012
762
  e.dispatch(e.postdraw, this);
1013
-
1014
763
  e.mouseState.wheelDelta = 0;
1015
764
  e.mouseState.justStopped = false;
1016
765
  e.mouseState.moving = false;
1017
766
  e.touchState.moving = false;
1018
767
  }
1019
-
1020
- protected _screenFrameMSAA() {
768
+ _screenFrameMSAA() {
1021
769
  let h = this.handler;
1022
-
1023
- let sh = h.programs.toneMapping,
1024
- p = sh._program,
1025
- gl = h.gl!;
1026
-
770
+ let sh = h.programs.toneMapping, p = sh._program, gl = h.gl;
1027
771
  gl.disable(gl.DEPTH_TEST);
1028
-
1029
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
772
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1030
773
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
1031
-
1032
- this.toneMappingFramebuffer!.activate();
1033
-
774
+ this.toneMappingFramebuffer.activate();
1034
775
  sh.activate();
1035
-
1036
776
  // screen texture
1037
777
  gl.activeTexture(gl.TEXTURE0);
1038
- gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer!.textures[0]);
778
+ gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer.textures[0]);
1039
779
  gl.uniform1i(p.uniforms.hdrBuffer, 0);
1040
-
1041
780
  gl.uniform1f(p.uniforms.gamma, this.gamma);
1042
781
  gl.uniform1f(p.uniforms.exposure, this.exposure);
1043
782
  gl.uniform1f(p.uniforms.whitepoint, this.whitepoint);
1044
783
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
1045
-
1046
- this.toneMappingFramebuffer!.deactivate();
1047
-
784
+ this.toneMappingFramebuffer.deactivate();
1048
785
  // SCREEN PASS
1049
786
  sh = h.programs.screenFrame;
1050
787
  p = sh._program;
@@ -1053,289 +790,195 @@ class Renderer {
1053
790
  gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
1054
791
  gl.uniform1i(p.uniforms.texture, 0);
1055
792
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
1056
-
1057
793
  gl.enable(gl.DEPTH_TEST);
1058
794
  }
1059
-
1060
- protected _screenFrameNoMSAA() {
1061
-
795
+ _screenFrameNoMSAA() {
1062
796
  let h = this.handler;
1063
- let sh = h.programs.screenFrame,
1064
- p = sh._program,
1065
- gl = h.gl!;
1066
-
797
+ let sh = h.programs.screenFrame, p = sh._program, gl = h.gl;
1067
798
  gl.disable(gl.DEPTH_TEST);
1068
799
  sh.activate();
1069
800
  gl.activeTexture(gl.TEXTURE0);
1070
801
  gl.bindTexture(gl.TEXTURE_2D, this.outputTexture);
1071
802
  gl.uniform1i(p.uniforms.texture, 0);
1072
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
803
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1073
804
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
1074
805
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
1075
806
  gl.enable(gl.DEPTH_TEST);
1076
807
  }
1077
-
1078
808
  /**
1079
809
  * Draw picking objects framebuffer.
1080
810
  * @private
1081
811
  */
1082
- protected _drawPickingBuffer() {
1083
- this.pickingFramebuffer!.activate();
1084
-
812
+ _drawPickingBuffer() {
813
+ this.pickingFramebuffer.activate();
1085
814
  let h = this.handler;
1086
- let gl = h.gl!;
1087
-
1088
- if (this.activeCamera!.isFirstPass) {
815
+ let gl = h.gl;
816
+ if (this.activeCamera.isFirstPass) {
1089
817
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
1090
818
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
1091
- } else {
819
+ }
820
+ else {
1092
821
  gl.clear(gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
1093
822
  }
1094
-
1095
823
  //
1096
824
  // draw picking mask
1097
825
  //
1098
826
  h.programs.pickingMask.activate();
1099
827
  let sh = h.programs.pickingMask._program;
1100
828
  let shu = sh.uniforms, sha = sh.attributes;
1101
-
1102
- let /*ts = this.events.touchState,*/
1103
- ms = this.events.mouseState;
1104
-
829
+ let /*ts = this.events.touchState,*/ ms = this.events.mouseState;
1105
830
  gl.disable(gl.DEPTH_TEST);
1106
-
1107
831
  gl.enable(gl.STENCIL_TEST);
1108
832
  gl.colorMask(false, false, false, false);
1109
833
  gl.stencilFunc(gl.ALWAYS, 2, 0xFF);
1110
834
  gl.stencilOp(gl.REPLACE, gl.ZERO, gl.REPLACE);
1111
-
1112
835
  gl.uniform2f(shu.offset, (ms.nx - 0.5) * 2, (0.5 - ms.ny) * 2);
1113
-
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);
1117
-
836
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._pickingMaskCoordinatesBuffer);
837
+ gl.vertexAttribPointer(sha.coordinates, this._pickingMaskCoordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);
838
+ gl.drawArrays(gl.POINTS, 0, this._pickingMaskCoordinatesBuffer.numItems);
1118
839
  gl.enable(gl.DEPTH_TEST);
1119
-
1120
840
  //
1121
841
  // draw picking scenes
1122
842
  //
1123
843
  gl.colorMask(true, true, true, true);
1124
844
  gl.stencilFunc(gl.EQUAL, 2, 0xFF);
1125
845
  gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
1126
-
1127
846
  gl.disable(gl.BLEND);
1128
-
1129
847
  let dp = this._pickingCallbacks;
1130
848
  for (let i = 0, len = dp.length; i < len; i++) {
1131
849
  /**
1132
850
  * This callback renders picking frame.
1133
- * @callback og.Renderer~pickingCallback
1134
851
  */
1135
852
  dp[i].callback.call(dp[i].sender);
1136
853
  }
1137
-
1138
854
  gl.enable(gl.BLEND);
1139
-
1140
855
  gl.disable(gl.STENCIL_TEST);
1141
-
1142
- this.pickingFramebuffer!.deactivate();
856
+ this.pickingFramebuffer.deactivate();
1143
857
  }
1144
-
1145
858
  /**
1146
859
  * Draw picking objects framebuffer.
1147
- * @private
860
+ * @protected
1148
861
  */
1149
- protected _drawDistanceBuffer() {
1150
- this.distanceFramebuffer!.activate();
1151
-
862
+ _drawDistanceBuffer() {
863
+ this.distanceFramebuffer.activate();
1152
864
  let h = this.handler;
1153
- let gl = h.gl!;
1154
-
1155
- if (this.activeCamera!.isFirstPass) {
865
+ let gl = h.gl;
866
+ if (this.activeCamera.isFirstPass) {
1156
867
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
1157
868
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1158
- } else {
869
+ }
870
+ else {
1159
871
  gl.clear(gl.DEPTH_BUFFER_BIT);
1160
872
  }
1161
-
1162
873
  gl.disable(gl.BLEND);
1163
-
1164
874
  let dp = this._distanceCallbacks;
1165
875
  let i = dp.length;
1166
876
  while (i--) {
1167
877
  /**
1168
878
  * This callback renders distance frame.
1169
- * @callback og.Renderer~distanceCallback
1170
879
  */
1171
880
  dp[i].callback.call(dp[i].sender);
1172
881
  }
1173
-
1174
882
  gl.enable(gl.BLEND);
1175
-
1176
- this.distanceFramebuffer!.deactivate();
883
+ this.distanceFramebuffer.deactivate();
1177
884
  }
1178
-
1179
- protected _drawDepthBuffer() {
1180
- this.depthFramebuffer!.activate();
1181
-
885
+ _drawDepthBuffer() {
886
+ this.depthFramebuffer.activate();
1182
887
  let h = this.handler;
1183
- let gl = h.gl!;
1184
-
888
+ let gl = h.gl;
1185
889
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
1186
890
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1187
-
1188
891
  gl.enable(gl.DEPTH_TEST);
1189
-
1190
892
  let dp = this._depthCallbacks;
1191
893
  let i = dp.length;
1192
894
  while (i--) {
1193
895
  /**
1194
896
  * This callback renders depth frame.
1195
- * @callback og.Renderer~depthCallback
1196
897
  */
1197
898
  dp[i].callback.call(dp[i].sender);
1198
899
  }
1199
-
1200
- this.depthFramebuffer!.deactivate();
1201
-
900
+ this.depthFramebuffer.deactivate();
1202
901
  //
1203
902
  // PASS to depth visualization
1204
- this.screenDepthFramebuffer!.activate();
903
+ this.screenDepthFramebuffer.activate();
1205
904
  let sh = h.programs.depth, p = sh._program;
1206
-
1207
-
1208
- gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer as WebGLBuffer);
905
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.screenFramePositionBuffer);
1209
906
  gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0);
1210
-
1211
907
  sh.activate();
1212
-
1213
908
  gl.activeTexture(gl.TEXTURE0);
1214
- gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer!.textures[1]);
909
+ gl.bindTexture(gl.TEXTURE_2D, this.depthFramebuffer.textures[1]);
1215
910
  gl.uniform1i(p.uniforms.depthTexture, 0);
1216
-
1217
911
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
1218
-
1219
- this.screenDepthFramebuffer!.deactivate();
1220
- }
1221
-
1222
- protected _readPickingBuffer() {
1223
- this.pickingFramebuffer!.activate();
1224
- this.pickingFramebuffer!.readAllPixels(this._tempPickingPix_);
1225
- this.pickingFramebuffer!.deactivate();
1226
- }
1227
-
1228
- protected _readDistanceBuffer() {
1229
- this.distanceFramebuffer!.activate();
1230
- this.distanceFramebuffer!.readAllPixels(this._tempDistancePix_);
1231
- this.distanceFramebuffer!.deactivate();
912
+ this.screenDepthFramebuffer.deactivate();
1232
913
  }
1233
-
1234
- public readPickingColor(x: number, y: number, outColor: NumberArray3 | Uint8Array) {
1235
- let w = this.pickingFramebuffer!.width;
1236
- let h = this.pickingFramebuffer!.height;
1237
-
914
+ readPickingColor(x, y, outColor) {
915
+ let w = this.pickingFramebuffer.width;
916
+ let h = this.pickingFramebuffer.height;
1238
917
  x = Math.round(x * w);
1239
918
  y = Math.round(y * h);
1240
-
1241
919
  let ind = (y * w + x) * 4;
1242
-
1243
920
  outColor[0] = this._tempPickingPix_[ind];
1244
921
  outColor[1] = this._tempPickingPix_[ind + 1];
1245
922
  outColor[2] = this._tempPickingPix_[ind + 2];
1246
923
  }
1247
-
1248
- public readDistanceColor(x: number, y: number, outColor: NumberArray3 | Uint8Array) {
1249
-
1250
- let w = this.distanceFramebuffer!.width;
1251
- let h = this.distanceFramebuffer!.height;
1252
-
924
+ readDistanceColor(x, y, outColor) {
925
+ let w = this.distanceFramebuffer.width;
926
+ let h = this.distanceFramebuffer.height;
1253
927
  x = Math.round(x * w);
1254
928
  y = Math.round(y * h);
1255
-
1256
929
  let ind = (y * w + x) * 4;
1257
-
1258
930
  outColor[0] = this._tempDistancePix_[ind];
1259
931
  outColor[1] = this._tempDistancePix_[ind + 1];
1260
932
  outColor[2] = this._tempDistancePix_[ind + 2];
1261
933
  }
1262
-
1263
934
  /**
1264
935
  * Function starts renderer
1265
936
  * @public
1266
937
  */
1267
- public start() {
938
+ start() {
1268
939
  if (!this._initialized) {
1269
940
  this.initialize();
1270
941
  }
1271
942
  this.handler.start();
1272
943
  }
1273
-
1274
- public destroy() {
944
+ destroy() {
1275
945
  for (let i in this.controls) {
1276
946
  this.controls[i].remove();
1277
947
  }
1278
-
1279
948
  for (let i = 0; i < this._renderNodesArr.length; i++) {
1280
949
  this._renderNodesArr[i].remove();
1281
950
  }
1282
-
1283
951
  this.div = null;
1284
-
1285
952
  this._renderNodesArr = [];
1286
-
1287
953
  this.renderNodes = {};
1288
-
1289
954
  this.activeCamera = null;
1290
-
1291
955
  this.controls = {};
1292
-
1293
956
  this.controlsBag = {};
1294
-
1295
957
  this.colorObjects.clear();
1296
-
1297
958
  // @ts-ignore
1298
959
  this.colorObjects = null;
1299
-
1300
960
  this._pickingCallbacks = [];
1301
-
1302
961
  this.pickingFramebuffer = null;
1303
-
1304
962
  //@ts-ignore
1305
963
  this._tempPickingPix_ = null;
1306
-
1307
964
  this.distanceFramebuffer = null;
1308
-
1309
965
  this._distanceCallbacks = [];
1310
-
1311
966
  //@ts-ignore
1312
967
  this._tempDistancePix_ = null;
1313
-
1314
968
  this._depthCallbacks = [];
1315
-
1316
969
  this.depthFramebuffer = null;
1317
-
1318
970
  this.sceneFramebuffer = null;
1319
-
1320
971
  this.blitFramebuffer = null;
1321
-
1322
972
  this.toneMappingFramebuffer = null;
1323
-
1324
973
  // todo
1325
974
  //this.billboardsTextureAtlas.clear();
1326
975
  //this.geoObjectsTextureAtlas.clear()
1327
976
  //this.fontAtlas.clear();
1328
-
1329
977
  this._entityCollections = [];
1330
-
1331
978
  this.handler.destroy();
1332
-
1333
979
  // @ts-ignore
1334
980
  this.handler = null;
1335
-
1336
981
  this._initialized = false;
1337
982
  }
1338
-
1339
983
  }
1340
-
1341
- export {Renderer};
984
+ export { Renderer };