@pirireis/webglobeplugins 0.16.0 → 0.16.1

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 (480) hide show
  1. package/Math/angle-calculation.js +13 -14
  2. package/Math/bounds/line-bbox.js +186 -225
  3. package/Math/index.js +1 -0
  4. package/Math/mesh/mapbox-delaunay.js +544 -607
  5. package/Math/utils.js +2 -3
  6. package/algorithms/search-binary.js +16 -14
  7. package/altitude-locator/adaptors.js +1 -0
  8. package/altitude-locator/keymethod.js +1 -0
  9. package/altitude-locator/plugin.js +345 -446
  10. package/altitude-locator/types.js +21 -26
  11. package/arrowfield/adaptor.js +11 -11
  12. package/arrowfield/index.js +3 -3
  13. package/arrowfield/plugin.js +83 -128
  14. package/bearing-line/index.js +2 -2
  15. package/bearing-line/plugin.js +444 -520
  16. package/circle-line-chain/chain-list-map.js +201 -221
  17. package/circle-line-chain/init.js +1 -0
  18. package/circle-line-chain/plugin.js +411 -464
  19. package/circle-line-chain/util.js +1 -1
  20. package/compass-rose/compass-rose-padding-flat.js +230 -274
  21. package/compass-rose/compass-text-writer.js +149 -173
  22. package/compass-rose/index.js +3 -3
  23. package/compassrose/compassrose.js +293 -341
  24. package/compassrose/index.js +2 -2
  25. package/constants.js +3 -0
  26. package/heatwave/index.js +3 -4
  27. package/heatwave/isobar/objectarraylabels.js +200 -247
  28. package/heatwave/isobar/plugin.js +302 -339
  29. package/heatwave/isobar/quadtreecontours.js +298 -336
  30. package/heatwave/plugins/heatwaveglobeshell.js +204 -259
  31. package/index.js +12 -15
  32. package/jest.config.js +7 -6
  33. package/package.json +1 -4
  34. package/partialrings/buffer-manager.js +75 -89
  35. package/partialrings/index.js +2 -3
  36. package/partialrings/plugin.js +128 -160
  37. package/partialrings/program.js +188 -233
  38. package/pin/pin-object-array.js +300 -381
  39. package/pin/pin-point-totem.js +60 -77
  40. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  41. package/point-heat-map/index.js +1 -0
  42. package/point-heat-map/plugin-webworker.js +121 -148
  43. package/point-heat-map/point-to-heat-map-flow.js +124 -150
  44. package/point-tracks/key-methods.js +2 -3
  45. package/point-tracks/plugin.js +393 -480
  46. package/programs/arrowfield/index.js +2 -2
  47. package/programs/arrowfield/logic.js +141 -173
  48. package/programs/arrowfield/object.js +60 -89
  49. package/programs/data2legend/density-to-legend.js +73 -90
  50. package/programs/data2legend/point-to-density-texture.js +70 -87
  51. package/programs/float2legendwithratio/index.js +2 -3
  52. package/programs/float2legendwithratio/logic.js +118 -144
  53. package/programs/float2legendwithratio/object.js +104 -141
  54. package/programs/globe-util/is-globe-moved.js +19 -27
  55. package/programs/globeshell/index.js +2 -2
  56. package/programs/globeshell/wiggle/index.js +2 -3
  57. package/programs/globeshell/wiggle/logic.js +243 -272
  58. package/programs/globeshell/wiggle/object.js +66 -93
  59. package/programs/helpers/blender/index.js +1 -0
  60. package/programs/helpers/blender/program.js +58 -73
  61. package/programs/helpers/fadeaway/index.js +2 -3
  62. package/programs/helpers/fadeaway/logic.js +46 -53
  63. package/programs/helpers/fadeaway/object.js +14 -20
  64. package/programs/helpers/index.js +2 -2
  65. package/programs/index.js +9 -21
  66. package/programs/line-on-globe/circle-accurate-3d.js +87 -115
  67. package/programs/line-on-globe/circle-accurate-flat.js +149 -201
  68. package/programs/line-on-globe/degree-padding-around-circle-3d.js +104 -136
  69. package/programs/line-on-globe/index.js +1 -0
  70. package/programs/line-on-globe/lines-color-instanced-flat.js +83 -102
  71. package/programs/line-on-globe/util.js +5 -8
  72. package/programs/picking/pickable-polygon-renderer.js +98 -129
  73. package/programs/picking/pickable-renderer.js +98 -129
  74. package/programs/point-on-globe/element-globe-surface-glow.js +93 -122
  75. package/programs/point-on-globe/element-point-glow.js +80 -114
  76. package/programs/point-on-globe/square-pixel-point.js +120 -138
  77. package/programs/rings/distancering/circleflatprogram.js +116 -138
  78. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +275 -323
  79. package/programs/rings/distancering/circlepaddysharedbuffer.js +368 -423
  80. package/programs/rings/distancering/index.js +6 -5
  81. package/programs/rings/distancering/paddyflatprogram.js +127 -148
  82. package/programs/rings/distancering/paddyflatprogram2d.js +129 -153
  83. package/programs/rings/distancering/paddyflatprogram3d.js +128 -149
  84. package/programs/rings/index.js +1 -1
  85. package/{dist/programs → programs}/totems/camerauniformblock.js +10 -3
  86. package/programs/totems/gpu-selection-uniform-block.js +99 -127
  87. package/programs/two-d/pixel-circle.js +1 -0
  88. package/programs/two-d/pixel-padding-for-compass.js +97 -112
  89. package/programs/util.js +14 -19
  90. package/programs/vectorfields/index.js +3 -3
  91. package/programs/vectorfields/logics/drawrectangleparticles.js +58 -78
  92. package/programs/vectorfields/logics/index.js +2 -4
  93. package/programs/vectorfields/logics/pixelbased.js +73 -92
  94. package/programs/vectorfields/logics/ubo.js +51 -57
  95. package/programs/vectorfields/pingpongbuffermanager.js +73 -80
  96. package/rangerings/index.js +5 -5
  97. package/rangerings/plugin.js +543 -644
  98. package/rangerings/rangeringangletext.js +326 -369
  99. package/rangerings/ring-account.js +112 -129
  100. package/shaders/fragment-toy/firework.js +1 -1
  101. package/shaders/fragment-toy/singularity.js +2 -5
  102. package/timetracks/adaptors-line-strip.js +65 -80
  103. package/timetracks/index.js +1 -0
  104. package/timetracks/plugin-line-strip.js +240 -295
  105. package/timetracks/program-line-strip.js +411 -491
  106. package/timetracks/programpoint-line-strip.js +98 -122
  107. package/util/account/bufferoffsetmanager.js +176 -209
  108. package/util/account/index.js +3 -6
  109. package/util/account/util.js +18 -22
  110. package/util/algorithms/index.js +1 -0
  111. package/util/algorithms/search-binary.js +25 -26
  112. package/util/check/index.js +1 -0
  113. package/util/geometry/index.js +121 -0
  114. package/util/gl-util/uniform-block/shader.js +1 -0
  115. package/util/heatwavedatamanager/datamanager.js +149 -168
  116. package/util/heatwavedatamanager/index.js +2 -2
  117. package/util/index.js +13 -13
  118. package/util/interpolation/index.js +1 -0
  119. package/util/interpolation/timetrack/index.js +2 -9
  120. package/util/interpolation/timetrack/timetrack-interpolator.js +79 -94
  121. package/util/interpolation/timetrack/web-worker.js +46 -51
  122. package/util/jshelpers/data-filler.js +17 -19
  123. package/util/jshelpers/equality.js +18 -17
  124. package/util/jshelpers/index.js +2 -1
  125. package/util/jshelpers/timefilters.js +30 -32
  126. package/util/picking/fence.js +43 -46
  127. package/util/picking/picker-displayer.js +136 -177
  128. package/util/programs/draw-texture-on-canvas.js +66 -82
  129. package/util/programs/index.js +1 -1
  130. package/util/programs/shapesonglobe.js +167 -203
  131. package/util/programs/supersampletotextures.js +99 -132
  132. package/util/programs/texturetoglobe.js +128 -152
  133. package/util/shaderfunctions/index.js +2 -2
  134. package/util/shaderfunctions/nodata.js +2 -4
  135. package/util/shaderfunctions/noisefunctions.js +7 -10
  136. package/util/surface-line-data/arcs-to-cuts.js +50 -74
  137. package/util/surface-line-data/cut-arc.js +1 -0
  138. package/util/surface-line-data/rbush-manager.js +1 -0
  139. package/util/surface-line-data/web-worker.js +1 -0
  140. package/util/webglobe/gldefaultstates.js +4 -5
  141. package/util/webglobe/index.js +2 -2
  142. package/util/webglobe/rasteroverlay.js +75 -96
  143. package/waveparticles/adaptor.js +15 -16
  144. package/waveparticles/index.js +3 -3
  145. package/waveparticles/plugin.js +290 -342
  146. package/wind/imagetovectorfieldandmagnitude.js +56 -71
  147. package/wind/index.js +5 -5
  148. package/wind/plugin.js +670 -845
  149. package/wind/vectorfieldimage.js +23 -27
  150. package/write-text/attached-text-writer.js +87 -105
  151. package/{dist/write-text → write-text}/context-text-bulk.js +28 -15
  152. package/write-text/context-text.js +94 -125
  153. package/write-text/context-text3old.js +152 -179
  154. package/write-text/index.js +1 -1
  155. package/write-text/writer-plugin.js +8 -7
  156. package/Math/arc-cdf-points.ts +0 -329
  157. package/Math/arc-generate-points-exponantial.ts +0 -299
  158. package/Math/arc.ts +0 -299
  159. package/Math/circle-cdf-points.ts +0 -143
  160. package/Math/circle.ts +0 -49
  161. package/Math/constants.ts +0 -12
  162. package/Math/juction/arc-plane.ts +0 -129
  163. package/Math/juction/line-sphere.ts +0 -30
  164. package/Math/juction/plane-plane.ts +0 -64
  165. package/Math/line.ts +0 -84
  166. package/Math/matrix4.ts +0 -0
  167. package/Math/methods.ts +0 -157
  168. package/Math/plane.ts +0 -92
  169. package/Math/quaternion.ts +0 -128
  170. package/Math/roadmap.md +0 -10
  171. package/Math/templete-shapes/grid-visually-equal.ts +0 -119
  172. package/Math/types.ts +0 -66
  173. package/Math/vec3.ts +0 -180
  174. package/circle-line-chain/readme.md +0 -57
  175. package/depth-locator/readme.md +0 -26
  176. package/dist/Math/angle-calculation.js +0 -13
  177. package/dist/Math/bounds/line-bbox.js +0 -186
  178. package/dist/Math/index.js +0 -1
  179. package/dist/Math/mesh/mapbox-delaunay.js +0 -544
  180. package/dist/Math/utils.js +0 -2
  181. package/dist/algorithms/search-binary.js +0 -16
  182. package/dist/altitude-locator/adaptors.js +0 -1
  183. package/dist/altitude-locator/keymethod.js +0 -1
  184. package/dist/altitude-locator/plugin.js +0 -345
  185. package/dist/altitude-locator/types.js +0 -21
  186. package/dist/arrowfield/adaptor.js +0 -11
  187. package/dist/arrowfield/index.js +0 -3
  188. package/dist/arrowfield/plugin.js +0 -83
  189. package/dist/bearing-line/index.js +0 -2
  190. package/dist/bearing-line/plugin.js +0 -444
  191. package/dist/circle-line-chain/chain-list-map.js +0 -201
  192. package/dist/circle-line-chain/init.js +0 -1
  193. package/dist/circle-line-chain/plugin.js +0 -411
  194. package/dist/circle-line-chain/util.js +0 -1
  195. package/dist/compass-rose/compass-rose-padding-flat.js +0 -230
  196. package/dist/compass-rose/compass-text-writer.js +0 -149
  197. package/dist/compass-rose/index.js +0 -3
  198. package/dist/compassrose/compassrose.js +0 -293
  199. package/dist/compassrose/index.js +0 -2
  200. package/dist/heatwave/index.js +0 -3
  201. package/dist/heatwave/isobar/objectarraylabels.js +0 -200
  202. package/dist/heatwave/isobar/plugin.js +0 -302
  203. package/dist/heatwave/isobar/quadtreecontours.js +0 -298
  204. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -204
  205. package/dist/index.js +0 -12
  206. package/dist/jest.config.js +0 -7
  207. package/dist/partialrings/buffer-manager.js +0 -75
  208. package/dist/partialrings/index.js +0 -2
  209. package/dist/partialrings/plugin.js +0 -128
  210. package/dist/partialrings/program.js +0 -279
  211. package/dist/pin/pin-object-array.js +0 -300
  212. package/dist/pin/pin-point-totem.js +0 -60
  213. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -63
  214. package/dist/point-heat-map/index.js +0 -1
  215. package/dist/point-heat-map/plugin-webworker.js +0 -121
  216. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -124
  217. package/dist/point-tracks/key-methods.js +0 -2
  218. package/dist/point-tracks/plugin.js +0 -393
  219. package/dist/programs/arrowfield/index.js +0 -2
  220. package/dist/programs/arrowfield/logic.js +0 -254
  221. package/dist/programs/arrowfield/object.js +0 -60
  222. package/dist/programs/data2legend/density-to-legend.js +0 -98
  223. package/dist/programs/data2legend/point-to-density-texture.js +0 -97
  224. package/dist/programs/float2legendwithratio/index.js +0 -2
  225. package/dist/programs/float2legendwithratio/logic.js +0 -167
  226. package/dist/programs/float2legendwithratio/object.js +0 -104
  227. package/dist/programs/globe-util/is-globe-moved.js +0 -19
  228. package/dist/programs/globeshell/index.js +0 -2
  229. package/dist/programs/globeshell/wiggle/index.js +0 -2
  230. package/dist/programs/globeshell/wiggle/logic.js +0 -342
  231. package/dist/programs/globeshell/wiggle/object.js +0 -66
  232. package/dist/programs/helpers/blender/index.js +0 -1
  233. package/dist/programs/helpers/blender/program.js +0 -76
  234. package/dist/programs/helpers/fadeaway/index.js +0 -2
  235. package/dist/programs/helpers/fadeaway/logic.js +0 -69
  236. package/dist/programs/helpers/fadeaway/object.js +0 -14
  237. package/dist/programs/helpers/index.js +0 -2
  238. package/dist/programs/index.js +0 -9
  239. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -138
  240. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -210
  241. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -156
  242. package/dist/programs/line-on-globe/index.js +0 -1
  243. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -131
  244. package/dist/programs/line-on-globe/util.js +0 -5
  245. package/dist/programs/picking/pickable-polygon-renderer.js +0 -184
  246. package/dist/programs/picking/pickable-renderer.js +0 -184
  247. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -138
  248. package/dist/programs/point-on-globe/element-point-glow.js +0 -150
  249. package/dist/programs/point-on-globe/square-pixel-point.js +0 -171
  250. package/dist/programs/rings/distancering/circleflatprogram.js +0 -116
  251. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -326
  252. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -368
  253. package/dist/programs/rings/distancering/index.js +0 -6
  254. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -127
  255. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -129
  256. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -128
  257. package/dist/programs/rings/index.js +0 -1
  258. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -104
  259. package/dist/programs/two-d/pixel-circle.js +0 -1
  260. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -159
  261. package/dist/programs/util.js +0 -14
  262. package/dist/programs/vectorfields/index.js +0 -3
  263. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -113
  264. package/dist/programs/vectorfields/logics/index.js +0 -2
  265. package/dist/programs/vectorfields/logics/pixelbased.js +0 -140
  266. package/dist/programs/vectorfields/logics/ubo.js +0 -60
  267. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -73
  268. package/dist/rangerings/index.js +0 -5
  269. package/dist/rangerings/plugin.js +0 -543
  270. package/dist/rangerings/rangeringangletext.js +0 -326
  271. package/dist/rangerings/ring-account.js +0 -112
  272. package/dist/shaders/fragment-toy/firework.js +0 -55
  273. package/dist/shaders/fragment-toy/singularity.js +0 -56
  274. package/dist/timetracks/adaptors-line-strip.js +0 -65
  275. package/dist/timetracks/index.js +0 -1
  276. package/dist/timetracks/plugin-line-strip.js +0 -240
  277. package/dist/timetracks/program-line-strip.js +0 -608
  278. package/dist/timetracks/programpoint-line-strip.js +0 -151
  279. package/dist/util/account/bufferoffsetmanager.js +0 -176
  280. package/dist/util/account/index.js +0 -3
  281. package/dist/util/account/util.js +0 -18
  282. package/dist/util/algorithms/index.js +0 -1
  283. package/dist/util/algorithms/search-binary.js +0 -25
  284. package/dist/util/check/index.js +0 -1
  285. package/dist/util/geometry/index.js +0 -47
  286. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  287. package/dist/util/heatwavedatamanager/datamanager.js +0 -149
  288. package/dist/util/heatwavedatamanager/index.js +0 -2
  289. package/dist/util/index.js +0 -13
  290. package/dist/util/interpolation/index.js +0 -1
  291. package/dist/util/interpolation/timetrack/index.js +0 -2
  292. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  293. package/dist/util/interpolation/timetrack/web-worker.js +0 -46
  294. package/dist/util/jshelpers/data-filler.js +0 -17
  295. package/dist/util/jshelpers/equality.js +0 -18
  296. package/dist/util/jshelpers/index.js +0 -2
  297. package/dist/util/jshelpers/timefilters.js +0 -30
  298. package/dist/util/picking/fence.js +0 -43
  299. package/dist/util/picking/picker-displayer.js +0 -136
  300. package/dist/util/programs/draw-texture-on-canvas.js +0 -86
  301. package/dist/util/programs/index.js +0 -1
  302. package/dist/util/programs/shapesonglobe.js +0 -210
  303. package/dist/util/programs/supersampletotextures.js +0 -109
  304. package/dist/util/programs/texturetoglobe.js +0 -179
  305. package/dist/util/shaderfunctions/index.js +0 -2
  306. package/dist/util/shaderfunctions/nodata.js +0 -8
  307. package/dist/util/shaderfunctions/noisefunctions.js +0 -41
  308. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  309. package/dist/util/surface-line-data/cut-arc.js +0 -1
  310. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  311. package/dist/util/surface-line-data/web-worker.js +0 -1
  312. package/dist/util/webglobe/gldefaultstates.js +0 -4
  313. package/dist/util/webglobe/index.js +0 -2
  314. package/dist/util/webglobe/rasteroverlay.js +0 -75
  315. package/dist/waveparticles/adaptor.js +0 -15
  316. package/dist/waveparticles/index.js +0 -3
  317. package/dist/waveparticles/plugin.js +0 -290
  318. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -56
  319. package/dist/wind/index.js +0 -5
  320. package/dist/wind/plugin.js +0 -921
  321. package/dist/wind/vectorfieldimage.js +0 -23
  322. package/dist/write-text/attached-text-writer.js +0 -87
  323. package/dist/write-text/context-text.js +0 -94
  324. package/dist/write-text/context-text3old.js +0 -152
  325. package/dist/write-text/index.js +0 -1
  326. package/dist/write-text/writer-plugin.js +0 -8
  327. package/partialrings/goals.md +0 -17
  328. package/point-heat-map/readme.md +0 -15
  329. package/programs/line-on-globe/linestrip/data.ts +0 -29
  330. package/programs/line-on-globe/linestrip/linestrip.ts +0 -201
  331. package/programs/line-on-globe/naive-accurate-flexible.ts +0 -258
  332. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.ts +0 -120
  333. package/programs/polygon-on-globe/texture-dem-triangles.ts +0 -207
  334. package/programs/programcache.ts +0 -131
  335. package/programs/rings/partial-ring/piece-of-pie.ts +0 -323
  336. package/programs/totems/camerauniformblock.ts +0 -310
  337. package/programs/totems/canvas-webglobe-info.ts +0 -156
  338. package/programs/totems/globe-changes.ts +0 -79
  339. package/programs/totems/index.ts +0 -2
  340. package/programs/vectorfields/logics/constants.ts +0 -5
  341. package/programs/vectorfields/logics/ubo-new.ts +0 -37
  342. package/publish.bat +0 -62
  343. package/range-tools-on-terrain/bearing-line/adapters.ts +0 -154
  344. package/range-tools-on-terrain/bearing-line/plugin.ts +0 -569
  345. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  346. package/range-tools-on-terrain/circle-line-chain/adapters.ts +0 -109
  347. package/range-tools-on-terrain/circle-line-chain/chain-list-map.ts +0 -446
  348. package/range-tools-on-terrain/circle-line-chain/plugin.ts +0 -607
  349. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  350. package/range-tools-on-terrain/range-ring/adapters.ts +0 -114
  351. package/range-tools-on-terrain/range-ring/enum.ts +0 -2
  352. package/range-tools-on-terrain/range-ring/plugin.ts +0 -447
  353. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  354. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  355. package/rangerings/enum.ts +0 -2
  356. package/semiplugins/interface.ts +0 -14
  357. package/semiplugins/lightweight/line-plugin.ts +0 -343
  358. package/semiplugins/lightweight/piece-of-pie-plugin.ts +0 -275
  359. package/semiplugins/shape-on-terrain/arc-plugin.ts +0 -602
  360. package/semiplugins/shape-on-terrain/circle-plugin.ts +0 -588
  361. package/semiplugins/shape-on-terrain/goal.md +0 -12
  362. package/semiplugins/shape-on-terrain/padding-1-degree.ts +0 -714
  363. package/semiplugins/shape-on-terrain/terrain-cover/notes.md +0 -90
  364. package/semiplugins/shape-on-terrain/terrain-cover/texture-dem-cover.ts +0 -0
  365. package/semiplugins/type.ts +0 -8
  366. package/tests/Math/arc-sampling-test.js +0 -367
  367. package/tests/Math/arc-sampling-test.ts +0 -429
  368. package/tests/Math/arc.test.ts +0 -102
  369. package/tests/Math/junction/arc-plane.test.ts +0 -163
  370. package/tests/Math/junction/plane-plane.test.ts +0 -91
  371. package/tests/Math/plane-test.ts +0 -17
  372. package/tests/Math/plane.test.ts +0 -43
  373. package/tests/Math/vec3.test.ts +0 -14
  374. package/timetracks/readme.md +0 -1
  375. package/tsconfig.json +0 -22
  376. package/types.ts +0 -265
  377. package/util/account/create-buffermap-orchastration.ts +0 -85
  378. package/util/account/single-attribute-buffer-management/buffer-manager.ts +0 -149
  379. package/util/account/single-attribute-buffer-management/buffer-orchestrator.ts +0 -332
  380. package/util/account/single-attribute-buffer-management/buffer-orchestrator1.ts +0 -184
  381. package/util/account/single-attribute-buffer-management/index.ts +0 -11
  382. package/util/account/single-attribute-buffer-management/object-store.ts +0 -76
  383. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  384. package/util/build-strategy/general-strategy.ts +0 -99
  385. package/util/build-strategy/static-dynamic.ts +0 -50
  386. package/util/check/typecheck.ts +0 -74
  387. package/util/frame-counter-trigger.ts +0 -99
  388. package/util/geometry/index.ts +0 -64
  389. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  390. package/util/gl-util/buffer/index.ts +0 -6
  391. package/util/gl-util/draw-options/methods.ts +0 -47
  392. package/util/gl-util/uniform-block/manager.ts +0 -210
  393. package/util/gl-util/uniform-block/roadmap.md +0 -70
  394. package/util/gl-util/uniform-block/types.ts +0 -20
  395. package/util/heatwavedatamanager/pointcoordsmeta.ts +0 -28
  396. package/util/heatwavedatamanager/texture-point-sampler.ts +0 -198
  397. package/util/shaderfunctions/geometrytransformations.ts +0 -388
  398. package/util/surface-line-data/arc-bboxes.ts +0 -42
  399. package/util/surface-line-data/flow.ts +0 -52
  400. package/util/surface-line-data/types.ts +0 -27
  401. package/util/webglobjectbuilders.ts +0 -446
  402. package/write-text/context-text-bulk.ts +0 -268
  403. package/write-text/context-text3.ts +0 -253
  404. package/write-text/context-text4.ts +0 -243
  405. /package/{dist/Math → Math}/arc-cdf-points.js +0 -0
  406. /package/{dist/Math → Math}/arc-generate-points-exponantial.js +0 -0
  407. /package/{dist/Math → Math}/arc.js +0 -0
  408. /package/{dist/Math → Math}/circle-cdf-points.js +0 -0
  409. /package/{dist/Math → Math}/circle.js +0 -0
  410. /package/{dist/Math → Math}/constants.js +0 -0
  411. /package/{dist/Math → Math}/juction/arc-plane.js +0 -0
  412. /package/{dist/Math → Math}/juction/line-sphere.js +0 -0
  413. /package/{dist/Math → Math}/juction/plane-plane.js +0 -0
  414. /package/{dist/Math → Math}/line.js +0 -0
  415. /package/{dist/Math → Math}/matrix4.js +0 -0
  416. /package/{dist/Math → Math}/methods.js +0 -0
  417. /package/{dist/Math → Math}/plane.js +0 -0
  418. /package/{dist/Math → Math}/quaternion.js +0 -0
  419. /package/{dist/Math → Math}/templete-shapes/grid-visually-equal.js +0 -0
  420. /package/{dist/Math → Math}/types.js +0 -0
  421. /package/{dist/Math → Math}/vec3.js +0 -0
  422. /package/{dist/programs → programs}/line-on-globe/linestrip/data.js +0 -0
  423. /package/{dist/programs → programs}/line-on-globe/linestrip/linestrip.js +0 -0
  424. /package/{dist/programs → programs}/line-on-globe/naive-accurate-flexible.js +0 -0
  425. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -0
  426. /package/{dist/programs → programs}/polygon-on-globe/texture-dem-triangles.js +0 -0
  427. /package/{dist/programs → programs}/programcache.js +0 -0
  428. /package/{dist/programs → programs}/rings/partial-ring/piece-of-pie.js +0 -0
  429. /package/{dist/programs → programs}/totems/canvas-webglobe-info.js +0 -0
  430. /package/{dist/programs → programs}/totems/globe-changes.js +0 -0
  431. /package/{dist/programs → programs}/totems/index.js +0 -0
  432. /package/{dist/programs → programs}/vectorfields/logics/constants.js +0 -0
  433. /package/{dist/programs → programs}/vectorfields/logics/ubo-new.js +0 -0
  434. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/adapters.js +0 -0
  435. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/plugin.js +0 -0
  436. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/bearing-line/types.js +0 -0
  437. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/adapters.js +0 -0
  438. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/chain-list-map.js +0 -0
  439. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/plugin.js +0 -0
  440. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/circle-line-chain/types.js +0 -0
  441. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/adapters.js +0 -0
  442. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/enum.js +0 -0
  443. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/plugin.js +0 -0
  444. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/rangeringangletext.js +0 -0
  445. /package/{dist/range-tools-on-terrain → range-tools-on-terrain}/range-ring/types.js +0 -0
  446. /package/{dist/rangerings → rangerings}/enum.js +0 -0
  447. /package/{dist/semiplugins → semiplugins}/interface.js +0 -0
  448. /package/{dist/semiplugins → semiplugins}/lightweight/line-plugin.js +0 -0
  449. /package/{dist/semiplugins → semiplugins}/lightweight/piece-of-pie-plugin.js +0 -0
  450. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/arc-plugin.js +0 -0
  451. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/circle-plugin.js +0 -0
  452. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/padding-1-degree.js +0 -0
  453. /package/{dist/semiplugins → semiplugins}/shape-on-terrain/terrain-cover/texture-dem-cover.js +0 -0
  454. /package/{dist/semiplugins → semiplugins}/type.js +0 -0
  455. /package/{dist/types.js → types.js} +0 -0
  456. /package/{dist/util → util}/account/create-buffermap-orchastration.js +0 -0
  457. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-manager.js +0 -0
  458. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -0
  459. /package/{dist/util → util}/account/single-attribute-buffer-management/buffer-orchestrator1.js +0 -0
  460. /package/{dist/util → util}/account/single-attribute-buffer-management/index.js +0 -0
  461. /package/{dist/util → util}/account/single-attribute-buffer-management/object-store.js +0 -0
  462. /package/{dist/util → util}/account/single-attribute-buffer-management/types.js +0 -0
  463. /package/{dist/util → util}/build-strategy/general-strategy.js +0 -0
  464. /package/{dist/util → util}/build-strategy/static-dynamic.js +0 -0
  465. /package/{dist/util → util}/check/typecheck.js +0 -0
  466. /package/{dist/util → util}/frame-counter-trigger.js +0 -0
  467. /package/{dist/util → util}/gl-util/buffer/attribute-loader.js +0 -0
  468. /package/{dist/util → util}/gl-util/buffer/index.js +0 -0
  469. /package/{dist/util → util}/gl-util/draw-options/methods.js +0 -0
  470. /package/{dist/util → util}/gl-util/uniform-block/manager.js +0 -0
  471. /package/{dist/util → util}/gl-util/uniform-block/types.js +0 -0
  472. /package/{dist/util → util}/heatwavedatamanager/pointcoordsmeta.js +0 -0
  473. /package/{dist/util → util}/heatwavedatamanager/texture-point-sampler.js +0 -0
  474. /package/{dist/util → util}/shaderfunctions/geometrytransformations.js +0 -0
  475. /package/{dist/util → util}/surface-line-data/arc-bboxes.js +0 -0
  476. /package/{dist/util → util}/surface-line-data/flow.js +0 -0
  477. /package/{dist/util → util}/surface-line-data/types.js +0 -0
  478. /package/{dist/util → util}/webglobjectbuilders.js +0 -0
  479. /package/{dist/write-text → write-text}/context-text3.js +0 -0
  480. /package/{dist/write-text → write-text}/context-text4.js +0 -0
@@ -1,602 +0,0 @@
1
- import { SemiPluginInterface, } from "../interface";
2
- import { Vec3, LongLat, Arc } from "../../Math/types";
3
- import { Globe, Meter, UBOHandler, PluginInterface, Color, Radians, BUFFER_TYPE, ElevationMode, GlobeChanges, UpdateColor } from "../../types";
4
- // import { ArcOnTerrainPluginOptions } from "./type";
5
- import { LineStripProgramCache, LineProgram } from "../../programs/line-on-globe/linestrip/linestrip";
6
- import { createBufferAndReadInfo } from "../../util/gl-util/buffer/attribute-loader";
7
- // import { populateFloat32Array } from "../../util/jshelpers/data-filler";
8
- import { BufferManagersMap, BufferManager, BufferOrchestrator } from "../../util/account/single-attribute-buffer-management/index";
9
- import { globe3Dcoordinates, globe2Dcoordinates, RADIANS } from "../../Math/methods";
10
- import { generateArcPoints, evenlySpacedArcPoints } from "../../Math/arc-cdf-points";
11
- import { StaticDynamicState, StaticDynamicStrategy } from "../../util/build-strategy/static-dynamic";
12
- import { opacityCheck } from "../../util/check/typecheck";
13
- import { FrameCounterTrigger } from "../../util/frame-counter-trigger";
14
- import * as vec3 from "../../Math/vec3";
15
-
16
- import * as arc from "../../Math/arc";
17
-
18
- import { CameraUniformBlockTotem, CameraUniformBlockTotemCache } from "../../programs/totems/camerauniformblock";
19
- import { WORLD_RADIUS_3D } from "../../Math/constants";
20
-
21
-
22
- const DYNAMIC_STRATEGY_START_LOD = 12;
23
-
24
- const INITAL_CAPACITY = 10;
25
- const _attractionPoint = [0, 0, 0] as Vec3;
26
- const _start = [0, 0, 0] as Vec3;
27
- const _end = [0, 0, 0] as Vec3;
28
- const _0arc = arc.create([1, 0, 0] as Vec3, [0, 1, 0] as Vec3); // zero arc for intersection tests
29
-
30
-
31
- export type ArcOnTerrainPluginOptions = {
32
- variativeColorsOn: boolean; // If true, arcs can have variative colors
33
- defaultColor: Color; // Default color in RGBA format
34
- defaultHeightFromGroundIn3D: Meter; // Default height from ground in 3D view
35
- flatViewOn: boolean; // If true, arcs are drawn in 2D flat view
36
- globeViewOn: boolean; // If true, arcs are drawn in 3D globe view
37
- // variativeColorsOn: boolean; // If true, arcs can have variative colors
38
- // defaultColor: [number, number, number, number]; // Default color in RGBA format
39
- // defaultHeightFromGroundIn3D: number; // Default height from ground in 3D view
40
- vertexCount: number; // Number of vertices per arc,
41
- cameraAttractionIsOn: boolean; // If true, camera attraction is enabled else evenly distributed arc points are used
42
- bufferType?: BUFFER_TYPE; // Buffer type for WebGL
43
- isMSL: boolean; // If true, the arc is drawn in MSL (Mean Sea Level) mode
44
- };
45
-
46
-
47
- export type ArcInput = {
48
- key: string,
49
- start: LongLat,
50
- end: LongLat,
51
- color: Color, // 0-1
52
- height?: Meter | null // height from ground in 3D view, null for default
53
- msl?: boolean | null
54
- }
55
-
56
-
57
- function createArc(start: LongLat, end: LongLat): Arc {
58
- vec3.fromLongLatToUnitVector(_start, [start[0] * RADIANS, start[1] * RADIANS]);
59
- vec3.fromLongLatToUnitVector(_end, [end[0] * RADIANS, end[1] * RADIANS]);
60
- return arc.create(_start, _end);
61
- }
62
- export class ArcOnTerrainPlugin implements PluginInterface, SemiPluginInterface, ElevationMode, UpdateColor {
63
- public id: string;
64
- private program: LineProgram | null = null;
65
- private bufferManagersMap: BufferManagersMap | null = null;
66
- private bufferOrchestrator: BufferOrchestrator = new BufferOrchestrator({ capacity: INITAL_CAPACITY });
67
- private _opacity: number = 1;
68
- private _arcUBOHandler: UBOHandler | null = null;
69
- private _vao: WebGLVertexArrayObject | null = null;
70
- private globe: any | null = null;
71
- private gl: WebGL2RenderingContext | null = null;
72
- private _arcMap: Map<string, [Arc, ArcInput]>;
73
- private _cameraUniformBlock: CameraUniformBlockTotem | null = null;
74
- private _staticDynamicStrategy: StaticDynamicStrategy | null = null;
75
- private _options: ArcOnTerrainPluginOptions;
76
- private _coordinaateBufferKeysForUpdate: string[] = [];
77
- private _freed: boolean = false;
78
- private _frameCounterTrigger: FrameCounterTrigger | null = null;
79
- constructor(id: string, {
80
- globeViewOn = true, // If true, arcs are drawn in 3D globe view
81
- flatViewOn = true, // If true, arcs are drawn in 2D flat view
82
- variativeColorsOn = false,
83
- defaultColor = [0.1, 0.1, 1, 1], // Default color in RGBA format
84
- defaultHeightFromGroundIn3D = 30.0, // Default height from ground in
85
- vertexCount = 70, // Number of vertices per arc
86
- cameraAttractionIsOn = true, // If true, camera attraction is enabled else evenly distributed arc points are used
87
- bufferType = "STREAM_DRAW",
88
- isMSL = false
89
- }: Partial<ArcOnTerrainPluginOptions> = {}) {
90
- this.id = id;
91
- this._arcMap = new Map();
92
- this._options = {
93
- globeViewOn: globeViewOn ? true : false,
94
- flatViewOn: flatViewOn ? true : false,
95
- variativeColorsOn: variativeColorsOn ? true : false,
96
- defaultColor: defaultColor ? defaultColor : [0.1, 0.1, 1, 1],
97
- defaultHeightFromGroundIn3D: defaultHeightFromGroundIn3D ? defaultHeightFromGroundIn3D : 30.0,
98
- vertexCount: vertexCount ? vertexCount : 70,
99
- cameraAttractionIsOn: cameraAttractionIsOn ? true : false,
100
- bufferType: bufferType ? bufferType : "STREAM_DRAW",
101
- isMSL: isMSL ? true : false
102
- };
103
-
104
- }
105
-
106
- increaseSpace(amount: number): void {
107
- if (this._freed) {
108
- console.warn("Plugin is freed, cannot increase space");
109
- return;
110
- }
111
- if (this.globe === null) {
112
- console.warn("Globe is not initialized.");
113
- return;
114
- }
115
- if (typeof amount !== "number" || amount <= 0) {
116
- console.warn("Invalid amount, must be a positive number");
117
- return;
118
- }
119
- this.bufferOrchestrator.ensureSpace(amount, this.bufferManagersMap!);
120
- }
121
-
122
- insertBulk(arcs: ArcInput[]) {
123
- const keys = [];
124
- let newItemCount = 0;
125
- for (let arcInput of arcs) {
126
- const { key, start, end } = arcInput;
127
- if (this._arcMap.has(key)) {
128
- this._arcMap.delete(key); // Remove old arc
129
- } else {
130
- newItemCount++;
131
- }
132
- const _arc = createArc(start, end);
133
- this._arcMap.set(key, [_arc, arcInput]); // Always set new color
134
- keys.push(key);
135
- }
136
- this.bufferOrchestrator.ensureSpace(newItemCount, this.bufferManagersMap!);
137
- this._buildArcs(keys);
138
- if (this._options.variativeColorsOn) {
139
- this.__fillColors(keys);
140
- }
141
- this.globe.DrawRender();
142
- }
143
-
144
-
145
- updateCoordinates(items: Pick<ArcInput, "key" | "start" | "end">[]): void {
146
- if (this._freed) {
147
- console.warn("Plugin is freed, cannot update coordinates");
148
- return;
149
- }
150
- if (this.globe === null || this.gl === null) {
151
- console.warn("Globe or WebGL context is not initialized, cannot update coordinates");
152
- return;
153
- }
154
- const updateKeys = []
155
- for (const { key, start, end } of items) {
156
- const arcInput = this._arcMap.get(key);
157
- if (!arcInput) {
158
- console.warn(`Arc with key ${key} not found in arcMap.`);
159
- continue;
160
- }
161
- const _arc = createArc(start, end);
162
- arc.copy(arcInput[0], _arc); // Update the arc in the map
163
- // Update the arc in the buffer
164
- updateKeys.push(key);
165
- }
166
- this._buildArcs(updateKeys);
167
-
168
- this.globe.DrawRender();
169
- }
170
-
171
-
172
- deleteBulk(keys: string[]) {
173
- if (!this.bufferOrchestrator || !this.bufferManagersMap || !this.globe) {
174
- console.warn("Buffer orchestrator or buffer manager map is not initialized.");
175
- return;
176
- }
177
- for (const key of keys) {
178
- if (this._arcMap.has(key)) {
179
- this._arcMap.delete(key);
180
- } else {
181
- console.warn(`Arc with key ${key} not found in arcMap.`);
182
- }
183
- }
184
- this.bufferOrchestrator.deleteBulk(keys, this.bufferManagersMap);
185
- this.globe.DrawRender();
186
- }
187
-
188
-
189
- updateColors(keyColorCouples: { key: string, color: Color }[], drawRender: boolean = true) {
190
- if (this._freed) {
191
- console.warn("Plugin is freed, cannot update color");
192
- return;
193
- }
194
- if (this._options.variativeColorsOn === false) {
195
- console.warn("Variative colors are not enabled in this plugin. Create another instance with variativeColorsOn: true to use this feature.");
196
- return;
197
- }
198
-
199
- const { bufferOrchestrator, bufferManagersMap } = this;
200
- if (!bufferOrchestrator || !bufferManagersMap) {
201
- console.warn("Buffer orchestrator or buffer manager map is not initialized.");
202
- return;
203
- }
204
-
205
- for (const { key, color } of keyColorCouples) {
206
-
207
- const arcInput = this._arcMap.get(key)
208
- if (!arcInput) {
209
- console.warn(`Arc with key ${key} not found in arcMap.`);
210
- return;
211
- }
212
-
213
- arcInput[1].color = color as Color; // Update the color in the arc map
214
- bufferOrchestrator.updateBulk(
215
- [{ key: key, color: color }],
216
- bufferManagersMap, ["color"]
217
- );
218
- }
219
- if (drawRender) {
220
- this.globe.DrawRender();
221
- }
222
- }
223
-
224
-
225
- setPluginOpacity(opacity: number, drawRender: boolean = false): void {
226
- if (!this.globe || !this.gl) {
227
- console.warn("Globe or WebGL context is not initialized.");
228
- return;
229
- }
230
- opacityCheck(opacity)
231
- this._opacity = opacity;
232
-
233
- if (drawRender) {
234
- this.globe.DrawRender();
235
- }
236
- }
237
-
238
-
239
- setDefaultColor(color: Color, drawRender = false): void {
240
- if (!this.globe || !this.gl) {
241
- console.warn("Globe or WebGL context is not initialized.");
242
- return;
243
- }
244
- this._options.defaultColor = color;
245
- this._arcUBOHandler?.updateSingle("u_color", new Float32Array(color));
246
-
247
- if (drawRender) {
248
- this.globe.DrawRender();
249
- }
250
- }
251
-
252
-
253
- setElevationMode(mode: "msl" | "agl"): void {
254
- switch (mode) {
255
- case "msl":
256
- this._options.isMSL = true;
257
- break;
258
- case "agl":
259
- this._options.isMSL = false;
260
- break;
261
- default:
262
- throw new Error(`Unknown elevation mode: ${mode}`);
263
- }
264
- this._buildArcs(); // can be async
265
- this.globe.DrawRender();
266
- }
267
-
268
-
269
- setCameraAttraction(isOn: boolean) {
270
- if (!this.globe || !this.gl) {
271
- console.warn("Globe or WebGL context is not initialized.");
272
- return;
273
- }
274
- this._options.cameraAttractionIsOn = isOn;
275
- this.globe.DrawRender();
276
- }
277
-
278
-
279
- init(globe: Globe, gl: WebGL2RenderingContext) {
280
- this.globe = globe;
281
- this.gl = gl;
282
-
283
-
284
- this._frameCounterTrigger = new FrameCounterTrigger(globe, 15, 1000, (globeChanges: GlobeChanges) => {
285
- if (this._freed) return;
286
- this.__buildDynamicArcs();
287
- });
288
-
289
- this.program = LineStripProgramCache.get(globe) as LineProgram;
290
-
291
- this._staticDynamicStrategy = new StaticDynamicStrategy(globe, DYNAMIC_STRATEGY_START_LOD, () => {
292
- this.__buildStaticArcs();
293
- }); // Initialize static-dynamic strategy with a transition level of 8
294
-
295
- this._cameraUniformBlock = CameraUniformBlockTotemCache.get(globe);
296
-
297
- this._fillbufferManagersMap();
298
-
299
- this.bufferOrchestrator = new BufferOrchestrator();
300
-
301
- this._arcUBOHandler = this.program.createUBO();
302
- this._arcUBOHandler.update(new Map([
303
- ["u_color", new Float32Array(this._options.defaultColor)],
304
- ]));
305
- }
306
-
307
-
308
- draw3D() {
309
- // Drawing logic here
310
- if (!this.globe || !this.gl) {
311
- console.warn("Globe or WebGL context is not initialized.");
312
- return;
313
- }
314
- const globe = this.globe as Globe;
315
- this._staticDynamicStrategy?.updateState();
316
- // if (globe.api_IsScreenMoving()) {
317
- // this._buildArcs(); // can be async
318
- // }
319
- this._frameCounterTrigger?.trigger();
320
- const { gl, program, bufferOrchestrator, _vao, _arcUBOHandler, } = this;
321
- if (!gl || !program || !bufferOrchestrator || !_vao || !_arcUBOHandler) {
322
- console.warn("WebGL context, program, or buffer orchestrator is not initialized.");
323
- return;
324
- }
325
-
326
- gl.disable(gl.DEPTH_TEST);
327
-
328
- const currentGeometry = globe.api_GetCurrentGeometry();
329
- if ((currentGeometry === 0 && !this._options.globeViewOn) || (currentGeometry === 1 && !this._options.flatViewOn)) return;
330
-
331
- const drawOptions = {
332
- drawRange: {
333
- first: 0,
334
- count: bufferOrchestrator.length * (this._options.vertexCount + 1)
335
- },
336
- indexes: null
337
- }
338
-
339
- program.draw(
340
- _vao,
341
- drawOptions,
342
- this._opacity,
343
- _arcUBOHandler
344
- );
345
- gl.enable(gl.DEPTH_TEST);
346
- }
347
-
348
-
349
- _buildArcs(subSetIDs: string[] | null = null) {
350
- const state = this._staticDynamicStrategy?.getState();
351
- if (state === StaticDynamicState.DYNAMIC) {
352
- this.__buildDynamicArcs(subSetIDs);
353
- } else if (subSetIDs || state === StaticDynamicState.TO_STATIC) {
354
- this.__buildStaticArcs(subSetIDs);
355
- }
356
- }
357
-
358
-
359
-
360
- __buildStaticArcs(subSetIDs: string[] | null = null) {
361
- const { globe, _arcMap, _cameraUniformBlock, bufferManagersMap, bufferOrchestrator } = this;
362
- if (!globe || !_cameraUniformBlock || !bufferManagersMap || !bufferOrchestrator) {
363
- console.warn("Globe or camera uniform block is not initialized.");
364
- return;
365
- }
366
-
367
- const bufferKey = [this.globe!.api_GetCurrentGeometry() === 0 ? "position3d" : "position2d"]
368
- if (!this.bufferManagersMap?.has(bufferKey[0])) return;
369
-
370
- const longLat = [0, 0] as [number, number];
371
- const _attractionStrength = 0;
372
- const longLatArr = new Float32Array(2 * this._options.vertexCount);
373
-
374
- const data: [{
375
- key: string,
376
- longLatArr: Float32Array,
377
- height: Meter | null
378
- color?: Color
379
- msl?: boolean | null
380
- }] = [{
381
- key: "staticArcs",
382
- longLatArr: longLatArr,
383
- height: null,
384
- color: this._options.defaultColor,
385
- msl: null
386
- }];
387
-
388
- let keys;
389
- if (subSetIDs === null) {
390
- keys = _arcMap.keys();
391
- } else {
392
- keys = subSetIDs;
393
- }
394
-
395
-
396
- for (const key of keys) {
397
- const [arcInstance, arcInput] = _arcMap.get(key) as [Arc, ArcInput];
398
- arc.copy(_0arc, arcInstance);
399
- const generatedPoints = evenlySpacedArcPoints(_0arc.p0, _0arc.normal, _0arc.coverAngle as Radians, this._options.vertexCount);
400
-
401
- for (let i = 0; i < generatedPoints.length; i++) {
402
- const point = generatedPoints[i];
403
- vec3.fromUnitVectorToLongLat(longLat, point);
404
- longLatArr.set([longLat[0] / RADIANS, longLat[1] / RADIANS], i * 2);
405
- }
406
-
407
- data[0].key = key;
408
- data[0].height = arcInput.height ?? this._options.defaultHeightFromGroundIn3D;
409
- data[0].color = arcInput.color ?? this._options.defaultColor;
410
- data[0].msl = arcInput.msl ?? null;
411
-
412
- this.bufferOrchestrator.insertBulk(data, bufferManagersMap,
413
- bufferKey
414
- );
415
- }
416
- }
417
-
418
-
419
- __buildDynamicArcs(subSetIDs: string[] | null = null) {
420
-
421
- const { globe, _arcMap, _cameraUniformBlock, bufferManagersMap } = this;
422
- if (!globe || !_cameraUniformBlock || !bufferManagersMap) {
423
- console.warn("Globe or camera uniform block is not initialized.");
424
- return;
425
- }
426
- const bufferKey = [
427
- this.globe!.api_GetCurrentGeometry() === 0 ? "position3d" : "position2d"
428
- ]
429
- if (!this.bufferManagersMap?.has(bufferKey[0])) return;
430
-
431
- const { cameraAttractionIsOn } = this._options;
432
-
433
- const lookAtPosition = _cameraUniformBlock.getLookAtVector();
434
- const cameraPosition = _cameraUniformBlock.getCameraVector();
435
- vec3.divideScalar(cameraPosition, cameraPosition, WORLD_RADIUS_3D);
436
-
437
- vec3.add(cameraPosition, cameraPosition, lookAtPosition);
438
- // vec3.normalize(cameraPosition, cameraPosition);
439
- vec3.divideScalar(cameraPosition, cameraPosition, 2);
440
- // vec3.multiplyScalar(cameraPosition, cameraPosition, 1.3);
441
-
442
-
443
-
444
- const _attractionStrength = (() => {
445
- const lod = globe.api_GetCurrentLODWithDecimal();
446
- if (lod < 11) {
447
- return 1;
448
- }
449
- return lod * (lod - 8.5);
450
- })();
451
-
452
- const result = [];
453
- const longLat = [0, 0] as [number, number];
454
-
455
- let keys;
456
- if (subSetIDs === null) {
457
- keys = _arcMap.keys();
458
- } else {
459
- keys = subSetIDs;
460
- }
461
-
462
- for (const key of keys) {
463
- const [arcInstance, arcInput] = _arcMap.get(key) as [Arc, ArcInput];
464
- arc.copy(_0arc, arcInstance);
465
- const isOnArc = arc.closestPoint(_attractionPoint, _0arc, cameraPosition);
466
- if (!isOnArc) {
467
- if (vec3.distanceSquared(cameraPosition, _0arc.p0) < vec3.distanceSquared(cameraPosition, _0arc.p1)) {
468
- vec3.copy(_attractionPoint, _0arc.p0)
469
- } else {
470
- vec3.copy(_attractionPoint, _0arc.p1);
471
- }
472
- }
473
- const generatedPoints = cameraAttractionIsOn ?
474
- generateArcPoints(_0arc.p0, _0arc.p1, _0arc.normal, _attractionPoint, this._options.vertexCount, _attractionStrength)
475
- : evenlySpacedArcPoints(_0arc.p0, _0arc.normal, _0arc.coverAngle as Radians, this._options.vertexCount);
476
- const longLatArr = new Float32Array(2 * this._options.vertexCount);
477
- for (let i = 0; i < generatedPoints.length; i++) {
478
- const point = generatedPoints[i];
479
- vec3.fromUnitVectorToLongLat(longLat, point);
480
- longLatArr.set([longLat[0] / RADIANS, longLat[1] / RADIANS], i * 2);
481
- }
482
- result.push({
483
- key: key,
484
- longLatArr: longLatArr,
485
- height: arcInput.height ?? this._options.defaultHeightFromGroundIn3D,
486
- msl: arcInput.msl ?? null
487
- })
488
- }
489
- // this.bufferOrchestrator.resetWithCapacity(bufferManagersMap, result.length);
490
-
491
- this.bufferOrchestrator.insertBulk(result, bufferManagersMap, bufferKey);
492
- }
493
-
494
-
495
- _fillbufferManagersMap() {
496
- const { gl, globe } = this;
497
- if (!gl || !globe) {
498
- console.warn("WebGL context or globe is not initialized.");
499
- return;
500
- }
501
- const g2D = globe2Dcoordinates(globe);
502
- const { flatViewOn, globeViewOn, variativeColorsOn } = this._options;
503
- this.bufferManagersMap = new Map();
504
- if (globeViewOn) {
505
- this.bufferManagersMap.set("position3d", {
506
- bufferManager: new BufferManager(gl, 3 * (this._options.vertexCount + 1), { bufferType: "STREAM_DRAW", initialCapacity: INITAL_CAPACITY }),
507
- adaptor: (item: any) => {
508
- const { longLatArr, height = this._options.defaultHeightFromGroundIn3D, msl = this._options.isMSL } = item;
509
- const result = globe3Dcoordinates(globe, longLatArr, height, msl, { paddingCount: 1 });
510
- return result;
511
- }
512
- });
513
- }
514
-
515
- if (flatViewOn) {
516
- this.bufferManagersMap.set("position2d", {
517
- bufferManager: new BufferManager(gl, 2 * (this._options.vertexCount + 1), { bufferType: "STREAM_DRAW", initialCapacity: INITAL_CAPACITY }),
518
- adaptor: (item: any) => {
519
- const { longLatArr } = item;
520
- return g2D(longLatArr, { paddingCount: 1 });
521
- }
522
- });
523
- }
524
-
525
- if (this._options.variativeColorsOn) {
526
- const _colorArray = new Float32Array(4 * (this._options.vertexCount + 1)); // TODO: this could cause data races or unexpected overwrites.
527
- this.bufferManagersMap.set("color", {
528
- bufferManager: new BufferManager(gl, 4 * (this._options.vertexCount + 1), { bufferType: "STREAM_DRAW", initialCapacity: INITAL_CAPACITY }),
529
- adaptor: (item: any) => {
530
- // Calculate color based on radius
531
- if (item.color) {
532
- for (let i = 0; i < this._options.vertexCount; i++) {
533
- _colorArray.set(item.color, 4 * i); // Fill color for each vertex
534
- }
535
- return _colorArray
536
- } else {
537
- return _colorArray.fill(-1, 0, 4 * (this._options.vertexCount)); // Fill with -1 if no color is provided
538
- }
539
- }
540
- });
541
- }
542
-
543
- const bufferObjects = [
544
- globeViewOn ? "position3d" : null,
545
- flatViewOn ? "position2d" : null,
546
- variativeColorsOn ? "color" : null
547
- ].map(
548
- (key) => {
549
- if (!key) return null;
550
- this._coordinaateBufferKeysForUpdate.push(key);
551
- // @ts-ignore
552
- const bufferManager = this.bufferManagersMap.get(key).bufferManager;
553
- // @ts-ignore
554
- return createBufferAndReadInfo(bufferManager.buffer);
555
- }
556
- )
557
-
558
-
559
- // @ts-ignore
560
- this._vao = this.program.createVAO(
561
- bufferObjects[0], // position3d
562
- bufferObjects[1], // position2d
563
- bufferObjects[2] // color
564
- );
565
- }
566
-
567
-
568
- __fillColors(subSetIDs: string[]) {
569
- if (this._options.variativeColorsOn === false) return;
570
- const data: [ArcInput] = [null!];
571
- for (const id of subSetIDs) {
572
- data[0] = this._arcMap.get(id)![1];
573
- this.bufferOrchestrator.insertBulk(
574
- data,
575
- this.bufferManagersMap!,
576
- ["color"]
577
- );
578
- }
579
- }
580
-
581
-
582
- free() {
583
- if (this._freed) {
584
- console.warn("Plugin already freed");
585
- return;
586
- }
587
- if (!this.gl || !this.program) {
588
- console.warn("WebGL context or program is not initialized.");
589
- return;
590
- }
591
- this._arcUBOHandler?.free();
592
- this.bufferManagersMap?.forEach((manager) => {
593
- manager.bufferManager.free();
594
- });
595
- CameraUniformBlockTotemCache.release(this.globe as Globe);
596
- LineStripProgramCache.release(this.globe as Globe);
597
- this.gl = null;
598
- this.globe = null;
599
- this._arcMap.clear();
600
- this._coordinaateBufferKeysForUpdate = [];
601
- }
602
- }