@pirireis/webglobeplugins 0.16.4 → 0.17.0

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 (168) hide show
  1. package/Math/angle-calculation.js +1 -0
  2. package/Math/arc.js +92 -2
  3. package/Math/circle-cdf-points.js +2 -2
  4. package/Math/circle.js +2 -2
  5. package/Math/contour/quadtreecontours.js +300 -0
  6. package/Math/finite-line-2d.js +58 -0
  7. package/Math/juction/arc-plane.js +67 -12
  8. package/Math/juction/line-sphere.js +6 -6
  9. package/Math/juction/plane-plane.js +4 -6
  10. package/Math/methods.js +5 -5
  11. package/Math/templete-shapes/grid-visually-equal.js +0 -1
  12. package/Math/tessellation/earcut/adapters.js +37 -0
  13. package/Math/tessellation/hybrid-triangle-tessellation-meta.js +123 -0
  14. package/Math/tessellation/methods.js +46 -0
  15. package/Math/tessellation/shred-input.js +18 -0
  16. package/Math/tessellation/tile-merger.js +56 -0
  17. package/Math/tessellation/tiler.js +50 -0
  18. package/Math/tessellation/triangle-tessellation-meta.js +516 -0
  19. package/Math/tessellation/triangle-tessellation.js +14 -0
  20. package/Math/tessellation/zoom-catch.js +1 -0
  21. package/Math/vec3.js +26 -1
  22. package/compass-rose/compass-text-writer.js +39 -33
  23. package/constants.js +3 -0
  24. package/{util/heatwavedatamanager → heatwave}/datamanager.js +1 -1
  25. package/heatwave/{plugins/heatwaveglobeshell.js → heatwave.js} +8 -6
  26. package/heatwave/index.js +5 -3
  27. package/heatwave/{isobar/plugin.js → isobar.js} +6 -5
  28. package/{util/heatwavedatamanager → heatwave}/texture-point-sampler.js +24 -3
  29. package/package.json +7 -3
  30. package/programs/arrowfield/{object.js → arrow-field.js} +1 -1
  31. package/programs/arrowfield/logic.js +1 -1
  32. package/programs/data2legend/density-to-legend.js +24 -29
  33. package/programs/data2legend/point-to-density-texture.js +14 -17
  34. package/programs/float2legendwithratio/logic.js +2 -2
  35. package/programs/float2legendwithratio/object.js +1 -1
  36. package/programs/helpers/{blender/program.js → blender.js} +1 -1
  37. package/programs/helpers/{fadeaway/logic.js → fadeaway.js} +11 -2
  38. package/programs/index.js +20 -9
  39. package/programs/line-on-globe/circle-accurate-3d.js +12 -14
  40. package/programs/line-on-globe/circle-accurate-flat.js +0 -1
  41. package/programs/line-on-globe/degree-padding-around-circle-3d.js +13 -15
  42. package/programs/line-on-globe/lines-color-instanced-flat.js +15 -18
  43. package/programs/line-on-globe/naive-accurate-flexible.js +0 -1
  44. package/programs/picking/pickable-polygon-renderer.js +1 -1
  45. package/programs/picking/pickable-renderer.js +2 -2
  46. package/programs/point-on-globe/element-globe-surface-glow.js +2 -2
  47. package/programs/point-on-globe/element-point-glow.js +1 -1
  48. package/programs/point-on-globe/square-pixel-point.js +1 -1
  49. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin-triangle.js +204 -0
  50. package/programs/polygon-on-globe/texture-dem-triangle-test-plugin.js +31 -10
  51. package/programs/polygon-on-globe/texture-dem-triangles.js +81 -12
  52. package/programs/rings/partial-ring/piece-of-pie.js +26 -29
  53. package/programs/totems/camerauniformblock.js +34 -45
  54. package/programs/two-d/pixel-padding-for-compass.js +14 -24
  55. package/programs/vectorfields/logics/drawrectangleparticles.js +1 -2
  56. package/programs/vectorfields/logics/pixelbased.js +1 -2
  57. package/programs/vectorfields/pingpongbuffermanager.js +1 -1
  58. package/range-tools-on-terrain/bearing-line/adapters.js +1 -1
  59. package/range-tools-on-terrain/circle-line-chain/adapters.js +0 -5
  60. package/range-tools-on-terrain/circle-line-chain/plugin.js +1 -1
  61. package/range-tools-on-terrain/range-ring/plugin.js +4 -6
  62. package/semiplugins/lightweight/line-plugin.js +0 -1
  63. package/semiplugins/shape-on-terrain/arc-plugin.js +5 -7
  64. package/semiplugins/shape-on-terrain/circle-plugin.js +2 -2
  65. package/semiplugins/shape-on-terrain/padding-1-degree.js +1 -2
  66. package/semiplugins/shell/bbox-renderer/index.js +2 -0
  67. package/{programs/globeshell/wiggle → semiplugins/shell/bbox-renderer}/logic.js +101 -102
  68. package/{programs/globeshell/wiggle → semiplugins/shell/bbox-renderer}/object.js +6 -7
  69. package/semiplugins/utility/container-plugin.js +94 -0
  70. package/semiplugins/utility/object-pass-container-plugin.js +80 -0
  71. package/{point-heat-map → tracks/point-heat-map}/adaptors/timetracksplugin-format-to-this.js +1 -1
  72. package/{point-heat-map → tracks/point-heat-map}/plugin-webworker.js +3 -3
  73. package/{point-heat-map → tracks/point-heat-map}/point-to-heat-map-flow.js +11 -14
  74. package/{point-tracks → tracks/point-tracks}/plugin.js +5 -5
  75. package/{timetracks → tracks/timetracks}/adaptors-line-strip.js +1 -1
  76. package/{timetracks → tracks/timetracks}/program-line-strip.js +49 -49
  77. package/{timetracks → tracks/timetracks}/programpoint-line-strip.js +16 -13
  78. package/types.js +6 -0
  79. package/util/account/bufferoffsetmanager.js +1 -1
  80. package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +9 -95
  81. package/util/gl-util/uniform-block/manager.js +4 -5
  82. package/util/gl-util/uniform-block/types.js +0 -7
  83. package/util/index.js +10 -13
  84. package/util/picking/fence.js +16 -18
  85. package/util/picking/picker-displayer.js +4 -6
  86. package/util/programs/{shapesonglobe.js → draw-from-pixel-coords.js} +4 -7
  87. package/util/programs/draw-texture-on-canvas.js +1 -1
  88. package/util/programs/texturetoglobe.js +3 -3
  89. package/util/shaderfunctions/geometrytransformations.js +6 -0
  90. package/util/webglobe/rasteroverlay.js +1 -0
  91. package/vectorfield/arrowfield/index.js +3 -0
  92. package/{arrowfield → vectorfield/arrowfield}/plugin.js +2 -2
  93. package/{waveparticles → vectorfield/waveparticles}/plugin.js +12 -12
  94. package/{wind → vectorfield/wind}/index.js +1 -1
  95. package/{wind → vectorfield/wind}/plugin.js +32 -32
  96. package/write-text/attached-text-writer.js +9 -1
  97. package/write-text/context-text3.js +0 -1
  98. package/write-text/objectarraylabels/index.js +2 -0
  99. package/Math/mesh/mapbox-delaunay.js +0 -544
  100. package/arrowfield/index.js +0 -3
  101. package/bearing-line/index.js +0 -2
  102. package/bearing-line/plugin.js +0 -444
  103. package/circle-line-chain/chain-list-map.js +0 -201
  104. package/circle-line-chain/plugin.js +0 -411
  105. package/circle-line-chain/util.js +0 -1
  106. package/compassrose/compassrose.js +0 -293
  107. package/compassrose/index.js +0 -2
  108. package/index.js +0 -12
  109. package/partialrings/buffer-manager.js +0 -75
  110. package/partialrings/index.js +0 -2
  111. package/partialrings/plugin.js +0 -128
  112. package/partialrings/program.js +0 -279
  113. package/programs/arrowfield/index.js +0 -2
  114. package/programs/globe-util/is-globe-moved.js +0 -19
  115. package/programs/globeshell/index.js +0 -2
  116. package/programs/globeshell/wiggle/index.js +0 -2
  117. package/programs/helpers/blender/index.js +0 -1
  118. package/programs/helpers/fadeaway/index.js +0 -2
  119. package/programs/helpers/fadeaway/object.js +0 -14
  120. package/programs/helpers/index.js +0 -2
  121. package/programs/rings/distancering/circleflatprogram.js +0 -116
  122. package/programs/rings/distancering/circlepaddingfreeangleprogram.js +0 -326
  123. package/programs/rings/distancering/circlepaddysharedbuffer.js +0 -368
  124. package/programs/rings/distancering/index.js +0 -6
  125. package/programs/rings/distancering/paddyflatprogram.js +0 -127
  126. package/programs/rings/distancering/paddyflatprogram2d.js +0 -129
  127. package/programs/rings/distancering/paddyflatprogram3d.js +0 -128
  128. package/programs/two-d/pixel-circle.js +0 -1
  129. package/programs/vectorfields/index.js +0 -3
  130. package/rangerings/enum.js +0 -2
  131. package/rangerings/index.js +0 -5
  132. package/rangerings/plugin.js +0 -543
  133. package/rangerings/rangeringangletext.js +0 -326
  134. package/rangerings/ring-account.js +0 -112
  135. package/timetracks/index.js +0 -1
  136. package/util/build-strategy/general-strategy.js +0 -62
  137. package/util/gl-util/uniform-block/shader.js +0 -1
  138. package/util/heatwavedatamanager/index.js +0 -2
  139. package/util/heatwavedatamanager/pointcoordsmeta.js +0 -22
  140. package/util/jshelpers/data-filler.js +0 -17
  141. package/util/jshelpers/equality.js +0 -18
  142. package/util/jshelpers/index.js +0 -2
  143. package/util/jshelpers/timefilters.js +0 -30
  144. package/util/programs/index.js +0 -1
  145. package/util/surface-line-data/arc-bboxes.js +0 -25
  146. package/util/surface-line-data/arcs-to-cuts.js +0 -50
  147. package/util/surface-line-data/cut-arc.js +0 -1
  148. package/util/surface-line-data/flow.js +0 -28
  149. package/util/surface-line-data/rbush-manager.js +0 -1
  150. package/util/surface-line-data/web-worker.js +0 -1
  151. package/write-text/context-text3old.js +0 -152
  152. package/write-text/index.js +0 -1
  153. package/write-text/writer-plugin.js +0 -8
  154. /package/{heatwave/isobar/quadtreecontours.js → Math/contour/quadtreecontours1.js} +0 -0
  155. /package/{util/surface-line-data → Math/tessellation}/types.js +0 -0
  156. /package/pin/{pin-object-array.js → pin-object-array1.js} +0 -0
  157. /package/pin/{pin-point-totem.js → pin-point-totem1.js} +0 -0
  158. /package/{circle-line-chain/init.js → programs/polygon-on-globe/partial-tesselation.js} +0 -0
  159. /package/{point-heat-map → tracks/point-heat-map}/index.js +0 -0
  160. /package/{point-tracks → tracks/point-tracks}/key-methods.js +0 -0
  161. /package/{timetracks → tracks/timetracks}/plugin-line-strip.js +0 -0
  162. /package/{arrowfield → vectorfield/arrowfield}/adaptor.js +0 -0
  163. /package/{waveparticles → vectorfield/waveparticles}/adaptor.js +0 -0
  164. /package/{waveparticles → vectorfield/waveparticles}/index.js +0 -0
  165. /package/{wind → vectorfield/wind}/imagetovectorfieldandmagnitude.js +0 -0
  166. /package/{wind → vectorfield/wind}/vectorfieldimage.js +0 -0
  167. /package/write-text/{context-text.js → context-textDELETE.js} +0 -0
  168. /package/{heatwave/isobar → write-text/objectarraylabels}/objectarraylabels.js +0 -0
@@ -1,293 +0,0 @@
1
- // TODO: REMOVE THIS
2
- import { CSGlobe, CSObjectTypes, CSIconTypes, CSObjectArrayUpdateTypes, GlobeManager } from "@pirireis/webglobe";
3
- const object = {
4
- "displayName": "CompassRose",
5
- "layerType": 3,
6
- "wkbGeom": null,
7
- "wfsLayerName": null,
8
- "style": {
9
- "labels": [
10
- {
11
- "startLod": 2,
12
- "endLod": 25,
13
- "position": 0,
14
- "text": "'${title}'",
15
- "textCallback": null,
16
- "offset": {
17
- "x": 0,
18
- "y": 0
19
- },
20
- "vAlignment": 2,
21
- "hAlignment": 2,
22
- "size": 20,
23
- "hollowColor": "#000",
24
- "textColor": "#FFF",
25
- "textOpacity": 1,
26
- "transform": 0,
27
- "fontFamily": {
28
- "name": "arial",
29
- "bold": true,
30
- "italic": false,
31
- "hollow": true,
32
- "hollowWidth": 2,
33
- "hollowBlur": 1,
34
- "hollowOpacity": 0.75
35
- },
36
- "reductable": false,
37
- "reduction": false,
38
- "searchAvailablePlace": false,
39
- "searchRadius": 3,
40
- "forceToDraw": false,
41
- "drawAlways": false,
42
- "canMove": true,
43
- "ignoreEmptyStrings": false,
44
- "textStyle": null
45
- }
46
- ],
47
- "iconType": 4,
48
- "active": true,
49
- "icon": {
50
- "rotateByGlobe": true,
51
- "integerPosition": false,
52
- "mapName": "light",
53
- "name": "lightning25",
54
- "iconColor": "#ffffff",
55
- "borderColor": "#0000ff",
56
- "fillColor": "#ffffff",
57
- "borderWidth": 2,
58
- "radius": 70,
59
- "sizeX": 140,
60
- "sizeY": 140,
61
- "rotDeg": 0
62
- },
63
- "iconReduction": {
64
- "reduction": false,
65
- "searchAvailablePlace": false,
66
- "searchRadius": 3,
67
- "forceToDraw": false
68
- },
69
- "mouseOverSymbolScale": 1,
70
- "shape": null,
71
- "filter": [],
72
- "lineType": {
73
- "cap": "round",
74
- "join": "round",
75
- "miterLimit": 2,
76
- "dash": [],
77
- "width": 2
78
- },
79
- "opacity": 1,
80
- "border": true,
81
- "borderColor": "#000000",
82
- "filled": true,
83
- "fillColor": "#ffff00",
84
- "bottomFilled": false,
85
- "bottomFillColor": "#ffff00",
86
- "sideFilled": true,
87
- "sideColor": "#ff00ff",
88
- "cullFace": true,
89
- "depthTest": false,
90
- "zMode": 1,
91
- "displayName": "",
92
- "fidKey": "name_local",
93
- "startLod": 2,
94
- "endLod": 25,
95
- "flashIcon": false,
96
- "flashShape": false,
97
- "flashLabels": false,
98
- "flashGeo": false,
99
- "lodDisplay": []
100
- },
101
- "objectType": "point",
102
- "bbox": null,
103
- "startLod": 2,
104
- "endLod": 19,
105
- "continuousLOD": true,
106
- "MVTXYZName": "hd_seyp",
107
- "rasterize": false,
108
- "selectedStyle": {
109
- "labels": [
110
- {
111
- "startLod": 2,
112
- "endLod": 25,
113
- "position": 0,
114
- "text": "",
115
- "textCallback": null,
116
- "offset": {
117
- "x": 16,
118
- "y": -16
119
- },
120
- "vAlignment": 2,
121
- "hAlignment": 2,
122
- "size": 20,
123
- "hollowColor": "#000",
124
- "textColor": "#FFF",
125
- "textOpacity": 1,
126
- "transform": 0,
127
- "fontFamily": {
128
- "name": "arial",
129
- "bold": true,
130
- "italic": false,
131
- "hollow": true,
132
- "hollowWidth": 2,
133
- "hollowBlur": 1,
134
- "hollowOpacity": 0.75
135
- },
136
- "drawAlways": true,
137
- "canMove": false,
138
- "ignoreEmptyStrings": false,
139
- "textStyle": null
140
- }
141
- ],
142
- "icon": {
143
- "iconColor": "#ffffff",
144
- "borderColor": "#000000",
145
- "fillColor": "#ff0000",
146
- "borderWidth": 2,
147
- "radius": 16,
148
- "sizeX": 32,
149
- "sizeY": 32,
150
- "rotDeg": 0
151
- },
152
- "mouseOverSymbolScale": 1,
153
- "shape": {
154
- "type": 3
155
- },
156
- "filter": [],
157
- "opacity": 0.75,
158
- "borderColor": "#000000",
159
- "fillColor": "#ff0000",
160
- "bottomFillColor": "#ff00ff",
161
- "sideColor": "#ffff00",
162
- "flashIcon": false,
163
- "flashShape": false,
164
- "flashLabels": false,
165
- "flashGeo": false
166
- }
167
- };
168
- const setIconSize = (object, size) => {
169
- object.style.icon.sizeX = size;
170
- object.style.icon.sizeY = size;
171
- object.style.icon.radius = Math.ceil(size / 2);
172
- };
173
- const setMapName = (object, mapName) => {
174
- object.style.icon.mapName = mapName;
175
- };
176
- const setIconName = (object, name) => {
177
- object.style.icon.name = name;
178
- };
179
- const setData = (object, data) => {
180
- object.data = data;
181
- };
182
- const addSingleImageIconMap = symbolSet => url => {
183
- GlobeManager.api_AddIconMap(symbolSet, url, null);
184
- };
185
- const setFIDKey = (object, key) => {
186
- object.style.fidKey = key;
187
- };
188
- export default class CompassRose {
189
- constructor(id, globe, { size = 100, primaryKey = "__key__", symbolSet = "compassRose", iconSet = null, imageURL = null, data = null }) {
190
- this.id = id;
191
- this.globe = globe;
192
- this._idCollector = new Set();
193
- this.primaryKey = primaryKey;
194
- this.object = structuredClone(object);
195
- this.object.id = id;
196
- setIconSize(this.object, size);
197
- if (imageURL) {
198
- addSingleImageIconMap(symbolSet)(imageURL);
199
- }
200
- setMapName(this.object, symbolSet);
201
- setIconName(this.object, symbolSet);
202
- setFIDKey(this.object, primaryKey);
203
- globe.ObjectArray.Add(this.object);
204
- if (data)
205
- this.setControlledData(data);
206
- }
207
- setIconSize(size) {
208
- const { object, globe } = this;
209
- setIconSize(object, size);
210
- globe.ObjectArray.StyleChanged(object);
211
- }
212
- setMapName(mapName) {
213
- const { object, globe } = this;
214
- setMapName(object, mapName);
215
- globe.ObjectArray.StyleChanged(object);
216
- }
217
- flush() {
218
- this._idCollector.clear();
219
- this._setData({ coords: [], coordsZ: [], attribs: [] });
220
- }
221
- insert(data) {
222
- const updateBucket = {
223
- coords: [],
224
- coordsZ: [],
225
- attribs: [],
226
- };
227
- const addBucket = {
228
- coords: [],
229
- coordsZ: [],
230
- attribs: [],
231
- };
232
- let bucket;
233
- for (let i = 0; i < data.attribs.length; i++) {
234
- const currentPayload = data.attribs[i];
235
- const id = currentPayload[this.primaryKey];
236
- if (this._idCollector.has(id)) {
237
- bucket = updateBucket;
238
- }
239
- else {
240
- this._idCollector.add(id);
241
- bucket = addBucket;
242
- }
243
- bucket.coords.push(data.coords[2 * i], data.coords[2 * i + 1]);
244
- bucket.coordsZ.push(data.coordsZ[i]);
245
- bucket.attribs.push(currentPayload);
246
- }
247
- if (addBucket.coords.length > 0) {
248
- this._updateData(addBucket, CSObjectArrayUpdateTypes.ADD, { attribs: false, icon: false, label: false, heading: false });
249
- }
250
- if (updateBucket.coords.length > 0) {
251
- this._updateData(updateBucket, CSObjectArrayUpdateTypes.UPDATE, { attribs: false, icon: false, label: false, heading: false });
252
- }
253
- }
254
- delete(dataIDs) {
255
- const deleteBucket = {
256
- coords: [],
257
- coordsZ: [],
258
- attribs: [],
259
- };
260
- dataIDs.forEach(id => {
261
- if (this._idCollector.has(id)) {
262
- this._idCollector.delete(id);
263
- deleteBucket.coords.push(0, 0);
264
- deleteBucket.coordsZ.push(0);
265
- // also can be written as follows
266
- deleteBucket.attribs.push({
267
- [this.primaryKey]: id,
268
- });
269
- }
270
- });
271
- if (deleteBucket.coords.length > 0) {
272
- this._updateData(deleteBucket, CSObjectArrayUpdateTypes.DELETE);
273
- }
274
- }
275
- removeFromMap() {
276
- this.globe.ObjectArray.Delete(this.id);
277
- }
278
- // private
279
- _setData(data) {
280
- const { globe, object } = this;
281
- globe.ObjectArray.SetData(object, [data]);
282
- }
283
- /**
284
- * @param {PointObjectArray} data
285
- * @param {CSObjectArrayUpdateTypes} operation
286
- * @param {CanChangeOptions} [canChange]
287
- */
288
- _updateData(data, operation, canChange) {
289
- const { globe, object } = this;
290
- globe.ObjectArray.UpdateData(object, operation, [data], canChange);
291
- }
292
- }
293
- const getID = (data, primaryKey) => data.attribs[primaryKey];
@@ -1,2 +0,0 @@
1
- import CompassRose from "./compassrose";
2
- export { CompassRose };
package/index.js DELETED
@@ -1,12 +0,0 @@
1
- import * as wind from "./wind";
2
- import * as waveparticles from "./waveparticles";
3
- import * as timetracks from "./timetracks";
4
- import * as arrowfield from "./arrowfield";
5
- import * as rangerings from "./rangerings";
6
- import * as partialring from "./partialrings";
7
- import * as compassrose from "./compassrose";
8
- import * as heatwave from "./heatwave";
9
- import * as util from "./util";
10
- import * as programs from "./programs";
11
- import * as pointheatmap from "./point-heat-map";
12
- export { wind, waveparticles, timetracks, rangerings, compassrose, heatwave, util, programs, arrowfield, partialring, pointheatmap };
@@ -1,75 +0,0 @@
1
- import BufferOffsetManager from "../util/account/bufferoffsetmanager";
2
- const ITEM_SIZE = 10;
3
- export default class BufferManager extends BufferOffsetManager {
4
- constructor(globe, gl, buffer, { initialCapacity = 10, bufferType = "DYNAMIC_DRAW" } = {}) {
5
- super(ITEM_SIZE, { capacity: initialCapacity });
6
- this.globe = globe;
7
- this.gl = gl;
8
- this.buffer = buffer;
9
- this.bufferType = bufferType;
10
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
11
- gl.bufferData(gl.ARRAY_BUFFER, initialCapacity * ITEM_SIZE * 4, gl[bufferType]);
12
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
13
- }
14
- /**
15
- *
16
- * @param { Array<{key, long, lat, startAngle, tailAngle, radius, rgba[4], rgbaMode }>} rings
17
- * @returns
18
- */
19
- insertBulk(items) {
20
- if (items.length === 0)
21
- return;
22
- this.autoExtendBuffer(items.length);
23
- const { gl, buffer } = this;
24
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
25
- for (let { key, long, lat, startAngle, tailAngle, rgba, radius, rgbaMode } of items) {
26
- const offset = this.getOffset(key) | this.nextOffset();
27
- this.setOffset(key, offset);
28
- const block = new Float32Array([
29
- long, lat, startAngle, tailAngle, ...rgba, radius, rgbaMode
30
- ]);
31
- gl.bufferSubData(gl.ARRAY_BUFFER, offset, block);
32
- // 2 1 1 1 4 1 = 10
33
- }
34
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
35
- this.globe.DrawRender();
36
- }
37
- /**
38
- * @param {Array<{key, long, lat, startAngle, tailAngle}>} items
39
- *
40
- * */
41
- updateCenterAndAngleBulk(items) {
42
- const { gl, buffer } = this;
43
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
44
- for (let { key, long, lat, startAngle, tailAngle } of items) {
45
- const offset = this.getOffset(key);
46
- if (offset === null) {
47
- console.warn(`key ${key} not found`);
48
- continue;
49
- }
50
- const block = new Float32Array([long, lat, startAngle, tailAngle]);
51
- gl.bufferSubData(gl.ARRAY_BUFFER, offset, block);
52
- }
53
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
54
- this.globe.DrawRender();
55
- }
56
- /**
57
- *
58
- * @param {Array<{key:string, payload:Float32Array}} items
59
- * @param {PART_OFFSET_LOOPUP} part | long, lat, START_ANGLE, ROTATION_ANGLE, RADIUS, rgba, rgba_MODE
60
- * @returns
61
- */
62
- updatePartial(items, part) {
63
- const { gl, buffer } = this;
64
- this._updatePartial(items, part, gl, buffer);
65
- this.globe.DrawRender();
66
- }
67
- deleteBulk(keys) {
68
- this._deleteBulk(keys);
69
- this.globe.DrawRender();
70
- }
71
- free() {
72
- this.gl.deleteBuffer(this.buffer);
73
- this.buffer = null;
74
- }
75
- }
@@ -1,2 +0,0 @@
1
- import PartialRing, { RINGPARTIAL_ALPHA_MODE, RINGPARTIAL_DRAW_MODE, PART_OFFSET_LOOPUP } from './plugin';
2
- export { PartialRing, RINGPARTIAL_ALPHA_MODE, RINGPARTIAL_DRAW_MODE, PART_OFFSET_LOOPUP };
@@ -1,128 +0,0 @@
1
- import BufferOffsetManager from '../util/account/bufferoffsetmanager';
2
- import { programCache, ITEM_SIZE } from './program';
3
- import { opacityCheck } from '../util/check/typecheck';
4
- const emptyBlock = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
5
- export const RINGPARTIAL_DRAW_MODE = Object.freeze({
6
- LINE_STRIP: "LINE_STRIP",
7
- TRIANGLE_FAN: "TRIANGLE_FAN",
8
- });
9
- export const RINGPARTIAL_ALPHA_MODE = Object.freeze({
10
- CONSTANT: 0,
11
- FADING: 1,
12
- HIDE: 2,
13
- });
14
- export const PART_OFFSET_LOOPUP = Object.freeze({
15
- LONG: 0,
16
- LAT: 1,
17
- START_ANGLE: 2,
18
- TAIL_ANGLE: 3,
19
- RGBA: 4,
20
- RADIUS: 8,
21
- RGBA_MODE: 9,
22
- });
23
- export default class {
24
- constructor(id, { edgeCount = 10, drawMode = RINGPARTIAL_DRAW_MODE.LINE_STRIP, startLod = 3, endLod = 13, alphaMultiplier = 1 } = {}) {
25
- this.id = id;
26
- this.edgeCount = edgeCount;
27
- this.drawMode = drawMode;
28
- this.startLod = startLod;
29
- this.endLod = endLod;
30
- this.alphaMultiplier = alphaMultiplier;
31
- }
32
- init(globe, gl) {
33
- this.gl = gl;
34
- this.globe = globe;
35
- this.program = programCache.get(globe);
36
- const { vao, buffer } = this.program.getVaoBuffer();
37
- this.vao = vao;
38
- this.buffer = buffer;
39
- }
40
- draw3D() {
41
- const LOD = this.globe.api_GetCurrentLOD();
42
- if (LOD < this.startLod || LOD > this.endLod)
43
- return;
44
- this.program.draw(this.bufferManager.length, this.vao, this.edgeCount, this.alphaMultiplier, this.drawMode);
45
- }
46
- /**
47
- *
48
- * @param {RINGPARTIAL_DRAW_MODE} drawMode
49
- */
50
- setDrawMode(drawMode) {
51
- this.drawMode = drawMode;
52
- }
53
- setOpacity(opacity) {
54
- opacityCheck(opacity);
55
- this.alphaMultiplier = opacity;
56
- }
57
- setStartEndLOD({ startLod = null, endLod = null } = {}) {
58
- if (startLod !== null)
59
- this.startLod = startLod;
60
- if (endLod !== null)
61
- this.endLod = endLod;
62
- }
63
- createBufferMAnager(initialCapacity = 10, bufferType = 'DYNAMIC_DRAW') {
64
- if (!this.bufferManager) {
65
- this.bufferManager = new BufferManager(this.globe, this.gl, this.buffer, { initialCapacity, bufferType, });
66
- }
67
- return this.bufferManager;
68
- }
69
- free() {
70
- programCache.free(this.globe);
71
- this.bufferManager.free();
72
- }
73
- }
74
- class BufferManager extends BufferOffsetManager {
75
- constructor(globe, gl, buffer, { initialCapacity = 10, bufferType, } = {}) {
76
- super(10, { capacity: initialCapacity, bufferType, });
77
- this.globe = globe;
78
- this.gl = gl;
79
- this.buffer = buffer;
80
- this.bufferType = bufferType;
81
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
82
- gl.bufferData(gl.ARRAY_BUFFER, initialCapacity * ITEM_SIZE * 4, gl[bufferType]);
83
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
84
- }
85
- /**
86
- *
87
- * @param { Array<{key, long, lat, startAngle, tailAngle, radius, rgba[4], rgbaMode }>} rings
88
- * @returns
89
- */
90
- insertBulk(items) {
91
- if (items.length === 0)
92
- return;
93
- this.autoExtendBuffer(items.length);
94
- const { gl, buffer } = this;
95
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
96
- for (let { key, long, lat, startAngle, tailAngle, rgba, radius, rgbaMode } of items) {
97
- const offset = this.getOffset(key) | this.nextOffset();
98
- this.setOffset(key, offset);
99
- const block = new Float32Array([
100
- long, lat, startAngle, tailAngle, ...rgba, radius, rgbaMode
101
- ]);
102
- gl.bufferSubData(gl.ARRAY_BUFFER, offset, block);
103
- // 2 1 1 1 4 1 = 10
104
- }
105
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
106
- this.globe.DrawRender();
107
- }
108
- /**
109
- *
110
- * @param {Array<{key:string, payload:Float32Array}} items
111
- * @param {PART_OFFSET_LOOPUP} part | long, lat, START_ANGLE, ROTATION_ANGLE, RADIUS, rgba, rgba_MODE
112
- * @returns
113
- */
114
- updatePartial(items, part) {
115
- const { gl, buffer } = this;
116
- this._updatePartial(items, part, gl, buffer);
117
- this.globe.DrawRender();
118
- }
119
- delete(keys) {
120
- const { gl, buffer } = this;
121
- this._removefromBuffer(gl, buffer, keys, emptyBlock);
122
- this.globe.DrawRender();
123
- }
124
- free() {
125
- this.gl.deleteBuffer(this.buffer);
126
- this.buffer = null;
127
- }
128
- }