@vitrosoftware/common-ui-ts 1.1.136 → 1.1.138

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.
@@ -1,30 +1,66 @@
1
- import { BIMModel, BIMCommon, BIMAnnotation } from '/resource/bimViewer/js/bim-viewer-models.js?version=1.1.136';
1
+ import { BIMModel, BIMCommon, BIMAnnotation } from '/resource/bimViewer/js/bim-viewer-models.js?version=1.1.138';
2
2
 
3
3
  import {
4
4
  Viewer, XKTLoaderPlugin, NavCubePlugin, SectionPlanesPlugin, math, BCFViewpointsPlugin, AnnotationsPlugin,
5
5
  ContextMenu, TreeViewPlugin, StoreyViewsPlugin, AngleMeasurementsPlugin, CameraMemento, DistanceMeasurementsPlugin,
6
6
  GLTFLoaderPlugin, utils, FastNavPlugin, MetaObject, parsers
7
7
  }
8
- from '/resource/bimViewer/js/xeokit/xeokit-sdk.es.js?version=1.1.136';
8
+ from '/resource/bimViewer/js/xeokit/xeokit-sdk.es.js?version=1.1.138';
9
9
 
10
10
 
11
- const processByChildIdList = (treeViewNode, event) => {
12
- viewer.scene.canvas.spinner.processes++;
13
-
11
+ //----------------------------------------------------------------------------------------------------------------------
12
+ // Shared function
13
+ //----------------------------------------------------------------------------------------------------------------------
14
+
15
+ const processByChildIdList = (objectId, event) => {
16
+ viewer.scene.canvas.spinner.processes++;
17
+
14
18
  const callback = (objIds) => {
15
- objIds.push(treeViewNode.objectId);
16
- event(objIds);
17
- viewer.scene.canvas.spinner.processes--;
19
+ objIds.push(objectId);
20
+ event(objIds);
21
+ viewer.scene.canvas.spinner.processes--;
18
22
  };
19
23
 
20
- const error = (er) =>
21
- {
24
+ const error = (er) => {
22
25
  viewer.scene.canvas.spinner.processes--;
23
26
  };
24
-
25
- BIMModel.GetChildIdList(treeViewNode.objectId, true, true, callback, error);
27
+
28
+ BIMModel.GetChildIdList(objectId, true, true, callback, error);
29
+ };
30
+
31
+ const setSceneObjectsVisible = (scene, objectIds, visible) => {
32
+ scene.setObjectsVisible(objectIds, visible);
33
+ viewer.scene.fire("vitroObjectsVisibility", { objectIds, visible });
34
+ };
35
+
36
+ const setSceneObjectsXRay = (scene, objectIds, xrayed) => {
37
+ scene.setObjectsXRayed(objectIds, xrayed);
38
+ viewer.scene.fire("vitroObjectsXRayed", { objectIds, xrayed });
39
+ };
40
+
41
+ const setSceneAllObjectsVisible = (scene, visible) => {
42
+ if (!visible) {
43
+ scene.setObjectsVisible(scene.visibleObjectIds, visible);
44
+ }
45
+ else {
46
+ scene.setObjectsVisible(scene.objectIds, visible);
47
+ }
48
+
49
+ scene.fire("vitroAllObjectsVisibility", visible);
26
50
  };
27
51
 
52
+ const setSceneAllObjectsXRay = (scene, xrayed) => {
53
+ if (!xrayed) {
54
+ scene.setObjectsXRayed(scene.xrayedObjectIds, xrayed);
55
+ }
56
+ else {
57
+ scene.setObjectsXRayed(scene.objectIds, xrayed);
58
+ }
59
+
60
+ scene.fire("vitroAllObjectsXRayed", xrayed);
61
+ };
62
+
63
+
28
64
  const treeViewContextMenu = new ContextMenu({
29
65
 
30
66
  items: [
@@ -38,7 +74,7 @@ const treeViewContextMenu = new ContextMenu({
38
74
  const event = (objectIds) => {
39
75
  const scene = context.viewer.scene;
40
76
 
41
- scene.setObjectsVisible(objectIds, true);
77
+ setSceneObjectsVisible(scene, objectIds, true);
42
78
  scene.setObjectsHighlighted(objectIds, true);
43
79
  context.viewer.cameraFlight.flyTo({
44
80
  projection: "perspective",
@@ -51,7 +87,7 @@ const treeViewContextMenu = new ContextMenu({
51
87
  });
52
88
  };
53
89
 
54
- processByChildIdList(context.treeViewNode, event);
90
+ processByChildIdList(context.treeViewNode.objectId, event);
55
91
  }
56
92
  },
57
93
  {
@@ -67,16 +103,12 @@ const treeViewContextMenu = new ContextMenu({
67
103
  doAction: function (context) {
68
104
 
69
105
  context.treeViewPlugin.setNodeChecked(context.treeViewNode, false);
70
-
71
- const event = (objectIds) => {
72
- objectIds.forEach((id)=> {
73
- const entity = context.viewer.scene.objects[id];
74
- if (entity) {
75
- entity.visible = false;
76
- };
77
- });
106
+
107
+ const event = (objectIds) => {
108
+ setSceneObjectsVisible(context.viewer.scene, objectIds, false);
78
109
  };
79
- processByChildIdList(context.treeViewNode, event);
110
+
111
+ processByChildIdList(context.treeViewNode.objectId, event);
80
112
  }
81
113
  },
82
114
  {
@@ -89,20 +121,15 @@ const treeViewContextMenu = new ContextMenu({
89
121
  const event = (objectIds) => {
90
122
  const scene = context.viewer.scene;
91
123
 
92
- scene.setObjectsVisible(scene.visibleObjectIds, false);
93
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
124
+ setSceneAllObjectsVisible(scene, false);
125
+ setSceneAllObjectsXRay(scene, false);
94
126
  scene.setObjectsSelected(scene.selectedObjectIds, false);
95
127
  scene.setObjectsHighlighted(scene.highlightedObjectIds, false);
96
-
97
- objectIds.forEach((id)=> {
98
- const entity = context.viewer.scene.objects[id];
99
- if (entity) {
100
- entity.visible = true;
101
- };
102
- });
128
+
129
+ setSceneObjectsVisible(scene, objectIds, true);
103
130
  };
104
131
 
105
- processByChildIdList(context.treeViewNode, event);
132
+ processByChildIdList(context.treeViewNode.objectId, event);
106
133
  }
107
134
  },
108
135
  {
@@ -112,7 +139,7 @@ const treeViewContextMenu = new ContextMenu({
112
139
  },
113
140
  doAction: function (context) {
114
141
  context.treeViewPlugin.setCheckedAll(false);
115
- context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);
142
+ setSceneAllObjectsVisible(context.viewer.scene, false);
116
143
  }
117
144
  }
118
145
  ],
@@ -123,18 +150,19 @@ const treeViewContextMenu = new ContextMenu({
123
150
 
124
151
  context.treeViewPlugin.setNodeChecked(context.treeViewNode, true);
125
152
 
126
- const event = (objectIds) => {
153
+ const event = (objectIds) => {
154
+ setSceneObjectsVisible(context.viewer.scene, objectIds, true);
155
+ setSceneObjectsXRay(context.viewer.scene, objectIds, false);
156
+
127
157
  objectIds.forEach((id)=> {
128
158
  const entity = context.viewer.scene.objects[id];
129
159
  if (entity) {
130
- entity.visible = true;
131
- entity.xrayed = false;
132
160
  entity.selected = false;
133
161
  }
134
162
  });
135
163
  };
136
164
 
137
- processByChildIdList(context.treeViewNode, event);
165
+ processByChildIdList(context.treeViewNode.objectId, event);
138
166
  }
139
167
  },
140
168
  {
@@ -144,21 +172,16 @@ const treeViewContextMenu = new ContextMenu({
144
172
  context.treeViewPlugin.setNodeChecked(context.treeViewNode, false);
145
173
 
146
174
  const scene = context.viewer.scene;
147
-
148
- scene.setObjectsVisible(scene.objectIds, true);
149
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
175
+
176
+ setSceneAllObjectsVisible(scene, true);
177
+ setSceneAllObjectsXRay(scene, false);
150
178
  scene.setObjectsSelected(scene.selectedObjectIds, false);
151
179
 
152
180
  const event = (objectIds) => {
153
- objectIds.forEach((id) => {
154
- const entity = context.viewer.scene.objects[id];
155
- if (entity) {
156
- entity.visible = false;
157
- }
158
- });
181
+ setSceneObjectsVisible(context.viewer.scene, objectIds, false);
159
182
  }
160
183
 
161
- processByChildIdList(context.treeViewNode, event);
184
+ processByChildIdList(context.treeViewNode.objectId, event);
162
185
  }
163
186
  },
164
187
  {
@@ -171,8 +194,8 @@ const treeViewContextMenu = new ContextMenu({
171
194
  context.treeViewPlugin.setCheckedAll(true);
172
195
 
173
196
  const scene = context.viewer.scene;
174
- scene.setObjectsVisible(scene.objectIds, true);
175
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
197
+ setSceneAllObjectsVisible(scene, true);
198
+ setSceneAllObjectsXRay(scene, false);
176
199
  scene.setObjectsSelected(scene.selectedObjectIds, false);
177
200
  }
178
201
  }
@@ -185,32 +208,22 @@ const treeViewContextMenu = new ContextMenu({
185
208
  context.treeViewPlugin.setNodeChecked(context.treeViewNode, true);
186
209
 
187
210
  const event = (objectIds) => {
188
- objectIds.forEach((id) => {
189
- const entity = context.viewer.scene.objects[id];
190
- if (entity) {
191
- entity.xrayed = true;
192
- entity.visible = true;
193
- }
194
- });
211
+ setSceneObjectsVisible(context.viewer.scene, objectIds, true);
212
+ setSceneObjectsXRay(context.viewer.scene, objectIds, true);
195
213
  }
196
214
 
197
- processByChildIdList(context.treeViewNode, event);
215
+ processByChildIdList(context.treeViewNode.objectId, event);
198
216
  }
199
217
  },
200
218
  {
201
219
  getTitle: function (context) { return document.webL10n.get('x_ray_undo') },
202
220
  doAction: function (context) {
203
-
221
+
204
222
  const event = (objectIds) => {
205
- objectIds.forEach((id) => {
206
- const entity = context.viewer.scene.objects[id];
207
- if (entity) {
208
- entity.xrayed = false;
209
- }
210
- });
223
+ setSceneObjectsXRay(context.viewer.scene, objectIds, false);
211
224
  }
212
225
 
213
- processByChildIdList(context.treeViewNode, event);
226
+ processByChildIdList(context.treeViewNode.objectId, event);
214
227
  }
215
228
  },
216
229
  {
@@ -219,21 +232,16 @@ const treeViewContextMenu = new ContextMenu({
219
232
  context.treeViewPlugin.setCheckedAll(true);
220
233
 
221
234
  const scene = context.viewer.scene;
222
- scene.setObjectsVisible(scene.objectIds, true);
223
- scene.setObjectsXRayed(scene.objectIds, true);
235
+ setSceneAllObjectsVisible(scene, true);
236
+ setSceneAllObjectsXRay(scene, true);
224
237
  scene.setObjectsSelected(scene.selectedObjectIds, false);
225
238
  scene.setObjectsHighlighted(scene.highlightedObjectIds, false);
226
239
 
227
240
  const event = (objectIds) => {
228
- objectIds.forEach((id) => {
229
- const entity = context.viewer.scene.objects[id];
230
- if (entity) {
231
- entity.xrayed = false;
232
- }
233
- });
241
+ setSceneObjectsXRay(scene, objectIds, false);
234
242
  }
235
243
 
236
- processByChildIdList(context.treeViewNode, event);
244
+ processByChildIdList(context.treeViewNode.objectId, event);
237
245
  }
238
246
  },
239
247
  {
@@ -242,7 +250,9 @@ const treeViewContextMenu = new ContextMenu({
242
250
  return (context.viewer.scene.numXRayedObjects > 0);
243
251
  },
244
252
  doAction: function (context) {
245
- context.viewer.scene.setObjectsXRayed(context.viewer.scene.xrayedObjectIds, false);
253
+ const scene = context.viewer.scene;
254
+
255
+ setSceneAllObjectsXRay(scene, false);
246
256
  }
247
257
  }
248
258
  ],
@@ -253,16 +263,17 @@ const treeViewContextMenu = new ContextMenu({
253
263
  context.treeViewPlugin.setNodeChecked(context.treeViewNode, true);
254
264
 
255
265
  const event = (objectIds) => {
266
+ setSceneObjectsVisible(context.viewer.scene, objectIds, true);
267
+
256
268
  objectIds.forEach((id) => {
257
269
  const entity = context.viewer.scene.objects[id];
258
270
  if (entity) {
259
271
  entity.selected = true;
260
- entity.visible = true;
261
272
  }
262
273
  });
263
274
  }
264
275
 
265
- processByChildIdList(context.treeViewNode, event);
276
+ processByChildIdList(context.treeViewNode.objectId, event);
266
277
  }
267
278
  },
268
279
  {
@@ -278,7 +289,7 @@ const treeViewContextMenu = new ContextMenu({
278
289
  });
279
290
  }
280
291
 
281
- processByChildIdList(context.treeViewNode, event);
292
+ processByChildIdList(context.treeViewNode.objectId, event);
282
293
  }
283
294
  },
284
295
  {
@@ -315,7 +326,10 @@ class VitroTreeViewPlugin extends TreeViewPlugin
315
326
 
316
327
  viewer.scene.canvas.spinner.processes++;
317
328
 
318
- const callback = (data) => {
329
+ const callback = (data) => {
330
+
331
+ setSceneObjectsVisible(this._viewer.scene, data, visible);
332
+ /*
319
333
  for (var i = 0; i < data.length; i++) {
320
334
  const entity = objects[data[i]];
321
335
 
@@ -323,12 +337,12 @@ class VitroTreeViewPlugin extends TreeViewPlugin
323
337
  entity.visible = visible;
324
338
  }
325
339
  }
326
-
340
+ */
327
341
  viewer.scene.canvas.spinner.processes--;
328
342
  viewer.scene.fire("reloadSmallScenes");
329
343
  };
330
344
 
331
- processByChildIdList(checkedNode, callback);
345
+ processByChildIdList(checkedNode.objectId, callback);
332
346
 
333
347
  this.setNodeChecked(checkedNode, visible);
334
348
 
@@ -367,13 +381,14 @@ class VitroTreeViewPlugin extends TreeViewPlugin
367
381
  duration: 0.5
368
382
  }, () => {
369
383
  setTimeout(function () {
370
- scene.setObjectsVisible(scene.xrayedObjectIds, false);
371
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
384
+ setSceneAllObjectsVisible(scene, false);
385
+ setSceneObjectsVisible(scene, objectIds, true);
386
+ setSceneAllObjectsXRay(scene, false);
372
387
  }, 500);
373
388
  });
374
389
  }
375
390
 
376
- processByChildIdList(e.treeViewNode, event);
391
+ processByChildIdList(e.treeViewNode.objectId, event);
377
392
  });
378
393
  }
379
394
 
@@ -401,7 +416,6 @@ class VitroTreeViewPlugin extends TreeViewPlugin
401
416
  });
402
417
  }
403
418
 
404
-
405
419
  setNodeChecked(node, checked){
406
420
  this.withNodeTree(node, (node) => {
407
421
  if (node) {
@@ -412,6 +426,8 @@ class VitroTreeViewPlugin extends TreeViewPlugin
412
426
  }
413
427
 
414
428
  node.checked = checked;
429
+
430
+
415
431
  }
416
432
  });
417
433
  }
@@ -674,7 +690,7 @@ class VitroTreeViewPlugin extends TreeViewPlugin
674
690
 
675
691
  this._onSceneMouseMove = viewer.scene.input.on("mousemove", () => {
676
692
  if (!down) {
677
- return;
693
+ return;
678
694
  }
679
695
  culledSmallModelList();
680
696
  });
@@ -684,6 +700,78 @@ class VitroTreeViewPlugin extends TreeViewPlugin
684
700
 
685
701
  this.startSmallLoad = false;
686
702
  this.isDeleteModelList = false;
703
+
704
+ this.isVisible = true;
705
+ this.visibilityEntityMap = {};
706
+
707
+ this.isXRay = false;
708
+ this.xrayedEntityMap = {};
709
+
710
+ var addXrayedEntity = (entityId, xrayed) => {
711
+ const a = xrayed;
712
+
713
+ if ((a || this.isXRay) && !(a && this.isXRay)) {
714
+ this.xrayedEntityMap[entityId] = true;
715
+ } else {
716
+ delete this.xrayedEntityMap[entityId];
717
+ }
718
+ };
719
+
720
+ var addInvisibleEntity = (entityId, visible) => {
721
+ if (visible && this.isVisible) {
722
+ delete this.visibilityEntityMap[entityId];
723
+ } else {
724
+ this.visibilityEntityMap[entityId] = true;
725
+ }
726
+ };
727
+
728
+ this._onObjectXRayed = this.scene.on("objectXRayed", (entity) => {
729
+ const a = entity.xrayed;
730
+ const b = this.isXRay;
731
+ const c = this.xrayedEntityMap[entity.id];
732
+
733
+ addXrayedEntity(entity.id, entity.xrayed);
734
+
735
+ if ((a && !b && !c) || (a && b && c)) {
736
+ culledSmallModelList();
737
+ }
738
+ });
739
+
740
+ this._onTreeObjectVisibility = this.scene.on("vitroObjectsXRayed", (data) => {
741
+ data.objectIds.forEach(objectId => addXrayedEntity(objectId, data.xrayed));
742
+ culledSmallModelList();
743
+ });
744
+
745
+ this._onTreeObjectVisibility = this.scene.on("vitroAllObjectsXRayed", (xrayed) => {
746
+
747
+ this.xrayedEntityMap = {};
748
+ this.isXRay = xrayed;
749
+
750
+ culledSmallModelList();
751
+ });
752
+
753
+ this._onObjectVisibility = this.scene.on("objectVisibility", (entity) => {
754
+ addInvisibleEntity(entity.id, entity.visible);
755
+
756
+ if (!entity.visible) {
757
+ culledSmallModelList();
758
+ }
759
+ });
760
+
761
+ this._onTreeObjectVisibility = this.scene.on("vitroObjectsVisibility", (data) => {
762
+ data.objectIds.forEach(objectId => addInvisibleEntity(objectId, data.visible));
763
+ culledSmallModelList();
764
+ });
765
+
766
+ this._onTreeObjectVisibility = this.scene.on("vitroAllObjectsVisibility", (visible) => {
767
+
768
+ this.visibilityEntityMap = {};
769
+ this.isVisible = visible;
770
+
771
+ culledSmallModelList();
772
+ });
773
+
774
+
687
775
  }
688
776
 
689
777
  culledModels() {
@@ -726,6 +814,21 @@ class VitroTreeViewPlugin extends TreeViewPlugin
726
814
 
727
815
  sceneModel.on('loaded', () => {
728
816
  sceneModel.IsRunning = false;
817
+
818
+ this.RestoreXRayState(sceneModel);
819
+ });
820
+ }
821
+
822
+ RestoreXRayState(sceneModel) {
823
+ sceneModel.entityList.forEach(entity => {
824
+ const a = this.xrayedEntityMap[entity.id];
825
+
826
+ if ((a || this.isXRay) && !(a && this.isXRay)) {
827
+ entity.xrayed = true;
828
+ }
829
+ else {
830
+ entity.xrayed = false;
831
+ }
729
832
  });
730
833
  }
731
834
 
@@ -733,7 +836,26 @@ class VitroTreeViewPlugin extends TreeViewPlugin
733
836
  loadData() {
734
837
  this.controller = new AbortController();
735
838
  if (this.startSmallLoad) {
736
- BIMCommon.GetSmallModel(this.viewer.scene, this.version, this.controller.signal, this.loadSmallPart.bind(this));
839
+
840
+ var sceneOptions = {};
841
+
842
+ sceneOptions.visibilityMode = this.isVisible ? 1 : 0;
843
+ sceneOptions.visibilityEntityIdList = Object.keys(this.visibilityEntityMap);
844
+
845
+ sceneOptions.xrayMode = this.isXRay ? 1 : 0;
846
+ sceneOptions.xrayedEntityIdList = Object.keys(this.xrayedEntityMap);
847
+ sceneOptions.sectionPlanes = [];
848
+
849
+ viewer.scene._sectionPlanesState.sectionPlanes.forEach((plane) => {
850
+ var sectionPlane = {};
851
+
852
+ sectionPlane.normals = Array.from(plane.dir);
853
+ sectionPlane.positions = Array.from(plane.pos);
854
+
855
+ sectionPlanes.push(sectionPlane);
856
+ });
857
+
858
+ BIMCommon.GetSmallModel(this.viewer.scene, this.version, sceneOptions, this.controller.signal, this.loadSmallPart.bind(this));
737
859
  }
738
860
  }
739
861
  }
@@ -829,7 +951,7 @@ const canvasContextMenu = new ContextMenu({
829
951
  return (context.viewer.scene.numVisibleObjects > 0);
830
952
  },
831
953
  doAction: function (context) {
832
- context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);
954
+ setSceneAllObjectsVisible(context.viewer.scene, false);
833
955
 
834
956
  if (context.treeViewPlugin) {
835
957
  context.treeViewPlugin.setCheckedAll(false);
@@ -844,8 +966,10 @@ const canvasContextMenu = new ContextMenu({
844
966
  },
845
967
  doAction: function (context) {
846
968
  const scene = context.viewer.scene;
847
- scene.setObjectsVisible(scene.objectIds, true);
848
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
969
+
970
+ setSceneAllObjectsVisible(scene, true);
971
+ setSceneAllObjectsXRay(scene, false);
972
+
849
973
  scene.setObjectsSelected(scene.selectedObjectIds, false);
850
974
 
851
975
  if (context.treeViewPlugin) {
@@ -931,20 +1055,29 @@ const objectContextMenu = new ContextMenu({
931
1055
  const viewer = context.viewer;
932
1056
  const scene = viewer.scene;
933
1057
  const entity = context.entity;
934
- const metaObject = viewer.metaScene.metaObjects[entity.id];
935
- if (!metaObject) {
936
- return;
937
- }
938
- scene.setObjectsVisible(scene.visibleObjectIds, false);
939
- scene.setObjectsXRayed(scene.xrayedObjectIds, false);
1058
+
1059
+ setSceneAllObjectsVisible(scene, false);
1060
+ setSceneAllObjectsXRay(scene, false);
1061
+
940
1062
  scene.setObjectsSelected(scene.selectedObjectIds, false);
941
1063
  scene.setObjectsHighlighted(scene.highlightedObjectIds, false);
942
- metaObject.withMetaObjectsInSubtree((metaObject) => {
943
- const entity = scene.objects[metaObject.id];
944
- if (entity) {
945
- entity.visible = true;
946
- }
947
- });
1064
+
1065
+ if (entity) {
1066
+ entity.visible = true;
1067
+
1068
+ const event = (objectIds) => {
1069
+ objectIds.forEach((id) => {
1070
+ const object = scene.objects[id];
1071
+
1072
+ if (object)
1073
+ object.visible = true;
1074
+
1075
+ });
1076
+ };
1077
+
1078
+
1079
+ processByChildIdList(entity.id, event);
1080
+ }
948
1081
  }
949
1082
  },
950
1083
  {
@@ -953,7 +1086,7 @@ const objectContextMenu = new ContextMenu({
953
1086
  return (context.viewer.scene.numVisibleObjects > 0);
954
1087
  },
955
1088
  doAction: function (context) {
956
- context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);
1089
+ setSceneAllObjectsVisible(context.viewer.scene, false);
957
1090
  }
958
1091
  },
959
1092
  {
@@ -964,7 +1097,8 @@ const objectContextMenu = new ContextMenu({
964
1097
  },
965
1098
  doAction: function (context) {
966
1099
  const scene = context.viewer.scene;
967
- scene.setObjectsVisible(scene.objectIds, true);
1100
+
1101
+ setSceneAllObjectsVisible(scene, true);
968
1102
  }
969
1103
  }
970
1104
  ],
@@ -993,20 +1127,28 @@ const objectContextMenu = new ContextMenu({
993
1127
  const viewer = context.viewer;
994
1128
  const scene = viewer.scene;
995
1129
  const entity = context.entity;
996
- const metaObject = viewer.metaScene.metaObjects[entity.id];
997
- if (!metaObject) {
998
- return;
999
- }
1000
- scene.setObjectsVisible(scene.objectIds, true);
1001
- scene.setObjectsXRayed(scene.objectIds, true);
1130
+
1131
+ setSceneAllObjectsVisible(scene, true);
1132
+ setSceneAllObjectsXRay(scene, true);
1133
+
1002
1134
  scene.setObjectsSelected(scene.selectedObjectIds, false);
1003
1135
  scene.setObjectsHighlighted(scene.highlightedObjectIds, false);
1004
- metaObject.withMetaObjectsInSubtree((metaObject) => {
1005
- const entity = scene.objects[metaObject.id];
1006
- if (entity) {
1007
- entity.xrayed = false;
1008
- }
1009
- });
1136
+
1137
+ if (entity) {
1138
+ entity.xrayed = false;
1139
+
1140
+ const event = (objectIds) => {
1141
+ objectIds.forEach((id) => {
1142
+ const object = scene.objects[id];
1143
+
1144
+ if (object) {
1145
+ object.xrayed = false;
1146
+ }
1147
+ });
1148
+ };
1149
+
1150
+ processByChildIdList(entity.id, event);
1151
+ }
1010
1152
  }
1011
1153
  },
1012
1154
  {
@@ -1015,7 +1157,7 @@ const objectContextMenu = new ContextMenu({
1015
1157
  return (context.viewer.scene.numXRayedObjects > 0);
1016
1158
  },
1017
1159
  doAction: function (context) {
1018
- context.viewer.scene.setObjectsXRayed(context.viewer.scene.xrayedObjectIds, false);
1160
+ setSceneAllObjectsXRay(context.viewer.scene, false);
1019
1161
  }
1020
1162
  }
1021
1163
  ],
@@ -3735,7 +3877,8 @@ function convertProperty(data) {
3735
3877
  }
3736
3878
 
3737
3879
  return groups;
3738
- }
3880
+ }
3881
+
3739
3882
  //------------------------------------------------------------------------------------------------------------------
3740
3883
  // Do action wherever we click on an object
3741
3884
  //------------------------------------------------------------------------------------------------------------------