@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
|
@@ -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 (
|
|
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(
|
|
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
|
-
|
|
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],
|
|
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 (
|
|
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
|
-
|
|
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
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
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
|
/**
|
package/rangerings/rangerings.js
CHANGED
|
@@ -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 =
|
|
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
|
|
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 +
|
|
121
|
-
float y = center_.y
|
|
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
|
}`;
|