@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,51 +1,40 @@
1
- "use strict";
2
1
  // Generic
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.isBoolean = exports.constraintFloat = exports.isTextFont = exports.opacityCheck = exports.isHexColorWithOpacity = exports.isHexColor = void 0;
5
- var doesOwnProperties = function (properties, errorMessage) {
6
- return function (object) {
7
- properties.forEach(function (element) {
2
+ const doesOwnProperties = (properties, errorMessage) => {
3
+ return (object) => {
4
+ properties.forEach(element => {
8
5
  if (!Object.hasOwn(object, element))
9
6
  throw new TypeError(errorMessage + ':' + element);
10
7
  });
11
8
  };
12
9
  };
13
- var isHexColor = function (hexColor) { return /^#[0-9A-F]{6}$/i.test(hexColor); };
14
- exports.isHexColor = isHexColor;
15
- var isHexColorWithOpacity = function (hexColor) { return /^#[0-9A-F]{6}[0-9a-f]{0,2}$/i.test(hexColor); };
16
- exports.isHexColorWithOpacity = isHexColorWithOpacity;
17
- var opacityCheck = function (opacity) {
10
+ export const isHexColor = (hexColor) => /^#[0-9A-F]{6}$/i.test(hexColor);
11
+ export const isHexColorWithOpacity = (hexColor) => /^#[0-9A-F]{6}[0-9a-f]{0,2}$/i.test(hexColor);
12
+ export const opacityCheck = (opacity) => {
18
13
  if (typeof opacity !== "number")
19
14
  throw new TypeError("style.opacity must a number");
20
15
  if (opacity < 0 || 1 < opacity)
21
16
  throw new RangeError("Opacity Range Must be 0-1");
22
17
  };
23
- exports.opacityCheck = opacityCheck;
24
18
  // Text Related
25
- var fontCheckTypes = doesOwnProperties(["name", "textColor", "hollowColor", "size", "bold", "italic"], "font does not have");
26
- var fontCheckColors = function (textColor, hollowColor) { return (0, exports.isHexColor)(textColor) && (0, exports.isHexColor)(hollowColor); };
27
- var isTextFont = function (textFont) {
19
+ const fontCheckTypes = doesOwnProperties(["name", "textColor", "hollowColor", "size", "bold", "italic"], "font does not have");
20
+ const fontCheckColors = (textColor, hollowColor) => isHexColor(textColor) && isHexColor(hollowColor);
21
+ export const isTextFont = (textFont) => {
28
22
  fontCheckTypes(textFont);
29
23
  fontCheckColors(textFont.textColor, textFont.hollowColor);
30
24
  if (typeof textFont.size !== "number")
31
25
  throw new TypeError("textFont size is not a number");
32
26
  };
33
- exports.isTextFont = isTextFont;
34
- var constraintFloat = function (x, lowerBound, upperBound) {
35
- if (lowerBound === void 0) { lowerBound = null; }
36
- if (upperBound === void 0) { upperBound = null; }
27
+ export const constraintFloat = (x, lowerBound = null, upperBound = null) => {
37
28
  if (typeof x !== "number")
38
29
  throw new Error("type must be numberic");
39
30
  if (lowerBound === null && upperBound === null)
40
31
  return;
41
32
  if (lowerBound !== null && lowerBound > x)
42
- throw new Error("input must be greater than ".concat(lowerBound));
33
+ throw new Error(`input must be greater than ${lowerBound}`);
43
34
  if (upperBound !== null && x > upperBound)
44
- throw new Error("input must be less than ".concat(upperBound));
35
+ throw new Error(`input must be less than ${upperBound}`);
45
36
  };
46
- exports.constraintFloat = constraintFloat;
47
- var isBoolean = function (x) {
37
+ export const isBoolean = (x) => {
48
38
  if (typeof x !== "boolean")
49
39
  throw new TypeError("type must be boolean");
50
40
  };
51
- exports.isBoolean = isBoolean;
@@ -1,10 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createBBoxMatrix = createBBoxMatrix;
4
- exports.latLongToPixelXY = latLongToPixelXY;
5
- exports.latLongBboxtoPixelXYBbox = latLongBboxtoPixelXYBbox;
6
- exports.sphereCoord = sphereCoord;
7
- exports.normalize = normalize;
8
1
  function latLongToPixelXY(latitude, longitude) {
9
2
  return {
10
3
  x: (longitude + 180) / 360,
@@ -25,8 +18,8 @@ function createBBoxMatrix(minX, maxX, minY, maxY) {
25
18
  ]);
26
19
  }
27
20
  function latLongBboxtoPixelXYBbox(minX, minY, maxX, maxY) {
28
- var minXY = latLongToPixelXY(minY, minX);
29
- var maxXY = latLongToPixelXY(maxY, maxX);
21
+ const minXY = latLongToPixelXY(minY, minX);
22
+ const maxXY = latLongToPixelXY(maxY, maxX);
30
23
  return createBBoxMatrix(minXY.x, maxXY.x, minXY.y, maxXY.y);
31
24
  }
32
25
  /**
@@ -34,20 +27,19 @@ function latLongBboxtoPixelXYBbox(minX, minY, maxX, maxY) {
34
27
  * @param {Float32List} array
35
28
  * @returns {Float32Array}
36
29
  */
37
- function normalize(array, newLength) {
38
- if (newLength === void 0) { newLength = 1; }
39
- var total = 0;
40
- for (var i = 0; i < array.length; i++) {
30
+ function normalize(array, newLength = 1) {
31
+ let total = 0;
32
+ for (let i = 0; i < array.length; i++) {
41
33
  total += array[i] * array[i];
42
34
  }
43
- var len = newLength / Math.sqrt(total);
44
- var result = new Float32Array(array.length);
45
- for (var i = 0; i < array.length; i++) {
35
+ const len = newLength / Math.sqrt(total);
36
+ const result = new Float32Array(array.length);
37
+ for (let i = 0; i < array.length; i++) {
46
38
  result[i] = array[i] * len;
47
39
  }
48
40
  return result;
49
41
  }
50
- function sphereCoord(long, lat, globe, height) {
51
- if (height === void 0) { height = 0; }
42
+ function sphereCoord(long, lat, globe, height = 0) {
52
43
  return normalize(globe.api_GetCartesian3DPoint(long, lat, 0, 0), 6378.137 + height);
53
44
  }
45
+ export { createBBoxMatrix, latLongToPixelXY, latLongBboxtoPixelXYBbox, sphereCoord, normalize };
@@ -1,16 +1,4 @@
1
- "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createBufferAndReadInfo = exports.attributeLoader = void 0;
13
- require("./types");
1
+ import './types';
14
2
  /**
15
3
  * @typedef BufferAndReadInfo Buffers can be intertwined or interleaved.
16
4
  * This object forces user to adapt generic convention of buffer and read information.
@@ -31,8 +19,7 @@ require("./types");
31
19
  * @param {Array<number>} options.escapeValues
32
20
  * @returns
33
21
  */
34
- var attributeLoader = function (gl, bufferAndReadInfo, index, size, _a) {
35
- var _b = _a === void 0 ? {} : _a, _c = _b.divisor, divisor = _c === void 0 ? null : _c, _d = _b.type, type = _d === void 0 ? null : _d, _e = _b.escapeValues, escapeValues = _e === void 0 ? null : _e, _f = _b.normalized, normalized = _f === void 0 ? false : _f;
22
+ const attributeLoader = (gl, bufferAndReadInfo, index, size, { divisor = null, type = null, escapeValues = null, normalized = false } = {}) => {
36
23
  if (size < 1 || size > 4)
37
24
  throw new Error("Size must be between 1 and 4");
38
25
  if (bufferAndReadInfo == null) {
@@ -40,7 +27,7 @@ var attributeLoader = function (gl, bufferAndReadInfo, index, size, _a) {
40
27
  constantFunction(gl, index, size, escapeValues);
41
28
  return;
42
29
  }
43
- var buffer = bufferAndReadInfo.buffer, stride = bufferAndReadInfo.stride, offset = bufferAndReadInfo.offset;
30
+ const { buffer, stride, offset } = bufferAndReadInfo;
44
31
  if (!gl || !buffer) {
45
32
  throw new Error("Invalid WebGL context or buffer");
46
33
  }
@@ -50,7 +37,7 @@ var attributeLoader = function (gl, bufferAndReadInfo, index, size, _a) {
50
37
  if (stride < 0 || offset < 0) {
51
38
  throw new Error("Stride and offset must be non-negative");
52
39
  }
53
- var attribType = type === null ? gl.FLOAT : type;
40
+ const attribType = type === null ? gl.FLOAT : type;
54
41
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
55
42
  gl.enableVertexAttribArray(index);
56
43
  gl.vertexAttribPointer(index, size, attribType, normalized, stride, offset);
@@ -58,7 +45,6 @@ var attributeLoader = function (gl, bufferAndReadInfo, index, size, _a) {
58
45
  gl.vertexAttribDivisor(index, divisor);
59
46
  }
60
47
  };
61
- exports.attributeLoader = attributeLoader;
62
48
  /**
63
49
  *
64
50
  * @param {WebGLBuffer} buffer
@@ -66,16 +52,14 @@ exports.attributeLoader = attributeLoader;
66
52
  * @param {number} offset
67
53
  * @returns {BufferAndReadInfo}
68
54
  */
69
- var createBufferAndReadInfo = function (buffer, stride, offset) {
70
- if (stride === void 0) { stride = 0; }
71
- if (offset === void 0) { offset = 0; }
55
+ const createBufferAndReadInfo = (buffer, stride = 0, offset = 0) => {
72
56
  if (buffer == null)
73
57
  return null;
74
- return { buffer: buffer, stride: stride, offset: offset };
58
+ return { buffer, stride, offset };
75
59
  };
76
- exports.createBufferAndReadInfo = createBufferAndReadInfo;
77
- var constantFunction = function (gl, index, size, escapeValues) {
78
- var func = "vertexAttrib".concat(size, "f");
60
+ const constantFunction = (gl, index, size, escapeValues) => {
61
+ const func = `vertexAttrib${size}f`;
79
62
  // @ts-ignore
80
- gl[func].apply(gl, __spreadArray([index], escapeValues, false));
63
+ gl[func](index, ...escapeValues);
81
64
  };
65
+ export { attributeLoader, createBufferAndReadInfo };
@@ -1,6 +1,3 @@
1
- "use strict";
2
1
  // import './types';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.attributeLoader = void 0;
5
- var attribute_loader_1 = require("./attribute-loader");
6
- Object.defineProperty(exports, "attributeLoader", { enumerable: true, get: function () { return attribute_loader_1.attributeLoader; } });
2
+ import { attributeLoader } from './attribute-loader';
3
+ export { attributeLoader };
@@ -1,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.drawInstanced = exports.drawArrays = void 0;
4
- require("./types");
1
+ import './types';
5
2
  /**
6
3
  * Draws instanced geometry using WebGL2.
7
4
  */
8
- var drawInstanced = function (gl, mode, drawOptions, vertexCount) {
9
- var _a;
10
- var drawRange = drawOptions.drawRange, _b = drawOptions.elementBufferIndexType, elementBufferIndexType = _b === void 0 ? gl.UNSIGNED_INT : _b;
11
- var _c = drawRange.first, first = _c === void 0 ? 0 : _c, _d = drawRange.count, instanceCount = _d === void 0 ? 1 : _d;
5
+ const drawInstanced = (gl, mode, drawOptions, vertexCount) => {
6
+ const { drawRange, elementBufferIndexType = gl.UNSIGNED_INT } = drawOptions;
7
+ const { first = 0, count: instanceCount = 1 } = drawRange;
12
8
  if (first > 0 || drawOptions.elementBuffer) {
13
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, (_a = drawOptions.elementBuffer) !== null && _a !== void 0 ? _a : null);
9
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, drawOptions.elementBuffer ?? null);
14
10
  gl.drawElementsInstanced(mode, vertexCount, elementBufferIndexType, first, instanceCount);
15
11
  gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
16
12
  }
@@ -18,14 +14,13 @@ var drawInstanced = function (gl, mode, drawOptions, vertexCount) {
18
14
  gl.drawArraysInstanced(mode, first, vertexCount, instanceCount);
19
15
  }
20
16
  };
21
- exports.drawInstanced = drawInstanced;
22
17
  /**
23
18
  * Draws geometry using WebGL2.
24
19
  */
25
- var drawArrays = function (gl, defaultMode, drawOptions) {
26
- var drawRange = drawOptions.drawRange, elementBuffer = drawOptions.elementBuffer, _a = drawOptions.elementBufferIndexType, elementBufferIndexType = _a === void 0 ? gl.UNSIGNED_INT : _a, _b = drawOptions.drawMode, drawMode = _b === void 0 ? null : _b;
27
- var _c = drawRange.first, first = _c === void 0 ? 0 : _c, count = drawRange.count;
28
- var mode = drawMode !== null && drawMode !== void 0 ? drawMode : defaultMode;
20
+ const drawArrays = (gl, defaultMode, drawOptions) => {
21
+ const { drawRange, elementBuffer, elementBufferIndexType = gl.UNSIGNED_INT, drawMode = null } = drawOptions;
22
+ const { first = 0, count } = drawRange;
23
+ const mode = drawMode ?? defaultMode;
29
24
  if (elementBuffer) {
30
25
  gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, elementBuffer);
31
26
  gl.drawElements(mode, count, elementBufferIndexType, first);
@@ -35,4 +30,4 @@ var drawArrays = function (gl, defaultMode, drawOptions) {
35
30
  gl.drawArrays(mode, first, count);
36
31
  }
37
32
  };
38
- exports.drawArrays = drawArrays;
33
+ export { drawArrays, drawInstanced };
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UniformBlockManager = void 0;
4
- require("./types");
5
- var typeSizes = {
1
+ import "./types";
2
+ const typeSizes = {
6
3
  'float': 4,
7
4
  'vec2': 8,
8
5
  'vec3': 16, // vec3 takes up same space as vec4 due to alignment
@@ -16,7 +13,7 @@ var typeSizes = {
16
13
  'ivec4': 16,
17
14
  'bool': 4
18
15
  };
19
- var typeAlignments = {
16
+ const typeAlignments = {
20
17
  'float': 4,
21
18
  'vec2': 8,
22
19
  'vec3': 16,
@@ -30,7 +27,7 @@ var typeAlignments = {
30
27
  'ivec4': 16,
31
28
  'bool': 4
32
29
  };
33
- var typeArrayConstructors = {
30
+ const typeArrayConstructors = {
34
31
  'float': Float32Array,
35
32
  'vec2': Float32Array,
36
33
  'vec3': Float32Array,
@@ -44,9 +41,20 @@ var typeArrayConstructors = {
44
41
  'ivec4': Int32Array,
45
42
  'bool': Float32Array
46
43
  };
47
- var UniformBlockManager = /** @class */ (function () {
48
- function UniformBlockManager(blockName, blockMembers, bindingPoint, prefix) {
49
- if (prefix === void 0) { prefix = ""; }
44
+ class UniformBlockManager {
45
+ /**
46
+ *
47
+ * @param {UniformBlockName} blockName
48
+ * @param {Array<UniformBlockMember} blockMembers
49
+ * @param {string} prefix usage name of block in the shader
50
+ */
51
+ blockName;
52
+ blockMembers;
53
+ bindingPoint;
54
+ prefix;
55
+ offsetMap;
56
+ size;
57
+ constructor(blockName, blockMembers, bindingPoint, prefix = "") {
50
58
  this.blockName = blockName;
51
59
  this.blockMembers = blockMembers;
52
60
  this.bindingPoint = bindingPoint;
@@ -54,56 +62,52 @@ var UniformBlockManager = /** @class */ (function () {
54
62
  this.offsetMap = this.__create_LayoutSTD140_OffsetMap();
55
63
  this.size = this.__calculateSize();
56
64
  }
57
- UniformBlockManager.prototype.glslCode = function () {
58
- var code = "layout(std140) uniform ".concat(this.blockName, " {");
59
- for (var _i = 0, _a = this.blockMembers; _i < _a.length; _i++) {
60
- var member = _a[_i];
61
- var name_1 = member.name, type = member.type;
62
- code += "".concat(type, " ").concat(this.prefix).concat(name_1, ";");
65
+ glslCode() {
66
+ let code = `layout(std140) uniform ${this.blockName} {`;
67
+ for (const member of this.blockMembers) {
68
+ const { name, type } = member;
69
+ code += `${type} ${this.prefix}${name};`;
63
70
  }
64
71
  if (this.prefix) {
65
- code += "} ".concat(this.prefix, ";");
72
+ code += `} ${this.prefix};`;
66
73
  }
67
74
  else {
68
- code += "};";
75
+ code += `};`;
69
76
  }
70
77
  return code;
71
- };
72
- UniformBlockManager.prototype.createUBO = function (gl, bufferWriteType) {
73
- var _this = this;
74
- if (bufferWriteType === void 0) { bufferWriteType = "STATIC_DRAW"; }
75
- var ubo = gl.createBuffer();
78
+ }
79
+ createUBO(gl, bufferWriteType = "STATIC_DRAW") {
80
+ const ubo = gl.createBuffer();
76
81
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
77
82
  // @ts-ignore
78
83
  gl.bufferData(gl.UNIFORM_BUFFER, this.size, gl[bufferWriteType]);
79
84
  gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo);
80
- for (var _i = 0, _a = this.blockMembers; _i < _a.length; _i++) {
81
- var member = _a[_i];
82
- var name_2 = member.name, type = member.type, _b = member.value, value = _b === void 0 ? null : _b;
85
+ for (const member of this.blockMembers) {
86
+ const { name, type, value = null } = member;
83
87
  ;
84
- var offset = this.offsetMap.get(name_2);
85
- var data = (value === null) ? new typeArrayConstructors[type](typeSizes[type] / 4).fill(NaN) : value;
88
+ const offset = this.offsetMap.get(name);
89
+ const data = (value === null) ? new typeArrayConstructors[type](typeSizes[type] / 4).fill(NaN) : value;
86
90
  gl.bufferSubData(gl.UNIFORM_BUFFER, offset, data);
87
91
  }
88
92
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
89
93
  return {
90
- ubo: ubo,
91
- update: function (nameValueMap) { return _this.updateUBO(gl, ubo, nameValueMap); },
92
- bind: function () { return _this.bind(gl, ubo); },
93
- unbind: function () { return _this.unbind(gl); },
94
- free: function () { return gl.deleteBuffer(ubo); },
94
+ ubo,
95
+ update: (nameValueMap) => this.updateUBO(gl, ubo, nameValueMap),
96
+ bind: () => this.bind(gl, ubo),
97
+ unbind: () => this.unbind(gl),
98
+ free: () => gl.deleteBuffer(ubo),
95
99
  };
96
- };
97
- UniformBlockManager.prototype.updateUBO = function (gl, ubo, nameValueMap) {
100
+ }
101
+ updateUBO(gl, ubo, nameValueMap) {
98
102
  gl.bindBuffer(gl.UNIFORM_BUFFER, ubo);
99
- var _loop_1 = function (name_3, value) {
100
- var offset = this_1.offsetMap.get(name_3);
103
+ for (const [name, value] of nameValueMap.entries()) {
104
+ const offset = this.offsetMap.get(name);
101
105
  if (offset === undefined) {
102
- throw new Error("Uniform block member ".concat(name_3, " not found in offset map."));
106
+ throw new Error(`Uniform block member ${name} not found in offset map.`);
103
107
  }
104
108
  // @ts-ignore
105
- var type = this_1.blockMembers.find(function (member) { return member.name === name_3; }).type;
106
- var data = void 0;
109
+ const type = this.blockMembers.find(member => member.name === name).type;
110
+ let data;
107
111
  if (Array.isArray(value)) {
108
112
  data = new typeArrayConstructors[type](value);
109
113
  }
@@ -116,53 +120,46 @@ var UniformBlockManager = /** @class */ (function () {
116
120
  else if (ArrayBuffer.isView(value) && !(value instanceof DataView))
117
121
  data = (typeof value === 'number') ? new typeArrayConstructors[type]([value]) : new typeArrayConstructors[type](value);
118
122
  else {
119
- throw new Error("Unsupported value type for ".concat(name_3, ": ").concat(typeof value));
123
+ throw new Error(`Unsupported value type for ${name}: ${typeof value}`);
120
124
  }
121
125
  console.log("Data to be uploaded:", data);
122
126
  gl.bufferSubData(gl.UNIFORM_BUFFER, offset, data);
123
- };
124
- var this_1 = this;
125
- for (var _i = 0, _a = nameValueMap.entries(); _i < _a.length; _i++) {
126
- var _b = _a[_i], name_3 = _b[0], value = _b[1];
127
- _loop_1(name_3, value);
128
127
  }
129
128
  gl.bindBuffer(gl.UNIFORM_BUFFER, null);
130
- };
129
+ }
131
130
  // call this after linking the program
132
- UniformBlockManager.prototype.assignBindingPoint = function (gl, program) {
133
- var blockIndex = gl.getUniformBlockIndex(program, this.blockName);
131
+ assignBindingPoint(gl, program) {
132
+ const blockIndex = gl.getUniformBlockIndex(program, this.blockName);
134
133
  gl.uniformBlockBinding(program, blockIndex, this.bindingPoint);
135
- };
134
+ }
136
135
  // call this before drawing
137
- UniformBlockManager.prototype.bind = function (gl, ubo) {
136
+ bind(gl, ubo) {
138
137
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this.bindingPoint, ubo);
139
- };
138
+ }
140
139
  // call this right after drawing
141
- UniformBlockManager.prototype.unbind = function (gl) {
140
+ unbind(gl) {
142
141
  gl.bindBufferBase(gl.UNIFORM_BUFFER, this.bindingPoint, null);
143
- };
142
+ }
144
143
  // implicit methods
145
- UniformBlockManager.prototype.__create_LayoutSTD140_OffsetMap = function () {
146
- var offset = 0;
147
- var offsetMap = new Map();
148
- for (var _i = 0, _a = this.blockMembers; _i < _a.length; _i++) {
149
- var member = _a[_i];
150
- var name_4 = member.name, type = member.type;
151
- var size = typeSizes[type];
152
- var alignment = typeAlignments[type];
153
- var padding = (alignment - (offset % alignment)) % alignment;
144
+ __create_LayoutSTD140_OffsetMap() {
145
+ let offset = 0;
146
+ const offsetMap = new Map();
147
+ for (const member of this.blockMembers) {
148
+ const { name, type } = member;
149
+ const size = typeSizes[type];
150
+ const alignment = typeAlignments[type];
151
+ const padding = (alignment - (offset % alignment)) % alignment;
154
152
  offset += padding;
155
- offsetMap.set(name_4, offset);
153
+ offsetMap.set(name, offset);
156
154
  offset += size;
157
155
  }
158
156
  return offsetMap;
159
- };
157
+ }
160
158
  // __create_LayoutSTD140_OffsetMap() should be called before this
161
- UniformBlockManager.prototype.__calculateSize = function () {
162
- var lastOffset = Array.from(this.offsetMap.values()).pop() || 0;
163
- var lastItemAlignment = typeAlignments[this.blockMembers[this.blockMembers.length - 1].type];
159
+ __calculateSize() {
160
+ const lastOffset = Array.from(this.offsetMap.values()).pop() || 0;
161
+ const lastItemAlignment = typeAlignments[this.blockMembers[this.blockMembers.length - 1].type];
164
162
  return lastOffset + lastItemAlignment;
165
- };
166
- return UniformBlockManager;
167
- }());
168
- exports.UniformBlockManager = UniformBlockManager;
163
+ }
164
+ }
165
+ export { UniformBlockManager };