@openglobus/og 0.22.2 → 0.23.0

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 (167) hide show
  1. package/css/og.css +137 -1
  2. package/lib/@openglobus/js/Object3d.d.ts +20 -10
  3. package/lib/@openglobus/js/camera/Camera.d.ts +9 -0
  4. package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
  5. package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
  6. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
  7. package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  8. package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  9. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  10. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  11. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  12. package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  13. package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  14. package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  15. package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
  16. package/lib/@openglobus/js/control/index.d.ts +2 -0
  17. package/lib/@openglobus/js/entity/Entity.d.ts +278 -19
  18. package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
  19. package/lib/@openglobus/js/entity/GeoObject.d.ts +141 -36
  20. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
  21. package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
  22. package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
  23. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
  24. package/lib/@openglobus/js/index.d.ts +2 -1
  25. package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
  26. package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
  27. package/lib/@openglobus/js/math/Quat.d.ts +46 -33
  28. package/lib/@openglobus/js/math/Ray.d.ts +10 -4
  29. package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
  30. package/lib/@openglobus/js/math.d.ts +2 -2
  31. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
  32. package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
  33. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  34. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  35. package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
  36. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +1 -0
  37. package/lib/@openglobus/js/scene/Planet.d.ts +11 -7
  38. package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
  39. package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
  40. package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
  41. package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
  42. package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
  43. package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
  44. package/lib/@openglobus/js/ui/Input.d.ts +32 -0
  45. package/lib/@openglobus/js/ui/View.d.ts +3 -1
  46. package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
  47. package/lib/@openglobus/js/utils/shared.d.ts +22 -0
  48. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
  49. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
  50. package/lib/@openglobus/js/webgl/Handler.d.ts +1 -0
  51. package/lib/@openglobus/og.css +1 -1
  52. package/lib/@openglobus/og.esm.js +1 -1
  53. package/lib/@openglobus/og.esm.js.map +1 -1
  54. package/lib/@openglobus/og.umd.js +1 -1
  55. package/lib/@openglobus/og.umd.js.map +1 -1
  56. package/lib/js/Object3d.d.ts +20 -10
  57. package/lib/js/Object3d.js +124 -48
  58. package/lib/js/camera/Camera.d.ts +9 -0
  59. package/lib/js/camera/Camera.js +27 -1
  60. package/lib/js/camera/Frustum.d.ts +3 -0
  61. package/lib/js/camera/Frustum.js +7 -0
  62. package/lib/js/control/Atmosphere.js +10 -6
  63. package/lib/js/control/CameraLock.d.ts +38 -0
  64. package/lib/js/control/CameraLock.js +216 -0
  65. package/lib/js/control/Control.js +1 -1
  66. package/lib/js/control/DebugInfo.js +13 -3
  67. package/lib/js/control/KeyboardNavigation.js +1 -1
  68. package/lib/js/control/ScaleControl.js +9 -3
  69. package/lib/js/control/SimpleNavigation.d.ts +27 -10
  70. package/lib/js/control/SimpleNavigation.js +148 -49
  71. package/lib/js/control/Sun.js +1 -1
  72. package/lib/js/control/elevationProfile/ElevationProfileScene.js +4 -4
  73. package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  74. package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
  75. package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  76. package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
  77. package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  78. package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
  79. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  80. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +502 -0
  81. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  82. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
  83. package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  84. package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +106 -0
  85. package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  86. package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +34 -0
  87. package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  88. package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
  89. package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
  90. package/lib/js/control/geoObjectEditor/colors.js +8 -0
  91. package/lib/js/control/index.d.ts +2 -0
  92. package/lib/js/control/index.js +2 -0
  93. package/lib/js/control/timeline/TimelineControl.js +2 -0
  94. package/lib/js/entity/Entity.d.ts +278 -19
  95. package/lib/js/entity/Entity.js +483 -63
  96. package/lib/js/entity/EntityCollection.d.ts +8 -9
  97. package/lib/js/entity/EntityCollection.js +48 -45
  98. package/lib/js/entity/GeoObject.d.ts +141 -36
  99. package/lib/js/entity/GeoObject.js +153 -90
  100. package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
  101. package/lib/js/entity/GeoObjectHandler.js +198 -295
  102. package/lib/js/entity/InstanceData.d.ts +76 -0
  103. package/lib/js/entity/InstanceData.js +344 -0
  104. package/lib/js/entity/Polyline.d.ts +19 -6
  105. package/lib/js/entity/Polyline.js +76 -36
  106. package/lib/js/entity/PolylineHandler.d.ts +7 -0
  107. package/lib/js/entity/PolylineHandler.js +26 -1
  108. package/lib/js/index.d.ts +2 -1
  109. package/lib/js/index.js +2 -1
  110. package/lib/js/layer/Bing.js +2 -2
  111. package/lib/js/layer/Vector.d.ts +4 -0
  112. package/lib/js/layer/Vector.js +16 -0
  113. package/lib/js/light/LightSource.d.ts +1 -139
  114. package/lib/js/light/LightSource.js +21 -227
  115. package/lib/js/math/Quat.d.ts +46 -33
  116. package/lib/js/math/Quat.js +91 -90
  117. package/lib/js/math/Ray.d.ts +10 -4
  118. package/lib/js/math/Ray.js +20 -4
  119. package/lib/js/math/Vec3.d.ts +15 -0
  120. package/lib/js/math/Vec3.js +30 -1
  121. package/lib/js/math.d.ts +2 -2
  122. package/lib/js/math.js +3 -3
  123. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  124. package/lib/js/quadTree/EntityCollectionNode.js +8 -8
  125. package/lib/js/quadTree/Node.d.ts +1 -1
  126. package/lib/js/quadTree/Node.js +2 -2
  127. package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
  128. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  129. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
  130. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  131. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
  132. package/lib/js/renderer/Renderer.d.ts +63 -44
  133. package/lib/js/renderer/Renderer.js +260 -263
  134. package/lib/js/renderer/RendererEvents.d.ts +1 -0
  135. package/lib/js/renderer/RendererEvents.js +2 -1
  136. package/lib/js/scene/Planet.d.ts +11 -7
  137. package/lib/js/scene/Planet.js +109 -87
  138. package/lib/js/scene/RenderNode.d.ts +10 -25
  139. package/lib/js/scene/RenderNode.js +70 -58
  140. package/lib/js/shaders/depth.js +2 -5
  141. package/lib/js/shaders/drawnode.d.ts +1 -0
  142. package/lib/js/shaders/drawnode.js +51 -52
  143. package/lib/js/shaders/geoObject.d.ts +1 -0
  144. package/lib/js/shaders/geoObject.js +154 -91
  145. package/lib/js/shaders/polyline.js +68 -51
  146. package/lib/js/shaders/utils.d.ts +1 -1
  147. package/lib/js/shaders/utils.js +11 -0
  148. package/lib/js/ui/Checkbox.d.ts +31 -0
  149. package/lib/js/ui/Checkbox.js +110 -0
  150. package/lib/js/ui/Color.js +2 -1
  151. package/lib/js/ui/Dialog.d.ts +3 -0
  152. package/lib/js/ui/Dialog.js +20 -0
  153. package/lib/js/ui/Input.d.ts +32 -0
  154. package/lib/js/ui/Input.js +107 -0
  155. package/lib/js/ui/View.d.ts +3 -1
  156. package/lib/js/ui/View.js +6 -0
  157. package/lib/js/utils/objParser.d.ts +44 -12
  158. package/lib/js/utils/objParser.js +241 -149
  159. package/lib/js/utils/shared.d.ts +22 -0
  160. package/lib/js/utils/shared.js +34 -0
  161. package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
  162. package/lib/js/webgl/Framebuffer.d.ts +35 -8
  163. package/lib/js/webgl/Framebuffer.js +136 -29
  164. package/lib/js/webgl/Handler.d.ts +1 -0
  165. package/lib/js/webgl/Handler.js +11 -1
  166. package/lib/js/webgl/Program.js +0 -8
  167. package/package.json +4 -2
@@ -1,5 +1,26 @@
1
1
  import { BaseFramebuffer } from "./BaseFramebuffer";
2
2
  import { ImageCanvas } from "../ImageCanvas";
3
+ const TypeArrayConstructor = {
4
+ "UNSIGNED_BYTE": Uint8Array,
5
+ "FLOAT": Float32Array
6
+ };
7
+ export function clientWaitAsync(gl, sync, flags) {
8
+ return new Promise((resolve, reject) => {
9
+ function check() {
10
+ const res = gl.clientWaitSync(sync, flags, 0);
11
+ if (res == gl.WAIT_FAILED) {
12
+ reject();
13
+ }
14
+ else if (res == gl.TIMEOUT_EXPIRED) {
15
+ requestAnimationFrame(check);
16
+ }
17
+ else {
18
+ resolve();
19
+ }
20
+ }
21
+ check();
22
+ });
23
+ }
3
24
  /**
4
25
  * Class represents framebuffer.
5
26
  * @class
@@ -9,24 +30,75 @@ import { ImageCanvas } from "../ImageCanvas";
9
30
  export class Framebuffer extends BaseFramebuffer {
10
31
  constructor(handler, options = {}) {
11
32
  super(handler, options);
12
- this._isBare = options.isBare || false;
13
- this._internalFormatArr = options.internalFormat instanceof Array ? options.internalFormat : [options.internalFormat || "RGBA"];
14
- this._formatArr = options.format instanceof Array ? options.format : [options.format || "RGBA"];
15
- this._typeArr = options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"];
16
- if (options.attachment instanceof Array) {
17
- this._attachmentArr = options.attachment.map((a, i) => {
18
- let res = a.toUpperCase();
19
- if (res === "COLOR_ATTACHMENT") {
20
- return `${res}${i.toString()}`;
33
+ this.readPixelBuffersAsync = () => {
34
+ const gl = this.handler.gl;
35
+ if (this._skipFrame)
36
+ return;
37
+ this._skipFrame = true;
38
+ let w = this.width, h = this.height;
39
+ let pb = this.pixelBuffers;
40
+ this.activate();
41
+ for (let i = 0; i < pb.length; i++) {
42
+ let pbi = pb[i];
43
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pbi.buffer);
44
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, pbi.data.byteLength, gl.STREAM_READ);
45
+ gl.readBuffer(pbi.glAttachment);
46
+ gl.readPixels(0, 0, w, h, gl.RGBA, pbi.glType, 0);
47
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
48
+ }
49
+ this.deactivate();
50
+ const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
51
+ gl.flush();
52
+ clientWaitAsync(gl, sync, 0).then(() => {
53
+ this._skipFrame = false;
54
+ gl.deleteSync(sync);
55
+ for (let i = 0; i < pb.length; i++) {
56
+ let pbi = pb[i];
57
+ if (pbi.data) {
58
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pbi.buffer);
59
+ gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pbi.data);
60
+ }
21
61
  }
22
- return res;
62
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
23
63
  });
24
- }
25
- else {
26
- this._attachmentArr = [options.attachment || "COLOR_ATTACHMENT0"];
27
- }
64
+ };
65
+ this._targets = Framebuffer.createTargets(options.targets);
66
+ this._size = this._targets.length;
28
67
  this._renderbufferTarget = options.renderbufferTarget != undefined ? options.renderbufferTarget : "DEPTH_ATTACHMENT";
29
68
  this.textures = options.textures || new Array(this._size);
69
+ this.pixelBuffers = [];
70
+ this._skipFrame = false;
71
+ }
72
+ static createTargets(targets) {
73
+ let attInd = 0;
74
+ let pbInd = 0;
75
+ if (targets) {
76
+ return targets.map((ti) => {
77
+ let attachment = ti.attachment || "COLOR_ATTACHMENT";
78
+ if (attachment === "COLOR_ATTACHMENT") {
79
+ attachment = `COLOR_ATTACHMENT${attInd++}`;
80
+ }
81
+ let type = ti.type || "UNSIGNED_BYTE";
82
+ return {
83
+ internalFormat: ti.internalFormat || "RGBA",
84
+ format: ti.format || "RGBA",
85
+ type,
86
+ attachment,
87
+ filter: ti.filter || "NEAREST",
88
+ pixelBufferIndex: ti.readAsync ? pbInd++ : -1,
89
+ TypeArrayConstructor: TypeArrayConstructor[type]
90
+ };
91
+ });
92
+ }
93
+ return [{
94
+ internalFormat: "RGBA",
95
+ format: "RGBA",
96
+ type: "UNSIGNED_BYTE",
97
+ attachment: "COLOR_ATTACHMENT0",
98
+ filter: "NEAREST",
99
+ pixelBufferIndex: -1,
100
+ TypeArrayConstructor: TypeArrayConstructor.UNSIGNED_BYTE
101
+ }];
30
102
  }
31
103
  // static blit(sourceFramebuffer: Framebuffer, destFramebuffer: Framebuffer, glAttachment: number, glMask: number, glFilter: number) {
32
104
  // let gl = sourceFramebuffer.handler.gl!;
@@ -51,6 +123,11 @@ export class Framebuffer extends BaseFramebuffer {
51
123
  gl.deleteTexture(this.textures[i]);
52
124
  }
53
125
  this.textures = new Array(this._size);
126
+ for (let i = 0; i < this.pixelBuffers.length; i++) {
127
+ this.pixelBuffers[i].data = null;
128
+ gl.deleteBuffer(this.pixelBuffers[i].buffer);
129
+ }
130
+ this.pixelBuffers = [];
54
131
  gl.deleteFramebuffer(this._fbo);
55
132
  gl.deleteRenderbuffer(this._depthRenderbuffer);
56
133
  this._depthRenderbuffer = null;
@@ -68,21 +145,23 @@ export class Framebuffer extends BaseFramebuffer {
68
145
  return;
69
146
  this._fbo = gl.createFramebuffer();
70
147
  gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
71
- if (!this._isBare) {
72
- let attachmentArr = [];
73
- for (let i = 0; i < this.textures.length; i++) {
74
- let ti = this.textures[i] || this.handler.createEmptyTexture2DExt(this._width, this._height, this._filter, this._internalFormatArr[i], this._formatArr[i], this._typeArr[i]);
75
- let att_i = gl[this._attachmentArr[i]];
76
- if (ti) {
77
- this.bindOutputTexture(ti, att_i);
78
- this.textures[i] = ti;
79
- }
80
- if (this._attachmentArr[i] != "DEPTH_ATTACHMENT") {
81
- attachmentArr.push(att_i);
82
- }
148
+ let attachmentArr = [];
149
+ for (let i = 0; i < this._targets.length; i++) {
150
+ let tr = this._targets[i];
151
+ let ti = this.textures[i] || this.handler.createEmptyTexture2DExt(this._width, this._height, tr.filter, tr.internalFormat, tr.format, tr.type);
152
+ let att_i = gl[tr.attachment];
153
+ if (ti) {
154
+ this.bindOutputTexture(ti, att_i);
155
+ this.textures[i] = ti;
156
+ }
157
+ if (tr.attachment !== "DEPTH_ATTACHMENT") {
158
+ attachmentArr.push(att_i);
159
+ }
160
+ if (tr.pixelBufferIndex !== -1) {
161
+ this._createPixelBuffer(tr);
83
162
  }
84
- gl.drawBuffers && gl.drawBuffers(attachmentArr);
85
163
  }
164
+ gl.drawBuffers && gl.drawBuffers(attachmentArr);
86
165
  if (this._useDepth) {
87
166
  this._depthRenderbuffer = gl.createRenderbuffer();
88
167
  gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
@@ -92,6 +171,34 @@ export class Framebuffer extends BaseFramebuffer {
92
171
  }
93
172
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
94
173
  }
174
+ getPixelBufferData(targetIndex) {
175
+ let pbInd = this._targets[targetIndex].pixelBufferIndex;
176
+ return pbInd !== -1 ? this.pixelBuffers[pbInd].data : null;
177
+ }
178
+ _createPixelBuffer(target) {
179
+ let gl = this.handler.gl;
180
+ let pbInd = target.pixelBufferIndex;
181
+ let pb = this.pixelBuffers[pbInd];
182
+ if (!pb) {
183
+ pb = this.pixelBuffers[pbInd] = {
184
+ buffer: null,
185
+ data: null,
186
+ glType: -1,
187
+ glAttachment: -1
188
+ };
189
+ }
190
+ let size = this.width * this.height * 4;
191
+ // clear current pixel buffer
192
+ pb.data = null;
193
+ pb.data = new target.TypeArrayConstructor(size);
194
+ //gl.deleteBuffer(pb.buffer);
195
+ pb.buffer = gl.createBuffer();
196
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, pb.buffer);
197
+ gl.bufferData(gl.PIXEL_PACK_BUFFER, size, gl.STREAM_READ);
198
+ gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);
199
+ pb.glType = gl[target.type];
200
+ pb.glAttachment = gl[target.attachment];
201
+ }
95
202
  /**
96
203
  * Bind buffer texture.
97
204
  * @public
@@ -118,7 +225,7 @@ export class Framebuffer extends BaseFramebuffer {
118
225
  let gl = this.handler.gl;
119
226
  gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
120
227
  gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0);
121
- gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._typeArr[index]], res);
228
+ gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._targets[index].type], res);
122
229
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
123
230
  }
124
231
  /**
@@ -131,7 +238,7 @@ export class Framebuffer extends BaseFramebuffer {
131
238
  let gl = this.handler.gl;
132
239
  gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
133
240
  gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
134
- gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._typeArr[attachmentIndex]], res);
241
+ gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._targets[attachmentIndex].type], res);
135
242
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
136
243
  }
137
244
  /**
@@ -82,6 +82,7 @@ declare class Handler {
82
82
  * @type {number}
83
83
  */
84
84
  deltaTime: number;
85
+ prevDeltaTime: number;
85
86
  /**
86
87
  * WebGL rendering canvas element.
87
88
  * @public
@@ -33,7 +33,16 @@ class Handler {
33
33
  this.drawFrame = () => {
34
34
  /** Calculating frame time */
35
35
  let now = window.performance.now();
36
- this.deltaTime = now - this._lastAnimationFrameTime;
36
+ let prevDeltaTime = this.deltaTime;
37
+ //Make some filter:)
38
+ this.deltaTime = (now - this._lastAnimationFrameTime + this.prevDeltaTime) * 0.5;
39
+ if (this.deltaTime > 3) {
40
+ this.deltaTime = 3;
41
+ }
42
+ else if (this.deltaTime < 1) {
43
+ this.deltaTime = 1;
44
+ }
45
+ this.prevDeltaTime = prevDeltaTime;
37
46
  this._lastAnimationFrameTime = now;
38
47
  this.defaultClock.tick(this.deltaTime);
39
48
  for (let i = 0; i < this._clocks.length; i++) {
@@ -57,6 +66,7 @@ class Handler {
57
66
  this._throttledDrawFrame = this.drawFrame;
58
67
  this.defaultClock = new Clock();
59
68
  this._clocks = [];
69
+ this.prevDeltaTime = 0;
60
70
  this.deltaTime = 0;
61
71
  this.canvas = null;
62
72
  this.gl = null;
@@ -222,10 +222,6 @@ class Program {
222
222
  this.drawElementsInstanced = ext.drawElementsInstancedANGLE.bind(ext);
223
223
  }
224
224
  }
225
- // this.drawElementsInstanced =
226
- // gl.drawElementsInstanced ?
227
- // gl.drawElementsInstanced.bind(gl) :
228
- // gl.getExtension('ANGLE_instanced_arrays').drawElementsInstancedANGLE.bind(gl.getExtension('ANGLE_instanced_arrays'));
229
225
  }
230
226
  if (!this.vertexAttribDivisor) {
231
227
  if (gl.vertexAttribDivisor) {
@@ -237,10 +233,6 @@ class Program {
237
233
  this.vertexAttribDivisor = ext.vertexAttribDivisorANGLE.bind(ext);
238
234
  }
239
235
  }
240
- // this.vertexAttribDivisor =
241
- // gl.vertexAttribDivisor ?
242
- // gl.vertexAttribDivisor.bind(gl) :
243
- // gl.getExtension('ANGLE_instanced_arrays').vertexAttribDivisorANGLE.bind(gl.getExtension('ANGLE_instanced_arrays'));
244
236
  }
245
237
  if (!gl.getProgramParameter(this._p, gl.LINK_STATUS)) {
246
238
  cons.logErr(`Shader program "${this.name}": initialization failed. ${gl.getProgramInfoLog(this._p)}.`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openglobus/og",
3
- "version": "0.22.2",
3
+ "version": "0.23.0",
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"
@@ -20,7 +20,8 @@
20
20
  "test_watch": "jest --env=jsdom --watch",
21
21
  "lint": "eslint src/",
22
22
  "gen_js": "tsc --build tsconfig.json --declaration",
23
- "font": "node ./fonts/index.js"
23
+ "font": "node ./fonts/index.js",
24
+ "dev_serve": "npm-run-all --parallel --continue-on-error --race dev serve"
24
25
  },
25
26
  "repository": {
26
27
  "type": "git",
@@ -55,6 +56,7 @@
55
56
  "jsdoc-babel": "^0.5.0",
56
57
  "lint-staged": "^15.2.10",
57
58
  "local-web-server": "^5.4.0",
59
+ "npm-run-all": "^4.1.5",
58
60
  "postcss": "^8.4.45",
59
61
  "prettier": "^3.3.3",
60
62
  "rollup": "^4.22.4",