@inweb/viewer-visualize 26.9.1 → 26.9.3
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/viewer-visualize.js +1439 -1367
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +274 -239
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Components/ResizeCanvasComponent.d.ts +1 -1
- package/lib/Viewer/Loaders/index.d.ts +1 -2
- package/lib/Viewer/Viewer.d.ts +6 -4
- package/package.json +5 -5
- package/src/Viewer/Commands/ApplyModelTransform.ts +1 -1
- package/src/Viewer/Commands/AutoTransformAllModelsToCentralPoint.ts +1 -1
- package/src/Viewer/Commands/SetSelected.ts +1 -1
- package/src/Viewer/Components/ResizeCanvasComponent.ts +6 -2
- package/src/Viewer/Draggers/Actions/OrbitAction.ts +6 -0
- package/src/Viewer/Draggers/Actions/PanAction.ts +3 -0
- package/src/Viewer/Draggers/Actions/ZoomAction.ts +4 -0
- package/src/Viewer/Draggers/OdaWalkDragger.ts +4 -0
- package/src/Viewer/Loaders/VSFCloudLoader.ts +10 -9
- package/src/Viewer/Loaders/VSFFileLoader.ts +12 -7
- package/src/Viewer/Loaders/VSFXCloudLoader.ts +4 -6
- package/src/Viewer/Loaders/VSFXCloudPartialLoader.ts +6 -11
- package/src/Viewer/Loaders/VSFXCloudStreamingLoader.ts +7 -11
- package/src/Viewer/Loaders/VSFXFileLoader.ts +12 -7
- package/src/Viewer/Loaders/index.ts +1 -2
- package/src/Viewer/Markup/Visualize/VisualizeMarkup.ts +2 -2
- package/src/Viewer/Viewer.ts +95 -79
|
@@ -14,7 +14,7 @@ class OdaGeAction {
|
|
|
14
14
|
var _a;
|
|
15
15
|
const extView = this.m_module.getViewer().getActiveTvExtendedView();
|
|
16
16
|
extView.setView(params.position, params.target, params.upVector, params.viewFieldWidth, params.viewFieldHeight, params.perspective);
|
|
17
|
-
(_a = extView.delete) === null || _a ===
|
|
17
|
+
(_a = extView.delete) === null || _a === void 0 ? void 0 : _a.call(extView);
|
|
18
18
|
};
|
|
19
19
|
this.getViewParams = () => {
|
|
20
20
|
var _a;
|
|
@@ -27,7 +27,7 @@ class OdaGeAction {
|
|
|
27
27
|
viewFieldHeight: view.viewFieldHeight,
|
|
28
28
|
perspective: view.perspective
|
|
29
29
|
};
|
|
30
|
-
(_a = view.delete) === null || _a ===
|
|
30
|
+
(_a = view.delete) === null || _a === void 0 ? void 0 : _a.call(view);
|
|
31
31
|
return obj;
|
|
32
32
|
};
|
|
33
33
|
this.m_module = module;
|
|
@@ -132,13 +132,13 @@ class OdBaseDragger extends OdaGeAction {
|
|
|
132
132
|
this.canvasEvents = CANVAS_EVENTS;
|
|
133
133
|
}
|
|
134
134
|
initialize() {
|
|
135
|
-
this.canvasEvents = this.canvasEvents.filter(
|
|
136
|
-
this.canvasEvents.forEach(
|
|
137
|
-
this.canvasEvents.forEach(
|
|
135
|
+
this.canvasEvents = this.canvasEvents.filter(x => typeof this[x] === "function");
|
|
136
|
+
this.canvasEvents.forEach(x => this[x] = this[x].bind(this));
|
|
137
|
+
this.canvasEvents.forEach(x => this.subject.on(x, this[x]));
|
|
138
138
|
this.getViewer().setEnableAutoSelect(!!this.autoSelect);
|
|
139
139
|
}
|
|
140
140
|
dispose() {
|
|
141
|
-
this.canvasEvents.forEach(
|
|
141
|
+
this.canvasEvents.forEach(x => this.subject.off(x, this[x]));
|
|
142
142
|
}
|
|
143
143
|
relativeCoords(event) {
|
|
144
144
|
return {
|
|
@@ -249,7 +249,7 @@ class OdBaseDragger extends OdaGeAction {
|
|
|
249
249
|
deleteAll(objects) {
|
|
250
250
|
var _a;
|
|
251
251
|
for (const obj of objects) {
|
|
252
|
-
(_a = obj === null || obj ===
|
|
252
|
+
(_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
updatePreview() {}
|
|
@@ -618,7 +618,7 @@ class MeasureLineDragger extends OdBaseDragger {
|
|
|
618
618
|
};
|
|
619
619
|
this.items = [];
|
|
620
620
|
this.canvasEvents.push("resize");
|
|
621
|
-
this.oldRulerUnit = (_a = subject.options.rulerUnit) !== null && _a !==
|
|
621
|
+
this.oldRulerUnit = (_a = subject.options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
|
|
622
622
|
this.optionsChange = this.optionsChange.bind(this);
|
|
623
623
|
}
|
|
624
624
|
initialize() {
|
|
@@ -638,7 +638,7 @@ class MeasureLineDragger extends OdBaseDragger {
|
|
|
638
638
|
this.subject.removeEventListener("optionschange", this.optionsChange);
|
|
639
639
|
}
|
|
640
640
|
updatePreview() {
|
|
641
|
-
this.items.forEach(
|
|
641
|
+
this.items.forEach(item => item.update());
|
|
642
642
|
}
|
|
643
643
|
resize() {
|
|
644
644
|
const rect = this.m_module.canvas.getBoundingClientRect();
|
|
@@ -727,13 +727,13 @@ class MeasureLineDragger extends OdBaseDragger {
|
|
|
727
727
|
optionsChange(event) {
|
|
728
728
|
var _a;
|
|
729
729
|
const options = event.data;
|
|
730
|
-
const toUnitName = (_a = options.rulerUnit) !== null && _a !==
|
|
730
|
+
const toUnitName = (_a = options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
|
|
731
731
|
if (this.oldRulerUnit === toUnitName) return;
|
|
732
732
|
this.oldRulerUnit = toUnitName;
|
|
733
733
|
const drawingUnit = this.m_module.getViewer().getUnit();
|
|
734
734
|
const eToUnit = this.getKUnitByName(toUnitName);
|
|
735
735
|
const eFromUnit = this.getKUnitByName(drawingUnit);
|
|
736
|
-
this.items.forEach(
|
|
736
|
+
this.items.forEach(item => {
|
|
737
737
|
if (toUnitName === "Default") {
|
|
738
738
|
item.setUnit(renameUnit(this.renameUnitTable, drawingUnit));
|
|
739
739
|
item.setConversionFactor(1);
|
|
@@ -743,7 +743,7 @@ class MeasureLineDragger extends OdBaseDragger {
|
|
|
743
743
|
this.conversionFactor = 1 / multiplier;
|
|
744
744
|
item.setConversionFactor(this.conversionFactor);
|
|
745
745
|
}
|
|
746
|
-
})
|
|
746
|
+
});
|
|
747
747
|
}
|
|
748
748
|
getKUnitByName(unitName) {
|
|
749
749
|
let eUnit = this.m_module.Units.kUserDefined;
|
|
@@ -852,7 +852,7 @@ class OdaWalkDragger extends OdBaseDragger {
|
|
|
852
852
|
const model = this.viewer.getActiveModel();
|
|
853
853
|
model.removeEntity(this.cameraId);
|
|
854
854
|
model.delete();
|
|
855
|
-
(_a = this.cameraWalker) === null || _a ===
|
|
855
|
+
(_a = this.cameraWalker) === null || _a === void 0 ? void 0 : _a.delete();
|
|
856
856
|
}
|
|
857
857
|
if (this.viewParams) {
|
|
858
858
|
this.setViewParams(this.viewParams);
|
|
@@ -938,6 +938,9 @@ class OdaWalkDragger extends OdBaseDragger {
|
|
|
938
938
|
}
|
|
939
939
|
}
|
|
940
940
|
this.subject.update();
|
|
941
|
+
this.subject.emitEvent({
|
|
942
|
+
type: "changecamera"
|
|
943
|
+
});
|
|
941
944
|
}
|
|
942
945
|
this.lastFrameTS = timestamp;
|
|
943
946
|
}
|
|
@@ -958,6 +961,9 @@ class OdaWalkDragger extends OdBaseDragger {
|
|
|
958
961
|
if (dltX !== 0) this.turnLeft(-dltX * this.deltaAngle);
|
|
959
962
|
if (dltY !== 0) this.cameraWalker.turnDown(dltY * this.deltaAngle);
|
|
960
963
|
this.subject.update();
|
|
964
|
+
this.subject.emitEvent({
|
|
965
|
+
type: "changecamera"
|
|
966
|
+
});
|
|
961
967
|
}
|
|
962
968
|
}
|
|
963
969
|
turnLeft(angle) {
|
|
@@ -1207,7 +1213,13 @@ class OrbitAction {
|
|
|
1207
1213
|
const extView = this.getViewer().getActiveTvExtendedView();
|
|
1208
1214
|
extView.setView(viewParams.position, viewParams.target, viewParams.upVector, viewParams.viewFieldWidth, viewParams.viewFieldHeight, viewParams.perspective);
|
|
1209
1215
|
extView.delete();
|
|
1210
|
-
(_b = (_a = this._subject.activeDragger()) === null || _a ===
|
|
1216
|
+
(_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1217
|
+
this._subject.emitEvent({
|
|
1218
|
+
type: "orbit"
|
|
1219
|
+
});
|
|
1220
|
+
this._subject.emitEvent({
|
|
1221
|
+
type: "changecamera"
|
|
1222
|
+
});
|
|
1211
1223
|
}
|
|
1212
1224
|
endAction() {
|
|
1213
1225
|
this._endInteractivity();
|
|
@@ -1312,7 +1324,7 @@ class OrbitAction {
|
|
|
1312
1324
|
deleteAll(objects) {
|
|
1313
1325
|
var _a;
|
|
1314
1326
|
for (const obj of objects) {
|
|
1315
|
-
(_a = obj === null || obj ===
|
|
1327
|
+
(_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
|
|
1316
1328
|
}
|
|
1317
1329
|
}
|
|
1318
1330
|
}
|
|
@@ -1379,7 +1391,7 @@ class PanAction {
|
|
|
1379
1391
|
targetWithDelta.delete();
|
|
1380
1392
|
position.delete();
|
|
1381
1393
|
positionWithDelta.delete();
|
|
1382
|
-
(_b = (_a = this._subject.activeDragger()) === null || _a ===
|
|
1394
|
+
(_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1383
1395
|
this._subject.emitEvent({
|
|
1384
1396
|
type: "pan",
|
|
1385
1397
|
x: absoluteX,
|
|
@@ -1387,6 +1399,9 @@ class PanAction {
|
|
|
1387
1399
|
dX: absoluteX - this._deltaScreenPosition.x,
|
|
1388
1400
|
dY: absoluteY - this._deltaScreenPosition.y
|
|
1389
1401
|
});
|
|
1402
|
+
this._subject.emitEvent({
|
|
1403
|
+
type: "changecamera"
|
|
1404
|
+
});
|
|
1390
1405
|
this._deltaScreenPosition = {
|
|
1391
1406
|
x: absoluteX,
|
|
1392
1407
|
y: absoluteY
|
|
@@ -1432,13 +1447,16 @@ class ZoomAction {
|
|
|
1432
1447
|
const viewer = this._m_module.getViewer();
|
|
1433
1448
|
viewer.zoomAt(zoomFactor, x, y);
|
|
1434
1449
|
this._subject.deviceAutoRegeneration();
|
|
1435
|
-
(_b = (_a = this._subject.activeDragger()) === null || _a ===
|
|
1450
|
+
(_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1436
1451
|
this._subject.emitEvent({
|
|
1437
1452
|
type: "zoomat",
|
|
1438
1453
|
data: zoomFactor,
|
|
1439
1454
|
x: absoluteX,
|
|
1440
1455
|
y: absoluteY
|
|
1441
1456
|
});
|
|
1457
|
+
this._subject.emitEvent({
|
|
1458
|
+
type: "changecamera"
|
|
1459
|
+
});
|
|
1442
1460
|
}
|
|
1443
1461
|
}
|
|
1444
1462
|
|
|
@@ -1510,11 +1528,11 @@ class OdZoomWheelDragger extends OdBaseDragger {
|
|
|
1510
1528
|
clearTimeout(this._endInteractivityTimeOutId);
|
|
1511
1529
|
}
|
|
1512
1530
|
this.subject.update(true);
|
|
1513
|
-
this._endInteractivityTimeOutId = setTimeout((
|
|
1531
|
+
this._endInteractivityTimeOutId = setTimeout(() => {
|
|
1514
1532
|
this._endInteractivityTimeOutId = undefined;
|
|
1515
1533
|
this.endInteractivity();
|
|
1516
1534
|
this._isEnableInteractivityMode = false;
|
|
1517
|
-
}
|
|
1535
|
+
}, INTERACTIVITY_TIME_OUT);
|
|
1518
1536
|
}
|
|
1519
1537
|
}
|
|
1520
1538
|
dispose() {
|
|
@@ -1743,27 +1761,27 @@ class OrbitAroundBuildingDragger extends OdBaseDragger {
|
|
|
1743
1761
|
|
|
1744
1762
|
const draggers = draggersRegistry("visualizejs");
|
|
1745
1763
|
|
|
1746
|
-
draggers.registerDragger("Pan",
|
|
1764
|
+
draggers.registerDragger("Pan", viewer => new OdPanDragger(viewer));
|
|
1747
1765
|
|
|
1748
|
-
draggers.registerDragger("Orbit",
|
|
1766
|
+
draggers.registerDragger("Orbit", viewer => new OdOrbitDragger(viewer));
|
|
1749
1767
|
|
|
1750
|
-
draggers.registerDragger("Zoom",
|
|
1768
|
+
draggers.registerDragger("Zoom", viewer => new OdZoomDragger(viewer));
|
|
1751
1769
|
|
|
1752
|
-
draggers.registerDragger("ZoomWindow",
|
|
1770
|
+
draggers.registerDragger("ZoomWindow", viewer => new OdZoomWindowDragger(viewer));
|
|
1753
1771
|
|
|
1754
|
-
draggers.registerDragger("ZoomWheel",
|
|
1772
|
+
draggers.registerDragger("ZoomWheel", viewer => new OdZoomWheelDragger(viewer));
|
|
1755
1773
|
|
|
1756
|
-
draggers.registerDragger("OrbitAroundBuilding",
|
|
1774
|
+
draggers.registerDragger("OrbitAroundBuilding", viewer => new OrbitAroundBuildingDragger(viewer));
|
|
1757
1775
|
|
|
1758
|
-
draggers.registerDragger("MeasureLine",
|
|
1776
|
+
draggers.registerDragger("MeasureLine", viewer => new MeasureLineDragger(viewer));
|
|
1759
1777
|
|
|
1760
|
-
draggers.registerDragger("CuttingPlaneXAxis",
|
|
1778
|
+
draggers.registerDragger("CuttingPlaneXAxis", viewer => new OdCuttingPlaneXAxisDragger(viewer));
|
|
1761
1779
|
|
|
1762
|
-
draggers.registerDragger("CuttingPlaneYAxis",
|
|
1780
|
+
draggers.registerDragger("CuttingPlaneYAxis", viewer => new OdCuttingPlaneYAxisDragger(viewer));
|
|
1763
1781
|
|
|
1764
|
-
draggers.registerDragger("CuttingPlaneZAxis",
|
|
1782
|
+
draggers.registerDragger("CuttingPlaneZAxis", viewer => new OdCuttingPlaneZAxisDragger(viewer));
|
|
1765
1783
|
|
|
1766
|
-
draggers.registerDragger("Walk",
|
|
1784
|
+
draggers.registerDragger("Walk", viewer => new OdaWalkDragger(viewer));
|
|
1767
1785
|
|
|
1768
1786
|
const composeMatrixFromTransform = (transform, modelCenter, visLib) => {
|
|
1769
1787
|
const {translate: translate, scale: scale, rotation: rotation} = transform;
|
|
@@ -1781,7 +1799,7 @@ function applyModelTransform(viewer, model) {
|
|
|
1781
1799
|
if (!viewer.visualizeJs) return;
|
|
1782
1800
|
if (!model.getModelTransformMatrix) return;
|
|
1783
1801
|
const visLib = viewer.visLib();
|
|
1784
|
-
const visViewer =
|
|
1802
|
+
const visViewer = viewer.visViewer();
|
|
1785
1803
|
const modelItr = visViewer.getModelIterator();
|
|
1786
1804
|
for (;!modelItr.done(); modelItr.step()) {
|
|
1787
1805
|
const modelPtr = modelItr.getModel();
|
|
@@ -1794,7 +1812,7 @@ function applyModelTransform(viewer, model) {
|
|
|
1794
1812
|
}
|
|
1795
1813
|
}
|
|
1796
1814
|
modelItr.delete();
|
|
1797
|
-
(_a = visViewer.clearViewExtentsCache) === null || _a ===
|
|
1815
|
+
(_a = visViewer.clearViewExtentsCache) === null || _a === void 0 ? void 0 : _a.call(visViewer);
|
|
1798
1816
|
viewer.update();
|
|
1799
1817
|
}
|
|
1800
1818
|
|
|
@@ -1821,7 +1839,7 @@ function clearSlices(viewer) {
|
|
|
1821
1839
|
function createPreview(viewer, type = "image/jpeg", encoderOptions = .25) {
|
|
1822
1840
|
var _a;
|
|
1823
1841
|
if (!viewer.visualizeJs) return "";
|
|
1824
|
-
return ((_a = viewer.canvas) === null || _a ===
|
|
1842
|
+
return ((_a = viewer.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, encoderOptions)) || "";
|
|
1825
1843
|
}
|
|
1826
1844
|
|
|
1827
1845
|
function explode(viewer, index = 0) {
|
|
@@ -1843,7 +1861,7 @@ function getDefaultViewPositions(viewer) {
|
|
|
1843
1861
|
if (!viewer.visualizeJs) return [];
|
|
1844
1862
|
const visLib = viewer.visLib();
|
|
1845
1863
|
const defViewPos = visLib.DefaultViewPosition;
|
|
1846
|
-
return Object.keys(defViewPos).filter(
|
|
1864
|
+
return Object.keys(defViewPos).filter(x => x !== "values");
|
|
1847
1865
|
}
|
|
1848
1866
|
|
|
1849
1867
|
function getModels(viewer) {
|
|
@@ -1979,12 +1997,12 @@ function setMarkupColor(viewer, r = 255, g = 0, b = 0) {
|
|
|
1979
1997
|
function setSelected(viewer, handles = []) {
|
|
1980
1998
|
if (!viewer.visualizeJs) return;
|
|
1981
1999
|
const visLib = viewer.visLib();
|
|
1982
|
-
const visViewer =
|
|
2000
|
+
const visViewer = viewer.visViewer();
|
|
1983
2001
|
const selectionSet = new visLib.OdTvSelectionSet;
|
|
1984
|
-
handles === null || handles ===
|
|
2002
|
+
handles === null || handles === void 0 ? void 0 : handles.forEach(handle => {
|
|
1985
2003
|
const entityId = visViewer.getEntityByOriginalHandle(handle + "");
|
|
1986
2004
|
if (!entityId.isNull()) selectionSet.appendEntity(entityId);
|
|
1987
|
-
})
|
|
2005
|
+
});
|
|
1988
2006
|
visViewer.setSelected(selectionSet);
|
|
1989
2007
|
viewer.update();
|
|
1990
2008
|
viewer.emitEvent({
|
|
@@ -2026,11 +2044,11 @@ function zoomToObjects(viewer, handles = []) {
|
|
|
2026
2044
|
const visLib = viewer.visLib();
|
|
2027
2045
|
const visViewer = viewer.visViewer();
|
|
2028
2046
|
const selectionSet = new visLib.OdTvSelectionSet;
|
|
2029
|
-
handles.forEach(
|
|
2047
|
+
handles.forEach(handle => {
|
|
2030
2048
|
const entityId = visViewer.getEntityByOriginalHandle(handle + "");
|
|
2031
2049
|
if (!entityId.isNull()) selectionSet.appendEntity(entityId);
|
|
2032
|
-
})
|
|
2033
|
-
(_a = visViewer.zoomToObjects) === null || _a ===
|
|
2050
|
+
});
|
|
2051
|
+
(_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
|
|
2034
2052
|
viewer.deviceAutoRegeneration();
|
|
2035
2053
|
viewer.update();
|
|
2036
2054
|
viewer.emitEvent({
|
|
@@ -2044,7 +2062,7 @@ function zoomToSelected(viewer) {
|
|
|
2044
2062
|
if (!viewer.visualizeJs) return;
|
|
2045
2063
|
const visViewer = viewer.visViewer();
|
|
2046
2064
|
const selectionSet = visViewer.getSelected();
|
|
2047
|
-
(_a = visViewer.zoomToObjects) === null || _a ===
|
|
2065
|
+
(_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
|
|
2048
2066
|
viewer.deviceAutoRegeneration();
|
|
2049
2067
|
viewer.update();
|
|
2050
2068
|
viewer.emitEvent({
|
|
@@ -2061,7 +2079,7 @@ async function autoTransformAllModelsToCentralPoint(viewer, model) {
|
|
|
2061
2079
|
if (!viewer.visualizeJs) return;
|
|
2062
2080
|
if (!model.getModelTransformMatrix) return;
|
|
2063
2081
|
const visLib = viewer.visLib();
|
|
2064
|
-
const visViewer =
|
|
2082
|
+
const visViewer = viewer.visViewer();
|
|
2065
2083
|
const viewExt = visViewer.getActiveExtents();
|
|
2066
2084
|
const centralPoint = viewExt.center();
|
|
2067
2085
|
const modelItr = visViewer.getModelIterator();
|
|
@@ -2102,7 +2120,7 @@ async function autoTransformAllModelsToCentralPoint(viewer, model) {
|
|
|
2102
2120
|
modelPtr.delete();
|
|
2103
2121
|
}
|
|
2104
2122
|
modelItr.delete();
|
|
2105
|
-
(_a = visViewer.clearViewExtentsCache) === null || _a ===
|
|
2123
|
+
(_a = visViewer.clearViewExtentsCache) === null || _a === void 0 ? void 0 : _a.call(visViewer);
|
|
2106
2124
|
viewer.update();
|
|
2107
2125
|
}
|
|
2108
2126
|
|
|
@@ -2156,25 +2174,25 @@ commands.registerCommand("zoomToSelected", zoomToSelected);
|
|
|
2156
2174
|
|
|
2157
2175
|
commands.registerCommand("autoTransformAllModelsToCentralPoint", autoTransformAllModelsToCentralPoint);
|
|
2158
2176
|
|
|
2159
|
-
commands.registerCommand("k3DViewTop",
|
|
2177
|
+
commands.registerCommand("k3DViewTop", viewer => setDefaultViewPosition(viewer, "k3DViewTop"));
|
|
2160
2178
|
|
|
2161
|
-
commands.registerCommand("k3DViewBottom",
|
|
2179
|
+
commands.registerCommand("k3DViewBottom", viewer => setDefaultViewPosition(viewer, "k3DViewBottom"));
|
|
2162
2180
|
|
|
2163
|
-
commands.registerCommand("k3DViewLeft",
|
|
2181
|
+
commands.registerCommand("k3DViewLeft", viewer => setDefaultViewPosition(viewer, "k3DViewLeft"));
|
|
2164
2182
|
|
|
2165
|
-
commands.registerCommand("k3DViewRight",
|
|
2183
|
+
commands.registerCommand("k3DViewRight", viewer => setDefaultViewPosition(viewer, "k3DViewRight"));
|
|
2166
2184
|
|
|
2167
|
-
commands.registerCommand("k3DViewFront",
|
|
2185
|
+
commands.registerCommand("k3DViewFront", viewer => setDefaultViewPosition(viewer, "k3DViewFront"));
|
|
2168
2186
|
|
|
2169
|
-
commands.registerCommand("k3DViewBack",
|
|
2187
|
+
commands.registerCommand("k3DViewBack", viewer => setDefaultViewPosition(viewer, "k3DViewBack"));
|
|
2170
2188
|
|
|
2171
|
-
commands.registerCommand("k3DViewSE",
|
|
2189
|
+
commands.registerCommand("k3DViewSE", viewer => setDefaultViewPosition(viewer, "k3DViewSE"));
|
|
2172
2190
|
|
|
2173
|
-
commands.registerCommand("k3DViewSW",
|
|
2191
|
+
commands.registerCommand("k3DViewSW", viewer => setDefaultViewPosition(viewer, "k3DViewSW"));
|
|
2174
2192
|
|
|
2175
|
-
commands.registerCommand("k3DViewNE",
|
|
2193
|
+
commands.registerCommand("k3DViewNE", viewer => setDefaultViewPosition(viewer, "k3DViewNE"));
|
|
2176
2194
|
|
|
2177
|
-
commands.registerCommand("k3DViewNW",
|
|
2195
|
+
commands.registerCommand("k3DViewNW", viewer => setDefaultViewPosition(viewer, "k3DViewNW"));
|
|
2178
2196
|
|
|
2179
2197
|
commands.registerCommandAlias("clearMarkup", "clearOverlay");
|
|
2180
2198
|
|
|
@@ -2202,8 +2220,10 @@ class RenderLoopComponent {
|
|
|
2202
2220
|
|
|
2203
2221
|
class ResizeCanvasComponent {
|
|
2204
2222
|
constructor(viewer) {
|
|
2205
|
-
this.resizeViewer =
|
|
2206
|
-
|
|
2223
|
+
this.resizeViewer = entries => {
|
|
2224
|
+
const {width: width, height: height} = entries[0].contentRect;
|
|
2225
|
+
if (!width || !height) return;
|
|
2226
|
+
this.viewer.setSize(width, height);
|
|
2207
2227
|
};
|
|
2208
2228
|
this.viewer = viewer;
|
|
2209
2229
|
this.resizeObserver = new ResizeObserver(this.resizeViewer);
|
|
@@ -2417,13 +2437,13 @@ class GestureManagerComponent {
|
|
|
2417
2437
|
|
|
2418
2438
|
const components = componentsRegistry("visualizejs");
|
|
2419
2439
|
|
|
2420
|
-
components.registerComponent("ResizeCanvasComponent",
|
|
2440
|
+
components.registerComponent("ResizeCanvasComponent", viewer => new ResizeCanvasComponent(viewer));
|
|
2421
2441
|
|
|
2422
|
-
components.registerComponent("RenderLoopComponent",
|
|
2442
|
+
components.registerComponent("RenderLoopComponent", viewer => new RenderLoopComponent(viewer));
|
|
2423
2443
|
|
|
2424
|
-
components.registerComponent("ZoomWheelComponent",
|
|
2444
|
+
components.registerComponent("ZoomWheelComponent", viewer => new ZoomWheelComponent(viewer));
|
|
2425
2445
|
|
|
2426
|
-
components.registerComponent("GestureManagerComponent",
|
|
2446
|
+
components.registerComponent("GestureManagerComponent", viewer => new GestureManagerComponent(viewer));
|
|
2427
2447
|
|
|
2428
2448
|
class FileLoader {
|
|
2429
2449
|
constructor() {
|
|
@@ -2447,7 +2467,7 @@ class FileLoader {
|
|
|
2447
2467
|
credentials: this.withCredentials ? "include" : "same-origin",
|
|
2448
2468
|
signal: this.abortSignal
|
|
2449
2469
|
});
|
|
2450
|
-
return fetch(request).then(
|
|
2470
|
+
return fetch(request).then(response => {
|
|
2451
2471
|
if (!response.ok) throw new Error(`Failed to fetch "${response.url}", status ${response.status}`);
|
|
2452
2472
|
const contentLength = response.headers.get("X-File-Size") || response.headers.get("Content-Length");
|
|
2453
2473
|
const total = parseInt(contentLength || "", 10) || 0;
|
|
@@ -2477,16 +2497,16 @@ class FileLoader {
|
|
|
2477
2497
|
}
|
|
2478
2498
|
});
|
|
2479
2499
|
return new Response(stream);
|
|
2480
|
-
})
|
|
2500
|
+
}).then(response => response.arrayBuffer());
|
|
2481
2501
|
}
|
|
2482
2502
|
if (file instanceof globalThis.File) {
|
|
2483
|
-
return new Promise((
|
|
2503
|
+
return new Promise((resolve, reject) => {
|
|
2484
2504
|
const reader = new FileReader;
|
|
2485
2505
|
reader.onload = () => resolve(reader.result);
|
|
2486
2506
|
reader.onerror = () => reject(reader.error);
|
|
2487
2507
|
reader.onprogress = onProgress;
|
|
2488
2508
|
reader.readAsArrayBuffer(new Blob([ file ]));
|
|
2489
|
-
})
|
|
2509
|
+
});
|
|
2490
2510
|
}
|
|
2491
2511
|
if (onProgress) {
|
|
2492
2512
|
const total = file.byteLength;
|
|
@@ -2512,6 +2532,7 @@ class VSFFileLoader extends Loader {
|
|
|
2512
2532
|
}
|
|
2513
2533
|
async load(file, format, params) {
|
|
2514
2534
|
if (!this.viewer.visualizeJs) return this;
|
|
2535
|
+
const visViewer = this.viewer.visViewer();
|
|
2515
2536
|
const progress = event => {
|
|
2516
2537
|
const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
|
|
2517
2538
|
const progress = lengthComputable ? loaded / total : 1;
|
|
@@ -2525,15 +2546,18 @@ class VSFFileLoader extends Loader {
|
|
|
2525
2546
|
loader.setRequestHeader(params.requestHeader);
|
|
2526
2547
|
loader.setWithCredentials(params.withCredentials);
|
|
2527
2548
|
loader.setAbortSignal(this.abortController.signal);
|
|
2528
|
-
const
|
|
2529
|
-
const data = new Uint8Array(
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2549
|
+
const arrayBuffer = await loader.load(file, progress);
|
|
2550
|
+
const data = new Uint8Array(arrayBuffer);
|
|
2551
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2552
|
+
try {
|
|
2553
|
+
visViewer.parseFile(data);
|
|
2554
|
+
} catch (error) {
|
|
2555
|
+
console.error("VSF parse error.", error);
|
|
2556
|
+
throw error;
|
|
2557
|
+
}
|
|
2534
2558
|
this.viewer.syncOptions();
|
|
2535
2559
|
this.viewer.syncOverlay();
|
|
2536
|
-
this.viewer.
|
|
2560
|
+
this.viewer.update(true);
|
|
2537
2561
|
this.viewer.emitEvent({
|
|
2538
2562
|
type: "databasechunk",
|
|
2539
2563
|
data: data,
|
|
@@ -2553,8 +2577,7 @@ class VSFCloudLoader extends Loader {
|
|
|
2553
2577
|
}
|
|
2554
2578
|
async load(model, format) {
|
|
2555
2579
|
if (!this.viewer.visualizeJs) return this;
|
|
2556
|
-
const
|
|
2557
|
-
const visViewer = visLib.getViewer();
|
|
2580
|
+
const visViewer = this.viewer.visViewer();
|
|
2558
2581
|
const filesToDownload = [ model.database, ...model.geometry ];
|
|
2559
2582
|
console.time("File load time");
|
|
2560
2583
|
for (let i = 0; i < filesToDownload.length; i++) {
|
|
@@ -2569,15 +2592,18 @@ class VSFCloudLoader extends Loader {
|
|
|
2569
2592
|
});
|
|
2570
2593
|
};
|
|
2571
2594
|
const arrayBuffer = await model.downloadResource(dataId, progress, this.abortController.signal);
|
|
2572
|
-
if (!this.viewer.visualizeJs) return this;
|
|
2573
2595
|
const data = new Uint8Array(arrayBuffer);
|
|
2574
|
-
|
|
2596
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2597
|
+
try {
|
|
2598
|
+
visViewer.parseStream(data);
|
|
2599
|
+
} catch (error) {
|
|
2600
|
+
console.error("VSF parse error.", error);
|
|
2601
|
+
throw error;
|
|
2602
|
+
}
|
|
2575
2603
|
if (i === 0) {
|
|
2576
|
-
this.viewer.update(true);
|
|
2577
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2578
2604
|
this.viewer.syncOptions();
|
|
2579
2605
|
this.viewer.syncOverlay();
|
|
2580
|
-
this.viewer.
|
|
2606
|
+
this.viewer.update(true);
|
|
2581
2607
|
this.viewer.emitEvent({
|
|
2582
2608
|
type: "databasechunk",
|
|
2583
2609
|
data: data,
|
|
@@ -2609,6 +2635,7 @@ class VSFXFileLoader extends Loader {
|
|
|
2609
2635
|
}
|
|
2610
2636
|
async load(file, format, params) {
|
|
2611
2637
|
if (!this.viewer.visualizeJs) return this;
|
|
2638
|
+
const visViewer = this.viewer.visViewer();
|
|
2612
2639
|
const progress = event => {
|
|
2613
2640
|
const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
|
|
2614
2641
|
const progress = lengthComputable ? loaded / total : 1;
|
|
@@ -2622,15 +2649,18 @@ class VSFXFileLoader extends Loader {
|
|
|
2622
2649
|
loader.setRequestHeader(params.requestHeader);
|
|
2623
2650
|
loader.setWithCredentials(params.withCredentials);
|
|
2624
2651
|
loader.setAbortSignal(this.abortController.signal);
|
|
2625
|
-
const
|
|
2626
|
-
const data = new Uint8Array(
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2652
|
+
const arrayBuffer = await loader.load(file, progress);
|
|
2653
|
+
const data = new Uint8Array(arrayBuffer);
|
|
2654
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2655
|
+
try {
|
|
2656
|
+
visViewer.parseVsfx(data);
|
|
2657
|
+
} catch (error) {
|
|
2658
|
+
console.error("VSFX parse error.", error);
|
|
2659
|
+
throw error;
|
|
2660
|
+
}
|
|
2631
2661
|
this.viewer.syncOptions();
|
|
2632
2662
|
this.viewer.syncOverlay();
|
|
2633
|
-
this.viewer.
|
|
2663
|
+
this.viewer.update(true);
|
|
2634
2664
|
this.viewer.emitEvent({
|
|
2635
2665
|
type: "databasechunk",
|
|
2636
2666
|
data: data,
|
|
@@ -2650,8 +2680,7 @@ class VSFXCloudLoader extends Loader {
|
|
|
2650
2680
|
}
|
|
2651
2681
|
async load(model, format, params = {}) {
|
|
2652
2682
|
if (!this.viewer.visualizeJs) return Promise.resolve(this);
|
|
2653
|
-
const
|
|
2654
|
-
const visViewer = visLib.getViewer();
|
|
2683
|
+
const visViewer = this.viewer.visViewer();
|
|
2655
2684
|
const progress = progress => {
|
|
2656
2685
|
this.viewer.emitEvent({
|
|
2657
2686
|
type: "geometryprogress",
|
|
@@ -2662,18 +2691,17 @@ class VSFXCloudLoader extends Loader {
|
|
|
2662
2691
|
};
|
|
2663
2692
|
console.time("File load time");
|
|
2664
2693
|
const arrayBuffer = await model.downloadResource(model.database, progress, this.abortController.signal);
|
|
2665
|
-
if (!this.viewer.visualizeJs) return this;
|
|
2666
2694
|
const data = new Uint8Array(arrayBuffer);
|
|
2695
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2667
2696
|
try {
|
|
2668
2697
|
visViewer.parseVsfx(data);
|
|
2669
2698
|
} catch (error) {
|
|
2670
2699
|
console.error("VSFX parse error.", error);
|
|
2671
2700
|
throw error;
|
|
2672
2701
|
}
|
|
2673
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2674
2702
|
this.viewer.syncOptions();
|
|
2675
2703
|
this.viewer.syncOverlay();
|
|
2676
|
-
this.viewer.
|
|
2704
|
+
this.viewer.update(true);
|
|
2677
2705
|
this.viewer.emitEvent({
|
|
2678
2706
|
type: "databasechunk",
|
|
2679
2707
|
data: data,
|
|
@@ -2728,7 +2756,7 @@ class VSFXCloudStreamingLoader extends Loader {
|
|
|
2728
2756
|
async load(model) {
|
|
2729
2757
|
if (!this.viewer.visualizeJs) return this;
|
|
2730
2758
|
const visLib = this.viewer.visLib();
|
|
2731
|
-
const visViewer =
|
|
2759
|
+
const visViewer = this.viewer.visViewer();
|
|
2732
2760
|
const updateController = new UpdateController;
|
|
2733
2761
|
updateController.initialize(this.viewer);
|
|
2734
2762
|
let isFireDatabaseChunk = false;
|
|
@@ -2741,24 +2769,21 @@ class VSFXCloudStreamingLoader extends Loader {
|
|
|
2741
2769
|
console.error("VSFX parse error.", error);
|
|
2742
2770
|
throw error;
|
|
2743
2771
|
}
|
|
2744
|
-
updateController.update(UpdateType.kDelay);
|
|
2745
2772
|
this.viewer.emitEvent({
|
|
2746
2773
|
type: "geometryprogress",
|
|
2747
2774
|
data: progress,
|
|
2748
2775
|
file: model.file,
|
|
2749
2776
|
model: model
|
|
2750
2777
|
});
|
|
2751
|
-
let
|
|
2778
|
+
let isDatabaseChunk = false;
|
|
2752
2779
|
if (status === visLib.DatabaseStreamStatus.ReadyServiceData || status === visLib.DatabaseStreamStatus.Complete && !isFireDatabaseChunk) {
|
|
2753
2780
|
isFireDatabaseChunk = true;
|
|
2754
|
-
|
|
2781
|
+
isDatabaseChunk = true;
|
|
2755
2782
|
}
|
|
2756
|
-
if (
|
|
2757
|
-
updateController.update(UpdateType.kForce);
|
|
2758
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2783
|
+
if (isDatabaseChunk) {
|
|
2759
2784
|
this.viewer.syncOptions();
|
|
2760
2785
|
this.viewer.syncOverlay();
|
|
2761
|
-
|
|
2786
|
+
updateController.update(UpdateType.kForce);
|
|
2762
2787
|
this.viewer.emitEvent({
|
|
2763
2788
|
type: "databasechunk",
|
|
2764
2789
|
data: chunk,
|
|
@@ -2766,6 +2791,7 @@ class VSFXCloudStreamingLoader extends Loader {
|
|
|
2766
2791
|
model: model
|
|
2767
2792
|
});
|
|
2768
2793
|
} else {
|
|
2794
|
+
updateController.update(UpdateType.kDelay);
|
|
2769
2795
|
this.viewer.emitEvent({
|
|
2770
2796
|
type: "geometrychunk",
|
|
2771
2797
|
data: chunk,
|
|
@@ -2797,8 +2823,7 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2797
2823
|
}
|
|
2798
2824
|
async load(model, format) {
|
|
2799
2825
|
if (!this.viewer.visualizeJs) return this;
|
|
2800
|
-
const
|
|
2801
|
-
const visViewer = visLib.getViewer();
|
|
2826
|
+
const visViewer = this.viewer.visViewer();
|
|
2802
2827
|
let servicePartAborted = false;
|
|
2803
2828
|
const pendingRequestsMap = new Map;
|
|
2804
2829
|
let pendingRequestsTimerId = 0;
|
|
@@ -2810,26 +2835,23 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2810
2835
|
visViewer.memoryLimit = this.viewer.options.memoryLimit;
|
|
2811
2836
|
const chunkLoadHandler = (progress, chunk, requestId = 0) => {
|
|
2812
2837
|
if (!this.viewer.visualizeJs) return;
|
|
2813
|
-
let
|
|
2838
|
+
let isDatabaseChunk;
|
|
2814
2839
|
try {
|
|
2815
|
-
|
|
2840
|
+
isDatabaseChunk = visViewer.parseVsfxInPartialMode(requestId, chunk);
|
|
2816
2841
|
} catch (error) {
|
|
2817
2842
|
console.error("VSFX parse error.", error);
|
|
2818
2843
|
throw error;
|
|
2819
2844
|
}
|
|
2820
|
-
updateController.update(UpdateType.kDelay);
|
|
2821
2845
|
this.viewer.emitEvent({
|
|
2822
2846
|
type: "geometryprogress",
|
|
2823
2847
|
data: progress,
|
|
2824
2848
|
file: model.file,
|
|
2825
2849
|
model: model
|
|
2826
2850
|
});
|
|
2827
|
-
if (
|
|
2828
|
-
updateController.update(UpdateType.kForce);
|
|
2829
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2851
|
+
if (isDatabaseChunk) {
|
|
2830
2852
|
this.viewer.syncOptions();
|
|
2831
2853
|
this.viewer.syncOverlay();
|
|
2832
|
-
|
|
2854
|
+
updateController.update(UpdateType.kForce);
|
|
2833
2855
|
this.viewer.emitEvent({
|
|
2834
2856
|
type: "databasechunk",
|
|
2835
2857
|
data: chunk,
|
|
@@ -2837,6 +2859,7 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2837
2859
|
model: model
|
|
2838
2860
|
});
|
|
2839
2861
|
} else {
|
|
2862
|
+
updateController.update(UpdateType.kDelay);
|
|
2840
2863
|
this.viewer.emitEvent({
|
|
2841
2864
|
type: "geometrychunk",
|
|
2842
2865
|
data: chunk,
|
|
@@ -2858,7 +2881,7 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2858
2881
|
model: model
|
|
2859
2882
|
});
|
|
2860
2883
|
} finally {
|
|
2861
|
-
ranges.forEach(
|
|
2884
|
+
ranges.forEach(range => visViewer.onRequestResponseComplete(range.requestId));
|
|
2862
2885
|
this.abortControllerForRequestMap.delete(requestId);
|
|
2863
2886
|
updateController.update(UpdateType.kNormal);
|
|
2864
2887
|
}
|
|
@@ -2934,10 +2957,10 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2934
2957
|
number: requestNumber + 1
|
|
2935
2958
|
});
|
|
2936
2959
|
if (pendingRequestsTimerId === 0) {
|
|
2937
|
-
pendingRequestsTimerId = window.setTimeout((
|
|
2960
|
+
pendingRequestsTimerId = window.setTimeout(() => {
|
|
2938
2961
|
pendingRequestsAbortController.signal.removeEventListener("abort", pendingRequestsAbortHandler);
|
|
2939
2962
|
pendingRequestsTimerId = 0;
|
|
2940
|
-
pendingRequestsMap.forEach((
|
|
2963
|
+
pendingRequestsMap.forEach((request, dataId) => {
|
|
2941
2964
|
if (request.ranges.length > 0) {
|
|
2942
2965
|
pendingRequestsMap.set(dataId, {
|
|
2943
2966
|
ranges: [],
|
|
@@ -2945,8 +2968,8 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2945
2968
|
});
|
|
2946
2969
|
downloadResourceRange(dataId, requestId, request.ranges);
|
|
2947
2970
|
}
|
|
2948
|
-
})
|
|
2949
|
-
}
|
|
2971
|
+
});
|
|
2972
|
+
}, PENDING_REQUESTS_TIMEOUT);
|
|
2950
2973
|
pendingRequestsAbortController.signal.addEventListener("abort", pendingRequestsAbortHandler, {
|
|
2951
2974
|
once: true
|
|
2952
2975
|
});
|
|
@@ -2964,26 +2987,26 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2964
2987
|
}
|
|
2965
2988
|
cancel() {
|
|
2966
2989
|
super.cancel();
|
|
2967
|
-
this.abortControllerForRequestMap.forEach(
|
|
2990
|
+
this.abortControllerForRequestMap.forEach(controller => controller.abort());
|
|
2968
2991
|
}
|
|
2969
2992
|
}
|
|
2970
2993
|
|
|
2971
2994
|
const loaders = loadersRegistry("visualizejs");
|
|
2972
2995
|
|
|
2973
|
-
loaders.registerLoader("vsf-file",
|
|
2996
|
+
loaders.registerLoader("vsf-file", viewer => new VSFFileLoader(viewer));
|
|
2974
2997
|
|
|
2975
|
-
loaders.registerLoader("vsf-cloud",
|
|
2998
|
+
loaders.registerLoader("vsf-cloud", viewer => new VSFCloudLoader(viewer));
|
|
2976
2999
|
|
|
2977
|
-
loaders.registerLoader("vsfx-file",
|
|
3000
|
+
loaders.registerLoader("vsfx-file", viewer => new VSFXFileLoader(viewer));
|
|
2978
3001
|
|
|
2979
|
-
loaders.registerLoader("vsfx-cloud",
|
|
3002
|
+
loaders.registerLoader("vsfx-cloud", viewer => new VSFXCloudLoader(viewer));
|
|
2980
3003
|
|
|
2981
|
-
loaders.registerLoader("vsfx-cloud-streaming",
|
|
3004
|
+
loaders.registerLoader("vsfx-cloud-streaming", viewer => new VSFXCloudStreamingLoader(viewer));
|
|
2982
3005
|
|
|
2983
|
-
loaders.registerLoader("vsfx-cloud-partial",
|
|
3006
|
+
loaders.registerLoader("vsfx-cloud-partial", viewer => new VSFXCloudPartialLoader(viewer));
|
|
2984
3007
|
|
|
2985
3008
|
function loadScript(url, params = {}) {
|
|
2986
|
-
return new Promise((
|
|
3009
|
+
return new Promise((resolve, reject) => {
|
|
2987
3010
|
const script = document.createElement("script");
|
|
2988
3011
|
script.src = url;
|
|
2989
3012
|
script.async = true;
|
|
@@ -2994,7 +3017,7 @@ function loadScript(url, params = {}) {
|
|
|
2994
3017
|
reject(new Error(`GET ${url} failed to load script`));
|
|
2995
3018
|
};
|
|
2996
3019
|
document.body.appendChild(script);
|
|
2997
|
-
})
|
|
3020
|
+
});
|
|
2998
3021
|
}
|
|
2999
3022
|
|
|
3000
3023
|
function loadVisuazlizeJsScript(url, params) {
|
|
@@ -3011,7 +3034,7 @@ function loadVisuazlizeJsScript(url, params) {
|
|
|
3011
3034
|
|
|
3012
3035
|
const loadVisualizeJs = async (url, onprogress, params = {}) => {
|
|
3013
3036
|
const script = await loadVisuazlizeJsScript(url, params);
|
|
3014
|
-
return await new Promise((
|
|
3037
|
+
return await new Promise((resolve, reject) => {
|
|
3015
3038
|
const options = {
|
|
3016
3039
|
urlMemFile: url + ".wasm",
|
|
3017
3040
|
TOTAL_MEMORY: 134217728,
|
|
@@ -3019,11 +3042,11 @@ const loadVisualizeJs = async (url, onprogress, params = {}) => {
|
|
|
3019
3042
|
};
|
|
3020
3043
|
const instance = window["getVisualizeLibInst"](options);
|
|
3021
3044
|
instance.loadWasmError = reject;
|
|
3022
|
-
instance.postRun.push((
|
|
3045
|
+
instance.postRun.push(() => {
|
|
3023
3046
|
window["getVisualizeLibInst"].script = script;
|
|
3024
3047
|
resolve(instance);
|
|
3025
|
-
})
|
|
3026
|
-
})
|
|
3048
|
+
});
|
|
3049
|
+
});
|
|
3027
3050
|
};
|
|
3028
3051
|
|
|
3029
3052
|
const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
|
|
@@ -3082,7 +3105,7 @@ class OdaTextDragger extends OdBaseDragger {
|
|
|
3082
3105
|
dispose() {
|
|
3083
3106
|
var _a;
|
|
3084
3107
|
super.dispose();
|
|
3085
|
-
(_a = this.textRef) === null || _a ===
|
|
3108
|
+
(_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
|
|
3086
3109
|
this.textRef = null;
|
|
3087
3110
|
}
|
|
3088
3111
|
_finishInput() {
|
|
@@ -3090,7 +3113,7 @@ class OdaTextDragger extends OdBaseDragger {
|
|
|
3090
3113
|
if (this.textRef && this.textRef.value.trimLeft()) {
|
|
3091
3114
|
this._updateFrame();
|
|
3092
3115
|
}
|
|
3093
|
-
(_a = this.textRef) === null || _a ===
|
|
3116
|
+
(_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
|
|
3094
3117
|
this.textRef = null;
|
|
3095
3118
|
}
|
|
3096
3119
|
start(x, y, absoluteX, absoluteY) {
|
|
@@ -3134,7 +3157,7 @@ class OdaTextDragger extends OdBaseDragger {
|
|
|
3134
3157
|
const projMtrx = view.projectionMatrix;
|
|
3135
3158
|
const mtrxNumber = projMtrx.get(1, 1);
|
|
3136
3159
|
const tol = 1e-6;
|
|
3137
|
-
if (!(mtrxNumber < tol && mtrxNumber > -
|
|
3160
|
+
if (!(mtrxNumber < tol && mtrxNumber > -tol)) {
|
|
3138
3161
|
textScale = 1 / mtrxNumber;
|
|
3139
3162
|
}
|
|
3140
3163
|
const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());
|
|
@@ -3216,7 +3239,7 @@ class VisualizeMarkup {
|
|
|
3216
3239
|
}
|
|
3217
3240
|
if (!this._viewer.visualizeJs) return;
|
|
3218
3241
|
const visLib = this._viewer.visLib();
|
|
3219
|
-
const visViewer =
|
|
3242
|
+
const visViewer = this._viewer.visViewer();
|
|
3220
3243
|
const activeView = visViewer.activeView;
|
|
3221
3244
|
this._viewer.syncOverlay();
|
|
3222
3245
|
const markupColor = viewpoint.custom_fields.markup_color || {
|
|
@@ -3267,7 +3290,7 @@ class VisualizeMarkup {
|
|
|
3267
3290
|
};
|
|
3268
3291
|
}
|
|
3269
3292
|
const visLib = this._viewer.visLib();
|
|
3270
|
-
const visViewer =
|
|
3293
|
+
const visViewer = this._viewer.visViewer();
|
|
3271
3294
|
if (!viewpoint) viewpoint = {};
|
|
3272
3295
|
viewpoint.lines = [];
|
|
3273
3296
|
viewpoint.texts = [];
|
|
@@ -3370,8 +3393,8 @@ class Viewer extends EventEmitter2 {
|
|
|
3370
3393
|
this._renderTime = 0;
|
|
3371
3394
|
this.canvasEvents = CANVAS_EVENTS.slice();
|
|
3372
3395
|
this.canvaseventlistener = event => this.emit(event);
|
|
3373
|
-
this._enableAutoUpdate = (_a = params.enableAutoUpdate) !== null && _a !==
|
|
3374
|
-
this.
|
|
3396
|
+
this._enableAutoUpdate = (_a = params.enableAutoUpdate) !== null && _a !== void 0 ? _a : true;
|
|
3397
|
+
this._renderNeeded = false;
|
|
3375
3398
|
this._isRunAsyncUpdate = false;
|
|
3376
3399
|
this.render = this.render.bind(this);
|
|
3377
3400
|
this.update = this.update.bind(this);
|
|
@@ -3392,18 +3415,19 @@ class Viewer extends EventEmitter2 {
|
|
|
3392
3415
|
return this;
|
|
3393
3416
|
}
|
|
3394
3417
|
async initialize(canvas, onProgress) {
|
|
3395
|
-
this.addEventListener("optionschange",
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3418
|
+
this.addEventListener("optionschange", event => this.syncOptions(event.data));
|
|
3419
|
+
const rect = canvas.parentElement.getBoundingClientRect();
|
|
3420
|
+
const width = rect.width || 1;
|
|
3421
|
+
const height = rect.height || 1;
|
|
3422
|
+
canvas.width = Math.round(width * window.devicePixelRatio);
|
|
3423
|
+
canvas.height = Math.round(height * window.devicePixelRatio);
|
|
3424
|
+
canvas.style.width = width + "px";
|
|
3425
|
+
canvas.style.height = height + "px";
|
|
3400
3426
|
canvas.parentElement.style.touchAction = "none";
|
|
3401
3427
|
canvas.style.touchAction = "none";
|
|
3402
|
-
canvas.width = canvas.clientWidth * window.devicePixelRatio;
|
|
3403
|
-
canvas.height = canvas.clientHeight * window.devicePixelRatio;
|
|
3404
3428
|
this._visualizeTimestamp = Date.now();
|
|
3405
3429
|
const visualizeTimestamp = this._visualizeTimestamp;
|
|
3406
|
-
const visualizeJs = await loadVisualizeJs(this.visualizeJsUrl,
|
|
3430
|
+
const visualizeJs = await loadVisualizeJs(this.visualizeJsUrl, event => {
|
|
3407
3431
|
const {loaded: loaded, total: total} = event;
|
|
3408
3432
|
if (onProgress) onProgress(new ProgressEvent("progress", {
|
|
3409
3433
|
lengthComputable: true,
|
|
@@ -3416,21 +3440,20 @@ class Viewer extends EventEmitter2 {
|
|
|
3416
3440
|
loaded: loaded,
|
|
3417
3441
|
total: total
|
|
3418
3442
|
});
|
|
3419
|
-
}
|
|
3443
|
+
}, {
|
|
3420
3444
|
crossOrigin: this._crossOrigin
|
|
3421
3445
|
});
|
|
3422
3446
|
if (visualizeTimestamp !== this._visualizeTimestamp) throw new Error("Viewer error: dispose() was called before initialize() completed. Are you using React strict mode?");
|
|
3423
3447
|
this._visualizeJs = visualizeJs;
|
|
3424
|
-
this.
|
|
3425
|
-
this.visualizeJs.Viewer.create();
|
|
3426
|
-
this.
|
|
3448
|
+
this._visualizeJs.canvas = canvas;
|
|
3449
|
+
this._viewer = visualizeJs.Viewer.create();
|
|
3450
|
+
this._viewer.resize(0, canvas.width, canvas.height, 0);
|
|
3427
3451
|
this.canvas = canvas;
|
|
3428
|
-
this.canvasEvents.forEach(
|
|
3452
|
+
this.canvasEvents.forEach(x => canvas.addEventListener(x, this.canvaseventlistener));
|
|
3429
3453
|
this._markup.initialize(this.canvas, this.canvasEvents, this, this);
|
|
3430
3454
|
for (const name of components.getComponents().keys()) {
|
|
3431
3455
|
this._components.push(components.createComponent(name, this));
|
|
3432
3456
|
}
|
|
3433
|
-
this.syncOpenCloudVisualStyle(true);
|
|
3434
3457
|
this.syncOptions();
|
|
3435
3458
|
this.syncOverlay();
|
|
3436
3459
|
this._renderTime = performance.now();
|
|
@@ -3448,64 +3471,69 @@ class Viewer extends EventEmitter2 {
|
|
|
3448
3471
|
});
|
|
3449
3472
|
this.removeAllListeners();
|
|
3450
3473
|
this.setActiveDragger();
|
|
3451
|
-
this._components.forEach(
|
|
3474
|
+
this._components.forEach(component => component.dispose());
|
|
3452
3475
|
this._components = [];
|
|
3453
3476
|
this._markup.dispose();
|
|
3454
3477
|
if (this.canvas) {
|
|
3455
|
-
this.canvasEvents.forEach(
|
|
3478
|
+
this.canvasEvents.forEach(x => this.canvas.removeEventListener(x, this.canvaseventlistener));
|
|
3456
3479
|
this.canvas = undefined;
|
|
3457
3480
|
}
|
|
3458
|
-
if (this.
|
|
3481
|
+
if (this._viewer) this._viewer.clear();
|
|
3459
3482
|
this._visualizeJs = undefined;
|
|
3460
3483
|
this._visualizeTimestamp = undefined;
|
|
3484
|
+
this._viewer = undefined;
|
|
3461
3485
|
return this;
|
|
3462
3486
|
}
|
|
3463
3487
|
isInitialized() {
|
|
3464
3488
|
return !!this.visualizeJs;
|
|
3465
3489
|
}
|
|
3490
|
+
setSize(width, height, updateStyle = true) {
|
|
3491
|
+
if (!this.visualizeJs) return;
|
|
3492
|
+
this.canvas.width = Math.round(width * window.devicePixelRatio);
|
|
3493
|
+
this.canvas.height = Math.round(height * window.devicePixelRatio);
|
|
3494
|
+
if (updateStyle) {
|
|
3495
|
+
this.canvas.style.width = width + "px";
|
|
3496
|
+
this.canvas.style.height = height + "px";
|
|
3497
|
+
}
|
|
3498
|
+
this._viewer.resize(0, this.canvas.width, this.canvas.height, 0);
|
|
3499
|
+
this.update(true);
|
|
3500
|
+
this.emitEvent({
|
|
3501
|
+
type: "resize",
|
|
3502
|
+
width: width,
|
|
3503
|
+
height: height
|
|
3504
|
+
});
|
|
3505
|
+
}
|
|
3466
3506
|
render(time) {
|
|
3467
3507
|
var _a, _b;
|
|
3468
3508
|
if (!this.visualizeJs) return;
|
|
3469
3509
|
if (this._isRunAsyncUpdate) return;
|
|
3470
|
-
const
|
|
3471
|
-
if (
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
}
|
|
3510
|
+
const renderNeeded = this.visViewer().isRunningAnimation() || this._renderNeeded;
|
|
3511
|
+
if (!renderNeeded) return;
|
|
3512
|
+
if (!time) time = performance.now();
|
|
3513
|
+
const deltaTime = (time - this._renderTime) / 1e3;
|
|
3514
|
+
this._renderTime = time;
|
|
3515
|
+
this._renderNeeded = !this.visViewer().getActiveDevice().isValid();
|
|
3516
|
+
this.visViewer().update();
|
|
3517
|
+
(_b = (_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3518
|
+
this.emitEvent({
|
|
3519
|
+
type: "render",
|
|
3520
|
+
time: time,
|
|
3521
|
+
deltaTime: deltaTime
|
|
3522
|
+
});
|
|
3483
3523
|
}
|
|
3484
3524
|
resize() {
|
|
3525
|
+
console.warn("Viewer.resize() has been deprecated since 26.9 and will be removed in a future release, use Viewer.setSize() instead.");
|
|
3485
3526
|
if (!this.visualizeJs) return this;
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
this.
|
|
3490
|
-
const visViewer = this.visualizeJs.getViewer();
|
|
3491
|
-
visViewer.resize(0, this.canvas.width, this.canvas.height, 0);
|
|
3492
|
-
this.update(true);
|
|
3493
|
-
this.emitEvent({
|
|
3494
|
-
type: "resize",
|
|
3495
|
-
width: clientWidth,
|
|
3496
|
-
height: clientHeight
|
|
3497
|
-
});
|
|
3527
|
+
if (!this.canvas.parentElement) return this;
|
|
3528
|
+
const {width: width, height: height} = this.canvas.parentElement.getBoundingClientRect();
|
|
3529
|
+
if (!width || !height) return this;
|
|
3530
|
+
this.setSize(width, height);
|
|
3498
3531
|
return this;
|
|
3499
3532
|
}
|
|
3500
3533
|
update(force = false) {
|
|
3501
|
-
var _a, _b, _c;
|
|
3502
3534
|
if (this._enableAutoUpdate) {
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
(_c = (_b = this._activeDragger) === null || _b === undefined ? undefined : _b.updatePreview) === null || _c === undefined ? undefined : _c.call(_b);
|
|
3506
|
-
} else {
|
|
3507
|
-
this._isNeedRender = true;
|
|
3508
|
-
}
|
|
3535
|
+
this._renderNeeded = true;
|
|
3536
|
+
if (force) this.render();
|
|
3509
3537
|
}
|
|
3510
3538
|
this.emitEvent({
|
|
3511
3539
|
type: "update",
|
|
@@ -3513,8 +3541,8 @@ class Viewer extends EventEmitter2 {
|
|
|
3513
3541
|
});
|
|
3514
3542
|
}
|
|
3515
3543
|
scheduleUpdateAsync(maxScheduleUpdateTimeInMs = 50) {
|
|
3516
|
-
return new Promise((
|
|
3517
|
-
setTimeout((
|
|
3544
|
+
return new Promise((resolve, reject) => {
|
|
3545
|
+
setTimeout(() => {
|
|
3518
3546
|
var _a, _b, _c;
|
|
3519
3547
|
try {
|
|
3520
3548
|
if (this._enableAutoUpdate) {
|
|
@@ -3530,13 +3558,14 @@ class Viewer extends EventEmitter2 {
|
|
|
3530
3558
|
console.error(e);
|
|
3531
3559
|
reject();
|
|
3532
3560
|
}
|
|
3533
|
-
}
|
|
3534
|
-
})
|
|
3561
|
+
}, 0);
|
|
3562
|
+
});
|
|
3535
3563
|
}
|
|
3536
3564
|
async updateAsync(maxScheduleUpdateTimeInMs = 50, maxScheduleUpdateCount = 50) {
|
|
3565
|
+
if (!this.visualizeJs) return;
|
|
3537
3566
|
this._isRunAsyncUpdate = true;
|
|
3538
|
-
const device = this.visViewer().getActiveDevice();
|
|
3539
3567
|
try {
|
|
3568
|
+
const device = this.visViewer().getActiveDevice();
|
|
3540
3569
|
for (let iterationCount = 0; !device.isValid() && iterationCount < maxScheduleUpdateCount; iterationCount++) {
|
|
3541
3570
|
await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);
|
|
3542
3571
|
}
|
|
@@ -3551,16 +3580,15 @@ class Viewer extends EventEmitter2 {
|
|
|
3551
3580
|
return this._visualizeJs;
|
|
3552
3581
|
}
|
|
3553
3582
|
visLib() {
|
|
3554
|
-
return this.
|
|
3583
|
+
return this._visualizeJs;
|
|
3555
3584
|
}
|
|
3556
3585
|
visViewer() {
|
|
3557
|
-
|
|
3558
|
-
return (_a = this.visualizeJs) === null || _a === undefined ? undefined : _a.getViewer();
|
|
3586
|
+
return this._viewer;
|
|
3559
3587
|
}
|
|
3560
|
-
syncOpenCloudVisualStyle(
|
|
3588
|
+
syncOpenCloudVisualStyle() {
|
|
3561
3589
|
if (!this.visualizeJs) return this;
|
|
3562
3590
|
const visLib = this.visLib();
|
|
3563
|
-
const visViewer =
|
|
3591
|
+
const visViewer = this.visViewer();
|
|
3564
3592
|
const device = visViewer.getActiveDevice();
|
|
3565
3593
|
if (device.isNull()) return this;
|
|
3566
3594
|
const view = device.getActiveView();
|
|
@@ -3593,8 +3621,9 @@ class Viewer extends EventEmitter2 {
|
|
|
3593
3621
|
}
|
|
3594
3622
|
syncOptions(options = this.options) {
|
|
3595
3623
|
if (!this.visualizeJs) return this;
|
|
3624
|
+
this.syncOpenCloudVisualStyle();
|
|
3596
3625
|
const visLib = this.visLib();
|
|
3597
|
-
const visViewer =
|
|
3626
|
+
const visViewer = this.visViewer();
|
|
3598
3627
|
const device = visViewer.getActiveDevice();
|
|
3599
3628
|
if (device.isNull()) return this;
|
|
3600
3629
|
if (options.showWCS !== visViewer.getEnableWCS()) {
|
|
@@ -3611,7 +3640,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3611
3640
|
if (options.shadows !== visViewer.shadows) {
|
|
3612
3641
|
visViewer.shadows = options.shadows;
|
|
3613
3642
|
const canvas = visLib.canvas;
|
|
3614
|
-
device.invalidate([ 0, canvas.
|
|
3643
|
+
device.invalidate([ 0, canvas.width, canvas.height, 0 ]);
|
|
3615
3644
|
}
|
|
3616
3645
|
if (options.groundShadow !== visViewer.groundShadow) {
|
|
3617
3646
|
visViewer.groundShadow = options.groundShadow;
|
|
@@ -3646,7 +3675,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3646
3675
|
if (!this.visualizeJs) return this;
|
|
3647
3676
|
const params = options.enableCustomHighlight ? options : Options.defaults();
|
|
3648
3677
|
const visLib = this.visLib();
|
|
3649
|
-
const visViewer =
|
|
3678
|
+
const visViewer = this.visViewer();
|
|
3650
3679
|
const {Entry: Entry, OdTvRGBColorDef: OdTvRGBColorDef} = visLib;
|
|
3651
3680
|
const highlightStyleId = visViewer.findHighlightStyle("Web_Default");
|
|
3652
3681
|
const highlightStylePtr = highlightStyleId.openObject();
|
|
@@ -3676,7 +3705,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3676
3705
|
const device = visViewer.getActiveDevice();
|
|
3677
3706
|
if (!device.isNull()) {
|
|
3678
3707
|
const canvas = visLib.canvas;
|
|
3679
|
-
device.invalidate([ 0, canvas.
|
|
3708
|
+
device.invalidate([ 0, canvas.width, canvas.height, 0 ]);
|
|
3680
3709
|
device.delete();
|
|
3681
3710
|
}
|
|
3682
3711
|
return this;
|
|
@@ -3689,7 +3718,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3689
3718
|
}
|
|
3690
3719
|
registerDragger(name, dragger) {
|
|
3691
3720
|
console.warn("Viewer.registerDragger() has been deprecated since 25.12 and will be removed in a future release, use draggers('visualizejs').registerDragger() instead.");
|
|
3692
|
-
draggers.registerDragger(name,
|
|
3721
|
+
draggers.registerDragger(name, viewer => new dragger(viewer));
|
|
3693
3722
|
}
|
|
3694
3723
|
activeDragger() {
|
|
3695
3724
|
return this._activeDragger;
|
|
@@ -3707,7 +3736,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3707
3736
|
newDragger = draggers.createDragger(name, this);
|
|
3708
3737
|
if (newDragger) {
|
|
3709
3738
|
this._activeDragger = newDragger;
|
|
3710
|
-
(_b = (_a = this._activeDragger).initialize) === null || _b ===
|
|
3739
|
+
(_b = (_a = this._activeDragger).initialize) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3711
3740
|
}
|
|
3712
3741
|
}
|
|
3713
3742
|
const canvas = this.canvas;
|
|
@@ -3731,7 +3760,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3731
3760
|
}
|
|
3732
3761
|
}
|
|
3733
3762
|
getComponent(name) {
|
|
3734
|
-
return this._components.find(
|
|
3763
|
+
return this._components.find(component => component.name === name);
|
|
3735
3764
|
}
|
|
3736
3765
|
clearSlices() {
|
|
3737
3766
|
if (!this.visualizeJs) return;
|
|
@@ -3818,11 +3847,11 @@ class Viewer extends EventEmitter2 {
|
|
|
3818
3847
|
const projMatrix = this.visViewer().activeView.projectionMatrix;
|
|
3819
3848
|
const tolerance = 1e-6;
|
|
3820
3849
|
const x = projMatrix.get(0, 0);
|
|
3821
|
-
if (x > tolerance || x < -
|
|
3850
|
+
if (x > tolerance || x < -tolerance) result.x = 1 / x;
|
|
3822
3851
|
const y = projMatrix.get(1, 1);
|
|
3823
|
-
if (y > tolerance || y < -
|
|
3852
|
+
if (y > tolerance || y < -tolerance) result.y = 1 / y;
|
|
3824
3853
|
const z = projMatrix.get(2, 2);
|
|
3825
|
-
if (z > tolerance || z < -
|
|
3854
|
+
if (z > tolerance || z < -tolerance) result.z = 1 / z;
|
|
3826
3855
|
return result;
|
|
3827
3856
|
}
|
|
3828
3857
|
getSelected() {
|
|
@@ -3855,15 +3884,15 @@ class Viewer extends EventEmitter2 {
|
|
|
3855
3884
|
if (!this.client) return this;
|
|
3856
3885
|
if (!model.getReferences) return this;
|
|
3857
3886
|
const abortController = new AbortController;
|
|
3858
|
-
(_a = this._abortControllerForReferences) === null || _a ===
|
|
3887
|
+
(_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
|
|
3859
3888
|
this._abortControllerForReferences = abortController;
|
|
3860
3889
|
let references = [];
|
|
3861
|
-
await model.getReferences(abortController.signal).then(
|
|
3890
|
+
await model.getReferences(abortController.signal).then(data => references = data.references).catch(e => console.error("Cannot load model references.", e));
|
|
3862
3891
|
for (const file of references) {
|
|
3863
|
-
await this.client.downloadFile(file.id, undefined, abortController.signal).then(
|
|
3892
|
+
await this.client.downloadFile(file.id, undefined, abortController.signal).then(arrayBuffer => {
|
|
3864
3893
|
var _a;
|
|
3865
|
-
return (_a = this.visualizeJs) === null || _a ===
|
|
3866
|
-
})
|
|
3894
|
+
return (_a = this.visualizeJs) === null || _a === void 0 ? void 0 : _a.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer));
|
|
3895
|
+
}).catch(e => console.error(`Cannot load reference file ${file.name}.`, e));
|
|
3867
3896
|
}
|
|
3868
3897
|
return this;
|
|
3869
3898
|
}
|
|
@@ -3873,7 +3902,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3873
3902
|
applySceneGraphSettings(options = this.options) {
|
|
3874
3903
|
if (!this.visualizeJs) return;
|
|
3875
3904
|
const visLib = this.visLib();
|
|
3876
|
-
const visViewer =
|
|
3905
|
+
const visViewer = this.visViewer();
|
|
3877
3906
|
const device = visViewer.getActiveDevice();
|
|
3878
3907
|
if (isExist(options.sceneGraph)) {
|
|
3879
3908
|
device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, !options.sceneGraph);
|
|
@@ -3892,7 +3921,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3892
3921
|
let model = file;
|
|
3893
3922
|
if (model && typeof model.getModels === "function") {
|
|
3894
3923
|
const models = await model.getModels();
|
|
3895
|
-
model = models.find(
|
|
3924
|
+
model = models.find(model => model.default) || models[0] || file;
|
|
3896
3925
|
}
|
|
3897
3926
|
if (!model) throw new Error(`Format not supported`);
|
|
3898
3927
|
let format = params.format;
|
|
@@ -3937,42 +3966,46 @@ class Viewer extends EventEmitter2 {
|
|
|
3937
3966
|
this.clear();
|
|
3938
3967
|
this.emitEvent({
|
|
3939
3968
|
type: "open",
|
|
3940
|
-
file:
|
|
3969
|
+
file: "",
|
|
3970
|
+
buffer: buffer
|
|
3941
3971
|
});
|
|
3942
|
-
const
|
|
3943
|
-
const visViewer = visLib.getViewer();
|
|
3972
|
+
const visViewer = this.visViewer();
|
|
3944
3973
|
this.emitEvent({
|
|
3945
3974
|
type: "geometrystart",
|
|
3946
|
-
file:
|
|
3975
|
+
file: "",
|
|
3976
|
+
buffer: buffer
|
|
3947
3977
|
});
|
|
3948
3978
|
try {
|
|
3949
3979
|
const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
3950
3980
|
visViewer.parseFile(data);
|
|
3951
|
-
this.syncOpenCloudVisualStyle(false);
|
|
3952
3981
|
this.syncOptions();
|
|
3953
3982
|
this.syncOverlay();
|
|
3954
|
-
this.
|
|
3983
|
+
this.update(true);
|
|
3955
3984
|
this.emitEvent({
|
|
3956
3985
|
type: "geometryprogress",
|
|
3957
3986
|
data: 1,
|
|
3958
|
-
file:
|
|
3987
|
+
file: "",
|
|
3988
|
+
buffer: buffer
|
|
3959
3989
|
});
|
|
3960
3990
|
this.emitEvent({
|
|
3961
3991
|
type: "databasechunk",
|
|
3962
3992
|
data: data,
|
|
3963
|
-
file:
|
|
3993
|
+
file: "",
|
|
3994
|
+
buffer: buffer
|
|
3964
3995
|
});
|
|
3965
3996
|
} catch (error) {
|
|
3966
3997
|
this.emitEvent({
|
|
3967
3998
|
type: "geometryerror",
|
|
3968
3999
|
data: error,
|
|
3969
|
-
file:
|
|
4000
|
+
file: "",
|
|
4001
|
+
buffer: buffer
|
|
3970
4002
|
});
|
|
3971
4003
|
throw error;
|
|
3972
4004
|
}
|
|
3973
4005
|
this.emitEvent({
|
|
3974
4006
|
type: "geometryend",
|
|
3975
|
-
file:
|
|
4007
|
+
file: "",
|
|
4008
|
+
buffer: buffer
|
|
3976
4009
|
});
|
|
3977
4010
|
return this;
|
|
3978
4011
|
}
|
|
@@ -3983,50 +4016,54 @@ class Viewer extends EventEmitter2 {
|
|
|
3983
4016
|
this.clear();
|
|
3984
4017
|
this.emitEvent({
|
|
3985
4018
|
type: "open",
|
|
3986
|
-
file:
|
|
4019
|
+
file: "",
|
|
4020
|
+
buffer: buffer
|
|
3987
4021
|
});
|
|
3988
|
-
const
|
|
3989
|
-
const visViewer = visLib.getViewer();
|
|
4022
|
+
const visViewer = this.visViewer();
|
|
3990
4023
|
this.emitEvent({
|
|
3991
4024
|
type: "geometrystart",
|
|
3992
|
-
file:
|
|
4025
|
+
file: "",
|
|
4026
|
+
buffer: buffer
|
|
3993
4027
|
});
|
|
3994
4028
|
try {
|
|
3995
4029
|
const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
3996
4030
|
visViewer.parseVsfx(data);
|
|
3997
|
-
this.syncOpenCloudVisualStyle(false);
|
|
3998
4031
|
this.syncOptions();
|
|
3999
4032
|
this.syncOverlay();
|
|
4000
|
-
this.
|
|
4033
|
+
this.update(true);
|
|
4001
4034
|
this.emitEvent({
|
|
4002
4035
|
type: "geometryprogress",
|
|
4003
4036
|
data: 1,
|
|
4004
|
-
file:
|
|
4037
|
+
file: "",
|
|
4038
|
+
buffer: buffer
|
|
4005
4039
|
});
|
|
4006
4040
|
this.emitEvent({
|
|
4007
4041
|
type: "databasechunk",
|
|
4008
4042
|
data: data,
|
|
4009
|
-
file:
|
|
4043
|
+
file: "",
|
|
4044
|
+
buffer: buffer
|
|
4010
4045
|
});
|
|
4011
4046
|
} catch (error) {
|
|
4012
4047
|
this.emitEvent({
|
|
4013
4048
|
type: "geometryerror",
|
|
4014
4049
|
data: error,
|
|
4015
|
-
file:
|
|
4050
|
+
file: "",
|
|
4051
|
+
buffer: buffer
|
|
4016
4052
|
});
|
|
4017
4053
|
throw error;
|
|
4018
4054
|
}
|
|
4019
4055
|
this.emitEvent({
|
|
4020
4056
|
type: "geometryend",
|
|
4021
|
-
file:
|
|
4057
|
+
file: "",
|
|
4058
|
+
buffer: buffer
|
|
4022
4059
|
});
|
|
4023
4060
|
return this;
|
|
4024
4061
|
}
|
|
4025
4062
|
cancel() {
|
|
4026
4063
|
var _a;
|
|
4027
|
-
(_a = this._abortControllerForReferences) === null || _a ===
|
|
4064
|
+
(_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
|
|
4028
4065
|
this._abortControllerForReferences = undefined;
|
|
4029
|
-
this.loaders.forEach(
|
|
4066
|
+
this.loaders.forEach(loader => loader.cancel());
|
|
4030
4067
|
this.emitEvent({
|
|
4031
4068
|
type: "cancel"
|
|
4032
4069
|
});
|
|
@@ -4034,20 +4071,18 @@ class Viewer extends EventEmitter2 {
|
|
|
4034
4071
|
}
|
|
4035
4072
|
clear() {
|
|
4036
4073
|
if (!this.visualizeJs) return this;
|
|
4037
|
-
const
|
|
4038
|
-
const visViewer = visLib.getViewer();
|
|
4074
|
+
const visViewer = this.visViewer();
|
|
4039
4075
|
this.setActiveDragger();
|
|
4040
4076
|
this.clearSlices();
|
|
4041
4077
|
this.clearOverlay();
|
|
4042
4078
|
this.clearSelected();
|
|
4079
|
+
this.loaders.forEach(loader => loader.dispose());
|
|
4080
|
+
this.loaders = [];
|
|
4043
4081
|
visViewer.clear();
|
|
4044
4082
|
visViewer.createLocalDatabase();
|
|
4045
|
-
this.loaders.forEach((loader => loader.dispose()));
|
|
4046
|
-
this.loaders = [];
|
|
4047
|
-
this.syncOpenCloudVisualStyle(true);
|
|
4048
4083
|
this.syncOptions();
|
|
4049
4084
|
this.syncOverlay();
|
|
4050
|
-
this.
|
|
4085
|
+
this.update(true);
|
|
4051
4086
|
this.emitEvent({
|
|
4052
4087
|
type: "clear"
|
|
4053
4088
|
});
|
|
@@ -4085,7 +4120,7 @@ class Viewer extends EventEmitter2 {
|
|
|
4085
4120
|
drawViewpoint(viewpoint) {
|
|
4086
4121
|
var _a;
|
|
4087
4122
|
if (!this.visualizeJs) return;
|
|
4088
|
-
const draggerName = (_a = this._activeDragger) === null || _a ===
|
|
4123
|
+
const draggerName = (_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.name;
|
|
4089
4124
|
this.setActiveDragger();
|
|
4090
4125
|
this.clearSlices();
|
|
4091
4126
|
this.clearOverlay();
|
|
@@ -4174,12 +4209,12 @@ class Viewer extends EventEmitter2 {
|
|
|
4174
4209
|
}
|
|
4175
4210
|
}
|
|
4176
4211
|
getSelection() {
|
|
4177
|
-
return this.getSelected().map(
|
|
4212
|
+
return this.getSelected().map(handle => ({
|
|
4178
4213
|
handle: handle
|
|
4179
|
-
}))
|
|
4214
|
+
}));
|
|
4180
4215
|
}
|
|
4181
4216
|
setSelection(selection) {
|
|
4182
|
-
this.setSelected(selection === null || selection ===
|
|
4217
|
+
this.setSelected(selection === null || selection === void 0 ? void 0 : selection.map(component => component.handle));
|
|
4183
4218
|
}
|
|
4184
4219
|
executeCommand(id, ...args) {
|
|
4185
4220
|
return commands.executeCommand(id, this, ...args);
|