@openglobus/og 0.13.7 → 0.13.10

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 (106) hide show
  1. package/README.md +1 -1
  2. package/css/og.css +388 -129
  3. package/dist/@openglobus/og.css +1 -1
  4. package/dist/@openglobus/og.esm.js +2 -2
  5. package/dist/@openglobus/og.esm.js.map +1 -1
  6. package/dist/@openglobus/og.umd.js +2 -2
  7. package/dist/@openglobus/og.umd.js.map +1 -1
  8. package/package.json +20 -19
  9. package/src/og/Globe.js +15 -16
  10. package/src/og/Object3d.js +417 -0
  11. package/src/og/arial.js +1705 -1703
  12. package/src/og/camera/Camera.js +640 -640
  13. package/src/og/control/EarthCoordinates.js +1 -1
  14. package/src/og/control/GeoImageDragControl.js +102 -75
  15. package/src/og/control/LayerAnimation.js +383 -0
  16. package/src/og/control/LayerSwitcher.js +506 -159
  17. package/src/og/control/Lighting.js +27 -27
  18. package/src/og/control/MouseNavigation.js +460 -460
  19. package/src/og/control/RulerSwitcher.js +69 -0
  20. package/src/og/control/Sun.js +170 -170
  21. package/src/og/control/UIhelpers.js +146 -0
  22. package/src/og/control/ZoomControl.js +0 -2
  23. package/src/og/control/index.js +5 -1
  24. package/src/og/control/ruler/Ruler.js +43 -0
  25. package/src/og/control/ruler/RulerScene.js +374 -0
  26. package/src/og/control/visibleExtent/Segment.js +3 -5
  27. package/src/og/ellipsoid/Ellipsoid.js +19 -0
  28. package/src/og/ellipsoid/wgs84.js +1 -1
  29. package/src/og/entity/Entity.js +1 -1
  30. package/src/og/entity/GeoObject.js +1 -1
  31. package/src/og/entity/LabelHandler.js +6 -2
  32. package/src/og/entity/LabelWorker.js +38 -53
  33. package/src/og/layer/BaseGeoImage.js +347 -312
  34. package/src/og/layer/CanvasTiles.js +312 -290
  35. package/src/og/layer/GeoImage.js +222 -214
  36. package/src/og/layer/GeoVideo.js +291 -291
  37. package/src/og/layer/Layer.js +94 -70
  38. package/src/og/layer/Material.js +109 -109
  39. package/src/og/layer/Vector.js +81 -14
  40. package/src/og/layer/XYZ.js +23 -11
  41. package/src/og/light/LightSource.js +364 -363
  42. package/src/og/math/Vec3.js +1 -1
  43. package/src/og/math.js +6 -6
  44. package/src/og/quadTree/Node.js +8 -6
  45. package/src/og/renderer/Renderer.js +2 -3
  46. package/src/og/res/images.js +0 -2
  47. package/src/og/scene/Planet.js +106 -44
  48. package/src/og/segment/Segment.js +34 -64
  49. package/src/og/segment/Slice.js +1 -1
  50. package/src/og/shaders/drawnode.js +1 -1
  51. package/src/og/shaders/label.js +30 -42
  52. package/src/og/terrain/GlobusTerrain.js +31 -20
  53. package/src/og/terrain/MapboxTerrain.js +1 -1
  54. package/src/og/utils/BaseWorker.js +46 -0
  55. package/src/og/utils/FontAtlas.js +1 -2
  56. package/src/og/utils/GeoImageCreator.js +164 -161
  57. package/src/og/utils/Loader.js +187 -153
  58. package/src/og/utils/NormalMapCreator.js +403 -412
  59. package/src/og/utils/PlainSegmentWorker.js +29 -55
  60. package/src/og/utils/TerrainWorker.js +572 -589
  61. package/src/og/utils/VectorTileCreator.js +1 -1
  62. package/src/og/utils/functionComposition.js +13 -0
  63. package/src/og/webgl/Handler.js +42 -41
  64. package/src/og/webgl/ProgramController.js +143 -143
  65. package/types/Object3d.d.ts +22 -0
  66. package/types/arial.d.ts +1 -0
  67. package/types/camera/PlanetCamera.d.ts +4 -0
  68. package/types/control/GeoImageDragControl.d.ts +2 -0
  69. package/types/control/LayerAnimation.d.ts +73 -0
  70. package/types/control/LayerSwitcher.d.ts +55 -11
  71. package/types/control/MouseNavigation.d.ts +1 -0
  72. package/types/control/MouseWheelZoomControl.d.ts +1 -0
  73. package/types/control/Sun.d.ts +2 -1
  74. package/types/control/TouchNavigation.d.ts +1 -0
  75. package/types/control/UIhelpers.d.ts +13 -0
  76. package/types/control/index.d.ts +3 -1
  77. package/types/control/ruler/Ruler.d.ts +13 -0
  78. package/types/control/ruler/RulerScene.d.ts +48 -0
  79. package/types/ellipsoid/Ellipsoid.d.ts +8 -0
  80. package/types/entity/LabelHandler.d.ts +2 -0
  81. package/types/entity/LabelWorker.d.ts +5 -7
  82. package/types/layer/BaseGeoImage.d.ts +9 -1
  83. package/types/layer/CanvasTiles.d.ts +5 -1
  84. package/types/layer/GeoImage.d.ts +1 -0
  85. package/types/layer/GeoTexture2d.d.ts +1 -0
  86. package/types/layer/Layer.d.ts +28 -32
  87. package/types/layer/Vector.d.ts +9 -0
  88. package/types/layer/WMS.d.ts +1 -0
  89. package/types/layer/XYZ.d.ts +8 -5
  90. package/types/math.d.ts +2 -2
  91. package/types/quadTree/EntityCollectionNode.d.ts +7 -0
  92. package/types/quadTree/Node.d.ts +1 -2
  93. package/types/renderer/Renderer.d.ts +1 -1
  94. package/types/renderer/RendererEvents.d.ts +16 -0
  95. package/types/res/images.d.ts +0 -1
  96. package/types/scene/Planet.d.ts +21 -6
  97. package/types/segment/SegmentLonLat.d.ts +2 -0
  98. package/types/terrain/BilTerrain.d.ts +6 -0
  99. package/types/terrain/GlobusTerrain.d.ts +7 -0
  100. package/types/terrain/MapboxTerrain.d.ts +8 -0
  101. package/types/utils/BaseWorker.d.ts +14 -0
  102. package/types/utils/Loader.d.ts +4 -1
  103. package/types/utils/PlainSegmentWorker.d.ts +4 -6
  104. package/types/utils/TerrainWorker.d.ts +4 -6
  105. package/types/utils/functionComposition.d.ts +5 -0
  106. package/types/webgl/Handler.d.ts +4 -1
@@ -1,154 +1,188 @@
1
- 'use strict';
2
-
3
- import { Events } from '../Events.js';
4
-
5
- if (window && !('createImageBitmap' in window)) {
6
- window.createImageBitmap = function (blob) {
7
- return new Promise((resolve, reject) => {
8
- let img = document.createElement('img');
9
- img.addEventListener('load', function () {
10
- resolve(this);
11
- });
12
- img.src = URL.createObjectURL(blob);
13
- });
14
- };
15
- }
16
-
17
- export class Loader {
18
-
19
- constructor(maxRequests = 24) {
20
-
21
- this.MAX_REQUESTS = maxRequests;
22
-
23
- this.events = new Events(["loadend"]);
24
-
25
- this._loading = 0;
26
-
27
- this._queue = [];//new QueueArray();
28
-
29
- this._senderRequestCounter = [];
30
-
31
- this._promises = {
32
- 'json': r => r.json(),
33
- 'blob': r => r.blob(),
34
- 'arrayBuffer': r => r.arrayBuffer(),
35
- 'imageBitmap': r => r.blob().then(createImageBitmap),
36
- 'text': r => r.text()
37
- };
38
- }
39
-
40
- load(params, callback) {
41
- if (params.sender) {
42
- if (!this._senderRequestCounter[params.sender._id]) {
43
- this._senderRequestCounter[params.sender._id] = {
44
- sender: params.sender,
45
- counter: 0,
46
- __requestCounterFrame__: null
47
- };
48
- }
49
- this._senderRequestCounter[params.sender._id].counter++;
50
- }
51
- this._queue.push({ 'params': params, 'callback': callback });
52
- this._exec();
53
- }
54
-
55
- fetch(params) {
56
- return fetch(
57
- params.src,
58
- params.options || {}
59
- )
60
- .then(response => {
61
- if (!response.ok) {
62
- throw Error(`Unable to load '${params.src}'`);
63
- }
64
- return this._promises[params.type || "blob"](response);
65
- })
66
-
67
- .then(data => {
68
- return { 'status': "ready", 'data': data };
69
-
70
- })
71
-
72
- .catch(err => {
73
- return { 'status': "error", 'msg': err.toString() };
74
- });
75
- }
76
-
77
- _checkLoadend(request, sender) {
78
- if (request.counter === 0 && sender._planet._terrainCompletedActivated) {
79
- sender.events.dispatch(sender.events.loadend);
80
- request.__requestCounterFrame__ = null;
81
- } else {
82
- request.__requestCounterFrame__ = requestAnimationFrame(() => {
83
- this._checkLoadend(request, sender);
84
- });
85
- }
86
- }
87
-
88
- _handleResponse(q, response) {
89
- q.callback(response);
90
- let sender = q.params.sender;
91
- if (sender && sender.events.loadend.handlers.length) {
92
- let request = this._senderRequestCounter[sender._id];
93
- if (request && request.counter > 0) {
94
- request.counter--;
95
- cancelAnimationFrame(request.__requestCounterFrame__);
96
- request.__requestCounterFrame__ = requestAnimationFrame(() => {
97
- this._checkLoadend(request, sender);
98
- });
99
- }
100
- }
101
- this._exec();
102
- }
103
-
104
- _exec() {
105
-
106
- if (this._queue.length > 0 && this._loading < this.MAX_REQUESTS) {
107
-
108
- let q = this._queue.pop(),
109
- p = q.params;
110
-
111
- if (!p.filter || p.filter(p)) {
112
-
113
- this._loading++;
114
-
115
- return fetch(p.src, p.options || {})
116
- .then(response => {
117
- if (!response.ok) {
118
- throw Error(`Unable to load '${p.src}'`);
119
- }
120
- return this._promises[p.type || "blob"](response);
121
- })
122
- .then(data => {
123
- this._loading--;
124
- this._handleResponse(q, { status: "ready", data: data });
125
- })
126
- .catch(err => {
127
- this._loading--;
128
- this._handleResponse(q, { status: "error", msg: err.toString() });
129
- });
130
-
131
- } else {
132
- this._handleResponse(q, { status: "abort" });
133
- }
134
- } else if (this._loading === 0) {
135
- this.events.dispatch(this.events.loadend);
136
- }
137
- }
138
-
139
- abort() {
140
- for (let i = 0, len = this._queue.length; i < len; i++) {
141
- let qi = this._queue[i];
142
- let sender = qi.params.sender;
143
- if (sender && this._senderRequestCounter[sender._id]) {
144
- this._senderRequestCounter[sender._id].counter = 0;
145
- cancelAnimationFrame(this._senderRequestCounter[sender._id].__requestCounterFrame__);
146
- this._senderRequestCounter[sender._id].__requestCounterFrame__ = null;
147
- }
148
- qi.callback({ 'status': "abort" });
149
- this._queue[i] = null;
150
- }
151
- this._queue = [];
152
- this._loading === 0;
153
- }
1
+ 'use strict';
2
+
3
+ import { Events } from '../Events.js';
4
+
5
+ // if (window && !('createImageBitmap' in window)) {
6
+ // window.createImageBitmap = function (blob) {
7
+ // return new Promise((resolve, reject) => {
8
+ // let img = document.createElement('img');
9
+ // img.addEventListener('load', function () {
10
+ // resolve(this);
11
+ // });
12
+ // img.src = URL.createObjectURL(blob);
13
+ // });
14
+ // };
15
+ // }
16
+
17
+ export class Loader {
18
+
19
+ constructor(maxRequests = 24) {
20
+
21
+ this.MAX_REQUESTS = maxRequests;
22
+
23
+ this.events = new Events(["loadend", "layerloadend"]);
24
+
25
+ this._loading = 0;
26
+
27
+ this._queue = [];//new QueueArray();
28
+
29
+ this._senderRequestCounter = [];
30
+
31
+ this._promises = {
32
+ 'json': r => r.json(),
33
+ 'blob': r => r.blob(),
34
+ 'arrayBuffer': r => r.arrayBuffer(),
35
+ 'imageBitmap': r => r.blob().then(
36
+ (r) => createImageBitmap(r, {
37
+ premultiplyAlpha: "premultiply"
38
+ })),
39
+ 'text': r => r.text()
40
+ };
41
+ }
42
+
43
+ load(params, callback) {
44
+ if (params.sender) {
45
+ if (!this._senderRequestCounter[params.sender._id]) {
46
+ this._senderRequestCounter[params.sender._id] = {
47
+ sender: params.sender, counter: 0, __requestCounterFrame__: null
48
+ };
49
+ }
50
+ this._senderRequestCounter[params.sender._id].counter++;
51
+ }
52
+ this._queue.push({ 'params': params, 'callback': callback });
53
+ this._exec();
54
+ }
55
+
56
+ fetch(params) {
57
+ return fetch(params.src, params.options || {})
58
+ .then(response => {
59
+ if (!response.ok) {
60
+ throw Error(`Unable to load '${params.src}'`);
61
+ }
62
+ return this._promises[params.type || "blob"](response);
63
+ })
64
+
65
+ .then(data => {
66
+ return { 'status': "ready", 'data': data };
67
+
68
+ })
69
+
70
+ .catch(err => {
71
+ return { 'status': "error", 'msg': err.toString() };
72
+ });
73
+ }
74
+
75
+ getRequestCounter(sender) {
76
+ if (sender) {
77
+ let r = this._senderRequestCounter[sender._id];
78
+ if (r) {
79
+ return r.counter;
80
+ }
81
+ }
82
+ return 0;
83
+ }
84
+
85
+ isIdle(sender) {
86
+ return sender.isIdle;
87
+ }
88
+
89
+ _checkLoadend(request, sender) {
90
+ if (request.counter === 0 && (sender._planet._terrainCompletedActivated || !sender._planet)) {
91
+ sender.events.dispatch(sender.events.loadend, sender);
92
+ this.events.dispatch(this.events.layerloadend, sender);
93
+ request.__requestCounterFrame__ = null;
94
+ } else {
95
+ request.__requestCounterFrame__ = requestAnimationFrame(() => {
96
+ this._checkLoadend(request, sender);
97
+ });
98
+ }
99
+ }
100
+
101
+ _handleResponse(q, response) {
102
+ q.callback(response);
103
+ let sender = q.params.sender;
104
+ if (sender && (sender.events.loadend.handlers.length || this.events.layerloadend.handlers.length)) {
105
+ let request = this._senderRequestCounter[sender._id];
106
+ if (request && request.counter > 0) {
107
+ request.counter--;
108
+ cancelAnimationFrame(request.__requestCounterFrame__);
109
+ request.__requestCounterFrame__ = requestAnimationFrame(() => {
110
+ this._checkLoadend(request, sender);
111
+ });
112
+ }
113
+ }
114
+ this._exec();
115
+ }
116
+
117
+ _exec() {
118
+
119
+ if (this._queue.length > 0 && this._loading < this.MAX_REQUESTS) {
120
+
121
+ let q = this._queue.pop();
122
+
123
+ if (!q) return;
124
+
125
+ let p = q.params;
126
+
127
+ if (!p.filter || p.filter(p)) {
128
+
129
+ this._loading++;
130
+
131
+ return fetch(p.src, p.options || {})
132
+ .then(response => {
133
+ if (!response.ok) {
134
+ throw Error(`Unable to load '${p.src}'`);
135
+ }
136
+ return this._promises[p.type || "blob"](response);
137
+ })
138
+ .then(data => {
139
+ this._loading--;
140
+ this._handleResponse(q, { status: "ready", data: data });
141
+ })
142
+ .catch(err => {
143
+ this._loading--;
144
+ this._handleResponse(q, { status: "error", msg: err.toString() });
145
+ });
146
+
147
+ } else {
148
+ this._handleResponse(q, { status: "abort" });
149
+ }
150
+ } else if (this._loading === 0) {
151
+ this.events.dispatch(this.events.loadend);
152
+ }
153
+ }
154
+
155
+ abort(sender) {
156
+
157
+ if (this._senderRequestCounter[sender._id]) {
158
+ this._senderRequestCounter[sender._id].counter = 0;
159
+ cancelAnimationFrame(this._senderRequestCounter[sender._id].__requestCounterFrame__);
160
+ this._senderRequestCounter[sender._id].__requestCounterFrame__ = null;
161
+ }
162
+
163
+ for (let i = 0, len = this._queue.length; i < len; i++) {
164
+ let qi = this._queue[i];
165
+ if (qi && sender.isEqual(qi.params.sender)) {
166
+ qi.callback({ 'status': "abort" });
167
+ this._queue[i] = null;
168
+ }
169
+ }
170
+ }
171
+
172
+ abortAll() {
173
+ for (let i = 0, len = this._queue.length; i < len; i++) {
174
+ let qi = this._queue[i];
175
+ if (qi) {
176
+ let sender = qi.params.sender;
177
+ if (sender && this._senderRequestCounter[sender._id]) {
178
+ this._senderRequestCounter[sender._id].counter = 0;
179
+ cancelAnimationFrame(this._senderRequestCounter[sender._id].__requestCounterFrame__);
180
+ this._senderRequestCounter[sender._id].__requestCounterFrame__ = null;
181
+ }
182
+ qi.callback({ 'status': "abort" });
183
+ this._queue[i] = null;
184
+ }
185
+ }
186
+ this._queue = [];
187
+ }
154
188
  }