@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,343 +0,0 @@
1
- import { SemiPluginInterface } from "../interface";
2
- import { LineOnGlobeCache } from "../../programs/line-on-globe/naive-accurate-flexible";
3
- import { PluginStyleOptions } from "../type";
4
- import { Globe, ProgramInterface, PluginInterface, Color, BUFFER_TYPE } from "../../types";
5
-
6
-
7
-
8
- import { BufferOrchestrator } from "../../util/account/single-attribute-buffer-management/buffer-orchestrator";
9
- import { BufferManager } from "../../util/account/single-attribute-buffer-management/buffer-manager";
10
- import { BufferManagersMap } from "../../util/account/single-attribute-buffer-management/types";
11
-
12
- import { LongLat, UBOHandler } from "../../types";
13
-
14
- import { sphereCoord } from "../../util/geometry/index";
15
- import { constraintFloat } from "../../util/check/typecheck";
16
- import { BufferAndReadInfo } from "../../types";
17
-
18
- /**
19
- * This plugin is lightweight. Processes and memories minimal data. Sacrifices details.
20
- * Only two points to draw a line in 2D and an Arc in 3D.
21
- * The 3D arc does not fit the terrain!
22
- * The 2D line is straight, not great circle projection
23
- */
24
-
25
- export type LineInput = {
26
- key: string; // Unique key for the line
27
- start: LongLat; // Start position
28
- start_altitude?: number; // Start altitude, default is 0
29
- end: LongLat; // End position
30
- end_altitude?: number; // End altitude, default is 0
31
- color?: Color; // Color of the line
32
- dashed_line_opacity?: number; // Proportion of the opacity of the dashed line
33
- dashed_line_ratio?: number; // Ratio of the dashed line
34
- }
35
-
36
- export type LinePluginOptions = PluginStyleOptions & {
37
-
38
- flatViewOn: boolean; // If true, the line will be drawn in flat view.
39
- globeViewOn: boolean; // If true, the line will be drawn in globe view.
40
- variativeColorsOn: boolean; // If true, the color will be variative based on the circle's radius.
41
- defaultColor: Color; // Default color of the line.
42
- dashedLineOpacityVariativeOn: boolean; // If true, the line will be dashed.
43
- dashedLineRatioVariativeOn: boolean; // If true, the dashed line ratio will be variative based on the circle's radius.
44
- bufferType: BUFFER_TYPE; // Buffer draw type, default is DYNAMIC_DRAW
45
- opacity: number; // Opacity of the line, default is 1.0
46
- initialCapacity: number;
47
-
48
- }
49
-
50
- export class LinePlugin implements PluginInterface, SemiPluginInterface {
51
- id: string;
52
- private globe: Globe | null = null;
53
- private gl: WebGL2RenderingContext | null = null;
54
- private program: ProgramInterface | null = null;
55
- private vao: WebGLVertexArrayObject | null = null;
56
- private _options: LinePluginOptions;
57
- private _uboHandler: UBOHandler | null = null;
58
- private bufferOrchestrator: BufferOrchestrator;
59
- private bufferManagersMap: BufferManagersMap = new Map();
60
- private _freed: boolean = false;
61
-
62
- constructor(id: string, {
63
- flatViewOn = true,
64
- globeViewOn = true,
65
- variativeColorsOn = false,
66
- defaultColor = [1, 1, 1, 1],
67
- dashedLineOpacityVariativeOn = false,
68
- dashedLineRatioVariativeOn = false,
69
- bufferType = "DYNAMIC_DRAW",
70
- opacity = 1.0,
71
- initialCapacity = 10
72
- }: Partial<LinePluginOptions> = {}) {
73
- this.id = id;
74
- this._options = {
75
- flatViewOn: flatViewOn ?? true,
76
- globeViewOn: globeViewOn ?? true,
77
- variativeColorsOn: variativeColorsOn ?? false,
78
- defaultColor: defaultColor ?? [1, 1, 1, 1],
79
- dashedLineOpacityVariativeOn: dashedLineOpacityVariativeOn ?? false,
80
- dashedLineRatioVariativeOn: dashedLineRatioVariativeOn ?? false,
81
- bufferType: bufferType ?? "DYNAMIC_DRAW",
82
- opacity: opacity ?? 1.0,
83
- initialCapacity: initialCapacity ?? 10
84
- };
85
- this.bufferOrchestrator = new BufferOrchestrator({ capacity: initialCapacity ?? 10 });
86
- }
87
-
88
-
89
- init(globe: Globe, gl: WebGL2RenderingContext): void {
90
- this.globe = globe;
91
- this.gl = gl;
92
-
93
- this.program = LineOnGlobeCache.get(globe) as ProgramInterface;
94
-
95
- this._uboHandler = this.program.createUBO() as UBOHandler;
96
- this.setDefaultColor(this._options.defaultColor);
97
-
98
-
99
- this._fillManagerMap();
100
-
101
-
102
- this.vao = this.program.createVAO(
103
- ...this._createSelectBufferNames().map((key) => {
104
- if (key === null) {
105
- return null;
106
- }
107
- const bufferManagerComp = this.bufferManagersMap.get(key);
108
- if (bufferManagerComp === undefined) {
109
- throw new Error(`Buffer key ${key} does not exist in bufferManagersMap`);
110
- }
111
- const { bufferManager } = bufferManagerComp;
112
- return {
113
- stride: 0,
114
- offset: 0,
115
- buffer: bufferManager.buffer as WebGLBuffer
116
- } as BufferAndReadInfo;
117
- })
118
- );
119
-
120
- }
121
-
122
- // PLUGIN INTERFACE METHODS
123
-
124
-
125
-
126
- increaseSpace(amount: number): void {
127
- if (this._freed) {
128
- console.warn("Plugin is freed, cannot increase space");
129
- return;
130
- }
131
- if (this.globe === null) {
132
- console.warn("Globe is not initialized.");
133
- return;
134
- }
135
- if (typeof amount !== "number" || amount <= 0) {
136
- console.warn("Invalid amount, must be a positive number");
137
- return;
138
- }
139
- this.bufferOrchestrator.ensureSpace(amount, this.bufferManagersMap!);
140
- }
141
-
142
-
143
- insertBulk(items: Array<LineInput>): void {
144
- const { bufferOrchestrator, bufferManagersMap, globe } = this;
145
- if (!bufferOrchestrator || !globe) {
146
- throw new Error("Buffer orchestrator or globe is not initialized.");
147
- }
148
- bufferOrchestrator.insertBulk(items, bufferManagersMap);
149
- this.globe?.DrawRender();
150
- }
151
-
152
- deleteBulk(keys: Array<string>): void {
153
- const { bufferOrchestrator, bufferManagersMap, globe } = this;
154
- if (!bufferOrchestrator || !globe) {
155
- throw new Error("Buffer orchestrator or globe is not initialized.");
156
- }
157
- bufferOrchestrator.deleteBulk(keys, bufferManagersMap);
158
- this.globe?.DrawRender();
159
- }
160
-
161
-
162
- setPluginOpacity(opacity: number, drawRender: boolean = false): void {
163
- constraintFloat(opacity, 0, 1);
164
- this._options.opacity = opacity;
165
- if (drawRender) {
166
- this.globe?.DrawRender();
167
- }
168
- }
169
-
170
- setPluginDashedLineRatio(ratio: number): void {
171
- constraintFloat(ratio, 0, 1);
172
- this._uboHandler?.updateSingle("dashed_line_ratio", new Float32Array([ratio]));
173
- this.globe?.DrawRender();
174
- }
175
-
176
- setPluginDashLineOpacity(opacity: number): void {
177
- constraintFloat(opacity, 0, 1);
178
- this._options.dashedLineOpacityVariativeOn = true;
179
- this._options.defaultColor[3] = opacity; // Update the default color's alpha channel
180
- this.globe?.DrawRender();
181
- }
182
-
183
-
184
-
185
- setDefaultColor(color: Color, drawRender: boolean = false): void {
186
- if (!this.globe || !this.gl) {
187
- console.warn("Globe or WebGL context is not initialized.");
188
- return;
189
- }
190
- this._options.defaultColor = color;
191
- this._uboHandler?.updateSingle("u_color", new Float32Array(color));
192
- if (drawRender) {
193
- this.globe.DrawRender();
194
- }
195
- }
196
-
197
-
198
-
199
- updateCoordinates(items: Pick<LineInput, "key" | "start" | "end">[]): void {
200
- throw new Error("Method not implemented.");
201
- }
202
- // GLOBE INTERACTION METHODS
203
-
204
- draw3D(): void {
205
- if (this._freed) {
206
- console.warn("Plugin has been freed, cannot draw.");
207
- };
208
-
209
- if (!this.globe || !this.gl || !this.program || !this.vao) {
210
- throw new Error("Globe, GL context or program is not initialized.");
211
- }
212
-
213
- const { bufferOrchestrator, _options, _uboHandler, vao } = this;
214
- if (!bufferOrchestrator || !bufferOrchestrator || !_uboHandler) {
215
- throw new Error("Buffer orchestrator is not initialized.");
216
- }
217
-
218
- const { flatViewOn, globeViewOn, opacity } = _options;
219
-
220
- const drawOptions = {
221
- drawRange: {
222
- first: 0,
223
- count: bufferOrchestrator.length
224
- }
225
- }
226
- this.gl.disable(this.gl.DEPTH_TEST); // Disable depth test for lines
227
- const currentGeometry = this.globe.api_GetCurrentGeometry();
228
- if (currentGeometry === 0 && globeViewOn) {
229
- // @ts-ignore
230
- this.program.draw(vao, drawOptions, opacity, _uboHandler)
231
- } else if (currentGeometry === 1 && flatViewOn) {
232
- // @ts-ignore
233
- this.program.draw(vao, drawOptions, opacity, _uboHandler);
234
- }
235
- this.gl.enable(this.gl.DEPTH_TEST); // Re-enable depth test after drawing
236
- }
237
-
238
-
239
- free(): void {
240
- if (this._freed) return;
241
- // TODO: FILL
242
-
243
- this.bufferManagersMap.forEach((manager) => {
244
- manager.bufferManager.free();
245
- });
246
- this._uboHandler?.free();
247
- LineOnGlobeCache.release(this.globe as Globe);
248
- this._freed = true;
249
- }
250
-
251
-
252
-
253
- // IMPLICIT INTERFACE METHODS
254
-
255
- _fillManagerMap(): void {
256
- const globe = this.globe as Globe;
257
-
258
- const {
259
- flatViewOn,
260
- globeViewOn,
261
- variativeColorsOn,
262
- dashedLineOpacityVariativeOn,
263
- dashedLineRatioVariativeOn,
264
- bufferType = "DYNAMIC_DRAW"
265
- } = this._options;
266
-
267
- const m = this.bufferManagersMap;
268
- const initialCapacity = this._options.initialCapacity;
269
-
270
- if (flatViewOn) {
271
- m.set("start_position",
272
- {
273
- bufferManager: new BufferManager(globe.gl, 2, { bufferType, initialCapacity: this._options.initialCapacity }),
274
- adaptor: (item: LineInput) => {
275
- const result = new Float32Array(globe.api_GetMercator2DPoint(item.start[0], item.start[1]))
276
- return result;
277
- }
278
- });
279
- m.set("end_position", {
280
- bufferManager: new BufferManager(globe.gl, 2, { bufferType, initialCapacity: this._options.initialCapacity }),
281
- adaptor: (item: LineInput) => new Float32Array(globe.api_GetMercator2DPoint(item.end[0], item.end[1]))
282
- });
283
- }
284
-
285
- if (globeViewOn) {
286
- m.set("start_position_3d", {
287
- bufferManager: new BufferManager(globe.gl, 3, { bufferType, initialCapacity: this._options.initialCapacity }),
288
- adaptor: (item: LineInput) => sphereCoord(item.start[0], item.start[1], globe, item.start_altitude || 0)
289
- });
290
-
291
- m.set("end_position_3d", {
292
- bufferManager: new BufferManager(globe.gl, 3, { bufferType, initialCapacity: this._options.initialCapacity }),
293
- adaptor: (item: LineInput) => sphereCoord(item.end[0], item.end[1], globe, item.end_altitude || 0)
294
-
295
- });
296
- }
297
-
298
- if (variativeColorsOn) {
299
- m.set("color", {
300
- bufferManager: new BufferManager(globe.gl, 4, { bufferType, initialCapacity: this._options.initialCapacity }),
301
- adaptor: (item: LineInput) => new Float32Array(item.color !== undefined ? item.color : [-1, -1, -1, -1])
302
- });
303
- }
304
-
305
- if (dashedLineOpacityVariativeOn) {
306
- m.set("dashed_line_opacity", {
307
- bufferManager: new BufferManager(globe.gl, 1, { bufferType, initialCapacity: this._options.initialCapacity }),
308
- adaptor: (item: LineInput) => new Float32Array(item.dashed_line_opacity !== undefined ? [item.dashed_line_opacity] : [-1])
309
- });
310
- }
311
-
312
- if (dashedLineRatioVariativeOn) {
313
- m.set("dashed_line_ratio", {
314
- bufferManager: new BufferManager(globe.gl, 1, { bufferType, initialCapacity: this._options.initialCapacity }),
315
- adaptor: (item: LineInput) => new Float32Array(item.dashed_line_ratio !== undefined ? [item.dashed_line_ratio] : [-1])
316
- });
317
- }
318
-
319
- }
320
-
321
-
322
- _createSelectBufferNames(): Array<string | null> {
323
- const {
324
- flatViewOn,
325
- globeViewOn,
326
- variativeColorsOn,
327
- dashedLineOpacityVariativeOn,
328
- dashedLineRatioVariativeOn
329
- } = this._options;
330
-
331
- return [
332
- flatViewOn ? "start_position" : null,
333
- globeViewOn ? "start_position_3d" : null,
334
- flatViewOn ? "end_position" : null,
335
- globeViewOn ? "end_position_3d" : null,
336
- dashedLineOpacityVariativeOn ? "dashed_line_opacity" : null,
337
- dashedLineRatioVariativeOn ? "dashed_line_ratio" : null,
338
- variativeColorsOn ? "color" : null
339
- ]
340
- }
341
-
342
- }
343
-
@@ -1,275 +0,0 @@
1
- import { Globe, Meter, PluginInterface, Color, BUFFER_TYPE, LongLat, BufferAndReadInfo, UBOHandler } from "../../types";
2
- import { PieceOfPieProgramCache, Logic, DrawMode } from "../../programs/rings/partial-ring/piece-of-pie";
3
- import { BufferManagersMap, BufferManager, BufferOrchestrator } from "../../util/account/single-attribute-buffer-management/index";
4
- import { sphereCoord } from "../../util/geometry/index";
5
- import { opacityCheck } from "../../util/check/typecheck";
6
- import { CentigradeDegree } from "../../types";
7
-
8
-
9
- const INITIAL_CAPACITY = 10; // Initial capacity for the buffer orchestrator
10
- const EDGE_COUNT = 100; // Number of edges for the pie chart
11
- const Radians = Math.PI / 180; // Conversion factor from degrees to radians
12
-
13
- export type FillingMode = 0 | 1 | 2; // 0: constant, 1: fading, 2: hide
14
- export type DrawModePlugin = DrawMode | "BOTH";
15
-
16
-
17
-
18
- export type PieceOfPiePluginOptions = {
19
- defaultHeightFromGroundIn3D: Meter; // Default altitude for the pie chart
20
- bufferType: BUFFER_TYPE; // Type of buffer to use
21
- initialCapacity: number; // Initial capacity for the buffer orchestrator
22
- defaultColor: Color; // Default color for the pie chart
23
- variativeColorsOn: boolean; // Whether to use variative colors
24
- opacity: number; // Opacity of the pie chart
25
- }
26
-
27
-
28
- export type PieceOfPiePluginInput = {
29
- key: string;
30
- center: LongLat;
31
- radius: Meter;
32
- startAngle2D?: CentigradeDegree; // in radians
33
- startAngle3D?: CentigradeDegree; // in radians
34
- coverAngle2D?: CentigradeDegree; // in radians
35
- coverAngle3D?: CentigradeDegree; // in radians
36
- altitude?: Meter;
37
- fillingMode?: FillingMode;
38
- color?: Color;
39
- }
40
-
41
-
42
- export class PieceOfPiePlugin implements PluginInterface {
43
- id: string;
44
- private _isFreed: boolean = false;
45
- private globe: Globe | null = null;
46
- private gl: WebGL2RenderingContext | null = null;
47
- private program: Logic | null = null;
48
- private vao: WebGLVertexArrayObject | null = null;
49
- private bufferManagersMap: BufferManagersMap | null = null;
50
- private bufferOrchestrator: BufferOrchestrator = new BufferOrchestrator({ capacity: INITIAL_CAPACITY });
51
- private drawMode: DrawModePlugin = "BOTH";
52
- private _uboHandler: UBOHandler | null = null;
53
-
54
- private _pluginOptions: PieceOfPiePluginOptions = {
55
- bufferType: "STATIC_DRAW",
56
- initialCapacity: INITIAL_CAPACITY,
57
- opacity: 1.0, // Default opacity is 1.0
58
- defaultHeightFromGroundIn3D: 0, // Default altitude is ground level
59
- defaultColor: [1, 1, 1, 1], // Default color is white with full opacity
60
- variativeColorsOn: false, // Default is to not use variative colors
61
- };
62
- constructor(
63
- id: string,
64
- options: Partial<PieceOfPiePluginOptions> | null = null
65
- ) {
66
- this.id = id;
67
- if (options) {
68
- this._pluginOptions = {
69
- ...this._pluginOptions,
70
- ...options
71
- };
72
- }
73
- }
74
-
75
-
76
- insertBulk(items: PieceOfPiePluginInput[]): void {
77
-
78
- this.bufferOrchestrator.insertBulk(items, this.bufferManagersMap as BufferManagersMap);
79
- this.globe?.DrawRender();
80
- }
81
-
82
-
83
- deleteBulk(keys: string[]): void {
84
- this.bufferOrchestrator.deleteBulk(keys, this.bufferManagersMap as BufferManagersMap);
85
- this.globe?.DrawRender();
86
- }
87
-
88
-
89
- setPluginOpacity(opacity: number, drawRender: boolean = true): void {
90
- opacityCheck(opacity);
91
- this._uboHandler?.updateSingle("u_opacity", new Float32Array([opacity]));
92
- if (drawRender) {
93
- this.globe?.DrawRender();
94
- }
95
- }
96
-
97
- setDrawMode(drawMode: DrawMode): void {
98
- if (drawMode !== "TRIANGLE_FAN" && drawMode !== "LINE_STRIP" && drawMode !== "BOTH") {
99
- throw new Error("Invalid draw mode. Use 'TRIANGLE_FAN' or 'LINE_STRIP'.");
100
- }
101
- this.drawMode = drawMode;
102
- this.globe?.DrawRender();
103
- }
104
-
105
-
106
- setDefaultColor(color: Color): void {
107
- if (this._isFreed) {
108
- console.warn("PieceOfPiePlugin is freed, cannot set default color.");
109
- return;
110
- }
111
- if (!Array.isArray(color) || color.length !== 4) {
112
- throw new Error("Color must be an array of 4 numbers [R, G, B, A].");
113
- }
114
- this._uboHandler?.updateSingle("u_color", new Float32Array(color));
115
- this.globe?.DrawRender();
116
- }
117
-
118
-
119
- _createBufferManagersMap(): void {
120
- const { gl, globe, _pluginOptions } = this;
121
- const { bufferType, initialCapacity } = _pluginOptions;
122
- if (!gl || !globe) {
123
- throw new Error("Globe and WebGL context must be initialized before creating buffer management map.");
124
- }
125
-
126
- const bufferManagersMap: BufferManagersMap = new Map(
127
- [
128
- ["centerCoords2d", {
129
- bufferManager: new BufferManager(
130
- this.gl as WebGL2RenderingContext,
131
- 2,
132
- { bufferType: bufferType, initialCapacity }
133
- ),
134
- adaptor: (item: PieceOfPiePluginInput) => new Float32Array(
135
- globe.api_GetMercator2DPoint(item.center[0], item.center[1])
136
- ),
137
- }],
138
- ["centerCoords3d", {
139
- bufferManager: new BufferManager(gl, 3, { bufferType, initialCapacity }),
140
- adaptor: (item: PieceOfPiePluginInput) => sphereCoord(
141
- item.center[0], item.center[1],
142
- globe,
143
- (item.altitude ?? this._pluginOptions.defaultHeightFromGroundIn3D) / 1000
144
- )
145
- }],
146
- ["startAngle2d", {
147
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
148
- adaptor: (item: PieceOfPiePluginInput) => {
149
- if (item.startAngle2D === undefined) {
150
- return new Float32Array([0]); // Default angle if not provided
151
- }
152
- return new Float32Array([(item.startAngle2D) * Radians]);
153
- }
154
- }],
155
- ["tailAngle2d", {
156
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
157
- adaptor: (item: PieceOfPiePluginInput) => {
158
- if (item.coverAngle2D === undefined) {
159
- return new Float32Array([0]); // Default angle if not provided
160
- }
161
- return new Float32Array([item.coverAngle2D * Radians]);
162
- }
163
- }],
164
- ["startAngle3d", {
165
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
166
- adaptor: (item: PieceOfPiePluginInput) => {
167
- if (item.startAngle3D === undefined) {
168
- return new Float32Array([0]); // Default angle if not provided
169
- }
170
- return new Float32Array([item.startAngle3D * Radians]);
171
- }
172
- }],
173
- ["tailAngle3d", {
174
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
175
- adaptor: (item: PieceOfPiePluginInput) => {
176
- if (item.coverAngle3D === undefined) {
177
- return new Float32Array([0]); // Default angle if not provided
178
- }
179
- return new Float32Array([item.coverAngle3D * Radians]);
180
- }
181
- }],
182
- ["fillingMode", {
183
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
184
- adaptor: (item: PieceOfPiePluginInput) => new Float32Array([item.fillingMode ?? 0])
185
- }],
186
-
187
- ["radius", {
188
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
189
- adaptor: (item: PieceOfPiePluginInput) => new Float32Array([item.radius])
190
- }],
191
- ]
192
- );
193
-
194
- if (this._pluginOptions.variativeColorsOn) {
195
- bufferManagersMap.set("rgba", {
196
- bufferManager: new BufferManager(gl, 4, { bufferType, initialCapacity }),
197
- adaptor: (item: PieceOfPiePluginInput) => {
198
- if (!item.color || item.color.length === 0) {
199
- return new Float32Array([1, 1, 1, 1]); // Default color if none provided
200
- }
201
- return new Float32Array(item.color);
202
- }
203
- }
204
- );
205
- }
206
- this.bufferManagersMap = bufferManagersMap;
207
- }
208
-
209
-
210
- init(globe: Globe, gl: WebGL2RenderingContext): void {
211
- this.globe = globe;
212
- this.gl = gl;
213
- this.program = PieceOfPieProgramCache.get(globe) as Logic;
214
- this._createBufferManagersMap();
215
- this.vao = this.program.createVAO(
216
- //@ts-ignore
217
- ...['centerCoords2d',
218
- 'centerCoords3d',
219
- 'startAngle2d',
220
- 'tailAngle2d',
221
- 'startAngle3d',
222
- 'tailAngle3d',
223
- 'rgba',
224
- 'radius',
225
- 'fillingMode'].map((name) => {
226
- if (!this.bufferManagersMap?.has(name)) {
227
- return null; // this make vao with default attribute value with no buffer bound to it
228
- }
229
- const buffer = this.bufferManagersMap?.get(name)?.bufferManager.buffer;
230
- return {
231
- buffer: buffer,
232
- stride: 0,
233
- offset: 0,
234
- } as BufferAndReadInfo;
235
- })
236
- );
237
-
238
- this._uboHandler = this.program.createUBO();
239
- this._uboHandler.updateSingle("u_color", new Float32Array(this._pluginOptions.defaultColor));
240
- this._uboHandler.updateSingle("u_opacity", new Float32Array([this._pluginOptions.opacity ?? 1.0])); // Default opacity is 1.0
241
- }
242
-
243
-
244
-
245
- draw3D(): void {
246
- if (!this.gl || !this.program || !this.vao || !this.globe) {
247
- console.warn("PieChartPlugin is not initialized properly Or unregistered from globe.");
248
- return;
249
- }
250
- const length = this.bufferOrchestrator.length;
251
- this.gl.disable(this.gl.DEPTH_TEST);
252
- if (this.drawMode === "BOTH") {
253
- this.program?.draw(length, this.vao, EDGE_COUNT, "LINE_STRIP", this._uboHandler);
254
- this.program?.draw(length, this.vao, EDGE_COUNT, "TRIANGLE_FAN", this._uboHandler);
255
- } else {
256
- this.program?.draw(length, this.vao, EDGE_COUNT, this.drawMode as DrawMode, this._uboHandler);
257
- }
258
- this.gl.enable(this.gl.DEPTH_TEST);
259
- }
260
-
261
-
262
- free(): void {
263
- if (this._isFreed) {
264
- console.warn("PieChartPlugin is already freed.");
265
- return;
266
- }
267
- PieceOfPieProgramCache.release(this.globe as Globe);
268
- this.gl?.deleteVertexArray(this.vao as WebGLVertexArrayObject);
269
- this._isFreed = true;
270
- this.globe = null;
271
- this.gl = null;
272
- this.program = null;
273
- }
274
-
275
- }