@pirireis/webglobeplugins 0.17.0 → 1.0.2

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 (274) hide show
  1. package/Math/{angle-calculation.js → angle-calculation.ts} +18 -14
  2. package/Math/{arc-cdf-points.js → arc-cdf-points.ts} +329 -272
  3. package/Math/{arc-generate-points-exponantial.js → arc-generate-points-exponantial.ts} +299 -254
  4. package/Math/{arc.js → arc.ts} +421 -292
  5. package/Math/bounds/line-bbox.js +225 -186
  6. package/Math/{circle-cdf-points.js → circle-cdf-points.ts} +143 -78
  7. package/Math/{circle.js → circle.ts} +49 -33
  8. package/Math/{constants.js → constants.ts} +12 -4
  9. package/Math/contour/{quadtreecontours.js → quadtreecontours.ts} +371 -300
  10. package/Math/contour/quadtreecontours1.js +336 -298
  11. package/Math/{finite-line-2d.js → finite-line-2d.ts} +68 -58
  12. package/Math/haversine.ts +33 -0
  13. package/Math/index.js +0 -1
  14. package/Math/juction/{arc-plane.js → arc-plane.ts} +203 -143
  15. package/Math/juction/{line-sphere.js → line-sphere.ts} +32 -22
  16. package/Math/juction/{plane-plane.js → plane-plane.ts} +62 -53
  17. package/Math/{line.js → line.ts} +84 -52
  18. package/Math/matrix4.ts +0 -0
  19. package/Math/mesh/mapbox-delaunay.d.ts +74 -0
  20. package/Math/{methods.js → methods.ts} +182 -107
  21. package/Math/{plane.js → plane.ts} +92 -56
  22. package/Math/{quaternion.js → quaternion.ts} +128 -106
  23. package/Math/roadmap.md +10 -0
  24. package/Math/templete-shapes/{grid-visually-equal.js → grid-visually-equal.ts} +118 -65
  25. package/Math/tessellation/constants.ts +1 -0
  26. package/Math/tessellation/methods.ts +79 -0
  27. package/Math/tessellation/nearest-value-padding.ts +147 -0
  28. package/Math/tessellation/roadmap.md +48 -0
  29. package/Math/tessellation/spherical-triangle-area.ts +127 -0
  30. package/Math/tessellation/tile-merger.ts +578 -0
  31. package/Math/tessellation/triangle-tessellation.ts +533 -0
  32. package/Math/tessellation/types.ts +1 -0
  33. package/Math/types.ts +68 -0
  34. package/Math/utils.js +3 -2
  35. package/Math/{vec3.js → vec3.ts} +227 -151
  36. package/Math/xyz-tile.ts +26 -0
  37. package/algorithms/search-binary.js +14 -16
  38. package/altitude-locator/adaptors.js +0 -1
  39. package/altitude-locator/keymethod.js +0 -1
  40. package/altitude-locator/plugin.js +445 -345
  41. package/altitude-locator/types.js +26 -21
  42. package/compass-rose/compass-rose-padding-flat.js +274 -230
  43. package/compass-rose/{compass-text-writer.js → compass-text-writer.ts} +210 -155
  44. package/compass-rose/index.js +3 -3
  45. package/{constants.js → constants.ts} +8 -6
  46. package/heatwave/datamanager.js +168 -149
  47. package/heatwave/heatwave.js +261 -206
  48. package/heatwave/index.js +5 -5
  49. package/heatwave/isobar.js +340 -303
  50. package/heatwave/{texture-point-sampler.js → texture-point-sampler.ts} +220 -187
  51. package/investigation-tools/draw/tiles/adapters.ts +133 -0
  52. package/investigation-tools/draw/tiles/tiles.ts +162 -0
  53. package/jest.config.js +6 -7
  54. package/package.json +1 -1
  55. package/pin/pin-object-array1.js +381 -300
  56. package/pin/pin-point-totem1.js +77 -60
  57. package/programs/arrowfield/arrow-field.js +89 -60
  58. package/programs/arrowfield/logic.js +173 -141
  59. package/programs/data2legend/density-to-legend.js +86 -68
  60. package/programs/data2legend/point-to-density-texture.js +84 -67
  61. package/programs/float2legendwithratio/index.js +3 -2
  62. package/programs/float2legendwithratio/logic.js +144 -118
  63. package/programs/float2legendwithratio/object.js +141 -104
  64. package/programs/helpers/blender.js +73 -58
  65. package/programs/helpers/{fadeaway.js → fadeaway.ts} +73 -55
  66. package/programs/index.js +19 -20
  67. package/programs/line-on-globe/circle-accurate-3d.js +112 -85
  68. package/programs/line-on-globe/circle-accurate-flat.js +200 -148
  69. package/programs/line-on-globe/degree-padding-around-circle-3d.js +134 -102
  70. package/programs/line-on-globe/index.js +0 -1
  71. package/programs/line-on-globe/lines-color-instanced-flat.js +99 -80
  72. package/programs/line-on-globe/linestrip/data.ts +29 -0
  73. package/programs/line-on-globe/linestrip/{linestrip.js → linestrip.ts} +152 -93
  74. package/programs/line-on-globe/{naive-accurate-flexible.js → naive-accurate-flexible.ts} +175 -126
  75. package/programs/line-on-globe/util.js +8 -5
  76. package/programs/picking/pickable-polygon-renderer.js +129 -98
  77. package/programs/picking/pickable-renderer.js +130 -98
  78. package/programs/point-on-globe/element-globe-surface-glow.js +122 -93
  79. package/programs/point-on-globe/element-point-glow.js +114 -80
  80. package/programs/point-on-globe/square-pixel-point.js +139 -120
  81. package/programs/polygon-on-globe/roadmap.md +8 -0
  82. package/programs/polygon-on-globe/texture-dem-triangles.ts +290 -0
  83. package/programs/{programcache.js → programcache.ts} +134 -126
  84. package/programs/rings/index.js +1 -1
  85. package/programs/rings/partial-ring/{piece-of-pie.js → piece-of-pie.ts} +222 -152
  86. package/programs/totems/camera-totem-attactment-interface.ts +4 -0
  87. package/programs/totems/{camerauniformblock.js → camerauniformblock.ts} +326 -230
  88. package/programs/totems/{canvas-webglobe-info.js → canvas-webglobe-info.ts} +147 -132
  89. package/programs/totems/dem-textures-manager.ts +368 -0
  90. package/programs/totems/{globe-changes.js → globe-changes.ts} +79 -59
  91. package/programs/totems/gpu-selection-uniform-block.js +127 -99
  92. package/programs/totems/{index.js → index.ts} +2 -2
  93. package/programs/two-d/pixel-padding-for-compass.js +101 -87
  94. package/programs/util.js +19 -14
  95. package/programs/vectorfields/logics/{constants.js → constants.ts} +5 -4
  96. package/programs/vectorfields/logics/drawrectangleparticles.ts +182 -0
  97. package/programs/vectorfields/logics/index.js +4 -2
  98. package/programs/vectorfields/logics/particle-ubo.ts +23 -0
  99. package/programs/vectorfields/logics/{pixelbased.js → pixelbased.ts} +119 -84
  100. package/programs/vectorfields/logics/ubo.js +57 -51
  101. package/programs/vectorfields/{pingpongbuffermanager.js → pingpongbuffermanager.ts} +113 -73
  102. package/publish.bat +62 -0
  103. package/range-tools-on-terrain/bearing-line/{adapters.js → adapters.ts} +154 -114
  104. package/range-tools-on-terrain/bearing-line/{plugin.js → plugin.ts} +569 -457
  105. package/range-tools-on-terrain/bearing-line/types.ts +65 -0
  106. package/range-tools-on-terrain/circle-line-chain/{adapters.js → adapters.ts} +104 -85
  107. package/range-tools-on-terrain/circle-line-chain/{chain-list-map.js → chain-list-map.ts} +446 -382
  108. package/range-tools-on-terrain/circle-line-chain/{plugin.js → plugin.ts} +607 -464
  109. package/range-tools-on-terrain/circle-line-chain/types.ts +43 -0
  110. package/range-tools-on-terrain/range-ring/{adapters.js → adapters.ts} +114 -93
  111. package/range-tools-on-terrain/range-ring/{enum.js → enum.ts} +2 -2
  112. package/range-tools-on-terrain/range-ring/{plugin.js → plugin.ts} +444 -377
  113. package/range-tools-on-terrain/range-ring/rangeringangletext.ts +396 -0
  114. package/range-tools-on-terrain/range-ring/types.ts +30 -0
  115. package/semiplugins/interface.ts +14 -0
  116. package/semiplugins/lightweight/{line-plugin.js → line-plugin.ts} +342 -221
  117. package/semiplugins/lightweight/{piece-of-pie-plugin.js → piece-of-pie-plugin.ts} +275 -200
  118. package/semiplugins/shape-on-terrain/{arc-plugin.js → arc-plugin.ts} +616 -472
  119. package/semiplugins/shape-on-terrain/{circle-plugin.js → circle-plugin.ts} +588 -444
  120. package/semiplugins/shape-on-terrain/goal.md +12 -0
  121. package/semiplugins/shape-on-terrain/{padding-1-degree.js → padding-1-degree.ts} +713 -539
  122. package/semiplugins/shape-on-terrain/terrain-polygon/adapters.ts +69 -0
  123. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache-shortcuts.md +20 -0
  124. package/semiplugins/shape-on-terrain/terrain-polygon/data/cache.ts +149 -0
  125. package/semiplugins/shape-on-terrain/terrain-polygon/data/index-polygon-map.ts +58 -0
  126. package/semiplugins/shape-on-terrain/terrain-polygon/data/manager.ts +4 -0
  127. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.js +196 -0
  128. package/semiplugins/shape-on-terrain/terrain-polygon/data/master-worker.ts +209 -0
  129. package/semiplugins/shape-on-terrain/terrain-polygon/data/polygon-to-triangles.ts +144 -0
  130. package/semiplugins/shape-on-terrain/terrain-polygon/data/random.ts +165 -0
  131. package/semiplugins/shape-on-terrain/terrain-polygon/data/readme.md +5 -0
  132. package/semiplugins/shape-on-terrain/terrain-polygon/data/types.ts +37 -0
  133. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker-contact.ts +81 -0
  134. package/semiplugins/shape-on-terrain/terrain-polygon/data/worker.js +146 -0
  135. package/semiplugins/shape-on-terrain/terrain-polygon/notes.md +90 -0
  136. package/semiplugins/shape-on-terrain/terrain-polygon/terrain-polygon.ts +265 -0
  137. package/semiplugins/shape-on-terrain/terrain-polygon/types.ts +69 -0
  138. package/semiplugins/shell/bbox-renderer/index.ts +2 -0
  139. package/semiplugins/shell/bbox-renderer/{logic.js → logic.ts} +273 -249
  140. package/semiplugins/shell/bbox-renderer/object.ts +129 -0
  141. package/semiplugins/type.ts +8 -0
  142. package/semiplugins/utility/{container-plugin.js → container-plugin.ts} +126 -94
  143. package/semiplugins/utility/{object-pass-container-plugin.js → object-pass-container-plugin.ts} +101 -80
  144. package/shaders/fragment-toy/firework.js +1 -1
  145. package/shaders/fragment-toy/singularity.js +5 -2
  146. package/terrain-plugin.mmd +83 -0
  147. package/tests/Math/arc-sampling-test.js +367 -0
  148. package/tests/Math/arc-sampling-test.ts +429 -0
  149. package/tests/Math/arc.test.ts +77 -0
  150. package/tests/Math/junction/arc-limit.test.ts +7 -0
  151. package/tests/Math/junction/arc-plane-points.test.ts +196 -0
  152. package/tests/Math/junction/arc-plane.test.ts +172 -0
  153. package/tests/Math/junction/line-sphere.test.ts +127 -0
  154. package/tests/Math/junction/plane-plane.test.ts +91 -0
  155. package/tests/Math/plane-test.ts +17 -0
  156. package/tests/Math/plane.test.ts +43 -0
  157. package/tests/Math/vec3.test.ts +33 -0
  158. package/tracks/point-heat-map/adaptors/timetracksplugin-format-to-this.js +78 -63
  159. package/tracks/point-heat-map/index.js +0 -1
  160. package/tracks/point-heat-map/plugin-webworker.js +148 -121
  161. package/tracks/point-heat-map/point-to-heat-map-flow.js +150 -121
  162. package/tracks/point-heat-map/readme.md +15 -0
  163. package/tracks/point-tracks/key-methods.js +3 -2
  164. package/tracks/point-tracks/plugin.js +487 -393
  165. package/tracks/timetracks/adaptors-line-strip.js +79 -65
  166. package/tracks/timetracks/plugin-line-strip.js +295 -240
  167. package/tracks/timetracks/program-line-strip.js +495 -411
  168. package/tracks/timetracks/programpoint-line-strip.js +137 -109
  169. package/tracks/timetracks/readme.md +1 -0
  170. package/tsconfig.json +22 -0
  171. package/types/@pirireis/webglobe.d.ts +102 -0
  172. package/types/delaunator.d.ts +40 -0
  173. package/types/earcut.d.ts +11 -0
  174. package/types/rbush.d.ts +57 -0
  175. package/types.ts +319 -0
  176. package/util/account/bufferoffsetmanager.js +209 -176
  177. package/util/account/create-buffermap-orchastration.ts +85 -0
  178. package/util/account/index.js +6 -3
  179. package/util/account/single-attribute-buffer-management/{buffer-manager.js → buffer-manager.ts} +151 -117
  180. package/util/account/single-attribute-buffer-management/{buffer-orchestrator.js → buffer-orchestrator.ts} +238 -212
  181. package/util/account/single-attribute-buffer-management/{buffer-orchestrator1.js → buffer-orchestrator1.ts} +184 -159
  182. package/util/account/single-attribute-buffer-management/{index.js → index.ts} +11 -4
  183. package/util/account/single-attribute-buffer-management/{object-store.js → object-store.ts} +76 -55
  184. package/util/account/single-attribute-buffer-management/types.ts +43 -0
  185. package/util/account/util.js +22 -18
  186. package/util/algorithms/index.js +0 -1
  187. package/util/algorithms/search-binary.js +26 -25
  188. package/util/build-strategy/{static-dynamic.js → static-dynamic.ts} +50 -41
  189. package/util/check/index.js +0 -1
  190. package/util/check/typecheck.ts +74 -0
  191. package/util/{frame-counter-trigger.js → frame-counter-trigger.ts} +99 -84
  192. package/util/geometry/{index.js → index.ts} +155 -121
  193. package/util/gl-util/buffer/{attribute-loader.js → attribute-loader.ts} +84 -62
  194. package/util/gl-util/buffer/{index.js → index.ts} +6 -3
  195. package/util/gl-util/draw-options/{methods.js → methods.ts} +47 -32
  196. package/util/gl-util/uniform-block/{manager.js → manager.ts} +232 -190
  197. package/util/{webglobe/gldefaultstates.js → globe-default-gl-states.ts} +5 -4
  198. package/util/helper-methods.ts +9 -0
  199. package/util/index.js +9 -10
  200. package/util/interpolation/index.js +0 -1
  201. package/util/interpolation/timetrack/index.js +9 -2
  202. package/util/interpolation/timetrack/timetrack-interpolator.js +94 -79
  203. package/util/interpolation/timetrack/web-worker.js +51 -46
  204. package/util/picking/{fence.js → fence.ts} +47 -41
  205. package/util/picking/picker-displayer.ts +226 -0
  206. package/util/programs/draw-from-pixel-coords.js +201 -164
  207. package/util/programs/{draw-texture-on-canvas.js → draw-texture-on-canvas.ts} +92 -67
  208. package/util/programs/supersampletotextures.js +130 -97
  209. package/util/programs/texturetoglobe.js +153 -128
  210. package/util/shaderfunctions/{geometrytransformations.js → geometrytransformations.ts} +169 -41
  211. package/util/shaderfunctions/index.js +2 -2
  212. package/util/shaderfunctions/nodata.js +4 -2
  213. package/util/shaderfunctions/noisefunctions.js +10 -7
  214. package/util/{webglobjectbuilders.js → webglobjectbuilders.ts} +446 -358
  215. package/vectorfield/arrowfield/adaptor.js +11 -11
  216. package/vectorfield/arrowfield/index.js +3 -3
  217. package/vectorfield/arrowfield/plugin.js +128 -83
  218. package/vectorfield/waveparticles/adaptor.js +16 -15
  219. package/vectorfield/waveparticles/index.js +3 -3
  220. package/vectorfield/waveparticles/plugin.ts +506 -0
  221. package/vectorfield/wind/adapters/image-to-fields.ts +74 -0
  222. package/vectorfield/wind/adapters/types.ts +12 -0
  223. package/vectorfield/wind/{imagetovectorfieldandmagnitude.js → imagetovectorfieldandmagnitude.ts} +78 -56
  224. package/vectorfield/wind/index.js +5 -5
  225. package/vectorfield/wind/plugin-persistant copy.ts +461 -0
  226. package/vectorfield/wind/plugin-persistant.ts +483 -0
  227. package/vectorfield/wind/plugin.js +883 -671
  228. package/vectorfield/wind/vectorfieldimage.js +27 -23
  229. package/write-text/{context-text-bulk.js → context-text-bulk.ts} +285 -200
  230. package/write-text/context-text3.ts +252 -0
  231. package/write-text/{context-text4.js → context-text4.ts} +231 -145
  232. package/write-text/context-textDELETE.js +125 -94
  233. package/write-text/objectarraylabels/{index.js → index.ts} +2 -2
  234. package/write-text/objectarraylabels/objectarraylabels.d.ts +72 -0
  235. package/write-text/objectarraylabels/objectarraylabels.js +247 -200
  236. package/Math/matrix4.js +0 -1
  237. package/Math/tessellation/earcut/adapters.js +0 -37
  238. package/Math/tessellation/hybrid-triangle-tessellation-meta.js +0 -123
  239. package/Math/tessellation/methods.js +0 -46
  240. package/Math/tessellation/shred-input.js +0 -18
  241. package/Math/tessellation/tile-merger.js +0 -56
  242. package/Math/tessellation/tiler.js +0 -50
  243. package/Math/tessellation/triangle-tessellation-meta.js +0 -516
  244. package/Math/tessellation/triangle-tessellation.js +0 -14
  245. package/Math/tessellation/types.js +0 -1
  246. package/Math/tessellation/zoom-catch.js +0 -1
  247. package/Math/types.js +0 -1
  248. package/programs/line-on-globe/linestrip/data.js +0 -4
  249. package/programs/polygon-on-globe/partial-tesselation.js +0 -1
  250. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin-triangle.js +0 -204
  251. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.js +0 -118
  252. package/programs/polygon-on-globe/texture-dem-triangles.js +0 -236
  253. package/programs/vectorfields/logics/drawrectangleparticles.js +0 -112
  254. package/programs/vectorfields/logics/ubo-new.js +0 -25
  255. package/range-tools-on-terrain/bearing-line/types.js +0 -1
  256. package/range-tools-on-terrain/circle-line-chain/types.js +0 -1
  257. package/range-tools-on-terrain/range-ring/rangeringangletext.js +0 -331
  258. package/range-tools-on-terrain/range-ring/types.js +0 -9
  259. package/semiplugins/interface.js +0 -1
  260. package/semiplugins/shape-on-terrain/terrain-cover/texture-dem-cover.js +0 -1
  261. package/semiplugins/shell/bbox-renderer/index.js +0 -2
  262. package/semiplugins/shell/bbox-renderer/object.js +0 -65
  263. package/semiplugins/type.js +0 -1
  264. package/types.js +0 -19
  265. package/util/account/create-buffermap-orchastration.js +0 -39
  266. package/util/account/single-attribute-buffer-management/types.js +0 -1
  267. package/util/check/typecheck.js +0 -66
  268. package/util/gl-util/uniform-block/types.js +0 -1
  269. package/util/picking/picker-displayer.js +0 -134
  270. package/util/webglobe/index.js +0 -2
  271. package/util/webglobe/rasteroverlay.js +0 -76
  272. package/vectorfield/waveparticles/plugin.js +0 -290
  273. package/write-text/attached-text-writer.js +0 -95
  274. package/write-text/context-text3.js +0 -167
@@ -1,16 +1,22 @@
1
- import { createProgram } from "../../util/webglobjectbuilders";
2
- import { pixelXYToCartesian2DPoint, pixelXYToCartesian3DPoint } from "../../util/shaderfunctions";
3
- import { CameraUniformBlockTotem, globeProgramCache } from "../../programs";
4
- import { CameraUniformBlockString } from "../../programs/totems/camerauniformblock";
5
- // layout(std140) uniform GlobeCamera {
6
- // mat4 view; // 64 bytes 0
7
- // mat4 projection; // 64 bytes 64
8
- // vec3 translate; // 12 bytes 128
9
- // bool is3D; // 4 bytes 140
10
- // vec2 mapWH; // 8 bytes 144
11
- // vec2 screenWH; // 8 bytes 152
12
- // float z_level; // 4 bytes 160
13
- // };
1
+ import { createProgram } from "../../util/webglobjectbuilders";
2
+ import {
3
+ pixelXYToCartesian2DPoint,
4
+ pixelXYToCartesian3DPoint
5
+ } from "../../util/shaderfunctions";
6
+
7
+ import { CameraUniformBlockTotem, globeProgramCache } from "../../programs";
8
+ import { CameraUniformBlockString } from "../../programs/totems/camerauniformblock";
9
+
10
+ // layout(std140) uniform GlobeCamera {
11
+ // mat4 view; // 64 bytes 0
12
+ // mat4 projection; // 64 bytes 64
13
+ // vec3 translate; // 12 bytes 128
14
+ // bool is3D; // 4 bytes 140
15
+ // vec2 mapWH; // 8 bytes 144
16
+ // vec2 screenWH; // 8 bytes 152
17
+ // float z_level; // 4 bytes 160
18
+ // };
19
+
14
20
  const vertexShader = `#version 300 es
15
21
 
16
22
  ${CameraUniformBlockString}
@@ -29,7 +35,7 @@ in float end_time;
29
35
  in vec3 end_color;
30
36
  out vec4 v_color;
31
37
 
32
- ` + pixelXYToCartesian3DPoint + pixelXYToCartesian2DPoint + `
38
+ `+ pixelXYToCartesian3DPoint + pixelXYToCartesian2DPoint + `
33
39
 
34
40
  void main() {
35
41
  if (head_time < start_time || head_time > end_time) { return; }
@@ -45,7 +51,8 @@ void main() {
45
51
  }
46
52
  v_color = vec4(mix(start_color, end_color, t), final_opacity);
47
53
  gl_PointSize = point_size;
48
- }`;
54
+ }`;
55
+
49
56
  const fragmentShader = `#version 300 es
50
57
  precision highp float;
51
58
  in vec4 v_color;
@@ -58,97 +65,118 @@ void main() {
58
65
  if (cc > 0.5) {
59
66
  outColor.a = 0.0;
60
67
  }
61
- }`;
62
- export default class ProgramPointLineStrip {
63
- constructor(gl, globe, attrBuffer, options) {
64
- this.gl = gl;
65
- this._cameraBlockBindingPoint = 0;
66
- this._globalsBlockBindingPoint = 1;
67
- this.cameraUniformBlockTotem = globeProgramCache.getProgram(globe, CameraUniformBlockTotem);
68
- this._vao = gl.createVertexArray();
69
- this._attbuffer = attrBuffer;
70
- this.program = this._createProgram();
71
- this._drawCount = 0;
72
- this._globalsbuffer = gl.createBuffer();
73
- {
74
- const { gl, _globalsbuffer } = this;
75
- gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
76
- gl.bufferData(gl.UNIFORM_BUFFER, 12, gl.STREAM_DRAW);
77
- gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
78
- gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
79
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
80
- }
81
- }
82
- _createProgram() {
83
- const gl = this.gl;
84
- const program = createProgram(gl, vertexShader, fragmentShader);
85
- const ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
86
- const cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
87
- gl.uniformBlockBinding(program, cameraBlockIndex, this._cameraBlockBindingPoint);
88
- const globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
89
- gl.bindBufferBase(gl.UNIFORM_BUFFER, this._cameraBlockBindingPoint, ubo);
90
- gl.uniformBlockBinding(program, globalsBlockIndex, this._globalsBlockBindingPoint);
91
- gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, this._globalsbuffer);
92
- // numaralarda yanlışlık olabilir
93
- const start_position = gl.getAttribLocation(program, "start_position");
94
- const start_time = gl.getAttribLocation(program, "start_time");
95
- const start_color = gl.getAttribLocation(program, "start_color");
96
- const end_position = gl.getAttribLocation(program, "end_position");
97
- const end_time = gl.getAttribLocation(program, "end_time");
98
- const end_color = gl.getAttribLocation(program, "end_color");
99
- gl.bindVertexArray(this._vao);
100
- gl.bindBuffer(gl.ARRAY_BUFFER, this._attbuffer);
101
- gl.enableVertexAttribArray(start_position);
102
- gl.vertexAttribPointer(start_position, 3, gl.FLOAT, false, 36, 0);
103
- gl.enableVertexAttribArray(start_time);
104
- gl.vertexAttribPointer(start_time, 1, gl.FLOAT, false, 36, 12);
105
- gl.enableVertexAttribArray(start_color);
106
- gl.vertexAttribPointer(start_color, 3, gl.FLOAT, false, 36, 16);
107
- gl.enableVertexAttribArray(end_position);
108
- gl.vertexAttribPointer(end_position, 3, gl.FLOAT, false, 36, 36);
109
- gl.enableVertexAttribArray(end_time);
110
- gl.vertexAttribPointer(end_time, 1, gl.FLOAT, false, 36, 48);
111
- gl.enableVertexAttribArray(end_color);
112
- gl.vertexAttribPointer(end_color, 3, gl.FLOAT, false, 36, 52);
113
- gl.bindVertexArray(null);
114
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
115
- return program;
116
- }
117
- setOpacity(opacity) {
118
- const { gl, _globalsbuffer } = this;
119
- gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
120
- gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([opacity]));
121
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
122
- }
123
- setDrawCount(count) {
124
- this._drawCount = count;
125
- }
126
- setPointSize(size) {
127
- const { gl, _globalsbuffer } = this;
128
- gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
129
- gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array([size]));
130
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
131
- }
132
- setHeadTime(time) {
133
- const { gl, _globalsbuffer } = this;
134
- gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
135
- gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([time]));
136
- gl.bindBuffer(gl.UNIFORM_BUFFER, null);
137
- }
138
- draw() {
139
- const { gl, program, _vao, _drawCount } = this;
140
- gl.useProgram(program);
141
- gl.bindVertexArray(_vao);
142
- gl.disable(gl.DEPTH_TEST);
143
- gl.drawArrays(gl.POINTS, 0, _drawCount);
144
- gl.enable(gl.DEPTH_TEST);
145
- gl.bindVertexArray(null);
146
- }
147
- free() {
148
- const { gl, _vao, _globalsbuffer, program } = this;
149
- gl.deleteVertexArray(_vao);
150
- // gl.deleteBuffer(_attbuffer);
151
- gl.deleteBuffer(_globalsbuffer);
152
- gl.deleteProgram(program);
153
- }
154
- }
68
+ }`;
69
+
70
+
71
+ export default class ProgramPointLineStrip {
72
+
73
+ constructor(gl, globe, attrBuffer, options) {
74
+
75
+ this.gl = gl;
76
+ this._cameraBlockBindingPoint = 0;
77
+ this._globalsBlockBindingPoint = 1;
78
+ this.cameraUniformBlockTotem = globeProgramCache.getProgram(globe, CameraUniformBlockTotem);
79
+ this._vao = gl.createVertexArray();
80
+ this._attbuffer = attrBuffer;
81
+ this.program = this._createProgram();
82
+ this._drawCount = 0;
83
+
84
+ this._globalsbuffer = gl.createBuffer();
85
+ {
86
+ const { gl, _globalsbuffer } = this;
87
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
88
+ gl.bufferData(gl.UNIFORM_BUFFER, 12, gl.STREAM_DRAW);
89
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([0, options.opacity, options.pointSize]));
90
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, _globalsbuffer);
91
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
92
+ }
93
+ }
94
+
95
+
96
+ _createProgram() {
97
+ const gl = this.gl
98
+
99
+ const program = createProgram(gl, vertexShader, fragmentShader);
100
+ const ubo = this.cameraUniformBlockTotem.getUBO(); // ubo bl
101
+ const cameraBlockIndex = gl.getUniformBlockIndex(program, "GlobeCamera");
102
+ gl.uniformBlockBinding(program, cameraBlockIndex, this._cameraBlockBindingPoint);
103
+ const globalsBlockIndex = gl.getUniformBlockIndex(program, "Globals");
104
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, this._cameraBlockBindingPoint, ubo);
105
+ gl.uniformBlockBinding(program, globalsBlockIndex, this._globalsBlockBindingPoint);
106
+ gl.bindBufferBase(gl.UNIFORM_BUFFER, this._globalsBlockBindingPoint, this._globalsbuffer);
107
+
108
+ // numaralarda yanlışlık olabilir
109
+ const start_position = gl.getAttribLocation(program, "start_position");
110
+ const start_time = gl.getAttribLocation(program, "start_time");
111
+ const start_color = gl.getAttribLocation(program, "start_color");
112
+ const end_position = gl.getAttribLocation(program, "end_position");
113
+ const end_time = gl.getAttribLocation(program, "end_time");
114
+ const end_color = gl.getAttribLocation(program, "end_color");
115
+
116
+ gl.bindVertexArray(this._vao);
117
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._attbuffer);
118
+ gl.enableVertexAttribArray(start_position);
119
+ gl.vertexAttribPointer(start_position, 3, gl.FLOAT, false, 36, 0);
120
+ gl.enableVertexAttribArray(start_time);
121
+ gl.vertexAttribPointer(start_time, 1, gl.FLOAT, false, 36, 12);
122
+ gl.enableVertexAttribArray(start_color);
123
+ gl.vertexAttribPointer(start_color, 3, gl.FLOAT, false, 36, 16);
124
+ gl.enableVertexAttribArray(end_position);
125
+ gl.vertexAttribPointer(end_position, 3, gl.FLOAT, false, 36, 36);
126
+ gl.enableVertexAttribArray(end_time);
127
+ gl.vertexAttribPointer(end_time, 1, gl.FLOAT, false, 36, 48);
128
+ gl.enableVertexAttribArray(end_color);
129
+ gl.vertexAttribPointer(end_color, 3, gl.FLOAT, false, 36, 52);
130
+ gl.bindVertexArray(null);
131
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
132
+ return program;
133
+ }
134
+
135
+
136
+ setOpacity(opacity) {
137
+ const { gl, _globalsbuffer } = this;
138
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
139
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 4, new Float32Array([opacity]));
140
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
141
+ }
142
+
143
+ setDrawCount(count) {
144
+ this._drawCount = count;
145
+ }
146
+
147
+
148
+ setPointSize(size) {
149
+ const { gl, _globalsbuffer } = this;
150
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
151
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 8, new Float32Array([size]));
152
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
153
+ }
154
+
155
+
156
+ setHeadTime(time) {
157
+ const { gl, _globalsbuffer } = this;
158
+ gl.bindBuffer(gl.UNIFORM_BUFFER, _globalsbuffer);
159
+ gl.bufferSubData(gl.UNIFORM_BUFFER, 0, new Float32Array([time]));
160
+ gl.bindBuffer(gl.UNIFORM_BUFFER, null);
161
+ }
162
+
163
+
164
+ draw() {
165
+ const { gl, program, _vao, _drawCount } = this;
166
+ gl.useProgram(program);
167
+ gl.bindVertexArray(_vao);
168
+ gl.disable(gl.DEPTH_TEST);
169
+ gl.drawArrays(gl.POINTS, 0, _drawCount);
170
+ gl.enable(gl.DEPTH_TEST);
171
+ gl.bindVertexArray(null);
172
+ }
173
+
174
+
175
+ free() {
176
+ const { gl, _vao, _globalsbuffer, program } = this;
177
+ gl.deleteVertexArray(_vao);
178
+ // gl.deleteBuffer(_attbuffer);
179
+ gl.deleteBuffer(_globalsbuffer);
180
+ gl.deleteProgram(program);
181
+ }
182
+ }
@@ -0,0 +1 @@
1
+ TODO: delete program, programpoint, maybe adaptors. which are related to the old version of this plugin.
package/tsconfig.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2022",
4
+ "module": "es2015",
5
+ "outDir": "./dist",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "allowJs": true,
11
+ "declaration": false
12
+ },
13
+ "include": [
14
+ "**/*.ts", // Include all .ts files in the current directory and subdirectories
15
+ "**/*.js" // Include all .js files in the current directory and subdirectories
16
+ ],
17
+ "exclude": [
18
+ "node_modules",
19
+ "dist", // Exclude the output directory itself
20
+ "./tests/**/*" // Exclude tests directory
21
+ ]
22
+ }
@@ -0,0 +1,102 @@
1
+ interface LayerObjectObjectArray {
2
+ displayName: string;
3
+ layerType: number;
4
+ wkbGeom: null;
5
+ wfsLayerName: null;
6
+ objectType: string;
7
+ bbox: null;
8
+ startLod: number;
9
+ endLod: number;
10
+ continuousLOD: boolean;
11
+ MVTXYZName: string;
12
+ rasterize: boolean;
13
+ style: StyleObjectArray;
14
+ id: string;
15
+ }
16
+
17
+ interface LabelObjectArray {
18
+ offset: { x: number; y: number };
19
+ fontFamily: { hollowWidth: number };
20
+ vAlignment: number;
21
+ hAlignment: number;
22
+ size: number;
23
+ text: string;
24
+ }
25
+
26
+ declare module "@pirireis/webglobe" {
27
+ // A placeholder for the main globe object.
28
+ // It seems to have at least an `ObjectArray` property.
29
+ export interface CSGlobe {
30
+ ObjectArray: {
31
+ Add(object: LayerObjectObjectArray): void;
32
+ Delete(id: string): void;
33
+ GetDefaultStyle(): StyleObjectArray;
34
+ StyleChanged(object: LayerObjectObjectArray): void;
35
+ UpdateData(object: LayerObjectObjectArray, mode: any, buckets: DataBucketObjectArray[], options: { attribs: boolean; icon: boolean; text: boolean }): void;
36
+ SetData(object: LayerObjectObjectArray, data: DataBucketObjectArray): void;
37
+ };
38
+ }
39
+
40
+ // Enum for icon types, based on usage.
41
+ export enum CSIconTypes {
42
+ NOICON = 0,
43
+ // Other icon types can be added here.
44
+ }
45
+
46
+ // Enum for object types, based on usage.
47
+ export enum CSObjectTypes {
48
+ POINT = 1,
49
+ // Other object types like LINE, POLYGON can be added here.
50
+ }
51
+
52
+ // Enum for object array update operations.
53
+ export enum CSObjectArrayUpdateTypes {
54
+ ADD = 0,
55
+ UPDATE = 1,
56
+ DELETE = 2,
57
+ }
58
+
59
+
60
+ export enum CSZMode {
61
+ Z_MSL = 0,
62
+ Z_GROUND_PERVERTEX = 1,
63
+ Z_GROUND_FOLLOW = 2
64
+ }
65
+
66
+ export enum CSMeasureTextPositionTypes {
67
+ CENTER = 'center',
68
+ LEFT = 'left',
69
+ RIGHT = 'right',
70
+ TOP = 'top',
71
+ BOTTOM = 'bottom',
72
+ TOP_LEFT = 'top_left',
73
+ TOP_RIGHT = 'top_right',
74
+ BOTTOM_LEFT = 'bottom_left',
75
+ BOTTOM_RIGHT = 'bottom_right'
76
+ }
77
+
78
+ // Interface for the style of an object array.
79
+ export interface CSObjectArrayStyle {
80
+ labels: CSLabelStyle[];
81
+ fidKey: string;
82
+ iconType: CSIconTypes;
83
+ // Other style properties can be added here.
84
+ }
85
+
86
+ // Interface for the style of a label.
87
+ export interface CSLabelStyle {
88
+ text?: string;
89
+ vAlignment?: number;
90
+ hAlignment?: number;
91
+ size?: number;
92
+ drawAlways?: boolean;
93
+ fontFamily?: {
94
+ name?: string;
95
+ bold?: boolean;
96
+ hollow?: boolean;
97
+ hollowWidth?: number;
98
+ hollowOpacity?: number;
99
+ };
100
+ // Other label style properties can be added here.
101
+ }
102
+ }
@@ -0,0 +1,40 @@
1
+ declare module 'delaunator' {
2
+ export default class Delaunator<T extends ArrayLike<number> = Float64Array> {
3
+ /**
4
+ * Constructs a delaunay triangulation object given an array of points.
5
+ * @param points Array of points
6
+ * @param getX Optional function to extract x coordinate from point (defaults to p => p[0])
7
+ * @param getY Optional function to extract y coordinate from point (defaults to p => p[1])
8
+ */
9
+ static from<P>(
10
+ points: P[],
11
+ getX?: (p: P) => number,
12
+ getY?: (p: P) => number
13
+ ): Delaunator<Float64Array>;
14
+
15
+ /**
16
+ * Constructs a delaunay triangulation object given an array of point coordinates
17
+ * of the form: [x0, y0, x1, y1, ...]
18
+ * @param coords Array of coordinates
19
+ */
20
+ constructor(coords: T);
21
+
22
+ /** Array of point coordinates in the form [x0, y0, x1, y1, ...] */
23
+ coords: T;
24
+
25
+ /** Array of triangle vertex indices (each group of three numbers forms a triangle) */
26
+ triangles: Uint32Array;
27
+
28
+ /** Array of triangle half-edge indices for traversing the triangulation */
29
+ halfedges: Int32Array;
30
+
31
+ /** Array of indices that reference points on the convex hull, counter-clockwise */
32
+ hull: Uint32Array;
33
+
34
+ /**
35
+ * Updates the triangulation if coords values were modified in place.
36
+ * Useful for iterative relaxation algorithms.
37
+ */
38
+ update(): void;
39
+ }
40
+ }
@@ -0,0 +1,11 @@
1
+ declare module "earcut" {
2
+ /**
3
+ * Triangulate a polygon with holes.
4
+ * @param vertices is a flat array of vertex coordinates like [x0,y0, x1,y1, x2,y2, ...]
5
+ * @param holes is an array of hole indices if any (e.g.[5, 8] for a 12-vertex input would mean one hole with vertices 5–7 and another with 8–11).
6
+ * @param dimensions is the number of coordinates per vertex in the input array (2 by default ).Only two are used for triangulation (x and y), and the rest are ignored.
7
+ * @returns An array of triangle vertex indices.
8
+ */
9
+ function earcut(vertices: number[], holes?: number[], dimensions?: number): number[];
10
+ export default earcut;
11
+ }
@@ -0,0 +1,57 @@
1
+ declare module 'rbush' {
2
+ export interface BBox {
3
+ minX: number;
4
+ minY: number;
5
+ maxX: number;
6
+ maxY: number;
7
+ }
8
+
9
+ export default class RBush<T = any> {
10
+ constructor(maxEntries?: number);
11
+
12
+ /**
13
+ * Insert an item into the tree
14
+ */
15
+ insert(item: T & BBox): this;
16
+
17
+ /**
18
+ * Bulk-insert items into the tree
19
+ */
20
+ load(items: Array<T & BBox>): this;
21
+
22
+ /**
23
+ * Remove a previously inserted item
24
+ */
25
+ remove(item: T & BBox, equals?: (a: T & BBox, b: T & BBox) => boolean): this;
26
+
27
+ /**
28
+ * Remove all items within a bounding box
29
+ */
30
+ clear(): this;
31
+
32
+ /**
33
+ * Search for items intersecting a bounding box
34
+ */
35
+ search(bbox: BBox): Array<T & BBox>;
36
+
37
+ /**
38
+ * Search for all items contained within a bounding box
39
+ */
40
+ collides(bbox: BBox): boolean;
41
+
42
+ /**
43
+ * Export data as JSON object
44
+ */
45
+ toJSON(): any;
46
+
47
+ /**
48
+ * Import data from a JSON object
49
+ */
50
+ fromJSON(data: any): this;
51
+
52
+ /**
53
+ * Bulk-insert items and build the tree
54
+ */
55
+ all(): Array<T & BBox>;
56
+ }
57
+ }