@pirireis/webglobeplugins 0.9.8 → 0.9.9

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 (213) hide show
  1. package/index.js +58 -15
  2. package/package.json +1 -1
  3. package/dist/Math/angle-calculation.js +0 -15
  4. package/dist/Math/arc.js +0 -65
  5. package/dist/Math/bounds/line-bbox.js +0 -188
  6. package/dist/Math/constants.js +0 -9
  7. package/dist/Math/frustum/camera.js +0 -24
  8. package/dist/Math/frustum/from-globeinfo.js +0 -48
  9. package/dist/Math/frustum/types.js +0 -2
  10. package/dist/Math/globe-util/horizon-plane.js +0 -112
  11. package/dist/Math/index.js +0 -1
  12. package/dist/Math/juction/arc-plane.js +0 -83
  13. package/dist/Math/juction/line-sphere.js +0 -25
  14. package/dist/Math/juction/plane-plane.js +0 -58
  15. package/dist/Math/line.js +0 -56
  16. package/dist/Math/matrix4.js +0 -1
  17. package/dist/Math/methods.js +0 -201
  18. package/dist/Math/plane.js +0 -60
  19. package/dist/Math/quaternion.js +0 -104
  20. package/dist/Math/types.js +0 -2
  21. package/dist/Math/utils.js +0 -4
  22. package/dist/Math/vec3.js +0 -126
  23. package/dist/algorithms/search-binary.js +0 -19
  24. package/dist/altitude-locator/adaptors.js +0 -1
  25. package/dist/altitude-locator/draw-subset-obj.js +0 -18
  26. package/dist/altitude-locator/keymethod.js +0 -1
  27. package/dist/altitude-locator/plugin.js +0 -341
  28. package/dist/altitude-locator/types.js +0 -23
  29. package/dist/arrowfield/adaptor.js +0 -14
  30. package/dist/arrowfield/index.js +0 -10
  31. package/dist/arrowfield/plugin.js +0 -86
  32. package/dist/bearing-line/index.js +0 -8
  33. package/dist/bearing-line/plugin.js +0 -449
  34. package/dist/circle-line-chain/chain-list-map.js +0 -205
  35. package/dist/circle-line-chain/init.js +0 -1
  36. package/dist/circle-line-chain/plugin.js +0 -424
  37. package/dist/circle-line-chain/util.js +0 -5
  38. package/dist/compass-rose/compass-rose-padding-flat.js +0 -225
  39. package/dist/compass-rose/compass-text-writer.js +0 -153
  40. package/dist/compass-rose/index.js +0 -7
  41. package/dist/compassrose/compassrose.js +0 -296
  42. package/dist/compassrose/index.js +0 -8
  43. package/dist/globe-types.js +0 -1
  44. package/dist/heatwave/index.js +0 -10
  45. package/dist/heatwave/isobar/objectarraylabels.js +0 -202
  46. package/dist/heatwave/isobar/plugin.js +0 -343
  47. package/dist/heatwave/isobar/quadtreecontours.js +0 -300
  48. package/dist/heatwave/plugins/heatwaveglobeshell.js +0 -206
  49. package/dist/index.js +0 -58
  50. package/dist/jest.config.js +0 -7
  51. package/dist/partialrings/buffer-manager.js +0 -81
  52. package/dist/partialrings/index.js +0 -41
  53. package/dist/partialrings/plugin.js +0 -135
  54. package/dist/partialrings/program.js +0 -286
  55. package/dist/pin/pin-object-array.js +0 -305
  56. package/dist/pin/pin-point-totem.js +0 -60
  57. package/dist/point-heat-map/adaptors/timetracksplugin-format-to-this.js +0 -66
  58. package/dist/point-heat-map/index.js +0 -1
  59. package/dist/point-heat-map/plugin-webworker.js +0 -126
  60. package/dist/point-heat-map/point-to-heat-map-flow.js +0 -127
  61. package/dist/point-tracks/key-methods.js +0 -5
  62. package/dist/point-tracks/plugin.js +0 -338
  63. package/dist/programs/arrowfield/index.js +0 -7
  64. package/dist/programs/arrowfield/logic.js +0 -257
  65. package/dist/programs/arrowfield/object.js +0 -66
  66. package/dist/programs/data2legend/density-to-legend.js +0 -101
  67. package/dist/programs/data2legend/point-to-density-texture.js +0 -100
  68. package/dist/programs/float2legendwithratio/index.js +0 -8
  69. package/dist/programs/float2legendwithratio/logic.js +0 -171
  70. package/dist/programs/float2legendwithratio/object.js +0 -110
  71. package/dist/programs/globe-util/is-globe-moved.js +0 -21
  72. package/dist/programs/globeshell/index.js +0 -8
  73. package/dist/programs/globeshell/noise/noises.js +0 -1
  74. package/dist/programs/globeshell/wiggle/index.js +0 -8
  75. package/dist/programs/globeshell/wiggle/logic.js +0 -345
  76. package/dist/programs/globeshell/wiggle/object.js +0 -72
  77. package/dist/programs/helpers/blender/index.js +0 -1
  78. package/dist/programs/helpers/blender/program.js +0 -79
  79. package/dist/programs/helpers/fadeaway/index.js +0 -7
  80. package/dist/programs/helpers/fadeaway/logic.js +0 -72
  81. package/dist/programs/helpers/fadeaway/object.js +0 -20
  82. package/dist/programs/helpers/index.js +0 -8
  83. package/dist/programs/index.js +0 -58
  84. package/dist/programs/interface.js +0 -1
  85. package/dist/programs/line-on-globe/angled-line.js +0 -176
  86. package/dist/programs/line-on-globe/circle-accurate-3d.js +0 -141
  87. package/dist/programs/line-on-globe/circle-accurate-flat.js +0 -216
  88. package/dist/programs/line-on-globe/circle-accurate.js +0 -178
  89. package/dist/programs/line-on-globe/circle.js +0 -167
  90. package/dist/programs/line-on-globe/degree-padding-around-circle-3d.js +0 -159
  91. package/dist/programs/line-on-globe/index.js +0 -1
  92. package/dist/programs/line-on-globe/lines-color-instanced-flat.js +0 -136
  93. package/dist/programs/line-on-globe/linestrip.js +0 -171
  94. package/dist/programs/line-on-globe/naive-accurate-flexible.js +0 -195
  95. package/dist/programs/line-on-globe/to-the-surface.js +0 -111
  96. package/dist/programs/line-on-globe/util.js +0 -8
  97. package/dist/programs/picking/pickable-renderer.js +0 -188
  98. package/dist/programs/point-on-globe/element-globe-surface-glow.js +0 -142
  99. package/dist/programs/point-on-globe/element-point-glow.js +0 -153
  100. package/dist/programs/point-on-globe/square-pixel-point.js +0 -174
  101. package/dist/programs/programcache.js +0 -131
  102. package/dist/programs/rings/distancering/circleflatprogram.js +0 -156
  103. package/dist/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -369
  104. package/dist/programs/rings/distancering/circlepaddysharedbuffer.js +0 -357
  105. package/dist/programs/rings/distancering/index.js +0 -14
  106. package/dist/programs/rings/distancering/paddyflatprogram.js +0 -172
  107. package/dist/programs/rings/distancering/paddyflatprogram2d.js +0 -174
  108. package/dist/programs/rings/distancering/paddyflatprogram3d.js +0 -172
  109. package/dist/programs/rings/distancering/shader.js +0 -1
  110. package/dist/programs/rings/index.js +0 -17
  111. package/dist/programs/rings/partial-ring/piece-of-pie.js +0 -275
  112. package/dist/programs/totems/camerauniformblock.js +0 -160
  113. package/dist/programs/totems/canvas-webglobe-info.js +0 -110
  114. package/dist/programs/totems/gpu-selection-uniform-block.js +0 -108
  115. package/dist/programs/totems/index.js +0 -40
  116. package/dist/programs/two-d/pixel-circle.js +0 -1
  117. package/dist/programs/two-d/pixel-padding-for-compass.js +0 -162
  118. package/dist/programs/util.js +0 -17
  119. package/dist/programs/vectorfields/index.js +0 -23
  120. package/dist/programs/vectorfields/logics/drawrectangleparticles.js +0 -107
  121. package/dist/programs/vectorfields/logics/index.js +0 -12
  122. package/dist/programs/vectorfields/logics/pixelbased.js +0 -142
  123. package/dist/programs/vectorfields/logics/ubo.js +0 -63
  124. package/dist/programs/vectorfields/pingpongbuffermanager.js +0 -76
  125. package/dist/rangerings/enum.js +0 -5
  126. package/dist/rangerings/index.js +0 -15
  127. package/dist/rangerings/plugin.js +0 -560
  128. package/dist/rangerings/rangeringangletext.js +0 -329
  129. package/dist/rangerings/ring-account.js +0 -117
  130. package/dist/shaders/fragment-toy/firework.js +0 -58
  131. package/dist/shaders/fragment-toy/singularity.js +0 -59
  132. package/dist/shape-on-terrain/arc/naive/plugin.js +0 -252
  133. package/dist/timetracks/adaptors-line-strip.js +0 -71
  134. package/dist/timetracks/adaptors.js +0 -122
  135. package/dist/timetracks/index.js +0 -19
  136. package/dist/timetracks/plugin-line-strip.js +0 -250
  137. package/dist/timetracks/plugin.js +0 -258
  138. package/dist/timetracks/program-line-strip.js +0 -611
  139. package/dist/timetracks/program.js +0 -772
  140. package/dist/timetracks/programpoint-line-strip.js +0 -154
  141. package/dist/timetracks/programpoint.js +0 -147
  142. package/dist/types.js +0 -15
  143. package/dist/util/account/bufferoffsetmanager.js +0 -179
  144. package/dist/util/account/index.js +0 -23
  145. package/dist/util/account/single-attribute-buffer-management/buffer-manager.js +0 -108
  146. package/dist/util/account/single-attribute-buffer-management/buffer-orchestrator.js +0 -150
  147. package/dist/util/account/single-attribute-buffer-management/index.js +0 -9
  148. package/dist/util/account/single-attribute-buffer-management/object-store.js +0 -51
  149. package/dist/util/account/single-attribute-buffer-management/types.js +0 -2
  150. package/dist/util/account/util.js +0 -22
  151. package/dist/util/algorithms/index.js +0 -1
  152. package/dist/util/algorithms/search-binary.js +0 -28
  153. package/dist/util/check/get.js +0 -18
  154. package/dist/util/check/index.js +0 -1
  155. package/dist/util/check/typecheck.js +0 -49
  156. package/dist/util/geometry/index.js +0 -51
  157. package/dist/util/gl-util/buffer/attribute-loader.js +0 -69
  158. package/dist/util/gl-util/buffer/index.js +0 -6
  159. package/dist/util/gl-util/buffer/types.js +0 -1
  160. package/dist/util/gl-util/draw-options/methods.js +0 -38
  161. package/dist/util/gl-util/draw-options/types.js +0 -15
  162. package/dist/util/gl-util/uniform-block/manager.js +0 -156
  163. package/dist/util/gl-util/uniform-block/shader.js +0 -1
  164. package/dist/util/gl-util/uniform-block/types.js +0 -8
  165. package/dist/util/heatwavedatamanager/datamanager.js +0 -152
  166. package/dist/util/heatwavedatamanager/index.js +0 -10
  167. package/dist/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +0 -122
  168. package/dist/util/heatwavedatamanager/pointcoordsmeta.js +0 -20
  169. package/dist/util/index.js +0 -57
  170. package/dist/util/interpolation/index.js +0 -1
  171. package/dist/util/interpolation/timetrack/index.js +0 -5
  172. package/dist/util/interpolation/timetrack/timetrack-interpolator.js +0 -79
  173. package/dist/util/interpolation/timetrack/web-worker-str.js +0 -183
  174. package/dist/util/interpolation/timetrack/web-worker.js +0 -48
  175. package/dist/util/jshelpers/data-filler.js +0 -20
  176. package/dist/util/jshelpers/equality.js +0 -20
  177. package/dist/util/jshelpers/index.js +0 -37
  178. package/dist/util/jshelpers/timefilters.js +0 -32
  179. package/dist/util/picking/fence.js +0 -46
  180. package/dist/util/picking/picker-displayer.js +0 -139
  181. package/dist/util/programs/draw-texture-on-canvas.js +0 -89
  182. package/dist/util/programs/index.js +0 -17
  183. package/dist/util/programs/shapesonglobe.js +0 -214
  184. package/dist/util/programs/supersampletotextures.js +0 -113
  185. package/dist/util/programs/texturetoglobe.js +0 -182
  186. package/dist/util/shaderfunctions/geometrytransformations.js +0 -340
  187. package/dist/util/shaderfunctions/index.js +0 -18
  188. package/dist/util/shaderfunctions/nodata.js +0 -11
  189. package/dist/util/shaderfunctions/noisefunctions.js +0 -43
  190. package/dist/util/surface-line-data/arc-bboxes.js +0 -25
  191. package/dist/util/surface-line-data/arcs-to-cuts.js +0 -50
  192. package/dist/util/surface-line-data/cut-arc.js +0 -1
  193. package/dist/util/surface-line-data/flow.js +0 -28
  194. package/dist/util/surface-line-data/rbush-manager.js +0 -1
  195. package/dist/util/surface-line-data/types.js +0 -1
  196. package/dist/util/surface-line-data/web-worker.js +0 -1
  197. package/dist/util/webglobe/gldefaultstates.js +0 -7
  198. package/dist/util/webglobe/index.js +0 -18
  199. package/dist/util/webglobe/rasteroverlay.js +0 -78
  200. package/dist/util/webglobjectbuilders.js +0 -388
  201. package/dist/util/webglobjectbuilders1.js +0 -237
  202. package/dist/waveparticles/adaptor.js +0 -17
  203. package/dist/waveparticles/index.js +0 -10
  204. package/dist/waveparticles/plugin.js +0 -266
  205. package/dist/wind/imagetovectorfieldandmagnitude.js +0 -35
  206. package/dist/wind/index.js +0 -14
  207. package/dist/wind/plugin.js +0 -926
  208. package/dist/wind/vectorfieldimage.js +0 -25
  209. package/dist/write-text/attached-text-writer.js +0 -91
  210. package/dist/write-text/context-text.js +0 -98
  211. package/dist/write-text/context-text3.js +0 -155
  212. package/dist/write-text/index.js +0 -5
  213. package/dist/write-text/writer-plugin.js +0 -8
@@ -1,560 +0,0 @@
1
- "use strict";
2
- /**
3
- * @typedef RangeRingData
4
- * @property {number} centerX
5
- * @property {number} centerY
6
- * @property {Array<Ring>} rings
7
- *
8
- * @typedef Ring
9
- * @property {number} radius
10
- * @property {number} padding
11
- * @property {[number, number, number]} color
12
- *
13
- *
14
- * @method insertBulk
15
- * @typedef {Array<{ringID, radius, padding}>} rings
16
- * @param {Array<centerID:string, x:number, y:number, stepAngle:number, rgba:[4 numbers], rings:rings} items
17
-
18
- * @method updateCentersCoordinate @param {Array<{centerID, long,lat}>} items
19
- * @method updateCentersColor @param {Array<{centerID, rgba:[4 numbers]}>} centerColors
20
- *
21
- * @method updateCentersHide @param {Array<{centerID, hide, textHide}>} centerHides
22
- * @method removeCenters @param {Array<{centerID}>} centerIds
23
- * @method setOpacity @param {number} opacity
24
- *
25
- * @method setOneDegreePaddingOn // performance consuming, might be removed
26
- *
27
- */
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.Z_ALPHA_MODE = exports.RangeRings = void 0;
33
- const circle_accurate_flat_1 = require("../programs/line-on-globe/circle-accurate-flat");
34
- const circle_accurate_3d_1 = require("../programs/line-on-globe/circle-accurate-3d");
35
- const lines_color_instanced_flat_1 = require("../programs/line-on-globe/lines-color-instanced-flat");
36
- const account_1 = require("../util/account");
37
- const get_1 = require("../util/check/get");
38
- const data_filler_1 = require("../util/jshelpers/data-filler");
39
- const ring_account_1 = require("./ring-account");
40
- const degree_padding_around_circle_3d_1 = require("../programs/line-on-globe/degree-padding-around-circle-3d");
41
- const naive_accurate_flexible_1 = require("../programs/line-on-globe/naive-accurate-flexible");
42
- const rangeringangletext_1 = __importDefault(require("./rangeringangletext"));
43
- const util_1 = require("../programs/line-on-globe/util");
44
- Object.defineProperty(exports, "Z_ALPHA_MODE", { enumerable: true, get: function () { return util_1.Z_ALPHA_MODE; } });
45
- const enum_1 = require("./enum");
46
- const typecheck_1 = require("../util/check/typecheck");
47
- const geometry_1 = require("../util/geometry");
48
- const CIRCLE_FLAT_EDGE_COUNT = 362; // 360 + 2 for closing the circle and a cutting point
49
- const coordOnSphere = (long, lat, globe, altitude = 0) => {
50
- const coord = globe.api_GetCartesian3DPoint(long, lat, 0, 0);
51
- return (0, geometry_1.normalize)(coord, 6378.137 + altitude);
52
- };
53
- /**
54
- *
55
- *
56
- * @typedef {string} centerID
57
- *
58
- * @typedef {Object} RangeRing
59
- * @property {string} ringID
60
- * @property {number} radius in range meters
61
- * @property {number} padding badding range in meter
62
- *
63
- *
64
- * Array < centerID: string, long: number, lat: number, stepAngle: number, rgba: [4 numbers], rings: rings, hide, textHide
65
- * @typedef {Object} RangeRingsItem
66
- * @property {centerID} centerID
67
- * @property {number} long
68
- * @property {number} lat
69
- * @property {number} stepAngle
70
- * @property {number} altitude
71
- * @property {number} hide
72
- * @property {number} textHide
73
- * @property {number} rgba
74
- * @property {Array<RangeRing>} rings
75
- */
76
- class RangeRings {
77
- constructor(id, { oneDegreePadding = true, showNumbers = true, numbersStyle = null, opacity = 1, zAlphaOnDegreePadding = util_1.Z_ALPHA_MODE.ON } = {}, { textDataPreAdaptor = null, textWritersMap = new Map() } = {}) {
78
- this.id = id;
79
- this._oneDegreePadding = oneDegreePadding;
80
- this._zAlphaOnDegreePadding = zAlphaOnDegreePadding;
81
- this._showNumbers = showNumbers;
82
- this._numbersStyle = numbersStyle;
83
- this._opacity = opacity;
84
- this._ringAccount = new ring_account_1.RingAccount();
85
- this._textWritersMap = textWritersMap;
86
- this._textDataPreAdaptor = textDataPreAdaptor;
87
- this._textWritersMap.forEach((textWriter) => textWriter.setKeyAdaptor((item) => item.__identity__));
88
- }
89
- // USER API
90
- /**
91
- * @method updateCentersCoordinate @param { Array < { centerID, long,lat } >} items
92
- */
93
- updateCentersCoordinate(items, { textWriterIDs = [] } = {}) {
94
- // Algorithm
95
- /**
96
- * 1. ask centerRingAccount for existing rings COORDINATE RELATED KEYS
97
- * 2. update centers
98
- * 3. update buffer orchestators
99
- */
100
- var _a;
101
- this._ringAccount.updateCentersCoordinate(items);
102
- const { globe, bufferOrchestrator, bufferManagersCompMap, paddingBufferOrchestrator, bufferManagersCompMapPadding } = this;
103
- for (const { centerID } of items) {
104
- const datas = this.__reconstructCentralRings(centerID);
105
- bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["centerCoords3d", "centerCoords2dflat", "targetCoords3d", "centerCoords2dflatForPadding"]);
106
- const paddingDatas = this.__reconstructCentralRingsBigPaddings(centerID);
107
- paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["circlePoint2d", "paddingPoint2d", "circlePoint3d", "paddingPoint3d"]);
108
- }
109
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.updateCentersXY(items);
110
- this.__contextTextWriterUpdate(items.map(({ centerID }) => centerID), textWriterIDs);
111
- globe.DrawRender();
112
- }
113
- /**
114
- * @method insertBulk
115
- * @param { Array < RangeRingsItem> } items
116
- */
117
- insertBulk(items, { textWriterIDs = [] } = {}) {
118
- var _a;
119
- // Algorithm
120
- /**
121
- * 1 ask centerRingAccount for existing rings
122
- * 2. delete all existing keys with buffer orchestators
123
- * 3. insert new centerRings to centerRingAccount
124
- * 4. insert new keys with buffer orchestators
125
- */
126
- const { globe, _ringAccount, bufferOrchestrator, bufferManagersCompMap, paddingBufferOrchestrator, bufferManagersCompMapPadding } = this;
127
- for (const item of items) {
128
- const existingKeys = _ringAccount.ringKeys(item.centerID);
129
- if (existingKeys.length) {
130
- bufferOrchestrator.deleteBulk(existingKeys, bufferManagersCompMap);
131
- }
132
- const paddingKeys = _ringAccount.ringBigPaddingKeys(item.centerID);
133
- if (paddingKeys.length) {
134
- paddingBufferOrchestrator.deleteBulk(paddingKeys, bufferManagersCompMapPadding);
135
- }
136
- }
137
- for (const item of items) {
138
- _ringAccount.insertCenter(item);
139
- const datas = this.__reconstructCentralRings(item.centerID);
140
- bufferOrchestrator.insertBulk(datas, bufferManagersCompMap);
141
- const paddingDatas = this.__reconstructCentralRingsBigPaddings(item.centerID);
142
- paddingBufferOrchestrator.insertBulk(paddingDatas, bufferManagersCompMapPadding);
143
- }
144
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.insertBulk(items);
145
- this.__contextTextWriterUpdate(items.map(({ centerID }) => centerID), textWriterIDs);
146
- globe.DrawRender();
147
- }
148
- /**
149
- * @method updateCentersColor @param { Array < { centerID, rgba: [4 numbers] } >} centerColors
150
- */
151
- updateCentersColor(centerColors, { textWriterIDs = [] } = {}) {
152
- // Algorithm
153
- /**
154
- * 1. ask centerRingAccount for existing rings COLOR KEYS
155
- * 2. update centers
156
- * 3. update buffer orchestators
157
- */
158
- this._ringAccount.updateCentersColor(centerColors);
159
- const { globe, bufferOrchestrator, bufferManagersCompMap, paddingBufferOrchestrator, bufferManagersCompMapPadding } = this;
160
- for (const { centerID } of centerColors) {
161
- const datas = this.__reconstructCentralProperties(centerID);
162
- bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["rgba", "rgbaMercator"]);
163
- const paddingDatas = this.__reconstructCentralPaddingProperties(centerID);
164
- paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["rgba"]);
165
- }
166
- this.__contextTextWriterUpdate(centerColors.map(({ centerID }) => centerID), textWriterIDs);
167
- globe.DrawRender();
168
- }
169
- /**
170
- *
171
- * @method updateCentersHide @param { Array < { centerID, hide, textHide } >} centerHides
172
- */
173
- updateCentersHide(centerHides, { textWriterIDs = [] } = {}) {
174
- var _a;
175
- // Algorithm
176
- /**
177
- * Simple
178
- * 1. update centers
179
- * 2. reconstruct data,
180
- * 3. update color buffer
181
- * */
182
- this._ringAccount.updateCentersHide(centerHides);
183
- const { globe, bufferOrchestrator, bufferManagersCompMap, paddingBufferOrchestrator, bufferManagersCompMapPadding } = this;
184
- for (const { centerID } of centerHides) {
185
- const datas = this.__reconstructCentralProperties(centerID);
186
- bufferOrchestrator.updateBulk(datas, bufferManagersCompMap, ["rgba", "rgbaMercator"]);
187
- const paddingDatas0 = this.__reconstructCentralRings(centerID);
188
- bufferOrchestrator.updateBulk(paddingDatas0, bufferManagersCompMap, ["radius3dsmall", "centerCoords2dflatForPadding"]);
189
- const paddingDatas = this.__reconstructCentralPaddingProperties(centerID);
190
- paddingBufferOrchestrator.updateBulk(paddingDatas, bufferManagersCompMapPadding, ["rgba"]);
191
- }
192
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.updateCentersHide(centerHides);
193
- this.__contextTextWriterUpdate(centerHides.map(({ centerID }) => centerID), textWriterIDs);
194
- globe.DrawRender();
195
- /**
196
- * Complicated
197
- * 1. ask centerRingAccount for existing rings HIDE KEYS
198
- * 2. delete from buffer orchestators
199
- * 3. mark centers as hidden
200
- */
201
- }
202
- /**
203
- * @param {Array<string>} textWriterIDs textWritersMap keys to be used for writing text.
204
- * @param {Array<string>} itemKeys if empty, all texts will be updated. Use {@link ringKeyMethod} method to get keys
205
- */
206
- updateText(textWriterIDs = [], itemKeys = null) {
207
- const textWritersMap = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
208
- if (itemKeys === null) {
209
- this._ringAccount.updateAllText(textWritersMap, this._textDataPreAdaptor);
210
- this.globe.DrawRender();
211
- }
212
- else {
213
- itemKeys.forEach((key) => {
214
- const item = this._ringAccount.getCenter(key);
215
- if (item === undefined)
216
- throw new Error("Center not found");
217
- const textData = this._textDataPreAdaptor(item);
218
- textWritersMap.forEach((textWriter) => textWriter.insertText(textData));
219
- });
220
- }
221
- this.globe.DrawRender();
222
- }
223
- /**
224
- * @method removeCenters @param { Array < { centerID } >} centerIDs
225
- */
226
- removeCenters(centerIDs) {
227
- var _a;
228
- const { globe, bufferOrchestrator, bufferManagersCompMap, paddingBufferOrchestrator, bufferManagersCompMapPadding, _ringAccount } = this;
229
- for (const centerID of centerIDs) {
230
- const existingKeys = _ringAccount.ringKeys(centerID);
231
- if (existingKeys.length) {
232
- bufferOrchestrator.deleteBulk(existingKeys, bufferManagersCompMap);
233
- this._textWritersMap.forEach((textWriter) => textWriter.deleteTextBulk(existingKeys));
234
- }
235
- }
236
- for (const centerID of centerIDs) {
237
- const paddingKeys = _ringAccount.ringBigPaddingKeys(centerID);
238
- if (paddingKeys.length) {
239
- paddingBufferOrchestrator.deleteBulk(paddingKeys, bufferManagersCompMapPadding);
240
- }
241
- }
242
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.removeCenters(centerIDs);
243
- this._ringAccount.removeCenters(centerIDs);
244
- globe.DrawRender();
245
- }
246
- /**
247
- * @method setOpacity @param { number } opacity
248
- */
249
- setOpacity(opacity) {
250
- var _a;
251
- (0, typecheck_1.opacityCheck)(opacity);
252
- this._opacity = opacity;
253
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.setOpacity(opacity);
254
- this._textWritersMap.forEach((writer) => writer.setOpacity(opacity));
255
- this.globe.DrawRender();
256
- }
257
- /**
258
- * @method setOneDegreePaddingOn // performance consuming, might be removed
259
- */
260
- setOneDegreePaddingOn(isOneDegreePaddingOn) {
261
- if (typeof isOneDegreePaddingOn !== "boolean")
262
- throw new Error("Invalid value for one degree padding");
263
- if (this._oneDegreePadding === isOneDegreePaddingOn)
264
- return;
265
- this._oneDegreePadding = isOneDegreePaddingOn;
266
- this.globe.DrawRender();
267
- }
268
- setZAlphaOnDegreePadding(zAlphaOnDegreePadding) {
269
- if (zAlphaOnDegreePadding !== 0 && zAlphaOnDegreePadding !== 1)
270
- throw new Error("Invalid value for zAlphaOnDegreePadding");
271
- if (this._zAlphaOnDegreePadding === zAlphaOnDegreePadding)
272
- return;
273
- this._zAlphaOnDegreePadding = zAlphaOnDegreePadding;
274
- this.globe.DrawRender();
275
- }
276
- // PRIVATE METHODS
277
- _initPrograms() {
278
- const { globe } = this;
279
- this._circleProgram2D = circle_accurate_flat_1.CircleCache.get(globe);
280
- this._circleProgram3D = circle_accurate_3d_1.CircleCache.get(globe);
281
- this._padding2dProgram = lines_color_instanced_flat_1.LinesColorInstancedFlatCache.get(globe);
282
- this._padding3dProgram = degree_padding_around_circle_3d_1.CirclePadding3DCache.get(globe);
283
- this._lineOnGlobe_bigPadding = naive_accurate_flexible_1.LineOnGlobeCache.get(globe);
284
- }
285
- _initBufferManagers() {
286
- const { gl } = this;
287
- const initialCapacity = 10;
288
- const bufferType = "DYNAMIC_DRAW";
289
- // circle2d, circle3d, 1 degree paddings,
290
- this.bufferOrchestrator = new account_1.BufferOrchestrator({ capacity: initialCapacity });
291
- this.bufferManagersCompMap = new Map([
292
- // circle 3D
293
- ["centerCoords3d", {
294
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
295
- 'adaptor': (item) => new Float32Array(item.centerCoords3d),
296
- }],
297
- ["targetCoords3d", {
298
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
299
- 'adaptor': (item) => new Float32Array(item.targetCoords3d),
300
- }],
301
- ["rgba", {
302
- 'bufferManager': new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
303
- 'adaptor': (item) => new Float32Array(item.hide === enum_1.ENUM_HIDE.HIDE ? [0, 0, 0, 0] : item.rgba)
304
- }],
305
- ["radius3d", {
306
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
307
- 'adaptor': (item) => new Float32Array([item.radius])
308
- }],
309
- ["radius3dsmall", {
310
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
311
- 'adaptor': (item) => {
312
- if (item.hide === enum_1.ENUM_HIDE.HIDE_1_DEGREE_PADDINGS)
313
- return new Float32Array([item.radius]);
314
- return new Float32Array([item.radius - item.padding / 3]);
315
- }
316
- }],
317
- ["circleDashAngle", {
318
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
319
- 'adaptor': (item) => new Float32Array([1]),
320
- }],
321
- ["dashOpacity", {
322
- 'bufferManager': new account_1.BufferManager(gl, 1, { bufferType, initialCapacity }),
323
- 'adaptor': (item) => new Float32Array([1]),
324
- }],
325
- // circle 2D
326
- ["centerCoords2dflatForPadding", {
327
- 'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT * 2, { bufferType, initialCapacity }),
328
- 'adaptor': (item) => item.centerCoords2dflatForPadding,
329
- }],
330
- ["centerCoords2dflat", {
331
- 'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT * 2, { bufferType, initialCapacity }),
332
- 'adaptor': (item) => item.centerCoords2dflat,
333
- }],
334
- ["rgbaMercator", {
335
- 'bufferManager': new account_1.BufferManager(gl, 4 * CIRCLE_FLAT_EDGE_COUNT, { bufferType, initialCapacity }),
336
- 'adaptor': (item) => data_filler_1.populateFloat32Array.fillWithListData(CIRCLE_FLAT_EDGE_COUNT, item.hide === enum_1.ENUM_HIDE.HIDE ? [0, 0, 0, 0] : item.rgba),
337
- }],
338
- ["circleDashAngleMercator", {
339
- 'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT, { bufferType, initialCapacity }),
340
- 'adaptor': (item) => data_filler_1.populateFloat32Array.fillFloat32Array(CIRCLE_FLAT_EDGE_COUNT, 1),
341
- }],
342
- ["dashOpacityMercator", {
343
- 'bufferManager': new account_1.BufferManager(gl, CIRCLE_FLAT_EDGE_COUNT, { bufferType, initialCapacity }),
344
- 'adaptor': (item) => data_filler_1.populateFloat32Array.fillFloat32Array(CIRCLE_FLAT_EDGE_COUNT, 1),
345
- }],
346
- ]);
347
- const obj = function (bufferManagerComp, divisor = 1) {
348
- if (bufferManagerComp === null)
349
- return null;
350
- return { 'buffer': bufferManagerComp.bufferManager.buffer, 'stride': 0, 'offset': 0, divisor };
351
- };
352
- this._circle2DVao = this._circleProgram2D.createVAO(...["centerCoords2dflat", "rgbaMercator", "circleDashAngleMercator", "dashOpacityMercator"].map(key => obj(this.bufferManagersCompMap.get(key))));
353
- this._circle3DVao = this._circleProgram3D.createVAO(...["centerCoords3d", "targetCoords3d", "rgba", "circleDashAngle", "dashOpacity"].map(key => obj(this.bufferManagersCompMap.get(key))));
354
- this._oneDegree2DPaddingVao = this._padding2dProgram.createVAO({ buffer: this.bufferManagersCompMap.get("centerCoords2dflat").bufferManager.buffer, size: 2, stride: 0, offset: 0 }, { buffer: this.bufferManagersCompMap.get("centerCoords2dflatForPadding").bufferManager.buffer, size: 2, stride: 0, offset: 0 }, { buffer: this.bufferManagersCompMap.get("rgbaMercator").bufferManager.buffer, size: 4, stride: 0, offset: 0 });
355
- // PADDING
356
- // this one needs glue to assosiate rings and their big paddings since the count for center is not fixed
357
- this.paddingBufferOrchestrator = new account_1.BufferOrchestrator({ capacity: initialCapacity });
358
- this.bufferManagersCompMapPadding = new Map([
359
- ["circlePoint2d", {
360
- 'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
361
- 'adaptor': (item) => item.circlePoint2d,
362
- }],
363
- ["paddingPoint2d", {
364
- 'bufferManager': new account_1.BufferManager(gl, 2, { bufferType, initialCapacity }),
365
- 'adaptor': (item) => item.paddingPoint2d,
366
- }],
367
- ["circlePoint3d", {
368
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
369
- 'adaptor': (item) => item.circlePoint3d
370
- }],
371
- ["paddingPoint3d", {
372
- 'bufferManager': new account_1.BufferManager(gl, 3, { bufferType, initialCapacity }),
373
- 'adaptor': (item) => item.paddingPoint3d
374
- }],
375
- ["rgba", {
376
- 'bufferManager': new account_1.BufferManager(gl, 4, { bufferType, initialCapacity }),
377
- 'adaptor': (item) => new Float32Array(item.rgba)
378
- }],
379
- // ["dashOpacity", {
380
- // 'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
381
- // 'adaptor': (item) => new Float32Array([1]),
382
- // }],
383
- // ["dashRatio", {
384
- // 'bufferManager': new BufferManager(gl, 1, { bufferType, initialCapacity }),
385
- // 'adaptor': (item) => new Float32Array([1]),
386
- // }],
387
- ]);
388
- this._bigPadding3dFlatVAO = this._lineOnGlobe_bigPadding.createVAO(//"dashRatio", "dashOpacity"
389
- ...["circlePoint2d", "circlePoint3d", "paddingPoint2d", "paddingPoint3d", null, null, "rgba",].map(key => (key === null) ? null : obj(this.bufferManagersCompMapPadding.get(key))));
390
- this._padding3dOneDegreeVao = this._padding3dProgram.createVAO(...["centerCoords3d", "radius3d", "radius3dsmall", "rgba"].map(key => obj(this.bufferManagersCompMap.get(key))));
391
- }
392
- // IMPLICIT METHODS
393
- __reconstructCentralRingsBigPaddings(centerID) {
394
- const { globe } = this;
395
- const centerItem = this._ringAccount.getCenter(centerID);
396
- if (centerItem === undefined)
397
- throw new Error("Center not found");
398
- const { long, lat, stepAngle, rgba, rings, hide = 0, textHide = 0, altitude: centerAltitude = 0 } = centerItem;
399
- const result = [];
400
- const color = hide === 1 ? new Float32Array([0, 0, 0, 0]) : new Float32Array(rgba);
401
- for (const { ringID, radius, padding, altitude = centerAltitude } of rings) {
402
- let azimuthAngle = 0;
403
- while (azimuthAngle < 360) {
404
- const circlePoint = globe.Math.FindPointByPolar(long, lat, radius, azimuthAngle); // long lat
405
- const paddingPoint = globe.Math.FindPointByPolar(long, lat, radius - padding, azimuthAngle); // long lat
406
- result.push({
407
- key: (0, ring_account_1.ringBigPaddingKeyMethod)(centerID, ringID, azimuthAngle),
408
- circlePoint2d: new Float32Array(globe.api_GetMercator2DPoint(circlePoint.long, circlePoint.lat)),
409
- paddingPoint2d: new Float32Array(globe.api_GetMercator2DPoint(paddingPoint.long, paddingPoint.lat)),
410
- circlePoint3d: coordOnSphere(circlePoint.long, circlePoint.lat, globe, altitude / 1000),
411
- paddingPoint3d: coordOnSphere(paddingPoint.long, paddingPoint.lat, globe, altitude / 1000),
412
- rgba: color,
413
- hide,
414
- textHide
415
- });
416
- azimuthAngle += stepAngle;
417
- }
418
- }
419
- return result;
420
- }
421
- __reconstructCentralRings(centerID) {
422
- const { globe } = this;
423
- const centerItem = this._ringAccount.getCenter(centerID);
424
- if (centerItem === undefined)
425
- throw new Error("Center not found");
426
- const { long, lat, rgba, rings, hide = 0, textHide = 0, altitude: centralAltitude = 0 } = centerItem;
427
- const centerCoords3d = coordOnSphere(long, lat, globe, centralAltitude / 1000);
428
- const result = [];
429
- for (const { ringID, radius, padding, __identity__, altitude = centralAltitude } of rings) {
430
- const key = __identity__;
431
- const centerCoords2dflat = (0, circle_accurate_flat_1.centerCoords2dflatDataCreatorWithRadius)(globe, long, lat, radius, { edgeCount: CIRCLE_FLAT_EDGE_COUNT });
432
- const radiusPadding = hide === enum_1.ENUM_HIDE.HIDE_1_DEGREE_PADDINGS ? radius : radius - padding / 3;
433
- const targetPoint = globe.Math.FindPointByPolar(long, lat, radius, 0); // long lat
434
- const targetCoords3d = coordOnSphere(targetPoint.long, targetPoint.lat, globe, altitude / 1000);
435
- const centerCoords2dflatForPadding = (0, circle_accurate_flat_1.centerCoords2dflatDataCreatorWithRadius)(globe, long, lat, radiusPadding, { edgeCount: CIRCLE_FLAT_EDGE_COUNT });
436
- result.push({
437
- key,
438
- centerCoords3d,
439
- targetCoords3d,
440
- centerCoords2dflat,
441
- radius,
442
- padding,
443
- rgba,
444
- centerCoords2dflatForPadding,
445
- hide,
446
- textHide
447
- });
448
- }
449
- return result;
450
- }
451
- __reconstructCentralPaddingProperties(centerID) {
452
- const centerItem = this._ringAccount.getCenter(centerID);
453
- if (centerItem === undefined)
454
- throw new Error("Center not found");
455
- const { stepAngle, rgba, rings, hide = 0, textHide = 0 } = centerItem;
456
- const result = [];
457
- for (const { ringID, } of rings) {
458
- let angle = 0;
459
- while (angle < 360) {
460
- result.push({
461
- key: (0, ring_account_1.ringBigPaddingKeyMethod)(centerID, ringID, angle),
462
- rgba: hide === 1 ? new Float32Array([0, 0, 0, 0]) : rgba,
463
- textHide
464
- });
465
- angle += stepAngle;
466
- }
467
- }
468
- return result;
469
- }
470
- __reconstructCentralProperties(centerID) {
471
- const centerItem = this._ringAccount.getCenter(centerID);
472
- if (centerItem === undefined)
473
- throw new Error("Center not found");
474
- const { rgba, rings, hide = 0, textHide = 0 } = centerItem;
475
- const result = [];
476
- for (const { ringID, __identity__ } of rings) {
477
- const key = __identity__;
478
- result.push({
479
- key,
480
- rgba: hide === enum_1.ENUM_HIDE.HIDE ? new Float32Array([0, 0, 0, 0]) : rgba,
481
- textHide
482
- });
483
- }
484
- return result;
485
- }
486
- // GLOBE API
487
- init(globe, gl) {
488
- this.globe = globe;
489
- this.gl = gl;
490
- this._initPrograms();
491
- this._initBufferManagers();
492
- if (this._showNumbers) {
493
- this.paddingTextPlugin = new rangeringangletext_1.default(globe, this.id + "text", { style: this._numbersStyle, opacity: this._opacity });
494
- delete this._numbersStyle;
495
- }
496
- }
497
- draw3D() {
498
- const { globe, gl, _circleProgram2D, _circleProgram3D, _padding2dProgram, _padding3dProgram, _lineOnGlobe_bigPadding, _circle2DVao, _circle3DVao, _oneDegree2DPaddingVao, _padding3dOneDegreeVao, _bigPadding3dFlatVAO, bufferOrchestrator, paddingBufferOrchestrator, _opacity, _oneDegreePadding, _zAlphaOnDegreePadding } = this;
499
- gl.disable(gl.DEPTH_TEST);
500
- const is3D = globe.api_GetCurrentGeometry() === 0;
501
- // const lod = globe.api_GetCurrentLOD();
502
- if (is3D) {
503
- _circleProgram3D.draw(_circle3DVao, bufferOrchestrator.length, _opacity);
504
- if (_oneDegreePadding)
505
- _padding3dProgram.draw(_padding3dOneDegreeVao, bufferOrchestrator.length, 360, 1, _opacity, _zAlphaOnDegreePadding);
506
- }
507
- else {
508
- _circleProgram2D.draw(_circle2DVao, bufferOrchestrator.length, CIRCLE_FLAT_EDGE_COUNT, _opacity);
509
- // _padding2dProgram.draw(bigPaddingVAO, paddingBufferOrchestrator.length, _opacity);
510
- if (_oneDegreePadding)
511
- _padding2dProgram.draw(_oneDegree2DPaddingVao, bufferOrchestrator.length * CIRCLE_FLAT_EDGE_COUNT, _opacity, _zAlphaOnDegreePadding);
512
- }
513
- const drawOptions = { drawRange: { first: 0, count: paddingBufferOrchestrator.length } };
514
- _lineOnGlobe_bigPadding.draw(_bigPadding3dFlatVAO, drawOptions, _opacity);
515
- this._textWritersMap.forEach((textWriter) => textWriter.draw());
516
- gl.enable(gl.DEPTH_TEST);
517
- }
518
- free() {
519
- var _a;
520
- if (this._isFreed)
521
- return;
522
- const { globe } = this;
523
- this.bufferManagersCompMap.forEach(({ bufferManager }) => bufferManager.free());
524
- this.bufferManagersCompMapPadding.forEach(({ bufferManager }) => bufferManager.free());
525
- // delete vaos
526
- this.gl.deleteVertexArray(this._circle2DVao);
527
- this.gl.deleteVertexArray(this._circle3DVao);
528
- this.gl.deleteVertexArray(this._oneDegree2DPaddingVao);
529
- this.gl.deleteVertexArray(this._padding3dOneDegreeVao);
530
- this.gl.deleteVertexArray(this._bigPadding3dFlatVAO);
531
- // delete programs
532
- circle_accurate_flat_1.CircleCache.release(globe);
533
- circle_accurate_3d_1.CircleCache.release(globe);
534
- lines_color_instanced_flat_1.LinesColorInstancedFlatCache.release(globe);
535
- degree_padding_around_circle_3d_1.CirclePadding3DCache.release(globe);
536
- naive_accurate_flexible_1.LineOnGlobeCache.release(globe);
537
- this._circleProgram2D = null;
538
- this._circleProgram3D = null;
539
- this._padding2dProgram = null;
540
- this._padding3dProgram = null;
541
- this._lineOnGlobe_bigPadding = null;
542
- (_a = this.paddingTextPlugin) === null || _a === void 0 ? void 0 : _a.free();
543
- this._isFreed = true;
544
- }
545
- __contextTextWriterUpdate(centerIDs, textWriterIDs = null) {
546
- let textWriters = null;
547
- if (textWriterIDs === null) {
548
- textWriters = Array.from(this._textWritersMap.values());
549
- }
550
- else if (textWriterIDs.length === 0) {
551
- return;
552
- }
553
- else {
554
- textWriters = textWriterGetOrThrow(this._textWritersMap, textWriterIDs);
555
- }
556
- centerIDs.forEach((centerID) => { this._ringAccount.textUpdate(centerID, textWriters, this._textDataPreAdaptor); });
557
- }
558
- }
559
- exports.RangeRings = RangeRings;
560
- const textWriterGetOrThrow = (0, get_1.mapGetOrThrow)("textWriterIDs is invalid");