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