@openglobus/og 0.20.2 → 0.20.4

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 (57) hide show
  1. package/README.md +1 -1
  2. package/css/og.css +55 -23
  3. package/lib/@openglobus/js/Globe.d.ts +3 -0
  4. package/lib/@openglobus/js/control/Atmosphere.d.ts +27 -3
  5. package/lib/@openglobus/js/control/AtmosphereConfig.d.ts +59 -0
  6. package/lib/@openglobus/js/control/index.d.ts +29 -29
  7. package/lib/@openglobus/js/entity/EntityCollection.d.ts +4 -0
  8. package/lib/@openglobus/js/entity/GeoObject.d.ts +7 -3
  9. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +5 -8
  10. package/lib/@openglobus/js/layer/Vector.d.ts +5 -0
  11. package/lib/@openglobus/js/math/Quat.d.ts +1 -0
  12. package/lib/@openglobus/js/scene/Planet.d.ts +6 -0
  13. package/lib/@openglobus/js/shaders/atmos.d.ts +19 -3
  14. package/lib/@openglobus/js/shaders/drawnode.d.ts +2 -1
  15. package/lib/@openglobus/js/terrain/GlobusTerrain.d.ts +2 -0
  16. package/lib/@openglobus/js/webgl/Handler.d.ts +3 -1
  17. package/lib/@openglobus/og.css +1 -1
  18. package/lib/@openglobus/og.esm.js +1 -1
  19. package/lib/@openglobus/og.esm.js.map +1 -1
  20. package/lib/@openglobus/og.umd.js +1 -1
  21. package/lib/@openglobus/og.umd.js.map +1 -1
  22. package/lib/js/Globe.d.ts +3 -0
  23. package/lib/js/Globe.js +4 -1
  24. package/lib/js/control/Atmosphere.d.ts +27 -3
  25. package/lib/js/control/Atmosphere.js +109 -43
  26. package/lib/js/control/AtmosphereConfig.d.ts +59 -0
  27. package/lib/js/control/AtmosphereConfig.js +348 -0
  28. package/lib/js/control/DebugInfo.js +5 -4
  29. package/lib/js/control/Lighting.js +13 -5
  30. package/lib/js/control/index.d.ts +29 -29
  31. package/lib/js/control/index.js +29 -29
  32. package/lib/js/entity/EntityCollection.d.ts +4 -0
  33. package/lib/js/entity/EntityCollection.js +7 -0
  34. package/lib/js/entity/GeoObject.d.ts +7 -3
  35. package/lib/js/entity/GeoObject.js +31 -16
  36. package/lib/js/entity/GeoObjectHandler.d.ts +5 -8
  37. package/lib/js/entity/GeoObjectHandler.js +34 -63
  38. package/lib/js/layer/Layer.js +2 -2
  39. package/lib/js/layer/Vector.d.ts +5 -0
  40. package/lib/js/layer/Vector.js +16 -1
  41. package/lib/js/math/Quat.d.ts +1 -0
  42. package/lib/js/math/Quat.js +4 -0
  43. package/lib/js/renderer/RendererEvents.js +1 -3
  44. package/lib/js/scene/Planet.d.ts +6 -0
  45. package/lib/js/scene/Planet.js +25 -11
  46. package/lib/js/shaders/atmos.d.ts +19 -3
  47. package/lib/js/shaders/atmos.js +40 -26
  48. package/lib/js/shaders/drawnode.d.ts +2 -1
  49. package/lib/js/shaders/drawnode.js +15 -12
  50. package/lib/js/shaders/geoObject.js +22 -71
  51. package/lib/js/terrain/GlobusRgbTerrain.js +2 -2
  52. package/lib/js/terrain/GlobusTerrain.d.ts +2 -0
  53. package/lib/js/terrain/GlobusTerrain.js +2 -0
  54. package/lib/js/ui/Slider.js +3 -3
  55. package/lib/js/webgl/Handler.d.ts +3 -1
  56. package/lib/js/webgl/Handler.js +38 -28
  57. package/package.json +1 -1
@@ -6,6 +6,7 @@ import { ImageCanvas } from "../ImageCanvas";
6
6
  import { Vec2 } from "../math/Vec2";
7
7
  import { ProgramController } from "./ProgramController";
8
8
  import { Stack } from "../Stack";
9
+ import { throttle } from "../utils/shared";
9
10
  const vendorPrefixes = ["", "WEBKIT_", "MOZ_"];
10
11
  const CONTEXT_TYPE = ["webgl2", "webgl"];
11
12
  // Maximal mipmap levels
@@ -25,7 +26,35 @@ class Handler {
25
26
  constructor(canvasTarget, params = {}) {
26
27
  this.framebufferStack = new Stack();
27
28
  this._requestAnimationFrameId = 0;
29
+ /**
30
+ * Draw single frame.
31
+ * @public
32
+ */
33
+ this.drawFrame = () => {
34
+ /** Calculating frame time */
35
+ let now = window.performance.now();
36
+ this.deltaTime = now - this._lastAnimationFrameTime;
37
+ this._lastAnimationFrameTime = now;
38
+ this.defaultClock.tick(this.deltaTime);
39
+ for (let i = 0; i < this._clocks.length; i++) {
40
+ this._clocks[i].tick(this.deltaTime);
41
+ }
42
+ /** Canvas resize checking */
43
+ let canvas = this.canvas;
44
+ if (Math.floor(canvas.clientWidth * this._params.pixelRatio) !== canvas.width || Math.floor(canvas.clientHeight * this._params.pixelRatio) !== canvas.height) {
45
+ if (canvas.clientWidth === 0 || canvas.clientHeight === 0) {
46
+ this.stop();
47
+ }
48
+ else if (!document.hidden) {
49
+ this.start();
50
+ this.setSize(canvas.clientWidth, canvas.clientHeight);
51
+ }
52
+ }
53
+ /** Draw frame */
54
+ this._frameCallback();
55
+ };
28
56
  this.events = createEvents(["visibilitychange", "resize"]);
57
+ this._throttledDrawFrame = this.drawFrame;
29
58
  this.defaultClock = new Clock();
30
59
  this._clocks = [];
31
60
  this.deltaTime = 0;
@@ -69,6 +98,14 @@ class Handler {
69
98
  this.initialize();
70
99
  }
71
100
  }
101
+ set frameDelay(delay) {
102
+ if (delay === 0) {
103
+ this._throttledDrawFrame = this.drawFrame;
104
+ }
105
+ else {
106
+ this._throttledDrawFrame = throttle(this.drawFrame, delay);
107
+ }
108
+ }
72
109
  isInitialized() {
73
110
  return this._initialized;
74
111
  }
@@ -786,33 +823,6 @@ class Handler {
786
823
  let c = this.canvas;
787
824
  return c ? new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5)) : new Vec2();
788
825
  }
789
- /**
790
- * Draw single frame.
791
- * @public
792
- */
793
- drawFrame() {
794
- /** Calculating frame time */
795
- let now = window.performance.now();
796
- this.deltaTime = now - this._lastAnimationFrameTime;
797
- this._lastAnimationFrameTime = now;
798
- this.defaultClock.tick(this.deltaTime);
799
- for (let i = 0; i < this._clocks.length; i++) {
800
- this._clocks[i].tick(this.deltaTime);
801
- }
802
- /** Canvas resize checking */
803
- let canvas = this.canvas;
804
- if (Math.floor(canvas.clientWidth * this._params.pixelRatio) !== canvas.width || Math.floor(canvas.clientHeight * this._params.pixelRatio) !== canvas.height) {
805
- if (canvas.clientWidth === 0 || canvas.clientHeight === 0) {
806
- this.stop();
807
- }
808
- else if (!document.hidden) {
809
- this.start();
810
- this.setSize(canvas.clientWidth, canvas.clientHeight);
811
- }
812
- }
813
- /** Draw frame */
814
- this._frameCallback();
815
- }
816
826
  /**
817
827
  * Clearing gl frame.
818
828
  * @public
@@ -853,7 +863,7 @@ class Handler {
853
863
  */
854
864
  _animationFrameCallback() {
855
865
  this._requestAnimationFrameId = window.requestAnimationFrame(() => {
856
- this.drawFrame();
866
+ this._throttledDrawFrame();
857
867
  this._requestAnimationFrameId && this._animationFrameCallback();
858
868
  });
859
869
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openglobus/og",
3
- "version": "0.20.2",
3
+ "version": "0.20.4",
4
4
  "description": "[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely free.",
5
5
  "directories": {
6
6
  "example": "./sandbox"