@openglobus/og 0.19.4 → 0.20.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 (308) hide show
  1. package/README.md +3 -3
  2. package/css/og.css +18 -4
  3. package/lib/@openglobus/js/Clock.d.ts +106 -0
  4. package/lib/@openglobus/js/Deferred.d.ts +6 -0
  5. package/lib/@openglobus/js/Events.d.ts +90 -0
  6. package/lib/@openglobus/js/Extent.d.ts +145 -0
  7. package/lib/@openglobus/js/Globe.d.ts +134 -0
  8. package/lib/@openglobus/js/ImageCanvas.d.ts +128 -0
  9. package/lib/@openglobus/js/Lock.d.ts +15 -0
  10. package/lib/@openglobus/js/LonLat.d.ts +128 -0
  11. package/lib/@openglobus/js/Object3d.d.ts +64 -0
  12. package/lib/@openglobus/js/Popup.d.ts +46 -0
  13. package/lib/@openglobus/js/QueueArray.d.ts +16 -0
  14. package/lib/@openglobus/js/Rectangle.d.ts +76 -0
  15. package/lib/@openglobus/js/Stack.d.ts +20 -0
  16. package/lib/@openglobus/js/astro/astro.d.ts +39 -0
  17. package/lib/@openglobus/js/astro/earth.d.ts +8 -0
  18. package/lib/@openglobus/js/astro/jd.d.ts +234 -0
  19. package/lib/@openglobus/js/astro/orbit.d.ts +5 -0
  20. package/lib/@openglobus/js/astro/rotation.d.ts +2 -0
  21. package/lib/@openglobus/js/bv/Box.d.ts +32 -0
  22. package/lib/@openglobus/js/bv/Sphere.d.ts +37 -0
  23. package/lib/@openglobus/js/bv/index.d.ts +3 -0
  24. package/lib/@openglobus/js/camera/Camera.d.ts +314 -0
  25. package/lib/@openglobus/js/camera/Frustum.d.ts +139 -0
  26. package/lib/@openglobus/js/camera/PlanetCamera.d.ts +234 -0
  27. package/lib/@openglobus/js/camera/index.d.ts +3 -0
  28. package/lib/@openglobus/js/cons.d.ts +40 -0
  29. package/lib/@openglobus/js/control/Atmosphere.d.ts +16 -0
  30. package/lib/@openglobus/js/control/CompassButton.d.ts +16 -0
  31. package/lib/@openglobus/js/control/Control.d.ts +100 -0
  32. package/lib/@openglobus/js/control/DebugInfo.d.ts +25 -0
  33. package/lib/@openglobus/js/control/DrawingSwitcher.d.ts +13 -0
  34. package/lib/@openglobus/js/control/EarthCoordinates.d.ts +41 -0
  35. package/lib/@openglobus/js/control/EarthNavigation.d.ts +50 -0
  36. package/lib/@openglobus/js/control/GeoImageDragControl.d.ts +22 -0
  37. package/lib/@openglobus/js/control/KeyboardNavigation.d.ts +28 -0
  38. package/lib/@openglobus/js/control/LayerAnimation.d.ts +71 -0
  39. package/lib/@openglobus/js/control/LayerSwitcher.d.ts +36 -0
  40. package/lib/@openglobus/js/control/Lighting.d.ts +53 -0
  41. package/lib/@openglobus/js/control/MouseNavigation.d.ts +64 -0
  42. package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +44 -0
  43. package/lib/@openglobus/js/control/RulerSwitcher.d.ts +17 -0
  44. package/lib/@openglobus/js/control/ScaleControl.d.ts +24 -0
  45. package/lib/@openglobus/js/control/SegmentBoundVisualization.d.ts +12 -0
  46. package/lib/@openglobus/js/control/ShowFps.d.ts +9 -0
  47. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +25 -0
  48. package/lib/@openglobus/js/control/SimpleSkyBackground.d.ts +17 -0
  49. package/lib/@openglobus/js/control/Sun.d.ts +33 -0
  50. package/lib/@openglobus/js/control/ToggleWireframe.d.ts +14 -0
  51. package/lib/@openglobus/js/control/TouchNavigation.d.ts +52 -0
  52. package/lib/@openglobus/js/control/ZoomControl.d.ts +27 -0
  53. package/lib/@openglobus/js/control/drawing/DrawingControl.d.ts +12 -0
  54. package/lib/@openglobus/js/control/drawing/LineStringDrawingScene.d.ts +15 -0
  55. package/lib/@openglobus/js/control/drawing/PolygonDrawingScene.d.ts +98 -0
  56. package/lib/@openglobus/js/control/elevationProfile/ElevationProfile.d.ts +77 -0
  57. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileButtonsView.d.ts +14 -0
  58. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileControl.d.ts +33 -0
  59. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileLegend.d.ts +20 -0
  60. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileScene.d.ts +80 -0
  61. package/lib/@openglobus/js/control/elevationProfile/ElevationProfileView.d.ts +63 -0
  62. package/lib/@openglobus/js/control/elevationProfile/PointListDialog.d.ts +12 -0
  63. package/lib/@openglobus/js/control/heightRuler/HeightRuler.d.ts +7 -0
  64. package/lib/@openglobus/js/control/heightRuler/HeightRulerScene.d.ts +35 -0
  65. package/lib/@openglobus/js/control/heightRuler/HeightRulerSwitcher.d.ts +6 -0
  66. package/lib/@openglobus/js/control/index.d.ts +29 -0
  67. package/lib/@openglobus/js/control/ruler/Ruler.d.ts +13 -0
  68. package/lib/@openglobus/js/control/ruler/RulerScene.d.ts +88 -0
  69. package/lib/@openglobus/js/control/selection/Selection.d.ts +55 -0
  70. package/lib/@openglobus/js/control/selection/SelectionScene.d.ts +44 -0
  71. package/lib/@openglobus/js/control/timeline/TimelineControl.d.ts +18 -0
  72. package/lib/@openglobus/js/control/timeline/TimelineModel.d.ts +41 -0
  73. package/lib/@openglobus/js/control/timeline/TimelineView.d.ts +85 -0
  74. package/lib/@openglobus/js/control/timeline/timelineUtils.d.ts +12 -0
  75. package/lib/@openglobus/js/control/visibleExtent/drawnode.d.ts +7 -0
  76. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +193 -0
  77. package/lib/@openglobus/js/ellipsoid/index.d.ts +3 -0
  78. package/lib/@openglobus/js/ellipsoid/wgs84.d.ts +6 -0
  79. package/lib/@openglobus/js/entity/BaseBillboard.d.ts +222 -0
  80. package/lib/@openglobus/js/entity/BaseBillboardHandler.d.ts +81 -0
  81. package/lib/@openglobus/js/entity/Billboard.d.ts +113 -0
  82. package/lib/@openglobus/js/entity/BillboardHandler.d.ts +15 -0
  83. package/lib/@openglobus/js/entity/Entity.d.ts +354 -0
  84. package/lib/@openglobus/js/entity/EntityCollection.d.ts +363 -0
  85. package/lib/@openglobus/js/entity/GeoObject.d.ts +152 -0
  86. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +104 -0
  87. package/lib/@openglobus/js/entity/Geometry.d.ts +124 -0
  88. package/lib/@openglobus/js/entity/GeometryHandler.d.ts +84 -0
  89. package/lib/@openglobus/js/entity/Label.d.ts +214 -0
  90. package/lib/@openglobus/js/entity/LabelHandler.d.ts +65 -0
  91. package/lib/@openglobus/js/entity/LabelWorker.d.ts +15 -0
  92. package/lib/@openglobus/js/entity/PointCloud.d.ts +179 -0
  93. package/lib/@openglobus/js/entity/PointCloudHandler.d.ts +42 -0
  94. package/lib/@openglobus/js/entity/Polyline.d.ts +345 -0
  95. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +22 -0
  96. package/lib/@openglobus/js/entity/Ray.d.ts +133 -0
  97. package/lib/@openglobus/js/entity/RayHandler.d.ts +70 -0
  98. package/lib/@openglobus/js/entity/Strip.d.ts +139 -0
  99. package/lib/@openglobus/js/entity/StripHandler.d.ts +42 -0
  100. package/lib/@openglobus/js/entity/index.d.ts +10 -0
  101. package/lib/@openglobus/js/index.d.ts +33 -0
  102. package/lib/@openglobus/js/input/KeyboardHandler.d.ts +33 -0
  103. package/lib/@openglobus/js/input/MouseHandler.d.ts +16 -0
  104. package/lib/@openglobus/js/input/TouchHandler.d.ts +11 -0
  105. package/lib/@openglobus/js/input/input.d.ts +3 -0
  106. package/lib/@openglobus/js/layer/BaseGeoImage.d.ts +145 -0
  107. package/lib/@openglobus/js/layer/Bing.d.ts +4 -0
  108. package/lib/@openglobus/js/layer/CanvasTiles.d.ts +103 -0
  109. package/lib/@openglobus/js/layer/GeoImage.d.ts +61 -0
  110. package/lib/@openglobus/js/layer/GeoTexture2d.d.ts +17 -0
  111. package/lib/@openglobus/js/layer/GeoVideo.d.ts +68 -0
  112. package/lib/@openglobus/js/layer/KML.d.ts +72 -0
  113. package/lib/@openglobus/js/layer/Layer.d.ts +415 -0
  114. package/lib/@openglobus/js/layer/Material.d.ts +34 -0
  115. package/lib/@openglobus/js/layer/OpenStreetMap.d.ts +4 -0
  116. package/lib/@openglobus/js/layer/Vector.d.ts +246 -0
  117. package/lib/@openglobus/js/layer/WMS.d.ts +75 -0
  118. package/lib/@openglobus/js/layer/XYZ.d.ts +148 -0
  119. package/lib/@openglobus/js/layer/index.d.ts +12 -0
  120. package/lib/@openglobus/js/light/LightSource.d.ts +174 -0
  121. package/lib/@openglobus/js/math/Line2.d.ts +11 -0
  122. package/lib/@openglobus/js/math/Line3.d.ts +28 -0
  123. package/lib/@openglobus/js/math/Mat3.d.ts +77 -0
  124. package/lib/@openglobus/js/math/Mat4.d.ts +195 -0
  125. package/lib/@openglobus/js/math/Plane.d.ts +20 -0
  126. package/lib/@openglobus/js/math/Quat.d.ts +373 -0
  127. package/lib/@openglobus/js/math/Ray.d.ts +76 -0
  128. package/lib/@openglobus/js/math/Vec2.d.ts +310 -0
  129. package/lib/@openglobus/js/math/Vec3.d.ts +472 -0
  130. package/lib/@openglobus/js/math/Vec4.d.ts +163 -0
  131. package/lib/@openglobus/js/math/coder.d.ts +51 -0
  132. package/lib/@openglobus/js/math/index.d.ts +11 -0
  133. package/lib/@openglobus/js/math.d.ts +266 -0
  134. package/lib/@openglobus/js/mercator.d.ts +92 -0
  135. package/lib/@openglobus/js/proj/EPSG3857.d.ts +9 -0
  136. package/lib/@openglobus/js/proj/EPSG4326.d.ts +9 -0
  137. package/lib/@openglobus/js/proj/Proj.d.ts +43 -0
  138. package/lib/@openglobus/js/quadTree/EPSG4326QuadTreeStrategy.d.ts +6 -0
  139. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +9 -0
  140. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +54 -0
  141. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +11 -0
  142. package/lib/@openglobus/js/quadTree/Node.d.ts +80 -0
  143. package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +28 -0
  144. package/lib/@openglobus/js/quadTree/Wgs84QuadTreeStrategy.d.ts +6 -0
  145. package/lib/@openglobus/js/quadTree/index.d.ts +12 -0
  146. package/lib/@openglobus/js/quadTree/quadTree.d.ts +40 -0
  147. package/lib/@openglobus/js/renderer/Renderer.d.ts +319 -0
  148. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +240 -0
  149. package/lib/@openglobus/js/scene/Axes.d.ts +12 -0
  150. package/lib/@openglobus/js/scene/BaseNode.d.ts +61 -0
  151. package/lib/@openglobus/js/scene/Planet.d.ts +652 -0
  152. package/lib/@openglobus/js/scene/RenderNode.d.ts +150 -0
  153. package/lib/@openglobus/js/scene/SkyBox.d.ts +13 -0
  154. package/lib/@openglobus/js/scene/index.d.ts +5 -0
  155. package/lib/@openglobus/js/segment/Segment.d.ts +288 -0
  156. package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +44 -0
  157. package/lib/@openglobus/js/segment/SegmentLonLatWgs84.d.ts +10 -0
  158. package/lib/@openglobus/js/segment/Slice.d.ts +13 -0
  159. package/lib/@openglobus/js/segment/segmentHelper.d.ts +18 -0
  160. package/lib/@openglobus/js/shaders/atmos.d.ts +4 -0
  161. package/lib/@openglobus/js/shaders/billboard.d.ts +3 -0
  162. package/lib/@openglobus/js/shaders/bloom.d.ts +2 -0
  163. package/lib/@openglobus/js/shaders/blur.d.ts +3 -0
  164. package/lib/@openglobus/js/shaders/depth.d.ts +2 -0
  165. package/lib/@openglobus/js/shaders/drawnode.d.ts +8 -0
  166. package/lib/@openglobus/js/shaders/geoObject.d.ts +3 -0
  167. package/lib/@openglobus/js/shaders/label.d.ts +4 -0
  168. package/lib/@openglobus/js/shaders/lumFilter.d.ts +2 -0
  169. package/lib/@openglobus/js/shaders/pointCloud.d.ts +2 -0
  170. package/lib/@openglobus/js/shaders/polyline.d.ts +3 -0
  171. package/lib/@openglobus/js/shaders/ray.d.ts +2 -0
  172. package/lib/@openglobus/js/shaders/screenFrame.d.ts +2 -0
  173. package/lib/@openglobus/js/shaders/skybox.d.ts +2 -0
  174. package/lib/@openglobus/js/shaders/toneMapping.d.ts +2 -0
  175. package/lib/@openglobus/js/shaders/utils.d.ts +1 -0
  176. package/lib/@openglobus/js/terrain/BilTerrain.d.ts +18 -0
  177. package/lib/@openglobus/js/terrain/EmptyTerrain.d.ts +113 -0
  178. package/lib/@openglobus/js/terrain/Geoid.d.ts +33 -0
  179. package/lib/@openglobus/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  180. package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +137 -0
  181. package/lib/{js/terrain/MapboxTerrain.d.ts → @openglobus/js/terrain/RgbTerrain.d.ts} +5 -5
  182. package/lib/@openglobus/js/terrain/index.d.ts +6 -0
  183. package/lib/@openglobus/js/ui/Button.d.ts +32 -0
  184. package/lib/@openglobus/js/ui/ButtonGroup.d.ts +16 -0
  185. package/lib/@openglobus/js/ui/Color.d.ts +22 -0
  186. package/lib/@openglobus/js/ui/Dialog.d.ts +55 -0
  187. package/lib/@openglobus/js/ui/Slider.d.ts +38 -0
  188. package/lib/@openglobus/js/ui/ToggleButton.d.ts +20 -0
  189. package/lib/@openglobus/js/ui/View.d.ts +37 -0
  190. package/lib/@openglobus/js/ui/icons.d.ts +1 -0
  191. package/lib/@openglobus/js/utils/BaseWorker.d.ts +14 -0
  192. package/lib/@openglobus/js/utils/FontAtlas.d.ts +82 -0
  193. package/lib/@openglobus/js/utils/GeoImageCreator.d.ts +34 -0
  194. package/lib/@openglobus/js/utils/ImagesCacheManager.d.ts +22 -0
  195. package/lib/@openglobus/js/utils/Loader.d.ts +63 -0
  196. package/lib/@openglobus/js/utils/NormalMapCreator.d.ts +52 -0
  197. package/lib/@openglobus/js/utils/PlainSegmentWorker.d.ts +24 -0
  198. package/lib/@openglobus/js/utils/TerrainWorker.d.ts +28 -0
  199. package/lib/@openglobus/js/utils/TextureAtlas.d.ts +113 -0
  200. package/lib/@openglobus/js/utils/VectorTileCreator.d.ts +18 -0
  201. package/lib/@openglobus/js/utils/colorTable.d.ts +3 -0
  202. package/lib/@openglobus/js/utils/earcut.d.ts +7 -0
  203. package/lib/@openglobus/js/utils/objParser.d.ts +24 -0
  204. package/lib/@openglobus/js/utils/shared.d.ts +263 -0
  205. package/lib/@openglobus/js/utils/units.d.ts +16 -0
  206. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +53 -0
  207. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +69 -0
  208. package/lib/@openglobus/js/webgl/Handler.d.ts +473 -0
  209. package/lib/@openglobus/js/webgl/Multisample.d.ts +27 -0
  210. package/lib/@openglobus/js/webgl/Program.d.ts +159 -0
  211. package/lib/@openglobus/js/webgl/ProgramController.d.ts +86 -0
  212. package/lib/@openglobus/js/webgl/index.d.ts +6 -0
  213. package/lib/@openglobus/js/webgl/types.d.ts +9 -0
  214. package/lib/@openglobus/js/webgl/variableHandlers.d.ts +22 -0
  215. package/lib/@openglobus/og.css +1 -1
  216. package/lib/@openglobus/og.esm.js +1 -1
  217. package/lib/@openglobus/og.esm.js.map +1 -1
  218. package/lib/@openglobus/og.umd.js +1 -1
  219. package/lib/@openglobus/og.umd.js.map +1 -1
  220. package/lib/js/Extent.js +2 -2
  221. package/lib/js/Globe.d.ts +1 -1
  222. package/lib/js/Object3d.d.ts +8 -1
  223. package/lib/js/Object3d.js +12 -2
  224. package/lib/js/camera/Frustum.d.ts +1 -1
  225. package/lib/js/camera/Frustum.js +3 -2
  226. package/lib/js/control/DebugInfo.js +19 -18
  227. package/lib/js/control/Lighting.d.ts +4 -0
  228. package/lib/js/control/Lighting.js +51 -12
  229. package/lib/js/control/SimpleSkyBackground.d.ts +2 -0
  230. package/lib/js/control/SimpleSkyBackground.js +13 -3
  231. package/lib/js/control/drawing/PolygonDrawingScene.js +2 -2
  232. package/lib/js/control/visibleExtent/drawnode.js +1 -1
  233. package/lib/js/entity/GeoObject.d.ts +12 -3
  234. package/lib/js/entity/GeoObject.js +34 -2
  235. package/lib/js/entity/GeoObjectHandler.d.ts +5 -0
  236. package/lib/js/entity/GeoObjectHandler.js +47 -0
  237. package/lib/js/entity/Geometry.d.ts +24 -11
  238. package/lib/js/entity/Geometry.js +17 -9
  239. package/lib/js/entity/GeometryHandler.js +5 -5
  240. package/lib/js/entity/Label.d.ts +7 -0
  241. package/lib/js/entity/Label.js +11 -0
  242. package/lib/js/entity/Polyline.d.ts +15 -7
  243. package/lib/js/entity/Polyline.js +54 -6
  244. package/lib/js/entity/Strip.d.ts +12 -0
  245. package/lib/js/entity/Strip.js +16 -0
  246. package/lib/js/entity/StripHandler.js +1 -1
  247. package/lib/js/entity/index.d.ts +10 -11
  248. package/lib/js/entity/index.js +10 -11
  249. package/lib/js/index.d.ts +5 -5
  250. package/lib/js/index.js +5 -5
  251. package/lib/js/layer/Bing.d.ts +4 -0
  252. package/lib/js/layer/Bing.js +40 -0
  253. package/lib/js/layer/GeoImage.d.ts +1 -1
  254. package/lib/js/layer/GeoVideo.d.ts +1 -1
  255. package/lib/js/layer/Layer.d.ts +1 -1
  256. package/lib/js/layer/Layer.js +2 -2
  257. package/lib/js/layer/OpenStreetMap.d.ts +4 -0
  258. package/lib/js/layer/OpenStreetMap.js +19 -0
  259. package/lib/js/layer/Vector.d.ts +3 -0
  260. package/lib/js/layer/Vector.js +3 -3
  261. package/lib/js/layer/index.d.ts +12 -11
  262. package/lib/js/layer/index.js +12 -11
  263. package/lib/js/math/Mat4.js +18 -17
  264. package/lib/js/mercator.js +2 -1
  265. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +4 -5
  266. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +3 -0
  267. package/lib/js/quadTree/EarthQuadTreeStrategy.js +40 -5
  268. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  269. package/lib/js/quadTree/EntityCollectionNode.js +13 -14
  270. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +5 -0
  271. package/lib/js/quadTree/MarsQuadTreeStrategy.js +31 -5
  272. package/lib/js/quadTree/Node.d.ts +2 -1
  273. package/lib/js/quadTree/Node.js +38 -28
  274. package/lib/js/quadTree/QuadTreeStrategy.d.ts +3 -0
  275. package/lib/js/quadTree/QuadTreeStrategy.js +17 -0
  276. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +3 -3
  277. package/lib/js/renderer/Renderer.js +1 -0
  278. package/lib/js/scene/Planet.js +6 -4
  279. package/lib/js/segment/Segment.d.ts +12 -9
  280. package/lib/js/segment/Segment.js +47 -24
  281. package/lib/js/segment/SegmentLonLat.d.ts +1 -5
  282. package/lib/js/segment/SegmentLonLat.js +8 -100
  283. package/lib/js/segment/SegmentLonLatWgs84.js +5 -3
  284. package/lib/js/shaders/billboard.js +4 -4
  285. package/lib/js/shaders/drawnode.js +16 -19
  286. package/lib/js/shaders/geoObject.js +4 -5
  287. package/lib/js/shaders/ray.js +7 -3
  288. package/lib/js/terrain/BilTerrain.d.ts +1 -1
  289. package/lib/js/terrain/BilTerrain.js +7 -6
  290. package/lib/js/terrain/EmptyTerrain.d.ts +7 -0
  291. package/lib/js/terrain/EmptyTerrain.js +7 -0
  292. package/lib/js/terrain/GlobusRgbTerrain.d.ts +6 -0
  293. package/lib/js/terrain/GlobusRgbTerrain.js +25 -0
  294. package/lib/js/terrain/GlobusTerrain.d.ts +5 -5
  295. package/lib/js/terrain/GlobusTerrain.js +35 -30
  296. package/lib/js/terrain/RgbTerrain.d.ts +22 -0
  297. package/lib/js/terrain/RgbTerrain.js +415 -0
  298. package/lib/js/terrain/index.d.ts +3 -2
  299. package/lib/js/terrain/index.js +3 -2
  300. package/lib/js/ui/Color.d.ts +22 -0
  301. package/lib/js/ui/Color.js +58 -0
  302. package/lib/js/utils/GeoImageCreator.js +1 -1
  303. package/lib/js/utils/NormalMapCreator.js +1 -1
  304. package/lib/js/utils/VectorTileCreator.js +3 -3
  305. package/lib/js/utils/shared.d.ts +1 -8
  306. package/lib/js/utils/shared.js +17 -8
  307. package/package.json +2 -1
  308. package/lib/js/terrain/MapboxTerrain.js +0 -305
package/lib/js/Extent.js CHANGED
@@ -74,8 +74,8 @@ export class Extent {
74
74
  * @returns {Extent} -
75
75
  */
76
76
  static fromTile(x, y, z, width = mercator.POLE_DOUBLE, height = mercator.POLE_DOUBLE) {
77
- const H = Math.pow(2, z);
78
- const W = Math.pow(2, z);
77
+ const H = 1 << z; //Math.pow(2, z);
78
+ const W = H; //Math.pow(2, z);
79
79
  const lnSize = width / W;
80
80
  const ltSize = height / H;
81
81
  const left = -width * 0.5 + x * lnSize, top = height * 0.5 - y * ltSize, bottom = top - ltSize, right = left + lnSize;
package/lib/js/Globe.d.ts CHANGED
@@ -9,7 +9,7 @@ import { Sun } from "./control/Sun";
9
9
  import { HTMLDivElementExt, Renderer } from "./renderer/Renderer";
10
10
  import { RenderNode } from "./scene/RenderNode";
11
11
  import { Extent } from "./Extent";
12
- interface IGlobeParams {
12
+ export interface IGlobeParams {
13
13
  attributionContainer?: HTMLElement;
14
14
  target?: string | HTMLElement;
15
15
  skybox?: RenderNode;
@@ -47,7 +47,14 @@ declare class Object3d {
47
47
  * @param horizontalAngle
48
48
  * @param verticalAngle
49
49
  */
50
- static getFrustumScaleByCameraParams(length: number, horizontalAngle: number, verticalAngle: number): Vec3;
50
+ static getFrustumScaleByCameraAngles(length: number, horizontalAngle: number, verticalAngle: number): Vec3;
51
+ /**
52
+ * Returns scale parameters for a frustum geoObject created with only Object3d.createFrustum();
53
+ * @param length
54
+ * @param horizontalAngle
55
+ * @param aspectRatio
56
+ */
57
+ static getFrustumScaleByCameraAspectRatio(length: number, horizontalAngle: number, aspectRatio: number): Vec3;
51
58
  static createFrustum(length?: number, width?: number, height?: number, xOffset?: number, yOffset?: number, zOffset?: number): Object3d;
52
59
  static createCylinder(radiusTop?: number, radiusBottom?: number, height?: number, radialSegments?: number, heightSegments?: number, isTop?: boolean, isBottom?: boolean, offsetX?: number, offsetY?: number, offsetZ?: number): Object3d;
53
60
  static createCube(length?: number, height?: number, depth?: number, xOffset?: number, yOffset?: number, zOffset?: number): Object3d;
@@ -1,6 +1,6 @@
1
1
  import { htmlColorToFloat32Array } from './utils/shared';
2
2
  import { Vec3 } from './math/Vec3';
3
- import { MAX, MIN, RADIANS_HALF } from './math';
3
+ import { DEGREES_DOUBLE, MAX, MIN, RADIANS_HALF } from './math';
4
4
  import { transformLeftToRightCoordinateSystem, objParser } from "./utils/objParser";
5
5
  function getColor(color) {
6
6
  if (color instanceof Array) {
@@ -225,9 +225,19 @@ class Object3d {
225
225
  * @param horizontalAngle
226
226
  * @param verticalAngle
227
227
  */
228
- static getFrustumScaleByCameraParams(length, horizontalAngle, verticalAngle) {
228
+ static getFrustumScaleByCameraAngles(length, horizontalAngle, verticalAngle) {
229
229
  return new Vec3(2.0 * length * Math.tan(RADIANS_HALF * horizontalAngle), 2.0 * length * Math.tan(RADIANS_HALF * verticalAngle), length);
230
230
  }
231
+ /**
232
+ * Returns scale parameters for a frustum geoObject created with only Object3d.createFrustum();
233
+ * @param length
234
+ * @param horizontalAngle
235
+ * @param aspectRatio
236
+ */
237
+ static getFrustumScaleByCameraAspectRatio(length, horizontalAngle, aspectRatio) {
238
+ let vAngle = DEGREES_DOUBLE * Math.atan(Math.tan(RADIANS_HALF * horizontalAngle) / aspectRatio);
239
+ return Object3d.getFrustumScaleByCameraAngles(length, horizontalAngle, vAngle);
240
+ }
231
241
  static createFrustum(length = 1, width = 1, height = 1, xOffset = 0, yOffset = 0, zOffset = 0) {
232
242
  width *= 0.5;
233
243
  height *= 0.5;
@@ -87,7 +87,7 @@ declare class Frustum {
87
87
  * Sets up camera projection matrix.
88
88
  * @public
89
89
  * @param {number} angle - Camera's view angle.
90
- * @param {number} aspect - Screen aspect ration.
90
+ * @param {number} aspect - Screen aspect ratio.
91
91
  * @param {number} near - Near camera distance.
92
92
  * @param {number} far - Far camera distance.
93
93
  */
@@ -1,4 +1,5 @@
1
1
  import { Mat4 } from "../math/Mat4";
2
+ import { RADIANS_HALF } from "../math";
2
3
  function planeNormalize(plane) {
3
4
  let t = 1.0 / Math.sqrt(plane[0] * plane[0] + plane[1] * plane[1] + plane[2] * plane[2]);
4
5
  plane[0] *= t;
@@ -59,12 +60,12 @@ class Frustum {
59
60
  * Sets up camera projection matrix.
60
61
  * @public
61
62
  * @param {number} angle - Camera's view angle.
62
- * @param {number} aspect - Screen aspect ration.
63
+ * @param {number} aspect - Screen aspect ratio.
63
64
  * @param {number} near - Near camera distance.
64
65
  * @param {number} far - Far camera distance.
65
66
  */
66
67
  setProjectionMatrix(angle, aspect, near, far) {
67
- this.top = near * Math.tan((angle * Math.PI) / 360);
68
+ this.top = near * Math.tan(angle * RADIANS_HALF);
68
69
  this.bottom = -this.top;
69
70
  this.right = this.top * aspect;
70
71
  this.left = -this.right;
@@ -96,27 +96,28 @@ export class DebugInfo extends Control {
96
96
  ctx.strokeStyle = 'black';
97
97
  ctx.stroke();
98
98
  let size;
99
- if (material.segment.isPole) {
100
- let ext = material.segment.getExtentLonLat();
101
- ctx.fillStyle = 'black';
102
- ctx.font = 'normal ' + 29 + 'px Verdana';
103
- ctx.textAlign = 'center';
104
- ctx.fillText(`${ext.northEast.lon.toFixed(3)} ${ext.northEast.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 + 20);
105
- ctx.fillText(`${ext.southWest.lon.toFixed(3)} ${ext.southWest.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 - 20);
99
+ // if (material.segment.isPole) {
100
+ // let ext = material.segment.getExtentLonLat();
101
+ //
102
+ // ctx.fillStyle = 'black';
103
+ // ctx.font = 'normal ' + 29 + 'px Verdana';
104
+ //
105
+ // ctx.textAlign = 'center';
106
+ // ctx.fillText(`${ext.northEast.lon.toFixed(3)} ${ext.northEast.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 + 20);
107
+ // ctx.fillText(`${ext.southWest.lon.toFixed(3)} ${ext.southWest.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 - 20);
108
+ // } else {
109
+ //Draw text
110
+ if (material.segment.tileZoom > 14) {
111
+ size = "26";
106
112
  }
107
113
  else {
108
- //Draw text
109
- if (material.segment.tileZoom > 14) {
110
- size = "26";
111
- }
112
- else {
113
- size = "32";
114
- }
115
- ctx.fillStyle = 'black';
116
- ctx.font = 'normal ' + size + 'px Verdana';
117
- ctx.textAlign = 'center';
118
- ctx.fillText(material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, cnv.width / 2, cnv.height / 2);
114
+ size = "32";
119
115
  }
116
+ ctx.fillStyle = 'black';
117
+ ctx.font = 'normal ' + size + 'px Verdana';
118
+ ctx.textAlign = 'center';
119
+ ctx.fillText(material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, cnv.width / 2, cnv.height / 2);
120
+ //}
120
121
  //Draw canvas tile
121
122
  applyCanvas(cnv);
122
123
  }
@@ -4,6 +4,7 @@ import { Layer } from "../layer/Layer";
4
4
  import { Slider } from "../ui/Slider";
5
5
  import { ToggleButton } from "../ui/ToggleButton";
6
6
  import { View } from '../ui/View';
7
+ import { Color } from "../ui/Color";
7
8
  interface ILightingParams extends IControlParams {
8
9
  }
9
10
  /**
@@ -16,6 +17,8 @@ export declare class Lighting extends Control {
16
17
  protected _panel: View<null>;
17
18
  protected _atmosphereMaxOpacity: Slider;
18
19
  protected _atmosphereMinOpacity: Slider;
20
+ protected _simpleSkyBackgroundColorOne: Color;
21
+ protected _simpleSkyBackgroundColorTwo: Color;
19
22
  protected _gamma: Slider;
20
23
  protected _exposure: Slider;
21
24
  protected _night: Slider;
@@ -38,6 +41,7 @@ export declare class Lighting extends Control {
38
41
  $ambient: HTMLElement | null;
39
42
  $specular: HTMLElement | null;
40
43
  $atmosphereOpacity: HTMLElement | null;
44
+ $simpleSkyBackground: HTMLElement | null;
41
45
  constructor(options?: ILightingParams);
42
46
  bindLayer(layer: Layer): void;
43
47
  oninit(): void;
@@ -3,6 +3,7 @@ import { Dialog } from '../ui/Dialog';
3
3
  import { Slider } from "../ui/Slider";
4
4
  import { ToggleButton } from "../ui/ToggleButton";
5
5
  import { View } from '../ui/View';
6
+ import { Color } from "../ui/Color";
6
7
  const SUN_STOP_SVG_ICON = `<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 70.41" style="enable-background:new 0 0 122.88 70.41" xml:space="preserve"><g><path d="M60.91,19.12c6.95,0,13.24,2.95,17.8,7.72c4.55,4.77,7.37,11.37,7.37,18.64c0,1.94-0.2,3.83-0.58,5.65h31.61 c2.1,0,2.62,1.16,2.62,2.59c0,1.43-0.52,2.59-2.62,2.59H7.09c-2.1,0-2.62-1.16-2.62-2.59c0-1.43,0.52-2.59,2.62-2.59h29.23 c-0.38-1.82-0.58-3.71-0.58-5.65c0-7.28,2.82-13.87,7.37-18.64C47.67,22.08,53.96,19.12,60.91,19.12L60.91,19.12L60.91,19.12z M63.4,70.41c-2.1,0-2.62-1.16-2.62-2.59s0.52-2.59,2.62-2.59h56.86c2.1,0,2.62,1.16,2.62,2.59s-0.52,2.59-2.62,2.59H63.4 L63.4,70.41z M2.62,70.41c-2.1,0-2.62-1.16-2.62-2.59s0.52-2.59,2.62-2.59h29.51c2.1,0,2.62,1.16,2.62,2.59s-0.52,2.59-2.62,2.59 H2.62L2.62,70.41z M38.39,9.46c-0.78-1.35-0.32-3.07,1.03-3.85c1.35-0.78,3.07-0.32,3.85,1.03l3.62,6.27 c0.78,1.35,0.32,3.07-1.03,3.85c-1.35,0.78-3.07,0.32-3.85-1.03L38.39,9.46L38.39,9.46L38.39,9.46z M58.67,2.83 c0-1.56,1.27-2.83,2.83-2.83c1.56,0,2.83,1.27,2.83,2.83v7.24c0,1.56-1.27,2.83-2.83,2.83c-1.56,0-2.83-1.26-2.83-2.83V2.83 L58.67,2.83L58.67,2.83z M79.56,7.23c0.77-1.35,2.49-1.81,3.84-1.04c1.35,0.77,1.81,2.49,1.04,3.84l-3.62,6.27 c-0.77,1.35-2.49,1.81-3.84,1.04c-1.35-0.77-1.81-2.49-1.04-3.84L79.56,7.23L79.56,7.23L79.56,7.23z M95.45,21.48 c1.35-0.78,3.07-0.32,3.85,1.03c0.78,1.35,0.32,3.07-1.03,3.85L92,29.98c-1.35,0.78-3.07,0.32-3.85-1.03 c-0.78-1.35-0.32-3.07,1.03-3.85L95.45,21.48L95.45,21.48L95.45,21.48z M102.08,41.76c1.56,0,2.83,1.27,2.83,2.83 c0,1.56-1.27,2.83-2.83,2.83h-7.24c-1.56,0-2.83-1.26-2.83-2.83s1.26-2.83,2.83-2.83H102.08L102.08,41.76L102.08,41.76z M19.74,46.25c-1.56,0-2.83-1.27-2.83-2.83c0-1.56,1.27-2.83,2.83-2.83h7.24c1.56,0,2.83,1.26,2.83,2.83s-1.27,2.83-2.83,2.83 H19.74L19.74,46.25L19.74,46.25z M24.14,25.35c-1.35-0.77-1.81-2.49-1.04-3.84c0.77-1.35,2.49-1.81,3.84-1.04l6.27,3.62 c1.35,0.77,1.81,2.49,1.04,3.84c-0.77,1.35-2.49,1.81-3.84,1.04L24.14,25.35L24.14,25.35L24.14,25.35z"/></g></svg>`;
7
8
  const SUN_ACTIVE_SVG_ICON = `<?xml version="1.0"?>
8
9
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
@@ -36,6 +37,9 @@ const TEMPLATE = `<div class="og-lighing">
36
37
  <div class="og-option og-atmosphere-opacity">
37
38
  </div>
38
39
 
40
+ <div class="og-option og-simpleskybackground">
41
+ </div>
42
+
39
43
  <div class="og-lighting-emptyline"></div>
40
44
 
41
45
  <div class="og-option og-gamma"></div>
@@ -118,6 +122,7 @@ export class Lighting extends Control {
118
122
  this.$ambient = null;
119
123
  this.$specular = null;
120
124
  this.$atmosphereOpacity = null;
125
+ this.$simpleSkyBackground = null;
121
126
  this._atmosphereMaxOpacity = new Slider({
122
127
  label: "Max.opacity",
123
128
  max: 5
@@ -126,6 +131,12 @@ export class Lighting extends Control {
126
131
  label: "Min.opacity",
127
132
  max: 5
128
133
  });
134
+ this._simpleSkyBackgroundColorOne = new Color({
135
+ label: "Color One"
136
+ });
137
+ this._simpleSkyBackgroundColorTwo = new Color({
138
+ label: "Color Two"
139
+ });
129
140
  this._gamma = new Slider({
130
141
  label: "Gamma",
131
142
  max: 5
@@ -203,6 +214,7 @@ export class Lighting extends Control {
203
214
  this._panel.appendTo(this._dialog.container);
204
215
  if (this._panel.el) {
205
216
  this.$atmosphereOpacity = this._panel.el.querySelector(".og-atmosphere-opacity");
217
+ this.$simpleSkyBackground = this._panel.el.querySelector(".og-simpleskybackground");
206
218
  this.$gamma = this._panel.el.querySelector(".og-option.og-gamma");
207
219
  this.$exposure = this._panel.el.querySelector(".og-option.og-exposure");
208
220
  this.$opacity = this._panel.el.querySelector(".og-option.og-opacity");
@@ -266,21 +278,27 @@ export class Lighting extends Control {
266
278
  atmosphereEnabledBtn.appendTo($suncontrol);
267
279
  if (this.planet.atmosphereEnabled) {
268
280
  this.$atmosphereOpacity.style.display = "block";
281
+ this.$simpleSkyBackground.style.display = "none";
269
282
  }
270
283
  else {
271
284
  this.$atmosphereOpacity.style.display = "none";
285
+ this.$simpleSkyBackground.style.display = "flex";
272
286
  }
273
287
  atmosphereEnabledBtn.events.on("change", (isActive) => {
274
288
  this.planet.atmosphereEnabled = isActive;
275
289
  if (this.planet.atmosphereEnabled) {
276
290
  this.$atmosphereOpacity.style.display = "block";
291
+ this.$simpleSkyBackground.style.display = "none";
277
292
  }
278
293
  else {
279
294
  this.$atmosphereOpacity.style.display = "none";
295
+ this.$simpleSkyBackground.style.display = "flex";
280
296
  }
281
297
  });
282
298
  this._atmosphereMaxOpacity.appendTo(this.$atmosphereOpacity);
283
299
  this._atmosphereMinOpacity.appendTo(this.$atmosphereOpacity);
300
+ this._simpleSkyBackgroundColorOne.appendTo(this.$simpleSkyBackground);
301
+ this._simpleSkyBackgroundColorTwo.appendTo(this.$simpleSkyBackground);
284
302
  this._gamma.appendTo(this.$gamma);
285
303
  this._exposure.appendTo(this.$exposure);
286
304
  this._night.appendTo(this.$night);
@@ -295,19 +313,23 @@ export class Lighting extends Control {
295
313
  this._specular_g.appendTo(this.$specular);
296
314
  this._specular_b.appendTo(this.$specular);
297
315
  this._shininess.appendTo(this.$specular);
298
- this._atmosphereMinOpacity.value = this.planet.atmosphereMinOpacity;
299
- this._atmosphereMinOpacity.events.on("change", (val) => {
300
- this.planet.atmosphereMinOpacity = val;
301
- });
316
+ //
317
+ // Screen options
318
+ //
302
319
  this._gamma.value = this.planet.renderer.gamma;
303
320
  this._gamma.events.on("change", (val) => {
304
321
  this.planet.renderer.gamma = val;
305
322
  });
306
- this._panel.el.querySelector("#layers").addEventListener("change", (e) => {
307
- const l = this.planet.getLayerByName(e.target.value);
308
- if (l) {
309
- this.bindLayer(l);
310
- }
323
+ this._exposure.value = this.planet.renderer.exposure;
324
+ this._exposure.events.on("change", (val) => {
325
+ this.planet.renderer.exposure = val;
326
+ });
327
+ //
328
+ // Atmosphere parameters
329
+ //
330
+ this._atmosphereMinOpacity.value = this.planet.atmosphereMinOpacity;
331
+ this._atmosphereMinOpacity.events.on("change", (val) => {
332
+ this.planet.atmosphereMinOpacity = val;
311
333
  });
312
334
  this._atmosphereMaxOpacity.value = this.planet.atmosphereMaxOpacity;
313
335
  this._atmosphereMaxOpacity.events.on("change", (val) => {
@@ -315,9 +337,26 @@ export class Lighting extends Control {
315
337
  let atmos = this.planet.renderer.controls.Atmosphere;
316
338
  atmos.opacity = val;
317
339
  });
318
- this._exposure.value = this.planet.renderer.exposure;
319
- this._exposure.events.on("change", (val) => {
320
- this.planet.renderer.exposure = val;
340
+ //
341
+ // Simple Sky Background parameters
342
+ //
343
+ let simpleSkyBackgroundControl = this.planet.renderer.controls.SimpleSkyBackground;
344
+ this._simpleSkyBackgroundColorOne.value = simpleSkyBackgroundControl.colorOne;
345
+ this._simpleSkyBackgroundColorOne.events.on("input", (val) => {
346
+ simpleSkyBackgroundControl.colorOne = val;
347
+ });
348
+ this._simpleSkyBackgroundColorTwo.value = simpleSkyBackgroundControl.colorTwo;
349
+ this._simpleSkyBackgroundColorTwo.events.on("input", (val) => {
350
+ simpleSkyBackgroundControl.colorTwo = val;
351
+ });
352
+ //
353
+ // Planet options
354
+ //
355
+ this._panel.el.querySelector("#layers").addEventListener("change", (e) => {
356
+ const l = this.planet.getLayerByName(e.target.value);
357
+ if (l) {
358
+ this.bindLayer(l);
359
+ }
321
360
  });
322
361
  this._night.events.on("change", (val) => {
323
362
  if (this._selectedLayer) {
@@ -5,6 +5,8 @@ export declare class SimpleSkyBackground extends Control {
5
5
  protected _colorOne: Float32Array;
6
6
  protected _colorTwo: Float32Array;
7
7
  constructor(options?: ISimpleSkyBackgroundParams);
8
+ get colorOne(): string;
9
+ get colorTwo(): string;
8
10
  set colorOne(htmlColor: string);
9
11
  set colorTwo(htmlColor: string);
10
12
  oninit(): void;
@@ -1,5 +1,5 @@
1
1
  import { Control } from "./Control";
2
- import { htmlColorToRgb } from "../utils/shared";
2
+ import { htmlColorToRgb, rgbToStringHTML } from "../utils/shared";
3
3
  import { Program } from '../webgl/Program';
4
4
  export class SimpleSkyBackground extends Control {
5
5
  constructor(options = {}) {
@@ -7,8 +7,18 @@ export class SimpleSkyBackground extends Control {
7
7
  name: "SimpleSkyBackground",
8
8
  ...options
9
9
  });
10
- this._colorOne = new Float32Array([1.0, 1.0, 1.0]);
11
- this._colorTwo = new Float32Array([0.0, 153.0 / 255.0, 221.0 / 255.0]);
10
+ this._colorOne = new Float32Array([128 / 255, 223 / 255, 255 / 255]);
11
+ this._colorTwo = new Float32Array([10 / 255, 15 / 255, 56 / 255]);
12
+ }
13
+ get colorOne() {
14
+ let c = this._colorOne;
15
+ let arr = [Math.round(c[0] * 255), Math.round(c[1] * 255), Math.round(c[2] * 255)];
16
+ return rgbToStringHTML(arr);
17
+ }
18
+ get colorTwo() {
19
+ let c = this._colorTwo;
20
+ let arr = [Math.round(c[0] * 255), Math.round(c[1] * 255), Math.round(c[2] * 255)];
21
+ return rgbToStringHTML(arr);
12
22
  }
13
23
  set colorOne(htmlColor) {
14
24
  let rgb = htmlColorToRgb(htmlColor);
@@ -39,7 +39,7 @@ class PolygonDrawingScene extends RenderNode {
39
39
  super(options.name);
40
40
  this._cornerDblClick = false;
41
41
  this._onChange = (e) => {
42
- if (e.geometryType === "Polygon") {
42
+ if (e.geometryType === "POLYGON") {
43
43
  let coords = this.getCoordinates();
44
44
  let entity = new Entity({
45
45
  'geometry': {
@@ -179,7 +179,7 @@ class PolygonDrawingScene extends RenderNode {
179
179
  this._insertCornerIndex = -1;
180
180
  }
181
181
  get geometryType() {
182
- return "Polygon";
182
+ return "POLYGON";
183
183
  }
184
184
  getCoordinates() {
185
185
  let corners = this._cornerLayer.getEntities();
@@ -54,7 +54,7 @@ export function drawnode_screen_nl() {
54
54
  mat4 viewMatrixRTE = viewMatrix;
55
55
  viewMatrixRTE[3] = vec4(0.0, 0.0, 0.0, 1.0);
56
56
 
57
- gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff + lowDiff, 1.0);
57
+ gl_Position = projectionMatrix * viewMatrixRTE * vec4(highDiff * step(1.0, length(highDiff)) + lowDiff, 1.0);
58
58
  }`,
59
59
  fragmentShader: `precision highp float;
60
60
  uniform vec4 tileOffsetArr[5];
@@ -1,12 +1,13 @@
1
1
  import { Entity } from "./Entity";
2
2
  import { Quat, Vec3, Vec4 } from "../math/index";
3
- import { InstanceData } from "./GeoObjectHandler";
3
+ import { GeoObjectHandler, InstanceData } from "./GeoObjectHandler";
4
4
  import { NumberArray3 } from "../math/Vec3";
5
5
  import { NumberArray4 } from "../math/Vec4";
6
6
  import { Object3d } from "../Object3d";
7
- import { GeoObjectHandler } from "./GeoObjectHandler";
8
7
  export interface IGeoObjectParams {
9
- object3d: Object3d;
8
+ object3d?: Object3d;
9
+ objSrc?: string;
10
+ textureSrc?: string;
10
11
  tag?: string;
11
12
  position?: Vec3 | NumberArray3;
12
13
  pitch?: number;
@@ -14,6 +15,7 @@ export interface IGeoObjectParams {
14
15
  roll?: number;
15
16
  scale?: number | Vec3;
16
17
  color?: Vec4 | NumberArray4 | string;
18
+ visibility?: boolean;
17
19
  }
18
20
  /**
19
21
  * @class
@@ -58,6 +60,8 @@ declare class GeoObject {
58
60
  protected _object3d: Object3d;
59
61
  protected _visibility: boolean;
60
62
  protected _qNorthFrame: Quat;
63
+ private _textureSrc?;
64
+ _objectSrc?: string;
61
65
  constructor(options: IGeoObjectParams);
62
66
  get tag(): string;
63
67
  getPosition(): Vec3;
@@ -118,12 +122,17 @@ declare class GeoObject {
118
122
  */
119
123
  setPosition3v(position: Vec3): void;
120
124
  setYaw(yaw: number): void;
125
+ setObject(object: Object3d): void;
126
+ setObjectSrc(src: string): void;
127
+ setTextureSrc(src: string): void;
128
+ setColorHTML(color: string): void;
121
129
  /**
122
130
  *
123
131
  * @param {number} pitch - Pitch in radians
124
132
  */
125
133
  setPitch(pitch: number): void;
126
134
  setRoll(roll: number): void;
135
+ setPitchYawRoll(pitch: number, yaw: number, roll: number): void;
127
136
  setScale(scale: number): void;
128
137
  setScale3v(scale: Vec3): void;
129
138
  getScale(): Vec3;
@@ -1,5 +1,6 @@
1
1
  import * as utils from "../utils/shared";
2
2
  import { Quat, Vec3 } from "../math/index";
3
+ import { Object3d } from "../Object3d";
3
4
  /**
4
5
  * @class
5
6
  * @param {Object} options - Geo object parameters:
@@ -28,8 +29,19 @@ class GeoObject {
28
29
  this._handlerIndex = -1;
29
30
  this._tagData = null;
30
31
  this._tagDataIndex = -1;
31
- this._object3d = options.object3d;
32
- this._visibility = true;
32
+ let object3d = options.object3d;
33
+ if ((!options.object3d || options.object3d?.vertices.length === 0)) {
34
+ object3d = new Object3d();
35
+ }
36
+ if (options.objSrc) {
37
+ this.setObjectSrc(options.objSrc);
38
+ this._objectSrc = options.objSrc;
39
+ }
40
+ this._object3d = object3d;
41
+ if (options.textureSrc) {
42
+ this.setTextureSrc(options.textureSrc);
43
+ }
44
+ this._visibility = (options.visibility != undefined ? options.visibility : true);
33
45
  this._qNorthFrame = new Quat();
34
46
  }
35
47
  get tag() {
@@ -151,6 +163,21 @@ class GeoObject {
151
163
  this._yaw = yaw;
152
164
  this.updateDirection();
153
165
  }
166
+ setObject(object) {
167
+ this._object3d = object;
168
+ }
169
+ setObjectSrc(src) {
170
+ this._objectSrc = src;
171
+ this._handler && this._handler.setObjectSrc(src, this.tag);
172
+ }
173
+ setTextureSrc(src) {
174
+ this._textureSrc = src;
175
+ this._object3d && (this._object3d.src = src);
176
+ this._handler && this._handler.setTextureTag(src, this.tag);
177
+ }
178
+ setColorHTML(color) {
179
+ this.setColor4v(utils.htmlColorToRgba(color));
180
+ }
154
181
  /**
155
182
  *
156
183
  * @param {number} pitch - Pitch in radians
@@ -163,6 +190,11 @@ class GeoObject {
163
190
  this._roll = roll;
164
191
  this._handler && this._handler.setPitchRollArr(this._tagData, this._tagDataIndex, this._pitch, roll);
165
192
  }
193
+ setPitchYawRoll(pitch, yaw, roll) {
194
+ this.setPitch(pitch);
195
+ this.setYaw(yaw);
196
+ this.setRoll(roll);
197
+ }
166
198
  setScale(scale) {
167
199
  this._scale.x = this._scale.y = this._scale.z = scale;
168
200
  this._handler && this._handler.setScaleArr(this._tagData, this._tagDataIndex, this._scale);
@@ -5,6 +5,7 @@ import { Planet } from "../scene/Planet";
5
5
  import { Vec3 } from "../math/Vec3";
6
6
  import { Vec4 } from "../math/Vec4";
7
7
  import { WebGLBufferExt, WebGLTextureExt } from "../webgl/Handler";
8
+ import { Object3d } from "../Object3d";
8
9
  declare class InstanceData {
9
10
  isFree: boolean;
10
11
  _geoObjectHandler: GeoObjectHandler;
@@ -12,6 +13,7 @@ declare class InstanceData {
12
13
  numInstances: number;
13
14
  _texture: WebGLTextureExt | null;
14
15
  _textureSrc: string | null;
16
+ _objectSrc?: string;
15
17
  _pitchRollArr: number[] | TypedArray;
16
18
  _sizeArr: number[] | TypedArray;
17
19
  _vertexArr: number[] | TypedArray;
@@ -74,6 +76,9 @@ declare class GeoObjectHandler {
74
76
  constructor(entityCollection: EntityCollection);
75
77
  initProgram(): void;
76
78
  setRenderNode(renderNode: Planet): void;
79
+ setTextureTag(src: string, tag: string): void;
80
+ setObjectSrc(src: string, tag: string): void;
81
+ _updateInstanceData(object: Object3d, tag: string): void;
77
82
  protected _addGeoObjectToArray(geoObject: GeoObject): void;
78
83
  _displayPASS(): void;
79
84
  drawPicking(): void;
@@ -1,5 +1,6 @@
1
1
  import * as shaders from "../shaders/geoObject";
2
2
  import { concatArrays, loadImage, makeArrayTyped, spliceArray } from "../utils/shared";
3
+ import { Object3d } from "../Object3d";
3
4
  const VERTEX_BUFFER = 0;
4
5
  const POSITION_BUFFER = 1;
5
6
  const RGBA_BUFFER = 2;
@@ -267,6 +268,51 @@ class GeoObjectHandler {
267
268
  }
268
269
  this.update();
269
270
  }
271
+ setTextureTag(src, tag) {
272
+ const tagData = this._instanceDataMap.get(tag);
273
+ if (tagData) {
274
+ tagData._textureSrc = src;
275
+ this._instanceDataMap.set(tag, tagData);
276
+ this._loadDataTagTexture(tagData);
277
+ }
278
+ }
279
+ setObjectSrc(src, tag) {
280
+ const tagData = this._instanceDataMap.get(tag);
281
+ if (src) {
282
+ if (tagData && tagData._objectSrc !== src) {
283
+ tagData._objectSrc = src;
284
+ Object3d.loadObj(src).then((object3d) => {
285
+ this._updateInstanceData(object3d[0], tag);
286
+ });
287
+ }
288
+ }
289
+ }
290
+ _updateInstanceData(object, tag) {
291
+ const tagData = this._instanceDataMap.get(tag);
292
+ if (tagData) {
293
+ if (object.vertices.length !== tagData._vertexArr.length) {
294
+ tagData._vertexArr = object.vertices;
295
+ tagData._changedBuffers[VERTEX_BUFFER] = true;
296
+ tagData._changedBuffers[DIRECTION_BUFFER] = true;
297
+ }
298
+ if (object.normals.length !== tagData._normalsArr.length) {
299
+ tagData._normalsArr = object.normals;
300
+ tagData._changedBuffers[NORMALS_BUFFER] = true;
301
+ }
302
+ if (object.indices.length !== tagData._indicesArr.length) {
303
+ tagData._indicesArr = object.indices;
304
+ tagData._changedBuffers[INDEX_BUFFER] = true;
305
+ }
306
+ if (object.texCoords.length !== tagData._texCoordArr.length) {
307
+ tagData._texCoordArr = object.texCoords;
308
+ tagData._changedBuffers[TEXCOORD_BUFFER] = true;
309
+ }
310
+ tagData._textureSrc = object.src;
311
+ this._loadDataTagTexture(tagData);
312
+ this._updateTag(tagData);
313
+ this._instanceDataMapValues = Array.from(this._instanceDataMap.values());
314
+ }
315
+ }
270
316
  _addGeoObjectToArray(geoObject) {
271
317
  const tag = geoObject.tag;
272
318
  let tagData = this._instanceDataMap.get(tag);
@@ -507,6 +553,7 @@ class GeoObjectHandler {
507
553
  geoObject.updateDirection();
508
554
  geoObject._tagData.refresh();
509
555
  this._updateTag(geoObject._tagData);
556
+ geoObject.setObjectSrc(geoObject._objectSrc);
510
557
  }
511
558
  }
512
559
  remove(geoObject) {
@@ -4,7 +4,13 @@ import { GeometryHandler } from "./GeometryHandler";
4
4
  import { NumberArray4, Vec4 } from "../math/Vec4";
5
5
  import { NumberArray2 } from "../math/Vec2";
6
6
  import { NumberArray3 } from "../math/Vec3";
7
- declare const GeometryType: Record<string, number>;
7
+ export declare enum GeometryTypeEnum {
8
+ POINT = 1,
9
+ LINESTRING = 2,
10
+ POLYGON = 3,
11
+ MULTIPOLYGON = 4,
12
+ MULTILINESTRING = 5
13
+ }
8
14
  export type CoordinatesType = NumberArray2 | NumberArray3;
9
15
  export type IPointCoordinates = CoordinatesType;
10
16
  export type ILineStringCoordinates = CoordinatesType[];
@@ -12,11 +18,18 @@ export type IPolygonCoordinates = CoordinatesType[][];
12
18
  export type IMultiLineStringCoordinates = ILineStringCoordinates[];
13
19
  export type IMultiPolygonCoordinates = IPolygonCoordinates[];
14
20
  export type IGeometryCoordinates = IPointCoordinates | IPolygonCoordinates | IMultiPolygonCoordinates | ILineStringCoordinates | IMultiLineStringCoordinates;
15
- interface IGeometry {
16
- type: string;
17
- coordinates: IGeometryCoordinates;
21
+ export type GeometryTypeToCoordinates = {
22
+ POINT: IPointCoordinates;
23
+ LINESTRING: ILineStringCoordinates;
24
+ POLYGON: IPolygonCoordinates;
25
+ MULTIPOLYGON: IMultiPolygonCoordinates;
26
+ MULTILINESTRING: IMultiLineStringCoordinates;
27
+ };
28
+ interface IGeometry<T extends keyof typeof GeometryTypeEnum = keyof typeof GeometryTypeEnum> {
29
+ type: T;
30
+ coordinates: GeometryTypeToCoordinates[T];
18
31
  }
19
- interface IGeometryStyle {
32
+ export interface IGeometryStyle {
20
33
  fillColor?: string | NumberArray4 | Vec4;
21
34
  lineColor?: string | NumberArray4 | Vec4;
22
35
  strokeColor?: string | NumberArray4 | Vec4;
@@ -30,9 +43,9 @@ interface IGeometryStyleInternal {
30
43
  lineWidth: number;
31
44
  strokeWidth: number;
32
45
  }
33
- export interface IGeometryParams {
34
- type?: string;
35
- coordinates?: IGeometryCoordinates;
46
+ export interface IGeometryParams<T extends keyof typeof GeometryTypeEnum = keyof typeof GeometryTypeEnum> {
47
+ type?: T;
48
+ coordinates?: GeometryTypeToCoordinates[T];
36
49
  style?: IGeometryStyle;
37
50
  visibility?: boolean;
38
51
  }
@@ -65,7 +78,7 @@ declare class Geometry {
65
78
  _lineIndexesHandlerIndex: number;
66
79
  _lineThicknessHandlerIndex: number;
67
80
  _lineColorsHandlerIndex: number;
68
- protected _type: number;
81
+ protected _type: GeometryTypeEnum;
69
82
  _coordinates: IGeometryCoordinates;
70
83
  protected _extent: Extent;
71
84
  _style: IGeometryStyleInternal;
@@ -74,7 +87,7 @@ declare class Geometry {
74
87
  constructor(options?: IGeometryParams);
75
88
  get id(): number;
76
89
  get type(): number;
77
- static getType(typeStr: string): number;
90
+ static getType(typeStr: keyof typeof GeometryTypeEnum): GeometryTypeEnum;
78
91
  /**
79
92
  * Returns geometry extent.
80
93
  @static
@@ -108,4 +121,4 @@ declare class Geometry {
108
121
  getExtent(): Extent;
109
122
  getType(): number;
110
123
  }
111
- export { Geometry, GeometryType };
124
+ export { Geometry };