@pirireis/webglobeplugins 1.0.2 → 1.0.4

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 (277) hide show
  1. package/package.json +2 -2
  2. package/plugins/alarms/alarmFadeInFadeOutPlugin/AlarmTimeLineFadeInFadeOutPlugin.js +399 -0
  3. package/{Math/angle-calculation.ts → webglobeplugins/Math/angle-calculation.js} +14 -18
  4. package/{Math/arc-cdf-points.ts → webglobeplugins/Math/arc-cdf-points.js} +272 -329
  5. package/{Math/arc-generate-points-exponantial.ts → webglobeplugins/Math/arc-generate-points-exponantial.js} +254 -299
  6. package/{Math/arc.ts → webglobeplugins/Math/arc.js} +292 -421
  7. package/{Math → webglobeplugins/Math}/bounds/line-bbox.js +186 -225
  8. package/{Math/circle-cdf-points.ts → webglobeplugins/Math/circle-cdf-points.js} +78 -143
  9. package/{Math/circle.ts → webglobeplugins/Math/circle.js} +33 -49
  10. package/{Math/constants.ts → webglobeplugins/Math/constants.js} +4 -12
  11. package/{Math/contour/quadtreecontours.ts → webglobeplugins/Math/contour/quadtreecontours.js} +300 -371
  12. package/{Math → webglobeplugins/Math}/contour/quadtreecontours1.js +298 -336
  13. package/{Math/finite-line-2d.ts → webglobeplugins/Math/finite-line-2d.js} +58 -68
  14. package/{Math/haversine.ts → webglobeplugins/Math/haversine.js} +22 -33
  15. package/webglobeplugins/Math/index.js +1 -0
  16. package/{Math/juction/arc-plane.ts → webglobeplugins/Math/juction/arc-plane.js} +143 -203
  17. package/{Math/juction/line-sphere.ts → webglobeplugins/Math/juction/line-sphere.js} +22 -32
  18. package/{Math/juction/plane-plane.ts → webglobeplugins/Math/juction/plane-plane.js} +53 -62
  19. package/{Math/line.ts → webglobeplugins/Math/line.js} +52 -84
  20. package/webglobeplugins/Math/matrix4.js +1 -0
  21. package/{Math/methods.ts → webglobeplugins/Math/methods.js} +126 -182
  22. package/{Math/plane.ts → webglobeplugins/Math/plane.js} +56 -92
  23. package/{Math/quaternion.ts → webglobeplugins/Math/quaternion.js} +106 -128
  24. package/{Math/templete-shapes/grid-visually-equal.ts → webglobeplugins/Math/templete-shapes/grid-visually-equal.js} +65 -118
  25. package/webglobeplugins/Math/tessellation/constants.js +1 -0
  26. package/{Math/tessellation/methods.ts → webglobeplugins/Math/tessellation/methods.js} +49 -79
  27. package/{Math/tessellation/nearest-value-padding.ts → webglobeplugins/Math/tessellation/nearest-value-padding.js} +112 -147
  28. package/{Math/tessellation/spherical-triangle-area.ts → webglobeplugins/Math/tessellation/spherical-triangle-area.js} +99 -127
  29. package/{Math/tessellation/tile-merger.ts → webglobeplugins/Math/tessellation/tile-merger.js} +429 -578
  30. package/{Math/tessellation/triangle-tessellation.ts → webglobeplugins/Math/tessellation/triangle-tessellation.js} +464 -533
  31. package/webglobeplugins/Math/tessellation/types.js +1 -0
  32. package/webglobeplugins/Math/types.js +1 -0
  33. package/{Math → webglobeplugins/Math}/utils.js +2 -3
  34. package/{Math/vec3.ts → webglobeplugins/Math/vec3.js} +155 -227
  35. package/{Math/xyz-tile.ts → webglobeplugins/Math/xyz-tile.js} +18 -26
  36. package/{algorithms → webglobeplugins/algorithms}/search-binary.js +16 -14
  37. package/webglobeplugins/altitude-locator/adaptors.js +1 -0
  38. package/webglobeplugins/altitude-locator/keymethod.js +1 -0
  39. package/{altitude-locator → webglobeplugins/altitude-locator}/plugin.js +344 -445
  40. package/{altitude-locator → webglobeplugins/altitude-locator}/types.js +21 -26
  41. package/{compass-rose → webglobeplugins/compass-rose}/compass-rose-padding-flat.js +230 -274
  42. package/{compass-rose/compass-text-writer.ts → webglobeplugins/compass-rose/compass-text-writer.js} +155 -210
  43. package/{compass-rose → webglobeplugins/compass-rose}/index.js +3 -3
  44. package/{constants.ts → webglobeplugins/constants.js} +6 -8
  45. package/{heatwave → webglobeplugins/heatwave}/datamanager.js +149 -168
  46. package/{heatwave → webglobeplugins/heatwave}/heatwave.js +206 -261
  47. package/{heatwave → webglobeplugins/heatwave}/index.js +5 -5
  48. package/{heatwave → webglobeplugins/heatwave}/isobar.js +306 -340
  49. package/{heatwave/texture-point-sampler.ts → webglobeplugins/heatwave/texture-point-sampler.js} +187 -220
  50. package/webglobeplugins/investigation-tools/draw/tiles/adapters.js +67 -0
  51. package/{investigation-tools/draw/tiles/tiles.ts → webglobeplugins/investigation-tools/draw/tiles/tiles.js} +128 -162
  52. package/{jest.config.js → webglobeplugins/jest.config.js} +7 -6
  53. package/{pin → webglobeplugins/pin}/pin-object-array1.js +300 -381
  54. package/{pin → webglobeplugins/pin}/pin-point-totem1.js +60 -77
  55. package/{programs → webglobeplugins/programs}/arrowfield/arrow-field.js +60 -89
  56. package/{programs → webglobeplugins/programs}/arrowfield/logic.js +141 -173
  57. package/{programs → webglobeplugins/programs}/data2legend/density-to-legend.js +68 -86
  58. package/{programs → webglobeplugins/programs}/data2legend/point-to-density-texture.js +67 -84
  59. package/{programs → webglobeplugins/programs}/float2legendwithratio/index.js +2 -3
  60. package/{programs → webglobeplugins/programs}/float2legendwithratio/logic.js +118 -144
  61. package/{programs → webglobeplugins/programs}/float2legendwithratio/object.js +104 -141
  62. package/{programs → webglobeplugins/programs}/helpers/blender.js +58 -73
  63. package/{programs/helpers/fadeaway.ts → webglobeplugins/programs/helpers/fadeaway.js} +60 -73
  64. package/{programs → webglobeplugins/programs}/index.js +20 -19
  65. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-3d.js +85 -112
  66. package/{programs → webglobeplugins/programs}/line-on-globe/circle-accurate-flat.js +148 -200
  67. package/{programs → webglobeplugins/programs}/line-on-globe/degree-padding-around-circle-3d.js +102 -134
  68. package/webglobeplugins/programs/line-on-globe/index.js +1 -0
  69. package/{programs → webglobeplugins/programs}/line-on-globe/lines-color-instanced-flat.js +80 -99
  70. package/webglobeplugins/programs/line-on-globe/linestrip/data.js +4 -0
  71. package/{programs/line-on-globe/linestrip/linestrip.ts → webglobeplugins/programs/line-on-globe/linestrip/linestrip.js} +93 -152
  72. package/{programs/line-on-globe/naive-accurate-flexible.ts → webglobeplugins/programs/line-on-globe/naive-accurate-flexible.js} +126 -175
  73. package/{programs → webglobeplugins/programs}/line-on-globe/util.js +5 -8
  74. package/{programs → webglobeplugins/programs}/picking/pickable-polygon-renderer.js +98 -129
  75. package/{programs → webglobeplugins/programs}/picking/pickable-renderer.js +98 -130
  76. package/{programs → webglobeplugins/programs}/point-on-globe/element-globe-surface-glow.js +93 -122
  77. package/{programs → webglobeplugins/programs}/point-on-globe/element-point-glow.js +80 -114
  78. package/{programs → webglobeplugins/programs}/point-on-globe/square-pixel-point.js +121 -139
  79. package/{programs/polygon-on-globe/texture-dem-triangles.ts → webglobeplugins/programs/polygon-on-globe/texture-dem-triangles.js} +178 -209
  80. package/{programs/programcache.ts → webglobeplugins/programs/programcache.js} +126 -134
  81. package/webglobeplugins/programs/rings/index.js +1 -0
  82. package/{programs/rings/partial-ring/piece-of-pie.ts → webglobeplugins/programs/rings/partial-ring/piece-of-pie.js} +152 -222
  83. package/webglobeplugins/programs/totems/attachments/adaptive-opacity.js +131 -0
  84. package/{programs/totems/dem-textures-manager.ts → webglobeplugins/programs/totems/attachments/dem-textures-manager.js} +263 -360
  85. package/webglobeplugins/programs/totems/camera-totem-attactment-interface.js +1 -0
  86. package/{programs/totems/camerauniformblock.ts → webglobeplugins/programs/totems/camerauniformblock.js} +225 -310
  87. package/{programs/totems/canvas-webglobe-info.ts → webglobeplugins/programs/totems/canvas-webglobe-info.js} +132 -147
  88. package/{programs/totems/globe-changes.ts → webglobeplugins/programs/totems/globe-changes.js} +59 -79
  89. package/{programs → webglobeplugins/programs}/totems/gpu-selection-uniform-block.js +99 -127
  90. package/{programs/totems/index.ts → webglobeplugins/programs/totems/index.js} +2 -2
  91. package/{programs → webglobeplugins/programs}/two-d/pixel-padding-for-compass.js +87 -101
  92. package/{programs → webglobeplugins/programs}/util.js +14 -19
  93. package/{programs/vectorfields/logics/constants.ts → webglobeplugins/programs/vectorfields/logics/constants.js} +4 -5
  94. package/{programs/vectorfields/logics/drawrectangleparticles.ts → webglobeplugins/programs/vectorfields/logics/drawrectangleparticles.js} +107 -136
  95. package/{programs → webglobeplugins/programs}/vectorfields/logics/index.js +2 -4
  96. package/webglobeplugins/programs/vectorfields/logics/particle-ubo.js +19 -0
  97. package/{programs/vectorfields/logics/pixelbased.ts → webglobeplugins/programs/vectorfields/logics/pixelbased.js} +89 -122
  98. package/{programs → webglobeplugins/programs}/vectorfields/logics/ubo.js +51 -57
  99. package/{programs/vectorfields/pingpongbuffermanager.ts → webglobeplugins/programs/vectorfields/pingpongbuffermanager.js} +99 -113
  100. package/{range-tools-on-terrain/bearing-line/adapters.ts → webglobeplugins/range-tools-on-terrain/bearing-line/adapters.js} +114 -154
  101. package/{range-tools-on-terrain/bearing-line/plugin.ts → webglobeplugins/range-tools-on-terrain/bearing-line/plugin.js} +457 -569
  102. package/webglobeplugins/range-tools-on-terrain/bearing-line/types.js +1 -0
  103. package/{range-tools-on-terrain/circle-line-chain/adapters.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/adapters.js} +85 -104
  104. package/{range-tools-on-terrain/circle-line-chain/chain-list-map.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/chain-list-map.js} +382 -446
  105. package/{range-tools-on-terrain/circle-line-chain/plugin.ts → webglobeplugins/range-tools-on-terrain/circle-line-chain/plugin.js} +464 -607
  106. package/webglobeplugins/range-tools-on-terrain/circle-line-chain/types.js +1 -0
  107. package/{range-tools-on-terrain/range-ring/adapters.ts → webglobeplugins/range-tools-on-terrain/range-ring/adapters.js} +93 -114
  108. package/{range-tools-on-terrain/range-ring/enum.ts → webglobeplugins/range-tools-on-terrain/range-ring/enum.js} +2 -2
  109. package/{range-tools-on-terrain/range-ring/plugin.ts → webglobeplugins/range-tools-on-terrain/range-ring/plugin.js} +377 -444
  110. package/webglobeplugins/range-tools-on-terrain/range-ring/rangeringangletext.js +331 -0
  111. package/webglobeplugins/range-tools-on-terrain/range-ring/types.js +9 -0
  112. package/webglobeplugins/semiplugins/interface.js +1 -0
  113. package/{semiplugins/lightweight/line-plugin.ts → webglobeplugins/semiplugins/lightweight/line-plugin.js} +221 -342
  114. package/{semiplugins/lightweight/piece-of-pie-plugin.ts → webglobeplugins/semiplugins/lightweight/piece-of-pie-plugin.js} +200 -275
  115. package/{semiplugins/shape-on-terrain/arc-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/arc-plugin.js} +481 -616
  116. package/{semiplugins/shape-on-terrain/circle-plugin.ts → webglobeplugins/semiplugins/shape-on-terrain/circle-plugin.js} +444 -588
  117. package/{semiplugins/shape-on-terrain/padding-1-degree.ts → webglobeplugins/semiplugins/shape-on-terrain/padding-1-degree.js} +539 -713
  118. package/{semiplugins/shape-on-terrain/terrain-polygon/adapters.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/adapters.js} +55 -69
  119. package/{semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/cache.js} +104 -149
  120. package/{semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.js} +45 -58
  121. package/{semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/manager.js} +4 -4
  122. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +241 -0
  123. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.js +76 -0
  124. package/{semiplugins/shape-on-terrain/terrain-polygon/data/random.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/random.js} +121 -165
  125. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/types.js +1 -0
  126. package/{semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.js} +64 -81
  127. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +162 -0
  128. package/{semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts → webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.js} +282 -265
  129. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/test-records.js +14 -0
  130. package/webglobeplugins/semiplugins/shape-on-terrain/terrain-polygon/types.js +8 -0
  131. package/webglobeplugins/semiplugins/shell/bbox-renderer/index.js +2 -0
  132. package/{semiplugins/shell/bbox-renderer/logic.ts → webglobeplugins/semiplugins/shell/bbox-renderer/logic.js} +209 -273
  133. package/webglobeplugins/semiplugins/shell/bbox-renderer/object.js +78 -0
  134. package/webglobeplugins/semiplugins/type.js +1 -0
  135. package/{semiplugins/utility/container-plugin.ts → webglobeplugins/semiplugins/utility/container-plugin.js} +94 -126
  136. package/{semiplugins/utility/object-pass-container-plugin.ts → webglobeplugins/semiplugins/utility/object-pass-container-plugin.js} +80 -101
  137. package/{shaders → webglobeplugins/shaders}/fragment-toy/firework.js +1 -1
  138. package/{shaders → webglobeplugins/shaders}/fragment-toy/singularity.js +2 -5
  139. package/{tracks → webglobeplugins/tracks}/point-heat-map/adaptors/timetracksplugin-format-to-this.js +63 -78
  140. package/webglobeplugins/tracks/point-heat-map/index.js +1 -0
  141. package/{tracks → webglobeplugins/tracks}/point-heat-map/plugin-webworker.js +121 -148
  142. package/{tracks → webglobeplugins/tracks}/point-heat-map/point-to-heat-map-flow.js +121 -150
  143. package/{tracks → webglobeplugins/tracks}/point-tracks/key-methods.js +2 -3
  144. package/{tracks → webglobeplugins/tracks}/point-tracks/plugin.js +401 -487
  145. package/{tracks → webglobeplugins/tracks}/timetracks/adaptors-line-strip.js +65 -79
  146. package/{tracks → webglobeplugins/tracks}/timetracks/plugin-line-strip.js +240 -295
  147. package/{tracks → webglobeplugins/tracks}/timetracks/program-line-strip.js +413 -495
  148. package/{tracks → webglobeplugins/tracks}/timetracks/programpoint-line-strip.js +109 -137
  149. package/webglobeplugins/types.js +19 -0
  150. package/{util → webglobeplugins/util}/account/bufferoffsetmanager.js +176 -209
  151. package/webglobeplugins/util/account/create-buffermap-orchastration.js +39 -0
  152. package/{util → webglobeplugins/util}/account/index.js +3 -6
  153. package/{util/account/single-attribute-buffer-management/buffer-manager.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-manager.js} +119 -151
  154. package/{util/account/single-attribute-buffer-management/buffer-orchestrator.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator.js} +212 -238
  155. package/{util/account/single-attribute-buffer-management/buffer-orchestrator1.ts → webglobeplugins/util/account/single-attribute-buffer-management/buffer-orchestrator1.js} +159 -184
  156. package/{util/account/single-attribute-buffer-management/index.ts → webglobeplugins/util/account/single-attribute-buffer-management/index.js} +4 -11
  157. package/{util/account/single-attribute-buffer-management/object-store.ts → webglobeplugins/util/account/single-attribute-buffer-management/object-store.js} +55 -76
  158. package/webglobeplugins/util/account/single-attribute-buffer-management/types.js +1 -0
  159. package/{util → webglobeplugins/util}/account/util.js +18 -22
  160. package/webglobeplugins/util/algorithms/index.js +1 -0
  161. package/{util → webglobeplugins/util}/algorithms/search-binary.js +25 -26
  162. package/{util/build-strategy/static-dynamic.ts → webglobeplugins/util/build-strategy/static-dynamic.js} +41 -50
  163. package/webglobeplugins/util/check/index.js +1 -0
  164. package/webglobeplugins/util/check/typecheck.js +66 -0
  165. package/{util/frame-counter-trigger.ts → webglobeplugins/util/frame-counter-trigger.js} +84 -99
  166. package/{util/geometry/index.ts → webglobeplugins/util/geometry/index.js} +121 -155
  167. package/webglobeplugins/util/gl-util/buffer/attribute-loader.js +74 -0
  168. package/{util/gl-util/buffer/index.ts → webglobeplugins/util/gl-util/buffer/index.js} +3 -6
  169. package/{util/gl-util/draw-options/methods.ts → webglobeplugins/util/gl-util/draw-options/methods.js} +32 -47
  170. package/{util/gl-util/uniform-block/manager.ts → webglobeplugins/util/gl-util/uniform-block/manager.js} +209 -232
  171. package/{util/globe-default-gl-states.ts → webglobeplugins/util/globe-default-gl-states.js} +4 -5
  172. package/{util/helper-methods.ts → webglobeplugins/util/helper-methods.js} +8 -9
  173. package/{util → webglobeplugins/util}/index.js +10 -9
  174. package/webglobeplugins/util/interpolation/index.js +1 -0
  175. package/webglobeplugins/util/interpolation/timetrack/index.js +2 -0
  176. package/{util → webglobeplugins/util}/interpolation/timetrack/timetrack-interpolator.js +79 -94
  177. package/{util → webglobeplugins/util}/interpolation/timetrack/web-worker.js +46 -51
  178. package/{util/picking/fence.ts → webglobeplugins/util/picking/fence.js} +43 -47
  179. package/{util/picking/picker-displayer.ts → webglobeplugins/util/picking/picker-displayer.js} +176 -226
  180. package/{util → webglobeplugins/util}/programs/draw-from-pixel-coords.js +164 -201
  181. package/{util/programs/draw-texture-on-canvas.ts → webglobeplugins/util/programs/draw-texture-on-canvas.js} +69 -91
  182. package/{util → webglobeplugins/util}/programs/supersampletotextures.js +97 -130
  183. package/{util/programs/texturetoglobe.js → webglobeplugins/util/programs/texturetoglobe_delete.js} +128 -153
  184. package/{util/shaderfunctions/geometrytransformations.ts → webglobeplugins/util/shaderfunctions/geometrytransformations.js} +44 -106
  185. package/{util → webglobeplugins/util}/shaderfunctions/index.js +2 -2
  186. package/{util → webglobeplugins/util}/shaderfunctions/nodata.js +2 -4
  187. package/{util → webglobeplugins/util}/shaderfunctions/noisefunctions.js +7 -10
  188. package/{util/webglobjectbuilders.ts → webglobeplugins/util/webglobjectbuilders.js} +358 -446
  189. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/adaptor.js +11 -11
  190. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/index.js +3 -3
  191. package/{vectorfield → webglobeplugins/vectorfield}/arrowfield/plugin.js +83 -128
  192. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/adaptor.js +15 -16
  193. package/{vectorfield → webglobeplugins/vectorfield}/waveparticles/index.js +3 -3
  194. package/{vectorfield/waveparticles/plugin.ts → webglobeplugins/vectorfield/waveparticles/plugin.js} +455 -506
  195. package/webglobeplugins/vectorfield/wind/adapters/image-to-fields.js +92 -0
  196. package/webglobeplugins/vectorfield/wind/adapters/types.js +1 -0
  197. package/{vectorfield/wind/imagetovectorfieldandmagnitude.ts → webglobeplugins/vectorfield/wind/imagetovectorfieldandmagnitude.js} +53 -78
  198. package/{vectorfield → webglobeplugins/vectorfield}/wind/index.js +5 -5
  199. package/{vectorfield/wind/plugin-persistant.ts → webglobeplugins/vectorfield/wind/plugin-persistant.js} +390 -483
  200. package/{vectorfield → webglobeplugins/vectorfield}/wind/plugin.js +685 -883
  201. package/{vectorfield → webglobeplugins/vectorfield}/wind/vectorfieldimage.js +23 -27
  202. package/{write-text/context-text-bulk.ts → webglobeplugins/write-text/context-text-bulk.js} +200 -285
  203. package/webglobeplugins/write-text/context-text3.js +167 -0
  204. package/{write-text/context-text4.ts → webglobeplugins/write-text/context-text4.js} +146 -231
  205. package/{write-text → webglobeplugins/write-text}/context-textDELETE.js +94 -125
  206. package/{write-text/objectarraylabels/index.ts → webglobeplugins/write-text/objectarraylabels/index.js} +2 -2
  207. package/{write-text → webglobeplugins/write-text}/objectarraylabels/objectarraylabels.js +200 -247
  208. package/Math/index.js +0 -0
  209. package/Math/matrix4.ts +0 -0
  210. package/Math/mesh/mapbox-delaunay.d.ts +0 -74
  211. package/Math/roadmap.md +0 -10
  212. package/Math/tessellation/constants.ts +0 -1
  213. package/Math/tessellation/roadmap.md +0 -48
  214. package/Math/tessellation/types.ts +0 -1
  215. package/Math/types.ts +0 -68
  216. package/altitude-locator/adaptors.js +0 -0
  217. package/altitude-locator/keymethod.js +0 -0
  218. package/investigation-tools/draw/tiles/adapters.ts +0 -133
  219. package/programs/line-on-globe/index.js +0 -0
  220. package/programs/line-on-globe/linestrip/data.ts +0 -29
  221. package/programs/polygon-on-globe/roadmap.md +0 -8
  222. package/programs/rings/index.js +0 -1
  223. package/programs/totems/camera-totem-attactment-interface.ts +0 -4
  224. package/programs/vectorfields/logics/particle-ubo.ts +0 -23
  225. package/publish.bat +0 -62
  226. package/range-tools-on-terrain/bearing-line/types.ts +0 -65
  227. package/range-tools-on-terrain/circle-line-chain/types.ts +0 -43
  228. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +0 -396
  229. package/range-tools-on-terrain/range-ring/types.ts +0 -30
  230. package/semiplugins/interface.ts +0 -14
  231. package/semiplugins/shape-on-terrain/goal.md +0 -12
  232. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +0 -20
  233. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +0 -196
  234. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +0 -209
  235. package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +0 -144
  236. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +0 -5
  237. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +0 -37
  238. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +0 -146
  239. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +0 -90
  240. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +0 -69
  241. package/semiplugins/shell/bbox-renderer/index.ts +0 -2
  242. package/semiplugins/shell/bbox-renderer/object.ts +0 -129
  243. package/semiplugins/type.ts +0 -8
  244. package/terrain-plugin.mmd +0 -83
  245. package/tests/Math/arc-sampling-test.js +0 -367
  246. package/tests/Math/arc-sampling-test.ts +0 -429
  247. package/tests/Math/arc.test.ts +0 -77
  248. package/tests/Math/junction/arc-limit.test.ts +0 -7
  249. package/tests/Math/junction/arc-plane-points.test.ts +0 -196
  250. package/tests/Math/junction/arc-plane.test.ts +0 -172
  251. package/tests/Math/junction/line-sphere.test.ts +0 -127
  252. package/tests/Math/junction/plane-plane.test.ts +0 -91
  253. package/tests/Math/plane-test.ts +0 -17
  254. package/tests/Math/plane.test.ts +0 -43
  255. package/tests/Math/vec3.test.ts +0 -33
  256. package/tracks/point-heat-map/index.js +0 -0
  257. package/tracks/point-heat-map/readme.md +0 -15
  258. package/tracks/timetracks/readme.md +0 -1
  259. package/tsconfig.json +0 -22
  260. package/types/@pirireis/webglobe.d.ts +0 -102
  261. package/types/delaunator.d.ts +0 -40
  262. package/types/earcut.d.ts +0 -11
  263. package/types/rbush.d.ts +0 -57
  264. package/types.ts +0 -319
  265. package/util/account/create-buffermap-orchastration.ts +0 -85
  266. package/util/account/single-attribute-buffer-management/types.ts +0 -43
  267. package/util/algorithms/index.js +0 -0
  268. package/util/check/index.js +0 -0
  269. package/util/check/typecheck.ts +0 -74
  270. package/util/gl-util/buffer/attribute-loader.ts +0 -84
  271. package/util/interpolation/index.js +0 -0
  272. package/util/interpolation/timetrack/index.js +0 -9
  273. package/vectorfield/wind/adapters/image-to-fields.ts +0 -74
  274. package/vectorfield/wind/adapters/types.ts +0 -12
  275. package/vectorfield/wind/plugin-persistant copy.ts +0 -461
  276. package/write-text/context-text3.ts +0 -252
  277. package/write-text/objectarraylabels/objectarraylabels.d.ts +0 -72
@@ -1,40 +1,10 @@
1
- import { createProgram } from '../../../util/webglobjectbuilders';
2
- import { noRegisterGlobeProgramCache } from '../../../programs/programcache';
3
- import {
4
- CameraUniformBlockString,
5
- CameraUniformBlockTotemCache,
6
- CameraUniformBlockTotem
7
- } from "../../../programs/totems/camerauniformblock";
8
- import { Globe } from '../../../types';
9
-
10
-
11
- interface ProgramWrapper {
12
- program: WebGLProgram;
13
- u_texture: WebGLUniformLocation | null;
14
- u_mesh_resolution: WebGLUniformLocation | null;
15
- u_time: WebGLUniformLocation | null;
16
- }
17
-
18
- interface MeshConfig {
19
- xRes: number;
20
- yRes: number;
21
- eastWestTied: boolean;
22
- }
23
-
24
- interface ShellBlockUpdateParams {
25
- gridSizeRad?: [number, number] | null;
26
- gridOffsetRad?: [number, number] | null;
27
- height?: number | null;
28
- wiggleInKM?: number | null;
29
- innerTime?: number | null;
30
- opacity?: number | null;
31
- }
32
-
33
- const UniformBlockBindingPoints = {
34
- ShellBlock: 0,
35
- CameraBlock: 1,
36
- } as const;
37
-
1
+ import { createProgram } from '../../../util/webglobjectbuilders';
2
+ import { noRegisterGlobeProgramCache } from '../../../programs/programcache';
3
+ import { CameraUniformBlockString, CameraUniformBlockTotemCache } from "../../../programs/totems/camerauniformblock";
4
+ const UniformBlockBindingPoints = {
5
+ ShellBlock: 0,
6
+ CameraBlock: 1,
7
+ };
38
8
  const vertexShader = `#version 300 es
39
9
  #define R 6378.137
40
10
  #define PI 3.1415926535897932384626433832795
@@ -116,8 +86,7 @@ const vertexShader = `#version 300 es
116
86
  v_texture_coordinate = texCoord;
117
87
  v_opacity = u_opacity;
118
88
  }
119
- `;
120
-
89
+ `;
121
90
  const fragmentShader = `#version 300 es
122
91
  precision lowp float;
123
92
  in vec2 v_texture_coordinate;
@@ -129,237 +98,204 @@ const fragmentShader = `#version 300 es
129
98
  void main() {
130
99
  outColor = texture(u_texture, v_texture_coordinate);
131
100
  outColor.a *= v_opacity;
132
- }`;
133
-
134
- export class BBOXGlobeShellProgram {
135
- public readonly id: string = "BBOXGlobeShellProgram";
136
- public readonly description: string;
137
- public readonly gl: WebGL2RenderingContext;
138
- public readonly globe: Globe;
139
- public readonly programWrapper: ProgramWrapper;
140
- public readonly cameraBlockTotem: CameraUniformBlockTotem;
141
-
142
- private readonly _transformArray: Float32Array;
143
- private _xRes!: number;
144
- private _yRes!: number;
145
- private _vao!: WebGLVertexArrayObject;
146
- private _indexBuffer!: WebGLBuffer;
147
- private _drawCount!: number;
148
-
149
- constructor(globe: Globe) {
150
- this.description = "This program implements flyweight pattern for globe." +
151
- "At globes draw3D call stack, this program should be prior to any program that uses it." +
152
- "draw3D method of this object only sets Projetion, ModelView and Translate matrices and if the mode is 2D mapWH .";
153
-
154
- this.gl = globe.gl;
155
- this.globe = globe;
156
- this.programWrapper = this._createProgramWrapper();
157
- this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
158
- this.cameraBlockTotem.assignBindingPoint(this.programWrapper.program, UniformBlockBindingPoints.CameraBlock);
159
-
160
- this._transformArray = new Float32Array(3);
161
- this.updateTime(0);
162
- this.setMesh({ xRes: 64, yRes: 64, eastWestTied: false });
163
- }
164
-
165
- private _createProgramWrapper(): ProgramWrapper {
166
- const gl = this.gl;
167
- const program = createProgram(gl, vertexShader, fragmentShader);
168
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
169
- gl.useProgram(program);
170
- const shellBlockIndex = gl.getUniformBlockIndex(program, "ShellBlock");
171
- gl.uniformBlockBinding(program, shellBlockIndex, UniformBlockBindingPoints.ShellBlock);
172
- gl.useProgram(currentProgram);
173
-
174
- return {
175
- program,
176
- u_texture: gl.getUniformLocation(program, "u_texture"),
177
- u_mesh_resolution: gl.getUniformLocation(program, "u_mesh_resolution"),
178
- u_time: gl.getUniformLocation(program, "u_time")
179
- };
180
- }
181
-
182
- public getShellBlockBufferManager(): ShellBlockManager {
183
- return new ShellBlockManager(this.gl);
184
- }
185
-
186
- public updateTime(time: number): void {
187
- const { gl, programWrapper } = this;
188
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
189
- gl.useProgram(programWrapper.program);
190
- gl.uniform1f(this.programWrapper.u_time, time);
191
- gl.useProgram(currentProgram);
192
- }
193
-
194
- public draw(
195
- texture: WebGLTexture,
196
- shellBlockDataManager: ShellBlockManager,
197
- drawLines: boolean = false,
198
- csRenderPass?: any
199
- ): void {
200
- const { gl, programWrapper, _vao, _drawCount } = this;
201
- const { program, u_texture } = programWrapper;
202
- gl.useProgram(program);
203
- gl.bindVertexArray(_vao);
204
- gl.activeTexture(gl.TEXTURE0);
205
- gl.bindTexture(gl.TEXTURE_2D, texture);
206
- gl.uniform1i(u_texture, 0);
207
- shellBlockDataManager.bind();
208
- this.cameraBlockTotem.bind(UniformBlockBindingPoints.CameraBlock);
209
- if (drawLines) gl.drawElements(gl.LINES, _drawCount, gl.UNSIGNED_SHORT, 0);
210
- gl.clearColor(0, 0, 0, 0);
211
- gl.drawElements(gl.TRIANGLES, _drawCount, gl.UNSIGNED_SHORT, 0);
212
- shellBlockDataManager.unbind();
213
- this.cameraBlockTotem.unbind(UniformBlockBindingPoints.CameraBlock);
214
- gl.bindVertexArray(null);
215
- }
216
-
217
- public free(): void {
218
- const { gl, programWrapper, _vao, _indexBuffer } = this;
219
- CameraUniformBlockTotemCache.release(this.globe);
220
- gl.deleteBuffer(_indexBuffer);
221
- gl.deleteVertexArray(_vao);
222
- gl.deleteProgram(programWrapper.program);
223
- }
224
-
225
- public setMesh({ xRes, yRes, eastWestTied }: MeshConfig): void {
226
- this._xRes = xRes;
227
- this._yRes = yRes;
228
- const { _vao } = this._meshUP(xRes, yRes, eastWestTied);
229
- this._vao = _vao;
230
- this._setUMeshResolution(xRes, yRes);
231
- }
232
-
233
- private _setUMeshResolution(xRes: number, yRes: number): void {
234
- const { gl, programWrapper } = this;
235
- const { u_mesh_resolution } = programWrapper;
236
- const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
237
- gl.useProgram(programWrapper.program);
238
- gl.uniform2f(u_mesh_resolution, xRes, yRes);
239
- gl.useProgram(currentProgram);
240
- this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
241
- }
242
-
243
- private _meshUP(xRes: number, yRes: number, eastWestTied: boolean): { _vao: WebGLVertexArrayObject } {
244
- this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
245
- const indices = new Uint16Array(this._drawCount);
246
- {
247
- let indicesIndex = 0;
248
- let index = 0;
249
- for (let j = 0; j < yRes - 1; j++) {
250
- for (let i = 0; i < xRes - 1; i++) {
251
- const ind = index + i;
252
- indices[indicesIndex++] = ind + xRes;
253
- indices[indicesIndex++] = ind + 1;
254
- indices[indicesIndex++] = ind;
255
- indices[indicesIndex++] = ind + xRes + 1;
256
- indices[indicesIndex++] = ind + 1;
257
- indices[indicesIndex++] = ind + xRes;
258
- }
259
- index += xRes;
260
- }
261
- if (eastWestTied) {
262
- let left = (yRes - 1);
263
- let right = 0;
264
- for (let i = 0; i < xRes - 1; i++) {
265
- indices[indicesIndex++] = left + xRes;
266
- indices[indicesIndex++] = right;
267
- indices[indicesIndex++] = left;
268
- indices[indicesIndex++] = right + xRes;
269
- indices[indicesIndex++] = right;
270
- indices[indicesIndex++] = left + xRes;
271
- left += xRes;
272
- right += xRes;
273
- }
274
- }
275
- }
276
- const gl = this.gl;
277
- const _vao = gl.createVertexArray()!;
278
- gl.bindVertexArray(_vao);
279
- const indexBuffer = gl.createBuffer()!;
280
- this._indexBuffer = indexBuffer;
281
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
282
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
283
- gl.bindVertexArray(null);
284
- return { _vao };
285
- }
286
- }
287
-
288
- export class ShellBlockManager {
289
- public readonly gl: WebGL2RenderingContext;
290
- public readonly buffer: WebGLBuffer;
291
-
292
- constructor(gl: WebGL2RenderingContext) {
293
- this.gl = gl;
294
- this.buffer = gl.createBuffer()!;
295
- gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer);
296
- gl.bufferData(gl.UNIFORM_BUFFER, 32, gl.DYNAMIC_DRAW);
297
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
298
- }
299
-
300
- public update({
301
- gridSizeRad = null,
302
- gridOffsetRad = null,
303
- height = null,
304
- wiggleInKM = null,
305
- innerTime = null,
306
- opacity = null
307
- }: ShellBlockUpdateParams = {}): void {
308
- const { gl, buffer } = this;
309
- gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
310
-
311
- if (gridOffsetRad !== null) {
312
- const offset = new Float32Array(gridOffsetRad);
313
- gl.bufferSubData(gl.UNIFORM_BUFFER, 0, offset);
314
- }
315
- if (gridSizeRad !== null) {
316
- const size = new Float32Array(gridSizeRad);
317
- gl.bufferSubData(gl.UNIFORM_BUFFER, 8, size);
318
- }
319
- if (height !== null) {
320
- const heightArray = new Float32Array([height]);
321
- gl.bufferSubData(gl.UNIFORM_BUFFER, 16, heightArray);
322
- }
323
- if (wiggleInKM !== null) {
324
- const wiggleArray = new Float32Array([wiggleInKM]);
325
- gl.bufferSubData(gl.UNIFORM_BUFFER, 20, wiggleArray);
326
- }
327
- if (innerTime !== null) {
328
- const innerTimeArray = new Float32Array([innerTime]);
329
- gl.bufferSubData(gl.UNIFORM_BUFFER, 24, innerTimeArray);
330
- }
331
- if (opacity !== null) {
332
- if (opacity < 0 || opacity > 1) {
333
- console.warn('Invalid opacity value');
334
- return;
335
- }
336
- const op = new Float32Array([opacity]);
337
- gl.bufferSubData(gl.UNIFORM_BUFFER, 28, op);
338
- }
339
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
340
- }
341
-
342
- public bind(): void {
343
- const { gl, buffer } = this;
344
- gl.bindBufferBase(gl.UNIFORM_BUFFER, UniformBlockBindingPoints.ShellBlock, buffer);
345
- }
346
-
347
- public free(): void {
348
- const { gl, buffer } = this;
349
- gl.deleteBuffer(buffer);
350
- }
351
-
352
- public unbind(): void {
353
- const { gl } = this;
354
- gl.bindBufferBase(gl.UNIFORM_BUFFER, UniformBlockBindingPoints.ShellBlock, null);
355
- }
356
- }
357
-
358
- export const BBOXGlobeShellProgramCache = Object.freeze({
359
- get: function (globe: Globe): BBOXGlobeShellProgram {
360
- return noRegisterGlobeProgramCache.getProgram(globe, BBOXGlobeShellProgram);
361
- },
362
- release: function (globe: Globe): void {
363
- noRegisterGlobeProgramCache.releaseProgram(globe, BBOXGlobeShellProgram);
364
- }
365
- });
101
+ }`;
102
+ export class BBOXGlobeShellProgram {
103
+ id = "BBOXGlobeShellProgram";
104
+ description;
105
+ gl;
106
+ globe;
107
+ programWrapper;
108
+ cameraBlockTotem;
109
+ _transformArray;
110
+ _xRes;
111
+ _yRes;
112
+ _vao;
113
+ _indexBuffer;
114
+ _drawCount;
115
+ constructor(globe) {
116
+ this.description = "This program implements flyweight pattern for globe." +
117
+ "At globes draw3D call stack, this program should be prior to any program that uses it." +
118
+ "draw3D method of this object only sets Projetion, ModelView and Translate matrices and if the mode is 2D mapWH .";
119
+ this.gl = globe.gl;
120
+ this.globe = globe;
121
+ this.programWrapper = this._createProgramWrapper();
122
+ this.cameraBlockTotem = CameraUniformBlockTotemCache.get(globe);
123
+ this.cameraBlockTotem.assignBindingPoint(this.programWrapper.program, UniformBlockBindingPoints.CameraBlock);
124
+ this._transformArray = new Float32Array(3);
125
+ this.updateTime(0);
126
+ this.setMesh({ xRes: 64, yRes: 64, eastWestTied: false });
127
+ }
128
+ _createProgramWrapper() {
129
+ const gl = this.gl;
130
+ const program = createProgram(gl, vertexShader, fragmentShader);
131
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
132
+ gl.useProgram(program);
133
+ const shellBlockIndex = gl.getUniformBlockIndex(program, "ShellBlock");
134
+ gl.uniformBlockBinding(program, shellBlockIndex, UniformBlockBindingPoints.ShellBlock);
135
+ gl.useProgram(currentProgram);
136
+ return {
137
+ program,
138
+ u_texture: gl.getUniformLocation(program, "u_texture"),
139
+ u_mesh_resolution: gl.getUniformLocation(program, "u_mesh_resolution"),
140
+ u_time: gl.getUniformLocation(program, "u_time")
141
+ };
142
+ }
143
+ getShellBlockBufferManager() {
144
+ return new ShellBlockManager(this.gl);
145
+ }
146
+ updateTime(time) {
147
+ const { gl, programWrapper } = this;
148
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
149
+ gl.useProgram(programWrapper.program);
150
+ gl.uniform1f(this.programWrapper.u_time, time);
151
+ gl.useProgram(currentProgram);
152
+ }
153
+ draw(texture, shellBlockDataManager, drawLines = false, csRenderPass) {
154
+ const { gl, programWrapper, _vao, _drawCount } = this;
155
+ const { program, u_texture } = programWrapper;
156
+ gl.useProgram(program);
157
+ gl.bindVertexArray(_vao);
158
+ gl.activeTexture(gl.TEXTURE0);
159
+ gl.bindTexture(gl.TEXTURE_2D, texture);
160
+ gl.uniform1i(u_texture, 0);
161
+ shellBlockDataManager.bind();
162
+ this.cameraBlockTotem.bind(UniformBlockBindingPoints.CameraBlock);
163
+ if (drawLines)
164
+ gl.drawElements(gl.LINES, _drawCount, gl.UNSIGNED_SHORT, 0);
165
+ gl.clearColor(0, 0, 0, 0);
166
+ gl.drawElements(gl.TRIANGLES, _drawCount, gl.UNSIGNED_SHORT, 0);
167
+ shellBlockDataManager.unbind();
168
+ this.cameraBlockTotem.unbind(UniformBlockBindingPoints.CameraBlock);
169
+ gl.bindVertexArray(null);
170
+ }
171
+ free() {
172
+ const { gl, programWrapper, _vao, _indexBuffer } = this;
173
+ CameraUniformBlockTotemCache.release(this.globe);
174
+ gl.deleteBuffer(_indexBuffer);
175
+ gl.deleteVertexArray(_vao);
176
+ gl.deleteProgram(programWrapper.program);
177
+ }
178
+ setMesh({ xRes, yRes, eastWestTied }) {
179
+ this._xRes = xRes;
180
+ this._yRes = yRes;
181
+ const { _vao } = this._meshUP(xRes, yRes, eastWestTied);
182
+ this._vao = _vao;
183
+ this._setUMeshResolution(xRes, yRes);
184
+ }
185
+ _setUMeshResolution(xRes, yRes) {
186
+ const { gl, programWrapper } = this;
187
+ const { u_mesh_resolution } = programWrapper;
188
+ const currentProgram = gl.getParameter(gl.CURRENT_PROGRAM);
189
+ gl.useProgram(programWrapper.program);
190
+ gl.uniform2f(u_mesh_resolution, xRes, yRes);
191
+ gl.useProgram(currentProgram);
192
+ this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
193
+ }
194
+ _meshUP(xRes, yRes, eastWestTied) {
195
+ this._drawCount = 6 * ((xRes - 1) * (yRes - 1));
196
+ const indices = new Uint16Array(this._drawCount);
197
+ {
198
+ let indicesIndex = 0;
199
+ let index = 0;
200
+ for (let j = 0; j < yRes - 1; j++) {
201
+ for (let i = 0; i < xRes - 1; i++) {
202
+ const ind = index + i;
203
+ indices[indicesIndex++] = ind + xRes;
204
+ indices[indicesIndex++] = ind + 1;
205
+ indices[indicesIndex++] = ind;
206
+ indices[indicesIndex++] = ind + xRes + 1;
207
+ indices[indicesIndex++] = ind + 1;
208
+ indices[indicesIndex++] = ind + xRes;
209
+ }
210
+ index += xRes;
211
+ }
212
+ if (eastWestTied) {
213
+ let left = (yRes - 1);
214
+ let right = 0;
215
+ for (let i = 0; i < xRes - 1; i++) {
216
+ indices[indicesIndex++] = left + xRes;
217
+ indices[indicesIndex++] = right;
218
+ indices[indicesIndex++] = left;
219
+ indices[indicesIndex++] = right + xRes;
220
+ indices[indicesIndex++] = right;
221
+ indices[indicesIndex++] = left + xRes;
222
+ left += xRes;
223
+ right += xRes;
224
+ }
225
+ }
226
+ }
227
+ const gl = this.gl;
228
+ const _vao = gl.createVertexArray();
229
+ gl.bindVertexArray(_vao);
230
+ const indexBuffer = gl.createBuffer();
231
+ this._indexBuffer = indexBuffer;
232
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
233
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
234
+ gl.bindVertexArray(null);
235
+ return { _vao };
236
+ }
237
+ }
238
+ export class ShellBlockManager {
239
+ gl;
240
+ buffer;
241
+ constructor(gl) {
242
+ this.gl = gl;
243
+ this.buffer = gl.createBuffer();
244
+ gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer);
245
+ gl.bufferData(gl.UNIFORM_BUFFER, 32, gl.DYNAMIC_DRAW);
246
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
247
+ }
248
+ update({ gridSizeRad = null, gridOffsetRad = null, height = null, wiggleInKM = null, innerTime = null, opacity = null } = {}) {
249
+ const { gl, buffer } = this;
250
+ gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);
251
+ if (gridOffsetRad !== null) {
252
+ const offset = new Float32Array(gridOffsetRad);
253
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, offset);
254
+ }
255
+ if (gridSizeRad !== null) {
256
+ const size = new Float32Array(gridSizeRad);
257
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 8, size);
258
+ }
259
+ if (height !== null) {
260
+ const heightArray = new Float32Array([height]);
261
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 16, heightArray);
262
+ }
263
+ if (wiggleInKM !== null) {
264
+ const wiggleArray = new Float32Array([wiggleInKM]);
265
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 20, wiggleArray);
266
+ }
267
+ if (innerTime !== null) {
268
+ const innerTimeArray = new Float32Array([innerTime]);
269
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 24, innerTimeArray);
270
+ }
271
+ if (opacity !== null) {
272
+ if (opacity < 0 || opacity > 1) {
273
+ console.warn('Invalid opacity value');
274
+ return;
275
+ }
276
+ const op = new Float32Array([opacity]);
277
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 28, op);
278
+ }
279
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
280
+ }
281
+ bind() {
282
+ const { gl, buffer } = this;
283
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, UniformBlockBindingPoints.ShellBlock, buffer);
284
+ }
285
+ free() {
286
+ const { gl, buffer } = this;
287
+ gl.deleteBuffer(buffer);
288
+ }
289
+ unbind() {
290
+ const { gl } = this;
291
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, UniformBlockBindingPoints.ShellBlock, null);
292
+ }
293
+ }
294
+ export const BBOXGlobeShellProgramCache = Object.freeze({
295
+ get: function (globe) {
296
+ return noRegisterGlobeProgramCache.getProgram(globe, BBOXGlobeShellProgram);
297
+ },
298
+ release: function (globe) {
299
+ noRegisterGlobeProgramCache.releaseProgram(globe, BBOXGlobeShellProgram);
300
+ }
301
+ });
@@ -0,0 +1,78 @@
1
+ import { BBOXGlobeShellProgramCache } from './logic';
2
+ export class BBOXGlobeShell {
3
+ gl;
4
+ globe;
5
+ program;
6
+ shellBlockManager;
7
+ innerTime;
8
+ texture;
9
+ bbox;
10
+ wiggleInKM;
11
+ wiggleSpeed;
12
+ constructor(gl, globe, { minLon = -180, maxLon = 180, minLat = -90, maxLat = 90, height = 0, u_opacity = 1, wiggleInKM = 0, wiggleSpeed = 0, } = {}) {
13
+ this.gl = gl;
14
+ this.globe = globe;
15
+ this.program = BBOXGlobeShellProgramCache.get(globe);
16
+ this.shellBlockManager = this.program.getShellBlockBufferManager();
17
+ this.innerTime = 0;
18
+ this.wiggleInKM = wiggleInKM;
19
+ this.wiggleSpeed = wiggleSpeed;
20
+ this.setBBox({ minLon, maxLon, minLat, maxLat });
21
+ this.setOpacity(u_opacity);
22
+ this.setHeight(height);
23
+ this.setWiggle({ wiggleSpeed, wiggleInKM });
24
+ }
25
+ setTexture(texture) {
26
+ this.texture = texture;
27
+ this.globe.DrawRender();
28
+ }
29
+ setHeight(height) {
30
+ this.shellBlockManager.update({ height });
31
+ this.globe.DrawRender();
32
+ }
33
+ // public update(data: any): void {
34
+ // console.log("BBOXGlobeShell update", data);
35
+ // this.shellBlockManager.update(data);
36
+ // this.globe.DrawRender();
37
+ // }
38
+ setOpacity(opacity) {
39
+ this.shellBlockManager.update({ opacity });
40
+ this.globe.DrawRender();
41
+ }
42
+ setBBox({ minLon = -180, maxLon = 180, minLat = -90, maxLat = 90 } = {}) {
43
+ this.bbox = { minLon, maxLon, minLat, maxLat };
44
+ // x
45
+ const horOffset = (minLon) * Math.PI / 180;
46
+ const horSize = (maxLon - minLon) * Math.PI / 180;
47
+ // y
48
+ const vertOffset = (90 - maxLat) * Math.PI / 180;
49
+ const vertSize = (maxLat - minLat) * Math.PI / 180;
50
+ this.shellBlockManager.update({
51
+ gridSizeRad: [horSize, vertSize],
52
+ gridOffsetRad: [horOffset, vertOffset]
53
+ });
54
+ this.globe.DrawRender();
55
+ }
56
+ setWiggle({ wiggleSpeed = null, wiggleInKM = null }) {
57
+ if (wiggleInKM !== null)
58
+ this.wiggleInKM = wiggleInKM;
59
+ if (wiggleSpeed !== null)
60
+ this.wiggleSpeed = wiggleSpeed;
61
+ this.shellBlockManager.update({ wiggleInKM });
62
+ }
63
+ /**
64
+ * @param csRenderPass - modelView, projection, translate, mapWH, scrWH, should be set before calling this function
65
+ */
66
+ draw(csRenderPass) {
67
+ this.program.draw(this.texture, this.shellBlockManager, false, csRenderPass);
68
+ if (this.wiggleInKM > 0 && this.wiggleSpeed > 0) {
69
+ this.innerTime += this.wiggleSpeed;
70
+ this.shellBlockManager.update({ innerTime: this.innerTime });
71
+ this.globe.DrawRender();
72
+ }
73
+ }
74
+ free() {
75
+ BBOXGlobeShellProgramCache.release(this.globe);
76
+ this.shellBlockManager.free();
77
+ }
78
+ }
@@ -0,0 +1 @@
1
+ export {};