@pirireis/webglobeplugins 0.9.10 → 0.9.11
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/Math/angle-calculation.js +8 -8
- package/Math/arc.js +18 -18
- package/Math/bounds/line-bbox.js +80 -78
- package/Math/constants.js +3 -3
- package/Math/juction/arc-plane.js +23 -23
- package/Math/juction/line-sphere.js +11 -11
- package/Math/juction/plane-plane.js +11 -11
- package/Math/line.js +16 -14
- package/Math/methods.js +72 -67
- package/Math/plane.js +18 -16
- package/Math/quaternion.js +49 -45
- package/Math/utils.js +2 -2
- package/Math/vec3.js +45 -42
- package/algorithms/search-binary.js +4 -4
- package/altitude-locator/draw-subset-obj.js +8 -7
- package/altitude-locator/plugin.js +113 -97
- package/arrowfield/adaptor.js +4 -3
- package/arrowfield/index.js +2 -2
- package/arrowfield/plugin.js +65 -62
- package/bearing-line/index.js +1 -1
- package/bearing-line/plugin.js +225 -200
- package/circle-line-chain/chain-list-map.js +88 -82
- package/circle-line-chain/plugin.js +154 -129
- package/circle-line-chain/util.js +1 -1
- package/compass-rose/compass-rose-padding-flat.js +126 -104
- package/compass-rose/compass-text-writer.js +70 -62
- package/compass-rose/index.js +2 -2
- package/compassrose/compassrose.js +50 -46
- package/compassrose/index.js +1 -1
- package/heatwave/index.js +2 -2
- package/heatwave/isobar/objectarraylabels.js +48 -44
- package/heatwave/isobar/plugin.js +123 -104
- package/heatwave/isobar/quadtreecontours.js +92 -76
- package/heatwave/plugins/heatwaveglobeshell.js +87 -69
- package/index.js +11 -11
- package/package.json +1 -1
- package/partialrings/buffer-manager.js +64 -32
- package/partialrings/index.js +1 -1
- package/partialrings/plugin.js +84 -48
- package/partialrings/program.js +47 -136
- package/pin/pin-object-array.js +86 -83
- package/pin/pin-point-totem.js +22 -21
- package/point-heat-map/adaptors/timetracksplugin-format-to-this.js +10 -10
- package/point-heat-map/plugin-webworker.js +45 -40
- package/point-heat-map/point-to-heat-map-flow.js +42 -40
- package/point-tracks/key-methods.js +1 -1
- package/point-tracks/plugin.js +142 -127
- package/programs/arrowfield/index.js +1 -1
- package/programs/arrowfield/logic.js +62 -170
- package/programs/arrowfield/object.js +35 -33
- package/programs/data2legend/density-to-legend.js +21 -45
- package/programs/data2legend/point-to-density-texture.js +27 -52
- package/programs/float2legendwithratio/index.js +1 -1
- package/programs/float2legendwithratio/logic.js +42 -88
- package/programs/float2legendwithratio/object.js +46 -43
- package/programs/globe-util/is-globe-moved.js +11 -10
- package/programs/globeshell/index.js +1 -1
- package/programs/globeshell/wiggle/index.js +1 -1
- package/programs/globeshell/wiggle/logic.js +98 -191
- package/programs/globeshell/wiggle/object.js +35 -33
- package/programs/helpers/blender/program.js +19 -36
- package/programs/helpers/fadeaway/index.js +1 -1
- package/programs/helpers/fadeaway/logic.js +13 -35
- package/programs/helpers/fadeaway/object.js +10 -9
- package/programs/helpers/index.js +1 -1
- package/programs/index.js +8 -8
- package/programs/line-on-globe/angled-line.js +32 -91
- package/programs/line-on-globe/circle-accurate-3d.js +32 -82
- package/programs/line-on-globe/circle-accurate-flat.js +50 -108
- package/programs/line-on-globe/circle-accurate.js +33 -103
- package/programs/line-on-globe/circle.js +32 -97
- package/programs/line-on-globe/degree-padding-around-circle-3d.js +33 -83
- package/programs/line-on-globe/lines-color-instanced-flat.js +34 -79
- package/programs/line-on-globe/linestrip.js +39 -100
- package/programs/line-on-globe/naive-accurate-flexible.js +48 -118
- package/programs/line-on-globe/to-the-surface.js +29 -58
- package/programs/line-on-globe/util.js +1 -1
- package/programs/picking/pickable-renderer.js +33 -117
- package/programs/point-on-globe/element-globe-surface-glow.js +38 -78
- package/programs/point-on-globe/element-point-glow.js +35 -103
- package/programs/point-on-globe/square-pixel-point.js +27 -76
- package/programs/programcache.js +13 -13
- package/programs/rings/distancering/circleflatprogram.js +21 -63
- package/programs/rings/distancering/circlepaddingfreeangleprogram.js +145 -156
- package/programs/rings/distancering/circlepaddysharedbuffer.js +197 -121
- package/programs/rings/distancering/index.js +4 -4
- package/programs/rings/distancering/paddyflatprogram.js +20 -73
- package/programs/rings/distancering/paddyflatprogram2d.js +22 -75
- package/programs/rings/distancering/paddyflatprogram3d.js +20 -73
- package/programs/rings/partial-ring/piece-of-pie.js +35 -137
- package/programs/totems/camerauniformblock.js +51 -64
- package/programs/totems/canvas-webglobe-info.js +40 -48
- package/programs/totems/gpu-selection-uniform-block.js +40 -44
- package/programs/totems/index.js +1 -1
- package/programs/two-d/pixel-padding-for-compass.js +29 -90
- package/programs/util.js +7 -6
- package/programs/vectorfields/index.js +1 -1
- package/programs/vectorfields/logics/drawrectangleparticles.js +29 -70
- package/programs/vectorfields/logics/index.js +3 -3
- package/programs/vectorfields/logics/pixelbased.js +35 -91
- package/programs/vectorfields/logics/ubo.js +25 -31
- package/programs/vectorfields/pingpongbuffermanager.js +34 -30
- package/rangerings/index.js +4 -4
- package/rangerings/plugin.js +252 -202
- package/rangerings/rangeringangletext.js +120 -108
- package/rangerings/ring-account.js +69 -52
- package/shaders/fragment-toy/firework.js +1 -55
- package/shaders/fragment-toy/singularity.js +1 -55
- package/timetracks/adaptors-line-strip.js +37 -26
- package/timetracks/adaptors.js +61 -47
- package/timetracks/index.js +4 -4
- package/timetracks/plugin-line-strip.js +63 -59
- package/timetracks/plugin.js +69 -65
- package/timetracks/program-line-strip.js +103 -296
- package/timetracks/program.js +113 -419
- package/timetracks/programpoint-line-strip.js +44 -97
- package/timetracks/programpoint.js +44 -90
- package/util/account/bufferoffsetmanager.js +95 -72
- package/util/account/index.js +1 -1
- package/util/account/single-attribute-buffer-management/buffer-manager.js +43 -39
- package/util/account/single-attribute-buffer-management/buffer-orchestrator.js +94 -64
- package/util/account/single-attribute-buffer-management/index.js +3 -3
- package/util/account/single-attribute-buffer-management/object-store.js +30 -28
- package/util/account/util.js +4 -2
- package/util/algorithms/search-binary.js +4 -4
- package/util/check/get.js +5 -5
- package/util/check/typecheck.js +15 -13
- package/util/geometry/index.js +11 -9
- package/util/gl-util/buffer/attribute-loader.js +20 -8
- package/util/gl-util/buffer/index.js +1 -1
- package/util/gl-util/draw-options/methods.js +7 -7
- package/util/gl-util/uniform-block/manager.js +67 -55
- package/util/heatwavedatamanager/datamanager.js +116 -56
- package/util/heatwavedatamanager/index.js +2 -2
- package/util/heatwavedatamanager/pointcoordinatesdatacalculator.js +40 -37
- package/util/heatwavedatamanager/pointcoordsmeta.js +10 -9
- package/util/index.js +6 -6
- package/util/interpolation/timetrack/index.js +1 -1
- package/util/interpolation/timetrack/timetrack-interpolator.js +29 -27
- package/util/interpolation/timetrack/web-worker-str.js +1 -179
- package/util/interpolation/timetrack/web-worker.js +4 -4
- package/util/jshelpers/data-filler.js +7 -7
- package/util/jshelpers/timefilters.js +7 -7
- package/util/picking/fence.js +7 -7
- package/util/picking/picker-displayer.js +52 -46
- package/util/programs/draw-texture-on-canvas.js +21 -39
- package/util/programs/shapesonglobe.js +64 -104
- package/util/programs/supersampletotextures.js +39 -45
- package/util/programs/texturetoglobe.js +48 -98
- package/util/shaderfunctions/geometrytransformations.js +27 -322
- package/util/shaderfunctions/nodata.js +1 -7
- package/util/shaderfunctions/noisefunctions.js +9 -39
- package/util/surface-line-data/arcs-to-cuts.js +23 -20
- package/util/webglobe/rasteroverlay.js +37 -35
- package/util/webglobjectbuilders.js +60 -55
- package/util/webglobjectbuilders1.js +49 -48
- package/waveparticles/adaptor.js +7 -6
- package/waveparticles/index.js +2 -2
- package/waveparticles/plugin.js +84 -79
- package/wind/imagetovectorfieldandmagnitude.js +15 -15
- package/wind/index.js +4 -4
- package/wind/plugin.js +251 -453
- package/wind/vectorfieldimage.js +5 -5
- package/write-text/attached-text-writer.js +48 -46
- package/write-text/context-text.js +58 -51
- package/write-text/context-text3.js +74 -69
|
@@ -34,11 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.programCache = void 0;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
var util_1 = require("../../../util");
|
|
38
|
+
var camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
|
|
39
|
+
var programcache_1 = require("../../programcache");
|
|
40
|
+
var CIRCLE_EDGE_COUNT = 360;
|
|
41
|
+
var vertexShader = "#version 300 es " +
|
|
42
42
|
util_1.shaderfunctions.PI +
|
|
43
43
|
util_1.shaderfunctions.R +
|
|
44
44
|
util_1.shaderfunctions.POLE +
|
|
@@ -48,54 +48,11 @@ const vertexShader = `#version 300 es ` +
|
|
|
48
48
|
util_1.shaderfunctions.longLatRadToCartesian3D +
|
|
49
49
|
util_1.shaderfunctions.circleLimpFromLongLatRadCenterCartesian3D +
|
|
50
50
|
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorCompass +
|
|
51
|
-
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance +
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
uniform float opacity;
|
|
57
|
-
|
|
58
|
-
in vec2 center;
|
|
59
|
-
in float radius;
|
|
60
|
-
in vec4 color;
|
|
61
|
-
in float flag;
|
|
62
|
-
out vec4 v_color;
|
|
63
|
-
out vec2 v_limp;
|
|
64
|
-
|
|
65
|
-
void main() {
|
|
66
|
-
if( flag == 1.0 || radius == 0.0) return; // flag 1.0 is hide
|
|
67
|
-
v_color = vec4(color.rgb, color.a * opacity);
|
|
68
|
-
if ( gl_VertexID == 270 ) v_color.rgb += 0.2;
|
|
69
|
-
float angle = 3.1415926535897932384626433832795 * 2.0 * (float(gl_VertexID) / circle_edge_count);
|
|
70
|
-
if ( is3D ){
|
|
71
|
-
gl_Position = projection * view * vec4(
|
|
72
|
-
circleLimpFromLongLatRadCenterCartesian3D( center, radius, angle) - translate, 1.0);
|
|
73
|
-
v_limp = vec2(0.0, 0.0);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
vec2 limp;
|
|
77
|
-
if ( compass == 1 ){
|
|
78
|
-
limp = circleLimpFromLongLatRadCenterMercatorCompass(center, radius, angle);
|
|
79
|
-
} else {
|
|
80
|
-
limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius, angle);
|
|
81
|
-
}
|
|
82
|
-
v_limp = limp;
|
|
83
|
-
gl_Position = mercatorXYToGLPosition(limp);
|
|
84
|
-
|
|
85
|
-
}`;
|
|
86
|
-
const fragmentShader = `#version 300 es
|
|
87
|
-
precision highp float;` +
|
|
88
|
-
util_1.shaderfunctions.POLE + `
|
|
89
|
-
|
|
90
|
-
in vec4 v_color;
|
|
91
|
-
in vec2 v_limp;
|
|
92
|
-
out vec4 outColor;
|
|
93
|
-
void main() {
|
|
94
|
-
if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }
|
|
95
|
-
outColor = v_color;
|
|
96
|
-
}`;
|
|
97
|
-
class Logic {
|
|
98
|
-
constructor(globe) {
|
|
51
|
+
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + "\n\nuniform int compass;\nuniform float circle_edge_count;\n\nuniform float opacity;\n\nin vec2 center;\nin float radius;\nin vec4 color;\nin float flag;\nout vec4 v_color;\nout vec2 v_limp;\n\nvoid main() {\n if( flag == 1.0 || radius == 0.0) return; // flag 1.0 is hide\n v_color = vec4(color.rgb, color.a * opacity);\n if ( gl_VertexID == 270 ) v_color.rgb += 0.2;\n float angle = 3.1415926535897932384626433832795 * 2.0 * (float(gl_VertexID) / circle_edge_count);\n if ( is3D ){\n gl_Position = projection * view * vec4(\n circleLimpFromLongLatRadCenterCartesian3D( center, radius, angle) - translate, 1.0);\n v_limp = vec2(0.0, 0.0);\n return;\n }\n vec2 limp;\n if ( compass == 1 ){\n limp = circleLimpFromLongLatRadCenterMercatorCompass(center, radius, angle);\n } else {\n limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius, angle);\n } \n v_limp = limp;\n gl_Position = mercatorXYToGLPosition(limp);\n \n}";
|
|
52
|
+
var fragmentShader = "#version 300 es\nprecision highp float;" +
|
|
53
|
+
util_1.shaderfunctions.POLE + "\n\nin vec4 v_color;\nin vec2 v_limp;\nout vec4 outColor;\nvoid main() {\n if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }\n outColor = v_color;\n}";
|
|
54
|
+
var Logic = /** @class */ (function () {
|
|
55
|
+
function Logic(globe) {
|
|
99
56
|
this.globe = globe;
|
|
100
57
|
this.gl = globe.gl;
|
|
101
58
|
this.program = (0, util_1.createProgram)(this.gl, vertexShader, fragmentShader);
|
|
@@ -107,7 +64,7 @@ class Logic {
|
|
|
107
64
|
}
|
|
108
65
|
this.cameraBlockBindingPoint = 0;
|
|
109
66
|
this.cameraBlockTotem = programcache_1.globeProgramCache.getProgram(globe, camerauniformblock_1.default);
|
|
110
|
-
|
|
67
|
+
var cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
|
|
111
68
|
this.gl.uniformBlockBinding(this.program, cameraBlockIndex, this.cameraBlockBindingPoint);
|
|
112
69
|
this._opacityLocation = this.gl.getUniformLocation(this.program, "opacity");
|
|
113
70
|
this._compassLocation = this.gl.getUniformLocation(this.program, "compass");
|
|
@@ -116,7 +73,7 @@ class Logic {
|
|
|
116
73
|
this._compassmode = 1;
|
|
117
74
|
this._opacity = 1.0;
|
|
118
75
|
{
|
|
119
|
-
|
|
76
|
+
var currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
|
|
120
77
|
this.gl.useProgram(this.program);
|
|
121
78
|
this.gl.uniform1i(this._compassLocation, 1);
|
|
122
79
|
this.gl.uniform1f(this._circleEdgeCountLocation, CIRCLE_EDGE_COUNT);
|
|
@@ -124,8 +81,8 @@ class Logic {
|
|
|
124
81
|
this.gl.useProgram(currentProgram);
|
|
125
82
|
}
|
|
126
83
|
}
|
|
127
|
-
draw(attrBufferManager, compass, circleEdgeCount, opacity) {
|
|
128
|
-
|
|
84
|
+
Logic.prototype.draw = function (attrBufferManager, compass, circleEdgeCount, opacity) {
|
|
85
|
+
var _a = this, gl = _a.gl, program = _a.program, cameraBlockTotem = _a.cameraBlockTotem, cameraBlockBindingPoint = _a.cameraBlockBindingPoint;
|
|
129
86
|
gl.useProgram(program);
|
|
130
87
|
cameraBlockTotem.bind(cameraBlockBindingPoint);
|
|
131
88
|
attrBufferManager.bindCircleVAO();
|
|
@@ -144,13 +101,14 @@ class Logic {
|
|
|
144
101
|
gl.drawArraysInstanced(gl.LINE_LOOP, 0, circleEdgeCount, attrBufferManager.length);
|
|
145
102
|
gl.bindVertexArray(null);
|
|
146
103
|
cameraBlockTotem.unbind(cameraBlockBindingPoint);
|
|
147
|
-
}
|
|
148
|
-
free() {
|
|
104
|
+
};
|
|
105
|
+
Logic.prototype.free = function () {
|
|
149
106
|
this.gl.deleteProgram(this.program);
|
|
150
107
|
programcache_1.globeProgramCache.releaseProgram(this.globe, camerauniformblock_1.default);
|
|
151
|
-
}
|
|
152
|
-
|
|
108
|
+
};
|
|
109
|
+
return Logic;
|
|
110
|
+
}());
|
|
153
111
|
exports.programCache = Object.freeze({
|
|
154
|
-
getProgram: (globe)
|
|
155
|
-
releaseProgram: (globe)
|
|
112
|
+
getProgram: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
|
|
113
|
+
releaseProgram: function (globe) { programcache_1.noRegisterGlobeProgramCache.releaseProgram(globe, Logic); }
|
|
156
114
|
});
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
2
17
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
18
|
if (k2 === undefined) k2 = k;
|
|
4
19
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -34,11 +49,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
49
|
})();
|
|
35
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
51
|
exports.BufferManager = exports.PaddingFreeAngleCache = void 0;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
var util_1 = require("../../../util");
|
|
53
|
+
var account_1 = require("../../../util/account");
|
|
54
|
+
var camerauniformblock_1 = __importStar(require("../../totems/camerauniformblock"));
|
|
55
|
+
var programcache_1 = require("../../programcache");
|
|
56
|
+
var vertexShader = "#version 300 es " +
|
|
42
57
|
util_1.shaderfunctions.PI +
|
|
43
58
|
util_1.shaderfunctions.R +
|
|
44
59
|
util_1.shaderfunctions.POLE +
|
|
@@ -48,67 +63,16 @@ const vertexShader = `#version 300 es ` +
|
|
|
48
63
|
util_1.shaderfunctions.longLatRadToCartesian3D +
|
|
49
64
|
util_1.shaderfunctions.circleLimpFromLongLatRadCenterCartesian3D +
|
|
50
65
|
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorCompass +
|
|
51
|
-
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance +
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
in vec4 color;
|
|
57
|
-
in float flag;
|
|
58
|
-
in float pad_angle;
|
|
59
|
-
|
|
60
|
-
uniform int compass;
|
|
61
|
-
|
|
62
|
-
uniform float opacity;
|
|
63
|
-
|
|
64
|
-
out vec2 v_limp;
|
|
65
|
-
out vec4 v_color;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
void main() {
|
|
69
|
-
if( flag == 1.0 || radius == 0.0 ) return; // 1.0 is hide
|
|
70
|
-
v_color = vec4(color.rgb, color.a * opacity);
|
|
71
|
-
|
|
72
|
-
if ( pad_angle == 0.0 ) v_color.rgb -= 0.2;
|
|
73
|
-
gl_PointSize = 2.0;
|
|
74
|
-
|
|
75
|
-
float odd = mod(float(gl_VertexID), 2.0);
|
|
76
|
-
float index = (float(gl_VertexID)- odd ) / 2.0;
|
|
77
|
-
float angle = pad_angle - 1.5707963267948966192313216916398;
|
|
78
|
-
float radius_ = radius - (pad_range * odd);
|
|
79
|
-
|
|
80
|
-
if (is3D){
|
|
81
|
-
gl_Position = projection * view * vec4(
|
|
82
|
-
circleLimpFromLongLatRadCenterCartesian3D( center, radius_, angle) - translate, 1.0);
|
|
83
|
-
v_limp = vec2(0.0, 0.0);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
vec2 limp;
|
|
87
|
-
if ( compass == 1 ){
|
|
88
|
-
limp = circleLimpFromLongLatRadCenterMercatorCompass(center , radius_, angle);
|
|
89
|
-
} else {
|
|
90
|
-
limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius_, angle);
|
|
91
|
-
}
|
|
92
|
-
v_limp = limp;
|
|
93
|
-
gl_Position = mercatorXYToGLPosition(limp);
|
|
94
|
-
}`;
|
|
95
|
-
const fragmentShader = `#version 300 es
|
|
96
|
-
precision highp float; ` +
|
|
97
|
-
util_1.shaderfunctions.POLE + `
|
|
98
|
-
in vec4 v_color;
|
|
99
|
-
in vec2 v_limp;
|
|
100
|
-
out vec4 outColor;
|
|
101
|
-
void main() {
|
|
102
|
-
if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }
|
|
103
|
-
outColor = v_color;
|
|
104
|
-
}`;
|
|
105
|
-
class Logic {
|
|
106
|
-
constructor(globe) {
|
|
66
|
+
util_1.shaderfunctions.circleLimpFromLongLatRadCenterMercatorRealDistance + "\n\nin vec2 center;\nin float radius;\nin float pad_range;\nin vec4 color;\nin float flag;\nin float pad_angle;\n\nuniform int compass;\n\nuniform float opacity;\n\nout vec2 v_limp;\nout vec4 v_color;\n\n\nvoid main() { \n if( flag == 1.0 || radius == 0.0 ) return; // 1.0 is hide \n v_color = vec4(color.rgb, color.a * opacity);\n\n if ( pad_angle == 0.0 ) v_color.rgb -= 0.2;\n gl_PointSize = 2.0;\n\n float odd = mod(float(gl_VertexID), 2.0);\n float index = (float(gl_VertexID)- odd ) / 2.0;\n float angle = pad_angle - 1.5707963267948966192313216916398;\n float radius_ = radius - (pad_range * odd);\n\n if (is3D){ \n gl_Position = projection * view * vec4(\n circleLimpFromLongLatRadCenterCartesian3D( center, radius_, angle) - translate, 1.0);\n v_limp = vec2(0.0, 0.0);\n return;\n }\n vec2 limp;\n if ( compass == 1 ){\n limp = circleLimpFromLongLatRadCenterMercatorCompass(center , radius_, angle);\n } else {\n limp = circleLimpFromLongLatRadCenterMercatorRealDistance(center, radius_, angle);\n }\n v_limp = limp;\n gl_Position = mercatorXYToGLPosition(limp);\n}";
|
|
67
|
+
var fragmentShader = "#version 300 es\nprecision highp float; " +
|
|
68
|
+
util_1.shaderfunctions.POLE + "\nin vec4 v_color;\nin vec2 v_limp;\nout vec4 outColor;\nvoid main() {\n if ( v_limp.x < -POLE || v_limp.x > POLE || v_limp.y < -POLE || v_limp.y > POLE ){ discard; }\n outColor = v_color;\n}";
|
|
69
|
+
var Logic = /** @class */ (function () {
|
|
70
|
+
function Logic(globe) {
|
|
107
71
|
this.globe = globe;
|
|
108
72
|
this.gl = globe.gl;
|
|
109
73
|
this.program = (0, util_1.createProgram)(this.gl, vertexShader, fragmentShader);
|
|
110
74
|
{
|
|
111
|
-
|
|
75
|
+
var gl = this.gl;
|
|
112
76
|
// assign attribute locations
|
|
113
77
|
gl.bindAttribLocation(this.program, 0, "center");
|
|
114
78
|
gl.bindAttribLocation(this.program, 1, "radius");
|
|
@@ -118,14 +82,14 @@ class Logic {
|
|
|
118
82
|
gl.bindAttribLocation(this.program, 5, "pad_angle");
|
|
119
83
|
}
|
|
120
84
|
this.cameraBlockBindingPoint = 0;
|
|
121
|
-
|
|
85
|
+
var cameraBlockIndex = this.gl.getUniformBlockIndex(this.program, "CameraUniformBlock");
|
|
122
86
|
this.gl.uniformBlockBinding(this.program, cameraBlockIndex, this.cameraBlockBindingPoint);
|
|
123
87
|
this.cameraBlockTotem = programcache_1.globeProgramCache.getProgram(globe, camerauniformblock_1.default);
|
|
124
88
|
this._compassLocation = this.gl.getUniformLocation(this.program, "compass");
|
|
125
89
|
this._opacityLocation = this.gl.getUniformLocation(this.program, "opacity");
|
|
126
90
|
this._opacity = 1.0;
|
|
127
91
|
{
|
|
128
|
-
|
|
92
|
+
var currentProgram = this.gl.getParameter(this.gl.CURRENT_PROGRAM);
|
|
129
93
|
this.gl.useProgram(this.program);
|
|
130
94
|
this.gl.uniform1i(this._compassLocation, 1);
|
|
131
95
|
this.gl.uniform1f(this._opacityLocation, 1.0);
|
|
@@ -133,8 +97,8 @@ class Logic {
|
|
|
133
97
|
this.gl.useProgram(currentProgram);
|
|
134
98
|
}
|
|
135
99
|
}
|
|
136
|
-
draw(attrBufferManager, compass, opacity) {
|
|
137
|
-
|
|
100
|
+
Logic.prototype.draw = function (attrBufferManager, compass, opacity) {
|
|
101
|
+
var _a = this, gl = _a.gl, program = _a.program, cameraBlockBindingPoint = _a.cameraBlockBindingPoint, cameraBlockTotem = _a.cameraBlockTotem, _compassLocation = _a._compassLocation;
|
|
138
102
|
gl.useProgram(program);
|
|
139
103
|
attrBufferManager.bindPaddingVAO();
|
|
140
104
|
cameraBlockTotem.bind(cameraBlockBindingPoint);
|
|
@@ -151,29 +115,33 @@ class Logic {
|
|
|
151
115
|
cameraBlockTotem.unbind(cameraBlockBindingPoint);
|
|
152
116
|
gl.enable(gl.DEPTH_TEST);
|
|
153
117
|
gl.bindVertexArray(null);
|
|
154
|
-
}
|
|
155
|
-
createBuffer
|
|
118
|
+
};
|
|
119
|
+
Logic.prototype.createBuffer = function (_a) {
|
|
120
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.bufferType, bufferType = _c === void 0 ? "DYNAMIC_DRAW" : _c, _d = _b.initialRingCapacity, initialRingCapacity = _d === void 0 ? 10 : _d;
|
|
156
121
|
return new BufferManager(this.gl, bufferType, initialRingCapacity);
|
|
157
|
-
}
|
|
158
|
-
|
|
122
|
+
};
|
|
123
|
+
return Logic;
|
|
124
|
+
}());
|
|
159
125
|
exports.PaddingFreeAngleCache = Object.freeze({
|
|
160
|
-
getProgram: (globe)
|
|
161
|
-
releaseProgram: (globe)
|
|
126
|
+
getProgram: function (globe) { return programcache_1.noRegisterGlobeProgramCache.getProgram(globe, Logic); },
|
|
127
|
+
releaseProgram: function (globe) { return programcache_1.globeProgramCache.releaseProgram(globe, Logic); }
|
|
162
128
|
});
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
this
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
129
|
+
var BufferManager = /** @class */ (function (_super) {
|
|
130
|
+
__extends(BufferManager, _super);
|
|
131
|
+
function BufferManager(gl, bufferType, initialRingCapacity) {
|
|
132
|
+
if (initialRingCapacity === void 0) { initialRingCapacity = 10; }
|
|
133
|
+
var _this = _super.call(this, 10, { capacity: initialRingCapacity, bufferType: bufferType }) || this;
|
|
134
|
+
_this.gl = gl;
|
|
135
|
+
_this.bufferType = bufferType;
|
|
136
|
+
_this.buffer = gl.createBuffer();
|
|
137
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, _this.buffer);
|
|
138
|
+
gl.bufferData(gl.ARRAY_BUFFER, _this.capacity * _this.itemSize * 4, gl[bufferType]);
|
|
171
139
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
172
|
-
|
|
173
|
-
|
|
140
|
+
_this._centerMaps = new Map();
|
|
141
|
+
_this.vao = gl.createVertexArray();
|
|
174
142
|
{
|
|
175
|
-
gl.bindVertexArray(
|
|
176
|
-
gl.bindBuffer(gl.ARRAY_BUFFER,
|
|
143
|
+
gl.bindVertexArray(_this.vao);
|
|
144
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, _this.buffer);
|
|
177
145
|
gl.enableVertexAttribArray(0);
|
|
178
146
|
gl.enableVertexAttribArray(1);
|
|
179
147
|
gl.enableVertexAttribArray(2);
|
|
@@ -196,24 +164,26 @@ class BufferManager extends account_1.BufferOffsetManager {
|
|
|
196
164
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
197
165
|
gl.bindVertexArray(null);
|
|
198
166
|
}
|
|
167
|
+
return _this;
|
|
199
168
|
}
|
|
200
|
-
__centerMapMethod(rings, paddingAngles) {
|
|
169
|
+
BufferManager.prototype.__centerMapMethod = function (rings, paddingAngles) {
|
|
201
170
|
return new Map([
|
|
202
171
|
["rings", rings],
|
|
203
172
|
["paddingAngles", paddingAngles]
|
|
204
173
|
]);
|
|
205
|
-
}
|
|
206
|
-
bindPaddingVAO() {
|
|
174
|
+
};
|
|
175
|
+
BufferManager.prototype.bindPaddingVAO = function () {
|
|
207
176
|
this.gl.bindVertexArray(this.vao);
|
|
208
|
-
}
|
|
177
|
+
};
|
|
209
178
|
//TODO: implement this
|
|
210
179
|
// insertBulk is gone. no update feature
|
|
211
180
|
// addBulk is added.
|
|
212
181
|
// deletes old centers given
|
|
213
|
-
insertBulk(data) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
for (
|
|
182
|
+
BufferManager.prototype.insertBulk = function (data) {
|
|
183
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
184
|
+
var deleteCentersList = [];
|
|
185
|
+
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
|
186
|
+
var centerID = data_1[_i].centerID;
|
|
217
187
|
if (this._centerMaps.has(centerID)) {
|
|
218
188
|
deleteCentersList.push(centerID);
|
|
219
189
|
}
|
|
@@ -221,20 +191,23 @@ class BufferManager extends account_1.BufferOffsetManager {
|
|
|
221
191
|
if (deleteCentersList.length > 0) {
|
|
222
192
|
this.removeCenters(deleteCentersList);
|
|
223
193
|
}
|
|
224
|
-
|
|
225
|
-
|
|
194
|
+
var requiredSpace = this.__requiredSpaceForBulk(data);
|
|
195
|
+
var spaceLeft = this.spaceLeft;
|
|
226
196
|
// console.log("space left:", spaceLeft, "required space:", requiredSpace);
|
|
227
197
|
if (requiredSpace > spaceLeft) {
|
|
228
198
|
// console.log("new capacity:", this.capacity + requiredSpace - spaceLeft)
|
|
229
199
|
this.extendBuffer(this.capacity + requiredSpace - spaceLeft);
|
|
230
200
|
}
|
|
231
|
-
|
|
232
|
-
for (
|
|
201
|
+
var items = [];
|
|
202
|
+
for (var _b = 0, data_2 = data; _b < data_2.length; _b++) {
|
|
203
|
+
var _c = data_2[_b], centerID = _c.centerID, x = _c.x, y = _c.y, rgba = _c.rgba, paddingAngles = _c.paddingAngles, _d = _c.hide, hide = _d === void 0 ? 0 : _d, rings = _c.rings;
|
|
233
204
|
this._centerMaps.set(centerID, this.__centerMapMethod(rings, paddingAngles)); // x,y, rgba, hide prograbably not needed
|
|
234
|
-
for (
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
205
|
+
for (var _e = 0, rings_1 = rings; _e < rings_1.length; _e++) {
|
|
206
|
+
var _f = rings_1[_e], ringID = _f.ringID, radius = _f.radius, padding = _f.padding;
|
|
207
|
+
for (var _g = 0, paddingAngles_1 = paddingAngles; _g < paddingAngles_1.length; _g++) {
|
|
208
|
+
var paddingAngle = paddingAngles_1[_g];
|
|
209
|
+
var _offsetMapKey = "".concat(centerID, "_").concat(ringID, "_").concat(paddingAngle);
|
|
210
|
+
var offset = this.getOffset(_offsetMapKey) | this.nextOffset();
|
|
238
211
|
items.push({
|
|
239
212
|
offset: offset,
|
|
240
213
|
payload: new Float32Array([x, y, radius, padding, rgba[0], rgba[1], rgba[2], rgba[3], hide, paddingAngle])
|
|
@@ -244,101 +217,117 @@ class BufferManager extends account_1.BufferOffsetManager {
|
|
|
244
217
|
}
|
|
245
218
|
}
|
|
246
219
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
247
|
-
for (
|
|
220
|
+
for (var _h = 0, items_1 = items; _h < items_1.length; _h++) {
|
|
221
|
+
var _j = items_1[_h], offset = _j.offset, payload = _j.payload;
|
|
248
222
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset, payload);
|
|
249
223
|
}
|
|
250
|
-
}
|
|
251
|
-
updateCentersXY(data) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
for (
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
224
|
+
};
|
|
225
|
+
BufferManager.prototype.updateCentersXY = function (data) {
|
|
226
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
227
|
+
var items = [];
|
|
228
|
+
for (var _i = 0, data_3 = data; _i < data_3.length; _i++) {
|
|
229
|
+
var _b = data_3[_i], centerID = _b.centerID, x = _b.x, y = _b.y;
|
|
230
|
+
var center = this._centerMaps.get(centerID);
|
|
231
|
+
var payload = new Float32Array([x, y]);
|
|
232
|
+
var paddingAngles = center.get("paddingAngles");
|
|
233
|
+
var rings = center.get("rings");
|
|
234
|
+
for (var _c = 0, rings_2 = rings; _c < rings_2.length; _c++) {
|
|
235
|
+
var ringID = rings_2[_c].ringID;
|
|
236
|
+
for (var _d = 0, paddingAngles_2 = paddingAngles; _d < paddingAngles_2.length; _d++) {
|
|
237
|
+
var paddingAngle = paddingAngles_2[_d];
|
|
238
|
+
var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
|
|
239
|
+
items.push({ offset: this.getOffset(offsetKey), payload: payload });
|
|
263
240
|
}
|
|
264
241
|
}
|
|
265
242
|
}
|
|
266
243
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
267
|
-
for (
|
|
244
|
+
for (var _e = 0, items_2 = items; _e < items_2.length; _e++) {
|
|
245
|
+
var _f = items_2[_e], offset = _f.offset, payload = _f.payload;
|
|
268
246
|
gl.bufferSubData(gl.ARRAY_BUFFER, offset, payload);
|
|
269
247
|
}
|
|
270
248
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
271
|
-
}
|
|
249
|
+
};
|
|
272
250
|
//TODO: test
|
|
273
|
-
updateCentersHide(data) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
for (
|
|
251
|
+
BufferManager.prototype.updateCentersHide = function (data) {
|
|
252
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
253
|
+
var items = [];
|
|
254
|
+
for (var _i = 0, data_4 = data; _i < data_4.length; _i++) {
|
|
255
|
+
var _b = data_4[_i], centerID = _b.centerID, _c = _b.hide, hide = _c === void 0 ? null : _c;
|
|
277
256
|
if (hide === null)
|
|
278
257
|
continue;
|
|
279
|
-
|
|
280
|
-
|
|
258
|
+
var block = new Float32Array([hide]);
|
|
259
|
+
var center = this._centerMaps.get(centerID);
|
|
281
260
|
if (!center)
|
|
282
261
|
continue;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
for (
|
|
286
|
-
|
|
287
|
-
|
|
262
|
+
var paddingAngles = center.get("paddingAngles");
|
|
263
|
+
var rings = center.get("rings");
|
|
264
|
+
for (var _d = 0, rings_3 = rings; _d < rings_3.length; _d++) {
|
|
265
|
+
var ringID = rings_3[_d].ringID;
|
|
266
|
+
for (var _e = 0, paddingAngles_3 = paddingAngles; _e < paddingAngles_3.length; _e++) {
|
|
267
|
+
var paddingAngle = paddingAngles_3[_e];
|
|
268
|
+
var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
|
|
288
269
|
items.push({ key: offsetKey, payload: block });
|
|
289
270
|
}
|
|
290
271
|
}
|
|
291
272
|
}
|
|
292
273
|
this._updatePartial(items, 8, gl, buffer);
|
|
293
|
-
}
|
|
294
|
-
updateCentersColor(data) {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
for (
|
|
298
|
-
|
|
274
|
+
};
|
|
275
|
+
BufferManager.prototype.updateCentersColor = function (data) {
|
|
276
|
+
var _a = this, gl = _a.gl, buffer = _a.buffer;
|
|
277
|
+
var items = [];
|
|
278
|
+
for (var _i = 0, data_5 = data; _i < data_5.length; _i++) {
|
|
279
|
+
var _b = data_5[_i], centerID = _b.centerID, rgba = _b.rgba;
|
|
280
|
+
var center = this._centerMaps.get(centerID);
|
|
299
281
|
if (!center)
|
|
300
282
|
continue;
|
|
301
283
|
center.set("rgba", rgba);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
for (
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
284
|
+
var paddingAngles = center.get("paddingAngles");
|
|
285
|
+
var rings = center.get("rings");
|
|
286
|
+
var payload = new Float32Array(rgba);
|
|
287
|
+
for (var _c = 0, rings_4 = rings; _c < rings_4.length; _c++) {
|
|
288
|
+
var ringID = rings_4[_c].ringID;
|
|
289
|
+
for (var _d = 0, paddingAngles_4 = paddingAngles; _d < paddingAngles_4.length; _d++) {
|
|
290
|
+
var paddingAngle = paddingAngles_4[_d];
|
|
291
|
+
var offsetKey = offsetMapKey(centerID, ringID, paddingAngle);
|
|
292
|
+
items.push({ key: offsetKey, payload: payload });
|
|
309
293
|
}
|
|
310
294
|
}
|
|
311
295
|
}
|
|
312
296
|
this._updatePartial(items, 4, gl, buffer);
|
|
313
|
-
}
|
|
314
|
-
__requiredSpaceForBulk(data) {
|
|
315
|
-
|
|
316
|
-
for (
|
|
297
|
+
};
|
|
298
|
+
BufferManager.prototype.__requiredSpaceForBulk = function (data) {
|
|
299
|
+
var space = 0;
|
|
300
|
+
for (var _i = 0, data_6 = data; _i < data_6.length; _i++) {
|
|
301
|
+
var _a = data_6[_i], paddingAngles = _a.paddingAngles, rings = _a.rings;
|
|
317
302
|
space += paddingAngles.length * rings.length;
|
|
318
303
|
}
|
|
319
304
|
return space;
|
|
320
|
-
}
|
|
305
|
+
};
|
|
321
306
|
// TODO: TEST IT WITH INSERT
|
|
322
|
-
removeCenters(centerIDs) {
|
|
323
|
-
|
|
324
|
-
for (
|
|
325
|
-
|
|
307
|
+
BufferManager.prototype.removeCenters = function (centerIDs) {
|
|
308
|
+
var keys = [];
|
|
309
|
+
for (var _i = 0, centerIDs_1 = centerIDs; _i < centerIDs_1.length; _i++) {
|
|
310
|
+
var centerID = centerIDs_1[_i];
|
|
311
|
+
var center = this._centerMaps.get(centerID);
|
|
326
312
|
if (!center)
|
|
327
313
|
continue;
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
for (
|
|
331
|
-
|
|
314
|
+
var rings = center.get("rings");
|
|
315
|
+
var paddingAngles = center.get("paddingAngles");
|
|
316
|
+
for (var _a = 0, rings_5 = rings; _a < rings_5.length; _a++) {
|
|
317
|
+
var ringID = rings_5[_a].ringID;
|
|
318
|
+
for (var _b = 0, paddingAngles_5 = paddingAngles; _b < paddingAngles_5.length; _b++) {
|
|
319
|
+
var paddingAngle = paddingAngles_5[_b];
|
|
332
320
|
keys.push(offsetMapKey(centerID, ringID, paddingAngle));
|
|
333
321
|
}
|
|
334
322
|
}
|
|
335
323
|
this._centerMaps.delete(centerID);
|
|
336
324
|
}
|
|
337
325
|
this._removeFromBuffer(keys);
|
|
338
|
-
}
|
|
339
|
-
|
|
326
|
+
};
|
|
327
|
+
return BufferManager;
|
|
328
|
+
}(account_1.BufferOffsetManager));
|
|
340
329
|
exports.BufferManager = BufferManager;
|
|
341
|
-
|
|
330
|
+
var offsetMapKey = function (centerID, ringID, paddingAngle) { return "".concat(centerID, "_").concat(ringID, "_").concat(paddingAngle); };
|
|
342
331
|
/**
|
|
343
332
|
* {center has x,y, color, paddingAngles, rings} key: centerID
|
|
344
333
|
* {ring has ranges, paddings} key: ringKey
|