@pirireis/webglobeplugins 0.9.9 → 0.9.11

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