@pirireis/webglobeplugins 0.9.11 → 0.9.12

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 (166) hide show
  1. package/Math/angle-calculation.js +8 -8
  2. package/Math/arc.js +18 -18
  3. package/Math/bounds/line-bbox.js +78 -80
  4. package/Math/constants.js +3 -3
  5. package/Math/juction/arc-plane.js +23 -23
  6. package/Math/juction/line-sphere.js +11 -11
  7. package/Math/juction/plane-plane.js +11 -11
  8. package/Math/line.js +14 -16
  9. package/Math/methods.js +65 -70
  10. package/Math/plane.js +16 -18
  11. package/Math/quaternion.js +45 -49
  12. package/Math/utils.js +2 -2
  13. package/Math/vec3.js +42 -45
  14. package/algorithms/search-binary.js +4 -4
  15. package/altitude-locator/draw-subset-obj.js +7 -8
  16. package/altitude-locator/plugin.js +98 -114
  17. package/arrowfield/adaptor.js +3 -4
  18. package/arrowfield/index.js +2 -2
  19. package/arrowfield/plugin.js +62 -65
  20. package/bearing-line/index.js +1 -1
  21. package/bearing-line/plugin.js +200 -226
  22. package/circle-line-chain/chain-list-map.js +82 -88
  23. package/circle-line-chain/plugin.js +134 -165
  24. package/circle-line-chain/util.js +1 -1
  25. package/compass-rose/compass-rose-padding-flat.js +108 -133
  26. package/compass-rose/compass-text-writer.js +62 -70
  27. package/compass-rose/index.js +2 -2
  28. package/compassrose/compassrose.js +46 -50
  29. package/compassrose/index.js +1 -1
  30. package/heatwave/index.js +2 -2
  31. package/heatwave/isobar/objectarraylabels.js +44 -48
  32. package/heatwave/isobar/plugin.js +104 -123
  33. package/heatwave/isobar/quadtreecontours.js +76 -92
  34. package/heatwave/plugins/heatwaveglobeshell.js +69 -87
  35. package/index.js +11 -11
  36. package/package.json +1 -1
  37. package/partialrings/buffer-manager.js +32 -64
  38. package/partialrings/index.js +1 -1
  39. package/partialrings/plugin.js +48 -84
  40. package/partialrings/program.js +136 -47
  41. package/pin/pin-object-array.js +83 -86
  42. package/pin/pin-point-totem.js +21 -22
  43. package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
  44. package/point-heat-map/plugin-webworker.js +40 -45
  45. package/point-heat-map/point-to-heat-map-flow.js +40 -42
  46. package/point-tracks/key-methods.js +1 -1
  47. package/point-tracks/plugin.js +137 -162
  48. package/programs/arrowfield/index.js +1 -1
  49. package/programs/arrowfield/logic.js +170 -62
  50. package/programs/arrowfield/object.js +33 -35
  51. package/programs/data2legend/density-to-legend.js +45 -21
  52. package/programs/data2legend/point-to-density-texture.js +52 -27
  53. package/programs/float2legendwithratio/index.js +1 -1
  54. package/programs/float2legendwithratio/logic.js +88 -42
  55. package/programs/float2legendwithratio/object.js +43 -46
  56. package/programs/globe-util/is-globe-moved.js +10 -11
  57. package/programs/globeshell/index.js +1 -1
  58. package/programs/globeshell/wiggle/index.js +1 -1
  59. package/programs/globeshell/wiggle/logic.js +191 -98
  60. package/programs/globeshell/wiggle/object.js +33 -35
  61. package/programs/helpers/blender/program.js +36 -19
  62. package/programs/helpers/fadeaway/index.js +1 -1
  63. package/programs/helpers/fadeaway/logic.js +35 -13
  64. package/programs/helpers/fadeaway/object.js +9 -10
  65. package/programs/helpers/index.js +1 -1
  66. package/programs/index.js +8 -8
  67. package/programs/line-on-globe/angled-line.js +91 -32
  68. package/programs/line-on-globe/circle-accurate-3d.js +82 -32
  69. package/programs/line-on-globe/circle-accurate-flat.js +108 -50
  70. package/programs/line-on-globe/circle-accurate.js +103 -33
  71. package/programs/line-on-globe/circle.js +97 -32
  72. package/programs/line-on-globe/degree-padding-around-circle-3d.js +83 -33
  73. package/programs/line-on-globe/lines-color-instanced-flat.js +79 -34
  74. package/programs/line-on-globe/linestrip.js +111 -45
  75. package/programs/line-on-globe/naive-accurate-flexible.js +120 -50
  76. package/programs/line-on-globe/to-the-surface.js +58 -29
  77. package/programs/line-on-globe/util.js +1 -1
  78. package/programs/picking/pickable-renderer.js +117 -33
  79. package/programs/point-on-globe/element-globe-surface-glow.js +78 -38
  80. package/programs/point-on-globe/element-point-glow.js +103 -35
  81. package/programs/point-on-globe/square-pixel-point.js +76 -27
  82. package/programs/programcache.js +13 -13
  83. package/programs/rings/distancering/circleflatprogram.js +63 -21
  84. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +156 -145
  85. package/programs/rings/distancering/circlepaddysharedbuffer.js +121 -197
  86. package/programs/rings/distancering/index.js +4 -4
  87. package/programs/rings/distancering/paddyflatprogram.js +73 -20
  88. package/programs/rings/distancering/paddyflatprogram2d.js +75 -22
  89. package/programs/rings/distancering/paddyflatprogram3d.js +73 -20
  90. package/programs/rings/partial-ring/piece-of-pie.js +137 -35
  91. package/programs/totems/camerauniformblock.js +64 -51
  92. package/programs/totems/canvas-webglobe-info.js +48 -40
  93. package/programs/totems/gpu-selection-uniform-block.js +44 -40
  94. package/programs/totems/index.js +1 -1
  95. package/programs/two-d/pixel-padding-for-compass.js +90 -29
  96. package/programs/util.js +6 -7
  97. package/programs/vectorfields/index.js +1 -1
  98. package/programs/vectorfields/logics/drawrectangleparticles.js +70 -29
  99. package/programs/vectorfields/logics/index.js +3 -3
  100. package/programs/vectorfields/logics/pixelbased.js +91 -35
  101. package/programs/vectorfields/logics/ubo.js +31 -25
  102. package/programs/vectorfields/pingpongbuffermanager.js +30 -34
  103. package/rangerings/index.js +4 -4
  104. package/rangerings/plugin.js +202 -258
  105. package/rangerings/rangeringangletext.js +108 -120
  106. package/rangerings/ring-account.js +52 -69
  107. package/shaders/fragment-toy/firework.js +55 -1
  108. package/shaders/fragment-toy/singularity.js +55 -1
  109. package/timetracks/adaptors-line-strip.js +26 -37
  110. package/timetracks/adaptors.js +47 -61
  111. package/timetracks/index.js +4 -4
  112. package/timetracks/plugin-line-strip.js +63 -71
  113. package/timetracks/plugin.js +69 -77
  114. package/timetracks/program-line-strip.js +296 -103
  115. package/timetracks/program.js +419 -113
  116. package/timetracks/programpoint-line-strip.js +97 -44
  117. package/timetracks/programpoint.js +90 -44
  118. package/util/account/bufferoffsetmanager.js +72 -95
  119. package/util/account/index.js +1 -1
  120. package/util/account/single-attribute-buffer-management/buffer-manager.js +44 -44
  121. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +68 -94
  122. package/util/account/single-attribute-buffer-management/index.js +3 -3
  123. package/util/account/single-attribute-buffer-management/object-store.js +29 -30
  124. package/util/account/util.js +2 -4
  125. package/util/algorithms/search-binary.js +4 -4
  126. package/util/check/get.js +5 -5
  127. package/util/check/typecheck.js +13 -15
  128. package/util/geometry/index.js +9 -11
  129. package/util/gl-util/buffer/attribute-loader.js +8 -20
  130. package/util/gl-util/buffer/index.js +1 -1
  131. package/util/gl-util/draw-options/methods.js +8 -9
  132. package/util/gl-util/uniform-block/manager.js +67 -67
  133. package/util/heatwavedatamanager/datamanager.js +56 -116
  134. package/util/heatwavedatamanager/index.js +2 -2
  135. package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +37 -40
  136. package/util/heatwavedatamanager/pointcoordsmeta.js +9 -10
  137. package/util/index.js +6 -6
  138. package/util/interpolation/timetrack/index.js +1 -1
  139. package/util/interpolation/timetrack/timetrack-interpolator.js +27 -29
  140. package/util/interpolation/timetrack/web-worker-str.js +179 -1
  141. package/util/interpolation/timetrack/web-worker.js +4 -4
  142. package/util/jshelpers/data-filler.js +7 -7
  143. package/util/jshelpers/timefilters.js +7 -7
  144. package/util/picking/fence.js +7 -7
  145. package/util/picking/picker-displayer.js +46 -52
  146. package/util/programs/draw-texture-on-canvas.js +39 -21
  147. package/util/programs/shapesonglobe.js +104 -64
  148. package/util/programs/supersampletotextures.js +45 -39
  149. package/util/programs/texturetoglobe.js +98 -48
  150. package/util/shaderfunctions/geometrytransformations.js +322 -27
  151. package/util/shaderfunctions/nodata.js +7 -1
  152. package/util/shaderfunctions/noisefunctions.js +39 -9
  153. package/util/surface-line-data/arcs-to-cuts.js +20 -23
  154. package/util/webglobe/rasteroverlay.js +35 -37
  155. package/util/webglobjectbuilders.js +55 -60
  156. package/util/webglobjectbuilders1.js +48 -49
  157. package/waveparticles/adaptor.js +6 -7
  158. package/waveparticles/index.js +2 -2
  159. package/waveparticles/plugin.js +79 -84
  160. package/wind/imagetovectorfieldandmagnitude.js +15 -15
  161. package/wind/index.js +4 -4
  162. package/wind/plugin.js +453 -251
  163. package/wind/vectorfieldimage.js +5 -5
  164. package/write-text/attached-text-writer.js +46 -48
  165. package/write-text/context-text.js +51 -58
  166. package/write-text/context-text3.js +69 -74
@@ -34,11 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.programCache = void 0;
37
- var util_1 = require("../../../util");
38
- var camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
39
- var programcache_1 = require("../../programcache");
40
- var CIRCLE_EDGE_COUNT = 360;
41
- var vertexShader = "#version 300 es " +
37
+ const util_1 = require("../../../util");
38
+ const camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
39
+ const programcache_1 = require("../../programcache");
40
+ const CIRCLE_EDGE_COUNT = 360;
41
+ const vertexShader = `#version 300 es ` +
42
42
  util_1.shaderfunctions.PI +
43
43
  util_1.shaderfunctions.R +
44
44
  util_1.shaderfunctions.POLE +
@@ -48,11 +48,54 @@ var vertexShader = "#version 300 es " +
48
48
  util_1.shaderfunctions.longLatRadToCartesian3D +
49
49
  util_1.shaderfunctions.circleLimpFromLongLatRadCenterCartesian3D +
50
50
  util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorCompass +
51
- util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + "\n\nuniform int compass;\nuniform float circle_edge_count;\n\nuniform float opacity;\n\nin vec2 center;\nin float radius;\nin vec4 color;\nin float flag;\nout vec4 v_color;\nout vec2 v_limp;\n\nvoid main() {\n if( flag == 1.0 || radius == 0.0) return; // flag 1.0 is hide\n v_color = vec4(color.rgb, color.a * opacity);\n if ( gl_VertexID == 270 ) v_color.rgb += 0.2;\n float angle = 3.1415926535897932384626433832795 * 2.0 * (float(gl_VertexID) / circle_edge_count);\n if ( is3D ){\n gl_Position = projection * view * vec4(\n circleLimpFromLongLatRadCenterCartesian3D( center, radius, angle) - translate, 1.0);\n v_limp = vec2(0.0, 0.0);\n return;\n }\n vec2 limp;\n if ( compass == 1 ){\n limp = circleLimpFromLongLatRadCenterMercatorCompass(center, radius, angle);\n } else {\n limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius, angle);\n } \n v_limp = limp;\n gl_Position = mercatorXYToGLPosition(limp);\n \n}";
52
- var fragmentShader = "#version 300 es\nprecision highp float;" +
53
- util_1.shaderfunctions.POLE + "\n\nin vec4 v_color;\nin vec2 v_limp;\nout vec4 outColor;\nvoid main() {\n if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }\n outColor = v_color;\n}";
54
- var Logic = /** @class */ (function () {
55
- function Logic(globe) {
51
+ util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + `
52
+
53
+ uniform int compass;
54
+ uniform float circle_edge_count;
55
+
56
+ uniform float opacity;
57
+
58
+ in vec2 center;
59
+ in float radius;
60
+ in vec4 color;
61
+ in float flag;
62
+ out vec4 v_color;
63
+ out vec2 v_limp;
64
+
65
+ void main() {
66
+ if( flag == 1.0 || radius == 0.0) return; // flag 1.0 is hide
67
+ v_color = vec4(color.rgb, color.a * opacity);
68
+ if ( gl_VertexID == 270 ) v_color.rgb += 0.2;
69
+ float angle = 3.1415926535897932384626433832795 * 2.0 * (float(gl_VertexID) / circle_edge_count);
70
+ if ( is3D ){
71
+ gl_Position = projection * view * vec4(
72
+ circleLimpFromLongLatRadCenterCartesian3D( center, radius, angle) - translate, 1.0);
73
+ v_limp = vec2(0.0, 0.0);
74
+ return;
75
+ }
76
+ vec2 limp;
77
+ if ( compass == 1 ){
78
+ limp = circleLimpFromLongLatRadCenterMercatorCompass(center, radius, angle);
79
+ } else {
80
+ limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius, angle);
81
+ }
82
+ v_limp = limp;
83
+ gl_Position = mercatorXYToGLPosition(limp);
84
+
85
+ }`;
86
+ const fragmentShader = `#version 300 es
87
+ precision highp float;` +
88
+ util_1.shaderfunctions.POLE + `
89
+
90
+ in vec4 v_color;
91
+ in vec2 v_limp;
92
+ out vec4 outColor;
93
+ void main() {
94
+ if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }
95
+ outColor = v_color;
96
+ }`;
97
+ class Logic {
98
+ constructor(globe) {
56
99
  this.globe = globe;
57
100
  this.gl = globe.gl;
58
101
  this.program = (0, util_1.createProgram)(this.gl, vertexShader, fragmentShader);
@@ -64,7 +107,7 @@ var Logic = /** @class */ (function () {
64
107
  }
65
108
  this.cameraBlockBindingPoint = 0;
66
109
  this.cameraBlockTotem = programcache_1.globeProgramCache.getProgram(globe, camerauniformblock_1.default);
67
- var cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
110
+ const cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
68
111
  this.gl.uniformBlockBinding(this.program, cameraBlockIndex, this.cameraBlockBindingPoint);
69
112
  this._opacityLocation = this.gl.getUniformLocation(this.program, "opacity");
70
113
  this._compassLocation = this.gl.getUniformLocation(this.program, "compass");
@@ -73,7 +116,7 @@ var Logic = /** @class */ (function () {
73
116
  this._compassmode = 1;
74
117
  this._opacity = 1.0;
75
118
  {
76
- var currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
119
+ const currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
77
120
  this.gl.useProgram(this.program);
78
121
  this.gl.uniform1i(this._compassLocation, 1);
79
122
  this.gl.uniform1f(this._circleEdgeCountLocation, CIRCLE_EDGE_COUNT);
@@ -81,8 +124,8 @@ var Logic = /** @class */ (function () {
81
124
  this.gl.useProgram(currentProgram);
82
125
  }
83
126
  }
84
- Logic.prototype.draw = function (attrBufferManager, compass, circleEdgeCount, opacity) {
85
- var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBlockBindingPoint = _a.cameraBlockBindingPoint;
127
+ draw(attrBufferManager, compass, circleEdgeCount, opacity) {
128
+ const { gl, program, cameraBlockTotem, cameraBlockBindingPoint } = this;
86
129
  gl.useProgram(program);
87
130
  cameraBlockTotem.bind(cameraBlockBindingPoint);
88
131
  attrBufferManager.bindCircleVAO();
@@ -101,14 +144,13 @@ var Logic = /** @class */ (function () {
101
144
  gl.drawArraysInstanced(gl.LINE_LOOP, 0, circleEdgeCount, attrBufferManager.length);
102
145
  gl.bindVertexArray(null);
103
146
  cameraBlockTotem.unbind(cameraBlockBindingPoint);
104
- };
105
- Logic.prototype.free = function () {
147
+ }
148
+ free() {
106
149
  this.gl.deleteProgram(this.program);
107
150
  programcache_1.globeProgramCache.releaseProgram(this.globe, camerauniformblock_1.default);
108
- };
109
- return Logic;
110
- }());
151
+ }
152
+ }
111
153
  exports.programCache = Object.freeze({
112
- getProgram: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
113
- releaseProgram: function (globe) { programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
154
+ getProgram: (globe) => { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
155
+ releaseProgram: (globe) => { programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
114
156
  });
@@ -1,19 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
3
  if (k2 === undefined) k2 = k;
19
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -49,11 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
49
34
  })();
50
35
  Object.defineProperty(exports, "__esModule", { value: true });
51
36
  exports.BufferManager = exports.PaddingFreeAngleCache = void 0;
52
- var util_1 = require("../../../util");
53
- var account_1 = require("../../../util/account");
54
- var camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
55
- var programcache_1 = require("../../programcache");
56
- var vertexShader = "#version 300 es " +
37
+ const util_1 = require("../../../util");
38
+ const account_1 = require("../../../util/account");
39
+ const camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
40
+ const programcache_1 = require("../../programcache");
41
+ const vertexShader = `#version 300 es ` +
57
42
  util_1.shaderfunctions.PI +
58
43
  util_1.shaderfunctions.R +
59
44
  util_1.shaderfunctions.POLE +
@@ -63,16 +48,67 @@ var vertexShader = "#version 300 es " +
63
48
  util_1.shaderfunctions.longLatRadToCartesian3D +
64
49
  util_1.shaderfunctions.circleLimpFromLongLatRadCenterCartesian3D +
65
50
  util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorCompass +
66
- util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + "\n\nin vec2 center;\nin float radius;\nin float pad_range;\nin vec4 color;\nin float flag;\nin float pad_angle;\n\nuniform int compass;\n\nuniform float opacity;\n\nout vec2 v_limp;\nout vec4 v_color;\n\n\nvoid main() { \n if( flag == 1.0 || radius == 0.0 ) return; // 1.0 is hide \n v_color = vec4(color.rgb, color.a * opacity);\n\n if ( pad_angle == 0.0 ) v_color.rgb -= 0.2;\n gl_PointSize = 2.0;\n\n float odd = mod(float(gl_VertexID), 2.0);\n float index = (float(gl_VertexID)- odd ) / 2.0;\n float angle = pad_angle - 1.5707963267948966192313216916398;\n float radius_ = radius - (pad_range * odd);\n\n if (is3D){ \n gl_Position = projection * view * vec4(\n circleLimpFromLongLatRadCenterCartesian3D( center, radius_, angle) - translate, 1.0);\n v_limp = vec2(0.0, 0.0);\n return;\n }\n vec2 limp;\n if ( compass == 1 ){\n limp = circleLimpFromLongLatRadCenterMercatorCompass(center , radius_, angle);\n } else {\n limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius_, angle);\n }\n v_limp = limp;\n gl_Position = mercatorXYToGLPosition(limp);\n}";
67
- var fragmentShader = "#version 300 es\nprecision highp float; " +
68
- util_1.shaderfunctions.POLE + "\nin vec4 v_color;\nin vec2 v_limp;\nout vec4 outColor;\nvoid main() {\n if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }\n outColor = v_color;\n}";
69
- var Logic = /** @class */ (function () {
70
- function Logic(globe) {
51
+ util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + `
52
+
53
+ in vec2 center;
54
+ in float radius;
55
+ in float pad_range;
56
+ in vec4 color;
57
+ in float flag;
58
+ in float pad_angle;
59
+
60
+ uniform int compass;
61
+
62
+ uniform float opacity;
63
+
64
+ out vec2 v_limp;
65
+ out vec4 v_color;
66
+
67
+
68
+ void main() {
69
+ if( flag == 1.0 || radius == 0.0 ) return; // 1.0 is hide
70
+ v_color = vec4(color.rgb, color.a * opacity);
71
+
72
+ if ( pad_angle == 0.0 ) v_color.rgb -= 0.2;
73
+ gl_PointSize = 2.0;
74
+
75
+ float odd = mod(float(gl_VertexID), 2.0);
76
+ float index = (float(gl_VertexID)- odd ) / 2.0;
77
+ float angle = pad_angle - 1.5707963267948966192313216916398;
78
+ float radius_ = radius - (pad_range * odd);
79
+
80
+ if (is3D){
81
+ gl_Position = projection * view * vec4(
82
+ circleLimpFromLongLatRadCenterCartesian3D( center, radius_, angle) - translate, 1.0);
83
+ v_limp = vec2(0.0, 0.0);
84
+ return;
85
+ }
86
+ vec2 limp;
87
+ if ( compass == 1 ){
88
+ limp = circleLimpFromLongLatRadCenterMercatorCompass(center , radius_, angle);
89
+ } else {
90
+ limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius_, angle);
91
+ }
92
+ v_limp = limp;
93
+ gl_Position = mercatorXYToGLPosition(limp);
94
+ }`;
95
+ const fragmentShader = `#version 300 es
96
+ precision highp float; ` +
97
+ util_1.shaderfunctions.POLE + `
98
+ in vec4 v_color;
99
+ in vec2 v_limp;
100
+ out vec4 outColor;
101
+ void main() {
102
+ if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }
103
+ outColor = v_color;
104
+ }`;
105
+ class Logic {
106
+ constructor(globe) {
71
107
  this.globe = globe;
72
108
  this.gl = globe.gl;
73
109
  this.program = (0, util_1.createProgram)(this.gl, vertexShader, fragmentShader);
74
110
  {
75
- var gl = this.gl;
111
+ const gl = this.gl;
76
112
  // assign attribute locations
77
113
  gl.bindAttribLocation(this.program, 0, "center");
78
114
  gl.bindAttribLocation(this.program, 1, "radius");
@@ -82,14 +118,14 @@ var Logic = /** @class */ (function () {
82
118
  gl.bindAttribLocation(this.program, 5, "pad_angle");
83
119
  }
84
120
  this.cameraBlockBindingPoint = 0;
85
- var cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
121
+ const cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
86
122
  this.gl.uniformBlockBinding(this.program, cameraBlockIndex, this.cameraBlockBindingPoint);
87
123
  this.cameraBlockTotem = programcache_1.globeProgramCache.getProgram(globe, camerauniformblock_1.default);
88
124
  this._compassLocation = this.gl.getUniformLocation(this.program, "compass");
89
125
  this._opacityLocation = this.gl.getUniformLocation(this.program, "opacity");
90
126
  this._opacity = 1.0;
91
127
  {
92
- var currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
128
+ const currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
93
129
  this.gl.useProgram(this.program);
94
130
  this.gl.uniform1i(this._compassLocation, 1);
95
131
  this.gl.uniform1f(this._opacityLocation, 1.0);
@@ -97,8 +133,8 @@ var Logic = /** @class */ (function () {
97
133
  this.gl.useProgram(currentProgram);
98
134
  }
99
135
  }
100
- Logic.prototype.draw = function (attrBufferManager, compass, opacity) {
101
- var _a = this, gl = _a.gl, program = _a.program, cameraBlockBindingPoint = _a.cameraBlockBindingPoint, cameraBlockTotem = _a.cameraBlockTotem, _compassLocation = _a._compassLocation;
136
+ draw(attrBufferManager, compass, opacity) {
137
+ const { gl, program, cameraBlockBindingPoint, cameraBlockTotem, _compassLocation } = this;
102
138
  gl.useProgram(program);
103
139
  attrBufferManager.bindPaddingVAO();
104
140
  cameraBlockTotem.bind(cameraBlockBindingPoint);
@@ -115,33 +151,29 @@ var Logic = /** @class */ (function () {
115
151
  cameraBlockTotem.unbind(cameraBlockBindingPoint);
116
152
  gl.enable(gl.DEPTH_TEST);
117
153
  gl.bindVertexArray(null);
118
- };
119
- Logic.prototype.createBuffer = function (_a) {
120
- var _b = _a === void 0 ? {} : _a, _c = _b.bufferType, bufferType = _c === void 0 ? "DYNAMIC_DRAW" : _c, _d = _b.initialRingCapacity, initialRingCapacity = _d === void 0 ? 10 : _d;
154
+ }
155
+ createBuffer({ bufferType = "DYNAMIC_DRAW", initialRingCapacity = 10 } = {}) {
121
156
  return new BufferManager(this.gl, bufferType, initialRingCapacity);
122
- };
123
- return Logic;
124
- }());
157
+ }
158
+ }
125
159
  exports.PaddingFreeAngleCache = Object.freeze({
126
- getProgram: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
127
- releaseProgram: function (globe) { return programcache_1.globeProgramCache.releaseProgram(globe, Logic); }
160
+ getProgram: (globe) => programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic),
161
+ releaseProgram: (globe) => programcache_1.globeProgramCache.releaseProgram(globe, Logic)
128
162
  });
129
- var BufferManager = /** @class */ (function (_super) {
130
- __extends(BufferManager, _super);
131
- function BufferManager(gl, bufferType, initialRingCapacity) {
132
- if (initialRingCapacity === void 0) { initialRingCapacity = 10; }
133
- var _this = _super.call(this, 10, { capacity: initialRingCapacity, bufferType: bufferType }) || this;
134
- _this.gl = gl;
135
- _this.bufferType = bufferType;
136
- _this.buffer = gl.createBuffer();
137
- gl.bindBuffer(gl.ARRAY_BUFFER, _this.buffer);
138
- gl.bufferData(gl.ARRAY_BUFFER, _this.capacity * _this.itemSize * 4, gl[bufferType]);
163
+ class BufferManager extends account_1.BufferOffsetManager {
164
+ constructor(gl, bufferType, initialRingCapacity = 10) {
165
+ super(10, { capacity: initialRingCapacity, bufferType });
166
+ this.gl = gl;
167
+ this.bufferType = bufferType;
168
+ this.buffer = gl.createBuffer();
169
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
170
+ gl.bufferData(gl.ARRAY_BUFFER, this.capacity * this.itemSize * 4, gl[bufferType]);
139
171
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
140
- _this._centerMaps = new Map();
141
- _this.vao = gl.createVertexArray();
172
+ this._centerMaps = new Map();
173
+ this.vao = gl.createVertexArray();
142
174
  {
143
- gl.bindVertexArray(_this.vao);
144
- gl.bindBuffer(gl.ARRAY_BUFFER, _this.buffer);
175
+ gl.bindVertexArray(this.vao);
176
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
145
177
  gl.enableVertexAttribArray(0);
146
178
  gl.enableVertexAttribArray(1);
147
179
  gl.enableVertexAttribArray(2);
@@ -164,26 +196,24 @@ var BufferManager = /** @class */ (function (_super) {
164
196
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
165
197
  gl.bindVertexArray(null);
166
198
  }
167
- return _this;
168
199
  }
169
- BufferManager.prototype.__centerMapMethod = function (rings, paddingAngles) {
200
+ __centerMapMethod(rings, paddingAngles) {
170
201
  return new Map([
171
202
  ["rings", rings],
172
203
  ["paddingAngles", paddingAngles]
173
204
  ]);
174
- };
175
- BufferManager.prototype.bindPaddingVAO = function () {
205
+ }
206
+ bindPaddingVAO() {
176
207
  this.gl.bindVertexArray(this.vao);
177
- };
208
+ }
178
209
  //TODO: implement this
179
210
  // insertBulk is gone. no update feature
180
211
  // addBulk is added.
181
212
  // deletes old centers given
182
- BufferManager.prototype.insertBulk = function (data) {
183
- var _a = this, gl = _a.gl, buffer = _a.buffer;
184
- var deleteCentersList = [];
185
- for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
186
- var centerID = data_1[_i].centerID;
213
+ insertBulk(data) {
214
+ const { gl, buffer } = this;
215
+ const deleteCentersList = [];
216
+ for (const { centerID } of data) {
187
217
  if (this._centerMaps.has(centerID)) {
188
218
  deleteCentersList.push(centerID);
189
219
  }
@@ -191,23 +221,20 @@ var BufferManager = /** @class */ (function (_super) {
191
221
  if (deleteCentersList.length > 0) {
192
222
  this.removeCenters(deleteCentersList);
193
223
  }
194
- var requiredSpace = this.__requiredSpaceForBulk(data);
195
- var spaceLeft = this.spaceLeft;
224
+ const requiredSpace = this.__requiredSpaceForBulk(data);
225
+ const spaceLeft = this.spaceLeft;
196
226
  // console.log("space left:", spaceLeft, "required space:", requiredSpace);
197
227
  if (requiredSpace > spaceLeft) {
198
228
  // console.log("new capacity:", this.capacity + requiredSpace - spaceLeft)
199
229
  this.extendBuffer(this.capacity + requiredSpace - spaceLeft);
200
230
  }
201
- var items = [];
202
- for (var _b = 0, data_2 = data; _b < data_2.length; _b++) {
203
- var _c = data_2[_b], centerID = _c.centerID, x = _c.x, y = _c.y, rgba = _c.rgba, paddingAngles = _c.paddingAngles, _d = _c.hide, hide = _d === void 0 ? 0 : _d, rings = _c.rings;
231
+ const items = [];
232
+ for (const { centerID, x, y, rgba, paddingAngles, hide = 0, rings } of data) {
204
233
  this._centerMaps.set(centerID, this.__centerMapMethod(rings, paddingAngles)); // x,y, rgba, hide prograbably not needed
205
- for (var _e = 0, rings_1 = rings; _e < rings_1.length; _e++) {
206
- var _f = rings_1[_e], ringID = _f.ringID, radius = _f.radius, padding = _f.padding;
207
- for (var _g = 0, paddingAngles_1 = paddingAngles; _g < paddingAngles_1.length; _g++) {
208
- var paddingAngle = paddingAngles_1[_g];
209
- var _offsetMapKey = "".concat(centerID, "_").concat(ringID, "_").concat(paddingAngle);
210
- var offset = this.getOffset(_offsetMapKey) | this.nextOffset();
234
+ for (const { ringID, radius, padding } of rings) {
235
+ for (const paddingAngle of paddingAngles) {
236
+ const _offsetMapKey = `${centerID}_${ringID}_${paddingAngle}`;
237
+ const offset = this.getOffset(_offsetMapKey) | this.nextOffset();
211
238
  items.push({
212
239
  offset: offset,
213
240
  payload: new Float32Array([x, y, radius, padding, rgba[0], rgba[1], rgba[2], rgba[3], hide, paddingAngle])
@@ -217,117 +244,101 @@ var BufferManager = /** @class */ (function (_super) {
217
244
  }
218
245
  }
219
246
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
220
- for (var _h = 0, items_1 = items; _h < items_1.length; _h++) {
221
- var _j = items_1[_h], offset = _j.offset, payload = _j.payload;
247
+ for (let { offset, payload } of items) {
222
248
  gl.bufferSubData(gl.ARRAY_BUFFER, offset, payload);
223
249
  }
224
- };
225
- BufferManager.prototype.updateCentersXY = function (data) {
226
- var _a = this, gl = _a.gl, buffer = _a.buffer;
227
- var items = [];
228
- for (var _i = 0, data_3 = data; _i < data_3.length; _i++) {
229
- var _b = data_3[_i], centerID = _b.centerID, x = _b.x, y = _b.y;
230
- var center = this._centerMaps.get(centerID);
231
- var payload = new Float32Array([x, y]);
232
- var paddingAngles = center.get("paddingAngles");
233
- var rings = center.get("rings");
234
- for (var _c = 0, rings_2 = rings; _c < rings_2.length; _c++) {
235
- var ringID = rings_2[_c].ringID;
236
- for (var _d = 0, paddingAngles_2 = paddingAngles; _d < paddingAngles_2.length; _d++) {
237
- var paddingAngle = paddingAngles_2[_d];
238
- var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
239
- items.push({ offset: this.getOffset(offsetKey), payload: payload });
250
+ }
251
+ updateCentersXY(data) {
252
+ const { gl, buffer } = this;
253
+ const items = [];
254
+ for (const { centerID, x, y } of data) {
255
+ const center = this._centerMaps.get(centerID);
256
+ const payload = new Float32Array([x, y]);
257
+ const paddingAngles = center.get("paddingAngles");
258
+ const rings = center.get("rings");
259
+ for (const { ringID } of rings) {
260
+ for (const paddingAngle of paddingAngles) {
261
+ const offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
262
+ items.push({ offset: this.getOffset(offsetKey), payload });
240
263
  }
241
264
  }
242
265
  }
243
266
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
244
- for (var _e = 0, items_2 = items; _e < items_2.length; _e++) {
245
- var _f = items_2[_e], offset = _f.offset, payload = _f.payload;
267
+ for (let { offset, payload } of items) {
246
268
  gl.bufferSubData(gl.ARRAY_BUFFER, offset, payload);
247
269
  }
248
270
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
249
- };
271
+ }
250
272
  //TODO: test
251
- BufferManager.prototype.updateCentersHide = function (data) {
252
- var _a = this, gl = _a.gl, buffer = _a.buffer;
253
- var items = [];
254
- for (var _i = 0, data_4 = data; _i < data_4.length; _i++) {
255
- var _b = data_4[_i], centerID = _b.centerID, _c = _b.hide, hide = _c === void 0 ? null : _c;
273
+ updateCentersHide(data) {
274
+ const { gl, buffer } = this;
275
+ const items = [];
276
+ for (const { centerID, hide = null } of data) {
256
277
  if (hide === null)
257
278
  continue;
258
- var block = new Float32Array([hide]);
259
- var center = this._centerMaps.get(centerID);
279
+ const block = new Float32Array([hide]);
280
+ const center = this._centerMaps.get(centerID);
260
281
  if (!center)
261
282
  continue;
262
- var paddingAngles = center.get("paddingAngles");
263
- var rings = center.get("rings");
264
- for (var _d = 0, rings_3 = rings; _d < rings_3.length; _d++) {
265
- var ringID = rings_3[_d].ringID;
266
- for (var _e = 0, paddingAngles_3 = paddingAngles; _e < paddingAngles_3.length; _e++) {
267
- var paddingAngle = paddingAngles_3[_e];
268
- var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
283
+ const paddingAngles = center.get("paddingAngles");
284
+ const rings = center.get("rings");
285
+ for (const { ringID } of rings) {
286
+ for (const paddingAngle of paddingAngles) {
287
+ const offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
269
288
  items.push({ key: offsetKey, payload: block });
270
289
  }
271
290
  }
272
291
  }
273
292
  this._updatePartial(items, 8, gl, buffer);
274
- };
275
- BufferManager.prototype.updateCentersColor = function (data) {
276
- var _a = this, gl = _a.gl, buffer = _a.buffer;
277
- var items = [];
278
- for (var _i = 0, data_5 = data; _i < data_5.length; _i++) {
279
- var _b = data_5[_i], centerID = _b.centerID, rgba = _b.rgba;
280
- var center = this._centerMaps.get(centerID);
293
+ }
294
+ updateCentersColor(data) {
295
+ const { gl, buffer } = this;
296
+ const items = [];
297
+ for (const { centerID, rgba } of data) {
298
+ const center = this._centerMaps.get(centerID);
281
299
  if (!center)
282
300
  continue;
283
301
  center.set("rgba", rgba);
284
- var paddingAngles = center.get("paddingAngles");
285
- var rings = center.get("rings");
286
- var payload = new Float32Array(rgba);
287
- for (var _c = 0, rings_4 = rings; _c < rings_4.length; _c++) {
288
- var ringID = rings_4[_c].ringID;
289
- for (var _d = 0, paddingAngles_4 = paddingAngles; _d < paddingAngles_4.length; _d++) {
290
- var paddingAngle = paddingAngles_4[_d];
291
- var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
292
- items.push({ key: offsetKey, payload: payload });
302
+ const paddingAngles = center.get("paddingAngles");
303
+ const rings = center.get("rings");
304
+ const payload = new Float32Array(rgba);
305
+ for (const { ringID } of rings) {
306
+ for (const paddingAngle of paddingAngles) {
307
+ const offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
308
+ items.push({ key: offsetKey, payload });
293
309
  }
294
310
  }
295
311
  }
296
312
  this._updatePartial(items, 4, gl, buffer);
297
- };
298
- BufferManager.prototype.__requiredSpaceForBulk = function (data) {
299
- var space = 0;
300
- for (var _i = 0, data_6 = data; _i < data_6.length; _i++) {
301
- var _a = data_6[_i], paddingAngles = _a.paddingAngles, rings = _a.rings;
313
+ }
314
+ __requiredSpaceForBulk(data) {
315
+ let space = 0;
316
+ for (const { paddingAngles, rings } of data) {
302
317
  space += paddingAngles.length * rings.length;
303
318
  }
304
319
  return space;
305
- };
320
+ }
306
321
  // TODO: TEST IT WITH INSERT
307
- BufferManager.prototype.removeCenters = function (centerIDs) {
308
- var keys = [];
309
- for (var _i = 0, centerIDs_1 = centerIDs; _i < centerIDs_1.length; _i++) {
310
- var centerID = centerIDs_1[_i];
311
- var center = this._centerMaps.get(centerID);
322
+ removeCenters(centerIDs) {
323
+ const keys = [];
324
+ for (const centerID of centerIDs) {
325
+ const center = this._centerMaps.get(centerID);
312
326
  if (!center)
313
327
  continue;
314
- var rings = center.get("rings");
315
- var paddingAngles = center.get("paddingAngles");
316
- for (var _a = 0, rings_5 = rings; _a < rings_5.length; _a++) {
317
- var ringID = rings_5[_a].ringID;
318
- for (var _b = 0, paddingAngles_5 = paddingAngles; _b < paddingAngles_5.length; _b++) {
319
- var paddingAngle = paddingAngles_5[_b];
328
+ const rings = center.get("rings");
329
+ const paddingAngles = center.get("paddingAngles");
330
+ for (const { ringID } of rings) {
331
+ for (const paddingAngle of paddingAngles) {
320
332
  keys.push(offsetMapKey(centerID, ringID, paddingAngle));
321
333
  }
322
334
  }
323
335
  this._centerMaps.delete(centerID);
324
336
  }
325
337
  this._removeFromBuffer(keys);
326
- };
327
- return BufferManager;
328
- }(account_1.BufferOffsetManager));
338
+ }
339
+ }
329
340
  exports.BufferManager = BufferManager;
330
- var offsetMapKey = function (centerID, ringID, paddingAngle) { return "".concat(centerID, "_").concat(ringID, "_").concat(paddingAngle); };
341
+ const offsetMapKey = (centerID, ringID, paddingAngle) => `${centerID}_${ringID}_${paddingAngle}`;
331
342
  /**
332
343
  * {center has x,y, color, paddingAngles, rings} key: centerID
333
344
  * {ring has ranges, paddings} key: ringKey