@openglobus/og 0.17.2 → 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} +246 -182
  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 -256
  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} +776 -592
  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 -172
  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 -195
  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 -1170
  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 -17
  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 -241
  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 -594
  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
@@ -0,0 +1,368 @@
1
+ import {Control, IControlParams} from "./Control";
2
+ import {Key} from "../Lock";
3
+ import {LonLat} from "../LonLat";
4
+ import {math} from "../index";
5
+ import {Quat} from "../math/Quat";
6
+ import {Ray} from "../math/Ray";
7
+ import {Sphere} from "../bv/Sphere";
8
+ import {Vec2} from "../math/Vec2";
9
+ import {Vec3} from "../math/Vec3";
10
+ import {ITouchState} from "../renderer/RendererEvents";
11
+
12
+ interface ITouchNavigationParams extends IControlParams {
13
+
14
+ }
15
+
16
+ interface Touch {
17
+ clientX: number;
18
+ clientY: number;
19
+ }
20
+
21
+ class TouchExt {
22
+ public x: number;
23
+ public y: number;
24
+ public prev_x: number;
25
+ public prev_y: number;
26
+ public grabbedPoint: Vec3 | null;
27
+ public grabbedSpheroid: Sphere;
28
+
29
+ protected _vec: Vec2;
30
+ protected _vecPrev: Vec2;
31
+
32
+
33
+ constructor() {
34
+ this.x = 0;
35
+ this.y = 0;
36
+ this.prev_x = 0;
37
+ this.prev_y = 0;
38
+ this.grabbedPoint = null;
39
+ this.grabbedSpheroid = new Sphere();
40
+ this._vec = new Vec2();
41
+ this._vecPrev = new Vec2();
42
+ }
43
+
44
+ public get dY(): number {
45
+ return this.y - this.prev_y;
46
+ }
47
+
48
+ public get dX(): number {
49
+ return this.x - this.prev_x;
50
+ }
51
+
52
+ public get vec(): Vec2 {
53
+ return this._vec.set(this.x, this.y);
54
+ }
55
+
56
+ public get vecPrev(): Vec2 {
57
+ return this._vecPrev.set(this.prev_x, this.prev_y);
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Touch pad planet camera dragging control.
63
+ */
64
+ export class TouchNavigation extends Control {
65
+
66
+ public grabbedPoint: Vec3;
67
+ public inertia: number;
68
+
69
+ protected grabbedSpheroid: Sphere;
70
+ protected qRot: Quat;
71
+ protected scaleRot: number;
72
+ protected rot: number;
73
+ protected _eye0: Vec3;
74
+ protected pointOnEarth: Vec3 | null;
75
+ protected earthUp: Vec3 | null;
76
+ protected touches: TouchExt[];
77
+ protected _keyLock: Key;
78
+ protected _touching: boolean;
79
+
80
+
81
+ constructor(options: ITouchNavigationParams = {}) {
82
+ super(options);
83
+
84
+ this._name = "touchNavigation";
85
+
86
+ this.grabbedPoint = new Vec3();
87
+ this.inertia = 0.007;
88
+ this.grabbedSpheroid = new Sphere();
89
+ this.planet = null;
90
+ this.qRot = new Quat();
91
+ this.scaleRot = 0;
92
+ this.rot = 1;
93
+ this._eye0 = new Vec3();
94
+
95
+ this.pointOnEarth = null;
96
+ this.earthUp = null;
97
+
98
+ this.touches = [new TouchExt(), new TouchExt()];
99
+
100
+ this._keyLock = new Key();
101
+
102
+ this._touching = false;
103
+ }
104
+
105
+ override oninit() {
106
+ if (this.renderer) {
107
+ this.renderer.events.on("touchstart", this.onTouchStart, this);
108
+ this.renderer.events.on("touchend", this.onTouchEnd, this);
109
+ this.renderer.events.on("doubletouch", this.onDoubleTouch, this);
110
+ this.renderer.events.on("touchcancel", this.onTouchCancel, this);
111
+ this.renderer.events.on("touchmove", this.onTouchMove, this);
112
+ this.renderer.events.on("draw", this.onDraw, this);
113
+ }
114
+ }
115
+
116
+ protected onTouchStart(e: ITouchState) {
117
+ const handler = this.renderer!.handler;
118
+ this._touching = true;
119
+
120
+ if (e.sys!.touches.length === 2) {
121
+ const t0 = this.touches[0];
122
+ const t1 = this.touches[1];
123
+
124
+ t0.x = (e.sys!.touches.item(0)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
125
+ t0.y = (e.sys!.touches.item(0)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
126
+ t0.prev_x = t0.x;
127
+ t0.prev_y = t0.y;
128
+
129
+ t0.grabbedPoint = this.planet!.getCartesianFromPixelTerrain(new Vec2(t0.x, t0.y)) || null;
130
+
131
+ t1.x = (e.sys!.touches.item(1)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
132
+ t1.y = (e.sys!.touches.item(1)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
133
+ t1.prev_x = t1.x;
134
+ t1.prev_y = t1.y;
135
+
136
+ t1.grabbedPoint = this.planet!.getCartesianFromPixelTerrain(new Vec2(t1.x, t1.y)) || null;
137
+
138
+ this.pointOnEarth = this.planet!.getCartesianFromPixelTerrain(
139
+ this.renderer!.handler.getCenter()
140
+ ) || null;
141
+
142
+ if (this.pointOnEarth) {
143
+ this.earthUp = this.pointOnEarth.normal();
144
+ }
145
+
146
+ if (t0.grabbedPoint && t1.grabbedPoint) {
147
+ t0.grabbedSpheroid.radius = t0.grabbedPoint.length();
148
+ t1.grabbedSpheroid.radius = t1.grabbedPoint.length();
149
+ this.stopRotation();
150
+ }
151
+ } else if (e.sys!.touches.length === 1) {
152
+ this._startTouchOne(e);
153
+ }
154
+ }
155
+
156
+ protected _startTouchOne(e: ITouchState) {
157
+ const t = this.touches[0];
158
+ const handler = this.renderer!.handler;
159
+
160
+ t.x = (e.sys!.touches.item(0)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
161
+ t.y = (e.sys!.touches.item(0)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
162
+ t.prev_x = t.x;
163
+ t.prev_y = t.y;
164
+
165
+ // t.grabbedPoint = this.planet!.getCartesianFromPixelTerrain(e, true);
166
+ t.grabbedPoint = this.planet!.getCartesianFromPixelTerrain(e) || null;
167
+ this._eye0.copy(this.planet!.camera.eye);
168
+
169
+ if (t.grabbedPoint) {
170
+ t.grabbedSpheroid.radius = t.grabbedPoint.length();
171
+ this.stopRotation();
172
+ }
173
+ }
174
+
175
+ public stopRotation() {
176
+ this.qRot.clear();
177
+ this.planet!.layerLock.free(this._keyLock);
178
+ this.planet!.terrainLock.free(this._keyLock);
179
+ this.planet!._normalMapCreator.free(this._keyLock);
180
+ }
181
+
182
+ protected onDoubleTouch(e: ITouchState) {
183
+
184
+ this.planet!.stopFlying();
185
+ this.stopRotation();
186
+
187
+ const p = this.planet!.getCartesianFromPixelTerrain(e);
188
+ if (p) {
189
+ const g = this.planet!.ellipsoid.cartesianToLonLat(p);
190
+ this.planet!.flyLonLat(
191
+ new LonLat(g.lon, g.lat, this.planet!.camera.eye.distance(p) * 0.57)
192
+ );
193
+ }
194
+ }
195
+
196
+ protected onTouchEnd(e: ITouchState) {
197
+ if (e.sys!.touches.length === 0) {
198
+ this._touching = false;
199
+ }
200
+
201
+ if (e.sys!.touches.length === 1) {
202
+ this._startTouchOne(e);
203
+ }
204
+
205
+ if (
206
+ Math.abs(this.touches[0].x - this.touches[0].prev_x) < 3 &&
207
+ Math.abs(this.touches[0].y - this.touches[0].prev_y) < 3
208
+ ) {
209
+ this.scaleRot = 0;
210
+ }
211
+ }
212
+
213
+ protected onTouchCancel(e: ITouchState) {
214
+ }
215
+
216
+ protected onTouchMove(e: ITouchState) {
217
+ let cam = this.planet!.camera;
218
+ const handler = this.renderer!.handler;
219
+ if (e.sys!.touches.length === 2) {
220
+ this.renderer!.controlsBag.scaleRot = 1;
221
+
222
+ let t0 = this.touches[0],
223
+ t1 = this.touches[1];
224
+
225
+ if (!t0.grabbedPoint || !t1.grabbedPoint) {
226
+ return;
227
+ }
228
+
229
+ this.planet!.stopFlying();
230
+
231
+ t0.prev_x = t0.x;
232
+ t0.prev_y = t0.y;
233
+ t0.x = (e.sys!.touches.item(0)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
234
+ t0.y = (e.sys!.touches.item(0)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
235
+
236
+ t1.prev_x = t1.x;
237
+ t1.prev_y = t1.y;
238
+ t1.x = (e.sys!.touches.item(1)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
239
+ t1.y = (e.sys!.touches.item(1)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
240
+
241
+ const middle = t0.vec.add(t1.vec).scale(0.5);
242
+ const earthMiddlePoint = this.planet!.getCartesianFromPixelTerrain(
243
+ middle
244
+ );
245
+ if (earthMiddlePoint) {
246
+ this.pointOnEarth = earthMiddlePoint
247
+
248
+ const prevAngle = Math.atan2(t0.prev_y - t1.prev_y, t0.prev_x - t1.prev_x)
249
+ const curAngle = Math.atan2(t0.y - t1.y, t0.x - t1.x)
250
+
251
+ const deltaAngle = curAngle - prevAngle;
252
+ const distanceToPointOnEarth = cam.eye.distance(this.pointOnEarth);
253
+
254
+ const zoomCur = t0.vec.sub(t1.vec);
255
+ const zoomPrev = t0.vecPrev.sub(t1.vecPrev);
256
+ const scale = zoomCur.length() / zoomPrev.length();
257
+
258
+ let d = distanceToPointOnEarth * -(1 - scale);
259
+ cam.eye.addA(cam.getForward().scale(d));
260
+ cam.rotateAround(-deltaAngle, false, this.pointOnEarth, this.earthUp);
261
+
262
+ const panCur = t0.vec.add(t1.vec).scale(0.5);
263
+ const panPrev = t0.vecPrev.add(t1.vecPrev).scale(0.5);
264
+ const panOffset = panCur.sub(panPrev).scale(-1);
265
+ var l = 0.5 / distanceToPointOnEarth * cam._lonLat.height * math.RADIANS;
266
+ if (l > 0.003) l = 0.003;
267
+ cam.rotateHorizontal(l * -panOffset.x, false, this.pointOnEarth, this.earthUp);
268
+ cam.rotateVertical(l * -panOffset.y, this.pointOnEarth);
269
+
270
+ cam.checkTerrainCollision();
271
+ cam.update();
272
+ }
273
+ this.scaleRot = 0;
274
+ } else if (e.sys!.touches.length === 1) {
275
+ let t = this.touches[0];
276
+
277
+ t.prev_x = t.x;
278
+ t.prev_y = t.y;
279
+ t.x = (e.sys!.touches.item(0)!.clientX - e.sys!.offsetLeft) * handler.pixelRatio;
280
+ t.y = (e.sys!.touches.item(0)!.clientY - e.sys!.offsetTop) * handler.pixelRatio;
281
+
282
+ if (!t.grabbedPoint) {
283
+ return;
284
+ }
285
+
286
+ this.planet!.stopFlying();
287
+
288
+ let direction = e.direction
289
+ let targetPoint = new Ray(cam.eye, direction).hitSphere(t.grabbedSpheroid);
290
+
291
+ if (targetPoint) {
292
+ if (cam.slope > 0.2) {
293
+ this.qRot = Quat.getRotationBetweenVectors(
294
+ targetPoint.normal(),
295
+ t.grabbedPoint.normal()
296
+ );
297
+ let rot = this.qRot;
298
+ cam.eye = rot.mulVec3(cam.eye);
299
+ cam._r = rot.mulVec3(cam._r);
300
+ cam._u = rot.mulVec3(cam._u);
301
+ cam._b = rot.mulVec3(cam._b);
302
+ cam.checkTerrainCollision();
303
+ cam.update();
304
+ this.scaleRot = 1;
305
+ } else {
306
+ let p0 = t.grabbedPoint,
307
+ p1 = Vec3.add(p0, cam._u),
308
+ p2 = Vec3.add(p0, p0.normal());
309
+ let dir = cam.unproject(t.x, t.y);
310
+ let px = new Vec3();
311
+ if (new Ray(cam.eye, dir).hitPlane(p0, p1, p2, px) === Ray.INSIDE) {
312
+ cam.eye = this._eye0.addA(px.subA(p0).negate());
313
+ cam.checkTerrainCollision();
314
+ cam.update();
315
+ this.scaleRot = 0;
316
+ }
317
+ }
318
+ }
319
+ }
320
+ }
321
+
322
+ protected onDraw() {
323
+
324
+ const r = this.renderer!;
325
+
326
+ r.controlsBag.scaleRot = this.scaleRot;
327
+
328
+ if (this._touching) {
329
+ return;
330
+ }
331
+
332
+ let cam = this.planet!.camera;
333
+ let prevEye = cam.eye.clone();
334
+
335
+ if (r.events.mouseState.leftButtonDown || !this.scaleRot) {
336
+ return;
337
+ }
338
+
339
+ this.scaleRot -= this.inertia;
340
+ if (this.scaleRot <= 0) {
341
+ this.scaleRot = 0;
342
+ } else {
343
+ r.controlsBag.scaleRot = this.scaleRot;
344
+ let rot = this.qRot
345
+ .slerp(Quat.IDENTITY, 1 - this.scaleRot * this.scaleRot * this.scaleRot)
346
+ .normalize();
347
+ if (!(rot.x || rot.y || rot.z)) {
348
+ this.scaleRot = 0;
349
+ }
350
+ cam.eye = rot.mulVec3(cam.eye);
351
+ cam._r = rot.mulVec3(cam._r);
352
+ cam._u = rot.mulVec3(cam._u);
353
+ cam._b = rot.mulVec3(cam._b);
354
+ cam.checkTerrainCollision();
355
+ cam.update();
356
+ }
357
+
358
+ if (cam.eye.distance(prevEye) / cam.getAltitude() > 0.01) {
359
+ this.planet!.layerLock.lock(this._keyLock);
360
+ this.planet!.terrainLock.lock(this._keyLock);
361
+ this.planet!._normalMapCreator.lock(this._keyLock);
362
+ } else {
363
+ this.planet!.layerLock.free(this._keyLock);
364
+ this.planet!.terrainLock.free(this._keyLock);
365
+ this.planet!._normalMapCreator.free(this._keyLock);
366
+ }
367
+ }
368
+ }
@@ -0,0 +1,111 @@
1
+ import {Key} from "../Lock";
2
+ import {Button} from "../ui/Button";
3
+ import {Control, IControlParams} from "./Control";
4
+ import {Renderer} from "../renderer/Renderer";
5
+ import {Vec2} from "../math/Vec2";
6
+
7
+ const ICON_PLUS_SVG = '<?xml version="1.0"?>' +
8
+ '<svg width=24 height=24 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">' +
9
+ ' <path d="M 11 5 L 11 11 L 5 11 L 5 13 L 11 13 L 11 19 L 13 19 L 13 13 L 19 13 L 19 11 L 13 11 L 13 5 L 11 5 z"/>' +
10
+ '</svg>';
11
+
12
+ const ICON_MINUS_SVG = '<?xml version="1.0"?>' +
13
+ '<svg width=24 height=24 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">' +
14
+ ' <path d="M 5 11 L 5 13 L 19 13 L 19 11 L 5 11 z"/>' +
15
+ '</svg>';
16
+
17
+ /**
18
+ * Planet zoom buttons control.
19
+ */
20
+ class ZoomControl extends Control {
21
+ protected _keyLock: Key;
22
+ protected _move: number;
23
+ protected _targetPoint: Vec2 | null;
24
+
25
+ constructor(options: IControlParams = {}) {
26
+ super(options);
27
+ this._keyLock = new Key();
28
+ this._move = 0;
29
+ this._targetPoint = null;
30
+ }
31
+
32
+ public override oninit() {
33
+
34
+ let zoomInBtn = new Button({
35
+ classList: ["og-map-button", "og-zoomin-button"],
36
+ icon: ICON_PLUS_SVG
37
+ });
38
+ zoomInBtn.appendTo(this.renderer!.div!);
39
+
40
+
41
+ let zoomOutBtn = new Button({
42
+ classList: ["og-map-button", "og-zoomout-button"],
43
+ icon: ICON_MINUS_SVG
44
+ });
45
+ zoomOutBtn.appendTo(this.renderer!.div!);
46
+
47
+ zoomInBtn.events.on("mousedown", () => this.zoomIn());
48
+ zoomInBtn.events.on("mouseup", () => this.stopZoom());
49
+ zoomOutBtn.events.on("mousedown", () => this.zoomOut());
50
+ zoomOutBtn.events.on("mouseup", () => this.stopZoom());
51
+ zoomInBtn.events.on("touchstart", () => this.zoomIn());
52
+ zoomInBtn.events.on("touchend", () => this.stopZoom());
53
+ zoomInBtn.events.on("touchcancel", () => this.stopZoom());
54
+ zoomOutBtn.events.on("touchstart", () => this.zoomOut());
55
+ zoomOutBtn.events.on("touchend", () => this.stopZoom());
56
+ zoomOutBtn.events.on("touchcancel", () => this.stopZoom());
57
+
58
+ this.renderer!.events.on("draw", this._draw, this);
59
+ }
60
+
61
+ /**
62
+ * Planet zoom in.
63
+ * @public
64
+ */
65
+ public zoomIn() {
66
+ this.planet!.layerLock.lock(this._keyLock);
67
+ this.planet!.terrainLock.lock(this._keyLock);
68
+ this.planet!._normalMapCreator.lock(this._keyLock);
69
+
70
+ this._targetPoint = this.renderer!.getCenter();
71
+
72
+ this._move = 1;
73
+ }
74
+
75
+ /**
76
+ * Planet zoom out.
77
+ * @public
78
+ */
79
+ zoomOut() {
80
+ this.planet!.layerLock.lock(this._keyLock);
81
+ this.planet!.terrainLock.lock(this._keyLock);
82
+ this.planet!._normalMapCreator.lock(this._keyLock);
83
+
84
+ this._targetPoint = this.renderer!.getCenter();
85
+ this._move = -1;
86
+ }
87
+
88
+ public stopZoom() {
89
+ this._move = 0;
90
+
91
+ this.planet!.layerLock.free(this._keyLock);
92
+ this.planet!.terrainLock.free(this._keyLock);
93
+ this.planet!._normalMapCreator.free(this._keyLock);
94
+ }
95
+
96
+ protected _draw(e: Renderer) {
97
+ const cam = this.planet!.camera;
98
+
99
+ if (this._move !== 0) {
100
+ const pos = this.planet!.getCartesianFromPixelTerrain(e.getCenter());
101
+ if (pos) {
102
+ let d = cam.eye.distance(pos) * 0.035;
103
+ cam.eye.addA(cam.getForward().scale(this._move * d));
104
+ cam.checkTerrainCollision();
105
+ cam.update();
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ export {ZoomControl};
@@ -0,0 +1,45 @@
1
+ import {Control, IControlParams} from "../Control";
2
+ import {LineStringDrawingScene} from "./LineStringDrawingScene";
3
+ import {PolygonDrawingScene} from "./PolygonDrawingScene";
4
+
5
+ class DrawingControl extends Control {
6
+ protected _drawingScene: PolygonDrawingScene;
7
+
8
+ constructor(options: IControlParams = {}) {
9
+ super(options);
10
+
11
+ this._drawingScene = new LineStringDrawingScene({
12
+ name: `drawingScene:${this.__id}`
13
+ });
14
+ }
15
+
16
+ public activatePolygonDrawing() {
17
+ this.deactivate();
18
+ this._drawingScene = new PolygonDrawingScene({
19
+ name: `polygonDrawingScene:${this.__id}`
20
+ });
21
+ this.activate();
22
+ }
23
+
24
+ public activateLineStringDrawing() {
25
+ this.deactivate();
26
+ this._drawingScene = new LineStringDrawingScene({
27
+ name: `linestringDrawingScene:${this.__id}`
28
+ });
29
+ this.activate();
30
+ }
31
+
32
+ public override oninit() {
33
+ }
34
+
35
+ public override onactivate() {
36
+ this.planet && this._drawingScene.bindPlanet(this.planet);
37
+ this.renderer && this.renderer.addNode(this._drawingScene);
38
+ }
39
+
40
+ public override ondeactivate() {
41
+ this.renderer && this.renderer.removeNode(this._drawingScene);
42
+ }
43
+ }
44
+
45
+ export {DrawingControl};
@@ -1,30 +1,30 @@
1
+ import {Entity} from "../../entity/Entity";
2
+ import {Vec2} from "../../math/Vec2";
3
+ import {Vec3} from "../../math/Vec3";
1
4
  import {
2
- OUTLINE_ALT,
5
+ CENTER_OPTIONS,
3
6
  CORNER_OPTIONS,
4
7
  NUM_SEGMENTS,
8
+ OUTLINE_ALT,
5
9
  OUTLINE_OPTIONS,
6
- CENTER_OPTIONS,
7
- PolygonDrawingScene
8
- } from "./PolygonDrawingScene.js";
9
- import { Entity } from "../../entity/Entity.js";
10
- import { Line3, Vec2, Vec3 } from "../../math/index.js";
11
- import * as math from "../../math.js";
12
- import { GeometryType } from "../../entity/Geometry.js";
10
+ PolygonDrawingScene,
11
+ IPolygonDrawingSceneParams
12
+ } from "./PolygonDrawingScene";
13
13
 
14
14
  class LineStringDrawingScene extends PolygonDrawingScene {
15
- constructor(props) {
15
+ constructor(props: IPolygonDrawingSceneParams) {
16
16
  super(props);
17
17
  }
18
18
 
19
- get geometryType() {
19
+ public override get geometryType(): string {
20
20
  return "LineString";
21
21
  }
22
22
 
23
- _addNew(cart) {
23
+ protected override _addNew(cart: Vec3) {
24
24
  this._appendCart(cart);
25
25
  }
26
26
 
27
- _appendCart(cart) {
27
+ protected override _appendCart(cart: Vec3) {
28
28
  let corners = this._cornerLayer.getEntities();
29
29
 
30
30
  let segNum = corners.length - 1;
@@ -59,13 +59,10 @@ class LineStringDrawingScene extends PolygonDrawingScene {
59
59
  polyline: {
60
60
  path3v: [prevPath],
61
61
  isClosed: false,
62
- properties: {
63
- index: segNum + 1
64
- },
65
62
  ...OUTLINE_OPTIONS
66
63
  }
67
64
  });
68
- entity.polyline.altitude = OUTLINE_ALT;
65
+ entity.polyline!.altitude = OUTLINE_ALT;
69
66
  this._outlineLayer.add(entity);
70
67
 
71
68
  let prevCenterCart = vecPrev.scaleTo(distPrev * 0.5).addA(prevCart);
@@ -80,18 +77,18 @@ class LineStringDrawingScene extends PolygonDrawingScene {
80
77
  }
81
78
  }
82
79
 
83
- _clearGhostPointer() {
84
- this._ghostOutlineLayer.getEntities()[0].polyline.clear();
80
+ protected override _clearGhostPointer() {
81
+ this._ghostOutlineLayer.getEntities()[0].polyline!.clear();
85
82
  }
86
83
 
87
- _moveCorner(indexCurrent, indexPrev, indexCenter) {
84
+ protected _moveCorner(indexCurrent: number, indexPrev: number, indexCenter: number) {
88
85
  let corners = this._cornerLayer.getEntities();
89
86
  if (corners.length == 0) return;
90
87
  if (corners.length == 1) {
91
88
  indexCurrent = indexPrev = indexCenter = 0;
92
89
  }
93
90
  let cartCurr = corners[indexCurrent].getCartesian();
94
- let vecCurr = this._pickedCorner.getCartesian().sub(cartCurr);
91
+ let vecCurr = this._pickedCorner!.getCartesian().sub(cartCurr);
95
92
  let distCurr = vecCurr.length();
96
93
  vecCurr.normalize();
97
94
 
@@ -105,7 +102,7 @@ class LineStringDrawingScene extends PolygonDrawingScene {
105
102
 
106
103
  let prevPolyline = entities[indexPrev].polyline;
107
104
 
108
- prevPolyline.setPath3v([path]);
105
+ prevPolyline?.setPath3v([path]);
109
106
 
110
107
  //
111
108
  // Move center points
@@ -119,21 +116,20 @@ class LineStringDrawingScene extends PolygonDrawingScene {
119
116
  }
120
117
  }
121
118
 
122
- _moveCornerPoint(e) {
119
+ protected override _moveCornerPoint(e: Vec2) {
123
120
  let d = new Vec2(e.x, e.y).sub(this._startClick),
124
- p = this._startPos.add(d);
121
+ p = this._startPos!.add(d);
125
122
 
126
- let groundCoords = this._planet.getCartesianFromPixelTerrain(p);
123
+ let groundCoords = this._planet!.getCartesianFromPixelTerrain(p);
127
124
 
128
125
  if (groundCoords) {
129
126
 
130
- this._pickedCorner.setCartesian3v(groundCoords);
127
+ this._pickedCorner!.setCartesian3v(groundCoords);
131
128
 
132
129
  let corners = this._cornerLayer.getEntities();
133
130
 
134
131
  if (corners.length) {
135
- let ind = this._pickedCorner.layerIndex;
136
- let size = corners.length;
132
+ let ind = this._pickedCorner!.layerIndex;
137
133
 
138
134
  if (ind === 0) {
139
135
  this._moveCorner(ind + 1, ind + 1, ind);
@@ -147,7 +143,7 @@ class LineStringDrawingScene extends PolygonDrawingScene {
147
143
  }
148
144
  }
149
145
 
150
- _updateGhostOutlinePointer(groundPos) {
146
+ public override _updateGhostOutlinePointer(groundPos: Vec3) {
151
147
 
152
148
  let corners = this._cornerLayer.getEntities();
153
149
  let size = corners.length;
@@ -175,29 +171,26 @@ class LineStringDrawingScene extends PolygonDrawingScene {
175
171
 
176
172
  let entities = this._ghostOutlineLayer.getEntities();
177
173
 
178
- let prevPolyline = entities[0].polyline;
174
+ let prevPolyline = entities[0].polyline!;
179
175
 
180
176
  prevPolyline.setPath3v([pathPrev]);
181
177
  }
182
178
  }
183
179
 
184
- _initGhostLayerPointer() {
180
+ protected override _initGhostLayerPointer() {
185
181
  this._ghostOutlineLayer.setEntities([
186
182
  new Entity({
187
183
  polyline: {
188
184
  path3v: [],
189
185
  isClosed: false,
190
186
  ...OUTLINE_OPTIONS
191
- },
192
- properties: {
193
- index: 0
194
187
  }
195
188
  }),
196
189
  this._ghostCorner
197
190
  ]);
198
191
 
199
- this._ghostOutlineLayer.getEntities()[0].polyline.altitude = OUTLINE_ALT;
192
+ this._ghostOutlineLayer.getEntities()[0].polyline!.altitude = OUTLINE_ALT;
200
193
  }
201
194
  }
202
195
 
203
- export { LineStringDrawingScene };
196
+ export {LineStringDrawingScene};