@inweb/viewer-three 26.12.7 → 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.
- package/dist/extensions/components/InfoPanelComponent.js +7 -9
- package/dist/extensions/components/InfoPanelComponent.js.map +1 -1
- package/dist/extensions/components/InfoPanelComponent.min.js +1 -1
- package/dist/extensions/components/InfoPanelComponent.module.js +7 -9
- package/dist/extensions/components/InfoPanelComponent.module.js.map +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.js +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.js.map +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.min.js +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.module.js +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.module.js.map +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.js +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.js.map +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.min.js +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.module.js +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.module.js.map +1 -1
- package/dist/extensions/loaders/IFCXLoader.js +2 -2
- package/dist/extensions/loaders/IFCXLoader.js.map +1 -1
- package/dist/extensions/loaders/IFCXLoader.min.js +1 -1
- package/dist/extensions/loaders/IFCXLoader.module.js +2 -2
- package/dist/extensions/loaders/IFCXLoader.module.js.map +1 -1
- package/dist/extensions/loaders/PotreeLoader.js +1 -1
- package/dist/extensions/loaders/PotreeLoader.js.map +1 -1
- package/dist/extensions/loaders/PotreeLoader.min.js +1 -1
- package/dist/extensions/loaders/PotreeLoader.module.js +1 -1
- package/dist/extensions/loaders/PotreeLoader.module.js.map +1 -1
- package/dist/viewer-three.js +40 -37
- package/dist/viewer-three.js.map +1 -1
- package/dist/viewer-three.min.js +3 -3
- package/dist/viewer-three.module.js +40 -37
- package/dist/viewer-three.module.js.map +1 -1
- package/extensions/components/InfoPanelComponent.ts +8 -11
- package/extensions/loaders/GLTFCloudLoader.ts +1 -1
- package/extensions/loaders/GLTFFileLoader.ts +1 -1
- package/extensions/loaders/IFCX/IFCXCloudLoader.ts +1 -1
- package/extensions/loaders/IFCX/IFCXFileLoader.ts +1 -1
- package/extensions/loaders/Potree/PotreeFileLoader.ts +1 -1
- package/lib/Viewer/Viewer.d.ts +1 -0
- package/lib/Viewer/commands/CreatePreview.d.ts +1 -1
- package/lib/Viewer/components/RenderLoopComponent.d.ts +1 -1
- package/lib/Viewer/draggers/FlyDragger.d.ts +1 -0
- package/lib/Viewer/draggers/WalkDragger.d.ts +1 -0
- package/lib/Viewer/loaders/index.d.ts +2 -1
- package/package.json +5 -5
- package/src/Viewer/Viewer.ts +34 -25
- package/src/Viewer/commands/CreatePreview.ts +2 -2
- package/src/Viewer/components/InfoComponent.ts +4 -4
- package/src/Viewer/components/RenderLoopComponent.ts +2 -2
- package/src/Viewer/draggers/FlyDragger.ts +8 -1
- package/src/Viewer/draggers/WalkDragger.ts +8 -1
- package/src/Viewer/loaders/DynamicGltfLoader/DynamicGltfLoader.js +2 -12
- package/src/Viewer/loaders/GLTFCloudDynamicLoader.ts +2 -2
- package/src/Viewer/loaders/GLTFFileDynamicLoader.ts +2 -2
- package/src/Viewer/loaders/index.ts +2 -1
|
@@ -1910,11 +1910,13 @@ class WalkDragger {
|
|
|
1910
1910
|
};
|
|
1911
1911
|
this.viewerRender = () => {
|
|
1912
1912
|
this.joyStickControls.update();
|
|
1913
|
-
this.controls.update();
|
|
1914
1913
|
};
|
|
1915
1914
|
this.viewerZoom = () => {
|
|
1916
1915
|
this.controls.rotateDelta.set(0, 0);
|
|
1917
1916
|
};
|
|
1917
|
+
this.animate = () => {
|
|
1918
|
+
this.controls.update();
|
|
1919
|
+
};
|
|
1918
1920
|
const meshOnlyGround = [];
|
|
1919
1921
|
viewer.models.forEach((model) => model.getVisibleObjects().forEach((obj) => {
|
|
1920
1922
|
if (obj instanceof Mesh) {
|
|
@@ -1927,12 +1929,14 @@ class WalkDragger {
|
|
|
1927
1929
|
this.joyStickControls = new JoyStickControls(viewer.camera, viewer.canvas, viewer.canvas, meshOnlyGround);
|
|
1928
1930
|
this.joyStickControls.addEventListener("change", this.controlsChange);
|
|
1929
1931
|
this.viewer = viewer;
|
|
1932
|
+
this.viewer.addEventListener("animate", this.animate);
|
|
1930
1933
|
this.viewer.addEventListener("render", this.viewerRender);
|
|
1931
1934
|
this.viewer.addEventListener("zoom", this.viewerZoom);
|
|
1932
1935
|
this.viewer.addEventListener("changecameramode", this.updateControlsCamera);
|
|
1933
1936
|
this.updateControls();
|
|
1934
1937
|
}
|
|
1935
1938
|
dispose() {
|
|
1939
|
+
this.viewer.removeEventListener("animate", this.animate);
|
|
1936
1940
|
this.viewer.removeEventListener("render", this.viewerRender);
|
|
1937
1941
|
this.viewer.removeEventListener("zoom", this.viewerZoom);
|
|
1938
1942
|
this.viewer.removeEventListener("changecameramode", this.updateControlsCamera);
|
|
@@ -2112,23 +2116,27 @@ class FlyDragger {
|
|
|
2112
2116
|
};
|
|
2113
2117
|
this.viewerRender = () => {
|
|
2114
2118
|
this.joyStickControls.update();
|
|
2115
|
-
this.controls.update();
|
|
2116
2119
|
};
|
|
2117
2120
|
this.viewerZoom = () => {
|
|
2118
2121
|
this.controls.rotateDelta.set(0, 0);
|
|
2119
2122
|
};
|
|
2123
|
+
this.animate = () => {
|
|
2124
|
+
this.controls.update();
|
|
2125
|
+
};
|
|
2120
2126
|
this.controls = new FlyControls(viewer.camera, viewer.canvas);
|
|
2121
2127
|
this.controls.addEventListener("change", this.controlsChange);
|
|
2122
2128
|
this.controls.addEventListener("flyspeedchange", this.flyspeedChange);
|
|
2123
2129
|
this.joyStickControls = new JoyStickControls(viewer.camera, viewer.canvas, viewer.canvas, []);
|
|
2124
2130
|
this.joyStickControls.addEventListener("change", this.controlsChange);
|
|
2125
2131
|
this.viewer = viewer;
|
|
2132
|
+
this.viewer.addEventListener("animate", this.animate);
|
|
2126
2133
|
this.viewer.addEventListener("render", this.viewerRender);
|
|
2127
2134
|
this.viewer.addEventListener("zoom", this.viewerZoom);
|
|
2128
2135
|
this.viewer.addEventListener("changecameramode", this.updateControlsCamera);
|
|
2129
2136
|
this.updateControls();
|
|
2130
2137
|
}
|
|
2131
2138
|
dispose() {
|
|
2139
|
+
this.viewer.removeEventListener("animate", this.animate);
|
|
2132
2140
|
this.viewer.removeEventListener("render", this.viewerRender);
|
|
2133
2141
|
this.viewer.removeEventListener("zoom", this.viewerZoom);
|
|
2134
2142
|
this.viewer.removeEventListener("changecameramode", this.updateControlsCamera);
|
|
@@ -2178,9 +2186,9 @@ function clearSlices(viewer) {
|
|
|
2178
2186
|
viewer.clearSlices();
|
|
2179
2187
|
}
|
|
2180
2188
|
|
|
2181
|
-
function createPreview(viewer, type = "image/jpeg",
|
|
2189
|
+
function createPreview(viewer, type = "image/jpeg", quality = 0.25) {
|
|
2182
2190
|
viewer.update(true);
|
|
2183
|
-
return viewer.canvas.toDataURL(type,
|
|
2191
|
+
return viewer.canvas.toDataURL(type, quality);
|
|
2184
2192
|
}
|
|
2185
2193
|
|
|
2186
2194
|
function explode(viewer, index = 0) {
|
|
@@ -2727,9 +2735,9 @@ class InfoComponent {
|
|
|
2727
2735
|
console.log("File load time:", this.viewer.info.performance.loadTime, "ms");
|
|
2728
2736
|
};
|
|
2729
2737
|
this.resize = () => {
|
|
2730
|
-
const
|
|
2731
|
-
this.viewer.info.render.viewport.width =
|
|
2732
|
-
this.viewer.info.render.viewport.height =
|
|
2738
|
+
const { width, height } = this.viewer.canvas;
|
|
2739
|
+
this.viewer.info.render.viewport.width = width;
|
|
2740
|
+
this.viewer.info.render.viewport.height = height;
|
|
2733
2741
|
};
|
|
2734
2742
|
this.render = () => {
|
|
2735
2743
|
this.viewer.info.render.drawCalls = this.viewer.renderer.info.render.calls;
|
|
@@ -2778,13 +2786,13 @@ class InfoComponent {
|
|
|
2778
2786
|
|
|
2779
2787
|
class RenderLoopComponent {
|
|
2780
2788
|
constructor(viewer) {
|
|
2781
|
-
this.animate = (time
|
|
2789
|
+
this.animate = (time) => {
|
|
2782
2790
|
this.requestId = requestAnimationFrame(this.animate);
|
|
2783
2791
|
this.viewer.render(time);
|
|
2784
2792
|
this.viewer.emitEvent({ type: "animate", time });
|
|
2785
2793
|
};
|
|
2786
2794
|
this.viewer = viewer;
|
|
2787
|
-
this.animate
|
|
2795
|
+
this.requestId = requestAnimationFrame(this.animate);
|
|
2788
2796
|
}
|
|
2789
2797
|
dispose() {
|
|
2790
2798
|
cancelAnimationFrame(this.requestId);
|
|
@@ -4285,8 +4293,6 @@ class DynamicGltfLoader {
|
|
|
4285
4293
|
this.frameDelay = 0;
|
|
4286
4294
|
this.graphicsObjectLimit = 10000;
|
|
4287
4295
|
this.totalLoadedObjects = 0;
|
|
4288
|
-
this.lastUpdateTime = 0;
|
|
4289
|
-
this.updateInterval = 1000;
|
|
4290
4296
|
this.handleToObjects = new Map();
|
|
4291
4297
|
this.originalObjects = new Set();
|
|
4292
4298
|
this.originalObjectsToSelection = new Set();
|
|
@@ -4962,11 +4968,7 @@ class DynamicGltfLoader {
|
|
|
4962
4968
|
loaded: loadedCount,
|
|
4963
4969
|
total: totalNodes,
|
|
4964
4970
|
});
|
|
4965
|
-
|
|
4966
|
-
if (currentTime - this.lastUpdateTime >= this.updateInterval) {
|
|
4967
|
-
this.dispatchEvent("update");
|
|
4968
|
-
this.lastUpdateTime = currentTime;
|
|
4969
|
-
}
|
|
4971
|
+
this.dispatchEvent("update");
|
|
4970
4972
|
await new Promise((resolve) => {
|
|
4971
4973
|
setTimeout(resolve, 0);
|
|
4972
4974
|
});
|
|
@@ -5306,7 +5308,6 @@ class DynamicGltfLoader {
|
|
|
5306
5308
|
this.objectTransforms.clear();
|
|
5307
5309
|
this.transformedGeometries.clear();
|
|
5308
5310
|
this.totalLoadedObjects = 0;
|
|
5309
|
-
this.lastUpdateTime = 0;
|
|
5310
5311
|
this.currentMemoryUsage = 0;
|
|
5311
5312
|
this.loadedGeometrySize = 0;
|
|
5312
5313
|
this.abortController = new AbortController();
|
|
@@ -5417,9 +5418,7 @@ class DynamicGltfLoader {
|
|
|
5417
5418
|
}
|
|
5418
5419
|
yieldToUI() {
|
|
5419
5420
|
return new Promise((resolve) => {
|
|
5420
|
-
|
|
5421
|
-
setTimeout(resolve, 0);
|
|
5422
|
-
});
|
|
5421
|
+
setTimeout(resolve, 0);
|
|
5423
5422
|
});
|
|
5424
5423
|
}
|
|
5425
5424
|
async optimizeScene() {
|
|
@@ -6422,13 +6421,13 @@ class GLTFFileDynamicLoader extends Loader {
|
|
|
6422
6421
|
this.viewer.models.push(modelImpl);
|
|
6423
6422
|
this.viewer.syncOptions();
|
|
6424
6423
|
this.viewer.syncOverlay();
|
|
6425
|
-
this.viewer.update();
|
|
6426
6424
|
this.viewer.emitEvent({ type: "databasechunk", data: scene, file });
|
|
6425
|
+
this.viewer.update(true);
|
|
6427
6426
|
});
|
|
6428
6427
|
this.gltfLoader.addEventListener("geometryerror", (data) => {
|
|
6429
6428
|
this.viewer.emitEvent({ type: "geometryerror", data, file });
|
|
6430
6429
|
});
|
|
6431
|
-
this.gltfLoader.addEventListener("update", (
|
|
6430
|
+
this.gltfLoader.addEventListener("update", () => {
|
|
6432
6431
|
this.viewer.update();
|
|
6433
6432
|
});
|
|
6434
6433
|
const loadController = {
|
|
@@ -6510,13 +6509,13 @@ class GLTFCloudDynamicLoader extends Loader {
|
|
|
6510
6509
|
this.viewer.models.push(modelImpl);
|
|
6511
6510
|
this.viewer.syncOptions();
|
|
6512
6511
|
this.viewer.syncOverlay();
|
|
6513
|
-
this.viewer.update();
|
|
6514
6512
|
this.viewer.emitEvent({ type: "databasechunk", data: scene, file: model.file, model });
|
|
6513
|
+
this.viewer.update(true);
|
|
6515
6514
|
});
|
|
6516
6515
|
this.gltfLoader.addEventListener("geometryerror", (data) => {
|
|
6517
6516
|
this.viewer.emitEvent({ type: "geometryerror", data, file: model.file, model });
|
|
6518
6517
|
});
|
|
6519
|
-
this.gltfLoader.addEventListener("update", (
|
|
6518
|
+
this.gltfLoader.addEventListener("update", () => {
|
|
6520
6519
|
this.viewer.update();
|
|
6521
6520
|
});
|
|
6522
6521
|
const loadController = {
|
|
@@ -6774,6 +6773,7 @@ class Viewer extends EventEmitter2 {
|
|
|
6774
6773
|
this.target = new Vector3(0, 0, 0);
|
|
6775
6774
|
this._activeDragger = null;
|
|
6776
6775
|
this._components = [];
|
|
6776
|
+
this._updateDelay = 1000;
|
|
6777
6777
|
this._renderNeeded = false;
|
|
6778
6778
|
this._renderTime = 0;
|
|
6779
6779
|
this.render = this.render.bind(this);
|
|
@@ -6839,11 +6839,13 @@ class Viewer extends EventEmitter2 {
|
|
|
6839
6839
|
this.syncOptions();
|
|
6840
6840
|
this.syncOverlay();
|
|
6841
6841
|
this._renderTime = performance.now();
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
onProgress(
|
|
6842
|
+
if (typeof onProgress === "function") {
|
|
6843
|
+
const event = new ProgressEvent("progress", { lengthComputable: true, loaded: 1, total: 1 });
|
|
6844
|
+
onProgress(event);
|
|
6845
|
+
}
|
|
6845
6846
|
this.emitEvent({ type: "initializeprogress", data: 1, loaded: 1, total: 1 });
|
|
6846
6847
|
this.emitEvent({ type: "initialize" });
|
|
6848
|
+
this.update(true);
|
|
6847
6849
|
return Promise.resolve(this);
|
|
6848
6850
|
}
|
|
6849
6851
|
dispose() {
|
|
@@ -6907,14 +6909,16 @@ class Viewer extends EventEmitter2 {
|
|
|
6907
6909
|
}
|
|
6908
6910
|
this.renderer.setSize(width, height, updateStyle);
|
|
6909
6911
|
this.composer.setSize(width, height);
|
|
6910
|
-
this.update(true);
|
|
6911
6912
|
this.emitEvent({ type: "resize", width, height });
|
|
6913
|
+
this.update(true);
|
|
6912
6914
|
}
|
|
6913
6915
|
update(force = false) {
|
|
6916
|
+
const time = performance.now();
|
|
6917
|
+
force = force || time - this._renderTime >= this._updateDelay;
|
|
6914
6918
|
this._renderNeeded = true;
|
|
6915
6919
|
if (force)
|
|
6916
|
-
this.render();
|
|
6917
|
-
this.emitEvent({ type: "update",
|
|
6920
|
+
this.render(time);
|
|
6921
|
+
this.emitEvent({ type: "update", force });
|
|
6918
6922
|
}
|
|
6919
6923
|
render(time, force = false) {
|
|
6920
6924
|
var _a, _b;
|
|
@@ -6982,6 +6986,7 @@ class Viewer extends EventEmitter2 {
|
|
|
6982
6986
|
throw error;
|
|
6983
6987
|
}
|
|
6984
6988
|
this.emitEvent({ type: "geometryend", file, model });
|
|
6989
|
+
this.update(true);
|
|
6985
6990
|
return this;
|
|
6986
6991
|
}
|
|
6987
6992
|
openGltfFile(file, externalFiles, params = {}) {
|
|
@@ -7014,8 +7019,8 @@ class Viewer extends EventEmitter2 {
|
|
|
7014
7019
|
this.target.set(0, 0, 0);
|
|
7015
7020
|
this.syncOptions();
|
|
7016
7021
|
this.syncOverlay();
|
|
7017
|
-
this.update(true);
|
|
7018
7022
|
this.emitEvent({ type: "clear" });
|
|
7023
|
+
this.update(true);
|
|
7019
7024
|
return this;
|
|
7020
7025
|
}
|
|
7021
7026
|
is3D() {
|
|
@@ -7203,7 +7208,7 @@ class Viewer extends EventEmitter2 {
|
|
|
7203
7208
|
this.syncOverlay();
|
|
7204
7209
|
this.setActiveDragger(draggerName);
|
|
7205
7210
|
this.emitEvent({ type: "drawviewpoint", data: viewpoint });
|
|
7206
|
-
this.update();
|
|
7211
|
+
this.update(true);
|
|
7207
7212
|
}
|
|
7208
7213
|
createViewpoint() {
|
|
7209
7214
|
if (!this.renderer)
|
|
@@ -7284,11 +7289,9 @@ class Viewer extends EventEmitter2 {
|
|
|
7284
7289
|
}
|
|
7285
7290
|
return { x: intersectionPoint.x, y: intersectionPoint.y, z: intersectionPoint.z };
|
|
7286
7291
|
}
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
|
|
7290
|
-
return { x: point.x, y: point.y, z: point.z };
|
|
7291
|
-
}
|
|
7292
|
+
const point = new Vector3(x, y, -1);
|
|
7293
|
+
point.unproject(this.camera);
|
|
7294
|
+
return { x: point.x, y: point.y, z: point.z };
|
|
7292
7295
|
}
|
|
7293
7296
|
worldToScreen(position) {
|
|
7294
7297
|
if (!this.renderer)
|