@inweb/viewer-three 26.10.6 → 26.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/plugins/components/AxesHelperComponent.js +23 -1
  2. package/dist/plugins/components/AxesHelperComponent.js.map +1 -1
  3. package/dist/plugins/components/AxesHelperComponent.min.js +1 -1
  4. package/dist/plugins/components/AxesHelperComponent.module.js +24 -2
  5. package/dist/plugins/components/AxesHelperComponent.module.js.map +1 -1
  6. package/dist/plugins/components/ExtentsHelperComponent.js +18 -0
  7. package/dist/plugins/components/ExtentsHelperComponent.js.map +1 -1
  8. package/dist/plugins/components/ExtentsHelperComponent.min.js +1 -1
  9. package/dist/plugins/components/ExtentsHelperComponent.module.js +19 -1
  10. package/dist/plugins/components/ExtentsHelperComponent.module.js.map +1 -1
  11. package/dist/plugins/loaders/GLTFCloudLoader.js +2 -3
  12. package/dist/plugins/loaders/GLTFCloudLoader.js.map +1 -1
  13. package/dist/plugins/loaders/GLTFCloudLoader.min.js +1 -1
  14. package/dist/plugins/loaders/GLTFCloudLoader.module.js +2 -3
  15. package/dist/plugins/loaders/GLTFCloudLoader.module.js.map +1 -1
  16. package/dist/plugins/loaders/GLTFFileLoader.js +2499 -0
  17. package/dist/plugins/loaders/GLTFFileLoader.js.map +1 -0
  18. package/dist/plugins/loaders/GLTFFileLoader.min.js +24 -0
  19. package/dist/plugins/loaders/GLTFFileLoader.module.js +74 -0
  20. package/dist/plugins/loaders/GLTFFileLoader.module.js.map +1 -0
  21. package/dist/plugins/loaders/IFCXLoader.js +5 -7
  22. package/dist/plugins/loaders/IFCXLoader.js.map +1 -1
  23. package/dist/plugins/loaders/IFCXLoader.min.js +1 -1
  24. package/dist/plugins/loaders/IFCXLoader.module.js +5 -7
  25. package/dist/plugins/loaders/IFCXLoader.module.js.map +1 -1
  26. package/dist/plugins/loaders/PotreeLoader.js +1 -2
  27. package/dist/plugins/loaders/PotreeLoader.js.map +1 -1
  28. package/dist/plugins/loaders/PotreeLoader.min.js +1 -1
  29. package/dist/plugins/loaders/PotreeLoader.module.js +1 -2
  30. package/dist/plugins/loaders/PotreeLoader.module.js.map +1 -1
  31. package/dist/viewer-three.js +770 -2777
  32. package/dist/viewer-three.js.map +1 -1
  33. package/dist/viewer-three.min.js +3 -3
  34. package/dist/viewer-three.module.js +609 -206
  35. package/dist/viewer-three.module.js.map +1 -1
  36. package/lib/Viewer/Viewer.d.ts +27 -20
  37. package/lib/Viewer/commands/GetSelected2.d.ts +2 -0
  38. package/lib/Viewer/commands/SelectModel.d.ts +1 -1
  39. package/lib/Viewer/commands/SetSelected2.d.ts +2 -0
  40. package/lib/Viewer/components/index.d.ts +6 -6
  41. package/lib/Viewer/loaders/DynamicGltfLoader/DynamicModelImpl.d.ts +0 -1
  42. package/lib/Viewer/loaders/GLTFBinaryExtension.d.ts +5 -0
  43. package/lib/Viewer/loaders/GLTFCloudDynamicLoader.d.ts +2 -2
  44. package/lib/Viewer/loaders/{GLTFFileLoader.d.ts → GLTFFileDynamicLoader.d.ts} +7 -1
  45. package/lib/Viewer/loaders/GLTFLoadingManager.d.ts +4 -3
  46. package/lib/Viewer/loaders/RangesLoader.d.ts +15 -0
  47. package/lib/Viewer/loaders/index.d.ts +22 -14
  48. package/lib/Viewer/models/IModelImpl.d.ts +6 -8
  49. package/lib/Viewer/models/ModelImpl.d.ts +3 -5
  50. package/package.json +5 -5
  51. package/plugins/components/AxesHelperComponent.ts +31 -2
  52. package/plugins/components/ExtentsHelperComponent.ts +25 -0
  53. package/plugins/loaders/GLTFCloudLoader.ts +2 -3
  54. package/{src/Viewer → plugins}/loaders/GLTFFileLoader.ts +21 -12
  55. package/plugins/loaders/IFCX/IFCXCloudLoader.ts +5 -5
  56. package/plugins/loaders/IFCX/IFCXFileLoader.ts +3 -4
  57. package/plugins/loaders/Potree/PotreeFileLoader.ts +3 -4
  58. package/src/Viewer/Viewer.ts +120 -88
  59. package/src/Viewer/commands/ClearSelected.ts +3 -1
  60. package/src/Viewer/commands/GetModels.ts +1 -1
  61. package/src/Viewer/commands/GetSelected.ts +2 -2
  62. package/src/Viewer/commands/GetSelected2.ts +34 -0
  63. package/src/Viewer/commands/HideSelected.ts +3 -1
  64. package/src/Viewer/commands/SelectModel.ts +5 -5
  65. package/src/Viewer/commands/SetSelected.ts +9 -10
  66. package/src/Viewer/commands/SetSelected2.ts +42 -0
  67. package/src/Viewer/commands/ZoomToObjects.ts +5 -6
  68. package/src/Viewer/commands/ZoomToSelected.ts +3 -1
  69. package/src/Viewer/commands/index.ts +4 -0
  70. package/src/Viewer/components/CameraComponent.ts +6 -1
  71. package/src/Viewer/components/ExtentsComponent.ts +4 -1
  72. package/src/Viewer/components/SelectionComponent.ts +2 -0
  73. package/src/Viewer/components/index.ts +6 -6
  74. package/src/Viewer/loaders/DynamicGltfLoader/DynamicGltfLoader.js +253 -22
  75. package/src/Viewer/loaders/DynamicGltfLoader/DynamicModelImpl.ts +20 -10
  76. package/src/Viewer/loaders/DynamicGltfLoader/GltfStructure.js +3 -1
  77. package/src/Viewer/loaders/GLTFBinaryExtension.ts +91 -0
  78. package/src/Viewer/loaders/GLTFCloudDynamicLoader.ts +13 -19
  79. package/src/Viewer/loaders/GLTFFileDynamicLoader.ts +145 -0
  80. package/src/Viewer/loaders/GLTFLoadingManager.ts +5 -4
  81. package/src/Viewer/loaders/RangesLoader.ts +95 -0
  82. package/src/Viewer/loaders/index.ts +24 -16
  83. package/src/Viewer/models/IModelImpl.ts +8 -9
  84. package/src/Viewer/models/ModelImpl.ts +30 -17
@@ -22,21 +22,13 @@
22
22
  ///////////////////////////////////////////////////////////////////////////////
23
23
 
24
24
  import { Box3, Object3D, Vector3 } from "three";
25
- import { ILoader } from "@inweb/viewer-core";
26
-
27
25
  import { IModelImpl } from "./IModelImpl";
28
- import { Viewer } from "../Viewer";
29
-
30
- // Basic model implementation.
31
26
 
32
27
  export class ModelImpl implements IModelImpl {
33
- public handle: string;
28
+ public id: string;
34
29
  public scene: Object3D;
35
- public loader: ILoader;
36
- public viewer: Viewer;
37
30
 
38
31
  constructor(scene: Object3D) {
39
- this.handle = "1";
40
32
  this.scene = scene;
41
33
  }
42
34
 
@@ -106,27 +98,49 @@ export class ModelImpl implements IModelImpl {
106
98
  return false;
107
99
  }
108
100
 
101
+ hasHandle(handle: string): boolean {
102
+ return !handle.includes(":") || handle.split(":", 1)[0] === this.id + "";
103
+ }
104
+
109
105
  getOwnObjects(objects: Object3D | Object3D[]): Object3D[] {
110
106
  if (!Array.isArray(objects)) objects = [objects];
111
107
  return objects.filter((object) => this.hasObject(object));
112
108
  }
113
109
 
110
+ getOwnHandles(handles: string | string[]): string[] {
111
+ if (!Array.isArray(handles)) handles = [handles];
112
+ return handles.filter((handle) => this.hasHandle(handle));
113
+ }
114
+
114
115
  getObjectsByHandles(handles: string | string[]): Object3D[] {
115
- const handleSet = new Set(handles);
116
+ const ownHandles = this.getOwnHandles(handles);
117
+ if (ownHandles.length === 0) return [];
118
+
119
+ const handleSet = new Set(ownHandles.map((handle) => handle.slice(handle.indexOf(":") + 1)));
120
+
116
121
  const objects = [];
117
- this.scene.traverse((object) => handleSet.has(object.userData.handle) && objects.push(object));
122
+ this.scene.traverse((object) => {
123
+ const handle = object.userData.handle;
124
+ if (handle && handleSet.has(handle)) objects.push(object);
125
+ });
126
+
118
127
  return objects;
119
128
  }
120
129
 
121
130
  getHandlesByObjects(objects: Object3D | Object3D[]): string[] {
122
- if (!Array.isArray(objects)) objects = [objects];
123
- const handlesSet = new Set<string>();
124
- this.getOwnObjects(objects).forEach((object) => handlesSet.add(object.userData.handle));
125
- return Array.from(handlesSet);
131
+ const ownObjects = this.getOwnObjects(objects);
132
+ if (ownObjects.length === 0) return [];
133
+
134
+ const handleSet = new Set<string>();
135
+ ownObjects.forEach((object) => {
136
+ const handle = object.userData.handle;
137
+ if (handle) handleSet.add(`${this.id}:${handle}`);
138
+ });
139
+
140
+ return Array.from(handleSet);
126
141
  }
127
142
 
128
143
  hideObjects(objects: Object3D | Object3D[]): this {
129
- if (!Array.isArray(objects)) objects = [objects];
130
144
  this.getOwnObjects(objects).forEach((object) => (object.visible = false));
131
145
  return this;
132
146
  }
@@ -144,7 +158,6 @@ export class ModelImpl implements IModelImpl {
144
158
  }
145
159
 
146
160
  showObjects(objects: Object3D | Object3D[]): this {
147
- if (!Array.isArray(objects)) objects = [objects];
148
161
  this.getOwnObjects(objects).forEach((object) => {
149
162
  object.visible = true;
150
163
  object.traverseAncestors((parent) => (parent.visible = true));