@inweb/viewer-visualize 27.4.7 → 27.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/viewer-visualize.js +239 -136
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +72 -48
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Components/CameraComponent.d.ts +1 -1
- package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +1 -1
- package/lib/Viewer/Draggers/OdaLineDragger.d.ts +0 -1
- package/lib/Viewer/Markup/Visualize/VisualizeMarkup.d.ts +1 -1
- package/lib/Viewer/Viewer.d.ts +5 -5
- package/package.json +6 -6
- package/src/Viewer/Commands/SetSelected2.ts +1 -1
- package/src/Viewer/Commands/index.ts +21 -10
- package/src/Viewer/Components/CameraComponent.ts +5 -5
- package/src/Viewer/Components/CanvasRemoveComponent.ts +0 -1
- package/src/Viewer/Components/GestureManagerComponent.ts +0 -1
- package/src/Viewer/Components/ZoomWheelComponent.ts +0 -1
- package/src/Viewer/Draggers/Common/OdBaseDragger.ts +3 -1
- package/src/Viewer/Draggers/MeasureLineDragger/MeasureUtils.ts +2 -2
- package/src/Viewer/Draggers/MeasureLineDragger/index.ts +4 -4
- package/src/Viewer/Draggers/OdBaseCuttingPlaneDragger.ts +6 -3
- package/src/Viewer/Draggers/OdCuttingPlaneZAxisDragger.ts +1 -1
- package/src/Viewer/Draggers/OdaLineDragger.ts +4 -5
- package/src/Viewer/Loaders/FileLoader.ts +6 -4
- package/src/Viewer/Loaders/VSFFileLoader.ts +1 -1
- package/src/Viewer/Loaders/VSFXCloudPartialLoader.ts +7 -5
- package/src/Viewer/Loaders/VSFXCloudStreamingLoader.ts +1 -1
- package/src/Viewer/Loaders/VSFXFileLoader.ts +1 -1
- package/src/Viewer/Markup/Visualize/VisualizeMarkup.ts +1 -1
- package/src/Viewer/Models/ModelImpl.ts +1 -1
- package/src/Viewer/Viewer.ts +44 -23
- package/src/Viewer/utils.ts +1 -1
|
@@ -23,6 +23,6 @@ export declare class MeasureLineDragger extends OdBaseDragger {
|
|
|
23
23
|
end(): void;
|
|
24
24
|
createNewMeasureIfNeed(): void;
|
|
25
25
|
createMeasureLine(): MeasureLineItem;
|
|
26
|
-
|
|
26
|
+
updateUnits(event: any): void;
|
|
27
27
|
getKUnitByName(unitName: string): any;
|
|
28
28
|
}
|
|
@@ -3,7 +3,6 @@ import { OdBaseDragger } from "./Common/OdBaseDragger";
|
|
|
3
3
|
export declare const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
|
|
4
4
|
export declare class OdaLineDragger extends OdBaseDragger {
|
|
5
5
|
protected entity: any;
|
|
6
|
-
protected points: any[];
|
|
7
6
|
protected drawPoints: any[];
|
|
8
7
|
constructor(subject: Viewer);
|
|
9
8
|
dispose(): void;
|
|
@@ -9,7 +9,7 @@ export declare class VisualizeMarkup implements IMarkup {
|
|
|
9
9
|
b: number;
|
|
10
10
|
};
|
|
11
11
|
lineWidth: number;
|
|
12
|
-
lineType:
|
|
12
|
+
lineType: string;
|
|
13
13
|
fontSize: number;
|
|
14
14
|
initialize(container: HTMLElement, containerEvents: string[], viewer?: IEventEmitter, worldTransformer?: IWorldTransform): void;
|
|
15
15
|
dispose(): void;
|
package/lib/Viewer/Viewer.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
23
23
|
private _crossOrigin;
|
|
24
24
|
private _activeDragger;
|
|
25
25
|
private _components;
|
|
26
|
-
private _updateDelay;
|
|
27
26
|
private _renderNeeded;
|
|
28
27
|
private _renderTime;
|
|
29
28
|
private _enableAutoUpdate;
|
|
@@ -132,10 +131,11 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
132
131
|
* - {@link UpdateEvent | update}
|
|
133
132
|
* - {@link RenderEvent | render}
|
|
134
133
|
*
|
|
135
|
-
* @param force - If `true` updates the viewer immidietly.
|
|
136
|
-
*
|
|
134
|
+
* @param force - If `true` updates the viewer immidietly. If a `number` is specified and more than the
|
|
135
|
+
* given amount of milliseconds has elapsed since the last rendering, the update is performed
|
|
136
|
+
* immediately as well. Otherwise updates on next animation frame. Default is `false`.
|
|
137
137
|
*/
|
|
138
|
-
update(force?: boolean): void;
|
|
138
|
+
update(force?: boolean | number): void;
|
|
139
139
|
render(time?: DOMHighResTimeStamp): void;
|
|
140
140
|
loadReferences(model: Model | File | Assembly): Promise<this>;
|
|
141
141
|
applyModelTransformMatrix(model: Model | Assembly): void;
|
|
@@ -232,7 +232,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
|
|
|
232
232
|
activeDragger(): IDragger | null;
|
|
233
233
|
setActiveDragger(name?: string): IDragger | null;
|
|
234
234
|
resetActiveDragger(): void;
|
|
235
|
-
getComponent(name: string): IComponent;
|
|
235
|
+
getComponent(name: string): IComponent | null;
|
|
236
236
|
drawViewpoint(viewpoint: IViewpoint): void;
|
|
237
237
|
createViewpoint(): IViewpoint;
|
|
238
238
|
getSnapshot(type?: string, quality?: number): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inweb/viewer-visualize",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.6.0",
|
|
4
4
|
"description": "JavaScript library for rendering CAD and BIM files in a browser using VisualizeJS",
|
|
5
5
|
"homepage": "https://cloud.opendesign.com/docs/index.html",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"docs": "typedoc"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@inweb/client": "~27.
|
|
33
|
-
"@inweb/eventemitter2": "~27.
|
|
34
|
-
"@inweb/markup": "~27.
|
|
35
|
-
"@inweb/viewer-core": "~27.
|
|
32
|
+
"@inweb/client": "~27.6.0",
|
|
33
|
+
"@inweb/eventemitter2": "~27.6.0",
|
|
34
|
+
"@inweb/markup": "~27.6.0",
|
|
35
|
+
"@inweb/viewer-core": "~27.6.0"
|
|
36
36
|
},
|
|
37
|
-
"visualizeJS": "https://public-fhemb7e3embacwec.z02.azurefd.net/libs/visualizejs/
|
|
37
|
+
"visualizeJS": "https://public-fhemb7e3embacwec.z02.azurefd.net/libs/visualizejs/master/Visualize.js"
|
|
38
38
|
}
|
|
@@ -106,18 +106,29 @@ commands.registerCommand("zoomToObjects", zoomToObjects);
|
|
|
106
106
|
commands.registerCommand("zoomToSelected", zoomToSelected);
|
|
107
107
|
commands.registerCommand("autoTransformAllModelsToCentralPoint", autoTransformAllModelsToCentralPoint);
|
|
108
108
|
|
|
109
|
-
commands.registerCommand("
|
|
110
|
-
commands.registerCommand("
|
|
111
|
-
commands.registerCommand("
|
|
112
|
-
commands.registerCommand("
|
|
113
|
-
commands.registerCommand("
|
|
114
|
-
commands.registerCommand("
|
|
115
|
-
commands.registerCommand("
|
|
116
|
-
commands.registerCommand("
|
|
117
|
-
commands.registerCommand("
|
|
118
|
-
commands.registerCommand("
|
|
109
|
+
commands.registerCommand("top", (viewer) => setDefaultViewPosition(viewer, "k3DViewTop"));
|
|
110
|
+
commands.registerCommand("bottom", (viewer) => setDefaultViewPosition(viewer, "k3DViewBottom"));
|
|
111
|
+
commands.registerCommand("left", (viewer) => setDefaultViewPosition(viewer, "k3DViewLeft"));
|
|
112
|
+
commands.registerCommand("right", (viewer) => setDefaultViewPosition(viewer, "k3DViewRight"));
|
|
113
|
+
commands.registerCommand("front", (viewer) => setDefaultViewPosition(viewer, "k3DViewFront"));
|
|
114
|
+
commands.registerCommand("back", (viewer) => setDefaultViewPosition(viewer, "k3DViewBack"));
|
|
115
|
+
commands.registerCommand("se", (viewer) => setDefaultViewPosition(viewer, "k3DViewSE"));
|
|
116
|
+
commands.registerCommand("sw", (viewer) => setDefaultViewPosition(viewer, "k3DViewSW"));
|
|
117
|
+
commands.registerCommand("ne", (viewer) => setDefaultViewPosition(viewer, "k3DViewNE"));
|
|
118
|
+
commands.registerCommand("nw", (viewer) => setDefaultViewPosition(viewer, "k3DViewNW"));
|
|
119
119
|
|
|
120
120
|
commands.registerCommandAlias("clearMarkup", "clearOverlay");
|
|
121
121
|
commands.registerCommandAlias("clearSelected", "unselect");
|
|
122
122
|
commands.registerCommandAlias("getSnapshot", "createPreview");
|
|
123
123
|
commands.registerCommandAlias("zoomToExtents", "zoomExtents");
|
|
124
|
+
|
|
125
|
+
commands.registerCommandAlias("top", "k3DViewTop");
|
|
126
|
+
commands.registerCommandAlias("bottom", "k3DViewBottom");
|
|
127
|
+
commands.registerCommandAlias("left", "k3DViewLeft");
|
|
128
|
+
commands.registerCommandAlias("right", "k3DViewRight");
|
|
129
|
+
commands.registerCommandAlias("front", "k3DViewFront");
|
|
130
|
+
commands.registerCommandAlias("back", "k3DViewBack");
|
|
131
|
+
commands.registerCommandAlias("se", "k3DViewSE");
|
|
132
|
+
commands.registerCommandAlias("sw", "k3DViewSW");
|
|
133
|
+
commands.registerCommandAlias("ne", "k3DViewNE");
|
|
134
|
+
commands.registerCommandAlias("nw", "k3DViewNW");
|
|
@@ -31,15 +31,15 @@ export class CameraComponent implements IComponent {
|
|
|
31
31
|
this.viewer = viewer;
|
|
32
32
|
this.viewer.addEventListener("databasechunk", this.geometryEnd);
|
|
33
33
|
this.viewer.addEventListener("clear", this.geometryEnd);
|
|
34
|
-
this.viewer.addEventListener("optionschange", this.
|
|
35
|
-
this.viewer.addEventListener("initialize", this.
|
|
34
|
+
this.viewer.addEventListener("optionschange", this.syncOptions);
|
|
35
|
+
this.viewer.addEventListener("initialize", this.syncOptions);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
dispose() {
|
|
39
39
|
this.viewer.removeEventListener("databasechunk", this.geometryEnd);
|
|
40
40
|
this.viewer.removeEventListener("clear", this.geometryEnd);
|
|
41
|
-
this.viewer.removeEventListener("optionschange", this.
|
|
42
|
-
this.viewer.removeEventListener("initialize", this.
|
|
41
|
+
this.viewer.removeEventListener("optionschange", this.syncOptions);
|
|
42
|
+
this.viewer.removeEventListener("initialize", this.syncOptions);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
getCameraMode(view: any): CameraMode {
|
|
@@ -61,7 +61,7 @@ export class CameraComponent implements IComponent {
|
|
|
61
61
|
activeView.delete();
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
syncOptions = () => {
|
|
65
65
|
this.switchCameraMode(this.viewer.options.cameraMode);
|
|
66
66
|
};
|
|
67
67
|
|
|
@@ -37,7 +37,7 @@ export class OdBaseDragger extends OdaGeAction {
|
|
|
37
37
|
protected isDragging: boolean;
|
|
38
38
|
protected press: boolean;
|
|
39
39
|
|
|
40
|
-
public name
|
|
40
|
+
public name = "";
|
|
41
41
|
|
|
42
42
|
constructor(subject: Viewer) {
|
|
43
43
|
super(subject.visualizeJs);
|
|
@@ -45,6 +45,8 @@ export class OdBaseDragger extends OdaGeAction {
|
|
|
45
45
|
this.needInputText = false;
|
|
46
46
|
this.mouseDownPosition = { x: 0, y: 0 };
|
|
47
47
|
this.autoSelect = false;
|
|
48
|
+
this.isDragging = false;
|
|
49
|
+
this.press = false;
|
|
48
50
|
|
|
49
51
|
this.pointerdown = this.pointerdown.bind(this);
|
|
50
52
|
this.pointerup = this.pointerup.bind(this);
|
|
@@ -142,8 +142,8 @@ export function getDataForDrawLineWithFixed(p1: Point2d, p2: Point2d, width: num
|
|
|
142
142
|
checkSegmentsIntersect(p1, p2, pLB, pRB, intersects);
|
|
143
143
|
checkSegmentsIntersect(p1, p2, pRB, pRU, intersects);
|
|
144
144
|
|
|
145
|
-
let fixedP1: Point2d = null;
|
|
146
|
-
let fixedP2: Point2d = null;
|
|
145
|
+
let fixedP1: Point2d | null = null;
|
|
146
|
+
let fixedP2: Point2d | null = null;
|
|
147
147
|
|
|
148
148
|
if (intersects.length === 0) {
|
|
149
149
|
fixedP1 = p1;
|
|
@@ -78,10 +78,10 @@ export class MeasureLineDragger extends OdBaseDragger {
|
|
|
78
78
|
this.m_overlayElement.style.pointerEvents = "none";
|
|
79
79
|
document.body.appendChild(this.m_overlayElement);
|
|
80
80
|
|
|
81
|
-
this.
|
|
81
|
+
this.updateUnits = this.updateUnits.bind(this);
|
|
82
82
|
this.updatePreview = this.updatePreview.bind(this);
|
|
83
83
|
|
|
84
|
-
this.subject.addEventListener("optionschange", this.
|
|
84
|
+
this.subject.addEventListener("optionschange", this.updateUnits);
|
|
85
85
|
this.subject.addEventListener("render", this.updatePreview);
|
|
86
86
|
|
|
87
87
|
this.resize();
|
|
@@ -92,7 +92,7 @@ export class MeasureLineDragger extends OdBaseDragger {
|
|
|
92
92
|
|
|
93
93
|
this.m_overlayElement.remove();
|
|
94
94
|
|
|
95
|
-
this.subject.removeEventListener("optionschange", this.
|
|
95
|
+
this.subject.removeEventListener("optionschange", this.updateUnits);
|
|
96
96
|
this.subject.removeEventListener("render", this.updatePreview);
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -209,7 +209,7 @@ export class MeasureLineDragger extends OdBaseDragger {
|
|
|
209
209
|
return item;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
updateUnits(event): void {
|
|
213
213
|
const options: IOptions = event.data;
|
|
214
214
|
const toUnitName = options.rulerUnit ?? "Default";
|
|
215
215
|
const toPrecision = options.rulerPrecision ?? "Default";
|
|
@@ -59,10 +59,9 @@ export class OdBaseCuttingPlaneDragger extends OdBaseDragger {
|
|
|
59
59
|
|
|
60
60
|
avp.addCuttingPlane(plane);
|
|
61
61
|
this.index = avp.numCuttingPlanes() - 1;
|
|
62
|
+
this.subject.syncOptions(); // <- sync cutting plane fill options
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
avp.setEnableCuttingPlaneFill(true, red, green, blue);
|
|
65
|
-
avp.setCuttingPlaneFillPatternEnabled(true, this.m_module.CuttingPlaneFillStyle.kSlantRight, 0x0, 0x0, 0x0);
|
|
64
|
+
this.subject.emitEvent({ type: "changecuttingplanes" });
|
|
66
65
|
|
|
67
66
|
this.m_model = this.getModel();
|
|
68
67
|
this.createPreview();
|
|
@@ -115,6 +114,8 @@ export class OdBaseCuttingPlaneDragger extends OdBaseDragger {
|
|
|
115
114
|
plane.set(this.toGePoint(this.m_center), this.m_normal);
|
|
116
115
|
avp.updateCuttingPlane(this.index, plane);
|
|
117
116
|
|
|
117
|
+
this.subject.emitEvent({ type: "changecuttingplanes" });
|
|
118
|
+
|
|
118
119
|
this.drawPreview();
|
|
119
120
|
|
|
120
121
|
this.deleteAll([avp, plane, oldCenter, delta, oldLast]);
|
|
@@ -136,6 +137,8 @@ export class OdBaseCuttingPlaneDragger extends OdBaseDragger {
|
|
|
136
137
|
plane.set(this.toGePoint(this.m_center), this.m_normal);
|
|
137
138
|
avp.updateCuttingPlane(this.index, plane);
|
|
138
139
|
|
|
140
|
+
this.subject.emitEvent({ type: "changecuttingplanes" });
|
|
141
|
+
|
|
139
142
|
this.deleteAll([avp, plane, this.m_last]);
|
|
140
143
|
|
|
141
144
|
const device = this.getViewer().getActiveDevice();
|
|
@@ -25,7 +25,7 @@ import { OdBaseCuttingPlaneDragger } from "./OdBaseCuttingPlaneDragger";
|
|
|
25
25
|
|
|
26
26
|
export class OdCuttingPlaneZAxisDragger extends OdBaseCuttingPlaneDragger {
|
|
27
27
|
override createNormal(): number[] {
|
|
28
|
-
return [0, 0, 1];
|
|
28
|
+
return [0, 0, -1];
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
override handleDelta(delta: Point3d): Point3d {
|
|
@@ -27,24 +27,23 @@ export const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
|
|
|
27
27
|
|
|
28
28
|
export class OdaLineDragger extends OdBaseDragger {
|
|
29
29
|
protected entity: any;
|
|
30
|
-
protected points: any[];
|
|
31
30
|
protected drawPoints: any[];
|
|
32
31
|
|
|
33
32
|
constructor(subject: Viewer) {
|
|
34
33
|
super(subject);
|
|
35
34
|
this.press = false;
|
|
35
|
+
this.drawPoints = [];
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
override dispose(): void {
|
|
39
39
|
super.dispose();
|
|
40
40
|
this.end();
|
|
41
|
-
this.
|
|
42
|
-
this.drawPoints = null;
|
|
41
|
+
this.drawPoints.length = 0;
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
override start(x: number, y: number): void {
|
|
46
45
|
const point = this.getViewer().screenToWorld(x, y);
|
|
47
|
-
this.drawPoints
|
|
46
|
+
this.drawPoints.push(point[0], point[1], point[2]);
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
override drag(x: number, y: number): void {
|
|
@@ -58,7 +57,7 @@ export class OdaLineDragger extends OdBaseDragger {
|
|
|
58
57
|
override end(): void {
|
|
59
58
|
if (this.entity) {
|
|
60
59
|
this.entity.delete();
|
|
61
|
-
this.drawPoints =
|
|
60
|
+
this.drawPoints.length = 0;
|
|
62
61
|
this.entity = null;
|
|
63
62
|
}
|
|
64
63
|
}
|
|
@@ -24,12 +24,11 @@
|
|
|
24
24
|
export class FileLoader {
|
|
25
25
|
private requestHeader: HeadersInit;
|
|
26
26
|
private withCredentials: boolean;
|
|
27
|
-
private abortSignal: AbortSignal;
|
|
27
|
+
private abortSignal: AbortSignal | undefined;
|
|
28
28
|
|
|
29
29
|
constructor() {
|
|
30
30
|
this.requestHeader = {};
|
|
31
31
|
this.withCredentials = false;
|
|
32
|
-
this.abortSignal = undefined;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
setRequestHeader(requestHeader: HeadersInit) {
|
|
@@ -56,13 +55,16 @@ export class FileLoader {
|
|
|
56
55
|
.then((response) => {
|
|
57
56
|
if (!response.ok) throw new Error(`Failed to fetch "${response.url}", status ${response.status}`);
|
|
58
57
|
|
|
58
|
+
const body = response.body;
|
|
59
|
+
if (!body) return response;
|
|
60
|
+
|
|
59
61
|
const contentLength = response.headers.get("X-File-Size") || response.headers.get("Content-Length");
|
|
60
62
|
const total = parseInt(contentLength || "", 10) || 0;
|
|
61
63
|
const lengthComputable = total > 0;
|
|
62
64
|
|
|
63
65
|
const stream = new ReadableStream({
|
|
64
66
|
async start(controller) {
|
|
65
|
-
const reader =
|
|
67
|
+
const reader = body.getReader();
|
|
66
68
|
let loaded = 0;
|
|
67
69
|
try {
|
|
68
70
|
while (true) {
|
|
@@ -91,7 +93,7 @@ export class FileLoader {
|
|
|
91
93
|
const reader = new FileReader();
|
|
92
94
|
reader.onload = () => resolve(reader.result as any);
|
|
93
95
|
reader.onerror = () => reject(reader.error);
|
|
94
|
-
reader.onprogress = onProgress;
|
|
96
|
+
reader.onprogress = onProgress || null;
|
|
95
97
|
reader.readAsArrayBuffer(new Blob([file]));
|
|
96
98
|
});
|
|
97
99
|
}
|
|
@@ -34,7 +34,7 @@ export class VSFFileLoader extends Loader {
|
|
|
34
34
|
this.viewer = viewer;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
override isSupport(file: any, format
|
|
37
|
+
override isSupport(file: any, format = ""): boolean {
|
|
38
38
|
return (
|
|
39
39
|
(typeof file === "string" || file instanceof globalThis.File || file instanceof ArrayBuffer) &&
|
|
40
40
|
/vsf$/i.test(format)
|
|
@@ -52,6 +52,8 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
52
52
|
override async load(model: any): Promise<this> {
|
|
53
53
|
if (!this.viewer.visualizeJs) return this;
|
|
54
54
|
|
|
55
|
+
type Range = { requestId: number; begin: number; end: number };
|
|
56
|
+
|
|
55
57
|
const visViewer = this.viewer.visViewer();
|
|
56
58
|
visViewer.memoryLimit = this.viewer.options.memoryLimit;
|
|
57
59
|
|
|
@@ -90,11 +92,11 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
90
92
|
this.viewer.update(true);
|
|
91
93
|
} else {
|
|
92
94
|
this.viewer.emitEvent({ type: "geometrychunk", data: chunk, file: model.file, model });
|
|
93
|
-
this.viewer.update();
|
|
95
|
+
this.viewer.update(500);
|
|
94
96
|
}
|
|
95
97
|
};
|
|
96
98
|
|
|
97
|
-
const downloadResourceRange = async (dataId: string, requestId: number, ranges:
|
|
99
|
+
const downloadResourceRange = async (dataId: string, requestId: number, ranges: Range[]) => {
|
|
98
100
|
const abortCtrl = new AbortController();
|
|
99
101
|
this.abortControllerForRequestMap.set(requestId, abortCtrl);
|
|
100
102
|
try {
|
|
@@ -107,8 +109,8 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
107
109
|
}
|
|
108
110
|
};
|
|
109
111
|
|
|
110
|
-
const requestRecordsToRanges = (requestId: number, records: any):
|
|
111
|
-
const ranges = [];
|
|
112
|
+
const requestRecordsToRanges = (requestId: number, records: any): Range[] => {
|
|
113
|
+
const ranges: Range[] = [];
|
|
112
114
|
for (let i = 0; i < records.size(); i++) {
|
|
113
115
|
const record = records.get(i);
|
|
114
116
|
ranges.push({
|
|
@@ -151,7 +153,7 @@ export class VSFXCloudPartialLoader extends Loader {
|
|
|
151
153
|
const dataId = `${model.fileId}${model.file.type}`;
|
|
152
154
|
const ranges = requestRecordsToRanges(requestId, records);
|
|
153
155
|
|
|
154
|
-
let pendingRanges = [];
|
|
156
|
+
let pendingRanges: Range[] = [];
|
|
155
157
|
let requestNumber = 0;
|
|
156
158
|
const pendingRequest = pendingRequestsMap.get(dataId);
|
|
157
159
|
if (pendingRequest) {
|
|
@@ -34,7 +34,7 @@ export class VSFXFileLoader extends Loader {
|
|
|
34
34
|
this.viewer = viewer;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
override isSupport(file: any, format
|
|
37
|
+
override isSupport(file: any, format = ""): boolean {
|
|
38
38
|
return (
|
|
39
39
|
(typeof file === "string" || file instanceof globalThis.File || file instanceof ArrayBuffer) &&
|
|
40
40
|
/vsfx$/i.test(format)
|