@pirireis/webglobeplugins 0.9.11 → 0.9.13

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