@inweb/viewer-three 27.1.0 → 27.1.1

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 (52) hide show
  1. package/dist/extensions/components/InfoPanelComponent.js +7 -9
  2. package/dist/extensions/components/InfoPanelComponent.js.map +1 -1
  3. package/dist/extensions/components/InfoPanelComponent.min.js +1 -1
  4. package/dist/extensions/components/InfoPanelComponent.module.js +7 -9
  5. package/dist/extensions/components/InfoPanelComponent.module.js.map +1 -1
  6. package/dist/extensions/loaders/GLTFCloudLoader.js +1 -1
  7. package/dist/extensions/loaders/GLTFCloudLoader.js.map +1 -1
  8. package/dist/extensions/loaders/GLTFCloudLoader.min.js +1 -1
  9. package/dist/extensions/loaders/GLTFCloudLoader.module.js +1 -1
  10. package/dist/extensions/loaders/GLTFCloudLoader.module.js.map +1 -1
  11. package/dist/extensions/loaders/GLTFFileLoader.js +1 -1
  12. package/dist/extensions/loaders/GLTFFileLoader.js.map +1 -1
  13. package/dist/extensions/loaders/GLTFFileLoader.min.js +1 -1
  14. package/dist/extensions/loaders/GLTFFileLoader.module.js +1 -1
  15. package/dist/extensions/loaders/GLTFFileLoader.module.js.map +1 -1
  16. package/dist/extensions/loaders/IFCXLoader.js +2 -2
  17. package/dist/extensions/loaders/IFCXLoader.js.map +1 -1
  18. package/dist/extensions/loaders/IFCXLoader.min.js +1 -1
  19. package/dist/extensions/loaders/IFCXLoader.module.js +2 -2
  20. package/dist/extensions/loaders/IFCXLoader.module.js.map +1 -1
  21. package/dist/extensions/loaders/PotreeLoader.js +1 -1
  22. package/dist/extensions/loaders/PotreeLoader.js.map +1 -1
  23. package/dist/extensions/loaders/PotreeLoader.min.js +1 -1
  24. package/dist/extensions/loaders/PotreeLoader.module.js +1 -1
  25. package/dist/extensions/loaders/PotreeLoader.module.js.map +1 -1
  26. package/dist/viewer-three.js +35 -26
  27. package/dist/viewer-three.js.map +1 -1
  28. package/dist/viewer-three.min.js +2 -2
  29. package/dist/viewer-three.module.js +35 -26
  30. package/dist/viewer-three.module.js.map +1 -1
  31. package/extensions/components/InfoPanelComponent.ts +8 -11
  32. package/extensions/loaders/GLTFCloudLoader.ts +1 -1
  33. package/extensions/loaders/GLTFFileLoader.ts +1 -1
  34. package/extensions/loaders/IFCX/IFCXCloudLoader.ts +1 -1
  35. package/extensions/loaders/IFCX/IFCXFileLoader.ts +1 -1
  36. package/extensions/loaders/Potree/PotreeFileLoader.ts +1 -1
  37. package/lib/Viewer/Viewer.d.ts +1 -1
  38. package/lib/Viewer/commands/CreatePreview.d.ts +1 -1
  39. package/lib/Viewer/components/RenderLoopComponent.d.ts +1 -1
  40. package/lib/Viewer/draggers/FlyDragger.d.ts +1 -0
  41. package/lib/Viewer/draggers/WalkDragger.d.ts +1 -0
  42. package/lib/Viewer/loaders/index.d.ts +2 -1
  43. package/package.json +5 -5
  44. package/src/Viewer/Viewer.ts +28 -25
  45. package/src/Viewer/commands/CreatePreview.ts +2 -2
  46. package/src/Viewer/components/InfoComponent.ts +4 -4
  47. package/src/Viewer/components/RenderLoopComponent.ts +2 -2
  48. package/src/Viewer/draggers/FlyDragger.ts +8 -1
  49. package/src/Viewer/draggers/WalkDragger.ts +8 -1
  50. package/src/Viewer/loaders/GLTFCloudDynamicLoader.ts +2 -2
  51. package/src/Viewer/loaders/GLTFFileDynamicLoader.ts +2 -2
  52. package/src/Viewer/loaders/index.ts +2 -1
@@ -107,9 +107,8 @@ class InfoPanelComponent implements IComponent {
107
107
  this.viewer.addEventListener("clear", this.updateSceneInfo);
108
108
  this.viewer.addEventListener("geometryend", this.updateSceneInfo);
109
109
  this.viewer.addEventListener("render", this.updateRenderInfo);
110
- this.viewer.addEventListener("animate", this.updatePreformanceInfo);
110
+ this.viewer.addEventListener("animate", this.updateViewer);
111
111
 
112
- this.updatePreformanceInfo();
113
112
  this.updateRenderInfo();
114
113
  this.updateSceneInfo();
115
114
  }
@@ -118,7 +117,7 @@ class InfoPanelComponent implements IComponent {
118
117
  this.viewer.removeEventListener("clear", this.updateSceneInfo);
119
118
  this.viewer.removeEventListener("geometryend", this.updateSceneInfo);
120
119
  this.viewer.removeEventListener("render", this.updateRenderInfo);
121
- this.viewer.removeEventListener("animate", this.updatePreformanceInfo);
120
+ this.viewer.removeEventListener("animate", this.updateViewer);
122
121
 
123
122
  this.performancePanel = undefined;
124
123
  this.renderPanel = undefined;
@@ -141,7 +140,7 @@ class InfoPanelComponent implements IComponent {
141
140
  }
142
141
  }
143
142
 
144
- updatePreformanceInfo = () => {
143
+ updateRenderInfo = () => {
145
144
  const info = this.viewer.info;
146
145
 
147
146
  const text = [];
@@ -149,13 +148,7 @@ class InfoPanelComponent implements IComponent {
149
148
  text.push(`Frame Time: ${info.performance.frameTime} ms`);
150
149
  this.performancePanel.update(text.join("\n"));
151
150
 
152
- this.viewer.update();
153
- };
154
-
155
- updateRenderInfo = () => {
156
- const info = this.viewer.info;
157
-
158
- const text = [];
151
+ text.length = 0;
159
152
  text.push(`Viewport: ${info.render.viewport.width} x ${info.render.viewport.height}`);
160
153
  text.push(`Antialiasing: ${info.render.antialiasing}`);
161
154
  text.push(`Draw Calls: ${info.render.drawCalls}`);
@@ -192,6 +185,10 @@ class InfoPanelComponent implements IComponent {
192
185
  text.push(`JS Heap Used: ${formatBytes(info.memory.usedJSHeapSize)}`);
193
186
  this.memoryPanel.update(text.join("\n"));
194
187
  };
188
+
189
+ updateViewer = () => {
190
+ this.viewer.update();
191
+ };
195
192
  }
196
193
 
197
194
  components.registerComponent("InfoPanelComponent", (viewer) => new InfoPanelComponent(viewer));
@@ -65,9 +65,9 @@ class GLTFCloudLoader extends Loader {
65
65
 
66
66
  this.viewer.syncOptions();
67
67
  this.viewer.syncOverlay();
68
- this.viewer.update();
69
68
 
70
69
  this.viewer.emitEvent({ type: "databasechunk", data: gltf.scene, file: model.file, model });
70
+ this.viewer.update(true);
71
71
 
72
72
  return this;
73
73
  }
@@ -76,9 +76,9 @@ export class GLTFFileLoader extends Loader {
76
76
 
77
77
  this.viewer.syncOptions();
78
78
  this.viewer.syncOverlay();
79
- this.viewer.update();
80
79
 
81
80
  this.viewer.emitEvent({ type: "databasechunk", data: gltf.scene, file });
81
+ this.viewer.update(true);
82
82
 
83
83
  return this;
84
84
  }
@@ -70,9 +70,9 @@ export class IFCXCloudLoader extends Loader {
70
70
 
71
71
  this.viewer.syncOptions();
72
72
  this.viewer.syncOverlay();
73
- this.viewer.update();
74
73
 
75
74
  this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
75
+ this.viewer.update(true);
76
76
 
77
77
  return this;
78
78
  }
@@ -70,9 +70,9 @@ export class IFCXFileLoader extends Loader {
70
70
 
71
71
  this.viewer.syncOptions();
72
72
  this.viewer.syncOverlay();
73
- this.viewer.update();
74
73
 
75
74
  this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
75
+ this.viewer.update(true);
76
76
 
77
77
  return this;
78
78
  }
@@ -91,9 +91,9 @@ export class PotreeFileLoader extends Loader {
91
91
 
92
92
  this.viewer.syncOptions();
93
93
  this.viewer.syncOverlay();
94
- this.viewer.update();
95
94
 
96
95
  this.viewer.emitEvent({ type: "databasechunk", data: pco, file });
96
+ this.viewer.update(true);
97
97
 
98
98
  return this;
99
99
  }
@@ -62,7 +62,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
62
62
  isInitialized(): boolean;
63
63
  setSize(width: number, height: number, updateStyle?: boolean): void;
64
64
  update(force?: boolean): void;
65
- render(time?: DOMHighResTimeStamp): void;
65
+ render(time?: DOMHighResTimeStamp, force?: boolean): void;
66
66
  loadReferences(model: Model | File | Assembly): Promise<this>;
67
67
  /**
68
68
  * Loads a file into the viewer.
@@ -1,2 +1,2 @@
1
1
  import type { Viewer } from "../Viewer";
2
- export declare function createPreview(viewer: Viewer, type?: string, encoderOptions?: number): string;
2
+ export declare function createPreview(viewer: Viewer, type?: string, quality?: number): string;
@@ -5,5 +5,5 @@ export declare class RenderLoopComponent implements IComponent {
5
5
  protected requestId: number;
6
6
  constructor(viewer: Viewer);
7
7
  dispose(): void;
8
- animate: (time?: number) => void;
8
+ animate: (time: number) => void;
9
9
  }
@@ -13,4 +13,5 @@ export declare class FlyDragger implements IDragger {
13
13
  flyspeedChange: (event: any) => void;
14
14
  viewerRender: () => void;
15
15
  viewerZoom: () => void;
16
+ animate: () => void;
16
17
  }
@@ -13,4 +13,5 @@ export declare class WalkDragger implements IDragger {
13
13
  walkspeedChange: (event: any) => void;
14
14
  viewerRender: () => void;
15
15
  viewerZoom: () => void;
16
+ animate: () => void;
16
17
  }
@@ -59,11 +59,12 @@ import { ILoadersRegistry } from "@inweb/viewer-core";
59
59
  *
60
60
  * this.viewer.syncOptions();
61
61
  * this.viewer.syncOverlay();
62
- * this.viewer.update();
63
62
  *
64
63
  * this.viewer.emitEvent({ type: "geometryprogress", data: 1, file });
65
64
  * this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
66
65
  *
66
+ * this.viewer.update(true);
67
+ *
67
68
  * return Promise.resove(this);
68
69
  * };
69
70
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inweb/viewer-three",
3
- "version": "27.1.0",
3
+ "version": "27.1.1",
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": "~27.1.0",
39
- "@inweb/eventemitter2": "~27.1.0",
40
- "@inweb/markup": "~27.1.0",
41
- "@inweb/viewer-core": "~27.1.0"
38
+ "@inweb/client": "~27.1.1",
39
+ "@inweb/eventemitter2": "~27.1.1",
40
+ "@inweb/markup": "~27.1.1",
41
+ "@inweb/viewer-core": "~27.1.1"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/three": "^0.180.0",
@@ -24,6 +24,7 @@
24
24
  import {
25
25
  Box3,
26
26
  LinearSRGBColorSpace,
27
+ // LinearToneMapping,
27
28
  Object3D,
28
29
  OrthographicCamera,
29
30
  PerspectiveCamera,
@@ -195,20 +196,16 @@ export class Viewer
195
196
  });
196
197
  this.renderer.setPixelRatio(pixelRatio);
197
198
  this.renderer.setSize(width, height);
198
- // this.renderer.toneMapping = LinearToneMapping;
199
199
  this.renderer.outputColorSpace = LinearSRGBColorSpace;
200
+ // this.renderer.toneMapping = LinearToneMapping;
200
201
 
201
202
  this.renderPass = new RenderPass(this.scene, this.camera);
202
-
203
203
  this.helpersPass = new RenderPass(this.helpers, this.camera);
204
204
  this.helpersPass.clear = false;
205
-
206
205
  this.fxaaPass = new FXAAPass();
207
206
  this.smaaPass = new SMAAPass();
208
-
209
207
  this.ssaaRenderPass = new SSAARenderPass([this.scene, this.helpers], this.camera);
210
208
  this.ssaaRenderPass.unbiased = true;
211
-
212
209
  this.outputPass = new OutputPass();
213
210
 
214
211
  this.composer = new EffectComposer(this.renderer);
@@ -233,13 +230,15 @@ export class Viewer
233
230
  this.syncOverlay();
234
231
 
235
232
  this._renderTime = performance.now();
236
- this.render(this._renderTime);
237
233
 
238
- if (typeof onProgress === "function")
239
- onProgress(new ProgressEvent("progress", { lengthComputable: true, loaded: 1, total: 1 }));
234
+ if (typeof onProgress === "function") {
235
+ const event = new ProgressEvent("progress", { lengthComputable: true, loaded: 1, total: 1 });
236
+ onProgress(event);
237
+ }
240
238
 
241
239
  this.emitEvent({ type: "initializeprogress", data: 1, loaded: 1, total: 1 });
242
240
  this.emitEvent({ type: "initialize" });
241
+ this.update(true);
243
242
 
244
243
  return Promise.resolve(this);
245
244
  }
@@ -310,8 +309,8 @@ export class Viewer
310
309
  this.renderer.setSize(width, height, updateStyle);
311
310
  this.composer.setSize(width, height);
312
311
 
313
- this.update(true);
314
312
  this.emitEvent({ type: "resize", width, height });
313
+ this.update(true);
315
314
  }
316
315
 
317
316
  update(force = false): void {
@@ -326,9 +325,9 @@ export class Viewer
326
325
 
327
326
  // Internal render routines
328
327
 
329
- render(time?: DOMHighResTimeStamp): void {
328
+ render(time?: DOMHighResTimeStamp, force = false): void {
330
329
  if (!this.renderer) return;
331
- if (!this._renderNeeded) return;
330
+ if (!this._renderNeeded && !force) return;
332
331
 
333
332
  if (!time) time = performance.now();
334
333
  const deltaTime = (time - this._renderTime) / 1000;
@@ -479,6 +478,7 @@ export class Viewer
479
478
  throw error;
480
479
  }
481
480
  this.emitEvent({ type: "geometryend", file, model });
481
+ this.update(true);
482
482
 
483
483
  return this;
484
484
  }
@@ -538,9 +538,9 @@ export class Viewer
538
538
 
539
539
  this.syncOptions();
540
540
  this.syncOverlay();
541
- this.update(true);
542
541
 
543
542
  this.emitEvent({ type: "clear" });
543
+ this.update(true);
544
544
 
545
545
  return this;
546
546
  }
@@ -769,10 +769,10 @@ export class Viewer
769
769
  this.target.copy(getVector3FromPoint3d(viewpoint.custom_fields?.camera_target ?? this.target));
770
770
 
771
771
  this.syncOverlay();
772
-
773
772
  this.setActiveDragger(draggerName);
773
+
774
774
  this.emitEvent({ type: "drawviewpoint", data: viewpoint });
775
- this.update();
775
+ this.update(true);
776
776
  }
777
777
 
778
778
  createViewpoint(): IViewpoint {
@@ -842,11 +842,7 @@ export class Viewer
842
842
  }
843
843
 
844
844
  // IWorldTransform
845
- // ===================== AI-CODE-START ======================
846
- // Source: Claude Sonnet 4.5
847
- // Date: 2025-11-25
848
- // Reviewer: vitaly.ivanov@opendesign.com
849
- // Issue: CLOUD-5990
845
+
850
846
  screenToWorld(position: { x: number; y: number }): { x: number; y: number; z: number } {
851
847
  if (!this.renderer) return { x: position.x, y: position.y, z: 0 };
852
848
 
@@ -854,6 +850,12 @@ export class Viewer
854
850
  const x = position.x / (rect.width / 2) - 1;
855
851
  const y = -position.y / (rect.height / 2) + 1;
856
852
 
853
+ // ===================== AI-CODE-START ======================
854
+ // Source: Claude Sonnet 4.5
855
+ // Date: 2025-11-25
856
+ // Reviewer: vitaly.ivanov@opendesign.com
857
+ // Issue: CLOUD-5990
858
+
857
859
  if (this.camera["isPerspectiveCamera"]) {
858
860
  // Create a raycaster from the screen position
859
861
  const raycaster = new Raycaster();
@@ -876,14 +878,15 @@ export class Viewer
876
878
  return { x: point.x, y: point.y, z: point.z };
877
879
  }
878
880
  return { x: intersectionPoint.x, y: intersectionPoint.y, z: intersectionPoint.z };
879
- } else {
880
- const point = new Vector3(x, y, -1);
881
- point.unproject(this.camera);
882
-
883
- return { x: point.x, y: point.y, z: point.z };
884
881
  }
882
+
883
+ // ===================== AI-CODE-END ======================
884
+
885
+ const point = new Vector3(x, y, -1);
886
+ point.unproject(this.camera);
887
+
888
+ return { x: point.x, y: point.y, z: point.z };
885
889
  }
886
- // ===================== AI-CODE-END ======================
887
890
 
888
891
  worldToScreen(position: { x: number; y: number; z: number }): { x: number; y: number } {
889
892
  if (!this.renderer) return { x: position.x, y: position.y };
@@ -23,7 +23,7 @@
23
23
 
24
24
  import type { Viewer } from "../Viewer";
25
25
 
26
- export function createPreview(viewer: Viewer, type = "image/jpeg", encoderOptions = 0.25): string {
26
+ export function createPreview(viewer: Viewer, type = "image/jpeg", quality = 0.25): string {
27
27
  viewer.update(true);
28
- return viewer.canvas.toDataURL(type, encoderOptions);
28
+ return viewer.canvas.toDataURL(type, quality);
29
29
  }
@@ -21,7 +21,7 @@
21
21
  // acknowledge and accept the above terms.
22
22
  ///////////////////////////////////////////////////////////////////////////////
23
23
 
24
- import { REVISION, Vector2 } from "three";
24
+ import { REVISION } from "three";
25
25
  import { IComponent } from "@inweb/viewer-core";
26
26
  import type { Viewer } from "../Viewer";
27
27
 
@@ -159,9 +159,9 @@ export class InfoComponent implements IComponent {
159
159
  };
160
160
 
161
161
  resize = () => {
162
- const rendererSize = this.viewer.renderer.getSize(new Vector2());
163
- this.viewer.info.render.viewport.width = rendererSize.x;
164
- this.viewer.info.render.viewport.height = rendererSize.y;
162
+ const { width, height } = this.viewer.canvas;
163
+ this.viewer.info.render.viewport.width = width;
164
+ this.viewer.info.render.viewport.height = height;
165
165
  };
166
166
 
167
167
  render = () => {
@@ -30,14 +30,14 @@ export class RenderLoopComponent implements IComponent {
30
30
 
31
31
  constructor(viewer: Viewer) {
32
32
  this.viewer = viewer;
33
- this.animate();
33
+ this.requestId = requestAnimationFrame(this.animate);
34
34
  }
35
35
 
36
36
  dispose() {
37
37
  cancelAnimationFrame(this.requestId);
38
38
  }
39
39
 
40
- animate = (time = 0) => {
40
+ animate = (time: number) => {
41
41
  this.requestId = requestAnimationFrame(this.animate);
42
42
 
43
43
  this.viewer.render(time);
@@ -42,16 +42,20 @@ export class FlyDragger implements IDragger {
42
42
  this.joyStickControls.addEventListener("change", this.controlsChange);
43
43
 
44
44
  this.viewer = viewer;
45
+ this.viewer.addEventListener("animate", this.animate);
45
46
  this.viewer.addEventListener("render", this.viewerRender);
46
47
  this.viewer.addEventListener("zoom", this.viewerZoom);
47
48
  this.viewer.addEventListener("changecameramode", this.updateControlsCamera);
49
+
48
50
  this.updateControls();
49
51
  }
50
52
 
51
53
  dispose() {
54
+ this.viewer.removeEventListener("animate", this.animate);
52
55
  this.viewer.removeEventListener("render", this.viewerRender);
53
56
  this.viewer.removeEventListener("zoom", this.viewerZoom);
54
57
  this.viewer.removeEventListener("changecameramode", this.updateControlsCamera);
58
+
55
59
  this.controls.removeEventListener("flyspeedchange", this.flyspeedChange);
56
60
  this.controls.removeEventListener("change", this.controlsChange);
57
61
  this.controls.dispose();
@@ -83,10 +87,13 @@ export class FlyDragger implements IDragger {
83
87
 
84
88
  viewerRender = () => {
85
89
  this.joyStickControls.update();
86
- this.controls.update();
87
90
  };
88
91
 
89
92
  viewerZoom = () => {
90
93
  this.controls.rotateDelta.set(0, 0);
91
94
  };
95
+
96
+ animate = () => {
97
+ this.controls.update();
98
+ };
92
99
  }
@@ -50,16 +50,20 @@ export class WalkDragger implements IDragger {
50
50
  this.joyStickControls.addEventListener("change", this.controlsChange);
51
51
 
52
52
  this.viewer = viewer;
53
+ this.viewer.addEventListener("animate", this.animate);
53
54
  this.viewer.addEventListener("render", this.viewerRender);
54
55
  this.viewer.addEventListener("zoom", this.viewerZoom);
55
56
  this.viewer.addEventListener("changecameramode", this.updateControlsCamera);
57
+
56
58
  this.updateControls();
57
59
  }
58
60
 
59
61
  dispose() {
62
+ this.viewer.removeEventListener("animate", this.animate);
60
63
  this.viewer.removeEventListener("render", this.viewerRender);
61
64
  this.viewer.removeEventListener("zoom", this.viewerZoom);
62
65
  this.viewer.removeEventListener("changecameramode", this.updateControlsCamera);
66
+
63
67
  this.controls.removeEventListener("walkspeedchange", this.walkspeedChange);
64
68
  this.controls.removeEventListener("change", this.controlsChange);
65
69
  this.controls.dispose();
@@ -91,10 +95,13 @@ export class WalkDragger implements IDragger {
91
95
 
92
96
  viewerRender = () => {
93
97
  this.joyStickControls.update();
94
- this.controls.update();
95
98
  };
96
99
 
97
100
  viewerZoom = () => {
98
101
  this.controls.rotateDelta.set(0, 0);
99
102
  };
103
+
104
+ animate = () => {
105
+ this.controls.update();
106
+ };
100
107
  }
@@ -71,16 +71,16 @@ export class GLTFCloudDynamicLoader extends Loader {
71
71
 
72
72
  this.viewer.syncOptions();
73
73
  this.viewer.syncOverlay();
74
- this.viewer.update();
75
74
 
76
75
  this.viewer.emitEvent({ type: "databasechunk", data: scene, file: model.file, model });
76
+ this.viewer.update(true);
77
77
  });
78
78
 
79
79
  this.gltfLoader.addEventListener("geometryerror", (data) => {
80
80
  this.viewer.emitEvent({ type: "geometryerror", data, file: model.file, model });
81
81
  });
82
82
 
83
- this.gltfLoader.addEventListener("update", (data) => {
83
+ this.gltfLoader.addEventListener("update", () => {
84
84
  this.viewer.update();
85
85
  });
86
86
 
@@ -75,16 +75,16 @@ export class GLTFFileDynamicLoader extends Loader {
75
75
 
76
76
  this.viewer.syncOptions();
77
77
  this.viewer.syncOverlay();
78
- this.viewer.update();
79
78
 
80
79
  this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
80
+ this.viewer.update(true);
81
81
  });
82
82
 
83
83
  this.gltfLoader.addEventListener("geometryerror", (data) => {
84
84
  this.viewer.emitEvent({ type: "geometryerror", data, file });
85
85
  });
86
86
 
87
- this.gltfLoader.addEventListener("update", (data) => {
87
+ this.gltfLoader.addEventListener("update", () => {
88
88
  this.viewer.update();
89
89
  });
90
90
 
@@ -86,11 +86,12 @@ import { GLTFCloudDynamicLoader } from "./GLTFCloudDynamicLoader";
86
86
  *
87
87
  * this.viewer.syncOptions();
88
88
  * this.viewer.syncOverlay();
89
- * this.viewer.update();
90
89
  *
91
90
  * this.viewer.emitEvent({ type: "geometryprogress", data: 1, file });
92
91
  * this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
93
92
  *
93
+ * this.viewer.update(true);
94
+ *
94
95
  * return Promise.resove(this);
95
96
  * };
96
97
  *