@inweb/viewer-three 26.12.7 → 27.1.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.
@@ -39,6 +39,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
39
39
  target: Vector3;
40
40
  private _activeDragger;
41
41
  private _components;
42
+ private _updateDelay;
42
43
  private _renderNeeded;
43
44
  private _renderTime;
44
45
  private _markup;
@@ -61,7 +62,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
61
62
  isInitialized(): boolean;
62
63
  setSize(width: number, height: number, updateStyle?: boolean): void;
63
64
  update(force?: boolean): void;
64
- render(time?: DOMHighResTimeStamp, force?: boolean): void;
65
+ render(time?: DOMHighResTimeStamp): void;
65
66
  loadReferences(model: Model | File | Assembly): Promise<this>;
66
67
  /**
67
68
  * Loads a file into the viewer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inweb/viewer-three",
3
- "version": "26.12.7",
3
+ "version": "27.1.0",
4
4
  "description": "JavaScript library for rendering CAD and BIM files in a browser using Three.js",
5
5
  "homepage": "https://cloud.opendesign.com/docs/index.html",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -35,10 +35,10 @@
35
35
  "docs": "typedoc"
36
36
  },
37
37
  "dependencies": {
38
- "@inweb/client": "~26.12.7",
39
- "@inweb/eventemitter2": "~26.12.7",
40
- "@inweb/markup": "~26.12.7",
41
- "@inweb/viewer-core": "~26.12.7"
38
+ "@inweb/client": "~27.1.0",
39
+ "@inweb/eventemitter2": "~27.1.0",
40
+ "@inweb/markup": "~27.1.0",
41
+ "@inweb/viewer-core": "~27.1.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/three": "^0.180.0",
@@ -109,6 +109,7 @@ export class Viewer
109
109
  private _activeDragger: IDragger | null;
110
110
  private _components: IComponent[];
111
111
 
112
+ private _updateDelay: number;
112
113
  private _renderNeeded: boolean;
113
114
  private _renderTime: DOMHighResTimeStamp;
114
115
 
@@ -137,6 +138,7 @@ export class Viewer
137
138
  this._activeDragger = null;
138
139
  this._components = [];
139
140
 
141
+ this._updateDelay = 1000;
140
142
  this._renderNeeded = false;
141
143
  this._renderTime = 0;
142
144
 
@@ -313,16 +315,20 @@ export class Viewer
313
315
  }
314
316
 
315
317
  update(force = false): void {
318
+ const time = performance.now();
319
+ force = force || time - this._renderTime >= this._updateDelay;
320
+
316
321
  this._renderNeeded = true;
317
- if (force) this.render();
318
- this.emitEvent({ type: "update", data: force });
322
+ if (force) this.render(time);
323
+
324
+ this.emitEvent({ type: "update", force });
319
325
  }
320
326
 
321
327
  // Internal render routines
322
328
 
323
- render(time?: DOMHighResTimeStamp, force = false): void {
329
+ render(time?: DOMHighResTimeStamp): void {
324
330
  if (!this.renderer) return;
325
- if (!this._renderNeeded && !force) return;
331
+ if (!this._renderNeeded) return;
326
332
 
327
333
  if (!time) time = performance.now();
328
334
  const deltaTime = (time - this._renderTime) / 1000;
@@ -77,9 +77,6 @@ export class DynamicGltfLoader {
77
77
  this.graphicsObjectLimit = 10000;
78
78
  this.totalLoadedObjects = 0;
79
79
 
80
- this.lastUpdateTime = 0;
81
- this.updateInterval = 1000;
82
-
83
80
  this.handleToObjects = new Map();
84
81
 
85
82
  this.originalObjects = new Set();
@@ -887,11 +884,7 @@ export class DynamicGltfLoader {
887
884
  total: totalNodes,
888
885
  });
889
886
 
890
- const currentTime = Date.now();
891
- if (currentTime - this.lastUpdateTime >= this.updateInterval) {
892
- this.dispatchEvent("update");
893
- this.lastUpdateTime = currentTime;
894
- }
887
+ this.dispatchEvent("update");
895
888
 
896
889
  await new Promise((resolve) => {
897
890
  setTimeout(resolve, 0);
@@ -1284,7 +1277,6 @@ export class DynamicGltfLoader {
1284
1277
  this.transformedGeometries.clear();
1285
1278
 
1286
1279
  this.totalLoadedObjects = 0;
1287
- this.lastUpdateTime = 0;
1288
1280
  this.currentMemoryUsage = 0;
1289
1281
  this.loadedGeometrySize = 0;
1290
1282
 
@@ -1414,9 +1406,7 @@ export class DynamicGltfLoader {
1414
1406
 
1415
1407
  yieldToUI() {
1416
1408
  return new Promise((resolve) => {
1417
- requestAnimationFrame(() => {
1418
- setTimeout(resolve, 0);
1419
- });
1409
+ setTimeout(resolve, 0);
1420
1410
  });
1421
1411
  }
1422
1412