@pirireis/webglobeplugins 0.9.6 → 0.9.7

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 (226) hide show
  1. package/package.json +5 -2
  2. package/Math/angle-calculation.js +0 -14
  3. package/Math/arc.ts +0 -76
  4. package/Math/bounds/line-bbox.js +0 -225
  5. package/Math/constants.ts +0 -11
  6. package/Math/frustum/camera.ts +0 -32
  7. package/Math/frustum/from-globeinfo.ts +0 -63
  8. package/Math/frustum/types.ts +0 -11
  9. package/Math/globe-util/horizon-plane.ts +0 -137
  10. package/Math/index.js +0 -0
  11. package/Math/juction/arc-plane.ts +0 -114
  12. package/Math/juction/line-sphere.ts +0 -30
  13. package/Math/juction/plane-plane.ts +0 -66
  14. package/Math/line.ts +0 -70
  15. package/Math/matrix4.ts +0 -0
  16. package/Math/methods.js +0 -237
  17. package/Math/plane.ts +0 -86
  18. package/Math/quaternion.ts +0 -120
  19. package/Math/roadmap.md +0 -10
  20. package/Math/types.ts +0 -45
  21. package/Math/utils.js +0 -3
  22. package/Math/vec3.ts +0 -155
  23. package/algorithms/search-binary.js +0 -14
  24. package/altitude-locator/adaptors.js +0 -0
  25. package/altitude-locator/draw-subset-obj.js +0 -27
  26. package/altitude-locator/keymethod.js +0 -0
  27. package/altitude-locator/plugin.js +0 -439
  28. package/altitude-locator/types.js +0 -26
  29. package/arrowfield/adaptor.js +0 -11
  30. package/arrowfield/index.js +0 -3
  31. package/arrowfield/plugin.js +0 -128
  32. package/bearing-line/index.js +0 -2
  33. package/bearing-line/plugin.js +0 -512
  34. package/circle-line-chain/chain-list-map.js +0 -221
  35. package/circle-line-chain/init.js +0 -0
  36. package/circle-line-chain/plugin.js +0 -469
  37. package/circle-line-chain/readme.md +0 -57
  38. package/circle-line-chain/util.js +0 -1
  39. package/compass-rose/compass-rose-padding-flat.js +0 -266
  40. package/compass-rose/compass-text-writer.js +0 -173
  41. package/compass-rose/index.js +0 -3
  42. package/compassrose/compassrose.js +0 -341
  43. package/compassrose/index.js +0 -2
  44. package/depth-locator/readme.md +0 -26
  45. package/globe-types.ts +0 -13
  46. package/heatwave/index.js +0 -4
  47. package/heatwave/isobar/objectarraylabels.js +0 -247
  48. package/heatwave/isobar/plugin.js +0 -340
  49. package/heatwave/isobar/quadtreecontours.js +0 -336
  50. package/heatwave/plugins/heatwaveglobeshell.js +0 -258
  51. package/jest.config.js +0 -6
  52. package/partialrings/buffer-manager.js +0 -89
  53. package/partialrings/goals.md +0 -17
  54. package/partialrings/index.js +0 -3
  55. package/partialrings/plugin.js +0 -160
  56. package/partialrings/program.js +0 -324
  57. package/pin/pin-object-array.js +0 -381
  58. package/pin/pin-point-totem.js +0 -77
  59. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -78
  60. package/point-heat-map/index.js +0 -0
  61. package/point-heat-map/plugin-webworker.js +0 -151
  62. package/point-heat-map/point-to-heat-map-flow.js +0 -150
  63. package/point-heat-map/readme.md +0 -15
  64. package/point-tracks/key-methods.js +0 -3
  65. package/point-tracks/plugin.js +0 -394
  66. package/programs/arrowfield/index.js +0 -2
  67. package/programs/arrowfield/logic.js +0 -286
  68. package/programs/arrowfield/object.js +0 -89
  69. package/programs/data2legend/density-to-legend.js +0 -115
  70. package/programs/data2legend/point-to-density-texture.js +0 -114
  71. package/programs/float2legendwithratio/index.js +0 -3
  72. package/programs/float2legendwithratio/logic.js +0 -194
  73. package/programs/float2legendwithratio/object.js +0 -141
  74. package/programs/globe-util/is-globe-moved.js +0 -27
  75. package/programs/globeshell/index.js +0 -2
  76. package/programs/globeshell/noise/noises.js +0 -0
  77. package/programs/globeshell/wiggle/index.js +0 -6
  78. package/programs/globeshell/wiggle/logic.js +0 -371
  79. package/programs/globeshell/wiggle/object.js +0 -93
  80. package/programs/helpers/blender/index.js +0 -0
  81. package/programs/helpers/blender/program.js +0 -91
  82. package/programs/helpers/fadeaway/index.js +0 -3
  83. package/programs/helpers/fadeaway/logic.js +0 -76
  84. package/programs/helpers/fadeaway/object.js +0 -20
  85. package/programs/helpers/index.js +0 -2
  86. package/programs/index.js +0 -21
  87. package/programs/interface.ts +0 -7
  88. package/programs/line-on-globe/angled-line.js +0 -206
  89. package/programs/line-on-globe/circle-accurate-3d.js +0 -167
  90. package/programs/line-on-globe/circle-accurate-flat.js +0 -262
  91. package/programs/line-on-globe/circle-accurate.js +0 -202
  92. package/programs/line-on-globe/circle.js +0 -191
  93. package/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -188
  94. package/programs/line-on-globe/index.js +0 -0
  95. package/programs/line-on-globe/lines-color-instanced-flat.js +0 -151
  96. package/programs/line-on-globe/linestrip.ts +0 -228
  97. package/programs/line-on-globe/naive-accurate-flexible.js +0 -239
  98. package/programs/line-on-globe/to-the-surface.js +0 -129
  99. package/programs/line-on-globe/util.js +0 -8
  100. package/programs/picking/pickable-renderer.js +0 -216
  101. package/programs/point-on-globe/element-globe-surface-glow.js +0 -168
  102. package/programs/point-on-globe/element-point-glow.js +0 -184
  103. package/programs/point-on-globe/square-pixel-point.js +0 -189
  104. package/programs/programcache.ts +0 -131
  105. package/programs/rings/distancering/circleflatprogram.js +0 -136
  106. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -378
  107. package/programs/rings/distancering/circlepaddysharedbuffer.js +0 -420
  108. package/programs/rings/distancering/index.js +0 -5
  109. package/programs/rings/distancering/paddyflatprogram.js +0 -146
  110. package/programs/rings/distancering/paddyflatprogram2d.js +0 -150
  111. package/programs/rings/distancering/paddyflatprogram3d.js +0 -146
  112. package/programs/rings/distancering/shader.js +0 -0
  113. package/programs/rings/index.js +0 -1
  114. package/programs/rings/partial-ring/piece-of-pie.js +0 -315
  115. package/programs/totems/camerauniformblock.d.ts +0 -48
  116. package/programs/totems/camerauniformblock.js +0 -197
  117. package/programs/totems/canvas-webglobe-info.js +0 -136
  118. package/programs/totems/gpu-selection-uniform-block.js +0 -132
  119. package/programs/totems/index.ts +0 -2
  120. package/programs/two-d/pixel-circle.js +0 -0
  121. package/programs/two-d/pixel-padding-for-compass.js +0 -174
  122. package/programs/util.js +0 -20
  123. package/programs/vectorfields/index.js +0 -3
  124. package/programs/vectorfields/logics/drawrectangleparticles.js +0 -125
  125. package/programs/vectorfields/logics/index.js +0 -5
  126. package/programs/vectorfields/logics/pixelbased.js +0 -161
  127. package/programs/vectorfields/logics/ubo.js +0 -64
  128. package/programs/vectorfields/pingpongbuffermanager.js +0 -80
  129. package/publish.bat +0 -60
  130. package/rangerings/enum.js +0 -3
  131. package/rangerings/index.js +0 -5
  132. package/rangerings/plugin.js +0 -649
  133. package/rangerings/rangeringangletext.js +0 -368
  134. package/rangerings/ring-account.js +0 -129
  135. package/shaders/fragment-toy/firework.js +0 -55
  136. package/shaders/fragment-toy/singularity.js +0 -59
  137. package/shape-on-terrain/arc/naive/plugin.ts +0 -304
  138. package/shape-on-terrain/goal.md +0 -12
  139. package/tests/Math/junction/arc-plane.test.ts +0 -133
  140. package/tests/Math/junction/plane-plane.test.ts +0 -82
  141. package/tests/Math/plane.test.ts +0 -43
  142. package/tests/Math/vec3.test.ts +0 -14
  143. package/timetracks/adaptors-line-strip.js +0 -80
  144. package/timetracks/adaptors.js +0 -133
  145. package/timetracks/index.js +0 -6
  146. package/timetracks/plugin-line-strip.js +0 -295
  147. package/timetracks/plugin.js +0 -304
  148. package/timetracks/program-line-strip.js +0 -688
  149. package/timetracks/program.js +0 -850
  150. package/timetracks/programpoint-line-strip.js +0 -175
  151. package/timetracks/programpoint.js +0 -168
  152. package/timetracks/readme.md +0 -1
  153. package/tsconfig.json +0 -22
  154. package/types.ts +0 -17
  155. package/util/account/bufferoffsetmanager.js +0 -209
  156. package/util/account/index.js +0 -6
  157. package/util/account/single-attribute-buffer-management/buffer-manager.ts +0 -119
  158. package/util/account/single-attribute-buffer-management/buffer-orchestrator.ts +0 -173
  159. package/util/account/single-attribute-buffer-management/index.ts +0 -13
  160. package/util/account/single-attribute-buffer-management/object-store.ts +0 -65
  161. package/util/account/single-attribute-buffer-management/types.ts +0 -39
  162. package/util/account/util.js +0 -22
  163. package/util/algorithms/index.js +0 -0
  164. package/util/algorithms/search-binary.js +0 -26
  165. package/util/check/get.js +0 -13
  166. package/util/check/index.js +0 -0
  167. package/util/check/typecheck.js +0 -39
  168. package/util/geometry/index.js +0 -53
  169. package/util/gl-util/buffer/attribute-loader.ts +0 -85
  170. package/util/gl-util/buffer/index.ts +0 -6
  171. package/util/gl-util/buffer/types.ts +0 -13
  172. package/util/gl-util/draw-options/methods.ts +0 -66
  173. package/util/gl-util/draw-options/types.ts +0 -28
  174. package/util/gl-util/uniform-block/manager.ts +0 -187
  175. package/util/gl-util/uniform-block/roadmap.md +0 -70
  176. package/util/gl-util/uniform-block/shader.js +0 -0
  177. package/util/gl-util/uniform-block/types.ts +0 -27
  178. package/util/heatwavedatamanager/datamanager.js +0 -168
  179. package/util/heatwavedatamanager/index.js +0 -3
  180. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +0 -133
  181. package/util/heatwavedatamanager/pointcoordsmeta.js +0 -22
  182. package/util/index.js +0 -13
  183. package/util/interpolation/index.js +0 -0
  184. package/util/interpolation/timetrack/index.js +0 -9
  185. package/util/interpolation/timetrack/timetrack-interpolator.js +0 -88
  186. package/util/interpolation/timetrack/web-worker-str.js +0 -180
  187. package/util/interpolation/timetrack/web-worker.js +0 -51
  188. package/util/jshelpers/data-filler.js +0 -19
  189. package/util/jshelpers/equality.js +0 -17
  190. package/util/jshelpers/index.js +0 -1
  191. package/util/jshelpers/timefilters.js +0 -32
  192. package/util/picking/fence.js +0 -46
  193. package/util/picking/picker-displayer.js +0 -177
  194. package/util/programs/draw-texture-on-canvas.js +0 -102
  195. package/util/programs/index.js +0 -1
  196. package/util/programs/shapesonglobe.js +0 -246
  197. package/util/programs/supersampletotextures.js +0 -142
  198. package/util/programs/texturetoglobe.js +0 -203
  199. package/util/shaderfunctions/geometrytransformations.ts +0 -388
  200. package/util/shaderfunctions/index.js +0 -2
  201. package/util/shaderfunctions/nodata.js +0 -10
  202. package/util/shaderfunctions/noisefunctions.js +0 -44
  203. package/util/surface-line-data/arc-bboxes.ts +0 -42
  204. package/util/surface-line-data/arcs-to-cuts.js +0 -74
  205. package/util/surface-line-data/cut-arc.js +0 -0
  206. package/util/surface-line-data/flow.ts +0 -52
  207. package/util/surface-line-data/rbush-manager.js +0 -0
  208. package/util/surface-line-data/types.ts +0 -27
  209. package/util/surface-line-data/web-worker.js +0 -0
  210. package/util/webglobe/gldefaultstates.js +0 -5
  211. package/util/webglobe/index.js +0 -2
  212. package/util/webglobe/rasteroverlay.js +0 -96
  213. package/util/webglobjectbuilders.ts +0 -456
  214. package/util/webglobjectbuilders1.js +0 -271
  215. package/waveparticles/adaptor.js +0 -16
  216. package/waveparticles/index.js +0 -3
  217. package/waveparticles/plugin.js +0 -313
  218. package/wind/imagetovectorfieldandmagnitude.js +0 -39
  219. package/wind/index.js +0 -5
  220. package/wind/plugin.js +0 -1057
  221. package/wind/vectorfieldimage.js +0 -27
  222. package/write-text/attached-text-writer.js +0 -105
  223. package/write-text/context-text.js +0 -125
  224. package/write-text/context-text3.js +0 -178
  225. package/write-text/index.js +0 -1
  226. package/write-text/writer-plugin.js +0 -7
@@ -1,439 +0,0 @@
1
- import './types.js';
2
-
3
- import { PickableRendererProgramCache } from '../programs/picking/pickable-renderer.js'
4
- import { ElementPointGlowProgramCache } from '../programs/point-on-globe/element-point-glow.js';
5
- import { ElementGlobeSufaceGlowCache } from '../programs/point-on-globe/element-globe-surface-glow.js';
6
-
7
- import { LineOnGlobeCache } from '../programs/line-on-globe/naive-accurate-flexible.js';
8
-
9
- import { BufferOrchestrator, BufferManager } from "../util/account";
10
-
11
- import { PickerDisplayer } from '../util/picking/picker-displayer.js';
12
- import { wgs84ToCartesian3d, wgs84ToMercator } from '../Math/methods.js';
13
- import { constraintFloat, opacityCheck } from '../util/check/typecheck.js';
14
- import { createBufferAndReadInfo } from '../util/gl-util/buffer/attribute-loader';
15
- import { CameraUniformBlockTotemCache } from '../programs/totems/camerauniformblock.js';
16
-
17
- /**
18
- * is used with depth we can create a line from surface to the point.
19
- */
20
- const glowOverSize = 1.35; // 1.25 is the default value in the shader
21
-
22
- class PointGlowLineToEarthPlugin {
23
- constructor({ isGlowPointOn = true, isGlowSurfaceOn = true }) {
24
- this.globe = null;
25
- this.gl = null;
26
- this._pickableWrapper = {};
27
- this._glowPointWrapper = {};
28
- this._glowSurfaceWrapper = {};
29
- this._lineProgramWrapper = {};
30
- this._modes = {
31
- isGlowPointOn,
32
- isGlowSurfaceOn
33
- }
34
- this._hoveredObjectId = null;
35
- this._lastWH = { w: 0, h: 0 };
36
-
37
- this._opacity = 1.0;
38
- this._hoverAgentParams = {
39
- timePass: 0,
40
- timeGap: 150,
41
- stillPicking: false
42
- };
43
- this._cameraBlockTotem = null;
44
- this._tickPhase = 0;
45
- this._parametersChanged = false;
46
- }
47
-
48
- init(globe, gl) {
49
- this.globe = globe;
50
- this.gl = gl;
51
- this._init();
52
- this._cameraBlockTotem = CameraUniformBlockTotemCache.get(this.globe);
53
- }
54
-
55
- _init() {
56
- const { globe, gl, _pickableWrapper, _glowPointWrapper, _glowSurfaceWrapper, _lineProgramWrapper } = this;
57
- const bufferType = "STATIC_DRAW";
58
- const initialCapacity = 50;
59
- this._bufferOrchestrator = new BufferOrchestrator({ initialCapacity });
60
-
61
- this._bufferManagersMap = new Map(
62
- [
63
- ['pos3D', {
64
- bufferManager: new BufferManager(gl, 6, { bufferType, initialCapacity }),
65
- adaptor: (item) => new Float32Array([...wgs84ToCartesian3d(item.long, item.lat, item.altitude / 1000), ...wgs84ToCartesian3d(item.long, item.lat, 0 / 1000)])
66
- }],
67
- ['pos2D', {
68
- bufferManager: new BufferManager(gl, 2, { bufferType, initialCapacity }),
69
- adaptor: (item) => new Float32Array(wgs84ToMercator(item.long, item.lat))
70
- }],
71
- ['rgba', {
72
- bufferManager: new BufferManager(gl, 8, { bufferType, initialCapacity }),
73
- adaptor: (item) => new Float32Array([...item.color, ...item.color])
74
- }],
75
- ['size', {
76
- bufferManager: new BufferManager(gl, 1, { bufferType, initialCapacity }),
77
- adaptor: (item) => new Float32Array([item.size])
78
- }],
79
-
80
- ]);
81
-
82
-
83
- _pickableWrapper.program = PickableRendererProgramCache.get(globe);
84
- _glowPointWrapper.program = ElementPointGlowProgramCache.get(globe);
85
- _lineProgramWrapper.program = LineOnGlobeCache.get(globe);
86
-
87
- this._pickerDisplayer = new PickerDisplayer(globe);
88
-
89
- const obj = (key) => key === null ? null : createBufferAndReadInfo(this._bufferManagersMap.get(key).bufferManager.buffer);
90
-
91
-
92
-
93
- _pickableWrapper.vao = _pickableWrapper.program.createVAO(
94
- createBufferAndReadInfo(this._bufferManagersMap.get('pos3D').bufferManager.buffer, 6 * 4, 0),
95
- createBufferAndReadInfo(this._bufferManagersMap.get('pos2D').bufferManager.buffer),
96
- createBufferAndReadInfo(this._bufferManagersMap.get('rgba').bufferManager.buffer, 8 * 4, 0),
97
- createBufferAndReadInfo(this._bufferManagersMap.get('size').bufferManager.buffer),
98
- );
99
- _pickableWrapper.vaoLine = _pickableWrapper.program.createVAO(
100
- ...['pos3D', 'pos2D', 'rgba', null].map(obj)
101
- );
102
-
103
- _pickableWrapper.vaoHoverPoint = _pickableWrapper.program.createVAO(
104
- createBufferAndReadInfo(this._bufferManagersMap.get('pos3D').bufferManager.buffer, 6 * 4, 0),
105
- createBufferAndReadInfo(this._bufferManagersMap.get('pos2D').bufferManager.buffer),
106
- null,
107
- createBufferAndReadInfo(this._bufferManagersMap.get('size').bufferManager.buffer),
108
- );
109
-
110
- _pickableWrapper.vaoHoverLine = _pickableWrapper.program.createVAO(
111
- ...['pos3D', 'pos2D', null, null].map(obj));
112
-
113
- _glowPointWrapper.vao = _glowPointWrapper.program.createVAO(
114
- createBufferAndReadInfo(this._bufferManagersMap.get('pos3D').bufferManager.buffer, 6 * 4, 0),
115
- createBufferAndReadInfo(this._bufferManagersMap.get('pos2D').bufferManager.buffer),
116
- null,
117
- createBufferAndReadInfo(this._bufferManagersMap.get('size').bufferManager.buffer),
118
- );
119
-
120
-
121
- // _lineProgramWrapper.vao = _lineProgramWrapper.program.createVAO(
122
- // ...[null, 'pos3D', null, 'reverse3D', null, null, "rgba"].map(obj)
123
- // );
124
-
125
- // _pickableWrapper.vaoRev = _pickableWrapper.program.createVAO(
126
- // ...['reverse3D', 'pos2D', 'rgba', 'size'].map(obj)
127
- // );
128
-
129
-
130
- _pickableWrapper.ubo = _pickableWrapper.program.createUBO();
131
- _pickableWrapper.ubo.update(
132
- new Map([
133
- ["u_rgba", [1, 1, 1, 1]],
134
- ["u_opacity", [1.0]],
135
- ["u_size_multiplier", [1.0]],
136
- ["u_size", [1.0]],
137
- ["u_is_circle", [1.0]],
138
- ["u_dash_opacity_multiplier", [0.75]],
139
- ["u_dash_phase", [1.57]],
140
- ["u_dash_count", [0.5]],
141
- ["u_is_circle", [1.0]]
142
- ]));
143
-
144
-
145
- _pickableWrapper.uboLine = _pickableWrapper.program.createUBO();
146
- _pickableWrapper.uboLine.update(
147
- new Map([
148
- ["u_rgba", [1, 1, 1, 1]],
149
- ["u_opacity", [1.0]],
150
- ["u_size_multiplier", [1.0]],
151
- ["u_size", [1.0]],
152
- ["u_draw_mode", [1.0]], // 0.0 for default, 1.0 for line
153
- ["u_dash_phase", [1.0]],
154
- ["u_dash_count", [1.0]],
155
- ["u_dash_opacity_multiplier", [1.0]],
156
- ["u_is_circle", [0.0]]
157
- ]));
158
-
159
- _pickableWrapper.uboLineGlow = _pickableWrapper.program.createUBO();
160
- _pickableWrapper.uboLineGlow.update(
161
- new Map([
162
- ["u_rgba", [1, 1, 1, 1]],
163
- ["u_opacity", [1.0]],
164
- ["u_size_multiplier", [1.0]],
165
- ["u_size", [1.0]],
166
- ["u_draw_mode", [1]], // 0.0 for default, 1.0 for line
167
- ["u_dash_phase", [0.0]],
168
- ["u_dash_count", [5.0]],
169
- ["u_dash_opacity_multiplier", [0.5]],
170
- ["u_is_circle", [0.0]]
171
- ]));
172
-
173
-
174
- // _pickableWrapper._phase = 1;
175
- // _pickableWrapper.phaseTick = () => {
176
- // _pickableWrapper._phase -= 0.003;
177
- // if (_pickableWrapper._phase < 0) {
178
- // _pickableWrapper._phase = 1;
179
- // }
180
- // _pickableWrapper.uboLineGlow.update(new Map([["u_dash_phase", [_pickableWrapper._phase]]]));
181
- // }
182
-
183
- _glowPointWrapper.ubo = _glowPointWrapper.program.createUBO();
184
- _glowPointWrapper.ubo.update(
185
- new Map([
186
- ["u_size", new Float32Array([30.0])],
187
- ["u_size_multiplier", new Float32Array([glowOverSize])],
188
- ]));
189
- // _glowPointWrapper._phase = 0;
190
- // _glowPointWrapper.phaseTick = () => {
191
- // _glowPointWrapper._phase += 0.0175;
192
- // if (_glowPointWrapper._phase < 0) {
193
- // _glowPointWrapper._phase = 1;
194
- // }
195
- // _glowPointWrapper.ubo.update(new Map([["u_phase", [_glowPointWrapper._phase]]]));
196
- // }
197
- }
198
-
199
- /**
200
- *
201
- * @param {Array<PointGlowData>} data
202
- */
203
- insertBulk(data) {
204
- const { _bufferManagersMap, _bufferOrchestrator, globe } = this;
205
- _bufferOrchestrator.insertBulk(data, _bufferManagersMap);
206
- this._changed();
207
- }
208
-
209
- setPointSizeMultiplier(sizeMultiplier) {
210
- constraintFloat(sizeMultiplier, 0.1, null);
211
- this._pickableWrapper.ubo.update(new Map([["u_size_multiplier", [sizeMultiplier]]]));
212
- this._glowPointWrapper.ubo.update(new Map([["u_size_multiplier", [sizeMultiplier * 1.25]]]));
213
- this._changed();
214
- }
215
-
216
- /**
217
- * @param {DrawRange} drawRange if null draws all
218
- * @returns
219
- */
220
- setDrawRange(drawRange = null) {
221
- this._drawRange = drawRange;
222
- this._changed();
223
- }
224
-
225
- /**
226
- *
227
- * sophisticated setDrawRange,
228
- * 3 concepts:
229
- */
230
-
231
-
232
-
233
- setGlowIndexes(glowIndexes) {
234
- const { gl } = this;
235
- if (!this._elementBuffer) {
236
- this._elementBuffer = gl.createBuffer();
237
- }
238
- // filter glowIndexes with DrawRange
239
- gl.bindElementArrayBuffer(this._elementBuffer);
240
- this._parametersChanged = true;
241
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(glowIndexes), gl.DYNAMIC_DRAW);
242
- }
243
-
244
- setOpacity(opacity) {
245
- opacityCheck(opacity);
246
- this._opacity = opacity;
247
- this._pickableWrapper.ubo.update(new Map([["u_opacity", [opacity]]]));
248
- this._pickableWrapper.uboLine.update(new Map([["u_opacity", [opacity]]]));
249
- this._glowPointWrapper.ubo.update(new Map([["u_opacity", [opacity * glowOverSize]]]));
250
- this._changed();
251
- }
252
-
253
-
254
- draw3D() {
255
-
256
- const { _pickableWrapper, _bufferOrchestrator, _drawRange, _pickerDisplayer } = this;
257
- const { globe, gl } = this;
258
- this._hoverAgent();
259
- this.resize();
260
- const is3D = globe.api_GetCurrentGeometry() == 0;
261
-
262
- const drawRange = _drawRange || { first: 0, count: _bufferOrchestrator.length };
263
-
264
- const drawOptionsPoint = {
265
- drawRange,
266
- }
267
-
268
- this._doDraw(drawOptionsPoint, is3D, drawRange);
269
-
270
- _pickerDisplayer.drawColorTexture();
271
-
272
- if (this._hoveredObjectId === -1) {
273
- return;
274
- }
275
-
276
- // hover draw
277
- gl.disable(gl.DEPTH_TEST);
278
- const { program, vaoHoverPoint, vaoHoverLine, uboLineGlow } = _pickableWrapper;
279
- const drawOptionsHoveredPoint = {
280
- drawRange: {
281
- first: this._hoveredObjectId,
282
- count: 1
283
- },
284
-
285
- }
286
-
287
- // program.draw(vaoHoverPoint, drawptionsHoveredPoint, ubo);
288
- if (true || this._modes.isGlowPointOn) {
289
-
290
- const { program, vao, ubo } = this._glowPointWrapper;
291
- // this._glowPointWrapper.phaseTick();
292
- program.draw(vao, drawOptionsHoveredPoint, ubo);
293
- } else {
294
- }
295
- this.globe.DrawRender();
296
-
297
- if (is3D) {
298
- const drawOptionsHoveredLine = {
299
- drawRange: {
300
- first: this._hoveredObjectId * 2,
301
- count: 2
302
- },
303
- drawMode: gl.LINES
304
- }
305
- // _pickableWrapper.phaseTick();
306
- program.draw(vaoHoverLine, drawOptionsHoveredLine, uboLineGlow);
307
- }
308
-
309
- this._phaseTick();
310
-
311
-
312
- gl.enable(gl.DEPTH_TEST);
313
- }
314
-
315
-
316
- _doDraw(drawOptionsPoint, is3D, drawRange) {
317
- const { gl, _pickableWrapper, _pickerDisplayer } = this;
318
- const { program, vao, ubo, uboLine, vaoLine } = _pickableWrapper;
319
-
320
- if (this._doesChanged()) {
321
- _pickerDisplayer.bindFBO();
322
- _pickerDisplayer.clearTextures();
323
- gl.enable(gl.DEPTH_TEST);
324
- program.draw(vao, drawOptionsPoint, ubo);
325
- }
326
-
327
-
328
- if (is3D) {
329
- const drawOptionsLine = {
330
- drawRange: {
331
- first: drawRange.first * 2,
332
- count: drawRange.count * 2
333
- },
334
- drawMode: gl.LINES
335
- }
336
- if (this._doesChanged) {
337
- uboLine.update(new Map([
338
- ["u_opacity", [0.01]]
339
- ]));
340
-
341
- program.draw(vaoLine, drawOptionsLine, uboLine);
342
- }
343
-
344
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
345
- uboLine.update(new Map([
346
- ["u_opacity", [this._opacity]]
347
- ]));
348
- program.draw(vaoLine, drawOptionsLine, uboLine);
349
- }
350
- }
351
-
352
-
353
-
354
- getCurrentSelection() {
355
- return this._hoveredObjectId;
356
- }
357
-
358
-
359
- resize() {
360
- const w = this.globe.api_ScrW();
361
- const h = this.globe.api_ScrH();
362
- if (w === this._lastWH.w && h === this._lastWH.h) return;
363
- this._lastWH.w = w;
364
- this._lastWH.h = h;
365
- this._pickerDisplayer.resize();
366
- this._changed();
367
- }
368
-
369
-
370
- free() {
371
-
372
- const { _pickableWrapper, _glowPointWrapper, _glowSurfaceWrapper, _lineProgramWrapper } = this;
373
-
374
- [_pickableWrapper, _glowPointWrapper, _glowSurfaceWrapper, _lineProgramWrapper].forEach((item) => {
375
- const { vao, ubo } = item;
376
- ubo?.free();
377
- this.gl.deleteVertexArray(vao);
378
- });
379
-
380
- PickableRendererProgramCache.release(this.globe);
381
- ElementPointGlowProgramCache.release(this.globe);
382
- // ElementGlobeSufaceGlowCache.release(this.globe); // TODO: uncomment when needed
383
- LineOnGlobeCache.release(this.globe);
384
- if (this._elementBuffer) this.gl.deleteBuffer(this._elementBuffer);
385
- this._pickerDisplayer.free();
386
- this._bufferManagersMap.forEach((item) => item.bufferManager.free());
387
- this._bufferManagersMap.clear();
388
- CameraUniformBlockTotemCache.release(this.globe);
389
- }
390
-
391
-
392
- _phaseTick() {
393
- this._tickPhase += 0.003;
394
- if (this._tickPhase > 1) {
395
- this._tickPhase = 0;
396
- }
397
- this._glowPointWrapper.ubo.update(new Map([["u_phase", [this._tickPhase * 2]]]));
398
- this._pickableWrapper.uboLineGlow.update(new Map([["u_dash_phase", [1 - this._tickPhase]]]));
399
- }
400
-
401
-
402
- _hoverAgent() {
403
- const { globe, _hoverAgentParams } = this;
404
- const pos = globe.api_GetMousePos();
405
- const currentTime = new Date().getTime();
406
- if (_hoverAgentParams.stillPicking || _hoverAgentParams.timePass > currentTime) {
407
- return
408
- };
409
-
410
- _hoverAgentParams.timePass = currentTime + _hoverAgentParams.timeGap;
411
-
412
- const x = pos.canvasX;
413
- const y = globe.api_ScrH() - pos.canvasY;
414
- _hoverAgentParams.stillPicking = true;
415
- this._pickerDisplayer.pickXY(x, y, 1, (idSet) => {
416
- _hoverAgentParams.stillPicking = false;
417
- if (idSet.size === 0) {
418
- this._hoveredObjectId = -1;
419
- return;
420
- }
421
- const index = [...idSet][0];
422
- if (index !== this._hoveredObjectId) {
423
- this._hoveredObjectId = index;
424
- this.globe.DrawRender();
425
- }
426
- });
427
- }
428
-
429
- _doesChanged() {
430
- return this._cameraBlockTotem.isMoved() || this._parametersChanged; // TODO: implement
431
- }
432
-
433
- _changed() {
434
- this._parametersChanged = true;
435
- this.globe.DrawRender();
436
- }
437
- }
438
-
439
- export { PointGlowLineToEarthPlugin };
@@ -1,26 +0,0 @@
1
- import "../types";
2
-
3
- /**
4
- * @typedef PointGlowData
5
- * @type {Object}
6
- * @property {number} key
7
- * @property {number} latitude
8
- * @property {number} longitude
9
- * @property {number} height
10
- * @property {number} size
11
- * @property {[number, number, number]} color
12
- */
13
-
14
-
15
-
16
-
17
- /**
18
- *
19
- *
20
- * drawSubsetOptions
21
- * @typedef DrawSubsetOptions
22
- * @type {Object}
23
- * @property {null|Color} color if provided, it will override the color
24
- * @property {Opacity} opacity default 1.0
25
- * @property {DrawRangeIndexParams} drawOptions
26
- */
@@ -1,11 +0,0 @@
1
- export function centigradePlus90ToRadians(centigradeArray, noDataValue = -9999) {
2
- const radiansArray = new Float32Array(centigradeArray.length);
3
- for (let i = 0; i < centigradeArray.length; i++) {
4
- if (centigradeArray[i] === noDataValue) {
5
- radiansArray[i] = noDataValue;
6
- continue;
7
- }
8
- radiansArray[i] = (centigradeArray[i] + 90.0) * Math.PI / 180;
9
- }
10
- return radiansArray;
11
- }
@@ -1,3 +0,0 @@
1
- import ArrowField from "./plugin";
2
- import { centigradePlus90ToRadians } from "./adaptor";
3
- export { ArrowField, centigradePlus90ToRadians };
@@ -1,128 +0,0 @@
1
-
2
- import { ArrowField } from '../programs';
3
-
4
- export default class ArrowFieldPlugin {
5
-
6
- constructor(id, {
7
- minLon = -180,
8
- maxLon = 180,
9
- minLat = -90,
10
- maxLat = 90,
11
- height = 0,
12
- opacity = 1,
13
- tailLengthRatio = 1,
14
- wingLengthRatio = 0.5,
15
- color = [0.04, 0.2, 0.8],
16
- targetWidth = 100,
17
- targetHeight = 100,
18
- data = null,
19
- dataWidth = null,
20
- dataHeight = null,
21
- maxMagnitude = null,
22
- noDataValue = null
23
- } = {}) {
24
- this.id = id;
25
-
26
- this.options = {
27
- minLon,
28
- maxLon,
29
- minLat,
30
- maxLat,
31
- height,
32
- tailLengthRatio,
33
- wingLengthRatio,
34
- opacity,
35
- color,
36
- data,
37
- targetHeight,
38
- targetWidth,
39
- dataWidth,
40
- dataHeight,
41
- maxMagnitude,
42
- noDataValue
43
- }
44
-
45
- this.arrowFieldObj = null;
46
- this._doDraw = true;
47
- }
48
-
49
- init(globe, gl) {
50
- this.globe = globe;
51
- this.gl = gl;
52
- this.arrowFieldObj = new ArrowField(gl, globe, this.options);
53
- }
54
-
55
- draw3D() {
56
- if (this._doDraw) {
57
- const { gl, arrowFieldObj } = this;
58
- gl.disable(gl.DEPTH_TEST);
59
- arrowFieldObj.draw();
60
- gl.enable(gl.DEPTH_TEST);
61
- }
62
- }
63
-
64
- free() {
65
- this.arrowFieldObj.free();
66
- this.arrowFieldObj = null;
67
- }
68
-
69
-
70
- // user interaction methods
71
-
72
- on() {
73
- this._doDraw = true;
74
- }
75
-
76
-
77
- off() {
78
- this._doDraw = false;
79
- }
80
-
81
- setBBox({ minLon = -180, maxLon = 180, minLat = -90, maxLat = 90 } = {}) {
82
- this.arrowFieldObj.setBBox({ minLon, maxLon, minLat, maxLat });
83
- }
84
-
85
- setHeight(height) {
86
- this.arrowFieldObj.update({ height });
87
- }
88
-
89
- setColor(color) {
90
- this.arrowFieldObj.update({ color });
91
- }
92
-
93
- setOpacity(opacity) {
94
- this.arrowFieldObj.update({ opacity });
95
- }
96
-
97
-
98
- setTailLengthRatio(tailLengthRatio) {
99
- this.arrowFieldObj.update({ tailLengthRatio });
100
- }
101
-
102
-
103
- setWingLengthRatio(wingLengthRatio) {
104
- this.arrowFieldObj.update({ wingLengthRatio });
105
- }
106
-
107
-
108
- setDataResolution(dataWidth, dataHeight) {
109
- this.arrowFieldObj.update({ dataWidth, dataHeight });
110
- }
111
-
112
- setTargetResolution(targetWidth, targetHeight) {
113
- this.arrowFieldObj.update({ resolution: [targetWidth, targetHeight] });
114
- }
115
-
116
-
117
- setMaxMagnitude(maxMagnitude) {
118
- this.arrowFieldObj.update({ maxMagnitude });
119
- }
120
-
121
- setNoDataValue(noDataValue) {
122
- this.arrowFieldObj.update({ noDataValue });
123
- }
124
-
125
- setData(rotationData) {
126
- this.arrowFieldObj.setData(rotationData);
127
- }
128
- }
@@ -1,2 +0,0 @@
1
- import BearingLinePlugin from "./plugin"
2
- export { BearingLinePlugin };