@pirireis/webglobeplugins 0.0.6 → 0.0.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pirireis/webglobeplugins",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "main": "index.js",
5
5
  "author": "Toprak Nihat Deniz Ozturk",
6
6
  "license": "MIT"
@@ -39,7 +39,7 @@ void main() {
39
39
  float angle = pad_angle - 1.5707963267948966192313216916398;
40
40
  float radius_ = radius - (pad_range * odd);
41
41
 
42
- if ( is3D){
42
+ if (is3D){
43
43
  gl_Position = projection * view * vec4(
44
44
  circleLimpFromLongLatRadCenterCartesian3D( center, radius_, angle) - translate, 1.0);
45
45
  v_limp = vec2(0.0, 0.0);
@@ -178,13 +178,9 @@ export class BufferManager extends BufferOffsetManager {
178
178
  }
179
179
 
180
180
 
181
- __centerMapMethod(x, y, rgba, rings, hide, paddingAngles) {
181
+ __centerMapMethod(rings, paddingAngles) {
182
182
  return new Map([
183
- ["x", x],
184
- ["y", y],
185
- ["rgba", rgba],
186
183
  ["rings", rings],
187
- ["hide", hide],
188
184
  ["paddingAngles", paddingAngles]
189
185
  ])
190
186
  }
@@ -212,10 +208,7 @@ export class BufferManager extends BufferOffsetManager {
212
208
  if (deleteCentersList.length > 0) {
213
209
  this.removeCenters(deleteCentersList);
214
210
  }
215
-
216
-
217
211
  const requiredSpace = this.__requiredSpaceForBulk(data);
218
-
219
212
  const spaceLeft = this.spaceLeft;
220
213
  console.log("space left:", spaceLeft, "required space:", requiredSpace);
221
214
  if (requiredSpace > spaceLeft) {
@@ -224,26 +217,20 @@ export class BufferManager extends BufferOffsetManager {
224
217
  }
225
218
 
226
219
  const items = [];
227
-
228
- for (const { centerID, x, y, rgba, paddingAngles, hide = false, rings } of data) {
229
-
230
- this._centerMaps.set(centerID, this.__centerMapMethod(x, y, rgba, rings, hide, paddingAngles)); // x,y, rgba, hide prograbably not needed
231
-
232
- const hideFlag = hide ? 1 : 0;
220
+ for (const { centerID, x, y, rgba, paddingAngles, hide = 0, rings } of data) {
221
+ this._centerMaps.set(centerID, this.__centerMapMethod(rings, paddingAngles)); // x,y, rgba, hide prograbably not needed
233
222
  for (const { ringID, radius, padding } of rings) {
234
223
  for (const paddingAngle of paddingAngles) {
235
224
  const _offsetMapKey = `${centerID}_${ringID}_${paddingAngle}`;
236
225
  const offset = this.getOffset(_offsetMapKey) | this.nextOffset();
237
226
  items.push({
238
227
  offset: offset,
239
- payload: new Float32Array([x, y, radius, padding, rgba[0], rgba[1], rgba[2], rgba[3], hideFlag, paddingAngle])
228
+ payload: new Float32Array([x, y, radius, padding, rgba[0], rgba[1], rgba[2], rgba[3], hide, paddingAngle])
240
229
  })
241
230
  this.offSetMap.set(_offsetMapKey, offset);
242
231
  }
243
232
  }
244
233
  }
245
- const partOffset = 0;
246
-
247
234
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
248
235
  for (let { offset, payload } of items) {
249
236
  gl.bufferSubData(gl.ARRAY_BUFFER, offset, payload);
@@ -257,8 +244,6 @@ export class BufferManager extends BufferOffsetManager {
257
244
 
258
245
  for (const { centerID, x, y } of data) {
259
246
  const center = this._centerMaps.get(centerID);
260
- center.set("x", x);
261
- center.set("y", y);
262
247
  const payload = new Float32Array([x, y]);
263
248
  const paddingAngles = center.get("paddingAngles");
264
249
  const rings = center.get("rings");
@@ -238,31 +238,6 @@ export default class {
238
238
  this.globe.DrawRender();
239
239
  }
240
240
 
241
- /**
242
- *
243
- * @typedef centerData
244
- * @property {String} centerID
245
- * @property {Array<Number>} rgba - [r,g,b,a] - default undefined
246
- * @property {Number} padding - default undefined
247
- * @property {Boolean} hide - default undefined
248
- * @param {Array<centerData>} centerDatas
249
- * @returns
250
- */
251
- updateCenters(centerDatas) {
252
- const { gl, buffer } = this;
253
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
254
- for (let { centerID, padding, rgba, hide } of centerDatas) {
255
- const rings = this._centerMap.get(centerID).get("rings");
256
- for (let i = 0; i < rings.length; i++) {
257
- const offset = this._ringOffsets.get(rings[i]);
258
- if (padding !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 12, new Float32Array([padding]));
259
- if (rgba !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 16, new Float32Array(rgba));
260
- if (hide !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 32, new Float32Array([hide ? 1 : 0]));
261
- }
262
- }
263
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
264
- this.globe.DrawRender();
265
- }
266
241
 
267
242
  insertBulk(rangeRingDatas) {
268
243
  const { gl, buffer } = this;
@@ -287,60 +262,21 @@ export default class {
287
262
  this._implicitExtendBufferInNeed(incomingRingSize);
288
263
  }
289
264
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
290
- for (let { centerID, x, y, rings } of rangeRingDatas) {
291
- // if (!this._centerMap.has(centerID)) {
265
+ for (const { centerID, x, y, rings, hide = 0 } of rangeRingDatas) {
292
266
  this.registerCenter(centerID, { x, y })
293
- // } else {
294
- // const rings = this._centerMap.get(centerID).get("rings");
295
- // const xy = new Float32Array([x, y]);
296
- // const emptyBlock =
297
- // for (let i = 0; i < rings.length; i++) {
298
- // const offset = this._ringOffsets.get(rings[i]);
299
- // gl.bufferSubData(gl.ARRAY_BUFFER, offset, );
300
- // }
301
- // }
302
- for (let { ringID, radius, padding, rgba, hide = false } of rings) {
267
+ for (const { ringID, radius, padding, rgba } of rings) {
303
268
  const key = this._ringKey(centerID, ringID);
304
- const bufferData = new Float32Array([x, y, radius, padding, ...rgba, hide ? 1 : 0]);
305
- if (!this._ringOffsets.has(key)) {
306
- const offset = this._nextBufferOffset();
307
- gl.bufferSubData(gl.ARRAY_BUFFER, offset, bufferData);
308
-
309
- this._ringOffsets.set(key, offset);
310
- this._centerMap.get(centerID).get("rings").push(key);
311
- } else {
312
- const offset = this._ringOffsets.get(key);
313
- gl.bufferSubData(gl.ARRAY_BUFFER, offset, bufferData);
314
- }
269
+ const bufferData = new Float32Array([x, y, radius, padding, ...rgba, hide]);
270
+ const offset = this._nextBufferOffset();
271
+ gl.bufferSubData(gl.ARRAY_BUFFER, offset, bufferData);
272
+ this._ringOffsets.set(key, offset);
273
+ this._centerMap.get(centerID).get("rings").push(key);
315
274
  }
316
275
  }
317
276
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
318
277
  this.globe.DrawRender();
319
278
  }
320
279
 
321
- updateRing(centerID, ringID, { radius, padding, rgba, hide } = {}) {
322
- if (!this._centerMap.has(centerID)) {
323
- console.warn("Center is not registered yet");
324
- return;
325
- }
326
- const key = this._ringKey(centerID, ringID);
327
- if (!this._ringOffsets.has(key)) {
328
- console.warn("Ring is not registered yet");
329
- return;
330
- }
331
- if (!this.checkCapacity()) {
332
- this._implicitExtendBufferInNeed(1);
333
- }
334
- const { gl, buffer } = this;
335
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
336
- const offset = this._ringOffsets.get(key);
337
- if (radius !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 8, new Float32Array([radius]));
338
- if (padding !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 12, new Float32Array([padding]));
339
- if (rgba !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 16, new Float32Array(rgba));
340
- if (hide !== undefined) gl.bufferSubData(gl.ARRAY_BUFFER, offset + 32, new Float32Array([hide ? 1 : 0]));
341
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
342
- this.globe.DrawRender();
343
- }
344
280
 
345
281
 
346
282
  /**
@@ -152,7 +152,6 @@ const ringItemsToCircleBufferInsertDataAdaptor = (ringItems) => {
152
152
  radius,
153
153
  padding: padding / 7,
154
154
  rgba,
155
- hide
156
155
  });
157
156
  }
158
157
 
@@ -160,7 +159,8 @@ const ringItemsToCircleBufferInsertDataAdaptor = (ringItems) => {
160
159
  centerID,
161
160
  x,
162
161
  y,
163
- rings: resultRings
162
+ rings: resultRings,
163
+ hide
164
164
  });
165
165
  }
166
166
  return result;
@@ -99,11 +99,11 @@ export const circleLimpFromLongLatRadCenterCartesian3D = R + `
99
99
  vec3 circleLimpFromLongLatRadCenterCartesian3D( vec2 center, float radius, float angle) {
100
100
  vec3 geoW = longLatRadToCartesian3D(center);
101
101
  vec3 normal = normalize(geoW);
102
- vec3 tangent1 = cross(normal, vec3(0.0, 0.0, 1.0));
103
- if ( length(tangent1) < 0.1 ){ tangent1 = cross(normal, vec3(0.0, 1.0, 0.0)); }
102
+ vec3 tangent1 = cross(normal, vec3(0.0, 0.0, -1.0));
103
+ if ( length(tangent1) < 0.1 ){ tangent1 = cross(normal, vec3(0.0, -1.0, 0.0)); }
104
104
  tangent1 = normalize(tangent1);
105
105
  // rotate tangent with given angle
106
- tangent1 = cos(angle) * tangent1 + sin(angle) * cross(normal, tangent1);
106
+ tangent1 = cos(angle) * tangent1 - sin(angle) * cross(normal, tangent1);
107
107
  return (geoW * cos(radius/R))+ tangent1 * radius / 1000.0;
108
108
  }
109
109
  `;
@@ -113,12 +113,12 @@ export const circleLimpFromLongLatRadCenterMercatorRealDistance = `
113
113
  vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radius, float angle){
114
114
 
115
115
  float radius_radian = radius / R;
116
- float lat = center.y + radius_radian * sin(angle);
116
+ float lat = center.y - radius_radian * sin(angle);
117
117
 
118
118
  float scale = 1.0/abs( cos( lat ) );
119
119
  vec2 center_ = longLatRadToMercator(center);
120
- float x = center_.x + scale * radius * cos(angle);
121
- float y = center_.y + scale * radius * sin(angle);
120
+ float x = center_.x + scale * radius * cos(angle);
121
+ float y = center_.y - scale * radius * sin(angle);
122
122
  return vec2(x, y);
123
123
  }
124
124
  `;
@@ -127,7 +127,7 @@ vec2 circleLimpFromLongLatRadCenterMercatorRealDistance(vec2 center, float radiu
127
127
  export const circleLimpFromLongLatRadCenterMercatorCompass = `
128
128
  vec2 circleLimpFromLongLatRadCenterMercatorCompass(vec2 center, float radius, float angle){
129
129
  vec2 center_ = longLatRadToMercator(center);
130
- float y = sin(angle) * radius + center_.y;
130
+ float y = -sin(angle) * radius + center_.y;
131
131
  float x = cos(angle) * radius + center_.x;
132
132
  return vec2(x, y);
133
133
  }`;