@sapui5/sap.ui.vk 1.138.0 → 1.140.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.
Files changed (220) hide show
  1. package/package.json +1 -1
  2. package/src/sap/ui/vk/.library +9 -1
  3. package/src/sap/ui/vk/AnimationPlayback.js +1 -1
  4. package/src/sap/ui/vk/AnimationPlayer.js +1 -1
  5. package/src/sap/ui/vk/AnimationSequence.js +1 -1
  6. package/src/sap/ui/vk/AnimationTimeSlider.js +1 -1
  7. package/src/sap/ui/vk/AnimationTrack.js +1 -1
  8. package/src/sap/ui/vk/Annotation.js +3 -3
  9. package/src/sap/ui/vk/BaseNodeProxy.js +1 -1
  10. package/src/sap/ui/vk/Camera.js +1 -1
  11. package/src/sap/ui/vk/ContentConnector.js +149 -95
  12. package/src/sap/ui/vk/ContentManager.js +1 -1
  13. package/src/sap/ui/vk/ContentResource.js +26 -7
  14. package/src/sap/ui/vk/ContentType.js +41 -0
  15. package/src/sap/ui/vk/Core.js +1 -1
  16. package/src/sap/ui/vk/DownloadManager.js +1 -1
  17. package/src/sap/ui/vk/DrawerToolbar.js +46 -19
  18. package/src/sap/ui/vk/DvlException.js +1 -1
  19. package/src/sap/ui/vk/FlexibleControl.js +1 -1
  20. package/src/sap/ui/vk/FlexibleControlLayoutData.js +1 -1
  21. package/src/sap/ui/vk/Highlight.js +1 -1
  22. package/src/sap/ui/vk/ImageContentManager.js +1 -1
  23. package/src/sap/ui/vk/JointUtils.js +1 -1
  24. package/src/sap/ui/vk/LayerProxy.js +1 -1
  25. package/src/sap/ui/vk/Loco.js +1 -1
  26. package/src/sap/ui/vk/Material.js +1 -1
  27. package/src/sap/ui/vk/NativeViewport.js +1 -1
  28. package/src/sap/ui/vk/NodeHierarchy.js +1 -1
  29. package/src/sap/ui/vk/NodeProxy.js +1 -1
  30. package/src/sap/ui/vk/NodeUtils.js +1 -1
  31. package/src/sap/ui/vk/Notifications.js +1 -1
  32. package/src/sap/ui/vk/OrthographicCamera.js +1 -1
  33. package/src/sap/ui/vk/PerspectiveCamera.js +1 -1
  34. package/src/sap/ui/vk/ProgressIndicator.js +1 -1
  35. package/src/sap/ui/vk/RedlineCollaboration.js +1 -1
  36. package/src/sap/ui/vk/RedlineConversation.js +1 -1
  37. package/src/sap/ui/vk/RedlineDesign.js +1 -1
  38. package/src/sap/ui/vk/RedlineElement.js +1 -1
  39. package/src/sap/ui/vk/RedlineElementComment.js +1 -1
  40. package/src/sap/ui/vk/RedlineElementEllipse.js +1 -1
  41. package/src/sap/ui/vk/RedlineElementFreehand.js +1 -1
  42. package/src/sap/ui/vk/RedlineElementLine.js +1 -1
  43. package/src/sap/ui/vk/RedlineElementRectangle.js +1 -1
  44. package/src/sap/ui/vk/RedlineElementText.js +1 -1
  45. package/src/sap/ui/vk/RedlineSurface.js +1 -1
  46. package/src/sap/ui/vk/SafeArea.js +1 -1
  47. package/src/sap/ui/vk/Scene.js +5 -1
  48. package/src/sap/ui/vk/SceneTree.js +20 -3
  49. package/src/sap/ui/vk/StepNavigation.js +1 -1
  50. package/src/sap/ui/vk/Texture.js +1 -1
  51. package/src/sap/ui/vk/ToggleMenuButton.js +1 -1
  52. package/src/sap/ui/vk/ToggleMenuItem.js +1 -1
  53. package/src/sap/ui/vk/Toolbar.js +1 -1
  54. package/src/sap/ui/vk/View.js +1 -1
  55. package/src/sap/ui/vk/ViewGallery.js +1 -1
  56. package/src/sap/ui/vk/ViewGalleryThumbnail.js +1 -1
  57. package/src/sap/ui/vk/ViewGroup.js +1 -1
  58. package/src/sap/ui/vk/ViewManager.js +1 -1
  59. package/src/sap/ui/vk/ViewStateManager.js +3 -10
  60. package/src/sap/ui/vk/ViewStateManagerBase.js +2 -2
  61. package/src/sap/ui/vk/Viewer.js +13 -3
  62. package/src/sap/ui/vk/Viewport.js +1 -1
  63. package/src/sap/ui/vk/ViewportBase.js +24 -70
  64. package/src/sap/ui/vk/dvl/BaseNodeProxy.js +1 -1
  65. package/src/sap/ui/vk/dvl/ContentManager.js +1 -1
  66. package/src/sap/ui/vk/dvl/GraphicsCore.js +1 -1
  67. package/src/sap/ui/vk/dvl/LayerProxy.js +1 -1
  68. package/src/sap/ui/vk/dvl/NodeHierarchy.js +1 -1
  69. package/src/sap/ui/vk/dvl/NodeProxy.js +1 -1
  70. package/src/sap/ui/vk/dvl/Scene.js +1 -1
  71. package/src/sap/ui/vk/dvl/ViewStateManager.js +1 -1
  72. package/src/sap/ui/vk/dvl/Viewport.js +1 -1
  73. package/src/sap/ui/vk/ecad/ElementsPanel.js +408 -385
  74. package/src/sap/ui/vk/ecad/LayersPanel.js +95 -99
  75. package/src/sap/ui/vk/i18n/messagebundle.properties +44 -46
  76. package/src/sap/ui/vk/i18n/messagebundle_ar.properties +27 -13
  77. package/src/sap/ui/vk/i18n/messagebundle_bg.properties +27 -13
  78. package/src/sap/ui/vk/i18n/messagebundle_ca.properties +27 -13
  79. package/src/sap/ui/vk/i18n/messagebundle_cnr.properties +27 -13
  80. package/src/sap/ui/vk/i18n/messagebundle_cs.properties +27 -13
  81. package/src/sap/ui/vk/i18n/messagebundle_cy.properties +27 -13
  82. package/src/sap/ui/vk/i18n/messagebundle_da.properties +27 -13
  83. package/src/sap/ui/vk/i18n/messagebundle_de.properties +28 -14
  84. package/src/sap/ui/vk/i18n/messagebundle_el.properties +27 -13
  85. package/src/sap/ui/vk/i18n/messagebundle_en.properties +27 -327
  86. package/src/sap/ui/vk/i18n/messagebundle_en_GB.properties +27 -13
  87. package/src/sap/ui/vk/i18n/messagebundle_en_US_saprigi.properties +24 -12
  88. package/src/sap/ui/vk/i18n/messagebundle_es.properties +29 -15
  89. package/src/sap/ui/vk/i18n/messagebundle_es_MX.properties +27 -13
  90. package/src/sap/ui/vk/i18n/messagebundle_et.properties +27 -13
  91. package/src/sap/ui/vk/i18n/messagebundle_fi.properties +27 -13
  92. package/src/sap/ui/vk/i18n/messagebundle_fr.properties +27 -13
  93. package/src/sap/ui/vk/i18n/messagebundle_fr_CA.properties +27 -13
  94. package/src/sap/ui/vk/i18n/messagebundle_hi.properties +27 -13
  95. package/src/sap/ui/vk/i18n/messagebundle_hr.properties +27 -13
  96. package/src/sap/ui/vk/i18n/messagebundle_hu.properties +27 -13
  97. package/src/sap/ui/vk/i18n/messagebundle_id.properties +29 -15
  98. package/src/sap/ui/vk/i18n/messagebundle_it.properties +27 -13
  99. package/src/sap/ui/vk/i18n/messagebundle_iw.properties +27 -13
  100. package/src/sap/ui/vk/i18n/messagebundle_ja.properties +29 -15
  101. package/src/sap/ui/vk/i18n/messagebundle_kk.properties +39 -25
  102. package/src/sap/ui/vk/i18n/messagebundle_ko.properties +24 -10
  103. package/src/sap/ui/vk/i18n/messagebundle_lt.properties +27 -13
  104. package/src/sap/ui/vk/i18n/messagebundle_lv.properties +27 -13
  105. package/src/sap/ui/vk/i18n/messagebundle_mk.properties +27 -13
  106. package/src/sap/ui/vk/i18n/messagebundle_ms.properties +27 -13
  107. package/src/sap/ui/vk/i18n/messagebundle_nl.properties +27 -13
  108. package/src/sap/ui/vk/i18n/messagebundle_no.properties +28 -14
  109. package/src/sap/ui/vk/i18n/messagebundle_pl.properties +27 -13
  110. package/src/sap/ui/vk/i18n/messagebundle_pt.properties +27 -13
  111. package/src/sap/ui/vk/i18n/messagebundle_pt_PT.properties +27 -13
  112. package/src/sap/ui/vk/i18n/messagebundle_ro.properties +27 -13
  113. package/src/sap/ui/vk/i18n/messagebundle_ru.properties +27 -13
  114. package/src/sap/ui/vk/i18n/messagebundle_sh.properties +27 -13
  115. package/src/sap/ui/vk/i18n/messagebundle_sk.properties +27 -13
  116. package/src/sap/ui/vk/i18n/messagebundle_sl.properties +27 -13
  117. package/src/sap/ui/vk/i18n/messagebundle_sr.properties +27 -13
  118. package/src/sap/ui/vk/i18n/messagebundle_sv.properties +27 -13
  119. package/src/sap/ui/vk/i18n/messagebundle_th.properties +27 -13
  120. package/src/sap/ui/vk/i18n/messagebundle_tr.properties +27 -13
  121. package/src/sap/ui/vk/i18n/messagebundle_uk.properties +27 -13
  122. package/src/sap/ui/vk/i18n/messagebundle_vi.properties +28 -14
  123. package/src/sap/ui/vk/i18n/messagebundle_zh_CN.properties +27 -13
  124. package/src/sap/ui/vk/i18n/messagebundle_zh_TW.properties +27 -13
  125. package/src/sap/ui/vk/library.js +5 -5
  126. package/src/sap/ui/vk/measurements/Angle.js +1 -1
  127. package/src/sap/ui/vk/measurements/Area.js +1 -1
  128. package/src/sap/ui/vk/measurements/Distance.js +1 -1
  129. package/src/sap/ui/vk/measurements/Edge.js +1 -1
  130. package/src/sap/ui/vk/measurements/Face.js +1 -1
  131. package/src/sap/ui/vk/measurements/Feature.js +1 -1
  132. package/src/sap/ui/vk/measurements/Vertex.js +1 -1
  133. package/src/sap/ui/vk/pdf/ContentManager.js +1 -1
  134. package/src/sap/ui/vk/pdf/Page.js +9 -10
  135. package/src/sap/ui/vk/pdf/Utils.js +4 -2
  136. package/src/sap/ui/vk/pdf/Viewport.js +1 -1
  137. package/src/sap/ui/vk/svg/BaseNodeProxy.js +1 -1
  138. package/src/sap/ui/vk/svg/ContentDeliveryService.js +1 -1
  139. package/src/sap/ui/vk/svg/ContentManager.js +4 -5
  140. package/src/sap/ui/vk/svg/NodeHierarchy.js +1 -1
  141. package/src/sap/ui/vk/svg/NodeProxy.js +1 -1
  142. package/src/sap/ui/vk/svg/OrthographicCamera.js +1 -1
  143. package/src/sap/ui/vk/svg/Scene.js +1 -1
  144. package/src/sap/ui/vk/svg/SceneBuilder.js +1 -1
  145. package/src/sap/ui/vk/svg/ViewStateManager.js +1 -1
  146. package/src/sap/ui/vk/svg/Viewport.js +11 -18
  147. package/src/sap/ui/vk/thirdparty/BufferGeometryUtils.js +86 -27
  148. package/src/sap/ui/vk/thirdparty/pdf.worker.js +1 -1
  149. package/src/sap/ui/vk/thirdparty/three.js +54501 -32246
  150. package/src/sap/ui/vk/threejs/AnimationHelper.js +1 -1
  151. package/src/sap/ui/vk/threejs/BaseNodeProxy.js +1 -1
  152. package/src/sap/ui/vk/threejs/Billboard.js +23 -11
  153. package/src/sap/ui/vk/threejs/Callout.js +1 -1
  154. package/src/sap/ui/vk/threejs/ContentDeliveryService.js +1 -1
  155. package/src/sap/ui/vk/threejs/ContentManager.js +2 -2
  156. package/src/sap/ui/vk/threejs/DetailView.js +1 -1
  157. package/src/sap/ui/vk/threejs/HighlightPlayer.js +14 -22
  158. package/src/sap/ui/vk/threejs/Material.js +1 -1
  159. package/src/sap/ui/vk/threejs/NodeHierarchy.js +1 -1
  160. package/src/sap/ui/vk/threejs/NodeProxy.js +9 -11
  161. package/src/sap/ui/vk/threejs/OrthographicCamera.js +1 -1
  162. package/src/sap/ui/vk/threejs/OutlineRenderer.js +4 -10
  163. package/src/sap/ui/vk/threejs/PerspectiveCamera.js +1 -1
  164. package/src/sap/ui/vk/threejs/PointCloudGroup.js +1 -1
  165. package/src/sap/ui/vk/threejs/Scene.js +1 -15
  166. package/src/sap/ui/vk/threejs/SceneBuilder.js +1 -4
  167. package/src/sap/ui/vk/threejs/Texture.js +1 -1
  168. package/src/sap/ui/vk/threejs/ThreeExtensions.js +10 -174
  169. package/src/sap/ui/vk/threejs/ThreeUtils.js +7 -18
  170. package/src/sap/ui/vk/threejs/Thrustline.js +1 -1
  171. package/src/sap/ui/vk/threejs/ViewStateManager.js +755 -451
  172. package/src/sap/ui/vk/threejs/Viewport.js +47 -35
  173. package/src/sap/ui/vk/tools/AnchorPointTool.js +1 -1
  174. package/src/sap/ui/vk/tools/AnchorPointToolGizmo.js +1 -1
  175. package/src/sap/ui/vk/tools/AxisAngleRotationTool.js +1 -1
  176. package/src/sap/ui/vk/tools/AxisAngleRotationToolGizmo.js +1 -1
  177. package/src/sap/ui/vk/tools/CreateEllipseTool.js +1 -1
  178. package/src/sap/ui/vk/tools/CreateEllipseToolGizmo.js +1 -1
  179. package/src/sap/ui/vk/tools/CreateParametricGizmo.js +1 -1
  180. package/src/sap/ui/vk/tools/CreatePathTool.js +1 -1
  181. package/src/sap/ui/vk/tools/CreatePathToolGizmo.js +1 -1
  182. package/src/sap/ui/vk/tools/CreateRectangleTool.js +1 -1
  183. package/src/sap/ui/vk/tools/CreateRectangleToolGizmo.js +1 -1
  184. package/src/sap/ui/vk/tools/CreateTextTool.js +1 -1
  185. package/src/sap/ui/vk/tools/CreateTextToolGizmo.js +1 -1
  186. package/src/sap/ui/vk/tools/CrossSectionTool.js +1 -1
  187. package/src/sap/ui/vk/tools/CrossSectionToolGizmo.js +1 -1
  188. package/src/sap/ui/vk/tools/DuplicateSvgElementTool.js +1 -1
  189. package/src/sap/ui/vk/tools/DuplicateSvgElementToolGizmo.js +1 -1
  190. package/src/sap/ui/vk/tools/ExplodeTool.js +1 -1
  191. package/src/sap/ui/vk/tools/ExplodeToolGizmo.js +1 -1
  192. package/src/sap/ui/vk/tools/Gizmo.js +4 -3
  193. package/src/sap/ui/vk/tools/HitTestTool.js +1 -1
  194. package/src/sap/ui/vk/tools/MoveTool.js +1 -1
  195. package/src/sap/ui/vk/tools/MoveToolGizmo.js +1 -1
  196. package/src/sap/ui/vk/tools/PointCloudSelectionTool.js +1 -1
  197. package/src/sap/ui/vk/tools/PointCloudSelectionToolGizmo.js +1 -1
  198. package/src/sap/ui/vk/tools/RectSelectTool.js +1 -1
  199. package/src/sap/ui/vk/tools/RedlineTool.js +1 -1
  200. package/src/sap/ui/vk/tools/RedlineToolGizmo.js +1 -1
  201. package/src/sap/ui/vk/tools/RotateOrbitTool.js +1 -1
  202. package/src/sap/ui/vk/tools/RotateTool.js +1 -1
  203. package/src/sap/ui/vk/tools/RotateToolGizmo.js +1 -1
  204. package/src/sap/ui/vk/tools/RotateTurntableTool.js +1 -1
  205. package/src/sap/ui/vk/tools/ScaleTool.js +1 -1
  206. package/src/sap/ui/vk/tools/ScaleToolGizmo.js +1 -1
  207. package/src/sap/ui/vk/tools/SceneOrientationTool.js +1 -1
  208. package/src/sap/ui/vk/tools/SceneOrientationToolGizmo.js +1 -1
  209. package/src/sap/ui/vk/tools/Tool.js +1 -1
  210. package/src/sap/ui/vk/tools/TooltipTool.js +1 -1
  211. package/src/sap/ui/vk/tools/TooltipToolGizmo.js +1 -1
  212. package/src/sap/ui/vk/tools/TooltipToolHandler.js +5 -0
  213. package/src/sap/ui/vk/tools/TransformSvgElementTool.js +1 -1
  214. package/src/sap/ui/vk/tools/TransformSvgElementToolGizmo.js +1 -1
  215. package/src/sap/ui/vk/totara/SceneContext.js +3 -1
  216. package/src/sap/ui/vk/totara/TotaraLoader.js +2 -2
  217. package/src/sap/ui/vk/totara/TotaraLoaderWorker.js +18 -21
  218. package/src/sap/ui/vk/ve/dvl.wasm +0 -0
  219. package/ui5.yaml +5 -3
  220. package/src/sap/ui/vk/threejs/v2/ViewStateManager.js +0 -1445
@@ -9,6 +9,7 @@
9
9
  sap.ui.define([
10
10
  "../Core",
11
11
  "../ViewportBase",
12
+ "../abgrToColor",
12
13
  "sap/ui/core/Element",
13
14
  "sap/ui/core/ResizeHandler",
14
15
  "sap/ui/events/KeyCodes",
@@ -18,6 +19,7 @@ sap.ui.define([
18
19
  "./ViewportGestureHandler",
19
20
  "./OrthographicCamera",
20
21
  "./PerspectiveCamera",
22
+ "./OutlineRenderer",
21
23
  "../Messages",
22
24
  "sap/ui/base/ManagedObjectObserver",
23
25
  "../CameraProjectionType",
@@ -37,6 +39,7 @@ sap.ui.define([
37
39
  "../Annotation",
38
40
  "../measurements/Surface",
39
41
  "../NodeContentType",
42
+ "../SelectionDisplayMode",
40
43
  "sap/base/assert",
41
44
  "sap/base/Log",
42
45
  "../findIndexInArray",
@@ -44,6 +47,7 @@ sap.ui.define([
44
47
  ], function(
45
48
  vkCore,
46
49
  ViewportBase,
50
+ abgrToColor,
47
51
  Element,
48
52
  ResizeHandler,
49
53
  KeyCodes,
@@ -53,6 +57,7 @@ sap.ui.define([
53
57
  ViewportGestureHandler,
54
58
  OrthographicCamera,
55
59
  PerspectiveCamera,
60
+ OutlineRenderer,
56
61
  Messages,
57
62
  ManagedObjectObserver,
58
63
  CameraProjectionType,
@@ -72,6 +77,7 @@ sap.ui.define([
72
77
  Annotation,
73
78
  MeasurementSurface,
74
79
  NodeContentType,
80
+ SelectionDisplayMode,
75
81
  assert,
76
82
  Log,
77
83
  findIndexInArray,
@@ -88,7 +94,7 @@ sap.ui.define([
88
94
  *
89
95
  * @public
90
96
  * @author SAP SE
91
- * @version 1.138.0
97
+ * @version 1.140.0
92
98
  * @extends sap.ui.vk.ViewportBase
93
99
  * @alias sap.ui.vk.threejs.Viewport
94
100
  */
@@ -219,6 +225,8 @@ sap.ui.define([
219
225
  this._underlayGroup = new THREE.Group();
220
226
  this._overlayGroup = new THREE.Group();
221
227
 
228
+ this._outlineRenderer = new OutlineRenderer(1.0);
229
+
222
230
  this._showPMI = true;
223
231
 
224
232
  this._xrayColor1 = new THREE.Vector4(0, 0.75, 1, 0.45);
@@ -320,6 +328,9 @@ sap.ui.define([
320
328
  this._setContent(null);
321
329
  this.setCamera(null);
322
330
 
331
+ this._outlineRenderer?.dispose();
332
+ this._outlineRenderer = null;
333
+
323
334
  this._backgroundCamera = null;
324
335
  this._backgroundMaterial = null;
325
336
  this._backgroundScene = null;
@@ -613,6 +624,7 @@ sap.ui.define([
613
624
  });
614
625
  }
615
626
 
627
+ const vsm = this._getViewStateManagerThreeJS();
616
628
  var annotations = this._scene && this._scene._getAnnotations();
617
629
  if (annotations) {
618
630
  annotations.forEach(function(annotationInfo) {
@@ -620,7 +632,7 @@ sap.ui.define([
620
632
  var annotation = Annotation.createAnnotation(annotationInfo, this);
621
633
  annotation.autoGenerated = true;
622
634
  this.addAnnotation(annotation);
623
- annotation.setDisplay(nodeRef.visible);
635
+ annotation.setDisplay(vsm?.getVisibilityState(nodeRef) ?? nodeRef.visible);
624
636
  }
625
637
  }, this);
626
638
  }
@@ -774,18 +786,14 @@ sap.ui.define([
774
786
  }
775
787
 
776
788
  var vsm = this._getViewStateManagerThreeJS();
777
- if (vsm && vsm.applyNodeStates) {
778
- vsm.applyNodeStates();
779
- }
789
+ vsm?.applyNodeStates?.();
780
790
 
781
791
  try {
782
792
  var canvas = this._canvas;
783
793
  return this._hitTester.hitTest(x - canvas.clientLeft, y - canvas.clientTop, canvas.clientWidth, canvas.clientHeight,
784
794
  this._renderer, nativeScene, nativeCamera, this._clippingPlanes, options);
785
795
  } finally {
786
- if (vsm && vsm.revertNodeStates) {
787
- vsm.revertNodeStates();
788
- }
796
+ vsm?.revertNodeStates?.();
789
797
  }
790
798
  };
791
799
 
@@ -801,14 +809,15 @@ sap.ui.define([
801
809
 
802
810
  Viewport.prototype._findBackgroundNode = function() {
803
811
  var nativeScene = this._getNativeScene();
804
- if (nativeScene == null) {
812
+ const vsm = this._getViewStateManagerThreeJS();
813
+ if (nativeScene == null || vsm == null) {
805
814
  return null;
806
815
  }
807
816
  var findBackgroundChildNodeRecursively = function(nodeRefs) {
808
817
  for (var i = 0; i < nodeRefs.length; i++) {
809
818
  var node = nodeRefs[i];
810
- if (node._vkGetNodeContentType() === NodeContentType.Background && node.visible === true && (node.name === "plane" || node.name === "sphere")) {
811
- if (node.parent.name === "Background" && node.parent.visible === false) {
819
+ if (node._vkGetNodeContentType() === NodeContentType.Background && vsm.getVisibilityState(node) === true && (node.name === "plane" || node.name === "sphere")) {
820
+ if (node.parent.name === "Background" && vsm.getVisibilityState(node.parent) === false) {
812
821
  return null;
813
822
  }
814
823
  return node;
@@ -1071,7 +1080,7 @@ sap.ui.define([
1071
1080
  }
1072
1081
  };
1073
1082
 
1074
- function _updateDynamicObjects(renderer, camera, scene, viewport) {
1083
+ function _updateDynamicObjects(renderer, camera, scene, viewport, vsm) {
1075
1084
  var viewportSize = new THREE.Vector2(viewport._width, viewport._height);
1076
1085
  var backgroundProjection = viewport.getBackgroundProjection();
1077
1086
  let somethingWasChanged = false;
@@ -1083,7 +1092,7 @@ sap.ui.define([
1083
1092
  if (root.userData._vkDynamicObjects) {
1084
1093
  root.userData._vkDynamicObjects.forEach(function(object) {
1085
1094
  if (object.parent) {
1086
- object._vkUpdate(renderer, camera, viewportSize, backgroundProjection);
1095
+ object._vkUpdate(renderer, camera, viewportSize, backgroundProjection, vsm);
1087
1096
  somethingWasChanged = true;
1088
1097
  }
1089
1098
  });
@@ -1198,9 +1207,7 @@ sap.ui.define([
1198
1207
  var timerStart = performance.now();
1199
1208
  var vsm = this._getViewStateManagerThreeJS();
1200
1209
 
1201
- if (vsm && vsm.applyNodeStates) {
1202
- vsm.applyNodeStates();
1203
- }
1210
+ vsm?.applyNodeStates?.(this.getSelectionDisplayMode() === SelectionDisplayMode.Outline);
1204
1211
 
1205
1212
  try {
1206
1213
  renderer.setViewport(0, 0, this._canvas.width / window.devicePixelRatio, this._canvas.height / window.devicePixelRatio);
@@ -1273,7 +1280,7 @@ sap.ui.define([
1273
1280
  var tools = this.getTools();
1274
1281
  var i, tool, gizmo, boundingBox;
1275
1282
 
1276
- const someObjectsWereUpdated = _updateDynamicObjects(renderer, nativeCamera, nativeScene, this);
1283
+ const someObjectsWereUpdated = _updateDynamicObjects(renderer, nativeCamera, nativeScene, this, vsm);
1277
1284
  const mustUpdateDynamicObjectsAgain = someObjectsWereUpdated && (nativeCamera.near <= 0 || nativeCamera.far <= 0);
1278
1285
 
1279
1286
  // todo: we need to _updateBoundingBoxes() only if some dynamic objects are currently selected
@@ -1293,6 +1300,12 @@ sap.ui.define([
1293
1300
  }
1294
1301
  timerComputeBoundingBoxEnd = performance.now();
1295
1302
 
1303
+ if (mustUpdateDynamicObjectsAgain && boundingBox.isEmpty()) {
1304
+ // If the bounding box is empty, it means that there are no visible objects in the scene currently,
1305
+ // so we use bounding box of all objects in the scene in order to get "good" znear and zfar.
1306
+ boundingBox = currentScene._computeBoundingBox(false, false, true);
1307
+ }
1308
+
1296
1309
  if (!boundingBox.isEmpty()) {
1297
1310
  if (nativeCamera.isOrthographicCamera && nativeCamera.zoom <= 0) {
1298
1311
  this._camera.adjustZoom(boundingBox);
@@ -1316,7 +1329,7 @@ sap.ui.define([
1316
1329
  // Usually it is fine to use Z near/far computed in previous frame, but it would not work
1317
1330
  // if Z near and far equal to -1.0 default values for "auto evaluate", so we must
1318
1331
  // update dynamic objects twice in such case (it happens on view activation only).
1319
- _updateDynamicObjects(renderer, nativeCamera, nativeScene, this);
1332
+ _updateDynamicObjects(renderer, nativeCamera, nativeScene, this, vsm);
1320
1333
  }
1321
1334
 
1322
1335
  // check scene dimension and distance from camera
@@ -1429,8 +1442,12 @@ sap.ui.define([
1429
1442
 
1430
1443
  _renderDetailViews(renderer, nativeCamera, nativeScene, boundingBox, this._cameraLight);
1431
1444
 
1432
- if (vsm) {
1433
- vsm._renderOutline(renderer, nativeScene, nativeCamera);
1445
+ if (vsm?._outlinedNodes.size > 0) {
1446
+ this._renderOutline(nativeScene, nativeCamera, Array.from(vsm._outlinedNodes), vsm._outlineColorABGR, vsm);
1447
+ }
1448
+
1449
+ if (this.getSelectionDisplayMode() === SelectionDisplayMode.Outline && vsm?._selectedNodes.size > 0) {
1450
+ this._renderOutline(nativeScene, nativeCamera, Array.from(vsm._selectedNodes), vsm._highlightColorABGR, vsm);
1434
1451
  }
1435
1452
 
1436
1453
  for (i = 0; i < tools.length; i++) { // loop over all oTools
@@ -1482,14 +1499,18 @@ sap.ui.define([
1482
1499
  + tail
1483
1500
  );
1484
1501
  } finally {
1485
- if (vsm && vsm.revertNodeStates) {
1486
- vsm.revertNodeStates();
1487
- }
1502
+ vsm?.revertNodeStates?.();
1488
1503
  }
1489
1504
 
1490
1505
  this.fireFrameRenderingFinished();
1491
1506
  };
1492
1507
 
1508
+ Viewport.prototype._renderOutline = function(scene, camera, nodes, colorABGR, vsm) {
1509
+ const c = abgrToColor(colorABGR);
1510
+ const color = new THREE.Color(c.red / 255.0, c.green / 255.0, c.blue / 255.0);
1511
+ this._outlineRenderer.render(this._renderer, scene, camera, nodes, color, vsm.getOutlineWidth(), vsm._jointCollection);
1512
+ };
1513
+
1493
1514
  /**
1494
1515
  * Returns viewport content as an image of desired size.
1495
1516
  *
@@ -1746,9 +1767,7 @@ sap.ui.define([
1746
1767
  document.body.appendChild(renderer.domElement);
1747
1768
 
1748
1769
  var vsm = this._getViewStateManagerThreeJS();
1749
- if (vsm && vsm.applyNodeStates) {
1750
- vsm.applyNodeStates();
1751
- }
1770
+ vsm?.applyNodeStates?.();
1752
1771
 
1753
1772
  try {
1754
1773
  if (nodeRefs == null) {
@@ -1781,13 +1800,8 @@ sap.ui.define([
1781
1800
  var hiddenNodes = [];
1782
1801
  nodeRefs.forEach(function(nodeRef) {
1783
1802
  nodeRef.traverseVisible(function(node) {
1784
- if (node._vkUpdate) {
1785
- node._vkUpdate(renderer, cameraRef, viewportSize);
1803
+ node._vkUpdate?.(renderer, cameraRef, viewportSize, null, vsm);
1786
1804
 
1787
- if (node._vkGetNodeContentType() === NodeContentType.Symbol) {// reset symbol opacity
1788
- node._vkSetOpacity(1);
1789
- }
1790
- }
1791
1805
  if ((!options.includeOverlay && node.userData.renderStage > 0) ||
1792
1806
  (!options.includeUnderlay && node.userData.renderStage < 0)) {
1793
1807
  // hide overlay/underlay node
@@ -1846,9 +1860,7 @@ sap.ui.define([
1846
1860
  scene.remove(lightNode);
1847
1861
  scene.children = [];
1848
1862
  } finally {
1849
- if (vsm && vsm.revertNodeStates) {
1850
- vsm.revertNodeStates();
1851
- }
1863
+ vsm?.revertNodeStates?.();
1852
1864
  }
1853
1865
 
1854
1866
  var imageData = renderer.getContext().canvas.toDataURL(options.type, options.encoderOptions);
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.140.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.AnchorPointTool
38
38
  */
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.vk.tools.Gizmo
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.138.0
41
+ * @version 1.140.0
42
42
  *
43
43
  * @constructor
44
44
  * @private
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.140.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.AxisAngleRotationTool
38
38
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.vk.tools.Gizmo
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.140.0
38
38
  *
39
39
  * @constructor
40
40
  * @private
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.140.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.CreateEllipseTool
40
40
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.vk.tools.Gizmo
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.140.0
30
30
  *
31
31
  * @constructor
32
32
  * @private
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
31
31
  * @public
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.140.0
34
34
  * @extends sap.ui.vk.tools.Tool
35
35
  * @alias sap.ui.vk.tools.CreatePathTool
36
36
  */
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.vk.tools.CreateParametricGizmo
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.140.0
34
34
  *
35
35
  * @constructor
36
36
  * @private
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
31
31
  * @public
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.140.0
34
34
  * @extends sap.ui.vk.tools.Tool
35
35
  * @alias sap.ui.vk.tools.CreateRectangleTool
36
36
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.CreateTextTool
34
34
  */
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.vk.tools.CreateParametricGizmo
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.138.0
43
+ * @version 1.140.0
44
44
  *
45
45
  * @constructor
46
46
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.CrossSectionTool
34
34
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.vk.tools.Gizmo
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.140.0
38
38
  *
39
39
  * @constructor
40
40
  * @private
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.140.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.DuplicateSvgElementTool
38
38
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -52,7 +52,7 @@ sap.ui.define([
52
52
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
53
53
  * @public
54
54
  * @author SAP SE
55
- * @version 1.138.0
55
+ * @version 1.140.0
56
56
  * @extends sap.ui.vk.tools.Tool
57
57
  * @alias sap.ui.vk.tools.ExplodeTool
58
58
  */
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.vk.tools.Gizmo
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.138.0
49
+ * @version 1.140.0
50
50
  *
51
51
  * @constructor
52
52
  * @private
@@ -53,7 +53,7 @@ sap.ui.define([
53
53
  * @extends sap.ui.core.Control
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.138.0
56
+ * @version 1.140.0
57
57
  *
58
58
  * @constructor
59
59
  * @public
@@ -264,7 +264,8 @@ sap.ui.define([
264
264
  }
265
265
 
266
266
  const selectedNodes = new Set(this._nodes.map((nodeInfo) => nodeInfo.node));
267
- this._viewport?._getViewStateManagerThreeJS()?.getJoints()?.forEach((joint) => {
267
+ const vsm = this._viewport?._getViewStateManagerThreeJS();
268
+ vsm?.getJoints()?.forEach((joint) => {
268
269
  if (selectedNodes.has(joint.parent)) {
269
270
  selectedNodes.add(joint.node);
270
271
  }
@@ -275,7 +276,7 @@ sap.ui.define([
275
276
  const staticGeometryVertices = [];
276
277
 
277
278
  const traverse = (node, selected) => {
278
- if (!node.visible || // skip invisible nodes
279
+ if (!(vsm?.getVisibilityState(node) ?? node.visible) || // skip invisible nodes
279
280
  node._vkUpdate || // skip dynamic nodes
280
281
  node.userData.renderStage > 0 || // skip overlay nodes
281
282
  node.userData.renderStage < 0) { // skip underlay nodes
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
30
30
  * @public
31
31
  * @author SAP SE
32
- * @version 1.138.0
32
+ * @version 1.140.0
33
33
  * @extends sap.ui.vk.tools.Tool
34
34
  * @alias sap.ui.vk.tools.HitTestTool
35
35
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.140.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.MoveTool
40
40
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.PointCloudSelectionTool
34
34
  * @since 1.118.0
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
32
32
  * @public
33
33
  * @author SAP SE
34
- * @version 1.138.0
34
+ * @version 1.140.0
35
35
  * @extends sap.ui.vk.tools.Tool
36
36
  * @alias sap.ui.vk.tools.RectSelectTool
37
37
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
43
43
  * @public
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  * @extends sap.ui.vk.tools.Tool
47
47
  * @alias sap.ui.vk.tools.RedlineTool
48
48
  */
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.vk.tools.Gizmo
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.140.0
30
30
  *
31
31
  * @constructor
32
32
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.RotateOrbitTool
34
34
  */
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
39
39
  * @public
40
40
  * @author SAP SE
41
- * @version 1.138.0
41
+ * @version 1.140.0
42
42
  * @extends sap.ui.vk.tools.Tool
43
43
  * @alias sap.ui.vk.tools.RotateTool
44
44
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.RotateTurntableTool
34
34
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.140.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.ScaleTool
40
40
  */
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.vk.tools.Gizmo
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.138.0
39
+ * @version 1.140.0
40
40
  *
41
41
  * @constructor
42
42
  * @private
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
27
27
  * @public
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.140.0
30
30
  * @extends sap.ui.vk.tools.Tool
31
31
  * @alias sap.ui.vk.tools.SceneOrientationTool
32
32
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.140.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @param {object} [oScope] scope An object for resolving string-based type and formatter references in bindings.
28
28
  * @public
29
29
  * @author SAP SE
30
- * @version 1.138.0
30
+ * @version 1.140.0
31
31
  * @extends sap.ui.core.Element
32
32
  * @alias sap.ui.vk.tools.Tool
33
33
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.140.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.TooltipTool
34
34
  */