@inweb/viewer-three 27.5.0 → 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/extensions/components/LightHelperComponent.js +1 -1
- package/dist/extensions/components/LightHelperComponent.js.map +1 -1
- package/dist/extensions/components/LightHelperComponent.min.js +1 -1
- package/dist/extensions/components/LightHelperComponent.module.js +1 -1
- package/dist/extensions/components/LightHelperComponent.module.js.map +1 -1
- package/dist/extensions/components/StatsPanelComponent.js +0 -1
- package/dist/extensions/components/StatsPanelComponent.js.map +1 -1
- package/dist/extensions/components/StatsPanelComponent.min.js +1 -1
- package/dist/extensions/components/StatsPanelComponent.module.js +0 -1
- package/dist/extensions/components/StatsPanelComponent.module.js.map +1 -1
- package/dist/extensions/loaders/GLTFCloudLoader.js +7 -2
- 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 +7 -2
- package/dist/extensions/loaders/GLTFCloudLoader.module.js.map +1 -1
- package/dist/extensions/loaders/GLTFFileLoader.js +2 -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 +2 -1
- package/dist/extensions/loaders/GLTFFileLoader.module.js.map +1 -1
- package/dist/extensions/loaders/IFCXLoader.js +10 -5
- 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 +10 -5
- package/dist/extensions/loaders/IFCXLoader.module.js.map +1 -1
- package/dist/viewer-three.js +161 -157
- package/dist/viewer-three.js.map +1 -1
- package/dist/viewer-three.min.js +3 -3
- package/dist/viewer-three.module.js +68 -53
- package/dist/viewer-three.module.js.map +1 -1
- package/extensions/components/LightHelperComponent.ts +1 -1
- package/extensions/components/StatsPanelComponent.ts +0 -1
- package/extensions/loaders/GLTFCloudLoader.ts +8 -2
- package/extensions/loaders/GLTFFileLoader.ts +3 -2
- package/extensions/loaders/IFCX/IFCXFileLoader.ts +11 -5
- package/lib/Viewer/Viewer.d.ts +1 -1
- package/lib/Viewer/measurement/Snapper.d.ts +1 -1
- package/package.json +5 -5
- package/src/Viewer/Viewer.ts +14 -16
- package/src/Viewer/commands/GetSelected2.ts +1 -1
- package/src/Viewer/commands/SetSelected.ts +1 -1
- package/src/Viewer/components/BackgroundComponent.ts +1 -1
- package/src/Viewer/components/CameraComponent.ts +1 -1
- package/src/Viewer/components/CanvasRemoveComponent.ts +0 -1
- package/src/Viewer/components/HighlighterUtils.ts +2 -2
- package/src/Viewer/components/SelectionComponent.ts +4 -2
- package/src/Viewer/helpers/SectionsHelper.js +4 -8
- package/src/Viewer/helpers/WCSHelper.ts +7 -5
- package/src/Viewer/loaders/DynamicGltfLoader/DynamicModelImpl.ts +19 -14
- package/src/Viewer/loaders/GLTFBinaryParser.ts +2 -2
- package/src/Viewer/loaders/GLTFFileDynamicLoader.ts +2 -2
- package/src/Viewer/measurement/Snapper.ts +2 -2
- package/src/Viewer/models/ModelImpl.ts +38 -25
|
@@ -95,8 +95,8 @@ export class ModelImpl implements IModelImpl {
|
|
|
95
95
|
if (object.material) disposeMaterials(object.material);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
this.handleToObjects
|
|
99
|
-
this.originalObjects
|
|
98
|
+
this.handleToObjects.clear();
|
|
99
|
+
this.originalObjects.clear();
|
|
100
100
|
|
|
101
101
|
this.scene.traverse(disposeObject);
|
|
102
102
|
this.scene.clear();
|
|
@@ -308,7 +308,7 @@ export class ModelImpl implements IModelImpl {
|
|
|
308
308
|
}
|
|
309
309
|
|
|
310
310
|
getVisibleObjects(): Object3D[] {
|
|
311
|
-
const objects = [];
|
|
311
|
+
const objects: Object3D[] = [];
|
|
312
312
|
this.scene.traverseVisible((object) => object.userData.handle && objects.push(object));
|
|
313
313
|
return objects;
|
|
314
314
|
}
|
|
@@ -316,7 +316,7 @@ export class ModelImpl implements IModelImpl {
|
|
|
316
316
|
getObjectsByHandles(handles: string | string[]): Object3D[] {
|
|
317
317
|
if (!Array.isArray(handles)) handles = [handles];
|
|
318
318
|
|
|
319
|
-
const ownHandles = [];
|
|
319
|
+
const ownHandles: string[] = [];
|
|
320
320
|
handles.forEach((handle) => {
|
|
321
321
|
const index = handle.indexOf(":");
|
|
322
322
|
if (index !== -1) {
|
|
@@ -328,7 +328,7 @@ export class ModelImpl implements IModelImpl {
|
|
|
328
328
|
|
|
329
329
|
const handlesSet = new Set<string>(ownHandles);
|
|
330
330
|
|
|
331
|
-
const objects = [];
|
|
331
|
+
const objects: Object3D[][] = [];
|
|
332
332
|
handlesSet.forEach((handle) => {
|
|
333
333
|
objects.push(Array.from(this.handleToObjects.get(handle) || []));
|
|
334
334
|
});
|
|
@@ -427,25 +427,40 @@ export class ModelImpl implements IModelImpl {
|
|
|
427
427
|
return target;
|
|
428
428
|
};
|
|
429
429
|
|
|
430
|
-
|
|
431
|
-
|
|
430
|
+
const calcObjectOffset = (object: Object3D, target: Vector3): Vector3 => {
|
|
431
|
+
const parent = object.parent;
|
|
432
|
+
if (!parent || parent.userData.originalCenter === undefined) return target;
|
|
432
433
|
|
|
433
|
-
object.
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
434
|
+
return target.subVectors(object.userData.originalCenter, parent.userData.originalCenter);
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
const calcObjectDepth = (object: Object3D): number => {
|
|
438
|
+
if (object.userData.depth !== undefined) return object.userData.depth;
|
|
439
|
+
|
|
440
|
+
const parent = object.parent;
|
|
441
|
+
const depth = parent && object !== explodeRoot ? calcObjectDepth(parent) + 1 : 0;
|
|
437
442
|
|
|
443
|
+
object.userData.depth = depth;
|
|
438
444
|
object.userData.originalPosition = object.position.clone();
|
|
439
445
|
object.userData.originalCenter = calcObjectCenter(object, new Vector3());
|
|
446
|
+
object.userData.originalOffset = calcObjectOffset(object, new Vector3());
|
|
440
447
|
|
|
441
|
-
return
|
|
442
|
-
}
|
|
448
|
+
return depth;
|
|
449
|
+
};
|
|
443
450
|
|
|
444
451
|
const explodeScale = scale / 100;
|
|
445
452
|
const explodeRoot = this.scene;
|
|
453
|
+
const explodeObjects = this.getObjects();
|
|
454
|
+
|
|
455
|
+
if (explodeRoot.userData.explodeDepth === undefined) {
|
|
456
|
+
let maxDepth = 0;
|
|
446
457
|
|
|
447
|
-
|
|
448
|
-
|
|
458
|
+
explodeObjects.forEach((object: Object3D) => {
|
|
459
|
+
const depth = calcObjectDepth(object);
|
|
460
|
+
if (depth > maxDepth) maxDepth = depth;
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
explodeRoot.userData.explodeDepth = maxDepth;
|
|
449
464
|
}
|
|
450
465
|
|
|
451
466
|
const maxDepth = explodeRoot.userData.explodeDepth;
|
|
@@ -453,27 +468,25 @@ export class ModelImpl implements IModelImpl {
|
|
|
453
468
|
const explodeDepth = 0 | scaledExplodeDepth;
|
|
454
469
|
const currentSegmentFraction = scaledExplodeDepth - explodeDepth;
|
|
455
470
|
|
|
456
|
-
|
|
471
|
+
const explodeObject = (object: any) => {
|
|
457
472
|
if (object.isCamera) return;
|
|
458
|
-
if (object.userData.isHighlightWireframe) return;
|
|
459
473
|
|
|
460
474
|
object.position.copy(object.userData.originalPosition);
|
|
461
475
|
|
|
476
|
+
const depth = object.userData.depth;
|
|
477
|
+
|
|
462
478
|
if (depth > 0 && depth <= explodeDepth) {
|
|
463
479
|
let objectScale = explodeScale * coeff;
|
|
464
480
|
if (depth === explodeDepth) objectScale *= currentSegmentFraction;
|
|
465
481
|
|
|
466
|
-
|
|
467
|
-
const objectCenter = object.userData.originalCenter;
|
|
468
|
-
const localOffset = objectCenter.clone().sub(parentCenter).multiplyScalar(objectScale);
|
|
469
|
-
|
|
470
|
-
object.position.add(localOffset);
|
|
482
|
+
object.position.addScaledVector(object.userData.originalOffset, objectScale);
|
|
471
483
|
}
|
|
484
|
+
};
|
|
472
485
|
|
|
473
|
-
|
|
474
|
-
|
|
486
|
+
explodeObjects.forEach((object: Object3D) => {
|
|
487
|
+
explodeObject(object);
|
|
488
|
+
});
|
|
475
489
|
|
|
476
|
-
explodeObject(explodeRoot, 0);
|
|
477
490
|
this.scene.updateMatrixWorld();
|
|
478
491
|
|
|
479
492
|
return this;
|